cpp_quote("/**")
cpp_quote(" * This file is part of the mingw-w64 runtime package.")
cpp_quote(" * No warranty is given; refer to the file DISCLAIMER within this package.")
cpp_quote(" */")
cpp_quote("")

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

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

cpp_quote("#include <winapifamily.h>")
cpp_quote("")
cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)")
cpp_quote("#include <dxgitype.h>")
cpp_quote("#include <olectl.h>")
cpp_quote("")
cpp_quote("EXTERN_C const GUID CMDSETID_Forms3;")
cpp_quote("EXTERN_C const GUID CLSID_MHTMLDocument;")
cpp_quote("EXTERN_C const GUID CLSID_IEXMLDocument;")
cpp_quote("EXTERN_C const GUID CLSID_SVGDocument;")
cpp_quote("EXTERN_C const GUID CLSID_XHTMLDocument;")
cpp_quote("EXTERN_C const GUID CLSID_HTADocument;")
cpp_quote("EXTERN_C const GUID CLSID_HTMLApplication;")
cpp_quote("EXTERN_C const GUID CLSID_HTMLPluginDocument;")
cpp_quote("EXTERN_C const GUID CLSID_CStyle;")
cpp_quote("")
cpp_quote("DEFINE_GUID(SID_SEditCommandTarget,0x3050f4b5,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b);")
cpp_quote("DEFINE_GUID(CGID_EditStateCommands,0x3050f4b6,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b);")
cpp_quote("DEFINE_GUID(SID_SHTMLEditHost,0x3050f6a0,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b);")
cpp_quote("DEFINE_GUID(SID_SHTMLEditServices,0x3050f7f9,0x98b5,0x11cf,0xbb,0x82,0x0,0xaa,0x0,0xbd,0xce,0x0b);")
cpp_quote("")
cpp_quote("#define SID_SHTMLWindow IID_IHTMLWindow2")
cpp_quote("#define SID_SElementBehaviorFactory IID_IElementBehaviorFactory")
cpp_quote("#define SID_STrackingProtection IID_ITrackingProtection")
cpp_quote("")
cpp_quote("#define COOKIEACTION_NONE 0x0")
cpp_quote("#define COOKIEACTION_ACCEPT 0x1")
cpp_quote("#define COOKIEACTION_REJECT 0x2")
cpp_quote("#define COOKIEACTION_DOWNGRADE 0x4")
cpp_quote("#define COOKIEACTION_LEASH 0x8")
cpp_quote("#define COOKIEACTION_SUPPRESS 0x10")
cpp_quote("#define COOKIEACTION_READ 0x20")
cpp_quote("")
cpp_quote("#define PRIVACY_URLISTOPLEVEL 0x10000")
cpp_quote("#define PRIVACY_URLHASCOMPACTPOLICY 0x20000")
cpp_quote("#define PRIVACY_URLHASPOSTDATA 0x80000")
cpp_quote("#define PRIVACY_URLHASPOLICYREFLINK 0x100000")
cpp_quote("#define PRIVACY_URLHASPOLICYREFHEADER 0x200000")
cpp_quote("#define PRIVACY_URLHASP3PHEADER 0x400000")
cpp_quote("")
cpp_quote("#define DEBUGCALLBACKNOTIFICATION_TIMEOUT 0x1")
cpp_quote("#define DEBUGCALLBACKNOTIFICATION_INTERVAL 0x2")
cpp_quote("#define DEBUGCALLBACKNOTIFICATION_IMMEDIATE 0x4")
cpp_quote("#define DEBUGCALLBACKNOTIFICATION_ANIMATIONFRAME 0x8")
cpp_quote("#define DEBUGCALLBACKNOTIFICATION_DOMEVENT 0x10")
cpp_quote("")
cpp_quote("#define DEBUGDOMEVENTPROPAGATIONSTATUS_DEFAULTCANCELED 0x1")
cpp_quote("#define DEBUGDOMEVENTPROPAGATIONSTATUS_STOPIMMEDIATEPROPAGATION 0x2")
cpp_quote("#define DEBUGDOMEVENTPROPAGATIONSTATUS_STOPPROPAGATION 0x4")
cpp_quote("")

[odl, oleautomation, dual, uuid (3050f3ee-98b5-11cf-bb82-00aa00bdce0b)]
interface IHTMLFiltersCollection : IDispatch {
  [id (DISPID_IHTMLFILTERSCOLLECTION_LENGTH), propget] HRESULT length ([retval, out] long *p);
  [id (DISPID_IHTMLFILTERSCOLLECTION__NEWENUM), propget, hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
  [id (DISPID_IHTMLFILTERSCOLLECTION_ITEM)] HRESULT item ([in] VARIANT *pvarIndex,[retval, out] VARIANT *pvarResult);
};

[odl, oleautomation, dual, uuid (3051046b-98b5-11cf-bb82-00aa00bdce0b)]
interface IIE70DispatchEx : IDispatchEx {
};

[odl, oleautomation, dual, uuid (3051046c-98b5-11cf-bb82-00aa00bdce0b)]
interface IIE80DispatchEx : IDispatchEx {
};

[uuid (3050f1c5-98b5-11cf-bb82-00aa00bdce0b), lcid (0x0000), version (4.00)]
library MSHTML {
  importlib ("stdole2.tlb");
  import "ocidl.idl";
  import "dxgitype.h";

  interface IDOMEvent;
  interface IElementBehavior;
  interface IElementBehaviorFactory;
  interface IElementBehaviorRender;
  interface IElementBehaviorSite;
  interface IElementBehaviorSiteOM;
  interface IElementBehaviorSiteRender;
  interface IHTMLEventObj;
  interface IHTMLStyleSheetRule;

  typedef enum _htmlBlockAlign {
    htmlBlockAlignNotSet = 0,
    htmlBlockAlignLeft = 1,
    htmlBlockAlignCenter = 2,
    htmlBlockAlignRight = 3,
    htmlBlockAlignJustify = 4,
    htmlBlockAlign_Max = 0x7FFFFFFF
  } htmlBlockAlign;

  typedef enum _htmlClear {
    htmlClearNotSet = 0,
    htmlClearAll = 1,
    htmlClearLeft = 2,
    htmlClearRight = 3,
    htmlClearBoth = 4,
    htmlClearNone = 5,
    htmlClear_Max = 0x7FFFFFFF
  } htmlClear;

  typedef enum _htmlControlAlign {
    htmlControlAlignNotSet = 0,
    htmlControlAlignLeft = 1,
    htmlControlAlignCenter = 2,
    htmlControlAlignRight = 3,
    htmlControlAlignTextTop = 4,
    htmlControlAlignAbsMiddle = 5,
    htmlControlAlignBaseline = 6,
    htmlControlAlignAbsBottom = 7,
    htmlControlAlignBottom = 8,
    htmlControlAlignMiddle = 9,
    htmlControlAlignTop = 10,
    htmlControlAlign_Max = 0x7FFFFFFF
  } htmlControlAlign;

  typedef enum _htmlDesignMode {
    htmlDesignModeInherit = -2,
    htmlDesignModeOn = -1,
    htmlDesignModeOff = 0,
    htmlDesignMode_Max = 0x7FFFFFFF
  } htmlDesignMode;

  typedef enum _htmlReadyState {
    htmlReadyStateuninitialized = 0,
    htmlReadyStateloading = 1,
    htmlReadyStateloaded = 2,
    htmlReadyStateinteractive = 3,
    htmlReadyStatecomplete = 4,
    htmlReadyState_Max = 0x7FFFFFFF
  } htmlReadyState;

  typedef enum _htmlZOrder {
    htmlZOrderFront = 0,
    htmlZOrderBack = 1,
    htmlZOrder_Max = 0x7FFFFFFF
  } htmlZOrder;

  typedef enum _htmlLoop {
    htmlLoopLoopInfinite = -1,
    htmlLoop_Max = 0x7FFFFFFF
  } htmlLoop;

  typedef enum _mediaType {
    mediaTypeNotSet = 0,
    mediaTypeAll = 511,
    mediaTypeAural = 1,
    mediaTypeBraille = 2,
    mediaTypeEmbossed = 4,
    mediaTypeHandheld = 8,
    mediaTypePrint = 16,
    mediaTypeProjection = 32,
    mediaTypeScreen = 64,
    mediaTypeTty = 128,
    mediaTypeTv = 256,
    mediaType_Max = 0x7FFFFFFF
  } mediaType;

  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 = 0x7FFFFFFF
  } DomConstructor;

  typedef enum _styleBackgroundAttachment {
    styleBackgroundAttachmentFixed = 0,
    styleBackgroundAttachmentScroll = 1,
    styleBackgroundAttachmentNotSet = 2,
    styleBackgroundAttachment_Max = 0x7FFFFFFF
  } styleBackgroundAttachment;

  typedef enum _styleBackgroundAttachment3 {
    styleBackgroundAttachment3Fixed = 0,
    styleBackgroundAttachment3Scroll = 1,
    styleBackgroundAttachment3Local = 2,
    styleBackgroundAttachment3NotSet = 3,
    styleBackgroundAttachment3_Max = 0x7FFFFFFF
  } styleBackgroundAttachment3;

  typedef enum _styleBackgroundClip {
    styleBackgroundClipBorderBox = 0,
    styleBackgroundClipPaddingBox = 1,
    styleBackgroundClipContentBox = 2,
    styleBackgroundClipNotSet = 3,
    styleBackgroundClip_Max = 0x7FFFFFFF
  } styleBackgroundClip;

  typedef enum _styleBackgroundOrigin {
    styleBackgroundOriginBorderBox = 0,
    styleBackgroundOriginPaddingBox = 1,
    styleBackgroundOriginContentBox = 2,
    styleBackgroundOriginNotSet = 3,
    styleBackgroundOrigin_Max = 0x7FFFFFFF
  } styleBackgroundOrigin;

  typedef enum _styleBackgroundRepeat {
    styleBackgroundRepeatRepeat = 0,
    styleBackgroundRepeatRepeatX = 1,
    styleBackgroundRepeatRepeatY = 2,
    styleBackgroundRepeatNoRepeat = 3,
    styleBackgroundRepeatNotSet = 4,
    styleBackgroundRepeat_Max = 0x7FFFFFFF
  } styleBackgroundRepeat;

  typedef enum _styleBorderCollapse {
    styleBorderCollapseNotSet = 0,
    styleBorderCollapseSeparate = 1,
    styleBorderCollapseCollapse = 2,
    styleBorderCollapse_Max = 0x7FFFFFFF
  } styleBorderCollapse;

  typedef enum _styleCaptionSide {
    styleCaptionSideNotSet = 0,
    styleCaptionSideTop = 1,
    styleCaptionSideBottom = 2,
    styleCaptionSideLeft = 3,
    styleCaptionSideRight = 4,
    styleCaptionSide_Max = 0x7FFFFFFF
  } styleCaptionSide;

  typedef enum _styleDataRepeat {
    styleDataRepeatNone = 0,
    styleDataRepeatInner = 1,
    styleDataRepeat_Max = 0x7FFFFFFF
  } styleDataRepeat;

  typedef enum _styleEmptyCells {
    styleEmptyCellsNotSet = 0,
    styleEmptyCellsShow = 1,
    styleEmptyCellsHide = 2,
    styleEmptyCells_Max = 0x7FFFFFFF
  } styleEmptyCells;

  typedef enum _styleFontStyle {
    styleFontStyleNotSet = 0,
    styleFontStyleItalic = 1,
    styleFontStyleOblique = 2,
    styleFontStyleNormal = 3,
    styleFontStyle_Max = 0x7FFFFFFF
  } styleFontStyle;

  typedef enum _styleFontVariant {
    styleFontVariantNotSet = 0,
    styleFontVariantSmallCaps = 1,
    styleFontVariantNormal = 2,
    styleFontVariant_Max = 0x7FFFFFFF
  } styleFontVariant;

  typedef enum _styleFontSize {
    styleFontSizeXXSmall = 0,
    styleFontSizeXSmall = 1,
    styleFontSizeSmall = 2,
    styleFontSizeMedium = 3,
    styleFontSizeLarge = 4,
    styleFontSizeXLarge = 5,
    styleFontSizeXXLarge = 6,
    styleFontSizeSmaller = 7,
    styleFontSizeLarger = 8,
    styleFontSize_Max = 0x7FFFFFFF
  } styleFontSize;

  typedef enum _styleFontWeight {
    styleFontWeightNotSet = 0,
    styleFontWeight100 = 1,
    styleFontWeight200 = 2,
    styleFontWeight300 = 3,
    styleFontWeight400 = 4,
    styleFontWeight500 = 5,
    styleFontWeight600 = 6,
    styleFontWeight700 = 7,
    styleFontWeight800 = 8,
    styleFontWeight900 = 9,
    styleFontWeightNormal = 10,
    styleFontWeightBold = 11,
    styleFontWeightBolder = 12,
    styleFontWeightLighter = 13,
    styleFontWeight_Max = 0x7FFFFFFF
  } styleFontWeight;

  typedef enum _styleMsOverflowStyle {
    styleMsOverflowStyleNotSet = 0,
    styleMsOverflowStyleAuto = 1,
    styleMsOverflowStyleNone = 2,
    styleMsOverflowStyleScrollbar = 3,
    styleMsOverflowStyleMsAutoHidingScrollbar = 4,
    styleMsOverflowStyle_Max = 0x7FFFFFFF
  } styleMsOverflowStyle;

  typedef enum _styleOverflow {
    styleOverflowNotSet = 0,
    styleOverflowAuto = 1,
    styleOverflowHidden = 2,
    styleOverflowVisible = 3,
    styleOverflowScroll = 4,
    styleOverflow_Max = 0x7FFFFFFF
  } styleOverflow;

  typedef enum _styleTableLayout {
    styleTableLayoutNotSet = 0,
    styleTableLayoutAuto = 1,
    styleTableLayoutFixed = 2,
    styleTableLayout_Max = 0x7FFFFFFF
  } styleTableLayout;

  typedef enum _styleTextTransform {
    styleTextTransformNotSet = 0,
    styleTextTransformCapitalize = 1,
    styleTextTransformLowercase = 2,
    styleTextTransformUppercase = 3,
    styleTextTransformNone = 4,
    styleTextTransform_Max = 0x7FFFFFFF
  } styleTextTransform;

  typedef enum _styleVerticalAlign {
    styleVerticalAlignAuto = 0,
    styleVerticalAlignBaseline = 1,
    styleVerticalAlignSub = 2,
    styleVerticalAlignSuper = 3,
    styleVerticalAlignTop = 4,
    styleVerticalAlignTextTop = 5,
    styleVerticalAlignMiddle = 6,
    styleVerticalAlignBottom = 7,
    styleVerticalAlignTextBottom = 8,
    styleVerticalAlignInherit = 9,
    styleVerticalAlignNotSet = 10,
    styleVerticalAlign_Max = 0x7FFFFFFF
  } styleVerticalAlign;

  typedef enum _styleWidowsOrphans {
    styleWidowsOrphansNotSet = -2147483647,
    styleWidowsOrphans_Max = 0x7FFFFFFF
  } styleWidowsOrphans;

  typedef enum _styleZIndex {
    styleZIndexAuto = -2147483647,
    styleZIndex_Max = 0x7FFFFFFF
  } styleZIndex;

  typedef enum _styleAuto {
    styleAutoAuto = 0,
    styleAuto_Max = 0x7FFFFFFF
  } styleAuto;

  typedef enum _styleNone {
    styleNoneNone = 0,
    styleNone_Max = 0x7FFFFFFF
  } styleNone;

  typedef enum _styleNormal {
    styleNormalNormal = 0,
    styleNormal_Max = 0x7FFFFFFF
  } styleNormal;

  typedef enum _styleBorderWidth {
    styleBorderWidthThin = 0,
    styleBorderWidthMedium = 1,
    styleBorderWidthThick = 2,
    styleBorderWidth_Max = 0x7FFFFFFF
  } styleBorderWidth;

  typedef enum _stylePosition {
    stylePositionNotSet = 0,
    stylePositionstatic = 1,
    stylePositionrelative = 2,
    stylePositionabsolute = 3,
    stylePositionfixed = 4,
    stylePositionMsPage = 5,
    stylePosition_Max = 0x7FFFFFFF
  } stylePosition;

  typedef enum _styleBorderStyle {
    styleBorderStyleNotSet = 0,
    styleBorderStyleDotted = 1,
    styleBorderStyleDashed = 2,
    styleBorderStyleSolid = 3,
    styleBorderStyleDouble = 4,
    styleBorderStyleGroove = 5,
    styleBorderStyleRidge = 6,
    styleBorderStyleInset = 7,
    styleBorderStyleOutset = 8,
    styleBorderStyleWindowInset = 9,
    styleBorderStyleNone = 10,
    styleBorderStyleHidden = 11,
    styleBorderStyle_Max = 0x7FFFFFFF
  } styleBorderStyle;

  typedef enum _styleOutlineStyle {
    styleOutlineStyleNotSet = 0,
    styleOutlineStyleDotted = 1,
    styleOutlineStyleDashed = 2,
    styleOutlineStyleSolid = 3,
    styleOutlineStyleDouble = 4,
    styleOutlineStyleGroove = 5,
    styleOutlineStyleRidge = 6,
    styleOutlineStyleInset = 7,
    styleOutlineStyleOutset = 8,
    styleOutlineStyleWindowInset = 9,
    styleOutlineStyleNone = 10,
    styleOutlineStyle_Max = 0x7FFFFFFF
  } styleOutlineStyle;

  typedef enum _styleStyleFloat {
    styleStyleFloatNotSet = 0,
    styleStyleFloatLeft = 1,
    styleStyleFloatRight = 2,
    styleStyleFloatNone = 3,
    styleStyleFloat_Max = 0x7FFFFFFF
  } styleStyleFloat;

  typedef enum _styleDisplay {
    styleDisplayNotSet = 0,
    styleDisplayBlock = 1,
    styleDisplayInline = 2,
    styleDisplayListItem = 3,
    styleDisplayNone = 4,
    styleDisplayTableHeaderGroup = 5,
    styleDisplayTableFooterGroup = 6,
    styleDisplayInlineBlock = 7,
    styleDisplayTable = 8,
    styleDisplayInlineTable = 9,
    styleDisplayTableRow = 10,
    styleDisplayTableRowGroup = 11,
    styleDisplayTableColumn = 12,
    styleDisplayTableColumnGroup = 13,
    styleDisplayTableCell = 14,
    styleDisplayTableCaption = 15,
    styleDisplayRunIn = 16,
    styleDisplayRuby = 17,
    styleDisplayRubyBase = 18,
    styleDisplayRubyText = 19,
    styleDisplayRubyBaseContainer = 20,
    styleDisplayRubyTextContainer = 21,
    styleDisplayMsFlexbox = 22,
    styleDisplayMsInlineFlexbox = 23,
    styleDisplayMsGrid = 24,
    styleDisplayMsInlineGrid = 25,
    styleDisplay_Max = 0x7FFFFFFF
  } styleDisplay;

  typedef enum _styleVisibility {
    styleVisibilityNotSet = 0,
    styleVisibilityInherit = 1,
    styleVisibilityVisible = 2,
    styleVisibilityHidden = 3,
    styleVisibilityCollapse = 4,
    styleVisibility_Max = 0x7FFFFFFF
  } styleVisibility;

  typedef enum _styleListStyleType {
    styleListStyleTypeNotSet = 0,
    styleListStyleTypeDisc = 1,
    styleListStyleTypeCircle = 2,
    styleListStyleTypeSquare = 3,
    styleListStyleTypeDecimal = 4,
    styleListStyleTypeLowerRoman = 5,
    styleListStyleTypeUpperRoman = 6,
    styleListStyleTypeLowerAlpha = 7,
    styleListStyleTypeUpperAlpha = 8,
    styleListStyleTypeNone = 9,
    styleListStyleTypeDecimalLeadingZero = 10,
    styleListStyleTypeGeorgian = 11,
    styleListStyleTypeArmenian = 12,
    styleListStyleTypeUpperLatin = 13,
    styleListStyleTypeLowerLatin = 14,
    styleListStyleTypeUpperGreek = 15,
    styleListStyleTypeLowerGreek = 16,
    styleListStyleType_Max = 0x7FFFFFFF
  } styleListStyleType;

  typedef enum _styleListStylePosition {
    styleListStylePositionNotSet = 0,
    styleListStylePositionInside = 1,
    styleListStylePositionOutSide = 2,
    styleListStylePosition_Max = 0x7FFFFFFF
  } styleListStylePosition;

  typedef enum _styleWhiteSpace {
    styleWhiteSpaceNotSet = 0,
    styleWhiteSpaceNormal = 1,
    styleWhiteSpacePre = 2,
    styleWhiteSpaceNowrap = 3,
    styleWhiteSpacePreline = 4,
    styleWhiteSpacePrewrap = 5,
    styleWhiteSpace_Max = 0x7FFFFFFF
  } styleWhiteSpace;

  typedef enum _stylePageBreak {
    stylePageBreakNotSet = 0,
    stylePageBreakAuto = 1,
    stylePageBreakAlways = 2,
    stylePageBreakLeft = 3,
    stylePageBreakRight = 4,
    stylePageBreakAvoid = 5,
    stylePageBreak_Max = 0x7FFFFFFF
  } stylePageBreak;

  typedef enum _stylePageBreakInside {
    stylePageBreakInsideNotSet = 0,
    stylePageBreakInsideAuto = 1,
    stylePageBreakInsideAvoid = 2,
    stylePageBreakInside_Max = 0x7FFFFFFF
  } stylePageBreakInside;

  typedef enum _styleCursor {
    styleCursorAuto = 0,
    styleCursorCrosshair = 1,
    styleCursorDefault = 2,
    styleCursorHand = 3,
    styleCursorMove = 4,
    styleCursorE_resize = 5,
    styleCursorNe_resize = 6,
    styleCursorNw_resize = 7,
    styleCursorN_resize = 8,
    styleCursorSe_resize = 9,
    styleCursorSw_resize = 10,
    styleCursorS_resize = 11,
    styleCursorW_resize = 12,
    styleCursorText = 13,
    styleCursorWait = 14,
    styleCursorHelp = 15,
    styleCursorPointer = 16,
    styleCursorProgress = 17,
    styleCursorNot_allowed = 18,
    styleCursorNo_drop = 19,
    styleCursorVertical_text = 20,
    styleCursorall_scroll = 21,
    styleCursorcol_resize = 22,
    styleCursorrow_resize = 23,
    styleCursorNone = 24,
    styleCursorContext_menu = 25,
    styleCursorEw_resize = 26,
    styleCursorNs_resize = 27,
    styleCursorNesw_resize = 28,
    styleCursorNwse_resize = 29,
    styleCursorCell = 30,
    styleCursorCopy = 31,
    styleCursorAlias = 32,
    styleCursorcustom = 33,
    styleCursorNotSet = 34,
    styleCursor_Max = 0x7FFFFFFF
  } styleCursor;

  typedef enum _styleDir {
    styleDirNotSet = 0,
    styleDirLeftToRight = 1,
    styleDirRightToLeft = 2,
    styleDirInherit = 3,
    styleDir_Max = 0x7FFFFFFF
  } styleDir;

  typedef enum _styleBidi {
    styleBidiNotSet = 0,
    styleBidiNormal = 1,
    styleBidiEmbed = 2,
    styleBidiOverride = 3,
    styleBidiInherit = 4,
    styleBidi_Max = 0x7FFFFFFF
  } styleBidi;

  typedef enum _styleImeMode {
    styleImeModeAuto = 0,
    styleImeModeActive = 1,
    styleImeModeInactive = 2,
    styleImeModeDisabled = 3,
    styleImeModeNotSet = 4,
    styleImeMode_Max = 0x7FFFFFFF
  } styleImeMode;

  typedef enum _styleRubyAlign {
    styleRubyAlignNotSet = 0,
    styleRubyAlignAuto = 1,
    styleRubyAlignLeft = 2,
    styleRubyAlignCenter = 3,
    styleRubyAlignRight = 4,
    styleRubyAlignDistributeLetter = 5,
    styleRubyAlignDistributeSpace = 6,
    styleRubyAlignLineEdge = 7,
    styleRubyAlign_Max = 0x7FFFFFFF
  } styleRubyAlign;

  typedef enum _styleRubyPosition {
    styleRubyPositionNotSet = 0,
    styleRubyPositionAbove = 1,
    styleRubyPositionInline = 2,
    styleRubyPosition_Max = 0x7FFFFFFF
  } styleRubyPosition;

  typedef enum _styleRubyOverhang {
    styleRubyOverhangNotSet = 0,
    styleRubyOverhangAuto = 1,
    styleRubyOverhangWhitespace = 2,
    styleRubyOverhangNone = 3,
    styleRubyOverhang_Max = 0x7FFFFFFF
  } styleRubyOverhang;

  typedef enum _styleLayoutGridChar {
    styleLayoutGridCharNotSet = 0,
    styleLayoutGridCharAuto = 1,
    styleLayoutGridCharNone = 2,
    styleLayoutGridChar_Max = 0x7FFFFFFF
  } styleLayoutGridChar;

  typedef enum _styleLayoutGridLine {
    styleLayoutGridLineNotSet = 0,
    styleLayoutGridLineAuto = 1,
    styleLayoutGridLineNone = 2,
    styleLayoutGridLine_Max = 0x7FFFFFFF
  } styleLayoutGridLine;

  typedef enum _styleLayoutGridMode {
    styleLayoutGridModeNotSet = 0,
    styleLayoutGridModeChar = 1,
    styleLayoutGridModeLine = 2,
    styleLayoutGridModeBoth = 3,
    styleLayoutGridModeNone = 4,
    styleLayoutGridMode_Max = 0x7FFFFFFF
  } styleLayoutGridMode;

  typedef enum _styleLayoutGridType {
    styleLayoutGridTypeNotSet = 0,
    styleLayoutGridTypeLoose = 1,
    styleLayoutGridTypeStrict = 2,
    styleLayoutGridTypeFixed = 3,
    styleLayoutGridType_Max = 0x7FFFFFFF
  } styleLayoutGridType;

  typedef enum _styleLineBreak {
    styleLineBreakNotSet = 0,
    styleLineBreakNormal = 1,
    styleLineBreakStrict = 2,
    styleLineBreak_Max = 0x7FFFFFFF
  } styleLineBreak;

  typedef enum _styleWordBreak {
    styleWordBreakNotSet = 0,
    styleWordBreakNormal = 1,
    styleWordBreakBreakAll = 2,
    styleWordBreakKeepAll = 3,
    styleWordBreak_Max = 0x7FFFFFFF
  } styleWordBreak;

  typedef enum _styleWordWrap {
    styleWordWrapNotSet = 0,
    styleWordWrapOff = 1,
    styleWordWrapOn = 2,
    styleWordWrap_Max = 0x7FFFFFFF
  } styleWordWrap;

  typedef enum _styleTextJustify {
    styleTextJustifyNotSet = 0,
    styleTextJustifyInterWord = 1,
    styleTextJustifyNewspaper = 2,
    styleTextJustifyDistribute = 3,
    styleTextJustifyDistributeAllLines = 4,
    styleTextJustifyInterIdeograph = 5,
    styleTextJustifyInterCluster = 6,
    styleTextJustifyKashida = 7,
    styleTextJustifyAuto = 8,
    styleTextJustify_Max = 0x7FFFFFFF
  } styleTextJustify;

  typedef enum _styleTextAlignLast {
    styleTextAlignLastNotSet = 0,
    styleTextAlignLastLeft = 1,
    styleTextAlignLastCenter = 2,
    styleTextAlignLastRight = 3,
    styleTextAlignLastJustify = 4,
    styleTextAlignLastAuto = 5,
    styleTextAlignLast_Max = 0x7FFFFFFF
  } styleTextAlignLast;

  typedef enum _styleTextJustifyTrim {
    styleTextJustifyTrimNotSet = 0,
    styleTextJustifyTrimNone = 1,
    styleTextJustifyTrimPunctuation = 2,
    styleTextJustifyTrimPunctAndKana = 3,
    styleTextJustifyTrim_Max = 0x7FFFFFFF
  } styleTextJustifyTrim;

  typedef enum _styleAccelerator {
    styleAcceleratorFalse = 0,
    styleAcceleratorTrue = 1,
    styleAccelerator_Max = 0x7FFFFFFF
  } styleAccelerator;

  typedef enum _styleLayoutFlow {
    styleLayoutFlowHorizontal = 0,
    styleLayoutFlowVerticalIdeographic = 1,
    styleLayoutFlowNotSet = 2,
    styleLayoutFlow_Max = 0x7FFFFFFF
  } styleLayoutFlow;

  typedef enum _styleBlockProgression {
    styleBlockProgressionTb = 0,
    styleBlockProgressionRl = 1,
    styleBlockProgressionBt = 2,
    styleBlockProgressionLr = 3,
    styleBlockProgressionNotSet = 4,
    styleBlockProgression_Max = 0x7FFFFFFF
  } styleBlockProgression;

  typedef enum _styleWritingMode {
    styleWritingModeLrtb = 0,
    styleWritingModeTbrl = 1,
    styleWritingModeRltb = 2,
    styleWritingModeBtrl = 3,
    styleWritingModeNotSet = 4,
    styleWritingModeTblr = 5,
    styleWritingModeBtlr = 6,
    styleWritingModeLrbt = 7,
    styleWritingModeRlbt = 8,
    styleWritingModeLr = 9,
    styleWritingModeRl = 10,
    styleWritingModeTb = 11,
    styleWritingMode_Max = 0x7FFFFFFF
  } styleWritingMode;

  typedef enum _styleBool {
    styleBoolFalse = 0,
    styleBoolTrue = 1,
    styleBool_Max = 0x7FFFFFFF
  } styleBool;

  typedef enum _styleTextUnderlinePosition {
    styleTextUnderlinePositionBelow = 0,
    styleTextUnderlinePositionAbove = 1,
    styleTextUnderlinePositionAuto = 2,
    styleTextUnderlinePositionNotSet = 3,
    styleTextUnderlinePosition_Max = 0x7FFFFFFF
  } styleTextUnderlinePosition;

  typedef enum _styleTextOverflow {
    styleTextOverflowClip = 0,
    styleTextOverflowEllipsis = 1,
    styleTextOverflowNotSet = 2,
    styleTextOverflow_Max = 0x7FFFFFFF
  } styleTextOverflow;

  typedef enum _styleInterpolation {
    styleInterpolationNotSet = 0,
    styleInterpolationNN = 1,
    styleInterpolationBCH = 2,
    styleInterpolation_Max = 0x7FFFFFFF
  } styleInterpolation;

  typedef enum _styleBoxSizing {
    styleBoxSizingNotSet = 0,
    styleBoxSizingContentBox = 1,
    styleBoxSizingBorderBox = 2,
    styleBoxSizing_Max = 0x7FFFFFFF
  } styleBoxSizing;

  typedef enum _styleMsFlex {
    styleMsFlexNone = 0,
    styleMsFlexNotSet = 1,
    styleMsFlex_Max = 0x7FFFFFFF
  } styleMsFlex;

  typedef enum _styleMsFlexPreferredSize {
    styleMsFlexPreferredSizeAuto = 0,
    styleMsFlexPreferredSizeNotSet = 1,
    styleMsFlexPreferredSize_Max = 0x7FFFFFFF
  } styleMsFlexPreferredSize;

  typedef enum _styleMsFlexDirection {
    styleMsFlexDirectionRow = 0,
    styleMsFlexDirectionRowReverse = 1,
    styleMsFlexDirectionColumn = 2,
    styleMsFlexDirectionColumnReverse = 3,
    styleMsFlexDirectionNotSet = 4,
    styleMsFlexDirection_Max = 0x7FFFFFFF
  } styleMsFlexDirection;

  typedef enum _styleMsFlexWrap {
    styleMsFlexWrapNowrap = 0,
    styleMsFlexWrapWrap = 1,
    styleMsFlexWrapWrapReverse = 2,
    styleMsFlexWrapNotSet = 3,
    styleMsFlexWrap_Max = 0x7FFFFFFF
  } styleMsFlexWrap;

  typedef enum _styleMsFlexAlign {
    styleMsFlexAlignStart = 0,
    styleMsFlexAlignEnd = 1,
    styleMsFlexAlignCenter = 2,
    styleMsFlexAlignBaseline = 3,
    styleMsFlexAlignStretch = 4,
    styleMsFlexAlignNotSet = 5,
    styleMsFlexAlign_Max = 0x7FFFFFFF
  } styleMsFlexAlign;

  typedef enum _styleMsFlexItemAlign {
    styleMsFlexItemAlignStart = 0,
    styleMsFlexItemAlignEnd = 1,
    styleMsFlexItemAlignCenter = 2,
    styleMsFlexItemAlignBaseline = 3,
    styleMsFlexItemAlignStretch = 4,
    styleMsFlexItemAlignAuto = 5,
    styleMsFlexItemAlignNotSet = 6,
    styleMsFlexItemAlign_Max = 0x7FFFFFFF
  } styleMsFlexItemAlign;

  typedef enum _styleMsFlexPack {
    styleMsFlexPackStart = 0,
    styleMsFlexPackEnd = 1,
    styleMsFlexPackCenter = 2,
    styleMsFlexPackJustify = 3,
    styleMsFlexPackDistribute = 4,
    styleMsFlexPackNotSet = 5,
    styleMsFlexPack_Max = 0x7FFFFFFF
  } styleMsFlexPack;

  typedef enum _styleMsFlexLinePack {
    styleMsFlexLinePackStart = 0,
    styleMsFlexLinePackEnd = 1,
    styleMsFlexLinePackCenter = 2,
    styleMsFlexLinePackJustify = 3,
    styleMsFlexLinePackDistribute = 4,
    styleMsFlexLinePackStretch = 5,
    styleMsFlexLinePackNotSet = 6,
    styleMsFlexLinePack_Max = 0x7FFFFFFF
  } styleMsFlexLinePack;

  typedef enum _styleColumnFill {
    styleColumnFillAuto = 0,
    styleColumnFillBalance = 1,
    styleColumnFillNotSet = 2,
    styleColumnFill_Max = 0x7FFFFFFF
  } styleColumnFill;

  typedef enum _styleColumnSpan {
    styleColumnSpanOne = 0,
    styleColumnSpanAll = 1,
    styleColumnSpanNotSet = 2,
    styleColumnSpan_Max = 0x7FFFFFFF
  } styleColumnSpan;

  typedef enum _styleBreak {
    styleBreakNotSet = 0,
    styleBreakAuto = 1,
    styleBreakAlways = 2,
    styleBreakAvoid = 3,
    styleBreakLeft = 4,
    styleBreakRight = 5,
    styleBreakPage = 6,
    styleBreakColumn = 7,
    styleBreakAvoidPage = 8,
    styleBreakAvoidColumn = 9,
    styleBreak_Max = 0x7FFFFFFF
  } styleBreak;

  typedef enum _styleBreakInside {
    styleBreakInsideNotSet = 0,
    styleBreakInsideAuto = 1,
    styleBreakInsideAvoid = 2,
    styleBreakInsideAvoidPage = 3,
    styleBreakInsideAvoidColumn = 4,
    styleBreakInside_Max = 0x7FFFFFFF
  } styleBreakInside;

  typedef enum _styleMsScrollChaining {
    styleMsScrollChainingNotSet = 0,
    styleMsScrollChainingNone = 1,
    styleMsScrollChainingChained = 2,
    styleMsScrollChaining_Max = 0x7FFFFFFF
  } styleMsScrollChaining;

  typedef enum _styleMsContentZooming {
    styleMsContentZoomingNotSet = 0,
    styleMsContentZoomingNone = 1,
    styleMsContentZoomingZoom = 2,
    styleMsContentZooming_Max = 0x7FFFFFFF
  } styleMsContentZooming;

  typedef enum _styleMsContentZoomSnapType {
    styleMsContentZoomSnapTypeNotSet = 0,
    styleMsContentZoomSnapTypeNone = 1,
    styleMsContentZoomSnapTypeMandatory = 2,
    styleMsContentZoomSnapTypeProximity = 3,
    styleMsContentZoomSnapType_Max = 0x7FFFFFFF
  } styleMsContentZoomSnapType;

  typedef enum _styleMsScrollRails {
    styleMsScrollRailsNotSet = 0,
    styleMsScrollRailsNone = 1,
    styleMsScrollRailsRailed = 2,
    styleMsScrollRails_Max = 0x7FFFFFFF
  } styleMsScrollRails;

  typedef enum _styleMsContentZoomChaining {
    styleMsContentZoomChainingNotSet = 0,
    styleMsContentZoomChainingNone = 1,
    styleMsContentZoomChainingChained = 2,
    styleMsContentZoomChaining_Max = 0x7FFFFFFF
  } styleMsContentZoomChaining;

  typedef enum _styleMsScrollSnapType {
    styleMsScrollSnapTypeNotSet = 0,
    styleMsScrollSnapTypeNone = 1,
    styleMsScrollSnapTypeMandatory = 2,
    styleMsScrollSnapTypeProximity = 3,
    styleMsScrollSnapType_Max = 0x7FFFFFFF
  } styleMsScrollSnapType;

  typedef enum _styleGridColumn {
    styleGridColumnNotSet = 0,
    styleGridColumn_Max = 0x7FFFFFFF
  } styleGridColumn;

  typedef enum _styleGridColumnAlign {
    styleGridColumnAlignCenter = 0,
    styleGridColumnAlignEnd = 1,
    styleGridColumnAlignStart = 2,
    styleGridColumnAlignStretch = 3,
    styleGridColumnAlignNotSet = 4,
    styleGridColumnAlign_Max = 0x7FFFFFFF
  } styleGridColumnAlign;

  typedef enum _styleGridColumnSpan {
    styleGridColumnSpanNotSet = 0,
    styleGridColumnSpan_Max = 0x7FFFFFFF
  } styleGridColumnSpan;

  typedef enum _styleGridRow {
    styleGridRowNotSet = 0,
    styleGridRow_Max = 0x7FFFFFFF
  } styleGridRow;

  typedef enum _styleGridRowAlign {
    styleGridRowAlignCenter = 0,
    styleGridRowAlignEnd = 1,
    styleGridRowAlignStart = 2,
    styleGridRowAlignStretch = 3,
    styleGridRowAlignNotSet = 4,
    styleGridRowAlign_Max = 0x7FFFFFFF
  } styleGridRowAlign;

  typedef enum _styleGridRowSpan {
    styleGridRowSpanNotSet = 0,
    styleGridRowSpan_Max = 0x7FFFFFFF
  } styleGridRowSpan;

  typedef enum _styleWrapThrough {
    styleWrapThroughNotSet = 0,
    styleWrapThroughWrap = 1,
    styleWrapThroughNone = 2,
    styleWrapThrough_Max = 0x7FFFFFFF
  } styleWrapThrough;

  typedef enum _styleWrapFlow {
    styleWrapFlowNotSet = 0,
    styleWrapFlowAuto = 1,
    styleWrapFlowBoth = 2,
    styleWrapFlowStart = 3,
    styleWrapFlowEnd = 4,
    styleWrapFlowClear = 5,
    styleWrapFlowMinimum = 6,
    styleWrapFlowMaximum = 7,
    styleWrapFlow_Max = 0x7FFFFFFF
  } styleWrapFlow;

  typedef enum _styleAlignmentBaseline {
    styleAlignmentBaselineNotSet = 0,
    styleAlignmentBaselineAfterEdge = 1,
    styleAlignmentBaselineAlphabetic = 2,
    styleAlignmentBaselineAuto = 3,
    styleAlignmentBaselineBaseline = 4,
    styleAlignmentBaselineBeforeEdge = 5,
    styleAlignmentBaselineCentral = 6,
    styleAlignmentBaselineHanging = 7,
    styleAlignmentBaselineMathematical = 8,
    styleAlignmentBaselineMiddle = 9,
    styleAlignmentBaselineTextAfterEdge = 10,
    styleAlignmentBaselineTextBeforeEdge = 11,
    styleAlignmentBaselineIdeographic = 12,
    styleAlignmentBaseline_Max = 0x7FFFFFFF
  } styleAlignmentBaseline;

  typedef enum _styleBaselineShift {
    styleBaselineShiftBaseline = 0,
    styleBaselineShiftSub = 1,
    styleBaselineShiftSuper = 2,
    styleBaselineShift_Max = 0x7FFFFFFF
  } styleBaselineShift;

  typedef enum _styleClipRule {
    styleClipRuleNotSet = 0,
    styleClipRuleNonZero = 1,
    styleClipRuleEvenOdd = 2,
    styleClipRule_Max = 0x7FFFFFFF
  } styleClipRule;

  typedef enum _styleDominantBaseline {
    styleDominantBaselineNotSet = 0,
    styleDominantBaselineAlphabetic = 1,
    styleDominantBaselineAuto = 2,
    styleDominantBaselineCentral = 3,
    styleDominantBaselineHanging = 4,
    styleDominantBaselineIdeographic = 5,
    styleDominantBaselineMathematical = 6,
    styleDominantBaselineMiddle = 7,
    styleDominantBaselineNoChange = 8,
    styleDominantBaselineResetSize = 9,
    styleDominantBaselineTextAfterEdge = 10,
    styleDominantBaselineTextBeforeEdge = 11,
    styleDominantBaselineUseScript = 12,
    styleDominantBaseline_Max = 0x7FFFFFFF
  } styleDominantBaseline;

  typedef enum _styleFillRule {
    styleFillRuleNotSet = 0,
    styleFillRuleNonZero = 1,
    styleFillRuleEvenOdd = 2,
    styleFillRule_Max = 0x7FFFFFFF
  } styleFillRule;

  typedef enum _styleFontStretch {
    styleFontStretchNotSet = 0,
    styleFontStretchWider = 1,
    styleFontStretchNarrower = 2,
    styleFontStretchUltraCondensed = 3,
    styleFontStretchExtraCondensed = 4,
    styleFontStretchCondensed = 5,
    styleFontStretchSemiCondensed = 6,
    styleFontStretchNormal = 7,
    styleFontStretchSemiExpanded = 8,
    styleFontStretchExpanded = 9,
    styleFontStretchExtraExpanded = 10,
    styleFontStretchUltraExpanded = 11,
    styleFontStretch_Max = 0x7FFFFFFF
  } styleFontStretch;

  typedef enum _stylePointerEvents {
    stylePointerEventsNotSet = 0,
    stylePointerEventsVisiblePainted = 1,
    stylePointerEventsVisibleFill = 2,
    stylePointerEventsVisibleStroke = 3,
    stylePointerEventsVisible = 4,
    stylePointerEventsPainted = 5,
    stylePointerEventsFill = 6,
    stylePointerEventsStroke = 7,
    stylePointerEventsAll = 8,
    stylePointerEventsNone = 9,
    stylePointerEvents_Max = 0x7FFFFFFF
  } stylePointerEvents;

  typedef enum _styleEnableBackground {
    styleEnableBackgroundNotSet = 0,
    styleEnableBackgroundAccumulate = 1,
    styleEnableBackgroundNew = 2,
    styleEnableBackgroundInherit = 3,
    styleEnableBackground_Max = 0x7FFFFFFF
  } styleEnableBackground;

  typedef enum _styleStrokeLinecap {
    styleStrokeLinecapNotSet = 0,
    styleStrokeLinecapButt = 1,
    styleStrokeLinecapRound = 2,
    styleStrokeLinecapSquare = 3,
    styleStrokeLinecap_Max = 0x7FFFFFFF
  } styleStrokeLinecap;

  typedef enum _styleStrokeLinejoin {
    styleStrokeLinejoinNotSet = 0,
    styleStrokeLinejoinMiter = 1,
    styleStrokeLinejoinRound = 2,
    styleStrokeLinejoinBevel = 3,
    styleStrokeLinejoin_Max = 0x7FFFFFFF
  } styleStrokeLinejoin;

  typedef enum _styleTextAnchor {
    styleTextAnchorNotSet = 0,
    styleTextAnchorStart = 1,
    styleTextAnchorMiddle = 2,
    styleTextAnchorEnd = 3,
    styleTextAnchor_Max = 0x7FFFFFFF
  } styleTextAnchor;

  typedef enum _styleAttrType {
    styleAttrTypeString = 0,
    styleAttrTypeColor = 1,
    styleAttrTypeUrl = 2,
    styleAttrTypeInteger = 3,
    styleAttrTypeNumber = 4,
    styleAttrTypeLength = 5,
    styleAttrTypePx = 6,
    styleAttrTypeEm = 7,
    styleAttrTypeEx = 8,
    styleAttrTypeIn = 9,
    styleAttrTypeCm = 10,
    styleAttrTypeMm = 11,
    styleAttrTypePt = 12,
    styleAttrTypePc = 13,
    styleAttrTypeRem = 14,
    styleAttrTypeCh = 15,
    styleAttrTypeVh = 16,
    styleAttrTypeVw = 17,
    styleAttrTypeVmin = 18,
    styleAttrTypePercentage = 19,
    styleAttrTypeAngle = 20,
    styleAttrTypeDeg = 21,
    styleAttrTypeRad = 22,
    styleAttrTypeGrad = 23,
    styleAttrTypeTime = 24,
    styleAttrTypeS = 25,
    styleAttrTypeMs = 26,
    styleAttrType_Max = 0x7FFFFFFF
  } styleAttrType;

  typedef enum _styleInitialColor {
    styleInitialColorNoInitial = 0,
    styleInitialColorColorProperty = 1,
    styleInitialColorTransparent = 2,
    styleInitialColorInvert = 3,
    styleInitialColor_Max = 0x7FFFFFFF
  } styleInitialColor;

  typedef enum _styleInitialString {
    styleInitialStringNoInitial = 0,
    styleInitialStringNone = 1,
    styleInitialStringAuto = 2,
    styleInitialStringNormal = 3,
    styleInitialString_Max = 0x7FFFFFFF
  } styleInitialString;

  typedef enum _styleTransformOriginX {
    styleTransformOriginXNotSet = 0,
    styleTransformOriginXLeft = 1,
    styleTransformOriginXCenter = 2,
    styleTransformOriginXRight = 3,
    styleTransformOriginX_Max = 0x7FFFFFFF
  } styleTransformOriginX;

  typedef enum _styleTransformOriginY {
    styleTransformOriginYNotSet = 0,
    styleTransformOriginYTop = 1,
    styleTransformOriginYCenter = 2,
    styleTransformOriginYBottom = 3,
    styleTransformOriginY_Max = 0x7FFFFFFF
  } styleTransformOriginY;

  typedef enum _stylePerspectiveOriginX {
    stylePerspectiveOriginXNotSet = 0,
    stylePerspectiveOriginXLeft = 1,
    stylePerspectiveOriginXCenter = 2,
    stylePerspectiveOriginXRight = 3,
    stylePerspectiveOriginX_Max = 0x7FFFFFFF
  } stylePerspectiveOriginX;

  typedef enum _stylePerspectiveOriginY {
    stylePerspectiveOriginYNotSet = 0,
    stylePerspectiveOriginYTop = 1,
    stylePerspectiveOriginYCenter = 2,
    stylePerspectiveOriginYBottom = 3,
    stylePerspectiveOriginY_Max = 0x7FFFFFFF
  } stylePerspectiveOriginY;

  typedef enum _styleTransformStyle {
    styleTransformStyleFlat = 0,
    styleTransformStyleNotSet = 1,
    styleTransformStyle_Max = 0x7FFFFFFF
  } styleTransformStyle;

  typedef enum _styleBackfaceVisibility {
    styleBackfaceVisibilityVisible = 0,
    styleBackfaceVisibilityHidden = 1,
    styleBackfaceVisibilityNotSet = 2,
    styleBackfaceVisibility_Max = 0x7FFFFFFF
  } styleBackfaceVisibility;

  typedef enum _styleTextSizeAdjust {
    styleTextSizeAdjustNone = 0,
    styleTextSizeAdjustAuto = 1,
    styleTextSizeAdjust_Max = 0x7FFFFFFF
  } styleTextSizeAdjust;

  typedef enum _styleColorInterpolationFilters {
    styleColorInterpolationFiltersAuto = 0,
    styleColorInterpolationFiltersSRgb = 1,
    styleColorInterpolationFiltersLinearRgb = 2,
    styleColorInterpolationFiltersNotSet = 3,
    styleColorInterpolationFilters_Max = 0x7FFFFFFF
  } styleColorInterpolationFilters;

  typedef enum _styleHyphens {
    styleHyphensNone = 0,
    styleHyphensManual = 1,
    styleHyphensAuto = 2,
    styleHyphensNotSet = 3,
    styleHyphens_Max = 0x7FFFFFFF
  } styleHyphens;

  typedef enum _styleHyphenateLimitLines {
    styleHyphenateLimitLinesNoLimit = 0,
    styleHyphenateLimitLines_Max = 0x7FFFFFFF
  } styleHyphenateLimitLines;

  typedef enum _styleMsAnimationPlayState {
    styleMsAnimationPlayStateRunning = 0,
    styleMsAnimationPlayStatePaused = 1,
    styleMsAnimationPlayStateNotSet = 2,
    styleMsAnimationPlayState_Max = 0x7FFFFFFF
  } styleMsAnimationPlayState;

  typedef enum _styleMsAnimationDirection {
    styleMsAnimationDirectionNormal = 0,
    styleMsAnimationDirectionAlternate = 1,
    styleMsAnimationDirectionReverse = 2,
    styleMsAnimationDirectionAlternateReverse = 3,
    styleMsAnimationDirectionNotSet = 4,
    styleMsAnimationDirection_Max = 0x7FFFFFFF
  } styleMsAnimationDirection;

  typedef enum _styleMsAnimationFillMode {
    styleMsAnimationFillModeNone = 0,
    styleMsAnimationFillModeForwards = 1,
    styleMsAnimationFillModeBackwards = 2,
    styleMsAnimationFillModeBoth = 3,
    styleMsAnimationFillModeNotSet = 4,
    styleMsAnimationFillMode_Max = 0x7FFFFFFF
  } styleMsAnimationFillMode;

  typedef enum _styleMsHighContrastAdjust {
    styleMsHighContrastAdjustNotSet = 0,
    styleMsHighContrastAdjustAuto = 1,
    styleMsHighContrastAdjustNone = 2,
    styleMsHighContrastAdjust_Max = 0x7FFFFFFF
  } styleMsHighContrastAdjust;

  typedef enum _styleMsUserSelect {
    styleMsUserSelectAuto = 0,
    styleMsUserSelectText = 1,
    styleMsUserSelectElement = 2,
    styleMsUserSelectNone = 3,
    styleMsUserSelectNotSet = 4,
    styleMsUserSelect_Max = 0x7FFFFFFF
  } styleMsUserSelect;

  typedef enum _styleMsTouchAction {
    styleMsTouchActionNotSet = -1,
    styleMsTouchActionNone = 0,
    styleMsTouchActionAuto = 1,
    styleMsTouchActionManipulation = 2,
    styleMsTouchActionDoubleTapZoom = 4,
    styleMsTouchActionPanX = 8,
    styleMsTouchActionPanY = 16,
    styleMsTouchActionPinchZoom = 32,
    styleMsTouchAction_Max = 0x7FFFFFFF
  } styleMsTouchAction;

  typedef enum _styleMsTouchSelect {
    styleMsTouchSelectGrippers = 0,
    styleMsTouchSelectNone = 1,
    styleMsTouchSelectNotSet = 2,
    styleMsTouchSelect_Max = 0x7FFFFFFF
  } styleMsTouchSelect;

  typedef enum _styleMsScrollTranslation {
    styleMsScrollTranslationNotSet = 0,
    styleMsScrollTranslationNone = 1,
    styleMsScrollTranslationVtoH = 2,
    styleMsScrollTranslation_Max = 0x7FFFFFFF
  } styleMsScrollTranslation;

  [odl, oleautomation, dual, uuid (3051049b-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLDOMConstructor : IDispatch {
    [id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), propget, 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);
  };

  [odl, oleautomation, dual, uuid (30510740-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLCSSStyleDeclaration : IDispatch {
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_LENGTH), propget] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_PARENTRULE), propget] HRESULT parentRule ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYVALUE)] HRESULT getPropertyValue ([in] BSTR bstrPropertyName,[retval, out] BSTR *pbstrPropertyValue);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_GETPROPERTYPRIORITY)] HRESULT getPropertyPriority ([in] BSTR bstrPropertyName,[retval, out] BSTR *pbstrPropertyPriority);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_REMOVEPROPERTY)] HRESULT removeProperty ([in] BSTR bstrPropertyName,[retval, out] BSTR *pbstrPropertyValue);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_SETPROPERTY)] HRESULT setProperty ([in] BSTR bstrPropertyName,[in] VARIANT *pvarPropertyValue,[defaultvalue (NULL), in] VARIANT *pvarPropertyPriority);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_ITEM)] HRESULT item ([in] long index,[retval, out] BSTR *pbstrPropertyName);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTFAMILY), propput, displaybind, bindable] HRESULT fontFamily ([in] BSTR v);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTFAMILY), propget, displaybind, bindable] HRESULT fontFamily ([retval, out] BSTR *p);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTYLE), propput, displaybind, bindable] HRESULT fontStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTYLE), displaybind, bindable] HRESULT fontStyle ([retval, out] 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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZE), displaybind, bindable] HRESULT fontSize ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZE), displaybind, bindable] HRESULT fontSize ([retval, out] 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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_COLOR), displaybind, bindable] HRESULT color ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_COLOR), displaybind, bindable] HRESULT color ([retval, out] 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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCOLOR), displaybind, bindable] HRESULT backgroundColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCOLOR), displaybind, bindable] HRESULT backgroundColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDIMAGE), displaybind, bindable] HRESULT backgroundImage ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDIMAGE), displaybind, bindable] HRESULT backgroundImage ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDREPEAT), displaybind, bindable] HRESULT backgroundRepeat ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDREPEAT), displaybind, bindable] HRESULT backgroundRepeat ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDATTACHMENT), displaybind, bindable] HRESULT backgroundAttachment ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDATTACHMENT), displaybind, bindable] HRESULT backgroundAttachment ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITION), displaybind, bindable] HRESULT backgroundPosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITION), displaybind, bindable] HRESULT backgroundPosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONX), displaybind, bindable] HRESULT backgroundPositionX ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONX), displaybind, bindable] HRESULT backgroundPositionX ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONY), displaybind, bindable] HRESULT backgroundPositionY ([in] VARIANT v);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDPOSITIONY), propget, displaybind, bindable] HRESULT backgroundPositionY ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDSPACING), displaybind, bindable] HRESULT wordSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDSPACING), displaybind, bindable] HRESULT wordSpacing ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_LETTERSPACING), propput, displaybind, bindable] HRESULT letterSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LETTERSPACING), displaybind, bindable] HRESULT letterSpacing ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTDECORATION), displaybind, bindable] HRESULT textDecoration ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTDECORATION), displaybind, bindable] HRESULT textDecoration ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_VERTICALALIGN), displaybind, bindable] HRESULT verticalAlign ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_VERTICALALIGN), displaybind, bindable] HRESULT verticalAlign ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTTRANSFORM), displaybind, bindable] HRESULT textTransform ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTTRANSFORM), displaybind, bindable] HRESULT textTransform ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGN), displaybind, bindable] HRESULT textAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGN), displaybind, bindable] HRESULT textAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTINDENT), displaybind, bindable] HRESULT textIndent ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTINDENT), displaybind, bindable] HRESULT textIndent ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LINEHEIGHT), displaybind, bindable] HRESULT lineHeight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LINEHEIGHT), displaybind, bindable] HRESULT lineHeight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINTOP), displaybind, bindable] HRESULT marginTop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINTOP), displaybind, bindable] HRESULT marginTop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINRIGHT), displaybind, bindable] HRESULT marginRight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINRIGHT), displaybind, bindable] HRESULT marginRight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINBOTTOM), displaybind, bindable] HRESULT marginBottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINBOTTOM), displaybind, bindable] HRESULT marginBottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINLEFT), displaybind, bindable] HRESULT marginLeft ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARGINLEFT), displaybind, bindable] HRESULT marginLeft ([retval, out] 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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGTOP), displaybind, bindable] HRESULT paddingTop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGTOP), displaybind, bindable] HRESULT paddingTop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGRIGHT), displaybind, bindable] HRESULT paddingRight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGRIGHT), displaybind, bindable] HRESULT paddingRight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGBOTTOM), displaybind, bindable] HRESULT paddingBottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGBOTTOM), displaybind, bindable] HRESULT paddingBottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGLEFT), displaybind, bindable] HRESULT paddingLeft ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PADDINGLEFT), displaybind, bindable] HRESULT paddingLeft ([retval, out] 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 ([retval, out] 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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOP), displaybind, bindable] HRESULT borderTop ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOP), displaybind, bindable] HRESULT borderTop ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHT), displaybind, bindable] HRESULT borderRight ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHT), displaybind, bindable] HRESULT borderRight ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOM), displaybind, bindable] HRESULT borderBottom ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOM), displaybind, bindable] HRESULT borderBottom ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFT), displaybind, bindable] HRESULT borderLeft ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFT), displaybind, bindable] HRESULT borderLeft ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLOR), displaybind, bindable] HRESULT borderColor ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLOR), displaybind, bindable] HRESULT borderColor ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPCOLOR), displaybind, bindable] HRESULT borderTopColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPCOLOR), displaybind, bindable] HRESULT borderTopColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTCOLOR), displaybind, bindable] HRESULT borderRightColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTCOLOR), displaybind, bindable] HRESULT borderRightColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMCOLOR), displaybind, bindable] HRESULT borderBottomColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMCOLOR), displaybind, bindable] HRESULT borderBottomColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTCOLOR), displaybind, bindable] HRESULT borderLeftColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTCOLOR), displaybind, bindable] HRESULT borderLeftColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERWIDTH), displaybind, bindable] HRESULT borderWidth ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERWIDTH), displaybind, bindable] HRESULT borderWidth ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPWIDTH), displaybind, bindable] HRESULT borderTopWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPWIDTH), displaybind, bindable] HRESULT borderTopWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTWIDTH), displaybind, bindable] HRESULT borderRightWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTWIDTH), displaybind, bindable] HRESULT borderRightWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMWIDTH), displaybind, bindable] HRESULT borderBottomWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMWIDTH), displaybind, bindable] HRESULT borderBottomWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTWIDTH), displaybind, bindable] HRESULT borderLeftWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTWIDTH), displaybind, bindable] HRESULT borderLeftWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSTYLE), displaybind, bindable] HRESULT borderStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSTYLE), displaybind, bindable] HRESULT borderStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPSTYLE), displaybind, bindable] HRESULT borderTopStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPSTYLE), displaybind, bindable] HRESULT borderTopStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTSTYLE), displaybind, bindable] HRESULT borderRightStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRIGHTSTYLE), displaybind, bindable] HRESULT borderRightStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMSTYLE), displaybind, bindable] HRESULT borderBottomStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMSTYLE), displaybind, bindable] HRESULT borderBottomStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTSTYLE), displaybind, bindable] HRESULT borderLeftStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERLEFTSTYLE), displaybind, bindable] HRESULT borderLeftStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WIDTH), displaybind, bindable] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WIDTH), displaybind, bindable] HRESULT width ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_HEIGHT), displaybind, bindable] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_HEIGHT), displaybind, bindable] HRESULT height ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STYLEFLOAT), displaybind, bindable] HRESULT styleFloat ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STYLEFLOAT), displaybind, bindable] HRESULT styleFloat ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLEAR), displaybind, bindable] HRESULT clear ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLEAR), displaybind, bindable] HRESULT clear ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_DISPLAY), displaybind, bindable] HRESULT display ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_DISPLAY), displaybind, bindable] HRESULT display ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_VISIBILITY), displaybind, bindable] HRESULT visibility ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_VISIBILITY), displaybind, bindable] HRESULT visibility ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLETYPE), displaybind, bindable] HRESULT listStyleType ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLETYPE), displaybind, bindable] HRESULT listStyleType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEPOSITION), displaybind, bindable] HRESULT listStylePosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEPOSITION), displaybind, bindable] HRESULT listStylePosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEIMAGE), displaybind, bindable] HRESULT listStyleImage ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LISTSTYLEIMAGE), displaybind, bindable] HRESULT listStyleImage ([retval, out] 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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WHITESPACE), displaybind, bindable] HRESULT whiteSpace ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WHITESPACE), displaybind, bindable] HRESULT whiteSpace ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TOP), displaybind, bindable] HRESULT top ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TOP), displaybind, bindable] HRESULT top ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LEFT), displaybind, bindable] HRESULT left ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LEFT), displaybind, bindable] HRESULT left ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ZINDEX), displaybind, bindable] HRESULT zIndex ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ZINDEX), displaybind, bindable] HRESULT zIndex ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOW), displaybind, bindable] HRESULT overflow ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOW), displaybind, bindable] HRESULT overflow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKBEFORE), displaybind, bindable] HRESULT pageBreakBefore ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKBEFORE), displaybind, bindable] HRESULT pageBreakBefore ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKAFTER), displaybind, bindable] HRESULT pageBreakAfter ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKAFTER), displaybind, bindable] HRESULT pageBreakAfter ([retval, out] 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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CURSOR), displaybind, bindable] HRESULT cursor ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CURSOR), displaybind, bindable] HRESULT cursor ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIP), displaybind, bindable] HRESULT clip ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIP), displaybind, bindable] HRESULT clip ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILTER), displaybind, bindable] HRESULT filter ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILTER), displaybind, bindable] HRESULT filter ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TABLELAYOUT), displaybind, bindable] HRESULT tableLayout ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TABLELAYOUT), displaybind, bindable] HRESULT tableLayout ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLLAPSE), displaybind, bindable] HRESULT borderCollapse ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERCOLLAPSE), displaybind, bindable] HRESULT borderCollapse ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_DIRECTION), displaybind, bindable] HRESULT direction ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_DIRECTION), displaybind, bindable] HRESULT direction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BEHAVIOR), displaybind, bindable] HRESULT behavior ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BEHAVIOR), displaybind, bindable] HRESULT behavior ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_POSITION), displaybind, bindable] HRESULT position ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_POSITION), displaybind, bindable] HRESULT position ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_UNICODEBIDI), displaybind, bindable] HRESULT unicodeBidi ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_UNICODEBIDI), displaybind, bindable] HRESULT unicodeBidi ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOTTOM), displaybind, bindable] HRESULT bottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOTTOM), displaybind, bindable] HRESULT bottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_RIGHT), displaybind, bindable] HRESULT right ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_RIGHT), displaybind, bindable] HRESULT right ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_IMEMODE), displaybind, bindable] HRESULT imeMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_IMEMODE), displaybind, bindable] HRESULT imeMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYALIGN), displaybind, bindable] HRESULT rubyAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYALIGN), displaybind, bindable] HRESULT rubyAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYPOSITION), displaybind, bindable] HRESULT rubyPosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYPOSITION), displaybind, bindable] HRESULT rubyPosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYOVERHANG), displaybind, bindable] HRESULT rubyOverhang ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_RUBYOVERHANG), displaybind, bindable] HRESULT rubyOverhang ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDCHAR), displaybind, bindable] HRESULT layoutGridChar ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDCHAR), displaybind, bindable] HRESULT layoutGridChar ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDLINE), displaybind, bindable] HRESULT layoutGridLine ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDLINE), displaybind, bindable] HRESULT layoutGridLine ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDMODE), displaybind, bindable] HRESULT layoutGridMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDMODE), displaybind, bindable] HRESULT layoutGridMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDTYPE), displaybind, bindable] HRESULT layoutGridType ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTGRIDTYPE), displaybind, bindable] HRESULT layoutGridType ([retval, out] 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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTAUTOSPACE), displaybind, bindable] HRESULT textAutospace ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTAUTOSPACE), displaybind, bindable] HRESULT textAutospace ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDBREAK), displaybind, bindable] HRESULT wordBreak ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDBREAK), displaybind, bindable] HRESULT wordBreak ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LINEBREAK), displaybind, bindable] HRESULT lineBreak ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LINEBREAK), displaybind, bindable] HRESULT lineBreak ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFY), displaybind, bindable] HRESULT textJustify ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFY), displaybind, bindable] HRESULT textJustify ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFYTRIM), displaybind, bindable] HRESULT textJustifyTrim ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTJUSTIFYTRIM), displaybind, bindable] HRESULT textJustifyTrim ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDA), displaybind, bindable] HRESULT textKashida ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDA), displaybind, bindable] HRESULT textKashida ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWX), displaybind, bindable] HRESULT overflowX ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWX), displaybind, bindable] HRESULT overflowX ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWY), displaybind, bindable] HRESULT overflowY ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OVERFLOWY), displaybind, bindable] HRESULT overflowY ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ACCELERATOR), displaybind, bindable] HRESULT accelerator ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ACCELERATOR), displaybind, bindable] HRESULT accelerator ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTFLOW), displaybind, bindable] HRESULT layoutFlow ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_LAYOUTFLOW), displaybind, bindable] HRESULT layoutFlow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ZOOM), displaybind, bindable] HRESULT zoom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ZOOM), displaybind, bindable] HRESULT zoom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDWRAP), displaybind, bindable] HRESULT wordWrap ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WORDWRAP), displaybind, bindable] HRESULT wordWrap ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTUNDERLINEPOSITION), displaybind, bindable] HRESULT textUnderlinePosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTUNDERLINEPOSITION), displaybind, bindable] HRESULT textUnderlinePosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARBASECOLOR), displaybind, bindable] HRESULT scrollbarBaseColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARBASECOLOR), displaybind, bindable] HRESULT scrollbarBaseColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARFACECOLOR), displaybind, bindable] HRESULT scrollbarFaceColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARFACECOLOR), displaybind, bindable] HRESULT scrollbarFaceColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] HRESULT scrollbar3dLightColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] HRESULT scrollbar3dLightColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarShadowColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarShadowColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] HRESULT scrollbarHighlightColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] HRESULT scrollbarHighlightColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarDarkShadowColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarDarkShadowColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARARROWCOLOR), displaybind, bindable] HRESULT scrollbarArrowColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARARROWCOLOR), displaybind, bindable] HRESULT scrollbarArrowColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARTRACKCOLOR), displaybind, bindable] HRESULT scrollbarTrackColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_SCROLLBARTRACKCOLOR), displaybind, bindable] HRESULT scrollbarTrackColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WRITINGMODE), displaybind, bindable] HRESULT writingMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WRITINGMODE), displaybind, bindable] HRESULT writingMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGNLAST), displaybind, bindable] HRESULT textAlignLast ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTALIGNLAST), displaybind, bindable] HRESULT textAlignLast ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDASPACE), displaybind, bindable] HRESULT textKashidaSpace ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTKASHIDASPACE), displaybind, bindable] HRESULT textKashidaSpace ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTOVERFLOW), displaybind, bindable] HRESULT textOverflow ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTOVERFLOW), displaybind, bindable] HRESULT textOverflow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MINHEIGHT), displaybind, bindable] HRESULT minHeight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MINHEIGHT), displaybind, bindable] HRESULT minHeight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSINTERPOLATIONMODE), displaybind, bindable] HRESULT msInterpolationMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSINTERPOLATIONMODE), displaybind, bindable] HRESULT msInterpolationMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MAXHEIGHT), displaybind, bindable] HRESULT maxHeight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MAXHEIGHT), displaybind, bindable] HRESULT maxHeight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MINWIDTH), displaybind, bindable] HRESULT minWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MINWIDTH), displaybind, bindable] HRESULT minWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MAXWIDTH), displaybind, bindable] HRESULT maxWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MAXWIDTH), displaybind, bindable] HRESULT maxWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CONTENT), displaybind, bindable] HRESULT content ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CONTENT), displaybind, bindable] HRESULT content ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CAPTIONSIDE), displaybind, bindable] HRESULT captionSide ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CAPTIONSIDE), displaybind, bindable] HRESULT captionSide ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERINCREMENT), displaybind, bindable] HRESULT counterIncrement ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERINCREMENT), displaybind, bindable] HRESULT counterIncrement ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERRESET), displaybind, bindable] HRESULT counterReset ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_COUNTERRESET), displaybind, bindable] HRESULT counterReset ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINE), displaybind, bindable] HRESULT outline ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINE), displaybind, bindable] HRESULT outline ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINEWIDTH), displaybind, bindable] HRESULT outlineWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINEWIDTH), displaybind, bindable] HRESULT outlineWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINESTYLE), displaybind, bindable] HRESULT outlineStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINESTYLE), displaybind, bindable] HRESULT outlineStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINECOLOR), displaybind, bindable] HRESULT outlineColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OUTLINECOLOR), displaybind, bindable] HRESULT outlineColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOXSIZING), displaybind, bindable] HRESULT boxSizing ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOXSIZING), displaybind, bindable] HRESULT boxSizing ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSPACING), displaybind, bindable] HRESULT borderSpacing ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERSPACING), displaybind, bindable] HRESULT borderSpacing ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ORPHANS), displaybind, bindable] HRESULT orphans ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ORPHANS), displaybind, bindable] HRESULT orphans ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_WIDOWS), displaybind, bindable] HRESULT widows ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_WIDOWS), displaybind, bindable] HRESULT widows ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKINSIDE), displaybind, bindable] HRESULT pageBreakInside ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_PAGEBREAKINSIDE), displaybind, bindable] HRESULT pageBreakInside ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_EMPTYCELLS), displaybind, bindable] HRESULT emptyCells ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_EMPTYCELLS), displaybind, bindable] HRESULT emptyCells ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSBLOCKPROGRESSION), displaybind, bindable] HRESULT msBlockProgression ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSBLOCKPROGRESSION), displaybind, bindable] HRESULT msBlockProgression ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_QUOTES), displaybind, bindable] HRESULT quotes ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_QUOTES), displaybind, bindable] HRESULT quotes ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_ALIGNMENTBASELINE), displaybind, bindable] HRESULT alignmentBaseline ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_ALIGNMENTBASELINE), displaybind, bindable] HRESULT alignmentBaseline ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BASELINESHIFT), displaybind, bindable] HRESULT baselineShift ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BASELINESHIFT), displaybind, bindable] HRESULT baselineShift ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_DOMINANTBASELINE), displaybind, bindable] HRESULT dominantBaseline ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_DOMINANTBASELINE), displaybind, bindable] HRESULT dominantBaseline ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZEADJUST), displaybind, bindable] HRESULT fontSizeAdjust ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSIZEADJUST), displaybind, bindable] HRESULT fontSizeAdjust ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTRETCH), displaybind, bindable] HRESULT fontStretch ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FONTSTRETCH), displaybind, bindable] HRESULT fontStretch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_OPACITY), displaybind, bindable] HRESULT opacity ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_OPACITY), displaybind, bindable] HRESULT opacity ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPPATH), displaybind, bindable] HRESULT clipPath ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPPATH), displaybind, bindable] HRESULT clipPath ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRULE), displaybind, bindable] HRESULT clipRule ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPRULE), displaybind, bindable] HRESULT clipRule ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILL), displaybind, bindable] HRESULT fill ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILL), displaybind, bindable] HRESULT fill ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILLOPACITY), displaybind, bindable] HRESULT fillOpacity ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILLOPACITY), displaybind, bindable] HRESULT fillOpacity ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILLRULE), displaybind, bindable] HRESULT fillRule ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_FILLRULE), displaybind, bindable] HRESULT fillRule ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_KERNING), displaybind, bindable] HRESULT kerning ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_KERNING), displaybind, bindable] HRESULT kerning ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKER), displaybind, bindable] HRESULT marker ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKER), displaybind, bindable] HRESULT marker ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKEREND), displaybind, bindable] HRESULT markerEnd ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKEREND), displaybind, bindable] HRESULT markerEnd ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKERMID), displaybind, bindable] HRESULT markerMid ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKERMID), displaybind, bindable] HRESULT markerMid ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKERSTART), displaybind, bindable] HRESULT markerStart ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MARKERSTART), displaybind, bindable] HRESULT markerStart ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MASK), displaybind, bindable] HRESULT mask ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MASK), displaybind, bindable] HRESULT mask ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_POINTEREVENTS), displaybind, bindable] HRESULT pointerEvents ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_POINTEREVENTS), displaybind, bindable] HRESULT pointerEvents ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STOPCOLOR), displaybind, bindable] HRESULT stopColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STOPCOLOR), displaybind, bindable] HRESULT stopColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STOPOPACITY), displaybind, bindable] HRESULT stopOpacity ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STOPOPACITY), displaybind, bindable] HRESULT stopOpacity ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKE), displaybind, bindable] HRESULT stroke ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKE), displaybind, bindable] HRESULT stroke ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHARRAY), displaybind, bindable] HRESULT strokeDasharray ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHARRAY), displaybind, bindable] HRESULT strokeDasharray ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHOFFSET), displaybind, bindable] HRESULT strokeDashoffset ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEDASHOFFSET), displaybind, bindable] HRESULT strokeDashoffset ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINECAP), displaybind, bindable] HRESULT strokeLinecap ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINECAP), displaybind, bindable] HRESULT strokeLinecap ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINEJOIN), displaybind, bindable] HRESULT strokeLinejoin ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKELINEJOIN), displaybind, bindable] HRESULT strokeLinejoin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEMITERLIMIT), displaybind, bindable] HRESULT strokeMiterlimit ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEMITERLIMIT), displaybind, bindable] HRESULT strokeMiterlimit ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEOPACITY), displaybind, bindable] HRESULT strokeOpacity ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEOPACITY), displaybind, bindable] HRESULT strokeOpacity ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEWIDTH), displaybind, bindable] HRESULT strokeWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_STROKEWIDTH), displaybind, bindable] HRESULT strokeWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTANCHOR), displaybind, bindable] HRESULT textAnchor ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_TEXTANCHOR), displaybind, bindable] HRESULT textAnchor ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONHORIZONTAL), displaybind, bindable] HRESULT glyphOrientationHorizontal ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONHORIZONTAL), displaybind, bindable] HRESULT glyphOrientationHorizontal ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONVERTICAL), displaybind, bindable] HRESULT glyphOrientationVertical ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_GLYPHORIENTATIONVERTICAL), displaybind, bindable] HRESULT glyphOrientationVertical ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRADIUS), displaybind, bindable] HRESULT borderRadius ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERRADIUS), displaybind, bindable] HRESULT borderRadius ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPLEFTRADIUS), displaybind, bindable] HRESULT borderTopLeftRadius ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPLEFTRADIUS), displaybind, bindable] HRESULT borderTopLeftRadius ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPRIGHTRADIUS), displaybind, bindable] HRESULT borderTopRightRadius ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERTOPRIGHTRADIUS), displaybind, bindable] HRESULT borderTopRightRadius ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMRIGHTRADIUS), displaybind, bindable] HRESULT borderBottomRightRadius ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMRIGHTRADIUS), displaybind, bindable] HRESULT borderBottomRightRadius ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMLEFTRADIUS), displaybind, bindable] HRESULT borderBottomLeftRadius ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BORDERBOTTOMLEFTRADIUS), displaybind, bindable] HRESULT borderBottomLeftRadius ([retval, out] 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 ([retval, out] 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 ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CLIPBOTTOM), displaybind, bindable, hidden] HRESULT clipBottom ([retval, out] 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 ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_CSSFLOAT), displaybind, bindable] HRESULT cssFloat ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_CSSFLOAT), displaybind, bindable] HRESULT cssFloat ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCLIP), displaybind, bindable] HRESULT backgroundClip ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDCLIP), displaybind, bindable] HRESULT backgroundClip ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDORIGIN), displaybind, bindable] HRESULT backgroundOrigin ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDORIGIN), displaybind, bindable] HRESULT backgroundOrigin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDSIZE), displaybind, bindable] HRESULT backgroundSize ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BACKGROUNDSIZE), displaybind, bindable] HRESULT backgroundSize ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOXSHADOW), displaybind, bindable] HRESULT boxShadow ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_BOXSHADOW), displaybind, bindable] HRESULT boxShadow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORM), displaybind, bindable] HRESULT msTransform ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORM), displaybind, bindable] HRESULT msTransform ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORMORIGIN), displaybind, bindable] HRESULT msTransformOrigin ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION_MSTRANSFORMORIGIN), displaybind, bindable] HRESULT msTransformOrigin ([retval, out] BSTR *p);
  };
  [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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable] HRESULT msContentZooming ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMING), displaybind, bindable] HRESULT msContentZooming ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable] HRESULT msContentZoomSnapType ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPTYPE), displaybind, bindable] HRESULT msContentZoomSnapType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable] HRESULT msScrollRails ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLRAILS), displaybind, bindable] HRESULT msScrollRails ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable] HRESULT msContentZoomChaining ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMCHAINING), displaybind, bindable] HRESULT msContentZoomChaining ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable] HRESULT msScrollSnapType ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPTYPE), displaybind, bindable] HRESULT msScrollSnapType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable] HRESULT msContentZoomLimit ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMIT), displaybind, bindable] HRESULT msContentZoomLimit ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable] HRESULT msContentZoomSnap ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAP), displaybind, bindable] HRESULT msContentZoomSnap ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable] HRESULT msContentZoomSnapPoints ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMSNAPPOINTS), displaybind, bindable] HRESULT msContentZoomSnapPoints ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable] HRESULT msContentZoomLimitMin ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMIN), displaybind, bindable] HRESULT msContentZoomLimitMin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable] HRESULT msContentZoomLimitMax ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSCONTENTZOOMLIMITMAX), displaybind, bindable] HRESULT msContentZoomLimitMax ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable] HRESULT msScrollSnapX ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPX), displaybind, bindable] HRESULT msScrollSnapX ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable] HRESULT msScrollSnapY ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPY), displaybind, bindable] HRESULT msScrollSnapY ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable] HRESULT msScrollSnapPointsX ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSX), displaybind, bindable] HRESULT msScrollSnapPointsX ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable] HRESULT msScrollSnapPointsY ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLSNAPPOINTSY), displaybind, bindable] HRESULT msScrollSnapPointsY ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable] HRESULT msGridColumn ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMN), displaybind, bindable] HRESULT msGridColumn ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable] HRESULT msGridColumnAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNALIGN), displaybind, bindable] HRESULT msGridColumnAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable] HRESULT msGridColumns ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNS), displaybind, bindable] HRESULT msGridColumns ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable] HRESULT msGridColumnSpan ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDCOLUMNSPAN), displaybind, bindable] HRESULT msGridColumnSpan ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable] HRESULT msGridRow ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROW), displaybind, bindable] HRESULT msGridRow ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable] HRESULT msGridRowAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWALIGN), displaybind, bindable] HRESULT msGridRowAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable] HRESULT msGridRows ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWS), displaybind, bindable] HRESULT msGridRows ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable] HRESULT msGridRowSpan ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSGRIDROWSPAN), displaybind, bindable] HRESULT msGridRowSpan ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable] HRESULT msWrapThrough ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPTHROUGH), displaybind, bindable] HRESULT msWrapThrough ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable] HRESULT msWrapMargin ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPMARGIN), displaybind, bindable] HRESULT msWrapMargin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable] HRESULT msWrapFlow ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSWRAPFLOW), displaybind, bindable] HRESULT msWrapFlow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable] HRESULT msAnimationName ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONNAME), displaybind, bindable] HRESULT msAnimationName ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable] HRESULT msAnimationDuration ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDURATION), displaybind, bindable] HRESULT msAnimationDuration ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable] HRESULT msAnimationTimingFunction ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONTIMINGFUNCTION), displaybind, bindable] HRESULT msAnimationTimingFunction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable] HRESULT msAnimationDelay ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDELAY), displaybind, bindable] HRESULT msAnimationDelay ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable] HRESULT msAnimationDirection ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONDIRECTION), displaybind, bindable] HRESULT msAnimationDirection ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable] HRESULT msAnimationPlayState ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONPLAYSTATE), displaybind, bindable] HRESULT msAnimationPlayState ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable] HRESULT msAnimationIterationCount ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONITERATIONCOUNT), displaybind, bindable] HRESULT msAnimationIterationCount ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable] HRESULT msAnimation ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATION), displaybind, bindable] HRESULT msAnimation ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable] HRESULT msAnimationFillMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSANIMATIONFILLMODE), displaybind, bindable] HRESULT msAnimationFillMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable] HRESULT colorInterpolationFilters ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLORINTERPOLATIONFILTERS), displaybind, bindable] HRESULT colorInterpolationFilters ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable] HRESULT columnCount ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNCOUNT), displaybind, bindable] HRESULT columnCount ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable] HRESULT columnWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNWIDTH), displaybind, bindable] HRESULT columnWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable] HRESULT columnGap ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNGAP), displaybind, bindable] HRESULT columnGap ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable] HRESULT columnFill ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNFILL), displaybind, bindable] HRESULT columnFill ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable] HRESULT columnSpan ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNSPAN), displaybind, bindable] HRESULT columnSpan ([retval, out] 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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable] HRESULT columnRule ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULE), displaybind, bindable] HRESULT columnRule ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable] HRESULT columnRuleColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULECOLOR), displaybind, bindable] HRESULT columnRuleColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable] HRESULT columnRuleStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULESTYLE), displaybind, bindable] HRESULT columnRuleStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable] HRESULT columnRuleWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_COLUMNRULEWIDTH), displaybind, bindable] HRESULT columnRuleWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable] HRESULT breakBefore ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKBEFORE), displaybind, bindable] HRESULT breakBefore ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable] HRESULT breakAfter ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKAFTER), displaybind, bindable] HRESULT breakAfter ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable] HRESULT breakInside ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BREAKINSIDE), displaybind, bindable] HRESULT breakInside ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable] HRESULT floodColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODCOLOR), displaybind, bindable] HRESULT floodColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable] HRESULT floodOpacity ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FLOODOPACITY), displaybind, bindable] HRESULT floodOpacity ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable] HRESULT lightingColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_LIGHTINGCOLOR), displaybind, bindable] HRESULT lightingColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable] HRESULT msScrollLimitXMin ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMIN), displaybind, bindable] HRESULT msScrollLimitXMin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable] HRESULT msScrollLimitYMin ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMIN), displaybind, bindable] HRESULT msScrollLimitYMin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable] HRESULT msScrollLimitXMax ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITXMAX), displaybind, bindable] HRESULT msScrollLimitXMax ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable] HRESULT msScrollLimitYMax ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMITYMAX), displaybind, bindable] HRESULT msScrollLimitYMax ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable] HRESULT msScrollLimit ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLLIMIT), displaybind, bindable] HRESULT msScrollLimit ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable] HRESULT textShadow ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TEXTSHADOW), displaybind, bindable] HRESULT textShadow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable] HRESULT msFlowFrom ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWFROM), displaybind, bindable] HRESULT msFlowFrom ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable] HRESULT msFlowInto ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLOWINTO), displaybind, bindable] HRESULT msFlowInto ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable] HRESULT msHyphens ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENS), displaybind, bindable] HRESULT msHyphens ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable] HRESULT msHyphenateLimitZone ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITZONE), displaybind, bindable] HRESULT msHyphenateLimitZone ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable] HRESULT msHyphenateLimitChars ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITCHARS), displaybind, bindable] HRESULT msHyphenateLimitChars ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable] HRESULT msHyphenateLimitLines ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHYPHENATELIMITLINES), displaybind, bindable] HRESULT msHyphenateLimitLines ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable] HRESULT msHighContrastAdjust ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSHIGHCONTRASTADJUST), displaybind, bindable] HRESULT msHighContrastAdjust ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable] HRESULT enableBackground ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ENABLEBACKGROUND), displaybind, bindable] HRESULT enableBackground ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable] HRESULT msFontFeatureSettings ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFONTFEATURESETTINGS), displaybind, bindable] HRESULT msFontFeatureSettings ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable] HRESULT msUserSelect ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSUSERSELECT), displaybind, bindable] HRESULT msUserSelect ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable] HRESULT msOverflowStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSOVERFLOWSTYLE), displaybind, bindable] HRESULT msOverflowStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable] HRESULT msTransformStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSFORMSTYLE), displaybind, bindable] HRESULT msTransformStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable] HRESULT msBackfaceVisibility ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSBACKFACEVISIBILITY), displaybind, bindable] HRESULT msBackfaceVisibility ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable] HRESULT msPerspective ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVE), displaybind, bindable] HRESULT msPerspective ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable] HRESULT msPerspectiveOrigin ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSPERSPECTIVEORIGIN), displaybind, bindable] HRESULT msPerspectiveOrigin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable] HRESULT msTransitionProperty ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONPROPERTY), displaybind, bindable] HRESULT msTransitionProperty ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable] HRESULT msTransitionDuration ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDURATION), displaybind, bindable] HRESULT msTransitionDuration ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable] HRESULT msTransitionTimingFunction ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONTIMINGFUNCTION), displaybind, bindable] HRESULT msTransitionTimingFunction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable] HRESULT msTransitionDelay ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITIONDELAY), displaybind, bindable] HRESULT msTransitionDelay ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable] HRESULT msTransition ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTRANSITION), displaybind, bindable] HRESULT msTransition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable] HRESULT msTouchAction ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHACTION), displaybind, bindable] HRESULT msTouchAction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable] HRESULT msScrollTranslation ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSSCROLLTRANSLATION), displaybind, bindable] HRESULT msScrollTranslation ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable] HRESULT msFlex ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEX), displaybind, bindable] HRESULT msFlex ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable] HRESULT msFlexPositive ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPOSITIVE), displaybind, bindable] HRESULT msFlexPositive ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable] HRESULT msFlexNegative ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXNEGATIVE), displaybind, bindable] HRESULT msFlexNegative ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable] HRESULT msFlexPreferredSize ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPREFERREDSIZE), displaybind, bindable] HRESULT msFlexPreferredSize ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable] HRESULT msFlexFlow ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXFLOW), displaybind, bindable] HRESULT msFlexFlow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable] HRESULT msFlexDirection ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXDIRECTION), displaybind, bindable] HRESULT msFlexDirection ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable] HRESULT msFlexWrap ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXWRAP), displaybind, bindable] HRESULT msFlexWrap ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable] HRESULT msFlexAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXALIGN), displaybind, bindable] HRESULT msFlexAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable] HRESULT msFlexItemAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXITEMALIGN), displaybind, bindable] HRESULT msFlexItemAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable] HRESULT msFlexPack ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXPACK), displaybind, bindable] HRESULT msFlexPack ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable] HRESULT msFlexLinePack ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXLINEPACK), displaybind, bindable] HRESULT msFlexLinePack ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable] HRESULT msFlexOrder ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSFLEXORDER), displaybind, bindable] HRESULT msFlexOrder ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable] HRESULT msTouchSelect ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_MSTOUCHSELECT), displaybind, bindable] HRESULT msTouchSelect ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable] HRESULT transform ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORM), displaybind, bindable] HRESULT transform ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable] HRESULT transformOrigin ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMORIGIN), displaybind, bindable] HRESULT transformOrigin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable] HRESULT transformStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSFORMSTYLE), displaybind, bindable] HRESULT transformStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable] HRESULT backfaceVisibility ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_BACKFACEVISIBILITY), displaybind, bindable] HRESULT backfaceVisibility ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable] HRESULT perspective ([in] VARIANT v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVE), displaybind, bindable] HRESULT perspective ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable] HRESULT perspectiveOrigin ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_PERSPECTIVEORIGIN), displaybind, bindable] HRESULT perspectiveOrigin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable] HRESULT transitionProperty ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONPROPERTY), displaybind, bindable] HRESULT transitionProperty ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable] HRESULT transitionDuration ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDURATION), displaybind, bindable] HRESULT transitionDuration ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable] HRESULT transitionTimingFunction ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONTIMINGFUNCTION), displaybind, bindable] HRESULT transitionTimingFunction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable] HRESULT transitionDelay ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITIONDELAY), displaybind, bindable] HRESULT transitionDelay ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable] HRESULT transition ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_TRANSITION), displaybind, bindable] HRESULT transition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable] HRESULT fontFeatureSettings ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_FONTFEATURESETTINGS), displaybind, bindable] HRESULT fontFeatureSettings ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable] HRESULT animationName ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONNAME), displaybind, bindable] HRESULT animationName ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable] HRESULT animationDuration ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDURATION), displaybind, bindable] HRESULT animationDuration ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable] HRESULT animationTimingFunction ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONTIMINGFUNCTION), displaybind, bindable] HRESULT animationTimingFunction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable] HRESULT animationDelay ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDELAY), displaybind, bindable] HRESULT animationDelay ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable] HRESULT animationDirection ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONDIRECTION), displaybind, bindable] HRESULT animationDirection ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable] HRESULT animationPlayState ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONPLAYSTATE), displaybind, bindable] HRESULT animationPlayState ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable] HRESULT animationIterationCount ([in] BSTR v);
    [propget, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONITERATIONCOUNT), displaybind, bindable] HRESULT animationIterationCount ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), displaybind, bindable] HRESULT animation ([in] BSTR v);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATION), propget, displaybind, bindable] HRESULT animation ([retval, out] BSTR *p);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), propput, displaybind, bindable] HRESULT animationFillMode ([in] BSTR v);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION2_ANIMATIONFILLMODE), propget, displaybind, bindable] HRESULT animationFillMode ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (305104c2-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLStyleEnabled : IDispatch {
    [id (DISPID_IHTMLSTYLEENABLED_MSGETPROPERTYENABLED)] HRESULT msGetPropertyEnabled ([in] BSTR name,[retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLSTYLEENABLED_MSPUTPROPERTYENABLED)] HRESULT msPutPropertyEnabled ([in] BSTR name,[in] VARIANT_BOOL b);
  };

  [hidden, uuid (3059009a-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLCSSStyleDeclaration {
    properties:
    methods:
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_LENGTH), propget] long length ();
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_PARENTRULE), propget] 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,[defaultvalue (NULL), in] 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 ();
    [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 ();
    [id (DISPID_IHTMLSTYLEENABLED_MSGETPROPERTYENABLED)] VARIANT_BOOL msGetPropertyEnabled ([in] BSTR name);
    [id (DISPID_IHTMLSTYLEENABLED_MSPUTPROPERTYENABLED)] void msPutPropertyEnabled ([in] BSTR name,[in] VARIANT_BOOL b);
  };
  [noncreatable, uuid (30510741-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLCSSStyleDeclaration {
    [default] dispinterface DispHTMLCSSStyleDeclaration;
    interface IHTMLCSSStyleDeclaration;
    interface IHTMLCSSStyleDeclaration2;
    interface IHTMLStyleEnabled;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CCSSStyleDeclaration;")
  [odl, oleautomation, dual, uuid (3050f25e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyle : IDispatch {
    [propput, id (DISPID_IHTMLSTYLE_FONTFAMILY), displaybind, bindable] HRESULT fontFamily ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FONTFAMILY), displaybind, bindable] HRESULT fontFamily ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_FONTSTYLE), displaybind, bindable] HRESULT fontStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FONTSTYLE), displaybind, bindable] HRESULT fontStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_FONTVARIANT), displaybind, bindable] HRESULT fontVariant ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FONTVARIANT), displaybind, bindable] HRESULT fontVariant ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_FONTWEIGHT), displaybind, bindable] HRESULT fontWeight ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FONTWEIGHT), displaybind, bindable] HRESULT fontWeight ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_FONTSIZE), displaybind, bindable] HRESULT fontSize ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_FONTSIZE), displaybind, bindable] HRESULT fontSize ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_FONT), displaybind, bindable, nonbrowsable] HRESULT font ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FONT), displaybind, bindable, nonbrowsable] HRESULT font ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_COLOR), displaybind, bindable] HRESULT color ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_COLOR), displaybind, bindable] HRESULT color ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUND), displaybind, bindable, nonbrowsable] HRESULT background ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUND), displaybind, bindable, nonbrowsable] HRESULT background ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDCOLOR), displaybind, bindable] HRESULT backgroundColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDCOLOR), displaybind, bindable] HRESULT backgroundColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDIMAGE), displaybind, bindable] HRESULT backgroundImage ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDIMAGE), displaybind, bindable] HRESULT backgroundImage ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDREPEAT), displaybind, bindable] HRESULT backgroundRepeat ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDREPEAT), displaybind, bindable] HRESULT backgroundRepeat ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] HRESULT backgroundAttachment ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] HRESULT backgroundAttachment ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), displaybind, bindable] HRESULT backgroundPosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), displaybind, bindable] HRESULT backgroundPosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] HRESULT backgroundPositionX ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] HRESULT backgroundPositionX ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] HRESULT backgroundPositionY ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] HRESULT backgroundPositionY ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_WORDSPACING), displaybind, bindable] HRESULT wordSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_WORDSPACING), displaybind, bindable] HRESULT wordSpacing ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_LETTERSPACING), displaybind, bindable] HRESULT letterSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_LETTERSPACING), displaybind, bindable] HRESULT letterSpacing ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATION), displaybind, bindable] HRESULT textDecoration ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATION), displaybind, bindable] HRESULT textDecoration ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATIONNONE), displaybind, bindable] HRESULT textDecorationNone ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATIONNONE), displaybind, bindable] HRESULT textDecorationNone ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable] HRESULT textDecorationUnderline ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable] HRESULT textDecorationUnderline ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable] HRESULT textDecorationOverline ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable] HRESULT textDecorationOverline ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable] HRESULT textDecorationLineThrough ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable] HRESULT textDecorationLineThrough ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK), displaybind, bindable] HRESULT textDecorationBlink ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTDECORATIONBLINK), displaybind, bindable] HRESULT textDecorationBlink ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLSTYLE_VERTICALALIGN), displaybind, bindable] HRESULT verticalAlign ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_VERTICALALIGN), displaybind, bindable] HRESULT verticalAlign ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTTRANSFORM), displaybind, bindable] HRESULT textTransform ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTTRANSFORM), displaybind, bindable] HRESULT textTransform ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTALIGN), displaybind, bindable] HRESULT textAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTALIGN), displaybind, bindable] HRESULT textAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_TEXTINDENT), displaybind, bindable] HRESULT textIndent ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_TEXTINDENT), displaybind, bindable] HRESULT textIndent ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_LINEHEIGHT), displaybind, bindable] HRESULT lineHeight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_LINEHEIGHT), displaybind, bindable] HRESULT lineHeight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_MARGINTOP), displaybind, bindable] HRESULT marginTop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_MARGINTOP), displaybind, bindable] HRESULT marginTop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_MARGINRIGHT), displaybind, bindable] HRESULT marginRight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_MARGINRIGHT), displaybind, bindable] HRESULT marginRight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_MARGINBOTTOM), displaybind, bindable] HRESULT marginBottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_MARGINBOTTOM), displaybind, bindable] HRESULT marginBottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_MARGINLEFT), displaybind, bindable] HRESULT marginLeft ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_MARGINLEFT), displaybind, bindable] HRESULT marginLeft ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_MARGIN), displaybind, bindable, nonbrowsable] HRESULT margin ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_MARGIN), displaybind, bindable, nonbrowsable] HRESULT margin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_PADDINGTOP), displaybind, bindable] HRESULT paddingTop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_PADDINGTOP), displaybind, bindable] HRESULT paddingTop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_PADDINGRIGHT), displaybind, bindable] HRESULT paddingRight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_PADDINGRIGHT), displaybind, bindable] HRESULT paddingRight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_PADDINGBOTTOM), displaybind, bindable] HRESULT paddingBottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_PADDINGBOTTOM), displaybind, bindable] HRESULT paddingBottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_PADDINGLEFT), displaybind, bindable] HRESULT paddingLeft ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_PADDINGLEFT), displaybind, bindable] HRESULT paddingLeft ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_PADDING), displaybind, bindable, nonbrowsable] HRESULT padding ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_PADDING), displaybind, bindable, nonbrowsable] HRESULT padding ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDER), displaybind, bindable, nonbrowsable] HRESULT border ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDER), displaybind, bindable, nonbrowsable] HRESULT border ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERTOP), displaybind, bindable] HRESULT borderTop ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERTOP), displaybind, bindable] HRESULT borderTop ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERRIGHT), displaybind, bindable] HRESULT borderRight ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERRIGHT), displaybind, bindable] HRESULT borderRight ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERBOTTOM), displaybind, bindable] HRESULT borderBottom ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERBOTTOM), displaybind, bindable] HRESULT borderBottom ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERLEFT), displaybind, bindable] HRESULT borderLeft ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERLEFT), displaybind, bindable] HRESULT borderLeft ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERCOLOR), displaybind, bindable] HRESULT borderColor ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERCOLOR), displaybind, bindable] HRESULT borderColor ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERTOPCOLOR), displaybind, bindable] HRESULT borderTopColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERTOPCOLOR), displaybind, bindable] HRESULT borderTopColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR), displaybind, bindable] HRESULT borderRightColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERRIGHTCOLOR), displaybind, bindable] HRESULT borderRightColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] HRESULT borderBottomColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] HRESULT borderBottomColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERLEFTCOLOR), displaybind, bindable] HRESULT borderLeftColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERLEFTCOLOR), displaybind, bindable] HRESULT borderLeftColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERWIDTH), displaybind, bindable] HRESULT borderWidth ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERWIDTH), displaybind, bindable] HRESULT borderWidth ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERTOPWIDTH), displaybind, bindable] HRESULT borderTopWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERTOPWIDTH), displaybind, bindable] HRESULT borderTopWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH), displaybind, bindable] HRESULT borderRightWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERRIGHTWIDTH), displaybind, bindable] HRESULT borderRightWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] HRESULT borderBottomWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] HRESULT borderBottomWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERLEFTWIDTH), displaybind, bindable] HRESULT borderLeftWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERLEFTWIDTH), displaybind, bindable] HRESULT borderLeftWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERSTYLE), displaybind, bindable] HRESULT borderStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERSTYLE), displaybind, bindable] HRESULT borderStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERTOPSTYLE), displaybind, bindable] HRESULT borderTopStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERTOPSTYLE), displaybind, bindable] HRESULT borderTopStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE), displaybind, bindable] HRESULT borderRightStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERRIGHTSTYLE), displaybind, bindable] HRESULT borderRightStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] HRESULT borderBottomStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] HRESULT borderBottomStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_BORDERLEFTSTYLE), displaybind, bindable] HRESULT borderLeftStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BORDERLEFTSTYLE), displaybind, bindable] HRESULT borderLeftStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_WIDTH), displaybind, bindable] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_WIDTH), displaybind, bindable] HRESULT width ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_HEIGHT), displaybind, bindable] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_HEIGHT), displaybind, bindable] HRESULT height ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_STYLEFLOAT), displaybind, bindable] HRESULT styleFloat ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_STYLEFLOAT), displaybind, bindable] HRESULT styleFloat ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_CLEAR), displaybind, bindable] HRESULT clear ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_CLEAR), displaybind, bindable] HRESULT clear ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_DISPLAY), displaybind, bindable] HRESULT display ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_DISPLAY), displaybind, bindable] HRESULT display ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_VISIBILITY), displaybind, bindable] HRESULT visibility ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_VISIBILITY), displaybind, bindable] HRESULT visibility ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_LISTSTYLETYPE), displaybind, bindable] HRESULT listStyleType ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_LISTSTYLETYPE), displaybind, bindable] HRESULT listStyleType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_LISTSTYLEPOSITION), displaybind, bindable] HRESULT listStylePosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_LISTSTYLEPOSITION), displaybind, bindable] HRESULT listStylePosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_LISTSTYLEIMAGE), displaybind, bindable] HRESULT listStyleImage ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_LISTSTYLEIMAGE), displaybind, bindable] HRESULT listStyleImage ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable] HRESULT listStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable] HRESULT listStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_WHITESPACE), displaybind, bindable] HRESULT whiteSpace ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_WHITESPACE), displaybind, bindable] HRESULT whiteSpace ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_TOP), displaybind, bindable] HRESULT top ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_TOP), displaybind, bindable] HRESULT top ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_LEFT), displaybind, bindable] HRESULT left ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_LEFT), displaybind, bindable] HRESULT left ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLSTYLE_POSITION), displaybind, bindable] HRESULT position ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_ZINDEX), displaybind, bindable] HRESULT zIndex ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE_ZINDEX), displaybind, bindable] HRESULT zIndex ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE_OVERFLOW), displaybind, bindable] HRESULT overflow ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_OVERFLOW), displaybind, bindable] HRESULT overflow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_PAGEBREAKBEFORE), displaybind, bindable] HRESULT pageBreakBefore ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_PAGEBREAKBEFORE), displaybind, bindable] HRESULT pageBreakBefore ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_PAGEBREAKAFTER), displaybind, bindable] HRESULT pageBreakAfter ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_PAGEBREAKAFTER), displaybind, bindable] HRESULT pageBreakAfter ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_CSSTEXT), displaybind, bindable, nonbrowsable] HRESULT cssText ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_CSSTEXT), displaybind, bindable, nonbrowsable] HRESULT cssText ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_PIXELTOP), displaybind, bindable, hidden] HRESULT pixelTop ([in] long v);
    [propget, id (DISPID_IHTMLSTYLE_PIXELTOP), displaybind, bindable, hidden] HRESULT pixelTop ([retval, out] long *p);
    [propput, id (DISPID_IHTMLSTYLE_PIXELLEFT), displaybind, bindable, hidden] HRESULT pixelLeft ([in] long v);
    [propget, id (DISPID_IHTMLSTYLE_PIXELLEFT), displaybind, bindable, hidden] HRESULT pixelLeft ([retval, out] long *p);
    [propput, id (DISPID_IHTMLSTYLE_PIXELWIDTH), displaybind, bindable, hidden] HRESULT pixelWidth ([in] long v);
    [propget, id (DISPID_IHTMLSTYLE_PIXELWIDTH), displaybind, bindable, hidden] HRESULT pixelWidth ([retval, out] long *p);
    [propput, id (DISPID_IHTMLSTYLE_PIXELHEIGHT), displaybind, bindable, hidden] HRESULT pixelHeight ([in] long v);
    [propget, id (DISPID_IHTMLSTYLE_PIXELHEIGHT), displaybind, bindable, hidden] HRESULT pixelHeight ([retval, out] long *p);
    [propput, id (DISPID_IHTMLSTYLE_POSTOP), displaybind, bindable] HRESULT posTop ([in] float v);
    [propget, id (DISPID_IHTMLSTYLE_POSTOP), displaybind, bindable] HRESULT posTop ([retval, out] float *p);
    [propput, id (DISPID_IHTMLSTYLE_POSLEFT), displaybind, bindable] HRESULT posLeft ([in] float v);
    [propget, id (DISPID_IHTMLSTYLE_POSLEFT), displaybind, bindable] HRESULT posLeft ([retval, out] float *p);
    [propput, id (DISPID_IHTMLSTYLE_POSWIDTH), displaybind, bindable] HRESULT posWidth ([in] float v);
    [propget, id (DISPID_IHTMLSTYLE_POSWIDTH), displaybind, bindable] HRESULT posWidth ([retval, out] float *p);
    [propput, id (DISPID_IHTMLSTYLE_POSHEIGHT), displaybind, bindable] HRESULT posHeight ([in] float v);
    [propget, id (DISPID_IHTMLSTYLE_POSHEIGHT), displaybind, bindable] HRESULT posHeight ([retval, out] float *p);
    [propput, id (DISPID_IHTMLSTYLE_CURSOR), displaybind, bindable] HRESULT cursor ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_CURSOR), displaybind, bindable] HRESULT cursor ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_CLIP), displaybind, bindable] HRESULT clip ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_CLIP), displaybind, bindable] HRESULT clip ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE_FILTER), displaybind, bindable] HRESULT filter ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_FILTER), displaybind, bindable] 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,[defaultvalue (0), retval, out] VARIANT *AttributeValue);
    [id (DISPID_IHTMLSTYLE_REMOVEATTRIBUTE)] HRESULT removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags,[defaultvalue (0), retval, out] VARIANT_BOOL *pfSuccess);
    [id (DISPID_IHTMLSTYLE_TOSTRING)] HRESULT toString ([retval, out] BSTR *String);
  };

  [odl, oleautomation, dual, uuid (3050f4a2-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLStyle2 : IDispatch {
    [id (DISPID_IHTMLSTYLE2_TABLELAYOUT), propput, displaybind, bindable] HRESULT tableLayout ([in] BSTR v);
    [id (DISPID_IHTMLSTYLE2_TABLELAYOUT), propget, displaybind, bindable] HRESULT tableLayout ([retval, out] BSTR *p);
    [id (DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), propput, displaybind, bindable] HRESULT borderCollapse ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_BORDERCOLLAPSE), displaybind, bindable] HRESULT borderCollapse ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable] HRESULT direction ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_DIRECTION), displaybind, bindable] HRESULT direction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable] HRESULT behavior ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_BEHAVIOR), displaybind, bindable] HRESULT behavior ([retval, out] BSTR *p);
    [id (DISPID_IHTMLSTYLE2_SETEXPRESSION)] HRESULT setExpression ([in] BSTR propname,[in] BSTR expression,[defaultvalue (L""), in] BSTR language);
    [id (DISPID_IHTMLSTYLE2_GETEXPRESSION)] HRESULT getExpression ([in] BSTR propname,[retval, out] VARIANT *expression);
    [id (DISPID_IHTMLSTYLE2_REMOVEEXPRESSION)] HRESULT removeExpression ([in] BSTR propname,[retval, out] VARIANT_BOOL *pfSuccess);
    [propput, id (DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable] HRESULT position ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_POSITION), displaybind, bindable] HRESULT position ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable] HRESULT unicodeBidi ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_UNICODEBIDI), displaybind, bindable] HRESULT unicodeBidi ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable] HRESULT bottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE2_BOTTOM), displaybind, bindable] HRESULT bottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable] HRESULT right ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE2_RIGHT), displaybind, bindable] HRESULT right ([retval, out] 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 ([retval, out] 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 ([retval, out] long *p);
    [propput, id (DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable] HRESULT posBottom ([in] float v);
    [propget, id (DISPID_IHTMLSTYLE2_POSBOTTOM), displaybind, bindable] HRESULT posBottom ([retval, out] float *p);
    [propput, id (DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable] HRESULT posRight ([in] float v);
    [propget, id (DISPID_IHTMLSTYLE2_POSRIGHT), displaybind, bindable] HRESULT posRight ([retval, out] float *p);
    [propput, id (DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable] HRESULT imeMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_IMEMODE), displaybind, bindable] HRESULT imeMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable] HRESULT rubyAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_RUBYALIGN), displaybind, bindable] HRESULT rubyAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable] HRESULT rubyPosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_RUBYPOSITION), displaybind, bindable] HRESULT rubyPosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable] HRESULT rubyOverhang ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_RUBYOVERHANG), displaybind, bindable] HRESULT rubyOverhang ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable] HRESULT layoutGridChar ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDCHAR), displaybind, bindable] HRESULT layoutGridChar ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable] HRESULT layoutGridLine ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDLINE), displaybind, bindable] HRESULT layoutGridLine ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable] HRESULT layoutGridMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDMODE), displaybind, bindable] HRESULT layoutGridMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable] HRESULT layoutGridType ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_LAYOUTGRIDTYPE), displaybind, bindable] HRESULT layoutGridType ([retval, out] 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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable] HRESULT wordBreak ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_WORDBREAK), displaybind, bindable] HRESULT wordBreak ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable] HRESULT lineBreak ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_LINEBREAK), displaybind, bindable] HRESULT lineBreak ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable] HRESULT textJustify ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_TEXTJUSTIFY), displaybind, bindable] HRESULT textJustify ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable] HRESULT textJustifyTrim ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable] HRESULT textJustifyTrim ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable] HRESULT textKashida ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE2_TEXTKASHIDA), displaybind, bindable] HRESULT textKashida ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable] HRESULT textAutospace ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_TEXTAUTOSPACE), displaybind, bindable] HRESULT textAutospace ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable] HRESULT overflowX ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_OVERFLOWX), displaybind, bindable] HRESULT overflowX ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable] HRESULT overflowY ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_OVERFLOWY), displaybind, bindable] HRESULT overflowY ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable] HRESULT accelerator ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE2_ACCELERATOR), displaybind, bindable] HRESULT accelerator ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (3050f656-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLStyle3 : IDispatch {
    [id (DISPID_IHTMLSTYLE3_LAYOUTFLOW), propput, displaybind, bindable] HRESULT layoutFlow ([in] BSTR v);
    [id (DISPID_IHTMLSTYLE3_LAYOUTFLOW), propget, 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);
    [id (DISPID_IHTMLSTYLE3_TEXTALIGNLAST), propput, displaybind, bindable] HRESULT textAlignLast ([in] BSTR v);
    [id (DISPID_IHTMLSTYLE3_TEXTALIGNLAST), propget, displaybind, bindable] HRESULT textAlignLast ([retval, out] BSTR *p);
    [id (DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE), propput, displaybind, bindable] HRESULT textKashidaSpace ([in] VARIANT v);
    [id (DISPID_IHTMLSTYLE3_TEXTKASHIDASPACE), propget, displaybind, bindable] HRESULT textKashidaSpace ([retval, out] VARIANT *p);
  };

  [odl, oleautomation, dual, uuid (3050f816-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLStyle4 : IDispatch {
    [id (DISPID_IHTMLSTYLE4_TEXTOVERFLOW), propput, displaybind, bindable] HRESULT textOverflow ([in] BSTR v);
    [id (DISPID_IHTMLSTYLE4_TEXTOVERFLOW), propget, displaybind, bindable] HRESULT textOverflow ([retval, out] BSTR *p);
    [id (DISPID_IHTMLSTYLE4_MINHEIGHT), propput, displaybind, bindable] HRESULT minHeight ([in] VARIANT v);
    [id (DISPID_IHTMLSTYLE4_MINHEIGHT), propget, displaybind, bindable] HRESULT minHeight ([retval, out] VARIANT *p);
  };

  [odl, oleautomation, dual, uuid (3050f33a-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLStyle5 : IDispatch {
    [id (DISPID_IHTMLSTYLE5_MSINTERPOLATIONMODE), propput, displaybind, bindable] HRESULT msInterpolationMode ([in] BSTR v);
    [id (DISPID_IHTMLSTYLE5_MSINTERPOLATIONMODE), propget, displaybind, bindable] HRESULT msInterpolationMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE5_MAXHEIGHT), displaybind, bindable] HRESULT maxHeight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE5_MAXHEIGHT), displaybind, bindable] HRESULT maxHeight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE5_MINWIDTH), displaybind, bindable] HRESULT minWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE5_MINWIDTH), displaybind, bindable] HRESULT minWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE5_MAXWIDTH), displaybind, bindable] HRESULT maxWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE5_MAXWIDTH), displaybind, bindable] HRESULT maxWidth ([retval, out] VARIANT *p);
  };
  [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 ([retval, out] 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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_COUNTERRESET), displaybind, bindable] HRESULT counterReset ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_COUNTERRESET), displaybind, bindable] HRESULT counterReset ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_OUTLINE), displaybind, bindable] HRESULT outline ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_OUTLINE), displaybind, bindable] HRESULT outline ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_OUTLINEWIDTH), displaybind, bindable] HRESULT outlineWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE6_OUTLINEWIDTH), displaybind, bindable] HRESULT outlineWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE6_OUTLINESTYLE), displaybind, bindable] HRESULT outlineStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_OUTLINESTYLE), displaybind, bindable] HRESULT outlineStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_OUTLINECOLOR), displaybind, bindable] HRESULT outlineColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE6_OUTLINECOLOR), displaybind, bindable] HRESULT outlineColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE6_BOXSIZING), displaybind, bindable] HRESULT boxSizing ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_BOXSIZING), displaybind, bindable] HRESULT boxSizing ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_BORDERSPACING), displaybind, bindable] HRESULT borderSpacing ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_BORDERSPACING), displaybind, bindable] HRESULT borderSpacing ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_ORPHANS), displaybind, bindable] HRESULT orphans ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE6_ORPHANS), displaybind, bindable] HRESULT orphans ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE6_WIDOWS), displaybind, bindable] HRESULT widows ([in] VARIANT v);
    [propget, id (DISPID_IHTMLSTYLE6_WIDOWS), displaybind, bindable] HRESULT widows ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLSTYLE6_PAGEBREAKINSIDE), displaybind, bindable] HRESULT pageBreakInside ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_PAGEBREAKINSIDE), displaybind, bindable] HRESULT pageBreakInside ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_EMPTYCELLS), displaybind, bindable] HRESULT emptyCells ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_EMPTYCELLS), displaybind, bindable] HRESULT emptyCells ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_MSBLOCKPROGRESSION), displaybind, bindable] HRESULT msBlockProgression ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_MSBLOCKPROGRESSION), displaybind, bindable] HRESULT msBlockProgression ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSTYLE6_QUOTES), displaybind, bindable] HRESULT quotes ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLE6_QUOTES), displaybind, bindable] HRESULT quotes ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (3050f3cf-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLRuleStyle : IDispatch {
    [propput, id (DISPID_IHTMLRULESTYLE_FONTFAMILY), displaybind, bindable] HRESULT fontFamily ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTFAMILY), displaybind, bindable] HRESULT fontFamily ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_FONTSTYLE), displaybind, bindable] HRESULT fontStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTSTYLE), displaybind, bindable] HRESULT fontStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_FONTVARIANT), displaybind, bindable] HRESULT fontVariant ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTVARIANT), displaybind, bindable] HRESULT fontVariant ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_FONTWEIGHT), displaybind, bindable] HRESULT fontWeight ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTWEIGHT), displaybind, bindable] HRESULT fontWeight ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_FONTSIZE), displaybind, bindable] HRESULT fontSize ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTSIZE), displaybind, bindable] HRESULT fontSize ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_FONT), displaybind, bindable, nonbrowsable] HRESULT font ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONT), displaybind, bindable, nonbrowsable] HRESULT font ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_COLOR), displaybind, bindable] HRESULT color ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_COLOR), displaybind, bindable] HRESULT color ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUND), displaybind, bindable, nonbrowsable] HRESULT background ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUND), displaybind, bindable, nonbrowsable] HRESULT background ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR), displaybind, bindable] HRESULT backgroundColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR), displaybind, bindable] HRESULT backgroundColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE), displaybind, bindable] HRESULT backgroundImage ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE), displaybind, bindable] HRESULT backgroundImage ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT), displaybind, bindable] HRESULT backgroundRepeat ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT), displaybind, bindable] HRESULT backgroundRepeat ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] HRESULT backgroundAttachment ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] HRESULT backgroundAttachment ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION), displaybind, bindable] HRESULT backgroundPosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION), displaybind, bindable] HRESULT backgroundPosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] HRESULT backgroundPositionX ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] HRESULT backgroundPositionX ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] HRESULT backgroundPositionY ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] HRESULT backgroundPositionY ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_WORDSPACING), displaybind, bindable] HRESULT wordSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_WORDSPACING), displaybind, bindable] HRESULT wordSpacing ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_LETTERSPACING), displaybind, bindable] HRESULT letterSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_LETTERSPACING), displaybind, bindable] HRESULT letterSpacing ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATION), displaybind, bindable] HRESULT textDecoration ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATION), displaybind, bindable] HRESULT textDecoration ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE), displaybind, bindable] HRESULT textDecorationNone ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE), displaybind, bindable] HRESULT textDecorationNone ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable] HRESULT textDecorationUnderline ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable] HRESULT textDecorationUnderline ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable] HRESULT textDecorationOverline ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable] HRESULT textDecorationOverline ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable] HRESULT textDecorationLineThrough ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable] HRESULT textDecorationLineThrough ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK), displaybind, bindable] HRESULT textDecorationBlink ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK), displaybind, bindable] HRESULT textDecorationBlink ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLRULESTYLE_VERTICALALIGN), displaybind, bindable] HRESULT verticalAlign ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_VERTICALALIGN), displaybind, bindable] HRESULT verticalAlign ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTTRANSFORM), displaybind, bindable] HRESULT textTransform ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTTRANSFORM), displaybind, bindable] HRESULT textTransform ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTALIGN), displaybind, bindable] HRESULT textAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTALIGN), displaybind, bindable] HRESULT textAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTINDENT), displaybind, bindable] HRESULT textIndent ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTINDENT), displaybind, bindable] HRESULT textIndent ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_LINEHEIGHT), displaybind, bindable] HRESULT lineHeight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_LINEHEIGHT), displaybind, bindable] HRESULT lineHeight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_MARGINTOP), displaybind, bindable] HRESULT marginTop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGINTOP), displaybind, bindable] HRESULT marginTop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_MARGINRIGHT), displaybind, bindable] HRESULT marginRight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGINRIGHT), displaybind, bindable] HRESULT marginRight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_MARGINBOTTOM), displaybind, bindable] HRESULT marginBottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGINBOTTOM), displaybind, bindable] HRESULT marginBottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_MARGINLEFT), displaybind, bindable] HRESULT marginLeft ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGINLEFT), displaybind, bindable] HRESULT marginLeft ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_MARGIN), displaybind, bindable, nonbrowsable] HRESULT margin ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGIN), displaybind, bindable, nonbrowsable] HRESULT margin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_PADDINGTOP), displaybind, bindable] HRESULT paddingTop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDINGTOP), displaybind, bindable] HRESULT paddingTop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_PADDINGRIGHT), displaybind, bindable] HRESULT paddingRight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDINGRIGHT), displaybind, bindable] HRESULT paddingRight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_PADDINGBOTTOM), displaybind, bindable] HRESULT paddingBottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDINGBOTTOM), displaybind, bindable] HRESULT paddingBottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_PADDINGLEFT), displaybind, bindable] HRESULT paddingLeft ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDINGLEFT), displaybind, bindable] HRESULT paddingLeft ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_PADDING), displaybind, bindable, nonbrowsable] HRESULT padding ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDING), displaybind, bindable, nonbrowsable] HRESULT padding ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDER), displaybind, bindable, nonbrowsable] HRESULT border ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDER), displaybind, bindable, nonbrowsable] HRESULT border ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERTOP), displaybind, bindable] HRESULT borderTop ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERTOP), displaybind, bindable] HRESULT borderTop ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERRIGHT), displaybind, bindable] HRESULT borderRight ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERRIGHT), displaybind, bindable] HRESULT borderRight ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOM), displaybind, bindable] HRESULT borderBottom ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOM), displaybind, bindable] HRESULT borderBottom ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERLEFT), displaybind, bindable] HRESULT borderLeft ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERLEFT), displaybind, bindable] HRESULT borderLeft ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERCOLOR), displaybind, bindable] HRESULT borderColor ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERCOLOR), displaybind, bindable] HRESULT borderColor ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR), displaybind, bindable] HRESULT borderTopColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR), displaybind, bindable] HRESULT borderTopColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR), displaybind, bindable] HRESULT borderRightColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR), displaybind, bindable] HRESULT borderRightColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] HRESULT borderBottomColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] HRESULT borderBottomColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR), displaybind, bindable] HRESULT borderLeftColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR), displaybind, bindable] HRESULT borderLeftColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERWIDTH), displaybind, bindable] HRESULT borderWidth ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERWIDTH), displaybind, bindable] HRESULT borderWidth ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH), displaybind, bindable] HRESULT borderTopWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH), displaybind, bindable] HRESULT borderTopWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH), displaybind, bindable] HRESULT borderRightWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH), displaybind, bindable] HRESULT borderRightWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] HRESULT borderBottomWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] HRESULT borderBottomWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH), displaybind, bindable] HRESULT borderLeftWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH), displaybind, bindable] HRESULT borderLeftWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERSTYLE), displaybind, bindable] HRESULT borderStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERSTYLE), displaybind, bindable] HRESULT borderStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE), displaybind, bindable] HRESULT borderTopStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE), displaybind, bindable] HRESULT borderTopStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE), displaybind, bindable] HRESULT borderRightStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE), displaybind, bindable] HRESULT borderRightStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] HRESULT borderBottomStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] HRESULT borderBottomStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE), displaybind, bindable] HRESULT borderLeftStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE), displaybind, bindable] HRESULT borderLeftStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_WIDTH), displaybind, bindable] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_WIDTH), displaybind, bindable] HRESULT width ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_HEIGHT), displaybind, bindable] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_HEIGHT), displaybind, bindable] HRESULT height ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_STYLEFLOAT), displaybind, bindable] HRESULT styleFloat ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_STYLEFLOAT), displaybind, bindable] HRESULT styleFloat ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_CLEAR), displaybind, bindable] HRESULT clear ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_CLEAR), displaybind, bindable] HRESULT clear ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_DISPLAY), displaybind, bindable] HRESULT display ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_DISPLAY), displaybind, bindable] HRESULT display ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_VISIBILITY), displaybind, bindable] HRESULT visibility ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_VISIBILITY), displaybind, bindable] HRESULT visibility ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_LISTSTYLETYPE), displaybind, bindable] HRESULT listStyleType ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_LISTSTYLETYPE), displaybind, bindable] HRESULT listStyleType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION), displaybind, bindable] HRESULT listStylePosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION), displaybind, bindable] HRESULT listStylePosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE), displaybind, bindable] HRESULT listStyleImage ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE), displaybind, bindable] HRESULT listStyleImage ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable] HRESULT listStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable] HRESULT listStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_WHITESPACE), displaybind, bindable] HRESULT whiteSpace ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_WHITESPACE), displaybind, bindable] HRESULT whiteSpace ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_TOP), displaybind, bindable] HRESULT top ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_TOP), displaybind, bindable] HRESULT top ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_LEFT), displaybind, bindable] HRESULT left ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_LEFT), displaybind, bindable] HRESULT left ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLRULESTYLE_POSITION), displaybind, bindable] HRESULT position ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_ZINDEX), displaybind, bindable] HRESULT zIndex ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_ZINDEX), displaybind, bindable] HRESULT zIndex ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE_OVERFLOW), displaybind, bindable] HRESULT overflow ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_OVERFLOW), displaybind, bindable] HRESULT overflow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE), displaybind, bindable] HRESULT pageBreakBefore ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE), displaybind, bindable] HRESULT pageBreakBefore ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER), displaybind, bindable] HRESULT pageBreakAfter ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER), displaybind, bindable] HRESULT pageBreakAfter ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_CSSTEXT), displaybind, bindable, nonbrowsable] HRESULT cssText ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_CSSTEXT), displaybind, bindable, nonbrowsable] HRESULT cssText ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_CURSOR), displaybind, bindable] HRESULT cursor ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_CURSOR), displaybind, bindable] HRESULT cursor ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_CLIP), displaybind, bindable] HRESULT clip ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_CLIP), displaybind, bindable] HRESULT clip ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE_FILTER), displaybind, bindable] HRESULT filter ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FILTER), displaybind, bindable] 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,[defaultvalue (0), retval, out] VARIANT *AttributeValue);
    [id (DISPID_IHTMLRULESTYLE_REMOVEATTRIBUTE)] HRESULT removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags,[defaultvalue (0), retval, out] VARIANT_BOOL *pfSuccess);
  };

  [odl, oleautomation, dual, uuid (3050f4ac-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLRuleStyle2 : IDispatch {
    [id (DISPID_IHTMLRULESTYLE2_TABLELAYOUT), propput, displaybind, bindable] HRESULT tableLayout ([in] BSTR v);
    [id (DISPID_IHTMLRULESTYLE2_TABLELAYOUT), propget, displaybind, bindable] HRESULT tableLayout ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_BORDERCOLLAPSE), displaybind, bindable] HRESULT borderCollapse ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_BORDERCOLLAPSE), displaybind, bindable] HRESULT borderCollapse ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_DIRECTION), displaybind, bindable] HRESULT direction ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_DIRECTION), displaybind, bindable] HRESULT direction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_BEHAVIOR), displaybind, bindable] HRESULT behavior ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_BEHAVIOR), displaybind, bindable] HRESULT behavior ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_POSITION), displaybind, bindable] HRESULT position ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_POSITION), displaybind, bindable] HRESULT position ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_UNICODEBIDI), displaybind, bindable] HRESULT unicodeBidi ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_UNICODEBIDI), displaybind, bindable] HRESULT unicodeBidi ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_BOTTOM), displaybind, bindable] HRESULT bottom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_BOTTOM), displaybind, bindable] HRESULT bottom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_RIGHT), displaybind, bindable] HRESULT right ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_RIGHT), displaybind, bindable] HRESULT right ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_PIXELBOTTOM), displaybind, bindable, hidden] HRESULT pixelBottom ([in] long v);
    [propget, id (DISPID_IHTMLRULESTYLE2_PIXELBOTTOM), displaybind, bindable, hidden] HRESULT pixelBottom ([retval, out] long *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_PIXELRIGHT), displaybind, bindable, hidden] HRESULT pixelRight ([in] long v);
    [propget, id (DISPID_IHTMLRULESTYLE2_PIXELRIGHT), displaybind, bindable, hidden] HRESULT pixelRight ([retval, out] long *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_POSBOTTOM), displaybind, bindable] HRESULT posBottom ([in] float v);
    [propget, id (DISPID_IHTMLRULESTYLE2_POSBOTTOM), displaybind, bindable] HRESULT posBottom ([retval, out] float *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_POSRIGHT), displaybind, bindable] HRESULT posRight ([in] float v);
    [propget, id (DISPID_IHTMLRULESTYLE2_POSRIGHT), displaybind, bindable] HRESULT posRight ([retval, out] float *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_IMEMODE), displaybind, bindable] HRESULT imeMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_IMEMODE), displaybind, bindable] HRESULT imeMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_RUBYALIGN), displaybind, bindable] HRESULT rubyAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_RUBYALIGN), displaybind, bindable] HRESULT rubyAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_RUBYPOSITION), displaybind, bindable] HRESULT rubyPosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_RUBYPOSITION), displaybind, bindable] HRESULT rubyPosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_RUBYOVERHANG), displaybind, bindable] HRESULT rubyOverhang ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_RUBYOVERHANG), displaybind, bindable] HRESULT rubyOverhang ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDCHAR), displaybind, bindable] HRESULT layoutGridChar ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDCHAR), displaybind, bindable] HRESULT layoutGridChar ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDLINE), displaybind, bindable] HRESULT layoutGridLine ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDLINE), displaybind, bindable] HRESULT layoutGridLine ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDMODE), displaybind, bindable] HRESULT layoutGridMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDMODE), displaybind, bindable] HRESULT layoutGridMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDTYPE), displaybind, bindable] HRESULT layoutGridType ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDTYPE), displaybind, bindable] HRESULT layoutGridType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable] HRESULT layoutGrid ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable] HRESULT layoutGrid ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_TEXTAUTOSPACE), displaybind, bindable] HRESULT textAutospace ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TEXTAUTOSPACE), displaybind, bindable] HRESULT textAutospace ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_WORDBREAK), displaybind, bindable] HRESULT wordBreak ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_WORDBREAK), displaybind, bindable] HRESULT wordBreak ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_LINEBREAK), displaybind, bindable] HRESULT lineBreak ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LINEBREAK), displaybind, bindable] HRESULT lineBreak ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_TEXTJUSTIFY), displaybind, bindable] HRESULT textJustify ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TEXTJUSTIFY), displaybind, bindable] HRESULT textJustify ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable] HRESULT textJustifyTrim ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable] HRESULT textJustifyTrim ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_TEXTKASHIDA), displaybind, bindable] HRESULT textKashida ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TEXTKASHIDA), displaybind, bindable] HRESULT textKashida ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_OVERFLOWX), displaybind, bindable] HRESULT overflowX ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_OVERFLOWX), displaybind, bindable] HRESULT overflowX ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_OVERFLOWY), displaybind, bindable] HRESULT overflowY ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_OVERFLOWY), displaybind, bindable] HRESULT overflowY ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE2_ACCELERATOR), displaybind, bindable] HRESULT accelerator ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_ACCELERATOR), displaybind, bindable] HRESULT accelerator ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f657-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLRuleStyle3 : IDispatch {
    [propput, id (DISPID_IHTMLRULESTYLE3_LAYOUTFLOW), displaybind, bindable] HRESULT layoutFlow ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_LAYOUTFLOW), displaybind, bindable] HRESULT layoutFlow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_ZOOM), displaybind, bindable] HRESULT zoom ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_ZOOM), displaybind, bindable] HRESULT zoom ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_WORDWRAP), displaybind, bindable] HRESULT wordWrap ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_WORDWRAP), displaybind, bindable] HRESULT wordWrap ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable] HRESULT textUnderlinePosition ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable] HRESULT textUnderlinePosition ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARBASECOLOR), displaybind, bindable] HRESULT scrollbarBaseColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARBASECOLOR), displaybind, bindable] HRESULT scrollbarBaseColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARFACECOLOR), displaybind, bindable] HRESULT scrollbarFaceColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARFACECOLOR), displaybind, bindable] HRESULT scrollbarFaceColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] HRESULT scrollbar3dLightColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] HRESULT scrollbar3dLightColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarShadowColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarShadowColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] HRESULT scrollbarHighlightColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] HRESULT scrollbarHighlightColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarDarkShadowColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] HRESULT scrollbarDarkShadowColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable] HRESULT scrollbarArrowColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable] HRESULT scrollbarArrowColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable] HRESULT scrollbarTrackColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable] HRESULT scrollbarTrackColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_WRITINGMODE), displaybind, bindable] HRESULT writingMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_WRITINGMODE), displaybind, bindable] HRESULT writingMode ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_TEXTALIGNLAST), displaybind, bindable] HRESULT textAlignLast ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_TEXTALIGNLAST), displaybind, bindable] HRESULT textAlignLast ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE3_TEXTKASHIDASPACE), displaybind, bindable] HRESULT textKashidaSpace ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_TEXTKASHIDASPACE), displaybind, bindable] HRESULT textKashidaSpace ([retval, out] VARIANT *p);
  };

  [odl, oleautomation, dual, uuid (3050f817-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLRuleStyle4 : IDispatch {
    [id (DISPID_IHTMLRULESTYLE4_TEXTOVERFLOW), propput, displaybind, bindable] HRESULT textOverflow ([in] BSTR v);
    [id (DISPID_IHTMLRULESTYLE4_TEXTOVERFLOW), propget, displaybind, bindable] HRESULT textOverflow ([retval, out] BSTR *p);
    [id (DISPID_IHTMLRULESTYLE4_MINHEIGHT), propput, displaybind, bindable] HRESULT minHeight ([in] VARIANT v);
    [id (DISPID_IHTMLRULESTYLE4_MINHEIGHT), propget, displaybind, bindable] HRESULT minHeight ([retval, out] VARIANT *p);
  };

  [odl, oleautomation, dual, uuid (3050f335-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLRuleStyle5 : IDispatch {
    [id (DISPID_IHTMLRULESTYLE5_MSINTERPOLATIONMODE), propput, displaybind, bindable] HRESULT msInterpolationMode ([in] BSTR v);
    [id (DISPID_IHTMLRULESTYLE5_MSINTERPOLATIONMODE), propget, displaybind, bindable] HRESULT msInterpolationMode ([retval, out] BSTR *p);
    [id (DISPID_IHTMLRULESTYLE5_MAXHEIGHT), propput, displaybind, bindable] HRESULT maxHeight ([in] VARIANT v);
    [id (DISPID_IHTMLRULESTYLE5_MAXHEIGHT), propget, displaybind, bindable] HRESULT maxHeight ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLRULESTYLE5_MINWIDTH), propput, displaybind, bindable] HRESULT minWidth ([in] VARIANT v);
    [id (DISPID_IHTMLRULESTYLE5_MINWIDTH), propget, displaybind, bindable] HRESULT minWidth ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLRULESTYLE5_MAXWIDTH), propput, displaybind, bindable] HRESULT maxWidth ([in] VARIANT v);
    [id (DISPID_IHTMLRULESTYLE5_MAXWIDTH), propget, displaybind, bindable] HRESULT maxWidth ([retval, out] VARIANT *p);
  };

  [odl, oleautomation, dual, uuid (30510471-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLRuleStyle6 : IDispatch {
    [propput, id (DISPID_IHTMLRULESTYLE6_CONTENT), displaybind, bindable] HRESULT content ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_CONTENT), displaybind, bindable] HRESULT content ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_CAPTIONSIDE), displaybind, bindable] HRESULT captionSide ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_CAPTIONSIDE), displaybind, bindable] HRESULT captionSide ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_COUNTERINCREMENT), displaybind, bindable] HRESULT counterIncrement ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_COUNTERINCREMENT), displaybind, bindable] HRESULT counterIncrement ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_COUNTERRESET), displaybind, bindable] HRESULT counterReset ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_COUNTERRESET), displaybind, bindable] HRESULT counterReset ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_OUTLINE), displaybind, bindable] HRESULT outline ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_OUTLINE), displaybind, bindable] HRESULT outline ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_OUTLINEWIDTH), displaybind, bindable] HRESULT outlineWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE6_OUTLINEWIDTH), displaybind, bindable] HRESULT outlineWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_OUTLINESTYLE), displaybind, bindable] HRESULT outlineStyle ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_OUTLINESTYLE), displaybind, bindable] HRESULT outlineStyle ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_OUTLINECOLOR), displaybind, bindable] HRESULT outlineColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE6_OUTLINECOLOR), displaybind, bindable] HRESULT outlineColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_BOXSIZING), displaybind, bindable] HRESULT boxSizing ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_BOXSIZING), displaybind, bindable] HRESULT boxSizing ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_BORDERSPACING), displaybind, bindable] HRESULT borderSpacing ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_BORDERSPACING), displaybind, bindable] HRESULT borderSpacing ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_ORPHANS), displaybind, bindable] HRESULT orphans ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE6_ORPHANS), displaybind, bindable] HRESULT orphans ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_WIDOWS), displaybind, bindable] HRESULT widows ([in] VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE6_WIDOWS), displaybind, bindable] HRESULT widows ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_PAGEBREAKINSIDE), displaybind, bindable] HRESULT pageBreakInside ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_PAGEBREAKINSIDE), displaybind, bindable] HRESULT pageBreakInside ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_EMPTYCELLS), displaybind, bindable] HRESULT emptyCells ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_EMPTYCELLS), displaybind, bindable] HRESULT emptyCells ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_MSBLOCKPROGRESSION), displaybind, bindable] HRESULT msBlockProgression ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_MSBLOCKPROGRESSION), displaybind, bindable] HRESULT msBlockProgression ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLRULESTYLE6_QUOTES), displaybind, bindable] HRESULT quotes ([in] BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_QUOTES), displaybind, bindable] HRESULT quotes ([retval, out] BSTR *p);
  };
  
  [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] void backgroundPosition (BSTR v);
    [propget, id (DISPID_IHTMLSTYLE_BACKGROUNDPOSITION), displaybind, bindable] 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,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLSTYLE_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLSTYLE_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] 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,[defaultvalue (L""), in] 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_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,[defaultvalue (NULL), in] VARIANT *pvarPropertyPriority);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_ITEM)] BSTR item ([in] long index);
    [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 ();
    [id (DISPID_IHTMLSTYLEENABLED_MSGETPROPERTYENABLED)] VARIANT_BOOL msGetPropertyEnabled ([in] BSTR name);
    [id (DISPID_IHTMLSTYLEENABLED_MSPUTPROPERTYENABLED)] void msPutPropertyEnabled ([in] BSTR name,[in] VARIANT_BOOL b);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  
  [noncreatable, uuid (3050f285-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLStyle {
    [default] dispinterface DispHTMLStyle;
    interface IHTMLStyle;
    interface IHTMLStyle2;
    interface IHTMLStyle3;
    interface IHTMLStyle4;
    interface IHTMLStyle5;
    interface IHTMLStyle6;
    interface IHTMLCSSStyleDeclaration;
    interface IHTMLCSSStyleDeclaration2;
    interface IHTMLStyleEnabled;
    interface IHTMLDOMConstructor;
  };
  
  [hidden, uuid (3050f55c-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLRuleStyle {
    properties:
    methods:
    [propput, id (DISPID_IHTMLRULESTYLE_FONTFAMILY), displaybind, bindable] void fontFamily (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTFAMILY), displaybind, bindable] BSTR fontFamily ();
    [propput, id (DISPID_IHTMLRULESTYLE_FONTSTYLE), displaybind, bindable] void fontStyle (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTSTYLE), displaybind, bindable] BSTR fontStyle ();
    [propput, id (DISPID_IHTMLRULESTYLE_FONTVARIANT), displaybind, bindable] void fontVariant (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTVARIANT), displaybind, bindable] BSTR fontVariant ();
    [propput, id (DISPID_IHTMLRULESTYLE_FONTWEIGHT), displaybind, bindable] void fontWeight (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTWEIGHT), displaybind, bindable] BSTR fontWeight ();
    [propput, id (DISPID_IHTMLRULESTYLE_FONTSIZE), displaybind, bindable] void fontSize (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONTSIZE), displaybind, bindable] VARIANT fontSize ();
    [propput, id (DISPID_IHTMLRULESTYLE_FONT), displaybind, bindable, nonbrowsable] void font (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FONT), displaybind, bindable, nonbrowsable] BSTR font ();
    [propput, id (DISPID_IHTMLRULESTYLE_COLOR), displaybind, bindable] void color (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_COLOR), displaybind, bindable] VARIANT color ();
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUND), displaybind, bindable, nonbrowsable] void background (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUND), displaybind, bindable, nonbrowsable] BSTR background ();
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR), displaybind, bindable] void backgroundColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDCOLOR), displaybind, bindable] VARIANT backgroundColor ();
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE), displaybind, bindable] void backgroundImage (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDIMAGE), displaybind, bindable] BSTR backgroundImage ();
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT), displaybind, bindable] void backgroundRepeat (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDREPEAT), displaybind, bindable] BSTR backgroundRepeat ();
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] void backgroundAttachment (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDATTACHMENT), displaybind, bindable] BSTR backgroundAttachment ();
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION), displaybind, bindable] void backgroundPosition (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITION), displaybind, bindable] BSTR backgroundPosition ();
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] void backgroundPositionX (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONX), displaybind, bindable] VARIANT backgroundPositionX ();
    [propput, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] void backgroundPositionY (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BACKGROUNDPOSITIONY), displaybind, bindable] VARIANT backgroundPositionY ();
    [propput, id (DISPID_IHTMLRULESTYLE_WORDSPACING), displaybind, bindable] void wordSpacing (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_WORDSPACING), displaybind, bindable] VARIANT wordSpacing ();
    [propput, id (DISPID_IHTMLRULESTYLE_LETTERSPACING), displaybind, bindable] void letterSpacing (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_LETTERSPACING), displaybind, bindable] VARIANT letterSpacing ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATION), displaybind, bindable] void textDecoration (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATION), displaybind, bindable] BSTR textDecoration ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE), displaybind, bindable] void textDecorationNone (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONNONE), displaybind, bindable] VARIANT_BOOL textDecorationNone ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable] void textDecorationUnderline (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONUNDERLINE), displaybind, bindable] VARIANT_BOOL textDecorationUnderline ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable] void textDecorationOverline (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONOVERLINE), displaybind, bindable] VARIANT_BOOL textDecorationOverline ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable] void textDecorationLineThrough (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONLINETHROUGH), displaybind, bindable] VARIANT_BOOL textDecorationLineThrough ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK), displaybind, bindable] void textDecorationBlink (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTDECORATIONBLINK), displaybind, bindable] VARIANT_BOOL textDecorationBlink ();
    [propput, id (DISPID_IHTMLRULESTYLE_VERTICALALIGN), displaybind, bindable] void verticalAlign (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_VERTICALALIGN), displaybind, bindable] VARIANT verticalAlign ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTTRANSFORM), displaybind, bindable] void textTransform (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTTRANSFORM), displaybind, bindable] BSTR textTransform ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTALIGN), displaybind, bindable] void textAlign (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTALIGN), displaybind, bindable] BSTR textAlign ();
    [propput, id (DISPID_IHTMLRULESTYLE_TEXTINDENT), displaybind, bindable] void textIndent (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_TEXTINDENT), displaybind, bindable] VARIANT textIndent ();
    [propput, id (DISPID_IHTMLRULESTYLE_LINEHEIGHT), displaybind, bindable] void lineHeight (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_LINEHEIGHT), displaybind, bindable] VARIANT lineHeight ();
    [propput, id (DISPID_IHTMLRULESTYLE_MARGINTOP), displaybind, bindable] void marginTop (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGINTOP), displaybind, bindable] VARIANT marginTop ();
    [propput, id (DISPID_IHTMLRULESTYLE_MARGINRIGHT), displaybind, bindable] void marginRight (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGINRIGHT), displaybind, bindable] VARIANT marginRight ();
    [propput, id (DISPID_IHTMLRULESTYLE_MARGINBOTTOM), displaybind, bindable] void marginBottom (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGINBOTTOM), displaybind, bindable] VARIANT marginBottom ();
    [propput, id (DISPID_IHTMLRULESTYLE_MARGINLEFT), displaybind, bindable] void marginLeft (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGINLEFT), displaybind, bindable] VARIANT marginLeft ();
    [propput, id (DISPID_IHTMLRULESTYLE_MARGIN), displaybind, bindable, nonbrowsable] void margin (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_MARGIN), displaybind, bindable, nonbrowsable] BSTR margin ();
    [propput, id (DISPID_IHTMLRULESTYLE_PADDINGTOP), displaybind, bindable] void paddingTop (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDINGTOP), displaybind, bindable] VARIANT paddingTop ();
    [propput, id (DISPID_IHTMLRULESTYLE_PADDINGRIGHT), displaybind, bindable] void paddingRight (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDINGRIGHT), displaybind, bindable] VARIANT paddingRight ();
    [propput, id (DISPID_IHTMLRULESTYLE_PADDINGBOTTOM), displaybind, bindable] void paddingBottom (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDINGBOTTOM), displaybind, bindable] VARIANT paddingBottom ();
    [propput, id (DISPID_IHTMLRULESTYLE_PADDINGLEFT), displaybind, bindable] void paddingLeft (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDINGLEFT), displaybind, bindable] VARIANT paddingLeft ();
    [propput, id (DISPID_IHTMLRULESTYLE_PADDING), displaybind, bindable, nonbrowsable] void padding (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_PADDING), displaybind, bindable, nonbrowsable] BSTR padding ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDER), displaybind, bindable, nonbrowsable] void border (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDER), displaybind, bindable, nonbrowsable] BSTR border ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERTOP), displaybind, bindable] void borderTop (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERTOP), displaybind, bindable] BSTR borderTop ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERRIGHT), displaybind, bindable] void borderRight (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERRIGHT), displaybind, bindable] BSTR borderRight ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOM), displaybind, bindable] void borderBottom (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOM), displaybind, bindable] BSTR borderBottom ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERLEFT), displaybind, bindable] void borderLeft (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERLEFT), displaybind, bindable] BSTR borderLeft ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERCOLOR), displaybind, bindable] void borderColor (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERCOLOR), displaybind, bindable] BSTR borderColor ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR), displaybind, bindable] void borderTopColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERTOPCOLOR), displaybind, bindable] VARIANT borderTopColor ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR), displaybind, bindable] void borderRightColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTCOLOR), displaybind, bindable] VARIANT borderRightColor ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] void borderBottomColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMCOLOR), displaybind, bindable] VARIANT borderBottomColor ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR), displaybind, bindable] void borderLeftColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERLEFTCOLOR), displaybind, bindable] VARIANT borderLeftColor ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERWIDTH), displaybind, bindable] void borderWidth (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERWIDTH), displaybind, bindable] BSTR borderWidth ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH), displaybind, bindable] void borderTopWidth (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERTOPWIDTH), displaybind, bindable] VARIANT borderTopWidth ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH), displaybind, bindable] void borderRightWidth (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTWIDTH), displaybind, bindable] VARIANT borderRightWidth ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] void borderBottomWidth (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMWIDTH), displaybind, bindable] VARIANT borderBottomWidth ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH), displaybind, bindable] void borderLeftWidth (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERLEFTWIDTH), displaybind, bindable] VARIANT borderLeftWidth ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERSTYLE), displaybind, bindable] void borderStyle (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERSTYLE), displaybind, bindable] BSTR borderStyle ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE), displaybind, bindable] void borderTopStyle (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERTOPSTYLE), displaybind, bindable] BSTR borderTopStyle ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE), displaybind, bindable] void borderRightStyle (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERRIGHTSTYLE), displaybind, bindable] BSTR borderRightStyle ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] void borderBottomStyle (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERBOTTOMSTYLE), displaybind, bindable] BSTR borderBottomStyle ();
    [propput, id (DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE), displaybind, bindable] void borderLeftStyle (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_BORDERLEFTSTYLE), displaybind, bindable] BSTR borderLeftStyle ();
    [propput, id (DISPID_IHTMLRULESTYLE_WIDTH), displaybind, bindable] void width (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_WIDTH), displaybind, bindable] VARIANT width ();
    [propput, id (DISPID_IHTMLRULESTYLE_HEIGHT), displaybind, bindable] void height (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_HEIGHT), displaybind, bindable] VARIANT height ();
    [propput, id (DISPID_IHTMLRULESTYLE_STYLEFLOAT), displaybind, bindable] void styleFloat (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_STYLEFLOAT), displaybind, bindable] BSTR styleFloat ();
    [propput, id (DISPID_IHTMLRULESTYLE_CLEAR), displaybind, bindable] void clear (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_CLEAR), displaybind, bindable] BSTR clear ();
    [propput, id (DISPID_IHTMLRULESTYLE_DISPLAY), displaybind, bindable] void display (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_DISPLAY), displaybind, bindable] BSTR display ();
    [propput, id (DISPID_IHTMLRULESTYLE_VISIBILITY), displaybind, bindable] void visibility (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_VISIBILITY), displaybind, bindable] BSTR visibility ();
    [propput, id (DISPID_IHTMLRULESTYLE_LISTSTYLETYPE), displaybind, bindable] void listStyleType (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_LISTSTYLETYPE), displaybind, bindable] BSTR listStyleType ();
    [propput, id (DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION), displaybind, bindable] void listStylePosition (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_LISTSTYLEPOSITION), displaybind, bindable] BSTR listStylePosition ();
    [propput, id (DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE), displaybind, bindable] void listStyleImage (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_LISTSTYLEIMAGE), displaybind, bindable] BSTR listStyleImage ();
    [propput, id (DISPID_IHTMLRULESTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable] void listStyle (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_LISTSTYLE), displaybind, bindable, nonbrowsable] BSTR listStyle ();
    [propput, id (DISPID_IHTMLRULESTYLE_WHITESPACE), displaybind, bindable] void whiteSpace (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_WHITESPACE), displaybind, bindable] BSTR whiteSpace ();
    [propput, id (DISPID_IHTMLRULESTYLE_TOP), displaybind, bindable] void top (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_TOP), displaybind, bindable] VARIANT top ();
    [propput, id (DISPID_IHTMLRULESTYLE_LEFT), displaybind, bindable] void left (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_LEFT), displaybind, bindable] VARIANT left ();
    [propput, id (DISPID_IHTMLRULESTYLE_ZINDEX), displaybind, bindable] void zIndex (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE_ZINDEX), displaybind, bindable] VARIANT zIndex ();
    [propput, id (DISPID_IHTMLRULESTYLE_OVERFLOW), displaybind, bindable] void overflow (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_OVERFLOW), displaybind, bindable] BSTR overflow ();
    [propput, id (DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE), displaybind, bindable] void pageBreakBefore (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_PAGEBREAKBEFORE), displaybind, bindable] BSTR pageBreakBefore ();
    [propput, id (DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER), displaybind, bindable] void pageBreakAfter (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_PAGEBREAKAFTER), displaybind, bindable] BSTR pageBreakAfter ();
    [propput, id (DISPID_IHTMLRULESTYLE_CSSTEXT), displaybind, bindable, nonbrowsable] void cssText (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_CSSTEXT), displaybind, bindable, nonbrowsable] BSTR cssText ();
    [propput, id (DISPID_IHTMLRULESTYLE_CURSOR), displaybind, bindable] void cursor (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_CURSOR), displaybind, bindable] BSTR cursor ();
    [propput, id (DISPID_IHTMLRULESTYLE_CLIP), displaybind, bindable] void clip (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_CLIP), displaybind, bindable] BSTR clip ();
    [propput, id (DISPID_IHTMLRULESTYLE_FILTER), displaybind, bindable] void filter (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE_FILTER), displaybind, bindable] BSTR filter ();
    [id (DISPID_IHTMLRULESTYLE_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLRULESTYLE_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLRULESTYLE_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags);
    [propput, id (DISPID_IHTMLRULESTYLE2_TABLELAYOUT), displaybind, bindable] void tableLayout (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TABLELAYOUT), displaybind, bindable] BSTR tableLayout ();
    [propput, id (DISPID_IHTMLRULESTYLE2_BORDERCOLLAPSE), displaybind, bindable] void borderCollapse (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_BORDERCOLLAPSE), displaybind, bindable] BSTR borderCollapse ();
    [propput, id (DISPID_IHTMLRULESTYLE2_DIRECTION), displaybind, bindable] void direction (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_DIRECTION), displaybind, bindable] BSTR direction ();
    [propput, id (DISPID_IHTMLRULESTYLE2_BEHAVIOR), displaybind, bindable] void behavior (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_BEHAVIOR), displaybind, bindable] BSTR behavior ();
    [propput, id (DISPID_IHTMLRULESTYLE2_POSITION), displaybind, bindable] void position (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_POSITION), displaybind, bindable] BSTR position ();
    [propput, id (DISPID_IHTMLRULESTYLE2_UNICODEBIDI), displaybind, bindable] void unicodeBidi (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_UNICODEBIDI), displaybind, bindable] BSTR unicodeBidi ();
    [propput, id (DISPID_IHTMLRULESTYLE2_BOTTOM), displaybind, bindable] void bottom (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_BOTTOM), displaybind, bindable] VARIANT bottom ();
    [propput, id (DISPID_IHTMLRULESTYLE2_RIGHT), displaybind, bindable] void right (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_RIGHT), displaybind, bindable] VARIANT right ();
    [propput, id (DISPID_IHTMLRULESTYLE2_PIXELBOTTOM), displaybind, bindable, hidden] void pixelBottom (long v);
    [propget, id (DISPID_IHTMLRULESTYLE2_PIXELBOTTOM), displaybind, bindable, hidden] long pixelBottom ();
    [propput, id (DISPID_IHTMLRULESTYLE2_PIXELRIGHT), displaybind, bindable, hidden] void pixelRight (long v);
    [propget, id (DISPID_IHTMLRULESTYLE2_PIXELRIGHT), displaybind, bindable, hidden] long pixelRight ();
    [propput, id (DISPID_IHTMLRULESTYLE2_POSBOTTOM), displaybind, bindable] void posBottom (float v);
    [propget, id (DISPID_IHTMLRULESTYLE2_POSBOTTOM), displaybind, bindable] float posBottom ();
    [propput, id (DISPID_IHTMLRULESTYLE2_POSRIGHT), displaybind, bindable] void posRight (float v);
    [propget, id (DISPID_IHTMLRULESTYLE2_POSRIGHT), displaybind, bindable] float posRight ();
    [propput, id (DISPID_IHTMLRULESTYLE2_IMEMODE), displaybind, bindable] void imeMode (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_IMEMODE), displaybind, bindable] BSTR imeMode ();
    [propput, id (DISPID_IHTMLRULESTYLE2_RUBYALIGN), displaybind, bindable] void rubyAlign (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_RUBYALIGN), displaybind, bindable] BSTR rubyAlign ();
    [propput, id (DISPID_IHTMLRULESTYLE2_RUBYPOSITION), displaybind, bindable] void rubyPosition (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_RUBYPOSITION), displaybind, bindable] BSTR rubyPosition ();
    [propput, id (DISPID_IHTMLRULESTYLE2_RUBYOVERHANG), displaybind, bindable] void rubyOverhang (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_RUBYOVERHANG), displaybind, bindable] BSTR rubyOverhang ();
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDCHAR), displaybind, bindable] void layoutGridChar (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDCHAR), displaybind, bindable] VARIANT layoutGridChar ();
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDLINE), displaybind, bindable] void layoutGridLine (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDLINE), displaybind, bindable] VARIANT layoutGridLine ();
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDMODE), displaybind, bindable] void layoutGridMode (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDMODE), displaybind, bindable] BSTR layoutGridMode ();
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDTYPE), displaybind, bindable] void layoutGridType (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRIDTYPE), displaybind, bindable] BSTR layoutGridType ();
    [propput, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable] void layoutGrid (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LAYOUTGRID), displaybind, bindable, nonbrowsable] BSTR layoutGrid ();
    [propput, id (DISPID_IHTMLRULESTYLE2_TEXTAUTOSPACE), displaybind, bindable] void textAutospace (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TEXTAUTOSPACE), displaybind, bindable] BSTR textAutospace ();
    [propput, id (DISPID_IHTMLRULESTYLE2_WORDBREAK), displaybind, bindable] void wordBreak (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_WORDBREAK), displaybind, bindable] BSTR wordBreak ();
    [propput, id (DISPID_IHTMLRULESTYLE2_LINEBREAK), displaybind, bindable] void lineBreak (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_LINEBREAK), displaybind, bindable] BSTR lineBreak ();
    [propput, id (DISPID_IHTMLRULESTYLE2_TEXTJUSTIFY), displaybind, bindable] void textJustify (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TEXTJUSTIFY), displaybind, bindable] BSTR textJustify ();
    [propput, id (DISPID_IHTMLRULESTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable] void textJustifyTrim (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TEXTJUSTIFYTRIM), displaybind, bindable] BSTR textJustifyTrim ();
    [propput, id (DISPID_IHTMLRULESTYLE2_TEXTKASHIDA), displaybind, bindable] void textKashida (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE2_TEXTKASHIDA), displaybind, bindable] VARIANT textKashida ();
    [propput, id (DISPID_IHTMLRULESTYLE2_OVERFLOWX), displaybind, bindable] void overflowX (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_OVERFLOWX), displaybind, bindable] BSTR overflowX ();
    [propput, id (DISPID_IHTMLRULESTYLE2_OVERFLOWY), displaybind, bindable] void overflowY (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_OVERFLOWY), displaybind, bindable] BSTR overflowY ();
    [propput, id (DISPID_IHTMLRULESTYLE2_ACCELERATOR), displaybind, bindable] void accelerator (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE2_ACCELERATOR), displaybind, bindable] BSTR accelerator ();
    [propput, id (DISPID_IHTMLRULESTYLE3_LAYOUTFLOW), displaybind, bindable] void layoutFlow (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_LAYOUTFLOW), displaybind, bindable] BSTR layoutFlow ();
    [propput, id (DISPID_IHTMLRULESTYLE3_ZOOM), displaybind, bindable] void zoom (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_ZOOM), displaybind, bindable] VARIANT zoom ();
    [propput, id (DISPID_IHTMLRULESTYLE3_WORDWRAP), displaybind, bindable] void wordWrap (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_WORDWRAP), displaybind, bindable] BSTR wordWrap ();
    [propput, id (DISPID_IHTMLRULESTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable] void textUnderlinePosition (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_TEXTUNDERLINEPOSITION), displaybind, bindable] BSTR textUnderlinePosition ();
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARBASECOLOR), displaybind, bindable] void scrollbarBaseColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARBASECOLOR), displaybind, bindable] VARIANT scrollbarBaseColor ();
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARFACECOLOR), displaybind, bindable] void scrollbarFaceColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARFACECOLOR), displaybind, bindable] VARIANT scrollbarFaceColor ();
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] void scrollbar3dLightColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBAR3DLIGHTCOLOR), displaybind, bindable] VARIANT scrollbar3dLightColor ();
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable] void scrollbarShadowColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARSHADOWCOLOR), displaybind, bindable] VARIANT scrollbarShadowColor ();
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] void scrollbarHighlightColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARHIGHLIGHTCOLOR), displaybind, bindable] VARIANT scrollbarHighlightColor ();
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] void scrollbarDarkShadowColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARDARKSHADOWCOLOR), displaybind, bindable] VARIANT scrollbarDarkShadowColor ();
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable] void scrollbarArrowColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARARROWCOLOR), displaybind, bindable] VARIANT scrollbarArrowColor ();
    [propput, id (DISPID_IHTMLRULESTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable] void scrollbarTrackColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_SCROLLBARTRACKCOLOR), displaybind, bindable] VARIANT scrollbarTrackColor ();
    [propput, id (DISPID_IHTMLRULESTYLE3_WRITINGMODE), displaybind, bindable] void writingMode (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_WRITINGMODE), displaybind, bindable] BSTR writingMode ();
    [propput, id (DISPID_IHTMLRULESTYLE3_TEXTALIGNLAST), displaybind, bindable] void textAlignLast (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE3_TEXTALIGNLAST), displaybind, bindable] BSTR textAlignLast ();
    [propput, id (DISPID_IHTMLRULESTYLE3_TEXTKASHIDASPACE), displaybind, bindable] void textKashidaSpace (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE3_TEXTKASHIDASPACE), displaybind, bindable] VARIANT textKashidaSpace ();
    [propput, id (DISPID_IHTMLRULESTYLE4_TEXTOVERFLOW), displaybind, bindable] void textOverflow (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE4_TEXTOVERFLOW), displaybind, bindable] BSTR textOverflow ();
    [propput, id (DISPID_IHTMLRULESTYLE4_MINHEIGHT), displaybind, bindable] void minHeight (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE4_MINHEIGHT), displaybind, bindable] VARIANT minHeight ();
    [propput, id (DISPID_IHTMLRULESTYLE5_MSINTERPOLATIONMODE), displaybind, bindable] void msInterpolationMode (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE5_MSINTERPOLATIONMODE), displaybind, bindable] BSTR msInterpolationMode ();
    [propput, id (DISPID_IHTMLRULESTYLE5_MAXHEIGHT), displaybind, bindable] void maxHeight (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE5_MAXHEIGHT), displaybind, bindable] VARIANT maxHeight ();
    [propput, id (DISPID_IHTMLRULESTYLE5_MINWIDTH), displaybind, bindable] void minWidth (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE5_MINWIDTH), displaybind, bindable] VARIANT minWidth ();
    [propput, id (DISPID_IHTMLRULESTYLE5_MAXWIDTH), displaybind, bindable] void maxWidth (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE5_MAXWIDTH), displaybind, bindable] VARIANT maxWidth ();
    [propput, id (DISPID_IHTMLRULESTYLE6_CONTENT), displaybind, bindable] void content (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_CONTENT), displaybind, bindable] BSTR content ();
    [propput, id (DISPID_IHTMLRULESTYLE6_CAPTIONSIDE), displaybind, bindable] void captionSide (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_CAPTIONSIDE), displaybind, bindable] BSTR captionSide ();
    [propput, id (DISPID_IHTMLRULESTYLE6_COUNTERINCREMENT), displaybind, bindable] void counterIncrement (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_COUNTERINCREMENT), displaybind, bindable] BSTR counterIncrement ();
    [propput, id (DISPID_IHTMLRULESTYLE6_COUNTERRESET), displaybind, bindable] void counterReset (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_COUNTERRESET), displaybind, bindable] BSTR counterReset ();
    [propput, id (DISPID_IHTMLRULESTYLE6_OUTLINE), displaybind, bindable] void outline (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_OUTLINE), displaybind, bindable] BSTR outline ();
    [propput, id (DISPID_IHTMLRULESTYLE6_OUTLINEWIDTH), displaybind, bindable] void outlineWidth (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE6_OUTLINEWIDTH), displaybind, bindable] VARIANT outlineWidth ();
    [propput, id (DISPID_IHTMLRULESTYLE6_OUTLINESTYLE), displaybind, bindable] void outlineStyle (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_OUTLINESTYLE), displaybind, bindable] BSTR outlineStyle ();
    [propput, id (DISPID_IHTMLRULESTYLE6_OUTLINECOLOR), displaybind, bindable] void outlineColor (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE6_OUTLINECOLOR), displaybind, bindable] VARIANT outlineColor ();
    [propput, id (DISPID_IHTMLRULESTYLE6_BOXSIZING), displaybind, bindable] void boxSizing (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_BOXSIZING), displaybind, bindable] BSTR boxSizing ();
    [propput, id (DISPID_IHTMLRULESTYLE6_BORDERSPACING), displaybind, bindable] void borderSpacing (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_BORDERSPACING), displaybind, bindable] BSTR borderSpacing ();
    [propput, id (DISPID_IHTMLRULESTYLE6_ORPHANS), displaybind, bindable] void orphans (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE6_ORPHANS), displaybind, bindable] VARIANT orphans ();
    [propput, id (DISPID_IHTMLRULESTYLE6_WIDOWS), displaybind, bindable] void widows (VARIANT v);
    [propget, id (DISPID_IHTMLRULESTYLE6_WIDOWS), displaybind, bindable] VARIANT widows ();
    [propput, id (DISPID_IHTMLRULESTYLE6_PAGEBREAKINSIDE), displaybind, bindable] void pageBreakInside (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_PAGEBREAKINSIDE), displaybind, bindable] BSTR pageBreakInside ();
    [propput, id (DISPID_IHTMLRULESTYLE6_EMPTYCELLS), displaybind, bindable] void emptyCells (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_EMPTYCELLS), displaybind, bindable] BSTR emptyCells ();
    [propput, id (DISPID_IHTMLRULESTYLE6_MSBLOCKPROGRESSION), displaybind, bindable] void msBlockProgression (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_MSBLOCKPROGRESSION), displaybind, bindable] BSTR msBlockProgression ();
    [propput, id (DISPID_IHTMLRULESTYLE6_QUOTES), displaybind, bindable] void quotes (BSTR v);
    [propget, id (DISPID_IHTMLRULESTYLE6_QUOTES), displaybind, bindable] BSTR quotes ();
    [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,[defaultvalue (NULL), in] VARIANT *pvarPropertyPriority);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_ITEM)] BSTR item ([in] long index);
    [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 ();
    [id (DISPID_IHTMLSTYLEENABLED_MSGETPROPERTYENABLED)] VARIANT_BOOL msGetPropertyEnabled ([in] BSTR name);
    [id (DISPID_IHTMLSTYLEENABLED_MSPUTPROPERTYENABLED)] void msPutPropertyEnabled ([in] BSTR name,[in] VARIANT_BOOL b);
    [id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), propget, hidden] IDispatch *constructor ();
  };

  [noncreatable, uuid (3050f3d0-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLRuleStyle {
    [default] dispinterface DispHTMLRuleStyle;
    interface IHTMLRuleStyle;
    interface IHTMLRuleStyle2;
    interface IHTMLRuleStyle3;
    interface IHTMLRuleStyle4;
    interface IHTMLRuleStyle5;
    interface IHTMLRuleStyle6;
    interface IHTMLCSSStyleDeclaration;
    interface IHTMLCSSStyleDeclaration2;
    interface IHTMLStyleEnabled;
    interface IHTMLDOMConstructor;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CRuleStyle;")
  cpp_quote("EXTERN_C const GUID CLSID_CCSSRule;")
  cpp_quote("EXTERN_C const GUID CLSID_CCSSImportRule;")
  cpp_quote("EXTERN_C const GUID CLSID_CCSSMediaRule;")
  cpp_quote("EXTERN_C const GUID CLSID_CCSSNamespaceRule;")
  cpp_quote("EXTERN_C const GUID CLSID_CCSSMediaList;")
  cpp_quote("EXTERN_C const GUID CLSID_CMSCSSKeyframeRule;")
  cpp_quote("EXTERN_C const GUID CLSID_CMSCSSKeyframesRule;")

  interface IHTMLStyleSheetRulesCollection;
  interface IHTMLStyleSheet;
  interface IHTMLRuleStyle;

  typedef enum _styleViewportSize {
    styleViewportSizeAuto = 0,
    styleViewportSizeDeviceWidth = 1,
    styleViewportSizeDeviceHeight = 2,
    styleViewportSize_Max = 0x7FFFFFFF
  } styleViewportSize;

  typedef enum _styleUserZoom {
    styleUserZoomNotSet = 0,
    styleUserZoomZoom = 1,
    styleUserZoomFixed = 2,
    styleUserZoom_Max = 0x7FFFFFFF
  } styleUserZoom;

  [odl, oleautomation, dual, uuid (305106e9-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLCSSRule : IDispatch {
    [id (DISPID_IHTMLCSSRULE_TYPE), propget] HRESULT type ([retval, out] USHORT *p);
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propput] HRESULT cssText ([in] BSTR v);
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propget] HRESULT cssText ([retval, out] BSTR *p);
    [id (DISPID_IHTMLCSSRULE_PARENTRULE), propget] HRESULT parentRule ([retval, out] IHTMLCSSRule **p);
    [id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET), propget] HRESULT parentStyleSheet ([retval, out] IHTMLStyleSheet **p);
  };

  [odl, oleautomation, dual, uuid (305106ea-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLCSSImportRule : IDispatch {
    [id (DISPID_IHTMLCSSIMPORTRULE_HREF), propget] HRESULT href ([retval, out] BSTR *p);
    [id (DISPID_IHTMLCSSIMPORTRULE_MEDIA), propput] HRESULT media ([in] VARIANT v);
    [id (DISPID_IHTMLCSSIMPORTRULE_MEDIA), propget] HRESULT media ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLCSSIMPORTRULE_STYLESHEET), propget] HRESULT styleSheet ([retval, out] IHTMLStyleSheet **p);
  };

  [odl, oleautomation, dual, uuid (305106eb-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLCSSMediaRule : IDispatch {
    [id (DISPID_IHTMLCSSMEDIARULE_MEDIA), propput] HRESULT media ([in] VARIANT v);
    [id (DISPID_IHTMLCSSMEDIARULE_MEDIA), propget] HRESULT media ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLCSSMEDIARULE_CSSRULES), propget] HRESULT cssRules ([retval, out] IHTMLStyleSheetRulesCollection **p);
    [id (DISPID_IHTMLCSSMEDIARULE_INSERTRULE)] HRESULT insertRule ([in] BSTR bstrRule,[defaultvalue (-1), in] long lIndex,[defaultvalue (0), retval, out] long *plNewIndex);
    [id (DISPID_IHTMLCSSMEDIARULE_DELETERULE)] HRESULT deleteRule ([defaultvalue (-1), in] long lIndex);
  };
  
  [odl, oleautomation, dual, uuid (30510731-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLCSSMediaList : IDispatch {
    [id (DISPID_IHTMLCSSMEDIALIST_MEDIATEXT), propput] HRESULT mediaText ([in] BSTR v);
    [id (DISPID_IHTMLCSSMEDIALIST_MEDIATEXT), propget] HRESULT mediaText ([retval, out] BSTR *p);
    [id (DISPID_IHTMLCSSMEDIALIST_LENGTH), propget] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLCSSMEDIALIST_ITEM)] HRESULT item ([in] long index,[retval, out] BSTR *pbstrMedium);
    [id (DISPID_IHTMLCSSMEDIALIST_APPENDMEDIUM)] HRESULT appendMedium ([in] BSTR bstrMedium);
    [id (DISPID_IHTMLCSSMEDIALIST_DELETEMEDIUM)] HRESULT deleteMedium ([in] BSTR bstrMedium);
  };

  [odl, oleautomation, dual, uuid (305106ee-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLCSSNamespaceRule : IDispatch {
    [id (DISPID_IHTMLCSSNAMESPACERULE_NAMESPACEURI), propget] HRESULT namespaceURI ([retval, out] BSTR *p);
    [id (DISPID_IHTMLCSSNAMESPACERULE_PREFIX), propget] HRESULT prefix ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (3051080c-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLMSCSSKeyframeRule : IDispatch {
    [id (DISPID_IHTMLMSCSSKEYFRAMERULE_KEYTEXT), propput] HRESULT keyText ([in] BSTR v);
    [id (DISPID_IHTMLMSCSSKEYFRAMERULE_KEYTEXT), propget] HRESULT keyText ([retval, out] BSTR *p);
    [id (DISPID_IHTMLMSCSSKEYFRAMERULE_STYLE), propget, nonbrowsable] HRESULT style ([retval, out] IHTMLRuleStyle **p);
  };

  [odl, oleautomation, dual, uuid (3051080d-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLMSCSSKeyframesRule : IDispatch {
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_NAME), propput] HRESULT name ([in] BSTR v);
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_NAME), propget] HRESULT name ([retval, out] BSTR *p);
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_CSSRULES), propget] HRESULT cssRules ([retval, out] IHTMLStyleSheetRulesCollection **p);
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_APPENDRULE)] HRESULT appendRule ([in] BSTR bstrRule);
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_DELETERULE)] HRESULT deleteRule ([in] BSTR bstrKey);
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_FINDRULE)] HRESULT findRule ([in] BSTR bstrKey,[retval, out] IHTMLMSCSSKeyframeRule **ppMSKeyframeRule);
  };

  [hidden, uuid (3059007d-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLCSSRule {
    properties:
    methods:
    [id (DISPID_IHTMLCSSRULE_TYPE), propget] USHORT type ();
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propput] void cssText (BSTR v);
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propget] BSTR cssText ();
    [id (DISPID_IHTMLCSSRULE_PARENTRULE), propget] IHTMLCSSRule *parentRule ();
    [id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET), propget] IHTMLStyleSheet *parentStyleSheet ();
  };

  [noncreatable, uuid (305106ef-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLCSSRule {
    [default] dispinterface DispHTMLCSSRule;
    interface IHTMLCSSRule;
  };

  [hidden, uuid (3059007e-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLCSSImportRule {
    properties:
    methods:
    [id (DISPID_IHTMLCSSRULE_TYPE), propget] USHORT type ();
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propput] void cssText (BSTR v);
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propget] BSTR cssText ();
    [id (DISPID_IHTMLCSSRULE_PARENTRULE), propget] IHTMLCSSRule *parentRule ();
    [id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET), propget] IHTMLStyleSheet *parentStyleSheet ();
    [id (DISPID_IHTMLCSSIMPORTRULE_HREF), propget] BSTR href ();
    [id (DISPID_IHTMLCSSIMPORTRULE_MEDIA), propput] void media (VARIANT v);
    [id (DISPID_IHTMLCSSIMPORTRULE_MEDIA), propget] VARIANT media ();
    [id (DISPID_IHTMLCSSIMPORTRULE_STYLESHEET), propget] IHTMLStyleSheet *styleSheet ();
  };

  [noncreatable, uuid (305106f0-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLCSSImportRule {
    [default] dispinterface DispHTMLCSSImportRule;
    interface IHTMLCSSRule;
    interface IHTMLCSSImportRule;
  };

  [hidden, uuid (3059007f-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLCSSMediaRule {
    properties:
    methods:
    [id (DISPID_IHTMLCSSRULE_TYPE), propget] USHORT type ();
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propput] void cssText (BSTR v);
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propget] BSTR cssText ();
    [id (DISPID_IHTMLCSSRULE_PARENTRULE), propget] IHTMLCSSRule *parentRule ();
    [id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET), propget] IHTMLStyleSheet *parentStyleSheet ();
    [id (DISPID_IHTMLCSSMEDIARULE_MEDIA), propput] void media (VARIANT v);
    [id (DISPID_IHTMLCSSMEDIARULE_MEDIA), propget] VARIANT media ();
    [id (DISPID_IHTMLCSSMEDIARULE_CSSRULES), propget] IHTMLStyleSheetRulesCollection *cssRules ();
    [id (DISPID_IHTMLCSSMEDIARULE_INSERTRULE)] long insertRule ([in] BSTR bstrRule,[defaultvalue (-1), in] long lIndex);
    [id (DISPID_IHTMLCSSMEDIARULE_DELETERULE)] void deleteRule ([defaultvalue (-1), in] long lIndex);
  };

  [noncreatable, uuid (305106f1-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLCSSMediaRule {
    [default] dispinterface DispHTMLCSSMediaRule;
    interface IHTMLCSSRule;
    interface IHTMLCSSMediaRule;
  };

  [hidden, uuid (30590097-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLCSSMediaList {
    properties:
    methods:
    [id (DISPID_IHTMLCSSMEDIALIST_MEDIATEXT), propput] void mediaText (BSTR v);
    [id (DISPID_IHTMLCSSMEDIALIST_MEDIATEXT), propget] BSTR mediaText ();
    [id (DISPID_IHTMLCSSMEDIALIST_LENGTH), propget] long length ();
    [id (DISPID_IHTMLCSSMEDIALIST_ITEM)] BSTR item ([in] long index);
    [id (DISPID_IHTMLCSSMEDIALIST_APPENDMEDIUM)] void appendMedium ([in] BSTR bstrMedium);
    [id (DISPID_IHTMLCSSMEDIALIST_DELETEMEDIUM)] void deleteMedium ([in] BSTR bstrMedium);
  };

  [noncreatable, uuid (30510732-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLCSSMediaList {
    [default] dispinterface DispHTMLCSSMediaList;
    interface IHTMLCSSMediaList;
  };

  [hidden, uuid (30590080-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLCSSNamespaceRule {
    properties:
    methods:
    [id (DISPID_IHTMLCSSRULE_TYPE), propget] USHORT type ();
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propput] void cssText (BSTR v);
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propget] BSTR cssText ();
    [id (DISPID_IHTMLCSSRULE_PARENTRULE), propget] IHTMLCSSRule *parentRule ();
    [id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET), propget] IHTMLStyleSheet *parentStyleSheet ();
    [id (DISPID_IHTMLCSSNAMESPACERULE_NAMESPACEURI), propget] BSTR namespaceURI ();
    [id (DISPID_IHTMLCSSNAMESPACERULE_PREFIX), propget] BSTR prefix ();
  };

  [noncreatable, uuid (305106f2-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLCSSNamespaceRule {
    [default] dispinterface DispHTMLCSSNamespaceRule;
    interface IHTMLCSSRule;
    interface IHTMLCSSNamespaceRule;
  };

  [hidden, uuid (305900de-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLMSCSSKeyframeRule {
    properties:
    methods:
    [id (DISPID_IHTMLCSSRULE_TYPE), propget] USHORT type ();
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propput] void cssText (BSTR v);
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propget] BSTR cssText ();
    [id (DISPID_IHTMLCSSRULE_PARENTRULE), propget] IHTMLCSSRule *parentRule ();
    [id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET), propget] IHTMLStyleSheet *parentStyleSheet ();
    [id (DISPID_IHTMLMSCSSKEYFRAMERULE_KEYTEXT), propput] void keyText (BSTR v);
    [id (DISPID_IHTMLMSCSSKEYFRAMERULE_KEYTEXT), propget] BSTR keyText ();
    [id (DISPID_IHTMLMSCSSKEYFRAMERULE_STYLE), propget, nonbrowsable] IHTMLRuleStyle *style ();
  };

  [noncreatable, uuid (3051080e-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLMSCSSKeyframeRule {
    [default] dispinterface DispHTMLMSCSSKeyframeRule;
    interface IHTMLCSSRule;
    interface IHTMLMSCSSKeyframeRule;
  };

  [hidden, uuid (305900df-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLMSCSSKeyframesRule {
    properties:
    methods:
    [id (DISPID_IHTMLCSSRULE_TYPE), propget] USHORT type ();
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propput] void cssText (BSTR v);
    [id (DISPID_IHTMLCSSRULE_CSSTEXT), propget] BSTR cssText ();
    [id (DISPID_IHTMLCSSRULE_PARENTRULE), propget] IHTMLCSSRule *parentRule ();
    [id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET), propget] IHTMLStyleSheet *parentStyleSheet ();
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_NAME), propput] void name (BSTR v);
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_NAME), propget] BSTR name ();
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_CSSRULES), propget] IHTMLStyleSheetRulesCollection *cssRules ();
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_APPENDRULE)] void appendRule ([in] BSTR bstrRule);
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_DELETERULE)] void deleteRule ([in] BSTR bstrKey);
    [id (DISPID_IHTMLMSCSSKEYFRAMESRULE_FINDRULE)] IHTMLMSCSSKeyframeRule *findRule ([in] BSTR bstrKey);
  };

  [noncreatable, uuid (3051080f-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLMSCSSKeyframesRule {
    [default] dispinterface DispHTMLMSCSSKeyframesRule;
    interface IHTMLCSSRule;
    interface IHTMLMSCSSKeyframesRule;
  };

  typedef enum _styleTextLineThroughStyle {
    styleTextLineThroughStyleUndefined = 0,
    styleTextLineThroughStyleSingle = 1,
    styleTextLineThroughStyleDouble = 2,
    styleTextLineThroughStyle_Max = 0x7FFFFFFF
  } styleTextLineThroughStyle;

  typedef enum _styleTextUnderlineStyle {
    styleTextUnderlineStyleUndefined = 0,
    styleTextUnderlineStyleSingle = 1,
    styleTextUnderlineStyleDouble = 2,
    styleTextUnderlineStyleWords = 3,
    styleTextUnderlineStyleDotted = 4,
    styleTextUnderlineStyleThick = 5,
    styleTextUnderlineStyleDash = 6,
    styleTextUnderlineStyleDotDash = 7,
    styleTextUnderlineStyleDotDotDash = 8,
    styleTextUnderlineStyleWave = 9,
    styleTextUnderlineStyleSingleAccounting = 10,
    styleTextUnderlineStyleDoubleAccounting = 11,
    styleTextUnderlineStyleThickDash = 12,
    styleTextUnderlineStyle_Max = 0x7FFFFFFF
  } styleTextUnderlineStyle;

  typedef enum _styleTextEffect {
    styleTextEffectNone = 0,
    styleTextEffectEmboss = 1,
    styleTextEffectEngrave = 2,
    styleTextEffectOutline = 3,
    styleTextEffect_Max = 0x7FFFFFFF
  } styleTextEffect;

  typedef enum _styleDefaultTextSelection {
    styleDefaultTextSelectionFalse = 0,
    styleDefaultTextSelectionTrue = 1,
    styleDefaultTextSelection_Max = 0x7FFFFFFF
  } styleDefaultTextSelection;

  typedef enum _styleTextDecoration {
    styleTextDecorationNone = 0,
    styleTextDecorationUnderline = 1,
    styleTextDecorationOverline = 2,
    styleTextDecorationLineThrough = 3,
    styleTextDecorationBlink = 4,
    styleTextDecoration_Max = 0x7FFFFFFF
  } styleTextDecoration;
  [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);
  };
  [hidden, uuid (3050f58b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLRenderStyle {
    properties:
    methods:
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTLINETHROUGHSTYLE), displaybind, bindable] void textLineThroughStyle (BSTR v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTLINETHROUGHSTYLE), displaybind, bindable] BSTR textLineThroughStyle ();
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTUNDERLINESTYLE), displaybind, bindable] void textUnderlineStyle (BSTR v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTUNDERLINESTYLE), displaybind, bindable] BSTR textUnderlineStyle ();
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTEFFECT), displaybind, bindable] void textEffect (BSTR v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTEFFECT), displaybind, bindable] BSTR textEffect ();
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTCOLOR), displaybind, bindable] void textColor (VARIANT v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTCOLOR), displaybind, bindable] VARIANT textColor ();
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTBACKGROUNDCOLOR), displaybind, bindable] void textBackgroundColor (VARIANT v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTBACKGROUNDCOLOR), displaybind, bindable] VARIANT textBackgroundColor ();
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTDECORATIONCOLOR), displaybind, bindable] void textDecorationColor (VARIANT v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTDECORATIONCOLOR), displaybind, bindable] VARIANT textDecorationColor ();
    [propput, id (DISPID_IHTMLRENDERSTYLE_RENDERINGPRIORITY), displaybind, bindable] void renderingPriority (long v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_RENDERINGPRIORITY), displaybind, bindable] long renderingPriority ();
    [propput, id (DISPID_IHTMLRENDERSTYLE_DEFAULTTEXTSELECTION), displaybind, bindable] void defaultTextSelection (BSTR v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_DEFAULTTEXTSELECTION), displaybind, bindable] BSTR defaultTextSelection ();
    [propput, id (DISPID_IHTMLRENDERSTYLE_TEXTDECORATION), displaybind, bindable] void textDecoration (BSTR v);
    [propget, id (DISPID_IHTMLRENDERSTYLE_TEXTDECORATION), displaybind, bindable] BSTR textDecoration ();
  };
  [noncreatable, uuid (3050f6aa-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLRenderStyle {
    [default] dispinterface DispHTMLRenderStyle;
    interface IHTMLRenderStyle;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CRenderStyle;")
  typedef enum _textDecoration {
    textDecorationNone = 0,
    textDecorationUnderline = 1,
    textDecorationOverline = 2,
    textDecorationLineThrough = 3,
    textDecorationBlink = 4,
    textDecoration_Max = 0x7FFFFFFF
  } textDecoration;
  [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,[defaultvalue (0), 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);
  };
  [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);
  };
  [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);
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (30510481-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLCurrentStyle5 : IDispatch {
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_CAPTIONSIDE), displaybind, bindable] HRESULT captionSide ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_OUTLINE), displaybind, bindable] HRESULT outline ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_OUTLINEWIDTH), displaybind, bindable] HRESULT outlineWidth ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_OUTLINESTYLE), displaybind, bindable] HRESULT outlineStyle ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_OUTLINECOLOR), displaybind, bindable] HRESULT outlineColor ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_BOXSIZING), displaybind, bindable] HRESULT boxSizing ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_BORDERSPACING), displaybind, bindable] HRESULT borderSpacing ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_ORPHANS), displaybind, bindable] HRESULT orphans ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_WIDOWS), displaybind, bindable] HRESULT widows ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_PAGEBREAKINSIDE), displaybind, bindable] HRESULT pageBreakInside ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_EMPTYCELLS), displaybind, bindable] HRESULT emptyCells ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_MSBLOCKPROGRESSION), displaybind, bindable] HRESULT msBlockProgression ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_QUOTES), displaybind, bindable] HRESULT quotes ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f557-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLCurrentStyle {
    properties:
    methods:
    [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,[defaultvalue (NULL), in] VARIANT *pvarPropertyPriority);
    [id (DISPID_IHTMLCSSSTYLEDECLARATION_ITEM)] BSTR item ([in] long index);
    [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 ();
    [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,[defaultvalue (0), in] 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 ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_CAPTIONSIDE), displaybind, bindable] BSTR captionSide ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_OUTLINE), displaybind, bindable] BSTR outline ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_OUTLINEWIDTH), displaybind, bindable] VARIANT outlineWidth ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_OUTLINESTYLE), displaybind, bindable] BSTR outlineStyle ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_OUTLINECOLOR), displaybind, bindable] VARIANT outlineColor ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_BOXSIZING), displaybind, bindable] BSTR boxSizing ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_BORDERSPACING), displaybind, bindable] BSTR borderSpacing ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_ORPHANS), displaybind, bindable] VARIANT orphans ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_WIDOWS), displaybind, bindable] VARIANT widows ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_PAGEBREAKINSIDE), displaybind, bindable] BSTR pageBreakInside ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_EMPTYCELLS), displaybind, bindable] BSTR emptyCells ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_MSBLOCKPROGRESSION), displaybind, bindable] BSTR msBlockProgression ();
    [propget, id (DISPID_IHTMLCURRENTSTYLE5_QUOTES), displaybind, bindable] BSTR quotes ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f3dc-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLCurrentStyle {
    [default] dispinterface DispHTMLCurrentStyle;
    interface IHTMLCSSStyleDeclaration;
    interface IHTMLCSSStyleDeclaration2;
    interface IHTMLCurrentStyle;
    interface IHTMLCurrentStyle2;
    interface IHTMLCurrentStyle3;
    interface IHTMLCurrentStyle4;
    interface IHTMLCurrentStyle5;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CCurrentStyle;")
  interface IHTMLElement;
  [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);
  };
  [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);
  };
  [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);
  };
  interface IHTMLElementCollection;
  interface IHTMLElement2;
  interface IHTMLAttributeCollection3;
  interface IDOMDocumentType;
  interface IHTMLDocument7;
  [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,[defaultvalue (0), 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);
  };
  [odl, oleautomation, dual, uuid (3050f80b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMNode2 : IDispatch {
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] HRESULT ownerDocument ([retval, out] IDispatch **p);
  };
  [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 ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOMNODE3_LOCALNAME)] HRESULT localName ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOMNODE3_NAMESPACEURI)] HRESULT namespaceURI ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] HRESULT textContent ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOMNODE3_TEXTCONTENT)] HRESULT textContent ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDOMNODE3_ISEQUALNODE)] HRESULT isEqualNode ([in] IHTMLDOMNode3 *otherNode,[retval, out] VARIANT_BOOL *isEqual);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPNAMESPACEURI)] HRESULT lookupNamespaceURI ([in] VARIANT *pvarPrefix,[retval, out] VARIANT *pvarNamespaceURI);
    [id (DISPID_IHTMLDOMNODE3_LOOKUPPREFIX)] HRESULT lookupPrefix ([in] VARIANT *pvarNamespaceURI,[retval, out] VARIANT *pvarPrefix);
    [id (DISPID_IHTMLDOMNODE3_ISDEFAULTNAMESPACE)] HRESULT isDefaultNamespace ([in] VARIANT *pvarNamespace,[retval, out] VARIANT_BOOL *pfDefaultNamespace);
    [id (DISPID_IHTMLDOMNODE3_IE9_APPENDCHILD)] HRESULT appendChild ([in] IHTMLDOMNode *newChild,[retval, out] IHTMLDOMNode **node);
    [id (DISPID_IHTMLDOMNODE3_IE9_INSERTBEFORE)] HRESULT insertBefore ([in] IHTMLDOMNode *newChild,[optional, in] VARIANT refChild,[retval, out] IHTMLDOMNode **node);
    [id (DISPID_IHTMLDOMNODE3_IE9_REMOVECHILD)] HRESULT removeChild ([in] IHTMLDOMNode *oldChild,[retval, out] IHTMLDOMNode **node);
    [id (DISPID_IHTMLDOMNODE3_IE9_REPLACECHILD)] HRESULT replaceChild ([in] IHTMLDOMNode *newChild,[in] IHTMLDOMNode *oldChild,[retval, out] IHTMLDOMNode **node);
    [id (DISPID_IHTMLDOMNODE3_ISSAMENODE)] HRESULT isSameNode ([in] IHTMLDOMNode3 *otherNode,[retval, out] VARIANT_BOOL *isSame);
    [id (DISPID_IHTMLDOMNODE3_COMPAREDOCUMENTPOSITION)] HRESULT compareDocumentPosition ([in] IHTMLDOMNode *otherNode,[retval, out] USHORT *flags);
    [id (DISPID_IHTMLDOMNODE3_ISSUPPORTED)] HRESULT isSupported ([in] BSTR feature,[in] VARIANT version,[retval, out] VARIANT_BOOL *pfisSupported);
  };
  [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);
  };
  [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);
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (305106f9-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMAttribute4 : IDispatch {
    [propput, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_NODEVALUE)] HRESULT nodeValue ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_NODEVALUE)] HRESULT nodeValue ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_NODENAME)] HRESULT nodeName ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_NAME)] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_VALUE)] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_VALUE)] HRESULT value ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_FIRSTCHILD)] HRESULT firstChild ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_LASTCHILD)] HRESULT lastChild ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_CHILDNODES)] HRESULT childNodes ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMATTRIBUTE4_HASATTRIBUTES)] HRESULT hasAttributes ([retval, out] VARIANT_BOOL *pfHasAttributes);
    [id (DISPID_IHTMLDOMATTRIBUTE4_IE9_HASCHILDNODES)] HRESULT hasChildNodes ([retval, out] VARIANT_BOOL *fChildren);
    [id (DISPID_IHTMLDOMATTRIBUTE4_NORMALIZE)] HRESULT normalize ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_SPECIFIED)] HRESULT specified ([retval, out] VARIANT_BOOL *p);
  };
  [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 ([retval, out] BSTR *p);
    [id (DISPID_IHTMLDOMTEXTNODE_TOSTRING)] HRESULT toString ([retval, out] BSTR *String);
    [propget, id (DISPID_IHTMLDOMTEXTNODE_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLDOMTEXTNODE_SPLITTEXT)] HRESULT splitText ([in] long offset,[retval, out] IHTMLDOMNode **pRetNode);
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (3051073e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMTextNode3 : IDispatch {
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_SUBSTRINGDATA)] HRESULT substringData ([in] long offset,[in] long Count,[retval, out] BSTR *pbstrsubString);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_INSERTDATA)] HRESULT insertData ([in] long offset,[in] BSTR bstrstring);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_DELETEDATA)] HRESULT deleteData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_REPLACEDATA)] HRESULT replaceData ([in] long offset,[in] long Count,[in] BSTR bstrstring);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_SPLITTEXT)] HRESULT splitText ([in] long offset,[retval, out] IHTMLDOMNode **pRetNode);
    [propget, id (DISPID_IHTMLDOMTEXTNODE3_WHOLETEXT)] HRESULT wholeText ([retval, out] BSTR *p);
    [id (DISPID_IHTMLDOMTEXTNODE3_REPLACEWHOLETEXT)] HRESULT replaceWholeText ([in] BSTR bstrText,[retval, out] IHTMLDOMNode **ppRetNode);
    [id (DISPID_IHTMLDOMTEXTNODE3_HASATTRIBUTES)] HRESULT hasAttributes ([retval, out] VARIANT_BOOL *pfHasAttributes);
    [id (DISPID_IHTMLDOMTEXTNODE3_NORMALIZE)] HRESULT normalize ();
  };
  [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);
  };
  [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,[retval, out] IDOMDocumentType **newDocumentType);
    [id (DISPID_IHTMLDOMIMPLEMENTATION2_CREATEDOCUMENT)] HRESULT createDocument ([in] VARIANT *pvarNS,[in] VARIANT *pvarTagName,[in] IDOMDocumentType *pDocumentType,[retval, out] IHTMLDocument7 **ppnewDocument);
    [id (DISPID_IHTMLDOMIMPLEMENTATION2_CREATEHTMLDOCUMENT)] HRESULT createHTMLDocument ([in] BSTR bstrTitle,[retval, out] IHTMLDocument7 **ppnewDocument);
    [id (DISPID_IHTMLDOMIMPLEMENTATION2_IE9_HASFEATURE)] HRESULT hasFeature ([in] BSTR bstrfeature,[optional, in] VARIANT version,[retval, out] VARIANT_BOOL *pfHasFeature);
  };
  [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 ();
    [propput, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_NODEVALUE)] void ie9_nodeValue (VARIANT v);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_NODEVALUE)] VARIANT ie9_nodeValue ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_NODENAME)] BSTR ie9_nodeName ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_NAME)] BSTR ie9_name ();
    [propput, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_VALUE)] void ie9_value (BSTR v);
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_VALUE)] BSTR ie9_value ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_FIRSTCHILD)] IHTMLDOMNode *ie9_firstChild ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_LASTCHILD)] IHTMLDOMNode *ie9_lastChild ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_CHILDNODES)] IDispatch *ie9_childNodes ();
    [id (DISPID_IHTMLDOMATTRIBUTE4_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [id (DISPID_IHTMLDOMATTRIBUTE4_IE9_HASCHILDNODES)] VARIANT_BOOL ie9_hasChildNodes ();
    [id (DISPID_IHTMLDOMATTRIBUTE4_NORMALIZE)] void normalize ();
    [propget, id (DISPID_IHTMLDOMATTRIBUTE4_IE9_SPECIFIED)] VARIANT_BOOL ie9_specified ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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,[optional, in] 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);
  };
  [noncreatable, uuid (3050f4b2-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDOMAttribute {
    [default] dispinterface DispHTMLDOMAttribute;
    interface IHTMLDOMAttribute;
    interface IHTMLDOMAttribute2;
    interface IHTMLDOMAttribute3;
    interface IHTMLDOMAttribute4;
    interface IHTMLDOMConstructor;
    interface IHTMLDOMNode3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CAttribute;")
  [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);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_SUBSTRINGDATA)] BSTR ie9_substringData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_INSERTDATA)] void ie9_insertData ([in] long offset,[in] BSTR bstrstring);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_DELETEDATA)] void ie9_deleteData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_REPLACEDATA)] void ie9_replaceData ([in] long offset,[in] long Count,[in] BSTR bstrstring);
    [id (DISPID_IHTMLDOMTEXTNODE3_IE9_SPLITTEXT)] IHTMLDOMNode *ie9_splitText ([in] long offset);
    [propget, id (DISPID_IHTMLDOMTEXTNODE3_WHOLETEXT)] BSTR wholeText ();
    [id (DISPID_IHTMLDOMTEXTNODE3_REPLACEWHOLETEXT)] IHTMLDOMNode *replaceWholeText ([in] BSTR bstrText);
    [id (DISPID_IHTMLDOMTEXTNODE3_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [id (DISPID_IHTMLDOMTEXTNODE3_NORMALIZE)] void normalize ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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);
  };
  [noncreatable, uuid (3050f4ba-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDOMTextNode {
    [default] dispinterface DispHTMLDOMTextNode;
    interface IHTMLDOMTextNode;
    interface IHTMLDOMTextNode2;
    interface IHTMLDOMTextNode3;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDOMConstructor;
    interface IEventTarget;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMTextNode;")
  [hidden, uuid (3050f58f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDOMImplementation {
    properties:
    methods:
    [id (DISPID_IHTMLDOMIMPLEMENTATION_HASFEATURE)] VARIANT_BOOL hasFeature ([in] BSTR bstrfeature,[optional, in] 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,[optional, in] VARIANT version);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f80e-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDOMImplementation {
    [default] dispinterface DispHTMLDOMImplementation;
    interface IHTMLDOMImplementation;
    interface IHTMLDOMImplementation2;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMImplementation;")
  [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);
  };
  [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);
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (305106fa-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAttributeCollection4 : IDispatch {
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_GETNAMEDITEMNS)] HRESULT getNamedItemNS ([in] VARIANT *pvarNS,[in] BSTR bstrName,[retval, out] IHTMLDOMAttribute2 **ppNodeOut);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_SETNAMEDITEMNS)] HRESULT setNamedItemNS ([in] IHTMLDOMAttribute2 *pNodeIn,[retval, out] IHTMLDOMAttribute2 **ppNodeOut);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_REMOVENAMEDITEMNS)] HRESULT removeNamedItemNS ([in] VARIANT *pvarNS,[in] BSTR bstrName,[retval, out] IHTMLDOMAttribute2 **ppNodeOut);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_GETNAMEDITEM)] HRESULT getNamedItem ([in] BSTR bstrName,[retval, out] IHTMLDOMAttribute2 **ppNodeOut);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_SETNAMEDITEM)] HRESULT setNamedItem ([in] IHTMLDOMAttribute2 *pNodeIn,[retval, out] IHTMLDOMAttribute2 **ppNodeOut);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_REMOVENAMEDITEM)] HRESULT removeNamedItem ([in] BSTR bstrName,[retval, out] IHTMLDOMAttribute2 **ppNodeOut);
    [id (DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_ITEM)] HRESULT item ([in] long index,[retval, out] IHTMLDOMAttribute2 **ppNodeOut);
    [propget, id (DISPID_IHTMLATTRIBUTECOLLECTION4_IE9_LENGTH)] HRESULT length ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (3050f5ab-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMChildrenCollection : IDispatch {
    [propget, id (DISPID_IHTMLDOMCHILDRENCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLDOMCHILDRENCOLLECTION__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLDOMCHILDRENCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] IDispatch **ppItem);
  };
  [odl, oleautomation, dual, uuid (30510791-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMChildrenCollection2 : IDispatch {
    [id (DISPID_IHTMLDOMCHILDRENCOLLECTION2_IE9_ITEM)] HRESULT item ([in] long index,[retval, out] IDispatch **ppItem);
  };
  [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 ();
  };
  [noncreatable, uuid (3050f4cc-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLAttributeCollection {
    [default] dispinterface DispHTMLAttributeCollection;
    interface IHTMLAttributeCollection;
    interface IHTMLAttributeCollection2;
    interface IHTMLAttributeCollection3;
    interface IHTMLAttributeCollection4;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CAttrCollectionator;")
  [hidden, uuid (3050f59b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispStaticNodeList {
    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);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (30510467-98b5-11cf-bb82-00aa00bdce0b)] coclass StaticNodeList {
    [default] dispinterface DispStaticNodeList;
    interface IHTMLDOMChildrenCollection;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStaticNodeList;")
  [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);
    [id (DISPID_IHTMLDOMCHILDRENCOLLECTION2_IE9_ITEM)] IDispatch *ie9_item ([in] long index);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f5aa-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMChildrenCollection {
    [default] dispinterface DispDOMChildrenCollection;
    interface IHTMLDOMChildrenCollection;
    interface IHTMLDOMChildrenCollection2;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMChildrenCollection;")
  [hidden, uuid (3051075e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLElementEvents4 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS4_ONABORT)] void onabort ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS4_ONCHANGE)] void onchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS4_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS4_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS4_ONRESET)] void onreset ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS4_ONSELECT)] void onselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS4_ONSUBMIT)] void onsubmit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS4_ONMSCONTENTZOOM)] void onmscontentzoom ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f59f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLElementEvents3 {
    properties:
    methods:
    [id (DISPID_HTMLELEMENTEVENTS3_ONONLINE)] void ononline ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLELEMENTEVENTS3_ONOFFLINE)] void onoffline ([in] IHTMLEventObj *pEvtObj);
  };
  [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 ();
  };
  typedef enum _htmlListType {
    htmlListTypeNotSet = 0,
    htmlListTypeLargeAlpha = 1,
    htmlListTypeSmallAlpha = 2,
    htmlListTypeLargeRoman = 3,
    htmlListTypeSmallRoman = 4,
    htmlListTypeNumbers = 5,
    htmlListTypeDisc = 6,
    htmlListTypeCircle = 7,
    htmlListTypeSquare = 8,
    htmlListType_Max = 0x7FFFFFFF
  } htmlListType;

  typedef enum _htmlMethod {
    htmlMethodNotSet = 0,
    htmlMethodGet = 1,
    htmlMethodPost = 2,
    htmlMethod_Max = 0x7FFFFFFF
  } htmlMethod;

  typedef enum _htmlWrap {
    htmlWrapOff = 1,
    htmlWrapSoft = 2,
    htmlWrapHard = 3,
    htmlWrap_Max = 0x7FFFFFFF
  } htmlWrap;

  typedef enum _htmlDir {
    htmlDirNotSet = 0,
    htmlDirLeftToRight = 1,
    htmlDirRightToLeft = 2,
    htmlDir_Max = 0x7FFFFFFF
  } htmlDir;

  typedef enum _htmlEditable {
    htmlEditableInherit = 0,
    htmlEditableTrue = 1,
    htmlEditableFalse = 2,
    htmlEditable_Max = 0x7FFFFFFF
  } htmlEditable;

  typedef enum _htmlInput {
    htmlInputNotSet = 0,
    htmlInputButton = 1,
    htmlInputCheckbox = 2,
    htmlInputFile = 3,
    htmlInputHidden = 4,
    htmlInputImage = 5,
    htmlInputPassword = 6,
    htmlInputRadio = 7,
    htmlInputReset = 8,
    htmlInputSelectOne = 9,
    htmlInputSelectMultiple = 10,
    htmlInputSubmit = 11,
    htmlInputText = 12,
    htmlInputTextarea = 13,
    htmlInputRichtext = 14,
    htmlInputRange = 15,
    htmlInputUrl = 16,
    htmlInputEmail = 17,
    htmlInputNumber = 18,
    htmlInputTel = 19,
    htmlInputSearch = 20,
    htmlInput_Max = 0x7FFFFFFF
  } htmlInput;

  typedef enum _htmlSpellCheck {
    htmlSpellCheckNotSet = 0,
    htmlSpellCheckTrue = 1,
    htmlSpellCheckFalse = 2,
    htmlSpellCheckDefault = 3,
    htmlSpellCheck_Max = 0x7FFFFFFF
  } htmlSpellCheck;

  typedef enum _htmlEncoding {
    htmlEncodingURL = 0,
    htmlEncodingMultipart = 1,
    htmlEncodingText = 2,
    htmlEncoding_Max = 0x7FFFFFFF
  } htmlEncoding;

  typedef enum _htmlAdjacency {
    htmlAdjacencyBeforeBegin = 1,
    htmlAdjacencyAfterBegin = 2,
    htmlAdjacencyBeforeEnd = 3,
    htmlAdjacencyAfterEnd = 4,
    htmlAdjacency_Max = 0x7FFFFFFF
  } htmlAdjacency;

  typedef enum _htmlTabIndex {
    htmlTabIndexNotSet = -32768,
    htmlTabIndex_Max = 0x7FFFFFFF
  } htmlTabIndex;

  typedef enum _htmlComponent {
    htmlComponentClient = 0,
    htmlComponentSbLeft = 1,
    htmlComponentSbPageLeft = 2,
    htmlComponentSbHThumb = 3,
    htmlComponentSbPageRight = 4,
    htmlComponentSbRight = 5,
    htmlComponentSbUp = 6,
    htmlComponentSbPageUp = 7,
    htmlComponentSbVThumb = 8,
    htmlComponentSbPageDown = 9,
    htmlComponentSbDown = 10,
    htmlComponentSbLeft2 = 11,
    htmlComponentSbPageLeft2 = 12,
    htmlComponentSbRight2 = 13,
    htmlComponentSbPageRight2 = 14,
    htmlComponentSbUp2 = 15,
    htmlComponentSbPageUp2 = 16,
    htmlComponentSbDown2 = 17,
    htmlComponentSbPageDown2 = 18,
    htmlComponentSbTop = 19,
    htmlComponentSbBottom = 20,
    htmlComponentOutside = 21,
    htmlComponentGHTopLeft = 22,
    htmlComponentGHLeft = 23,
    htmlComponentGHTop = 24,
    htmlComponentGHBottomLeft = 25,
    htmlComponentGHTopRight = 26,
    htmlComponentGHBottom = 27,
    htmlComponentGHRight = 28,
    htmlComponentGHBottomRight = 29,
    htmlComponent_Max = 0x7FFFFFFF
  } htmlComponent;

  typedef enum _htmlApplyLocation {
    htmlApplyLocationInside = 0,
    htmlApplyLocationOutside = 1,
    htmlApplyLocation_Max = 0x7FFFFFFF
  } htmlApplyLocation;

  typedef enum _htmlGlyphMode {
    htmlGlyphModeNone = 0,
    htmlGlyphModeBegin = 1,
    htmlGlyphModeEnd = 2,
    htmlGlyphModeBoth = 3,
    htmlGlyphMode_Max = 0x7FFFFFFF
  } htmlGlyphMode;

  typedef enum _htmlDraggable {
    htmlDraggableAuto = 0,
    htmlDraggableTrue = 1,
    htmlDraggableFalse = 2,
    htmlDraggable_Max = 0x7FFFFFFF
  } htmlDraggable;

  interface IHTMLEventObj;
  interface IHTMLElementCollection;
  interface IHTMLFiltersCollection;
  interface IRulesAppliedCollection;

  [odl, oleautomation, dual, 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,[defaultvalue (0), retval, out] VARIANT *AttributeValue);
    [id (DISPID_IHTMLELEMENT_REMOVEATTRIBUTE)] HRESULT removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags,[defaultvalue (0), retval, out] VARIANT_BOOL *pfSuccess);
    [propput, id (DISPID_IHTMLELEMENT_CLASSNAME), bindable] HRESULT className ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT_CLASSNAME), propget, bindable] HRESULT className ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] HRESULT id ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_ID), bindable] HRESULT id ([retval, out] BSTR *p);
    [id (DISPID_IHTMLELEMENT_TAGNAME), propget] HRESULT tagName ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLELEMENT_PARENTELEMENT)] HRESULT parentElement ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IHTMLELEMENT_STYLE), nonbrowsable] HRESULT style ([retval, out] IHTMLStyle **p);
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] HRESULT onhelp ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONHELP), propget, displaybind, bindable] HRESULT onhelp ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] HRESULT onclick ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] HRESULT onclick ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] HRESULT ondblclick ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDBLCLICK), propget, displaybind, bindable] HRESULT ondblclick ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] HRESULT onkeydown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] HRESULT onkeydown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] HRESULT onkeyup ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONKEYUP), propget, displaybind, bindable] HRESULT onkeyup ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] HRESULT onkeypress ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONKEYPRESS), displaybind, bindable] HRESULT onkeypress ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT_ONMOUSEOUT), propput, displaybind, bindable] HRESULT onmouseout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOUT), displaybind, bindable] HRESULT onmouseout ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] HRESULT onmouseover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEOVER), displaybind, bindable] HRESULT onmouseover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] HRESULT onmousemove ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEMOVE), displaybind, bindable] HRESULT onmousemove ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] HRESULT onmousedown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEDOWN), displaybind, bindable] HRESULT onmousedown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] HRESULT onmouseup ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONMOUSEUP), displaybind, bindable] HRESULT onmouseup ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLELEMENT_DOCUMENT)] HRESULT document ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] HRESULT title ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_TITLE), displaybind, bindable] HRESULT title ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] HRESULT language ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT_LANGUAGE), displaybind, bindable] HRESULT language ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] HRESULT onselectstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONSELECTSTART), displaybind, bindable] 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), bindable] 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);
    [id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT), propget] HRESULT parentTextEdit ([retval, out] IHTMLElement **p);
    [id (DISPID_IHTMLELEMENT_ISTEXTEDIT), propget] HRESULT isTextEdit ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLELEMENT_CLICK)] HRESULT click ();
    [id (DISPID_IHTMLELEMENT_FILTERS), propget] HRESULT filters ([retval, out] IHTMLFiltersCollection **p);
    [id (DISPID_IHTMLELEMENT_ONDRAGSTART), propput, displaybind, bindable] HRESULT ondragstart ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDRAGSTART), propget, displaybind, bindable] HRESULT ondragstart ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT_TOSTRING)] HRESULT toString ([retval, out] BSTR *String);
    [propput, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] HRESULT onbeforeupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), displaybind, bindable] HRESULT onbeforeupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] HRESULT onafterupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), displaybind, bindable] HRESULT onafterupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] HRESULT onerrorupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONERRORUPDATE), displaybind, bindable] HRESULT onerrorupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] HRESULT onrowexit ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWEXIT), displaybind, bindable] HRESULT onrowexit ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] HRESULT onrowenter ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT_ONROWENTER), displaybind, bindable] HRESULT onrowenter ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), displaybind, bindable] HRESULT ondatasetchanged ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), propget, displaybind, bindable] HRESULT ondatasetchanged ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), displaybind, bindable] HRESULT ondataavailable ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), propget, displaybind, bindable] HRESULT ondataavailable ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), displaybind, bindable] HRESULT ondatasetcomplete ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), propget, displaybind, bindable] HRESULT ondatasetcomplete ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), displaybind, bindable] HRESULT onfilterchange ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), propget, displaybind, bindable] HRESULT onfilterchange ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT_CHILDREN), propget] HRESULT children ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLELEMENT_ALL), propget] HRESULT all ([retval, out] IDispatch **p);
  };

  [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 (L""), 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);
    [id (DISPID_IHTMLELEMENT2_ONBEFOREEDITFOCUS), propget, displaybind, bindable] HRESULT onbeforeeditfocus ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT2_READYSTATEVALUE), propget, hidden, restricted] HRESULT readyStateValue ([retval, out] long *p);
    [id (DISPID_IHTMLELEMENT2_GETELEMENTSBYTAGNAME)] HRESULT getElementsByTagName ([in] BSTR v,[retval, out] IHTMLElementCollection **pelColl);
  };

  [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);
    [id (DISPID_IHTMLELEMENT3_ISMULTILINE), propget] HRESULT isMultiLine ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLELEMENT3_CANHAVEHTML), propget] HRESULT canHaveHTML ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), displaybind, bindable] HRESULT onlayoutcomplete ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT3_ONLAYOUTCOMPLETE), propget, 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);
    [id (DISPID_IHTMLELEMENT3_ONBEFOREDEACTIVATE), propget, 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);
    [id (DISPID_IHTMLELEMENT3_DISABLED), propget, displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLELEMENT3_ISDISABLED), propget] HRESULT isDisabled ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLELEMENT3_ONMOVE), displaybind, bindable] HRESULT onmove ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT3_ONMOVE), propget, displaybind, bindable] HRESULT onmove ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), displaybind, bindable] HRESULT oncontrolselect ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT3_ONCONTROLSELECT), propget, 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);
    [id (DISPID_IHTMLELEMENT3_ONDEACTIVATE), propget, displaybind, bindable] HRESULT ondeactivate ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT3_DRAGDROP)] HRESULT dragDrop ([retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLELEMENT3_GLYPHMODE), propget, hidden, restricted, nonbrowsable] HRESULT glyphMode ([retval, out] LONG *p);
  };

  [odl, oleautomation, dual, uuid (3050f80f-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLElement4 : IDispatch {
    [propput, id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), displaybind, bindable] HRESULT onmousewheel ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT4_ONMOUSEWHEEL), propget, 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);
    [id (DISPID_IHTMLELEMENT4_ONBEFOREACTIVATE), propget, displaybind, bindable] HRESULT onbeforeactivate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSIN), displaybind, bindable] HRESULT onfocusin ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT4_ONFOCUSIN), propget, displaybind, bindable] HRESULT onfocusin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), displaybind, bindable] HRESULT onfocusout ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT4_ONFOCUSOUT), propget, displaybind, bindable] HRESULT onfocusout ([retval, out] VARIANT *p);
  };

  [odl, oleautomation, dual, uuid (30510463-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementSelector : IDispatch {
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] HRESULT querySelector ([in] BSTR v,[retval, out] IHTMLElement **pel);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] HRESULT querySelectorAll ([in] BSTR v,[retval, out] IHTMLDOMChildrenCollection **pel);
  };

  [object, pointer_default (unique), uuid (3050f669-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLElementRender : IUnknown {
    HRESULT DrawToDC ([in] HDC hDC);
    HRESULT SetDocumentPrinter ([in] BSTR bstrPrinterName,[in] HDC hDC);
  };

  [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);
  };

  [odl, oleautomation, dual, uuid (3051045d-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLElement5 : IDispatch {
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTENODE)] HRESULT getAttributeNode ([in] BSTR bstrname,[retval, out] IHTMLDOMAttribute2 **ppretAttribute);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTENODE)] HRESULT setAttributeNode ([in] IHTMLDOMAttribute2 *pattr,[retval, out] IHTMLDOMAttribute2 **ppretAttribute);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTENODE)] HRESULT removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr,[retval, out] IHTMLDOMAttribute2 **ppretAttribute);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTE)] HRESULT hasAttribute ([in] BSTR name,[retval, out] VARIANT_BOOL *pfHasAttribute);
    [propput, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] HRESULT role ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ROLE), displaybind, bindable] HRESULT role ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] HRESULT ariaBusy ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIABUSY), displaybind, bindable] HRESULT ariaBusy ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] HRESULT ariaChecked ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACHECKED), displaybind, bindable] HRESULT ariaChecked ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] HRESULT ariaDisabled ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIADISABLED), displaybind, bindable] HRESULT ariaDisabled ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] HRESULT ariaExpanded ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAEXPANDED), displaybind, bindable] HRESULT ariaExpanded ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] HRESULT ariaHaspopup ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHASPOPUP), displaybind, bindable] HRESULT ariaHaspopup ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] HRESULT ariaHidden ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAHIDDEN), displaybind, bindable] HRESULT ariaHidden ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] HRESULT ariaInvalid ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAINVALID), displaybind, bindable] HRESULT ariaInvalid ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] HRESULT ariaMultiselectable ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAMULTISELECTABLE), displaybind, bindable] HRESULT ariaMultiselectable ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] HRESULT ariaPressed ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPRESSED), displaybind, bindable] HRESULT ariaPressed ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] HRESULT ariaReadonly ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREADONLY), displaybind, bindable] HRESULT ariaReadonly ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] HRESULT ariaRequired ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAREQUIRED), displaybind, bindable] HRESULT ariaRequired ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] HRESULT ariaSecret ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASECRET), displaybind, bindable] HRESULT ariaSecret ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] HRESULT ariaSelected ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASELECTED), displaybind, bindable] HRESULT ariaSelected ([retval, out] BSTR *p);
    [id (DISPID_IHTMLELEMENT5_IE8_GETATTRIBUTE)] HRESULT getAttribute ([in] BSTR strAttributeName,[retval, out] VARIANT *AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_SETATTRIBUTE)] HRESULT setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue);
    [id (DISPID_IHTMLELEMENT5_IE8_REMOVEATTRIBUTE)] HRESULT removeAttribute ([in] BSTR strAttributeName,[retval, out] VARIANT_BOOL *pfSuccess);
    [propget, id (DISPID_IHTMLELEMENT5_IE8_ATTRIBUTES)] HRESULT attributes ([retval, out] IHTMLAttributeCollection3 **p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] HRESULT ariaValuenow ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUENOW), displaybind, bindable] HRESULT ariaValuenow ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] HRESULT ariaPosinset ([in] short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAPOSINSET), displaybind, bindable] HRESULT ariaPosinset ([retval, out] short *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] HRESULT ariaSetsize ([in] short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIASETSIZE), displaybind, bindable] HRESULT ariaSetsize ([retval, out] short *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] HRESULT ariaLevel ([in] short v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALEVEL), displaybind, bindable] HRESULT ariaLevel ([retval, out] short *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] HRESULT ariaValuemin ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMIN), displaybind, bindable] HRESULT ariaValuemin ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] HRESULT ariaValuemax ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAVALUEMAX), displaybind, bindable] HRESULT ariaValuemax ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] HRESULT ariaControls ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIACONTROLS), displaybind, bindable] HRESULT ariaControls ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), displaybind, bindable] HRESULT ariaDescribedby ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT5_ARIADESCRIBEDBY), propget, displaybind, bindable] HRESULT ariaDescribedby ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] HRESULT ariaFlowto ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAFLOWTO), displaybind, bindable] HRESULT ariaFlowto ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] HRESULT ariaLabelledby ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIALABELLEDBY), displaybind, bindable] HRESULT ariaLabelledby ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] HRESULT ariaActivedescendant ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAACTIVEDESCENDANT), displaybind, bindable] HRESULT ariaActivedescendant ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] HRESULT ariaOwns ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT5_ARIAOWNS), displaybind, bindable] HRESULT ariaOwns ([retval, out] BSTR *p);
    [id (DISPID_IHTMLELEMENT5_HASATTRIBUTES)] HRESULT hasAttributes ([retval, out] VARIANT_BOOL *pfHasAttributes);
    [propput, id (DISPID_IHTMLELEMENT5_ARIALIVE), displaybind, bindable] HRESULT ariaLive ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT5_ARIALIVE), propget, displaybind, bindable] HRESULT ariaLive ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT5_ARIARELEVANT), displaybind, bindable] HRESULT ariaRelevant ([in] BSTR v);
    [id (DISPID_IHTMLELEMENT5_ARIARELEVANT), propget, displaybind, bindable] HRESULT ariaRelevant ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (305106f8-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLElement6 : IDispatch {
    [id (DISPID_IHTMLELEMENT6_GETATTRIBUTENS)] HRESULT getAttributeNS ([in] VARIANT *pvarNS,[in] BSTR strAttributeName,[retval, out] 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,[retval, out] IHTMLDOMAttribute2 **ppretAttribute);
    [id (DISPID_IHTMLELEMENT6_SETATTRIBUTENODENS)] HRESULT setAttributeNodeNS ([in] IHTMLDOMAttribute2 *pattr,[retval, out] IHTMLDOMAttribute2 **ppretAttribute);
    [id (DISPID_IHTMLELEMENT6_HASATTRIBUTENS)] HRESULT hasAttributeNS ([in] VARIANT *pvarNS,[in] BSTR name,[retval, out] VARIANT_BOOL *pfHasAttribute);
    [id (DISPID_IHTMLELEMENT6_IE9_GETATTRIBUTE)] HRESULT getAttribute ([in] BSTR strAttributeName,[retval, out] 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,[retval, out] IHTMLDOMAttribute2 **ppretAttribute);
    [id (DISPID_IHTMLELEMENT6_IE9_SETATTRIBUTENODE)] HRESULT setAttributeNode ([in] IHTMLDOMAttribute2 *pattr,[retval, out] IHTMLDOMAttribute2 **ppretAttribute);
    [id (DISPID_IHTMLELEMENT6_IE9_REMOVEATTRIBUTENODE)] HRESULT removeAttributeNode ([in] IHTMLDOMAttribute2 *pattr,[retval, out] IHTMLDOMAttribute2 **ppretAttribute);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTE)] HRESULT hasAttribute ([in] BSTR name,[retval, out] VARIANT_BOOL *pfHasAttribute);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYTAGNAMENS)] HRESULT getElementsByTagNameNS ([in] VARIANT *varNS,[in] BSTR bstrLocalName,[retval, out] IHTMLElementCollection **pelColl);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_TAGNAME)] HRESULT tagName ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLELEMENT6_IE9_NODENAME)] HRESULT nodeName ([retval, out] BSTR *p);
    [id (DISPID_IHTMLELEMENT6_GETELEMENTSBYCLASSNAME)] HRESULT getElementsByClassName ([in] BSTR v,[retval, out] IHTMLElementCollection **pel);
    [id (DISPID_IHTMLELEMENT6_MSMATCHESSELECTOR)] HRESULT msMatchesSelector ([in] BSTR v,[retval, out] VARIANT_BOOL *pfMatches);
    [propput, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] HRESULT onabort ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONABORT), displaybind, bindable] HRESULT onabort ([retval, out] 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 ([retval, out] 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 ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] HRESULT onchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONCHANGE), displaybind, bindable] HRESULT onchange ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONERROR), displaybind, bindable] HRESULT onerror ([retval, out] 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 ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] HRESULT onreset ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONRESET), displaybind, bindable] HRESULT onreset ([retval, out] 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 ([retval, out] 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 ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] HRESULT onselect ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSELECT), displaybind, bindable] HRESULT onselect ([retval, out] 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 ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] HRESULT onsubmit ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT6_ONSUBMIT), displaybind, bindable] HRESULT onsubmit ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLELEMENT6_IE9_HASATTRIBUTES)] HRESULT hasAttributes ([retval, out] VARIANT_BOOL *pfHasAttributes);
  };

  [odl, oleautomation, dual, uuid (305107aa-98b5-11cf-bb82-00aa00bdce0b)]
  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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] 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 ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] HRESULT xmsAcceleratorKey ([in] BSTR v);
    [propget, id (DISPID_IHTMLELEMENT7_XMSACCELERATORKEY), displaybind, bindable] HRESULT xmsAcceleratorKey ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] HRESULT spellcheck ([in] VARIANT v);
    [propget, id (DISPID_IHTMLELEMENT7_SPELLCHECK)] HRESULT spellcheck ([retval, out] 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 ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLELEMENT7_ONCUECHANGE), displaybind, bindable, hidden] HRESULT oncuechange ([in] VARIANT v);
    [id (DISPID_IHTMLELEMENT7_ONCUECHANGE), propget, displaybind, bindable, hidden] HRESULT oncuechange ([retval, out] VARIANT *p);
  };

  [odl, oleautomation, dual, uuid (305104bd-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLElementAppliedStyles : IDispatch {
    [id (DISPID_IHTMLELEMENTAPPLIEDSTYLES_MSGETRULESAPPLIED)] HRESULT msGetRulesApplied ([retval, out] IRulesAppliedCollection **ppRulesAppliedCollection);
    [id (DISPID_IHTMLELEMENTAPPLIEDSTYLES_MSGETRULESAPPLIEDWITHANCESTOR)] HRESULT msGetRulesAppliedWithAncestor ([optional, in] VARIANT varContext,[retval, out] IRulesAppliedCollection **ppRulesAppliedCollection);
  };
  
  [odl, oleautomation, dual, uuid (30510736-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementTraversal : IDispatch {
    [id (DISPID_IELEMENTTRAVERSAL_FIRSTELEMENTCHILD), propget] HRESULT firstElementChild ([retval, out] IHTMLElement **p);
    [id (DISPID_IELEMENTTRAVERSAL_LASTELEMENTCHILD), propget] HRESULT lastElementChild ([retval, out] IHTMLElement **p);
    [id (DISPID_IELEMENTTRAVERSAL_PREVIOUSELEMENTSIBLING), propget] HRESULT previousElementSibling ([retval, out] IHTMLElement **p);
    [id (DISPID_IELEMENTTRAVERSAL_NEXTELEMENTSIBLING), propget] HRESULT nextElementSibling ([retval, out] IHTMLElement **p);
    [id (DISPID_IELEMENTTRAVERSAL_CHILDELEMENTCOUNT), propget] HRESULT childElementCount ([retval, out] long *p);
  };

  [odl, oleautomation, dual, uuid (3050f3f2-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLDatabinding : IDispatch {
    [propput, id (DISPID_IHTMLDATABINDING_DATAFLD)] HRESULT dataFld ([in] BSTR v);
    [id (DISPID_IHTMLDATABINDING_DATAFLD), propget] HRESULT dataFld ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDATABINDING_DATASRC)] HRESULT dataSrc ([in] BSTR v);
    [id (DISPID_IHTMLDATABINDING_DATASRC), propget] HRESULT dataSrc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDATABINDING_DATAFORMATAS)] HRESULT dataFormatAs ([in] BSTR v);
    [id (DISPID_IHTMLDATABINDING_DATAFORMATAS), propget] HRESULT dataFormatAs ([retval, out] BSTR *p);
  };

  interface IHTMLDocument;

  [odl, oleautomation, dual, uuid (3050f6c9-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLElementDefaults : IDispatch {
    [id (DISPID_IHTMLELEMENTDEFAULTS_STYLE), propget, nonbrowsable] HRESULT style ([retval, out] IHTMLStyle **p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_TABSTOP)] HRESULT tabStop ([in] VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_TABSTOP), propget] HRESULT tabStop ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_VIEWINHERITSTYLE)] HRESULT viewInheritStyle ([in] VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_VIEWINHERITSTYLE), propget] HRESULT viewInheritStyle ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_VIEWMASTERTAB)] HRESULT viewMasterTab ([in] VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_VIEWMASTERTAB), propget] HRESULT viewMasterTab ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_SCROLLSEGMENTX), displaybind, bindable] HRESULT scrollSegmentX ([in] long v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_SCROLLSEGMENTX), propget, displaybind, bindable] HRESULT scrollSegmentX ([retval, out] long *p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_SCROLLSEGMENTY), displaybind, bindable] HRESULT scrollSegmentY ([in] long v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_SCROLLSEGMENTY), propget, displaybind, bindable] HRESULT scrollSegmentY ([retval, out] long *p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_ISMULTILINE)] HRESULT isMultiLine ([in] VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_ISMULTILINE), propget] HRESULT isMultiLine ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_CONTENTEDITABLE)] HRESULT contentEditable ([in] BSTR v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_CONTENTEDITABLE), propget] HRESULT contentEditable ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_CANHAVEHTML)] HRESULT canHaveHTML ([in] VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_CANHAVEHTML), propget] HRESULT canHaveHTML ([retval, out] VARIANT_BOOL *p);
    [propputref, id (DISPID_IHTMLELEMENTDEFAULTS_VIEWLINK)] HRESULT viewLink ([in] IHTMLDocument *v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_VIEWLINK), propget] HRESULT viewLink ([retval, out] IHTMLDocument **p);
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_FROZEN)] HRESULT frozen ([in] VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_FROZEN), propget] HRESULT frozen ([retval, out] VARIANT_BOOL *p);
  };

  [hidden, uuid (3050f58c-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLDefaults {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENTDEFAULTS_STYLE), propget, nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_TABSTOP)] void tabStop (VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_TABSTOP), propget] VARIANT_BOOL tabStop ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_VIEWINHERITSTYLE)] void viewInheritStyle (VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_VIEWINHERITSTYLE), propget] VARIANT_BOOL viewInheritStyle ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_VIEWMASTERTAB)] void viewMasterTab (VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_VIEWMASTERTAB), propget] VARIANT_BOOL viewMasterTab ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_SCROLLSEGMENTX), displaybind, bindable] void scrollSegmentX (long v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_SCROLLSEGMENTX), propget, displaybind, bindable] long scrollSegmentX ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_SCROLLSEGMENTY), displaybind, bindable] void scrollSegmentY (long v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_SCROLLSEGMENTY), propget, displaybind, bindable] long scrollSegmentY ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_ISMULTILINE)] void isMultiLine (VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_ISMULTILINE), propget] VARIANT_BOOL isMultiLine ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_CONTENTEDITABLE)] void contentEditable (BSTR v);
    [propget, id (DISPID_IHTMLELEMENTDEFAULTS_CONTENTEDITABLE)] BSTR contentEditable ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_CANHAVEHTML)] void canHaveHTML (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLELEMENTDEFAULTS_CANHAVEHTML)] VARIANT_BOOL canHaveHTML ();
    [propputref, id (DISPID_IHTMLELEMENTDEFAULTS_VIEWLINK)] void viewLink (IHTMLDocument *v);
    [propget, id (DISPID_IHTMLELEMENTDEFAULTS_VIEWLINK)] IHTMLDocument *viewLink ();
    [propput, id (DISPID_IHTMLELEMENTDEFAULTS_FROZEN)] void frozen (VARIANT_BOOL v);
    [id (DISPID_IHTMLELEMENTDEFAULTS_FROZEN), propget] VARIANT_BOOL frozen ();
    [id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), propget, hidden] IDispatch *constructor ();
  };

  [noncreatable, uuid (3050f6c8-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLDefaults {
    [default] dispinterface DispHTMLDefaults;
    interface IHTMLElementDefaults;
    interface IHTMLDOMConstructor;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CDefaults;")
  interface IHTMLEventObj;

  [odl, oleautomation, dual, uuid (3050f4fd-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTCDefaultDispatch : IDispatch {
    [id (DISPID_IHTCDEFAULTDISPATCH_ELEMENT), propget] HRESULT element ([retval, out] IHTMLElement **p);
    [id (DISPID_IHTCDEFAULTDISPATCH_CREATEEVENTOBJECT)] HRESULT createEventObject ([retval, out] IHTMLEventObj **eventObj);
    [id (DISPID_IHTCDEFAULTDISPATCH_DEFAULTS), propget] HRESULT defaults ([retval, out] IDispatch **p);
    [id (DISPID_IHTCDEFAULTDISPATCH_DOCUMENT), propget] HRESULT document ([retval, out] IDispatch **p);
  };

  [odl, oleautomation, dual, uuid (3050f5df-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTCPropertyBehavior : IDispatch {
    [id (DISPID_IHTCPROPERTYBEHAVIOR_FIRECHANGE)] HRESULT fireChange ();
    [propput, id (DISPID_IHTCPROPERTYBEHAVIOR_VALUE)] HRESULT value ([in] VARIANT v);
    [id (DISPID_IHTCPROPERTYBEHAVIOR_VALUE), propget] HRESULT value ([retval, out] VARIANT *p);
  };

  [odl, oleautomation, dual, uuid (3050f631-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTCMethodBehavior : IDispatch {
  };

  [odl, oleautomation, dual, uuid (3050f4ff-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTCEventBehavior : IDispatch {
    [id (DISPID_IHTCEVENTBEHAVIOR_FIRE)] HRESULT fire ([in] IHTMLEventObj *pvar);
  };

  [odl, oleautomation, dual, uuid (3050f5f4-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTCAttachBehavior : IDispatch {
    [id (DISPID_IHTCATTACHBEHAVIOR_FIREEVENT)] HRESULT fireEvent ([in] IDispatch *evt);
    [id (DISPID_IHTCATTACHBEHAVIOR_DETACHEVENT)] HRESULT detachEvent ();
  };

  [odl, oleautomation, dual, uuid (3050f7eb-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTCAttachBehavior2 : IDispatch {
    [id (DISPID_IHTCATTACHBEHAVIOR2_FIREEVENT)] HRESULT fireEvent ([in] VARIANT evt);
  };

  [odl, oleautomation, dual, uuid (3050f5dc-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTCDescBehavior : IDispatch {
    [id (DISPID_IHTCDESCBEHAVIOR_URN), propget, bindable] HRESULT urn ([retval, out] BSTR *p);
    [id (DISPID_IHTCDESCBEHAVIOR_NAME), propget, bindable] HRESULT name ([retval, out] BSTR *p);
  };

  [hidden, uuid (3050f573-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTCDefaultDispatch {
    properties:
    methods:
    [id (DISPID_IHTCDEFAULTDISPATCH_ELEMENT), propget] IHTMLElement *element ();
    [id (DISPID_IHTCDEFAULTDISPATCH_CREATEEVENTOBJECT)] IHTMLEventObj *createEventObject ();
    [id (DISPID_IHTCDEFAULTDISPATCH_DEFAULTS), propget] IDispatch *defaults ();
    [id (DISPID_IHTCDEFAULTDISPATCH_DOCUMENT), propget] IDispatch *document ();
  };

  [noncreatable, uuid (3050f4fc-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTCDefaultDispatch {
    [default] dispinterface DispHTCDefaultDispatch;
    interface IHTCDefaultDispatch;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CHtmlComponentDD;")

  [hidden, uuid (3050f57f-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTCPropertyBehavior {
    properties:
    methods:
    [id (DISPID_IHTCPROPERTYBEHAVIOR_FIRECHANGE)] void fireChange ();
    [propput, id (DISPID_IHTCPROPERTYBEHAVIOR_VALUE)] void value (VARIANT v);
    [id (DISPID_IHTCPROPERTYBEHAVIOR_VALUE), propget] VARIANT value ();
  };

  [noncreatable, uuid (3050f5de-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTCPropertyBehavior {
    [default] dispinterface DispHTCPropertyBehavior;
    interface IHTCPropertyBehavior;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CHtmlComponentProperty;")

  [hidden, uuid (3050f587-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTCMethodBehavior {
    properties:
    methods:
  };
  
  [noncreatable, uuid (3050f630-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTCMethodBehavior {
    [default] dispinterface DispHTCMethodBehavior;
    interface IHTCMethodBehavior;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CHtmlComponentMethod;")

  [hidden, uuid (3050f574-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTCEventBehavior {
    properties:
    methods:
    [id (DISPID_IHTCEVENTBEHAVIOR_FIRE)] void fire ([in] IHTMLEventObj *pvar);
  };

  [noncreatable, uuid (3050f4fe-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTCEventBehavior {
    [default] dispinterface DispHTCEventBehavior;
    interface IHTCEventBehavior;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CHtmlComponentEvent;")

  [hidden, uuid (3050f583-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTCAttachBehavior {
    properties:
    methods:
    [id (DISPID_IHTCATTACHBEHAVIOR2_FIREEVENT)] void fireEvent ([in] VARIANT evt);
    [id (DISPID_IHTCATTACHBEHAVIOR_DETACHEVENT)] void detachEvent ();
  };

  [noncreatable, uuid (3050f5f5-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTCAttachBehavior {
    [default] dispinterface DispHTCAttachBehavior;
    interface IHTCAttachBehavior2;
    interface IHTCAttachBehavior;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CHtmlComponentAttach;")

  [hidden, uuid (3050f57e-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTCDescBehavior {
    properties:
    methods:
    [id (DISPID_IHTCDESCBEHAVIOR_URN), propget, bindable] BSTR urn ();
    [id (DISPID_IHTCDESCBEHAVIOR_NAME), propget, bindable] BSTR name ();
  };

  [noncreatable, uuid (3050f5dd-98b5-11cf-bb82-00aa00bdce0b)] coclass HTCDescBehavior {
    [default] dispinterface DispHTCDescBehavior;
    interface IHTCDescBehavior;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CHtmlComponentDesc;")

  [odl, oleautomation, dual, uuid (3050f5e2-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLUrnCollection : IDispatch {
    [id (DISPID_IHTMLURNCOLLECTION_LENGTH), propget] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLURNCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] BSTR *ppUrn);
  };

  [hidden, uuid (3050f551-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLUrnCollection {
    properties:
    methods:
    [id (DISPID_IHTMLURNCOLLECTION_LENGTH), propget] long length ();
    [id (DISPID_IHTMLURNCOLLECTION_ITEM)] BSTR item ([in] long index);
    [id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), propget, hidden] IDispatch *constructor ();
  };

  [noncreatable, uuid (3050f580-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLUrnCollection {
    [default] dispinterface DispHTMLUrnCollection;
    interface IHTMLUrnCollection;
    interface IHTMLDOMConstructor;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CPeerUrnCollection;")

  [odl, oleautomation, dual, uuid (3050f4b7-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLGenericElement : IDispatch {
    [id (DISPID_IHTMLGENERICELEMENT_RECORDSET), propget, hidden] HRESULT recordset ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLGENERICELEMENT_NAMEDRECORDSET)] HRESULT namedRecordset ([in] BSTR dataMember,[optional, in] VARIANT *hierarchy,[retval, out] IDispatch **ppRecordset);
  };

  [hidden, uuid (3050f563-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLGenericElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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);
    [id (DISPID_IHTMLELEMENT_CLASSNAME), propget, bindable] BSTR className ();
    [propput, id (DISPID_IHTMLELEMENT_ID), bindable] void id (BSTR v);
    [id (DISPID_IHTMLELEMENT_ID), propget, bindable] BSTR id ();
    [id (DISPID_IHTMLELEMENT_TAGNAME), propget] BSTR tagName ();
    [id (DISPID_IHTMLELEMENT_PARENTELEMENT), propget] IHTMLElement *parentElement ();
    [id (DISPID_IHTMLELEMENT_STYLE), propget, nonbrowsable] IHTMLStyle *style ();
    [propput, id (DISPID_IHTMLELEMENT_ONHELP), displaybind, bindable] void onhelp (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONHELP), propget, displaybind, bindable] VARIANT onhelp ();
    [propput, id (DISPID_IHTMLELEMENT_ONCLICK), displaybind, bindable] void onclick (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONCLICK), propget, displaybind, bindable] VARIANT onclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONDBLCLICK), displaybind, bindable] void ondblclick (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDBLCLICK), propget, displaybind, bindable] VARIANT ondblclick ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYDOWN), displaybind, bindable] void onkeydown (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONKEYDOWN), propget, displaybind, bindable] VARIANT onkeydown ();
    [propput, id (DISPID_IHTMLELEMENT_ONKEYUP), displaybind, bindable] void onkeyup (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONKEYUP), propget, 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);
    [id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), propget, displaybind, bindable] VARIANT onfilterchange ();
    [id (DISPID_IHTMLELEMENT_CHILDREN), propget] IDispatch *children ();
    [id (DISPID_IHTMLELEMENT_ALL), propget] IDispatch *all ();
    [id (DISPID_IHTMLELEMENT2_SCOPENAME), propget] 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);
    [id (DISPID_IHTMLELEMENT2_ONLOSECAPTURE), propget, 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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [id (DISPID_IHTMLELEMENT2_CLIENTHEIGHT), propget, displaybind, bindable] long clientHeight ();
    [id (DISPID_IHTMLELEMENT2_CLIENTWIDTH), propget, displaybind, bindable] long clientWidth ();
    [id (DISPID_IHTMLELEMENT2_CLIENTTOP), propget, displaybind, bindable] long clientTop ();
    [id (DISPID_IHTMLELEMENT2_CLIENTLEFT), propget, 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);
    [id (DISPID_IHTMLELEMENT2_READYSTATE), propget] 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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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);
    [id (DISPID_IHTMLELEMENT7_ONCUECHANGE), propget, displaybind, bindable, hidden] VARIANT oncuechange ();
    [id (DISPID_IHTMLGENERICELEMENT_RECORDSET), propget, hidden] IDispatch *recordset ();
    [id (DISPID_IHTMLGENERICELEMENT_NAMEDRECORDSET)] IDispatch *namedRecordset ([in] BSTR dataMember,[optional, in] VARIANT *hierarchy);
  };

  [noncreatable, uuid (3050f4b8-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLGenericElement {
    [default] dispinterface DispHTMLGenericElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLGenericElement;
  };

  cpp_quote("EXTERN_C const GUID CLSID_CGenericElement;")

  [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), nonbrowsable] HRESULT style ([retval, out] IHTMLRuleStyle **p);
    [propget, id (DISPID_IHTMLSTYLESHEETRULE_READONLY)] HRESULT readOnly ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (305104c1-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheetRuleApplied : IDispatch {
    [propget, id (DISPID_IHTMLSTYLESHEETRULEAPPLIED_MSSPECIFICITY), restricted] HRESULT msSpecificity ([retval, out] long *p);
    [id (DISPID_IHTMLSTYLESHEETRULEAPPLIED_MSGETSPECIFICITY)] HRESULT msGetSpecificity ([in] long index,[retval, out] long *p);
  };

  [odl, oleautomation, dual, uuid (305106fd-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLStyleSheetRule2 : IDispatch {
    [propput, id (DISPID_IHTMLSTYLESHEETRULE2_IE9_SELECTORTEXT)] HRESULT selectorText ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEETRULE2_IE9_SELECTORTEXT)] HRESULT selectorText ([retval, out] BSTR *p);
  };

  [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);
  };

  [odl, oleautomation, dual, uuid (305106e8-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLStyleSheetRulesCollection2 : IDispatch {
    [propget, id (DISPID_IHTMLSTYLESHEETRULESCOLLECTION2_IE9_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLSTYLESHEETRULESCOLLECTION2_IE9_ITEM)] HRESULT item ([in] long index,[retval, out] IHTMLCSSRule **ppHTMLCSSRule);
  };

  [hidden, uuid (3050f50e-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLStyleSheetRule {
    properties:
    methods:
    [propget, id (DISPID_IHTMLCSSRULE_TYPE)] USHORT type ();
    [propput, id (DISPID_IHTMLCSSRULE_CSSTEXT)] void cssText (BSTR v);
    [propget, id (DISPID_IHTMLCSSRULE_CSSTEXT)] BSTR cssText ();
    [propget, id (DISPID_IHTMLCSSRULE_PARENTRULE)] IHTMLCSSRule *parentRule ();
    [propget, id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET)] IHTMLStyleSheet *parentStyleSheet ();
    [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 ();
    [propput, id (DISPID_IHTMLSTYLESHEETRULE2_IE9_SELECTORTEXT)] void ie9_selectorText (BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEETRULE2_IE9_SELECTORTEXT)] BSTR ie9_selectorText ();
    [propget, id (DISPID_IHTMLSTYLESHEETRULEAPPLIED_MSSPECIFICITY), restricted] long msSpecificity ();
    [id (DISPID_IHTMLSTYLESHEETRULEAPPLIED_MSGETSPECIFICITY)] long msGetSpecificity ([in] long index);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };

  [noncreatable, uuid (3050f3ce-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLStyleSheetRule {
    [default] dispinterface DispHTMLStyleSheetRule;
    interface IHTMLCSSRule;
    interface IHTMLStyleSheetRule;
    interface IHTMLStyleSheetRule2;
    interface IHTMLStyleSheetRuleApplied;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStyleSheetRule;")
  [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);
    [propget, id (DISPID_IHTMLSTYLESHEETRULESCOLLECTION2_IE9_LENGTH)] long ie9_length ();
    [id (DISPID_IHTMLSTYLESHEETRULESCOLLECTION2_IE9_ITEM)] IHTMLCSSRule *ie9_item ([in] long index);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f3cd-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStyleSheetRulesCollection {
    [default] dispinterface DispHTMLStyleSheetRulesCollection;
    interface IHTMLStyleSheetRulesCollection;
    interface IHTMLStyleSheetRulesCollection2;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStyleSheetRuleArray;")
  [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);
  };
  [odl, oleautomation, dual, uuid (305106ed-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheetPage2 : IDispatch {
    [propput, id (DISPID_IHTMLSTYLESHEETPAGE2_SELECTORTEXT)] HRESULT selectorText ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEETPAGE2_SELECTORTEXT)] HRESULT selectorText ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLSTYLESHEETPAGE2_STYLE), nonbrowsable] HRESULT style ([retval, out] IHTMLRuleStyle **p);
  };
  [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 (3050f540-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLStyleSheetPage {
    properties:
    methods:
    [propget, id (DISPID_IHTMLCSSRULE_TYPE)] USHORT type ();
    [propput, id (DISPID_IHTMLCSSRULE_CSSTEXT)] void cssText (BSTR v);
    [propget, id (DISPID_IHTMLCSSRULE_CSSTEXT)] BSTR cssText ();
    [propget, id (DISPID_IHTMLCSSRULE_PARENTRULE)] IHTMLCSSRule *parentRule ();
    [propget, id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET)] IHTMLStyleSheet *parentStyleSheet ();
    [propget, id (DISPID_IHTMLSTYLESHEETPAGE_SELECTOR)] BSTR selector ();
    [propget, id (DISPID_IHTMLSTYLESHEETPAGE_PSEUDOCLASS)] BSTR pseudoClass ();
    [propput, id (DISPID_IHTMLSTYLESHEETPAGE2_SELECTORTEXT)] void selectorText (BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEETPAGE2_SELECTORTEXT)] BSTR selectorText ();
    [propget, id (DISPID_IHTMLSTYLESHEETPAGE2_STYLE), nonbrowsable] IHTMLRuleStyle *style ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f7ef-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStyleSheetPage {
    [default] dispinterface DispHTMLStyleSheetPage;
    interface IHTMLCSSRule;
    interface IHTMLStyleSheetPage;
    interface IHTMLStyleSheetPage2;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStyleSheetPage;")
  [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);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f7f1-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStyleSheetPagesCollection {
    [default] dispinterface DispHTMLStyleSheetPagesCollection;
    interface IHTMLStyleSheetPagesCollection;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStyleSheetPageArray;")
  interface IHTMLStyleSheetsCollection;
  [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,[defaultvalue (0), retval, out] long *plIndex);
    [id (DISPID_IHTMLSTYLESHEET_ADDRULE)] HRESULT addRule ([in] BSTR bstrSelector,[in] BSTR bstrStyle,[defaultvalue (-1), in] long lIndex,[defaultvalue (0), 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);
  };
  [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,[defaultvalue (0), retval, out] long *plNewIndex);
  };
  [odl, oleautomation, dual, uuid (30510496-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheet3 : IDispatch {
    [propput, id (DISPID_IHTMLSTYLESHEET3_IE8_HREF)] HRESULT href ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEET3_IE8_HREF)] HRESULT href ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLSTYLESHEET3_ISALTERNATE)] HRESULT isAlternate ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLSTYLESHEET3_ISPREFALTERNATE)] HRESULT isPrefAlternate ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (305106f4-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheet4 : IDispatch {
    [propget, id (DISPID_IHTMLSTYLESHEET4_IE9_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLSTYLESHEET4_IE9_HREF)] HRESULT href ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLSTYLESHEET4_IE9_TITLE)] HRESULT title ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLSTYLESHEET4_OWNERNODE)] HRESULT ownerNode ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IHTMLSTYLESHEET4_OWNERRULE)] HRESULT ownerRule ([retval, out] IHTMLCSSRule **p);
    [propget, id (DISPID_IHTMLSTYLESHEET4_CSSRULES)] HRESULT cssRules ([retval, out] IHTMLStyleSheetRulesCollection **p);
    [propget, id (DISPID_IHTMLSTYLESHEET4_IE9_MEDIA)] HRESULT media ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLSTYLESHEET4_INSERTRULE)] HRESULT insertRule ([in] BSTR bstrRule,[defaultvalue (-1), in] long lIndex,[defaultvalue (0), retval, out] long *plNewIndex);
    [id (DISPID_IHTMLSTYLESHEET4_DELETERULE)] HRESULT deleteRule ([defaultvalue (-1), in] 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);
    [propput, id (DISPID_IHTMLSTYLESHEET3_IE8_HREF)] void ie8_href (BSTR v);
    [propget, id (DISPID_IHTMLSTYLESHEET3_IE8_HREF)] BSTR ie8_href ();
    [propget, id (DISPID_IHTMLSTYLESHEET3_ISALTERNATE)] VARIANT_BOOL isAlternate ();
    [propget, id (DISPID_IHTMLSTYLESHEET3_ISPREFALTERNATE)] VARIANT_BOOL isPrefAlternate ();
    [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,[defaultvalue (-1), in] long lIndex);
    [id (DISPID_IHTMLSTYLESHEET4_DELETERULE)] void deleteRule ([defaultvalue (-1), in] long lIndex);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f2e4-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStyleSheet {
    [default] dispinterface DispHTMLStyleSheet;
    interface IHTMLStyleSheet;
    interface IHTMLStyleSheet2;
    interface IHTMLStyleSheet3;
    interface IHTMLStyleSheet4;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStyleSheet;")
  [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), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLSTYLESHEETSCOLLECTION_ITEM)] HRESULT item ([in] VARIANT *pvarIndex,[retval, out] VARIANT *pvarResult);
  };
  [odl, oleautomation, dual, uuid (305106e7-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheetsCollection2 : IDispatch {
    [id (DISPID_IHTMLSTYLESHEETSCOLLECTION2_IE9_ITEM)] HRESULT item ([in] long index,[retval, out] VARIANT *pvarResult);
  };
  [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);
    [id (DISPID_IHTMLSTYLESHEETSCOLLECTION2_IE9_ITEM)] VARIANT ie9_item ([in] long index);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f37f-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStyleSheetsCollection {
    [default] dispinterface DispHTMLStyleSheetsCollection;
    interface IHTMLStyleSheetsCollection;
    interface IHTMLStyleSheetsCollection2;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStyleSheetArray;")
  [hidden, uuid (3050f61d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLLinkElementEvents2 {
    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_HTMLLINKELEMENTEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLLINKELEMENTEVENTS2_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f3cc-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLLinkElementEvents {
    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_HTMLLINKELEMENTEVENTS_ONLOAD)] void onload ();
    [id (DISPID_HTMLLINKELEMENTEVENTS_ONERROR)] void onerror ();
  };
  [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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLINKELEMENT_REL), displaybind, bindable] HRESULT rel ([in] BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT_REL), displaybind, bindable] HRESULT rel ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLINKELEMENT_REV), displaybind, bindable] HRESULT rev ([in] BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT_REV), displaybind, bindable] HRESULT rev ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLINKELEMENT_TYPE), displaybind, bindable] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT_TYPE), displaybind, bindable] HRESULT type ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLLINKELEMENT_READYSTATE)] HRESULT readyState ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLINKELEMENT_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLLINKELEMENT_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLLINKELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLLINKELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLLINKELEMENT_ONERROR), displaybind, bindable] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLLINKELEMENT_ONERROR), displaybind, bindable] HRESULT onerror ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLLINKELEMENT_STYLESHEET)] HRESULT styleSheet ([retval, out] IHTMLStyleSheet **p);
    [propput, id (DISPID_IHTMLLINKELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLLINKELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLLINKELEMENT_MEDIA), displaybind, bindable] HRESULT media ([in] BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT_MEDIA), displaybind, bindable] HRESULT media ([retval, out] BSTR *p);
  };
  [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 ([retval, out] BSTR *p);
  };
  [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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLINKELEMENT3_HREFLANG), displaybind, bindable] HRESULT hreflang ([in] BSTR v);
    [propget, id (DISPID_IHTMLLINKELEMENT3_HREFLANG), displaybind, bindable] HRESULT hreflang ([retval, out] BSTR *p);
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (30510726-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLLinkElement5 : IDispatch {
    [propget, id (DISPID_IHTMLLINKELEMENT5_SHEET)] HRESULT sheet ([retval, out] IHTMLStyleSheet **p);
  };
  [hidden, uuid (3050f524-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLLinkElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLLINKELEMENT5_SHEET)] IHTMLStyleSheet *sheet ();
  };
  [noncreatable, uuid (3050f277-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLLinkElement {
    [default] dispinterface DispHTMLLinkElement;
    [source, default] dispinterface HTMLLinkElementEvents;
    [source] dispinterface HTMLLinkElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLLinkElement;
    interface IHTMLLinkElement2;
    interface IHTMLLinkElement3;
    interface IHTMLLinkElement4;
    interface IHTMLLinkElement5;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CLinkElement;")
  typedef enum _htmlUnit {
    htmlUnitCharacter = 1,
    htmlUnitWord = 2,
    htmlUnitSentence = 3,
    htmlUnitTextEdit = 6,
    htmlUnit_Max = 0x7FFFFFFF
  } htmlUnit;

  typedef enum _htmlEndPoints {
    htmlEndPointsStartToStart = 1,
    htmlEndPointsStartToEnd = 2,
    htmlEndPointsEndToStart = 3,
    htmlEndPointsEndToEnd = 4,
    htmlEndPoints_Max = 0x7FFFFFFF
  } htmlEndPoints;

  typedef enum _htmlDirection {
    htmlDirectionForward = 99999,
    htmlDirectionBackward = -99999,
    htmlDirection_Max = 0x7FFFFFFF
  } htmlDirection;
  [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,[defaultvalue (0), retval, out] long *ActualCount);
    [id (DISPID_IHTMLTXTRANGE_MOVESTART)] HRESULT moveStart ([in] BSTR Unit,[defaultvalue (1), in] long Count,[defaultvalue (0), retval, out] long *ActualCount);
    [id (DISPID_IHTMLTXTRANGE_MOVEEND)] HRESULT moveEnd ([in] BSTR Unit,[defaultvalue (1), in] long Count,[defaultvalue (0), 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,[defaultvalue (0), 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, [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);
  };
  [odl, oleautomation, dual, uuid (3050f40b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTextRangeMetrics : IDispatch {
    [propget, id (DISPID_IHTMLTEXTRANGEMETRICS_OFFSETTOP)] HRESULT offsetTop ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTEXTRANGEMETRICS_OFFSETLEFT)] HRESULT offsetLeft ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTEXTRANGEMETRICS_BOUNDINGTOP)] HRESULT boundingTop ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTEXTRANGEMETRICS_BOUNDINGLEFT)] HRESULT boundingLeft ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTEXTRANGEMETRICS_BOUNDINGWIDTH)] HRESULT boundingWidth ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTEXTRANGEMETRICS_BOUNDINGHEIGHT)] HRESULT boundingHeight ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (3050f4a6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTextRangeMetrics2 : IDispatch {
    [id (DISPID_IHTMLTEXTRANGEMETRICS2_GETCLIENTRECTS)] HRESULT getClientRects ([retval, out] IHTMLRectCollection **pRectCol);
    [id (DISPID_IHTMLTEXTRANGEMETRICS2_GETBOUNDINGCLIENTRECT)] HRESULT getBoundingClientRect ([retval, out] IHTMLRect **pRect);
  };
  [odl, oleautomation, dual, uuid (3050f7ed-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTxtRangeCollection : IDispatch {
    [propget, id (DISPID_IHTMLTXTRANGECOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTXTRANGECOLLECTION__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLTXTRANGECOLLECTION_ITEM)] HRESULT item ([in] VARIANT *pvarIndex,[retval, out] VARIANT *pvarResult);
  };
  [odl, oleautomation, dual, uuid (305104ae-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDOMRange : IDispatch {
    [propget, id (DISPID_IHTMLDOMRANGE_STARTCONTAINER)] HRESULT startContainer ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOMRANGE_STARTOFFSET)] HRESULT startOffset ([retval, out] long *p);
    [propget, id (DISPID_IHTMLDOMRANGE_ENDCONTAINER)] HRESULT endContainer ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLDOMRANGE_ENDOFFSET)] HRESULT endOffset ([retval, out] long *p);
    [propget, id (DISPID_IHTMLDOMRANGE_COLLAPSED)] HRESULT collapsed ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLDOMRANGE_COMMONANCESTORCONTAINER)] HRESULT commonAncestorContainer ([retval, out] 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,[retval, out] long *compareResult);
    [id (DISPID_IHTMLDOMRANGE_DELETECONTENTS)] HRESULT deleteContents ();
    [id (DISPID_IHTMLDOMRANGE_EXTRACTCONTENTS)] HRESULT extractContents ([retval, out] IDispatch **ppDocumentFragment);
    [id (DISPID_IHTMLDOMRANGE_CLONECONTENTS)] HRESULT cloneContents ([retval, out] 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 ([retval, out] IHTMLDOMRange **ppClonedRange);
    [id (DISPID_IHTMLDOMRANGE_TOSTRING)] HRESULT toString ([retval, out] BSTR *pRangeString);
    [id (DISPID_IHTMLDOMRANGE_DETACH)] HRESULT detach ();
    [id (DISPID_IHTMLDOMRANGE_GETCLIENTRECTS)] HRESULT getClientRects ([retval, out] IHTMLRectCollection **ppRectCol);
    [id (DISPID_IHTMLDOMRANGE_GETBOUNDINGCLIENTRECT)] HRESULT getBoundingClientRect ([retval, out] IHTMLRect **ppRect);
  };
  [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 *refNode,[in] long offset);
    [id (DISPID_IHTMLDOMRANGE_SETEND)] void setEnd ([in] IDispatch *refNode,[in] long offset);
    [id (DISPID_IHTMLDOMRANGE_SETSTARTBEFORE)] void setStartBefore ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_SETSTARTAFTER)] void setStartAfter ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_SETENDBEFORE)] void setEndBefore ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_SETENDAFTER)] void setEndAfter ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_COLLAPSE)] void collapse ([in] VARIANT_BOOL toStart);
    [id (DISPID_IHTMLDOMRANGE_SELECTNODE)] void selectNode ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_SELECTNODECONTENTS)] void selectNodeContents ([in] IDispatch *refNode);
    [id (DISPID_IHTMLDOMRANGE_COMPAREBOUNDARYPOINTS)] long compareBoundaryPoints ([in] short how,[in] IDispatch *sourceRange);
    [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 *newNode);
    [id (DISPID_IHTMLDOMRANGE_SURROUNDCONTENTS)] void surroundContents ([in] IDispatch *newParent);
    [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 ();
  };
  [noncreatable, uuid (305106c3-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDOMRange {
    [default] dispinterface DispHTMLDOMRange;
    interface IHTMLDOMRange;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDomRange;")
  [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);
  };
  [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 ();
  };
  [odl, oleautomation, dual, uuid (3050f1f7-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFormElement : IDispatch {
    [propput, id (DISPID_IHTMLFORMELEMENT_ACTION), displaybind, bindable] HRESULT action ([in] BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_ACTION), displaybind, bindable] HRESULT action ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFORMELEMENT_DIR), displaybind, bindable] HRESULT dir ([in] BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_DIR), displaybind, bindable] HRESULT dir ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFORMELEMENT_ENCODING), displaybind, bindable] HRESULT encoding ([in] BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_ENCODING), displaybind, bindable] HRESULT encoding ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFORMELEMENT_METHOD), displaybind, bindable] HRESULT method ([in] BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_METHOD), displaybind, bindable] HRESULT method ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLFORMELEMENT_ELEMENTS)] HRESULT elements ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLFORMELEMENT_TARGET), displaybind, bindable] HRESULT target ([in] BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_TARGET), displaybind, bindable] HRESULT target ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFORMELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFORMELEMENT_ONSUBMIT), displaybind, bindable] HRESULT onsubmit ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFORMELEMENT_ONSUBMIT), displaybind, bindable] HRESULT onsubmit ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFORMELEMENT_ONRESET), displaybind, bindable] HRESULT onreset ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFORMELEMENT_ONRESET), displaybind, bindable] 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), hidden, restricted] 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);
  };
  [odl, oleautomation, dual, uuid (3050f4f6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFormElement2 : IDispatch {
    [propput, id (DISPID_IHTMLFORMELEMENT2_ACCEPTCHARSET), displaybind, bindable] HRESULT acceptCharset ([in] BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT2_ACCEPTCHARSET), displaybind, bindable] HRESULT acceptCharset ([retval, out] BSTR *p);
    [id (DISPID_IHTMLFORMELEMENT2_URNS)] HRESULT urns ([in] VARIANT urn,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (3050f836-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFormElement3 : IDispatch {
    [id (DISPID_IHTMLFORMELEMENT3_NAMEDITEM)] HRESULT namedItem ([in] BSTR name,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (3050f645-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSubmitData : IDispatch {
    [id (DISPID_IHTMLSUBMITDATA_APPENDNAMEVALUEPAIR)] HRESULT appendNameValuePair ([defaultvalue (L""), in] BSTR name,[defaultvalue (L""), in] BSTR value);
    [id (DISPID_IHTMLSUBMITDATA_APPENDNAMEFILEPAIR)] HRESULT appendNameFilePair ([defaultvalue (L""), in] BSTR name,[defaultvalue (L""), in] BSTR filename);
    [id (DISPID_IHTMLSUBMITDATA_APPENDITEMSEPARATOR)] HRESULT appendItemSeparator ();
  };
  [odl, oleautomation, dual, uuid (3051042c-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFormElement4 : IDispatch {
    [propput, id (DISPID_IHTMLFORMELEMENT4_IE8_ACTION), displaybind, bindable] HRESULT action ([in] BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT4_IE8_ACTION), displaybind, bindable] HRESULT action ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f510-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLFormElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLFORMELEMENT_ACTION), displaybind, bindable] void action (BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_ACTION), displaybind, bindable] BSTR action ();
    [propput, id (DISPID_IHTMLFORMELEMENT_ENCODING), displaybind, bindable] void encoding (BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_ENCODING), displaybind, bindable] BSTR encoding ();
    [propput, id (DISPID_IHTMLFORMELEMENT_METHOD), displaybind, bindable] void method (BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_METHOD), displaybind, bindable] BSTR method ();
    [propget, id (DISPID_IHTMLFORMELEMENT_ELEMENTS)] IDispatch *elements ();
    [propput, id (DISPID_IHTMLFORMELEMENT_TARGET), displaybind, bindable] void target (BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_TARGET), displaybind, bindable] BSTR target ();
    [propput, id (DISPID_IHTMLFORMELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT_NAME), displaybind, bindable] 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 ([optional, in] VARIANT name,[optional, in] VARIANT index);
    [id (DISPID_IHTMLFORMELEMENT_TAGS)] IDispatch *tags ([in] VARIANT tagName);
    [propput, id (DISPID_IHTMLFORMELEMENT2_ACCEPTCHARSET), displaybind, bindable] void acceptCharset (BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT2_ACCEPTCHARSET), displaybind, bindable] BSTR acceptCharset ();
    [id (DISPID_IHTMLFORMELEMENT2_URNS)] IDispatch *urns ([in] VARIANT urn);
    [id (DISPID_IHTMLFORMELEMENT3_NAMEDITEM)] IDispatch *namedItem ([in] BSTR name);
    [id (DISPID_IHTMLSUBMITDATA_APPENDNAMEVALUEPAIR)] void appendNameValuePair ([defaultvalue (L""), in] BSTR name,[defaultvalue (L""), in] BSTR value);
    [id (DISPID_IHTMLSUBMITDATA_APPENDNAMEFILEPAIR)] void appendNameFilePair ([defaultvalue (L""), in] BSTR name,[defaultvalue (L""), in] BSTR filename);
    [id (DISPID_IHTMLSUBMITDATA_APPENDITEMSEPARATOR)] void appendItemSeparator ();
    [propput, id (DISPID_IHTMLFORMELEMENT4_IE8_ACTION), displaybind, bindable] void ie8_action (BSTR v);
    [propget, id (DISPID_IHTMLFORMELEMENT4_IE8_ACTION), displaybind, bindable] BSTR ie8_action ();
  };
  [noncreatable, uuid (3050f251-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLFormElement {
    [default] dispinterface DispHTMLFormElement;
    [source, default] dispinterface HTMLFormElementEvents;
    [source] dispinterface HTMLFormElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLFormElement;
    interface IHTMLFormElement2;
    interface IHTMLFormElement3;
    interface IHTMLSubmitData;
    interface IHTMLFormElement4;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CFormElement;")
  [hidden, uuid (3050f612-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLControlElementEvents2 {
    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 (3050f4ea-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLControlElementEvents {
    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 ();
  };

  typedef enum _htmlStart {
    htmlStartfileopen = 0,
    htmlStartmouseover = 1,
    htmlStart_Max = 0x7FFFFFFF
  } htmlStart;

  [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);
  };
  [odl, oleautomation, dual, uuid (3050f218-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTextElement : IDispatch {
  };
  [hidden, uuid (3050f537-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTextElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
  };
  [noncreatable, uuid (3050f26a-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTextElement {
    [default] dispinterface DispHTMLTextElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLTextElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTextElement;")
  [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);
  };
  [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 ();
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (3050f29c-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLControlRange : IDispatch {
    [id (DISPID_IHTMLCONTROLRANGE_SELECT)] HRESULT select ();
    [id (DISPID_IHTMLCONTROLRANGE_ADD)] HRESULT add ([in] IHTMLControlElement *item);
    [id (DISPID_IHTMLCONTROLRANGE_REMOVE)] HRESULT remove ([in] long index);
    [id (DISPID_IHTMLCONTROLRANGE_ITEM)] HRESULT item ([in] long index,[retval, out] IHTMLElement **pdisp);
    [id (DISPID_IHTMLCONTROLRANGE_SCROLLINTOVIEW)] HRESULT scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDSUPPORTED)] HRESULT queryCommandSupported ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDENABLED)] HRESULT queryCommandEnabled ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDSTATE)] HRESULT queryCommandState ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDINDETERM)] HRESULT queryCommandIndeterm ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDTEXT)] HRESULT queryCommandText ([in] BSTR cmdID,[retval, out] BSTR *pcmdText);
    [id (DISPID_IHTMLCONTROLRANGE_QUERYCOMMANDVALUE)] HRESULT queryCommandValue ([in] BSTR cmdID,[retval, out] VARIANT *pcmdValue);
    [id (DISPID_IHTMLCONTROLRANGE_EXECCOMMAND)] HRESULT execCommand ([in] BSTR cmdID,[in] VARIANT_BOOL showUI,[optional, in] VARIANT value,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLCONTROLRANGE_EXECCOMMANDSHOWHELP)] HRESULT execCommandShowHelp ([in] BSTR cmdID,[retval, out] VARIANT_BOOL *pfRet);
    [id (DISPID_IHTMLCONTROLRANGE_COMMONPARENTELEMENT)] HRESULT commonParentElement ([retval, out] IHTMLElement **parent);
    [propget, id (DISPID_IHTMLCONTROLRANGE_LENGTH)] HRESULT length ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (3050f65e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLControlRange2 : IDispatch {
    [id (DISPID_IHTMLCONTROLRANGE2_ADDELEMENT)] HRESULT addElement ([in] IHTMLElement *item);
  };
  [hidden, uuid (3050f616-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLImgEvents2 {
    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_HTMLIMGEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLIMGEVENTS2_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLIMGEVENTS2_ONABORT)] void onabort ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f25b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLImgEvents {
    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_HTMLIMGEVENTS_ONLOAD)] void onload ();
    [id (DISPID_HTMLIMGEVENTS_ONERROR)] void onerror ();
    [id (DISPID_HTMLIMGEVENTS_ONABORT)] void onabort ();
  };
  [odl, oleautomation, dual, uuid (3050f240-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLImgElement : IDispatch {
    [propput, id (DISPID_IHTMLIMGELEMENT_ISMAP), displaybind, bindable] HRESULT isMap ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLIMGELEMENT_ISMAP), displaybind, bindable] HRESULT isMap ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_USEMAP), displaybind, bindable] HRESULT useMap ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_USEMAP), displaybind, bindable] 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), displaybind, bindable] HRESULT border ([in] VARIANT v);
    [propget, id (DISPID_IHTMLIMGELEMENT_BORDER), displaybind, bindable] HRESULT border ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_VSPACE), displaybind, bindable] HRESULT vspace ([in] long v);
    [propget, id (DISPID_IHTMLIMGELEMENT_VSPACE), displaybind, bindable] HRESULT vspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_HSPACE), displaybind, bindable] HRESULT hspace ([in] long v);
    [propget, id (DISPID_IHTMLIMGELEMENT_HSPACE), displaybind, bindable] HRESULT hspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_ALT), displaybind, bindable] HRESULT alt ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_ALT), displaybind, bindable] HRESULT alt ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_SRC), displaybind, bindable] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_SRC), displaybind, bindable] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_LOWSRC), displaybind, bindable] HRESULT lowsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_LOWSRC), displaybind, bindable] HRESULT lowsrc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_VRML), displaybind, bindable] HRESULT vrml ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_VRML), displaybind, bindable] HRESULT vrml ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_DYNSRC), displaybind, bindable] HRESULT dynsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_DYNSRC), displaybind, bindable] 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), displaybind, bindable] HRESULT loop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLIMGELEMENT_LOOP), displaybind, bindable] HRESULT loop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_ALIGN), displaybind, bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_ALIGN), displaybind, bindable] HRESULT align ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLIMGELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_ONERROR), displaybind, bindable] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLIMGELEMENT_ONERROR), displaybind, bindable] HRESULT onerror ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_ONABORT), displaybind, bindable] HRESULT onabort ([in] VARIANT v);
    [propget, id (DISPID_IHTMLIMGELEMENT_ONABORT), displaybind, bindable] HRESULT onabort ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLIMGELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_NAME), displaybind, bindable] 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), displaybind, bindable] HRESULT start ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT_START), displaybind, bindable] HRESULT start ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f826-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLImgElement2 : IDispatch {
    [propput, id (DISPID_IHTMLIMGELEMENT2_LONGDESC), displaybind, bindable] HRESULT longDesc ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT2_LONGDESC), displaybind, bindable] HRESULT longDesc ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510434-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLImgElement3 : IDispatch {
    [propput, id (DISPID_IHTMLIMGELEMENT3_IE8_LONGDESC)] HRESULT longDesc ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT3_IE8_LONGDESC)] HRESULT longDesc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT3_IE8_VRML)] HRESULT vrml ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT3_IE8_VRML)] HRESULT vrml ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT3_IE8_LOWSRC)] HRESULT lowsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT3_IE8_LOWSRC)] HRESULT lowsrc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIMGELEMENT3_IE8_DYNSRC)] HRESULT dynsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT3_IE8_DYNSRC)] HRESULT dynsrc ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305107f6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLImgElement4 : IDispatch {
    [propget, id (DISPID_IHTMLIMGELEMENT4_NATURALWIDTH)] HRESULT naturalWidth ([retval, out] long *p);
    [propget, id (DISPID_IHTMLIMGELEMENT4_NATURALHEIGHT)] HRESULT naturalHeight ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (30510793-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMSImgElement : IDispatch {
    [propput, id (DISPID_IHTMLMSIMGELEMENT_MSPLAYTODISABLED), displaybind, bindable] HRESULT msPlayToDisabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSIMGELEMENT_MSPLAYTODISABLED), displaybind, bindable] HRESULT msPlayToDisabled ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLMSIMGELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] HRESULT msPlayToPrimary ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSIMGELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] HRESULT msPlayToPrimary ([retval, out] VARIANT_BOOL *p);
  };
  [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 **);
  };
  [hidden, uuid (3050f51c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLImg {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
    [propput, id (DISPID_IHTMLIMGELEMENT3_IE8_LONGDESC)] void ie8_longDesc (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT3_IE8_LONGDESC)] BSTR ie8_longDesc ();
    [propput, id (DISPID_IHTMLIMGELEMENT3_IE8_VRML)] void ie8_vrml (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT3_IE8_VRML)] BSTR ie8_vrml ();
    [propput, id (DISPID_IHTMLIMGELEMENT3_IE8_LOWSRC)] void ie8_lowsrc (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT3_IE8_LOWSRC)] BSTR ie8_lowsrc ();
    [propput, id (DISPID_IHTMLIMGELEMENT3_IE8_DYNSRC)] void ie8_dynsrc (BSTR v);
    [propget, id (DISPID_IHTMLIMGELEMENT3_IE8_DYNSRC)] BSTR ie8_dynsrc ();
    [propget, id (DISPID_IHTMLIMGELEMENT4_NATURALWIDTH)] long naturalWidth ();
    [propget, id (DISPID_IHTMLIMGELEMENT4_NATURALHEIGHT)] long naturalHeight ();
    [propput, id (DISPID_IHTMLMSIMGELEMENT_MSPLAYTODISABLED), displaybind, bindable] void msPlayToDisabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSIMGELEMENT_MSPLAYTODISABLED), displaybind, bindable] VARIANT_BOOL msPlayToDisabled ();
    [propput, id (DISPID_IHTMLMSIMGELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] void msPlayToPrimary (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSIMGELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] VARIANT_BOOL msPlayToPrimary ();
  };
  [noncreatable, uuid (3050f241-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLImg {
    [default] dispinterface DispHTMLImg;
    [source, default] dispinterface HTMLImgEvents;
    [source] dispinterface HTMLImgEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLImgElement;
    interface IHTMLImgElement2;
    interface IHTMLImgElement3;
    interface IHTMLImgElement4;
    interface IHTMLMSImgElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CImgElement;")
  [noncreatable, uuid (3050f38f-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLImageElementFactory {
    [default] interface IHTMLImageElementFactory;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CImageElementFactory;")
  typedef enum _bodyScroll {
    bodyScrollyes = 1,
    bodyScrollno = 2,
    bodyScrollauto = 4,
    bodyScrolldefault = 3,
    bodyScroll_Max = 0x7FFFFFFF
  } bodyScroll;
  [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);
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (30510422-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBodyElement3 : IDispatch {
    [propput, id (DISPID_IHTMLBODYELEMENT3_IE8_BACKGROUND), displaybind, bindable] HRESULT background ([in] BSTR v);
    [propget, id (DISPID_IHTMLBODYELEMENT3_IE8_BACKGROUND), displaybind, bindable] HRESULT background ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBODYELEMENT3_ONONLINE), displaybind, bindable] HRESULT ononline ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT3_ONONLINE), displaybind, bindable] HRESULT ononline ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT3_ONOFFLINE), displaybind, bindable] HRESULT onoffline ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT3_ONOFFLINE), displaybind, bindable] HRESULT onoffline ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT3_ONHASHCHANGE), displaybind, bindable] HRESULT onhashchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT3_ONHASHCHANGE), displaybind, bindable] HRESULT onhashchange ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (30510795-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBodyElement4 : IDispatch {
    [propput, id (DISPID_IHTMLBODYELEMENT4_ONMESSAGE), displaybind, bindable] HRESULT onmessage ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT4_ONMESSAGE), displaybind, bindable] HRESULT onmessage ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBODYELEMENT4_ONSTORAGE), displaybind, bindable] HRESULT onstorage ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT4_ONSTORAGE), displaybind, bindable] HRESULT onstorage ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (30510822-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBodyElement5 : IDispatch {
    [propput, id (DISPID_IHTMLBODYELEMENT5_ONPOPSTATE), displaybind, bindable] HRESULT onpopstate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT5_ONPOPSTATE), displaybind, bindable] HRESULT onpopstate ([retval, out] VARIANT *p);
  };
  [hidden, uuid (3050f507-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLBody {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
    [propput, id (DISPID_IHTMLBODYELEMENT3_IE8_BACKGROUND), displaybind, bindable] void ie8_background (BSTR v);
    [propget, id (DISPID_IHTMLBODYELEMENT3_IE8_BACKGROUND), displaybind, bindable] BSTR ie8_background ();
    [propput, id (DISPID_IHTMLBODYELEMENT3_ONONLINE), displaybind, bindable] void ononline (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT3_ONONLINE), displaybind, bindable] VARIANT ononline ();
    [propput, id (DISPID_IHTMLBODYELEMENT3_ONOFFLINE), displaybind, bindable] void onoffline (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT3_ONOFFLINE), displaybind, bindable] VARIANT onoffline ();
    [propput, id (DISPID_IHTMLBODYELEMENT3_ONHASHCHANGE), displaybind, bindable] void onhashchange (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT3_ONHASHCHANGE), displaybind, bindable] VARIANT onhashchange ();
    [propput, id (DISPID_IHTMLBODYELEMENT4_ONMESSAGE), displaybind, bindable] void onmessage (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT4_ONMESSAGE), displaybind, bindable] VARIANT onmessage ();
    [propput, id (DISPID_IHTMLBODYELEMENT4_ONSTORAGE), displaybind, bindable] void onstorage (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT4_ONSTORAGE), displaybind, bindable] VARIANT onstorage ();
    [propput, id (DISPID_IHTMLBODYELEMENT5_ONPOPSTATE), displaybind, bindable] void onpopstate (VARIANT v);
    [propget, id (DISPID_IHTMLBODYELEMENT5_ONPOPSTATE), displaybind, bindable] VARIANT onpopstate ();
  };
  [noncreatable, uuid (3050f24a-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLBody {
    [default] dispinterface DispHTMLBody;
    [source, default] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLBodyElement;
    interface IHTMLBodyElement2;
    interface IHTMLBodyElement3;
    interface IHTMLBodyElement4;
    interface IHTMLBodyElement5;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CBodyElement;")
  [odl, oleautomation, dual, uuid (3050f1d9-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFontElement : IDispatch {
    [propput, id (DISPID_IHTMLFONTELEMENT_COLOR), displaybind, bindable] HRESULT color ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFONTELEMENT_COLOR), displaybind, bindable] HRESULT color ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFONTELEMENT_FACE), displaybind, bindable] HRESULT face ([in] BSTR v);
    [propget, id (DISPID_IHTMLFONTELEMENT_FACE), displaybind, bindable] HRESULT face ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFONTELEMENT_SIZE), displaybind, bindable] HRESULT size ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFONTELEMENT_SIZE), displaybind, bindable] HRESULT size ([retval, out] VARIANT *p);
  };
  [hidden, uuid (3050f512-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLFontElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLFONTELEMENT_COLOR), displaybind, bindable] void color (VARIANT v);
    [propget, id (DISPID_IHTMLFONTELEMENT_COLOR), displaybind, bindable] VARIANT color ();
    [propput, id (DISPID_IHTMLFONTELEMENT_FACE), displaybind, bindable] void face (BSTR v);
    [propget, id (DISPID_IHTMLFONTELEMENT_FACE), displaybind, bindable] BSTR face ();
    [propput, id (DISPID_IHTMLFONTELEMENT_SIZE), displaybind, bindable] void size (VARIANT v);
    [propget, id (DISPID_IHTMLFONTELEMENT_SIZE), displaybind, bindable] VARIANT size ();
  };
  [noncreatable, uuid (3050f27b-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLFontElement {
    [default] dispinterface DispHTMLFontElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLFontElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CFontElement;")
  [hidden, uuid (3050f610-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLAnchorEvents2 {
    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 (3050f29d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLAnchorEvents {
    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 ();
  };
  [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 ();
  };
  [odl, oleautomation, dual, uuid (3050f825-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAnchorElement2 : IDispatch {
    [propput, id (DISPID_IHTMLANCHORELEMENT2_CHARSET), displaybind, bindable] HRESULT charset ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT2_CHARSET), displaybind, bindable] HRESULT charset ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT2_COORDS), displaybind, bindable] HRESULT coords ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT2_COORDS), displaybind, bindable] HRESULT coords ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT2_HREFLANG), displaybind, bindable] HRESULT hreflang ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT2_HREFLANG), displaybind, bindable] HRESULT hreflang ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT2_SHAPE), displaybind, bindable] HRESULT shape ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT2_SHAPE), displaybind, bindable] HRESULT shape ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT2_TYPE), displaybind, bindable] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT2_TYPE), displaybind, bindable] HRESULT type ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3051041d-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAnchorElement3 : IDispatch {
    [propput, id (DISPID_IHTMLANCHORELEMENT3_IE8_SHAPE)] HRESULT shape ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT3_IE8_SHAPE)] HRESULT shape ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT3_IE8_COORDS)] HRESULT coords ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT3_IE8_COORDS)] HRESULT coords ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLANCHORELEMENT3_IE8_HREF)] HRESULT href ([in] BSTR v);
    [propget, id (DISPID_IHTMLANCHORELEMENT3_IE8_HREF)] HRESULT href ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f502-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLAnchorElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
  };
  [noncreatable, uuid (3050f248-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLAnchorElement {
    [default] dispinterface DispHTMLAnchorElement;
    [source, default] dispinterface HTMLAnchorEvents;
    [source] dispinterface HTMLAnchorEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLAnchorElement;
    interface IHTMLAnchorElement2;
    interface IHTMLAnchorElement3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CAnchorElement;")
  [hidden, uuid (3050f61c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLLabelEvents2 {
    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 (3050f329-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLLabelEvents {
    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 ();
  };
  [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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLABELELEMENT_ACCESSKEY), displaybind, bindable] HRESULT accessKey ([in] BSTR v);
    [propget, id (DISPID_IHTMLLABELELEMENT_ACCESSKEY), displaybind, bindable] HRESULT accessKey ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f832-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLLabelElement2 : IDispatch {
    [propget, id (DISPID_IHTMLLABELELEMENT2_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
  };
  [hidden, uuid (3050f522-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLLabelElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
  };
  [noncreatable, uuid (3050f32b-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLLabelElement {
    [default] dispinterface DispHTMLLabelElement;
    [source, default] dispinterface HTMLLabelEvents;
    [source] dispinterface HTMLLabelEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLLabelElement;
    interface IHTMLLabelElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CLabelElement;")
  [odl, oleautomation, dual, uuid (3050f20e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLListElement : IDispatch {
  };
  [odl, oleautomation, dual, uuid (3050f822-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLListElement2 : IDispatch {
    [propput, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] HRESULT compact ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] HRESULT compact ([retval, out] VARIANT_BOOL *p);
  };
  [hidden, uuid (3050f525-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLListElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] void compact (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] VARIANT_BOOL compact ();
  };
  [noncreatable, uuid (3050f272-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLListElement {
    [default] dispinterface DispHTMLListElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLListElement;
    interface IHTMLListElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CListElement;")
  [odl, oleautomation, dual, uuid (3050f1dd-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLUListElement : IDispatch {
    [propput, id (DISPID_IHTMLULISTELEMENT_COMPACT), displaybind, bindable] HRESULT compact ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLULISTELEMENT_COMPACT), displaybind, bindable] HRESULT compact ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLULISTELEMENT_TYPE), displaybind, bindable] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLULISTELEMENT_TYPE), displaybind, bindable] HRESULT type ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f538-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLUListElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] void compact (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] VARIANT_BOOL compact ();
    [propput, id (DISPID_IHTMLULISTELEMENT_TYPE), displaybind, bindable] void type (BSTR v);
    [propget, id (DISPID_IHTMLULISTELEMENT_TYPE), displaybind, bindable] BSTR type ();
  };
  [noncreatable, uuid (3050f269-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLUListElement {
    [default] dispinterface DispHTMLUListElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLListElement;
    interface IHTMLListElement2;
    interface IHTMLUListElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CUListElement;")
  [odl, oleautomation, dual, uuid (3050f1de-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLOListElement : IDispatch {
    [propput, id (DISPID_IHTMLOLISTELEMENT_COMPACT), displaybind, bindable] HRESULT compact ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOLISTELEMENT_COMPACT), displaybind, bindable] HRESULT compact ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLOLISTELEMENT_START), displaybind, bindable] HRESULT start ([in] long v);
    [propget, id (DISPID_IHTMLOLISTELEMENT_START), displaybind, bindable] HRESULT start ([retval, out] long *p);
    [propput, id (DISPID_IHTMLOLISTELEMENT_TYPE), displaybind, bindable] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLOLISTELEMENT_TYPE), displaybind, bindable] HRESULT type ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f52a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLOListElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] void compact (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] VARIANT_BOOL compact ();
    [propput, id (DISPID_IHTMLOLISTELEMENT_START), displaybind, bindable] void start (long v);
    [propget, id (DISPID_IHTMLOLISTELEMENT_START), displaybind, bindable] long start ();
    [propput, id (DISPID_IHTMLOLISTELEMENT_TYPE), displaybind, bindable] void type (BSTR v);
    [propget, id (DISPID_IHTMLOLISTELEMENT_TYPE), displaybind, bindable] BSTR type ();
  };
  [noncreatable, uuid (3050f270-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLOListElement {
    [default] dispinterface DispHTMLOListElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLListElement;
    interface IHTMLListElement2;
    interface IHTMLOListElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_COListElement;")
  [odl, oleautomation, dual, uuid (3050f1e0-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLLIElement : IDispatch {
    [propput, id (DISPID_IHTMLLIELEMENT_TYPE), displaybind, bindable] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLLIELEMENT_TYPE), displaybind, bindable] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLLIELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] long v);
    [propget, id (DISPID_IHTMLLIELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] long *p);
  };
  [hidden, uuid (3050f523-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLLIElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLLIELEMENT_TYPE), displaybind, bindable] void type (BSTR v);
    [propget, id (DISPID_IHTMLLIELEMENT_TYPE), displaybind, bindable] BSTR type ();
    [propput, id (DISPID_IHTMLLIELEMENT_VALUE), displaybind, bindable] void value (long v);
    [propget, id (DISPID_IHTMLLIELEMENT_VALUE), displaybind, bindable] long value ();
  };
  [noncreatable, uuid (3050f273-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLLIElement {
    [default] dispinterface DispHTMLLIElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLLIElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CLIElement;")
  [odl, oleautomation, dual, uuid (3050f208-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBlockElement : IDispatch {
    [propput, id (DISPID_IHTMLBLOCKELEMENT_CLEAR), displaybind, bindable] HRESULT clear ([in] BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT_CLEAR), displaybind, bindable] HRESULT clear ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f823-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBlockElement2 : IDispatch {
    [propput, id (DISPID_IHTMLBLOCKELEMENT2_CITE), displaybind, bindable] HRESULT cite ([in] BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT2_CITE), displaybind, bindable] HRESULT cite ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBLOCKELEMENT2_WIDTH), displaybind, bindable] HRESULT width ([in] BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT2_WIDTH), displaybind, bindable] HRESULT width ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510494-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBlockElement3 : IDispatch {
    [propput, id (DISPID_IHTMLBLOCKELEMENT3_IE8_CITE)] HRESULT cite ([in] BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT3_IE8_CITE)] HRESULT cite ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f506-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLBlockElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLBLOCKELEMENT_CLEAR), displaybind, bindable] void clear (BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT_CLEAR), displaybind, bindable] BSTR clear ();
    [propput, id (DISPID_IHTMLBLOCKELEMENT2_CITE), displaybind, bindable] void cite (BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT2_CITE), displaybind, bindable] BSTR cite ();
    [propput, id (DISPID_IHTMLBLOCKELEMENT2_WIDTH), displaybind, bindable] void width (BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT2_WIDTH), displaybind, bindable] BSTR width ();
    [propput, id (DISPID_IHTMLBLOCKELEMENT3_IE8_CITE)] void ie8_cite (BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT3_IE8_CITE)] BSTR ie8_cite ();
  };
  [noncreatable, uuid (3050f281-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLBlockElement {
    [default] dispinterface DispHTMLBlockElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLBlockElement;
    interface IHTMLBlockElement2;
    interface IHTMLBlockElement3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CBlockElement;")
  [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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDIVELEMENT_NOWRAP), displaybind, bindable] HRESULT noWrap ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDIVELEMENT_NOWRAP), displaybind, bindable] HRESULT noWrap ([retval, out] VARIANT_BOOL *p);
  };
  [hidden, uuid (3050f50c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDivElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
  };
  [noncreatable, uuid (3050f27e-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDivElement {
    [default] dispinterface DispHTMLDivElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLElementEvents2;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLDivElement;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDivElement;")
  [odl, oleautomation, dual, uuid (3050f1f2-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDDElement : IDispatch {
    [propput, id (DISPID_IHTMLDDELEMENT_NOWRAP), displaybind, bindable] HRESULT noWrap ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDDELEMENT_NOWRAP), displaybind, bindable] HRESULT noWrap ([retval, out] VARIANT_BOOL *p);
  };
  [hidden, uuid (3050f50b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDDElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLDDELEMENT_NOWRAP), displaybind, bindable] void noWrap (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDDELEMENT_NOWRAP), displaybind, bindable] VARIANT_BOOL noWrap ();
  };
  [noncreatable, uuid (3050f27f-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDDElement {
    [default] dispinterface DispHTMLDDElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLDDElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDDElement;")
  [odl, oleautomation, dual, uuid (3050f1f3-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDTElement : IDispatch {
    [propput, id (DISPID_IHTMLDTELEMENT_NOWRAP), displaybind, bindable] HRESULT noWrap ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDTELEMENT_NOWRAP), displaybind, bindable] HRESULT noWrap ([retval, out] VARIANT_BOOL *p);
  };
  [hidden, uuid (3050f50d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDTElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLDTELEMENT_NOWRAP), displaybind, bindable] void noWrap (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDTELEMENT_NOWRAP), displaybind, bindable] VARIANT_BOOL noWrap ();
  };
  [noncreatable, uuid (3050f27c-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDTElement {
    [default] dispinterface DispHTMLDTElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLDTElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDTElement;")
  [odl, oleautomation, dual, uuid (3050f1f0-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBRElement : IDispatch {
    [propput, id (DISPID_IHTMLBRELEMENT_CLEAR), displaybind, bindable] HRESULT clear ([in] BSTR v);
    [propget, id (DISPID_IHTMLBRELEMENT_CLEAR), displaybind, bindable] HRESULT clear ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f53a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLBRElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLBRELEMENT_CLEAR), displaybind, bindable] void clear (BSTR v);
    [propget, id (DISPID_IHTMLBRELEMENT_CLEAR), displaybind, bindable] BSTR clear ();
  };
  [noncreatable, uuid (3050f280-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLBRElement {
    [default] dispinterface DispHTMLBRElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLBRElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CBRElement;")
  [odl, oleautomation, dual, uuid (3050f1f1-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDListElement : IDispatch {
    [propput, id (DISPID_IHTMLDLISTELEMENT_COMPACT), bindable] HRESULT compact ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDLISTELEMENT_COMPACT), bindable] HRESULT compact ([retval, out] VARIANT_BOOL *p);
  };
  [hidden, uuid (3050f53b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDListElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] void compact (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLLISTELEMENT2_COMPACT), bindable] VARIANT_BOOL compact ();
  };
  [noncreatable, uuid (3050f27d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDListElement {
    [default] dispinterface DispHTMLDListElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLListElement;
    interface IHTMLListElement2;
    interface IHTMLDListElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDListElement;")
  [odl, oleautomation, dual, uuid (3050f1f4-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLHRElement : IDispatch {
    [propput, id (DISPID_IHTMLHRELEMENT_ALIGN), displaybind, bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLHRELEMENT_ALIGN), displaybind, bindable] HRESULT align ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLHRELEMENT_COLOR), displaybind, bindable] HRESULT color ([in] VARIANT v);
    [propget, id (DISPID_IHTMLHRELEMENT_COLOR), displaybind, bindable] HRESULT color ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLHRELEMENT_NOSHADE), bindable] HRESULT noShade ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLHRELEMENT_NOSHADE), bindable] HRESULT noShade ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLHRELEMENT_WIDTH)] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLHRELEMENT_WIDTH)] HRESULT width ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLHRELEMENT_SIZE)] HRESULT size ([in] VARIANT v);
    [propget, id (DISPID_IHTMLHRELEMENT_SIZE)] HRESULT size ([retval, out] VARIANT *p);
  };
  [hidden, uuid (3050f53d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLHRElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLHRELEMENT_ALIGN), displaybind, bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLHRELEMENT_ALIGN), displaybind, bindable] BSTR align ();
    [propput, id (DISPID_IHTMLHRELEMENT_COLOR), displaybind, bindable] void color (VARIANT v);
    [propget, id (DISPID_IHTMLHRELEMENT_COLOR), displaybind, bindable] VARIANT color ();
    [propput, id (DISPID_IHTMLHRELEMENT_NOSHADE), bindable] void noShade (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLHRELEMENT_NOSHADE), bindable] VARIANT_BOOL noShade ();
    [propput, id (DISPID_IHTMLHRELEMENT_WIDTH)] void width (VARIANT v);
    [propget, id (DISPID_IHTMLHRELEMENT_WIDTH)] VARIANT width ();
    [propput, id (DISPID_IHTMLHRELEMENT_SIZE)] void size (VARIANT v);
    [propget, id (DISPID_IHTMLHRELEMENT_SIZE)] VARIANT size ();
  };
  [noncreatable, uuid (3050f252-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLHRElement {
    [default] dispinterface DispHTMLHRElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLHRElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CHRElement;")
  [odl, oleautomation, dual, uuid (3050f1f5-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLParaElement : IDispatch {
    [propput, id (DISPID_IHTMLPARAELEMENT_ALIGN), bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLPARAELEMENT_ALIGN), bindable] HRESULT align ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f52c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLParaElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLBLOCKELEMENT_CLEAR), displaybind, bindable] void clear (BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT_CLEAR), displaybind, bindable] BSTR clear ();
    [propput, id (DISPID_IHTMLPARAELEMENT_ALIGN), bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLPARAELEMENT_ALIGN), bindable] BSTR align ();
  };
  [noncreatable, uuid (3050f26f-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLParaElement {
    [default] dispinterface DispHTMLParaElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLBlockElement;
    interface IHTMLParaElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CParaElement;")
  [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), hidden, restricted] 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);
  };
  [odl, oleautomation, dual, uuid (3050f5ee-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLElementCollection2 : IDispatch {
    [id (DISPID_IHTMLELEMENTCOLLECTION2_URNS)] HRESULT urns ([in] VARIANT urn,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (3050f835-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLElementCollection3 : IDispatch {
    [id (DISPID_IHTMLELEMENTCOLLECTION3_NAMEDITEM)] HRESULT namedItem ([in] BSTR name,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (30510425-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLElementCollection4 : IDispatch {
    [propget, id (DISPID_IHTMLELEMENTCOLLECTION4_IE8_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLELEMENTCOLLECTION4_IE8_ITEM)] HRESULT item ([in] long index,[retval, out] IHTMLElement2 **pNode);
    [id (DISPID_IHTMLELEMENTCOLLECTION4_IE8_NAMEDITEM)] HRESULT namedItem ([in] BSTR name,[retval, out] IHTMLElement2 **pNode);
  };
  [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 ([optional, in] VARIANT name,[optional, in] 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);
    [propget, id (DISPID_IHTMLELEMENTCOLLECTION4_IE8_LENGTH)] long ie8_length ();
    [id (DISPID_IHTMLELEMENTCOLLECTION4_IE8_ITEM)] IHTMLElement2 *ie8_item ([in] long index);
    [id (DISPID_IHTMLELEMENTCOLLECTION4_IE8_NAMEDITEM)] IHTMLElement2 *ie8_namedItem ([in] BSTR name);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f4cb-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLElementCollection {
    [default] dispinterface DispHTMLElementCollection;
    interface IHTMLElementCollection;
    interface IHTMLElementCollection2;
    interface IHTMLElementCollection3;
    interface IHTMLElementCollection4;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CElementCollection;")
  [odl, oleautomation, dual, uuid (3050f1f6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLHeaderElement : IDispatch {
    [propput, id (DISPID_IHTMLHEADERELEMENT_ALIGN), bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLHEADERELEMENT_ALIGN), bindable] HRESULT align ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f515-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLHeaderElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLBLOCKELEMENT_CLEAR), displaybind, bindable] void clear (BSTR v);
    [propget, id (DISPID_IHTMLBLOCKELEMENT_CLEAR), displaybind, bindable] BSTR clear ();
    [propput, id (DISPID_IHTMLHEADERELEMENT_ALIGN), bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLHEADERELEMENT_ALIGN), bindable] BSTR align ();
  };
  [noncreatable, uuid (3050f27a-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLHeaderElement {
    [default] dispinterface DispHTMLHeaderElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLBlockElement;
    interface IHTMLHeaderElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CHeaderElement;")
  [hidden, uuid (3050f622-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLSelectElementEvents2 {
    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_HTMLSELECTELEMENTEVENTS2_ONCHANGE)] void onchange ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f302-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLSelectElementEvents {
    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_HTMLSELECTELEMENTEVENTS_ONCHANGE)] void onchange ();
  };
  typedef enum _htmlSelectType {
    htmlSelectTypeSelectOne = 1,
    htmlSelectTypeSelectMultiple = 2,
    htmlSelectType_Max = 0x7FFFFFFF
  } htmlSelectType;

  typedef enum _htmlSelectExFlag {
    htmlSelectExFlagNone = 0,
    htmlSelectExFlagHideSelectionInDesign = 0x1,
    htmlSelectExFlag_Max = 0x7FFFFFFF
  } htmlSelectExFlag;
  interface IHTMLOptionElement;
  [object, pointer_default (unique), uuid (3050f2d1-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSelectElementEx : IUnknown {
    HRESULT ShowDropdown ([in] BOOL fShow);
    HRESULT SetSelectExFlags ([in] DWORD lFlags);
    HRESULT GetSelectExFlags ([retval, out] DWORD *pFlags);
    HRESULT GetDropdownOpen ([retval, out] BOOL *pfOpen);
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (3050f5ed-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSelectElement2 : IDispatch {
    [id (DISPID_IHTMLSELECTELEMENT2_URNS)] HRESULT urns ([in] VARIANT urn,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (3050f838-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSelectElement4 : IDispatch {
    [id (DISPID_IHTMLSELECTELEMENT4_NAMEDITEM)] HRESULT namedItem ([in] BSTR name,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (3051049d-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSelectElement5 : IDispatch {
    [id (DISPID_IHTMLSELECTELEMENT5_IE8_ADD)] HRESULT add ([in] IHTMLOptionElement *pElem,[in] VARIANT *pvarBefore);
  };
  [odl, oleautomation, dual, uuid (30510760-98b6-11cf-bb82-00aa00bdce0b)] interface IHTMLSelectElement6 : IDispatch {
    [id (DISPID_IHTMLSELECTELEMENT6_IE9_ADD)] HRESULT add ([in] IHTMLOptionElement *pElem,[in] VARIANT *pvarBefore);
    [propput, id (DISPID_IHTMLSELECTELEMENT6_IE9_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLSELECTELEMENT6_IE9_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f531-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLSelectElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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,[optional, in] VARIANT before);
    [id (DISPID_IHTMLSELECTELEMENT_REMOVE)] void remove ([defaultvalue (-1), in] 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 ([optional, in] VARIANT name,[optional, in] 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);
    [id (DISPID_IHTMLSELECTELEMENT5_IE8_ADD)] void ie8_add ([in] IHTMLOptionElement *pElem,[in] VARIANT *pvarBefore);
    [id (DISPID_IHTMLSELECTELEMENT6_IE9_ADD)] void ie9_add ([in] IHTMLOptionElement *pElem,[in] VARIANT *pvarBefore);
    [propput, id (DISPID_IHTMLSELECTELEMENT6_IE9_VALUE), displaybind, bindable] void ie9_value (BSTR v);
    [propget, id (DISPID_IHTMLSELECTELEMENT6_IE9_VALUE), displaybind, bindable] BSTR ie9_value ();
  };
  [noncreatable, uuid (3050f245-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLSelectElement {
    [default] dispinterface DispHTMLSelectElement;
    [source, default] dispinterface HTMLSelectElementEvents;
    [source] dispinterface HTMLSelectElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLSelectElement;
    interface IHTMLSelectElement2;
    interface IHTMLSelectElement4;
    interface IHTMLSelectElement5;
    interface IHTMLSelectElement6;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSelectElement;")
  [hidden, uuid (3050f597-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLWndSelectElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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,[optional, in] VARIANT before);
    [id (DISPID_IHTMLSELECTELEMENT_REMOVE)] void remove ([defaultvalue (-1), in] 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 ([optional, in] VARIANT name,[optional, in] 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);
  };
  [noncreatable, uuid (3050f2cf-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLWndSelectElement {
    [default] dispinterface DispHTMLWndSelectElement;
    [source, default] dispinterface HTMLSelectElementEvents;
    [source] dispinterface HTMLSelectElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLSelectElement;
    interface IHTMLSelectElement2;
    interface IHTMLSelectElement4;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CWndSelectElement;")
  typedef enum _htmlSelection {
    htmlSelectionNone = 0,
    htmlSelectionText = 1,
    htmlSelectionControl = 2,
    htmlSelectionTable = 3,
    htmlSelection_Max = 0x7FFFFFFF
  } htmlSelection;
  [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);
  };
  [odl, oleautomation, dual, uuid (3050f7ec-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSelectionObject2 : IDispatch {
    [id (DISPID_IHTMLSELECTIONOBJECT2_CREATERANGECOLLECTION)] HRESULT createRangeCollection ([retval, out] IDispatch **rangeCollection);
    [propget, id (DISPID_IHTMLSELECTIONOBJECT2_TYPEDETAIL)] HRESULT typeDetail ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305104b6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSelection : IDispatch {
    [propget, id (DISPID_IHTMLSELECTION_ANCHORNODE)] HRESULT anchorNode ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLSELECTION_ANCHOROFFSET)] HRESULT anchorOffset ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSELECTION_FOCUSNODE)] HRESULT focusNode ([retval, out] IHTMLDOMNode **p);
    [propget, id (DISPID_IHTMLSELECTION_FOCUSOFFSET)] HRESULT focusOffset ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSELECTION_ISCOLLAPSED)] HRESULT isCollapsed ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLSELECTION_COLLAPSE)] HRESULT collapse ([in] IDispatch *parentNode,[in] long offfset);
    [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 ([retval, out] long *p);
    [id (DISPID_IHTMLSELECTION_GETRANGEAT)] HRESULT getRangeAt ([in] long index,[retval, out] 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 ([retval, out] BSTR *pSelectionString);
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (305107b4-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLOptionElement4 : IDispatch {
    [propput, id (DISPID_IHTMLOPTIONELEMENT4_IE9_VALUE)] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT4_IE9_VALUE)] HRESULT value ([retval, out] BSTR *p);
  };
  [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 **);
  };
  [hidden, uuid (3050f52b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLOptionElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
    [propput, id (DISPID_IHTMLOPTIONELEMENT4_IE9_VALUE)] void ie9_value (BSTR v);
    [propget, id (DISPID_IHTMLOPTIONELEMENT4_IE9_VALUE)] BSTR ie9_value ();
  };
  [noncreatable, uuid (3050f24d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLOptionElement {
    [default] dispinterface DispHTMLOptionElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLOptionElement;
    interface IHTMLOptionElement3;
    interface IHTMLOptionElement4;
  };
  cpp_quote("EXTERN_C const GUID CLSID_COptionElement;")
  [noncreatable, uuid (3050f38d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLOptionElementFactory {
    [default] interface IHTMLOptionElementFactory;
  };
  cpp_quote("EXTERN_C const GUID CLSID_COptionElementFactory;")
  [hidden, uuid (3050f598-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLWndOptionElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 (3050f2d0-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLWndOptionElement {
    [default] dispinterface DispHTMLWndOptionElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLOptionElement;
    interface IHTMLOptionElement3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CWndOptionElement;")
  [hidden, uuid (3050f617-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLButtonElementEvents2 {
    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 (3050f2b3-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLButtonElementEvents {
    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 (3050f618-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLInputTextElementEvents2 {
    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_HTMLINPUTTEXTELEMENTEVENTS2_ONCHANGE)] VARIANT_BOOL onchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONSELECT)] void onselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONABORT)] void onabort ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f619-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLOptionButtonElementEvents2 {
    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_HTMLINPUTTEXTELEMENTEVENTS2_ONCHANGE)] VARIANT_BOOL onchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONSELECT)] void onselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONABORT)] void onabort ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f61a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLInputFileElementEvents2 {
    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_HTMLINPUTTEXTELEMENTEVENTS2_ONCHANGE)] VARIANT_BOOL onchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONSELECT)] void onselect ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS2_ONABORT)] void onabort ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f61b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLInputImageEvents2 {
    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_HTMLINPUTIMAGEEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTIMAGEEVENTS2_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLINPUTIMAGEEVENTS2_ONABORT)] void onabort ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f2a7-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLInputTextElementEvents {
    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_HTMLINPUTTEXTELEMENTEVENTS_ONCHANGE)] VARIANT_BOOL onchange ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONSELECT)] void onselect ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONLOAD)] void onload ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONERROR)] void onerror ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONABORT)] void onabort ();
  };
  [hidden, uuid (3050f2bd-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLOptionButtonElementEvents {
    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_HTMLINPUTTEXTELEMENTEVENTS_ONCHANGE)] VARIANT_BOOL onchange ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONSELECT)] void onselect ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONLOAD)] void onload ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONERROR)] void onerror ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONABORT)] void onabort ();
  };
  [hidden, uuid (3050f2af-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLInputFileElementEvents {
    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_HTMLINPUTTEXTELEMENTEVENTS_ONCHANGE)] VARIANT_BOOL onchange ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONSELECT)] void onselect ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONLOAD)] void onload ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONERROR)] void onerror ();
    [id (DISPID_HTMLINPUTTEXTELEMENTEVENTS_ONABORT)] void onabort ();
  };
  [hidden, uuid (3050f2c3-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLInputImageEvents {
    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_HTMLINPUTIMAGEEVENTS_ONLOAD)] void onload ();
    [id (DISPID_HTMLINPUTIMAGEEVENTS_ONERROR)] void onerror ();
    [id (DISPID_HTMLINPUTIMAGEEVENTS_ONABORT)] void onabort ();
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (3050f821-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputElement2 : IDispatch {
    [propput, id (DISPID_IHTMLINPUTELEMENT2_ACCEPT), displaybind, bindable] HRESULT accept ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT2_ACCEPT), displaybind, bindable] HRESULT accept ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT2_USEMAP), displaybind, bindable] HRESULT useMap ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT2_USEMAP), displaybind, bindable] HRESULT useMap ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510435-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputElement3 : IDispatch {
    [propput, id (DISPID_IHTMLINPUTELEMENT3_IE8_SRC)] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT3_IE8_SRC)] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT3_IE8_LOWSRC)] HRESULT lowsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT3_IE8_LOWSRC)] HRESULT lowsrc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT3_IE8_VRML)] HRESULT vrml ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT3_IE8_VRML)] HRESULT vrml ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTELEMENT3_IE8_DYNSRC)] HRESULT dynsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT3_IE8_DYNSRC)] HRESULT dynsrc ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f2b2-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputButtonElement : IDispatch {
    [propget, id (DISPID_IHTMLINPUTBUTTONELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTBUTTONELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTBUTTONELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTBUTTONELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTBUTTONELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTBUTTONELEMENT_STATUS)] HRESULT status ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTBUTTONELEMENT_STATUS)] HRESULT status ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTBUTTONELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTBUTTONELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLINPUTBUTTONELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_CREATETEXTRANGE)] HRESULT createTextRange ([retval, out] IHTMLTxtRange **range);
  };
  [odl, oleautomation, dual, uuid (3050f2a4-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputHiddenElement : IDispatch {
    [propget, id (DISPID_IHTMLINPUTHIDDENELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTHIDDENELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTHIDDENELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTHIDDENELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTHIDDENELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTHIDDENELEMENT_STATUS)] HRESULT status ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTHIDDENELEMENT_STATUS)] HRESULT status ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTHIDDENELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTHIDDENELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLINPUTHIDDENELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
    [id (DISPID_IHTMLINPUTHIDDENELEMENT_CREATETEXTRANGE)] HRESULT createTextRange ([retval, out] IHTMLTxtRange **range);
  };
  [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);
  };
  [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 ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONEND)] HRESULT selectionEnd ([in] long v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT2_SELECTIONEND)] HRESULT selectionEnd ([retval, out] long *p);
    [id (DISPID_IHTMLINPUTTEXTELEMENT2_SETSELECTIONRANGE)] HRESULT setSelectionRange ([in] long start,[in] long end);
  };
  [odl, oleautomation, dual, uuid (3050f2ad-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputFileElement : IDispatch {
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_STATUS)] HRESULT status ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_STATUS)] HRESULT status ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_SIZE), displaybind, bindable] HRESULT size ([in] long v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_SIZE), displaybind, bindable] HRESULT size ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_MAXLENGTH), displaybind, bindable] HRESULT maxLength ([in] long v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_MAXLENGTH), displaybind, bindable] HRESULT maxLength ([retval, out] long *p);
    [id (DISPID_IHTMLINPUTFILEELEMENT_SELECT)] HRESULT select ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_ONCHANGE), displaybind, bindable] HRESULT onchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_ONCHANGE), displaybind, bindable] HRESULT onchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_ONSELECT), displaybind, bindable] HRESULT onselect ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_ONSELECT), displaybind, bindable] HRESULT onselect ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (3050f2c2-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputImage : IDispatch {
    [propget, id (DISPID_IHTMLINPUTIMAGE_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_BORDER), displaybind, bindable] HRESULT border ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_BORDER), displaybind, bindable] HRESULT border ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_VSPACE), displaybind, bindable] HRESULT vspace ([in] long v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_VSPACE), displaybind, bindable] HRESULT vspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_HSPACE), displaybind, bindable] HRESULT hspace ([in] long v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_HSPACE), displaybind, bindable] HRESULT hspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_ALT), displaybind, bindable] HRESULT alt ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_ALT), displaybind, bindable] HRESULT alt ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_SRC), displaybind, bindable] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_SRC), displaybind, bindable] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_LOWSRC), displaybind, bindable] HRESULT lowsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_LOWSRC), displaybind, bindable] HRESULT lowsrc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_VRML), displaybind, bindable] HRESULT vrml ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_VRML), displaybind, bindable] HRESULT vrml ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_DYNSRC), displaybind, bindable] HRESULT dynsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_DYNSRC), displaybind, bindable] HRESULT dynsrc ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLINPUTIMAGE_READYSTATE)] HRESULT readyState ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLINPUTIMAGE_COMPLETE)] HRESULT complete ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_LOOP), displaybind, bindable] HRESULT loop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_LOOP), displaybind, bindable] HRESULT loop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_ALIGN), displaybind, bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_ALIGN), displaybind, bindable] HRESULT align ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_ONERROR), displaybind, bindable] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_ONERROR), displaybind, bindable] HRESULT onerror ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_ONABORT), displaybind, bindable] HRESULT onabort ([in] VARIANT v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_ONABORT), displaybind, bindable] HRESULT onabort ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_WIDTH)] HRESULT width ([in] long v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_WIDTH)] HRESULT width ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_HEIGHT)] HRESULT height ([in] long v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_HEIGHT)] HRESULT height ([retval, out] long *p);
    [propput, id (DISPID_IHTMLINPUTIMAGE_START), displaybind, bindable] HRESULT start ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_START), displaybind, bindable] HRESULT start ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f2d4-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLInputRangeElement : IDispatch {
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_ALT), displaybind, bindable] HRESULT alt ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_ALT), displaybind, bindable] HRESULT alt ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_MIN)] HRESULT min ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_MIN)] HRESULT min ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_MAX)] HRESULT max ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_MAX)] HRESULT max ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_STEP)] HRESULT step ([in] BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_STEP)] HRESULT step ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_VALUEASNUMBER)] HRESULT valueAsNumber ([in] double v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_VALUEASNUMBER)] HRESULT valueAsNumber ([retval, out] double *p);
    [id (DISPID_IHTMLINPUTRANGEELEMENT_STEPUP)] HRESULT stepUp ([defaultvalue (1), in] long n);
    [id (DISPID_IHTMLINPUTRANGEELEMENT_STEPDOWN)] HRESULT stepDown ([defaultvalue (1), in] long n);
  };
  [hidden, uuid (3050f57d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLInputElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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);
    [propput, id (DISPID_IHTMLINPUTELEMENT3_IE8_SRC)] void ie8_src (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT3_IE8_SRC)] BSTR ie8_src ();
    [propput, id (DISPID_IHTMLINPUTELEMENT3_IE8_LOWSRC)] void ie8_lowsrc (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT3_IE8_LOWSRC)] BSTR ie8_lowsrc ();
    [propput, id (DISPID_IHTMLINPUTELEMENT3_IE8_VRML)] void ie8_vrml (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT3_IE8_VRML)] BSTR ie8_vrml ();
    [propput, id (DISPID_IHTMLINPUTELEMENT3_IE8_DYNSRC)] void ie8_dynsrc (BSTR v);
    [propget, id (DISPID_IHTMLINPUTELEMENT3_IE8_DYNSRC)] BSTR ie8_dynsrc ();
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_MIN)] void min (BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_MIN)] BSTR min ();
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_MAX)] void max (BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_MAX)] BSTR max ();
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_STEP)] void step (BSTR v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_STEP)] BSTR step ();
    [propput, id (DISPID_IHTMLINPUTRANGEELEMENT_VALUEASNUMBER)] void valueAsNumber (double v);
    [propget, id (DISPID_IHTMLINPUTRANGEELEMENT_VALUEASNUMBER)] double valueAsNumber ();
    [id (DISPID_IHTMLINPUTRANGEELEMENT_STEPUP)] void stepUp ([defaultvalue (1), in] long n);
    [id (DISPID_IHTMLINPUTRANGEELEMENT_STEPDOWN)] void stepDown ([defaultvalue (1), in] long n);
  };
  [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;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLInputElement;
    interface IHTMLInputElement2;
    interface IHTMLInputTextElement;
    interface IHTMLInputTextElement2;
    interface IHTMLInputHiddenElement;
    interface IHTMLInputButtonElement;
    interface IHTMLInputFileElement;
    interface IHTMLOptionButtonElement;
    interface IHTMLInputImage;
    interface IHTMLInputElement3;
    interface IHTMLInputRangeElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CInput;")
  [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);
  };
  [odl, oleautomation, dual, uuid (3050f2d3-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTextAreaElement2 : IDispatch {
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT2_SELECTIONSTART)] HRESULT selectionStart ([in] long v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT2_SELECTIONSTART)] HRESULT selectionStart ([retval, out] long *p);
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT2_SELECTIONEND)] HRESULT selectionEnd ([in] long v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT2_SELECTIONEND)] HRESULT selectionEnd ([retval, out] long *p);
    [id (DISPID_IHTMLTEXTAREAELEMENT2_SETSELECTIONRANGE)] HRESULT setSelectionRange ([in] long start,[in] long end);
  };
  [hidden, uuid (3050f521-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTextAreaElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT2_SELECTIONSTART)] void selectionStart (long v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT2_SELECTIONSTART)] long selectionStart ();
    [propput, id (DISPID_IHTMLTEXTAREAELEMENT2_SELECTIONEND)] void selectionEnd (long v);
    [propget, id (DISPID_IHTMLTEXTAREAELEMENT2_SELECTIONEND)] long selectionEnd ();
    [id (DISPID_IHTMLTEXTAREAELEMENT2_SETSELECTIONRANGE)] void setSelectionRange ([in] long start,[in] long end);
  };
  [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;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLTextAreaElement;
    interface IHTMLTextAreaElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTextArea;")
  [hidden, uuid (3050f54d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLRichtextElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
  };
  [noncreatable, uuid (3050f2df-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLRichtextElement {
    [default] dispinterface DispHTMLRichtextElement;
    [source, default] dispinterface HTMLInputTextElementEvents;
    [source] dispinterface HTMLInputTextElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLTextAreaElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CRichtext;")
  [odl, oleautomation, dual, uuid (3050f2bb-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLButtonElement : IDispatch {
    [propget, id (DISPID_IHTMLBUTTONELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBUTTONELEMENT_VALUE), displaybind, bindable] HRESULT value ([in] BSTR v);
    [propget, id (DISPID_IHTMLBUTTONELEMENT_VALUE), displaybind, bindable] HRESULT value ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBUTTONELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLBUTTONELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBUTTONELEMENT_STATUS)] HRESULT status ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBUTTONELEMENT_STATUS)] HRESULT status ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBUTTONELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLBUTTONELEMENT_DISABLED), displaybind, bindable] HRESULT disabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLBUTTONELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
    [id (DISPID_IHTMLBUTTONELEMENT_CREATETEXTRANGE)] HRESULT createTextRange ([retval, out] IHTMLTxtRange **range);
  };
  [odl, oleautomation, dual, uuid (305106f3-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLButtonElement2 : IDispatch {
    [propput, id (DISPID_IHTMLBUTTONELEMENT2_IE9_TYPE)] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLBUTTONELEMENT2_IE9_TYPE)] HRESULT type ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f51f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLButtonElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
    [propput, id (DISPID_IHTMLBUTTONELEMENT2_IE9_TYPE)] void ie9_type (BSTR v);
    [propget, id (DISPID_IHTMLBUTTONELEMENT2_IE9_TYPE)] BSTR ie9_type ();
  };
  [noncreatable, uuid (3050f2c6-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLButtonElement {
    [default] dispinterface DispHTMLButtonElement;
    [source, default] dispinterface HTMLButtonElementEvents;
    [source] dispinterface HTMLButtonElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLButtonElement;
    interface IHTMLButtonElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CButton;")
  [hidden, uuid (3050f61f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLMarqueeElementEvents2 {
    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);
    [id (DISPID_HTMLMARQUEEELEMENTEVENTS2_ONBOUNCE)] void onbounce ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLMARQUEEELEMENTEVENTS2_ONFINISH)] void onfinish ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLMARQUEEELEMENTEVENTS2_ONSTART)] void onstart ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f2b8-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLMarqueeElementEvents {
    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 ();
    [id (DISPID_HTMLMARQUEEELEMENTEVENTS_ONBOUNCE)] void onbounce ();
    [id (DISPID_HTMLMARQUEEELEMENTEVENTS_ONFINISH)] void onfinish ();
    [id (DISPID_HTMLMARQUEEELEMENTEVENTS_ONSTART)] void onstart ();
  };
  typedef enum _htmlMarqueeBehavior {
    htmlMarqueeBehaviorscroll = 1,
    htmlMarqueeBehaviorslide = 2,
    htmlMarqueeBehavioralternate = 3,
    htmlMarqueeBehavior_Max = 0x7FFFFFFF
  } htmlMarqueeBehavior;

  typedef enum _htmlMarqueeDirection {
    htmlMarqueeDirectionleft = 1,
    htmlMarqueeDirectionright = 3,
    htmlMarqueeDirectionup = 5,
    htmlMarqueeDirectiondown = 7,
    htmlMarqueeDirection_Max = 0x7FFFFFFF
  } htmlMarqueeDirection;
  [odl, oleautomation, dual, uuid (3050f2b5-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMarqueeElement : IDispatch {
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_BGCOLOR)] HRESULT bgColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_BGCOLOR)] HRESULT bgColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_SCROLLDELAY)] HRESULT scrollDelay ([in] long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_SCROLLDELAY)] HRESULT scrollDelay ([retval, out] long *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_DIRECTION)] HRESULT direction ([in] BSTR v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_DIRECTION)] HRESULT direction ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_BEHAVIOR)] HRESULT behavior ([in] BSTR v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_BEHAVIOR)] HRESULT behavior ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_SCROLLAMOUNT)] HRESULT scrollAmount ([in] long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_SCROLLAMOUNT)] HRESULT scrollAmount ([retval, out] long *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_LOOP)] HRESULT loop ([in] long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_LOOP)] HRESULT loop ([retval, out] long *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_VSPACE)] HRESULT vspace ([in] long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_VSPACE)] HRESULT vspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_HSPACE)] HRESULT hspace ([in] long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_HSPACE)] HRESULT hspace ([retval, out] long *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_ONFINISH), displaybind, bindable] HRESULT onfinish ([in] VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_ONFINISH), displaybind, bindable] HRESULT onfinish ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_ONSTART), displaybind, bindable] HRESULT onstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_ONSTART), displaybind, bindable] HRESULT onstart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_ONBOUNCE), displaybind, bindable] HRESULT onbounce ([in] VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_ONBOUNCE), displaybind, bindable] HRESULT onbounce ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_WIDTH)] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_WIDTH)] HRESULT width ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_HEIGHT)] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_HEIGHT)] HRESULT height ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_TRUESPEED), displaybind, bindable] HRESULT trueSpeed ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_TRUESPEED), displaybind, bindable] HRESULT trueSpeed ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLMARQUEEELEMENT_START)] HRESULT start ();
    [id (DISPID_IHTMLMARQUEEELEMENT_STOP)] HRESULT stop ();
  };
  [hidden, uuid (3050f527-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLMarqueeElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_BGCOLOR)] void bgColor (VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_BGCOLOR)] VARIANT bgColor ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_SCROLLDELAY)] void scrollDelay (long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_SCROLLDELAY)] long scrollDelay ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_DIRECTION)] void direction (BSTR v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_DIRECTION)] BSTR direction ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_BEHAVIOR)] void behavior (BSTR v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_BEHAVIOR)] BSTR behavior ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_SCROLLAMOUNT)] void scrollAmount (long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_SCROLLAMOUNT)] long scrollAmount ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_LOOP)] void loop (long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_LOOP)] long loop ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_VSPACE)] void vspace (long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_VSPACE)] long vspace ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_HSPACE)] void hspace (long v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_HSPACE)] long hspace ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_ONFINISH), displaybind, bindable] void onfinish (VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_ONFINISH), displaybind, bindable] VARIANT onfinish ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_ONSTART), displaybind, bindable] void onstart (VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_ONSTART), displaybind, bindable] VARIANT onstart ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_ONBOUNCE), displaybind, bindable] void onbounce (VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_ONBOUNCE), displaybind, bindable] VARIANT onbounce ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_WIDTH)] void width (VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_WIDTH)] VARIANT width ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_HEIGHT)] void height (VARIANT v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_HEIGHT)] VARIANT height ();
    [propput, id (DISPID_IHTMLMARQUEEELEMENT_TRUESPEED), displaybind, bindable] void trueSpeed (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMARQUEEELEMENT_TRUESPEED), displaybind, bindable] VARIANT_BOOL trueSpeed ();
    [id (DISPID_IHTMLMARQUEEELEMENT_START)] void start ();
    [id (DISPID_IHTMLMARQUEEELEMENT_STOP)] void stop ();
  };
  [noncreatable, uuid (3050f2b9-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLMarqueeElement {
    [default] dispinterface DispHTMLMarqueeElement;
    [source, default] dispinterface HTMLMarqueeElementEvents;
    [source] dispinterface HTMLMarqueeElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLMarqueeElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMarquee;")
  [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 ([retval, out] BSTR *p);
  };
  [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);
  };
  [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);
  };
  [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);
  };
  [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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLMETAELEMENT_CONTENT), displaybind, bindable] HRESULT content ([in] BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT_CONTENT), displaybind, bindable] HRESULT content ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLMETAELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLMETAELEMENT_URL), displaybind, bindable] HRESULT url ([in] BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT_URL), displaybind, bindable] HRESULT url ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLMETAELEMENT_CHARSET), displaybind, bindable] HRESULT charset ([in] BSTR v);
    [propget, id (DISPID_IHTMLMETAELEMENT_CHARSET), displaybind, bindable] HRESULT charset ([retval, out] BSTR *p);
  };
  [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 ([retval, out] BSTR *p);
  };
  [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 ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f204-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBaseElement : IDispatch {
    [propput, id (DISPID_IHTMLBASEELEMENT_HREF), displaybind, bindable] HRESULT href ([in] BSTR v);
    [propget, id (DISPID_IHTMLBASEELEMENT_HREF), displaybind, bindable] HRESULT href ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBASEELEMENT_TARGET), displaybind, bindable] HRESULT target ([in] BSTR v);
    [propget, id (DISPID_IHTMLBASEELEMENT_TARGET), displaybind, bindable] HRESULT target ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510420-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBaseElement2 : IDispatch {
    [propput, id (DISPID_IHTMLBASEELEMENT2_IE8_HREF), displaybind, bindable] HRESULT href ([in] BSTR v);
    [propget, id (DISPID_IHTMLBASEELEMENT2_IE8_HREF), displaybind, bindable] HRESULT href ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f206-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLIsIndexElement : IDispatch {
    [propput, id (DISPID_IHTMLISINDEXELEMENT_PROMPT), displaybind, bindable] HRESULT prompt ([in] BSTR v);
    [propget, id (DISPID_IHTMLISINDEXELEMENT_PROMPT), displaybind, bindable] HRESULT prompt ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLISINDEXELEMENT_ACTION), displaybind, bindable] HRESULT action ([in] BSTR v);
    [propget, id (DISPID_IHTMLISINDEXELEMENT_ACTION), displaybind, bindable] HRESULT action ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f82f-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLIsIndexElement2 : IDispatch {
    [propget, id (DISPID_IHTMLISINDEXELEMENT2_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
  };
  [odl, oleautomation, dual, uuid (3050f207-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLNextIdElement : IDispatch {
    [propput, id (DISPID_IHTMLNEXTIDELEMENT_N), displaybind, bindable] HRESULT n ([in] BSTR v);
    [propget, id (DISPID_IHTMLNEXTIDELEMENT_N), displaybind, bindable] HRESULT n ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f560-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLHtmlElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLHTMLELEMENT_VERSION), displaybind, bindable] void version (BSTR v);
    [propget, id (DISPID_IHTMLHTMLELEMENT_VERSION), displaybind, bindable] BSTR version ();
  };
  [noncreatable, uuid (3050f491-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLHtmlElement {
    [default] dispinterface DispHTMLHtmlElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLHtmlElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CHtmlElement;")
  [hidden, uuid (3050f561-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLHeadElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
  };
  [noncreatable, uuid (3050f493-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLHeadElement {
    [default] dispinterface DispHTMLHeadElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLHeadElement;
    interface IHTMLHeadElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CHeadElement;")
  [hidden, uuid (3050f516-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTitleElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLTITLEELEMENT_TEXT), bindable] void text (BSTR v);
    [propget, id (DISPID_IHTMLTITLEELEMENT_TEXT), bindable] BSTR text ();
  };
  [noncreatable, uuid (3050f284-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTitleElement {
    [default] dispinterface DispHTMLTitleElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLTitleElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTitleElement;")
  [hidden, uuid (3050f517-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLMetaElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
  };
  [noncreatable, uuid (3050f275-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLMetaElement {
    [default] dispinterface DispHTMLMetaElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLMetaElement;
    interface IHTMLMetaElement2;
    interface IHTMLMetaElement3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMetaElement;")
  [hidden, uuid (3050f518-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLBaseElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLBASEELEMENT_HREF), displaybind, bindable] void href (BSTR v);
    [propget, id (DISPID_IHTMLBASEELEMENT_HREF), displaybind, bindable] BSTR href ();
    [propput, id (DISPID_IHTMLBASEELEMENT_TARGET), displaybind, bindable] void target (BSTR v);
    [propget, id (DISPID_IHTMLBASEELEMENT_TARGET), displaybind, bindable] BSTR target ();
    [propput, id (DISPID_IHTMLBASEELEMENT2_IE8_HREF), displaybind, bindable] void ie8_href (BSTR v);
    [propget, id (DISPID_IHTMLBASEELEMENT2_IE8_HREF), displaybind, bindable] BSTR ie8_href ();
  };
  [noncreatable, uuid (3050f276-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLBaseElement {
    [default] dispinterface DispHTMLBaseElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLBaseElement;
    interface IHTMLBaseElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CBaseElement;")
  [hidden, uuid (3050f519-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLIsIndexElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLISINDEXELEMENT_PROMPT), displaybind, bindable] void prompt (BSTR v);
    [propget, id (DISPID_IHTMLISINDEXELEMENT_PROMPT), displaybind, bindable] BSTR prompt ();
    [propput, id (DISPID_IHTMLISINDEXELEMENT_ACTION), displaybind, bindable] void action (BSTR v);
    [propget, id (DISPID_IHTMLISINDEXELEMENT_ACTION), displaybind, bindable] BSTR action ();
    [propget, id (DISPID_IHTMLISINDEXELEMENT2_FORM)] IHTMLFormElement *form ();
  };
  [noncreatable, uuid (3050f278-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLIsIndexElement {
    [default] dispinterface DispHTMLIsIndexElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLIsIndexElement;
    interface IHTMLIsIndexElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CIsIndexElement;")
  [hidden, uuid (3050f51a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLNextIdElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLNEXTIDELEMENT_N), displaybind, bindable] void n (BSTR v);
    [propget, id (DISPID_IHTMLNEXTIDELEMENT_N), displaybind, bindable] BSTR n ();
  };
  [noncreatable, uuid (3050f279-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLNextIdElement {
    [default] dispinterface DispHTMLNextIdElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLNextIdElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CNextIdElement;")
  [odl, oleautomation, dual, uuid (3050f202-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBaseFontElement : IDispatch {
    [propput, id (DISPID_IHTMLBASEFONTELEMENT_COLOR), displaybind, bindable] HRESULT color ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBASEFONTELEMENT_COLOR), displaybind, bindable] HRESULT color ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBASEFONTELEMENT_FACE), displaybind, bindable] HRESULT face ([in] BSTR v);
    [propget, id (DISPID_IHTMLBASEFONTELEMENT_FACE), displaybind, bindable] HRESULT face ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBASEFONTELEMENT_SIZE), displaybind, bindable] HRESULT size ([in] long v);
    [propget, id (DISPID_IHTMLBASEFONTELEMENT_SIZE), displaybind, bindable] HRESULT size ([retval, out] long *p);
  };
  [hidden, uuid (3050f504-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLBaseFontElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLBASEFONTELEMENT_COLOR), displaybind, bindable] void color (VARIANT v);
    [propget, id (DISPID_IHTMLBASEFONTELEMENT_COLOR), displaybind, bindable] VARIANT color ();
    [propput, id (DISPID_IHTMLBASEFONTELEMENT_FACE), displaybind, bindable] void face (BSTR v);
    [propget, id (DISPID_IHTMLBASEFONTELEMENT_FACE), displaybind, bindable] BSTR face ();
    [propput, id (DISPID_IHTMLBASEFONTELEMENT_SIZE), displaybind, bindable] void size (long v);
    [propget, id (DISPID_IHTMLBASEFONTELEMENT_SIZE), displaybind, bindable] long size ();
  };
  [noncreatable, uuid (3050f282-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLBaseFontElement {
    [default] dispinterface DispHTMLBaseFontElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLBaseFontElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CBaseFontElement;")
  [odl, oleautomation, dual, uuid (3050f209-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLUnknownElement : IDispatch {
  };
  [hidden, uuid (3050f539-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLUnknownElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
  };
  [noncreatable, uuid (3050f268-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLUnknownElement {
    [default] dispinterface DispHTMLUnknownElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLUnknownElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CUnknownElement;")
  interface IWebGeolocation;
  [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);
  };
  [odl, oleautomation, dual, uuid (3050f3fc-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMimeTypesCollection : IDispatch {
    [propget, id (DISPID_IHTMLMIMETYPESCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
  };
  [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);
  };
  [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);
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (305107cf-98b5-11cf-bb82-00aa00bdce0b)] interface INavigatorGeolocation : IDispatch {
    [propget, id (DISPID_INAVIGATORGEOLOCATION_GEOLOCATION)] HRESULT geolocation ([retval, out] IWebGeolocation **p);
  };
  [odl, oleautomation, dual, uuid (30510804-98b5-11cf-bb82-00aa00bdce0b)] interface INavigatorDoNotTrack : IDispatch {
    [propget, id (DISPID_INAVIGATORDONOTTRACK_MSDONOTTRACK)] HRESULT msDoNotTrack ([retval, out] BSTR *p);
  };
  [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);
  };
  [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 ();
  };
  [noncreatable, uuid (FECEAAA3-8405-11cf-8ba1-00aa00476da6)] coclass HTMLHistory {
    [default] dispinterface DispHTMLHistory;
    interface IOmHistory;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_COmHistory;")
  [noncreatable, uuid (3050f3fe-98b5-11cf-bb82-00aa00bdce0b)] coclass CMimeTypes {
    [default] interface IHTMLMimeTypesCollection;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMimeTypes;")
  [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;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CPlugins;")
  [noncreatable, uuid (3050f402-98b5-11cf-bb82-00aa00bdce0b)] coclass COpsProfile {
    [default] interface IHTMLOpsProfile;
  };
  cpp_quote("EXTERN_C const GUID CLSID_COpsProfile;")
  [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 ();
    [propget, id (DISPID_INAVIGATORGEOLOCATION_GEOLOCATION)] IWebGeolocation *geolocation ();
    [propget, id (DISPID_INAVIGATORDONOTTRACK_MSDONOTTRACK)] BSTR msDoNotTrack ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (FECEAAA6-8405-11cf-8ba1-00aa00476da6)] coclass HTMLNavigator {
    [default] dispinterface DispHTMLNavigator;
    interface IOmNavigator;
    interface INavigatorGeolocation;
    interface INavigatorDoNotTrack;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_COmNavigator;")
  [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 ([defaultvalue (0), in] 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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (163bb1e1-6e00-11cf-837a-48dc04c10000)] coclass HTMLLocation {
    [default] dispinterface DispHTMLLocation;
    interface IHTMLLocation;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_COmLocation;")
  [odl, oleautomation, dual, uuid (3050f4ce-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBookmarkCollection : IDispatch {
    [propget, id (DISPID_IHTMLBOOKMARKCOLLECTION_LENGTH), hidden] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLBOOKMARKCOLLECTION__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLBOOKMARKCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] VARIANT *pVarBookmark);
  };
  typedef enum _htmlPersistState {
    htmlPersistStateNormal = 0,
    htmlPersistStateFavorite = 1,
    htmlPersistStateHistory = 2,
    htmlPersistStateSnapshot = 3,
    htmlPersistStateUserData = 4,
    htmlPersistState_Max = 0x7FFFFFFF
  } htmlPersistState;

  typedef enum _htmlDropEffect {
    htmlDropEffectCopy = 0,
    htmlDropEffectLink = 1,
    htmlDropEffectMove = 2,
    htmlDropEffectNone = 3,
    htmlDropEffect_Max = 0x7FFFFFFF
  } htmlDropEffect;

  typedef enum _htmlEffectAllowed {
    htmlEffectAllowedCopy = 0,
    htmlEffectAllowedLink = 1,
    htmlEffectAllowedMove = 2,
    htmlEffectAllowedCopyLink = 3,
    htmlEffectAllowedCopyMove = 4,
    htmlEffectAllowedLinkMove = 5,
    htmlEffectAllowedAll = 6,
    htmlEffectAllowedNone = 7,
    htmlEffectAllowedUninitialized = 8,
    htmlEffectAllowed_Max = 0x7FFFFFFF
  } htmlEffectAllowed;
  [odl, oleautomation, dual, uuid (3050f4b3-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDataTransfer : IDispatch {
    [id (DISPID_IHTMLDATATRANSFER_SETDATA)] HRESULT setData ([in] BSTR format,[in] VARIANT *data,[retval, out] VARIANT_BOOL *pret);
    [id (DISPID_IHTMLDATATRANSFER_GETDATA)] HRESULT getData ([in] BSTR format,[retval, out] VARIANT *pvarRet);
    [id (DISPID_IHTMLDATATRANSFER_CLEARDATA)] HRESULT clearData ([in] BSTR format,[retval, out] VARIANT_BOOL *pret);
    [propput, id (DISPID_IHTMLDATATRANSFER_DROPEFFECT)] HRESULT dropEffect ([in] BSTR v);
    [propget, id (DISPID_IHTMLDATATRANSFER_DROPEFFECT)] HRESULT dropEffect ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDATATRANSFER_EFFECTALLOWED)] HRESULT effectAllowed ([in] BSTR v);
    [propget, id (DISPID_IHTMLDATATRANSFER_EFFECTALLOWED)] HRESULT effectAllowed ([retval, out] BSTR *p);
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (3050f48b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLEventObj2 : IDispatch {
    [id (DISPID_IHTMLEVENTOBJ2_SETATTRIBUTE)] HRESULT setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLEVENTOBJ2_GETATTRIBUTE)] HRESULT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags,[defaultvalue (0), retval, out] VARIANT *AttributeValue);
    [id (DISPID_IHTMLEVENTOBJ2_REMOVEATTRIBUTE)] HRESULT removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] LONG lFlags,[defaultvalue (0), retval, out] VARIANT_BOOL *pfSuccess);
    [propput, id (DISPID_IHTMLEVENTOBJ2_PROPERTYNAME)] HRESULT propertyName ([in] BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_PROPERTYNAME)] HRESULT propertyName ([retval, out] BSTR *p);
    [propputref, id (DISPID_IHTMLEVENTOBJ2_BOOKMARKS)] HRESULT bookmarks ([in] IHTMLBookmarkCollection *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_BOOKMARKS)] HRESULT bookmarks ([retval, out] IHTMLBookmarkCollection **p);
    [propputref, id (DISPID_IHTMLEVENTOBJ2_RECORDSET)] HRESULT recordset ([in] IDispatch *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_RECORDSET)] HRESULT recordset ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_DATAFLD)] HRESULT dataFld ([in] BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_DATAFLD)] HRESULT dataFld ([retval, out] BSTR *p);
    [propputref, id (DISPID_IHTMLEVENTOBJ2_BOUNDELEMENTS)] HRESULT boundElements ([in] IHTMLElementCollection *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_BOUNDELEMENTS)] HRESULT boundElements ([retval, out] IHTMLElementCollection **p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_REPEAT)] HRESULT repeat ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_REPEAT)] HRESULT repeat ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_SRCURN)] HRESULT srcUrn ([in] BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SRCURN)] HRESULT srcUrn ([retval, out] BSTR *p);
    [propputref, id (DISPID_IHTMLEVENTOBJ2_SRCELEMENT)] HRESULT srcElement ([in] IHTMLElement *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SRCELEMENT)] HRESULT srcElement ([retval, out] IHTMLElement **p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_ALTKEY)] HRESULT altKey ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_ALTKEY)] HRESULT altKey ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_CTRLKEY)] HRESULT ctrlKey ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_CTRLKEY)] HRESULT ctrlKey ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_SHIFTKEY)] HRESULT shiftKey ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SHIFTKEY)] HRESULT shiftKey ([retval, out] VARIANT_BOOL *p);
    [propputref, id (DISPID_IHTMLEVENTOBJ2_FROMELEMENT)] HRESULT fromElement ([in] IHTMLElement *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_FROMELEMENT)] HRESULT fromElement ([retval, out] IHTMLElement **p);
    [propputref, id (DISPID_IHTMLEVENTOBJ2_TOELEMENT)] HRESULT toElement ([in] IHTMLElement *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_TOELEMENT)] HRESULT toElement ([retval, out] IHTMLElement **p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_BUTTON)] HRESULT button ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_BUTTON)] HRESULT button ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_TYPE)] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_QUALIFIER)] HRESULT qualifier ([in] BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_QUALIFIER)] HRESULT qualifier ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_REASON)] HRESULT reason ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_REASON)] HRESULT reason ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_X)] HRESULT x ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_X)] HRESULT x ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_Y)] HRESULT y ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_Y)] HRESULT y ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_CLIENTX)] HRESULT clientX ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_CLIENTX)] HRESULT clientX ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_CLIENTY)] HRESULT clientY ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_CLIENTY)] HRESULT clientY ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_OFFSETX)] HRESULT offsetX ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_OFFSETX)] HRESULT offsetX ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_OFFSETY)] HRESULT offsetY ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_OFFSETY)] HRESULT offsetY ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_SCREENX)] HRESULT screenX ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SCREENX)] HRESULT screenX ([retval, out] long *p);
    [propput, id (DISPID_IHTMLEVENTOBJ2_SCREENY)] HRESULT screenY ([in] long v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SCREENY)] HRESULT screenY ([retval, out] long *p);
    [propputref, id (DISPID_IHTMLEVENTOBJ2_SRCFILTER)] HRESULT srcFilter ([in] IDispatch *v);
    [propget, id (DISPID_IHTMLEVENTOBJ2_SRCFILTER)] HRESULT srcFilter ([retval, out] IDispatch **p);
    [propget, id (DISPID_IHTMLEVENTOBJ2_DATATRANSFER)] HRESULT dataTransfer ([retval, out] IHTMLDataTransfer **p);
  };
  [odl, oleautomation, dual, uuid (3050f680-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLEventObj3 : IDispatch {
    [propget, id (DISPID_IHTMLEVENTOBJ3_CONTENTOVERFLOW)] HRESULT contentOverflow ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLEVENTOBJ3_SHIFTLEFT)] HRESULT shiftLeft ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ3_SHIFTLEFT)] HRESULT shiftLeft ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLEVENTOBJ3_ALTLEFT)] HRESULT altLeft ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ3_ALTLEFT)] HRESULT altLeft ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLEVENTOBJ3_CTRLLEFT)] HRESULT ctrlLeft ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLEVENTOBJ3_CTRLLEFT)] HRESULT ctrlLeft ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_IMECOMPOSITIONCHANGE), hidden, restricted, nonbrowsable] HRESULT imeCompositionChange ([retval, out] LONG_PTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_IMENOTIFYCOMMAND), hidden, restricted, nonbrowsable] HRESULT imeNotifyCommand ([retval, out] LONG_PTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_IMENOTIFYDATA), hidden, restricted, nonbrowsable] HRESULT imeNotifyData ([retval, out] LONG_PTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_IMEREQUEST), hidden, restricted, nonbrowsable] HRESULT imeRequest ([retval, out] LONG_PTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_IMEREQUESTDATA), hidden, restricted, nonbrowsable] HRESULT imeRequestData ([retval, out] LONG_PTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_KEYBOARDLAYOUT), hidden, restricted, nonbrowsable] HRESULT keyboardLayout ([retval, out] LONG_PTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_BEHAVIORCOOKIE)] HRESULT behaviorCookie ([retval, out] long *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_BEHAVIORPART)] HRESULT behaviorPart ([retval, out] long *p);
    [propget, id (DISPID_IHTMLEVENTOBJ3_NEXTPAGE)] HRESULT nextPage ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f814-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLEventObj4 : IDispatch {
    [propget, id (DISPID_IHTMLEVENTOBJ4_WHEELDELTA)] HRESULT wheelDelta ([retval, out] long *p);
  };
  [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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLEVENTOBJ5_DATA)] HRESULT data ([in] BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ5_DATA)] HRESULT data ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ5_SOURCE)] HRESULT source ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLEVENTOBJ5_ORIGIN)] HRESULT origin ([in] BSTR v);
    [propget, id (DISPID_IHTMLEVENTOBJ5_ORIGIN)] HRESULT origin ([retval, out] 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 ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (30510734-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLEventObj6 : IDispatch {
    [propget, id (DISPID_IHTMLEVENTOBJ6_ACTIONURL)] HRESULT actionURL ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLEVENTOBJ6_BUTTONID)] HRESULT buttonID ([retval, out] long *p);
  };
  [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,[defaultvalue (1), in] LONG lFlags);
    [id (DISPID_IHTMLEVENTOBJ2_GETATTRIBUTE)] VARIANT getAttribute ([in] BSTR strAttributeName,[defaultvalue (0), in] LONG lFlags);
    [id (DISPID_IHTMLEVENTOBJ2_REMOVEATTRIBUTE)] VARIANT_BOOL removeAttribute ([in] BSTR strAttributeName,[defaultvalue (1), in] 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 ();
  };
  [noncreatable, uuid (3050f48a-98b5-11cf-bb82-00aa00bdce0b)] coclass CEventObj {
    [default] dispinterface DispCEventObj;
    interface IHTMLEventObj;
    interface IHTMLEventObj2;
    interface IHTMLEventObj3;
    interface IHTMLEventObj4;
    interface IHTMLEventObj5;
    interface IHTMLEventObj6;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CEventObj;")
  [odl, oleautomation, dual, uuid (3051074b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleMedia : IDispatch {
    [propget, id (DISPID_IHTMLSTYLEMEDIA_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [id (DISPID_IHTMLSTYLEMEDIA_MATCHMEDIUM)] HRESULT matchMedium ([in] BSTR mediaQuery,[retval, out] VARIANT_BOOL *matches);
  };
  [hidden, uuid (3059009e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLStyleMedia {
    properties:
    methods:
    [propget, id (DISPID_IHTMLSTYLEMEDIA_TYPE)] BSTR type ();
    [id (DISPID_IHTMLSTYLEMEDIA_MATCHMEDIUM)] VARIANT_BOOL matchMedium ([in] BSTR mediaQuery);
  };
  [noncreatable, uuid (3051074c-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStyleMedia {
    [default] dispinterface DispHTMLStyleMedia;
    interface IHTMLStyleMedia;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStyleMedia;")
  [hidden, uuid (3050f5a1-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLWindowEvents3 {
    properties:
    methods:
    [id (DISPID_HTMLWINDOWEVENTS3_ONHASHCHANGE)] void onhashchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLWINDOWEVENTS3_ONMESSAGE)] void onmessage ([in] IHTMLEventObj *pEvtObj);
  };
  [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);
  };
  [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 ();
  };
  interface IHTMLDocument;
  interface IHTMLDocument2;
  interface IHTMLFramesCollection2;
  interface IHTMLWindow2;
  interface IHTMLWindow3;
  interface IHTMLFrameBase;
  interface IHTMLStorage;
  interface IHTMLPerformance;
  interface IHTMLCSSStyleDeclaration;
  interface IHTMLApplicationCache;
  [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);
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (3050f84a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLScreen2 : IDispatch {
    [propget, id (DISPID_IHTMLSCREEN2_LOGICALXDPI)] HRESULT logicalXDPI ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSCREEN2_LOGICALYDPI)] HRESULT logicalYDPI ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSCREEN2_DEVICEXDPI)] HRESULT deviceXDPI ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSCREEN2_DEVICEYDPI)] HRESULT deviceYDPI ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (305104a1-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLScreen3 : IDispatch {
    [propget, id (DISPID_IHTMLSCREEN3_SYSTEMXDPI)] HRESULT systemXDPI ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSCREEN3_SYSTEMYDPI)] HRESULT systemYDPI ([retval, out] long *p);
  };
  [odl, oleautomation, dual, uuid (3051076b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLScreen4 : IDispatch {
    [propget, id (DISPID_IHTMLSCREEN4_PIXELDEPTH)] HRESULT pixelDepth ([retval, out] long *p);
  };
  [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 (L""), in] BSTR message);
    [id (DISPID_IHTMLWINDOW2_CONFIRM)] HRESULT confirm ([defaultvalue (L""), in] BSTR message,[defaultvalue (0), retval, out] VARIANT_BOOL *confirmed);
    [id (DISPID_IHTMLWINDOW2_PROMPT)] HRESULT prompt ([defaultvalue (L""), in] BSTR message,[defaultvalue (L"undefined"), in] BSTR defstr,[defaultvalue (0), 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 (L""), in] BSTR url,[defaultvalue (L""), in] BSTR name,[defaultvalue (L""), in] BSTR features,[defaultvalue (0), in] VARIANT_BOOL replace,[defaultvalue (0), 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), displaybind, bindable] HRESULT onfocus ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONFOCUS), displaybind, bindable] HRESULT onfocus ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable] HRESULT onblur ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONBLUR), displaybind, bindable] HRESULT onblur ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable] HRESULT onbeforeunload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONBEFOREUNLOAD), displaybind, bindable] HRESULT onbeforeunload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable] HRESULT onunload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONUNLOAD), displaybind, bindable] HRESULT onunload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable] HRESULT onhelp ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONHELP), displaybind, bindable] HRESULT onhelp ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONERROR), displaybind, bindable] HRESULT onerror ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable] HRESULT onresize ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONRESIZE), displaybind, bindable] HRESULT onresize ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable] HRESULT onscroll ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW2_ONSCROLL), displaybind, bindable] HRESULT onscroll ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLWINDOW2_DOCUMENT), source] HRESULT document ([retval, out] IHTMLDocument2 **p);
    [propget, id (DISPID_IHTMLWINDOW2_EVENT)] HRESULT event ([retval, out] IHTMLEventObj **p);
    [propget, id (DISPID_IHTMLWINDOW2__NEWENUM), hidden, restricted] 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 (L""), 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 code,[defaultvalue (L"JScript"), in] BSTR language,[defaultvalue (0), 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);
  };
  [odl, oleautomation, dual, uuid (3050f4ae-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLWindow3 : IDispatch {
    [propget, id (DISPID_IHTMLWINDOW3_SCREENLEFT)] HRESULT screenLeft ([retval, out] long *p);
    [propget, id (DISPID_IHTMLWINDOW3_SCREENTOP)] HRESULT screenTop ([retval, out] long *p);
    [id (DISPID_IHTMLWINDOW3_ATTACHEVENT)] HRESULT attachEvent ([in] BSTR event,[in] IDispatch *pDisp,[retval, out] 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,[optional, in] VARIANT *language,[retval, out] long *timerID);
    [id (DISPID_IHTMLWINDOW3_SETINTERVAL)] HRESULT setInterval ([in] VARIANT *expression,[in] long msec,[optional, in] VARIANT *language,[retval, out] 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 ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable] HRESULT onafterprint ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW3_ONAFTERPRINT), displaybind, bindable] HRESULT onafterprint ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLWINDOW3_CLIPBOARDDATA)] HRESULT clipboardData ([retval, out] IHTMLDataTransfer **p);
    [id (DISPID_IHTMLWINDOW3_SHOWMODELESSDIALOG)] HRESULT showModelessDialog ([defaultvalue (L""), in] BSTR url,[defaultvalue (0), optional, in] VARIANT *varArgIn,[defaultvalue (0), optional, in] VARIANT *options,[defaultvalue (0), retval, out] IHTMLWindow2 **pDialog);
  };
  [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);
  };
  [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);
  };
  [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 ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLWINDOW6_SESSIONSTORAGE)] HRESULT sessionStorage ([retval, out] IHTMLStorage **p);
    [propget, id (DISPID_IHTMLWINDOW6_LOCALSTORAGE)] HRESULT localStorage ([retval, out] IHTMLStorage **p);
    [propput, id (DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable] HRESULT onhashchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW6_ONHASHCHANGE), displaybind, bindable] HRESULT onhashchange ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLWINDOW6_MAXCONNECTIONSPERSERVER)] HRESULT maxConnectionsPerServer ([retval, out] long *p);
    [id (DISPID_IHTMLWINDOW6_POSTMESSAGE)] HRESULT postMessage ([in] BSTR msg,[optional, in] VARIANT targetOrigin);
    [id (DISPID_IHTMLWINDOW6_TOSTATICHTML)] HRESULT toStaticHTML ([in] BSTR bstrHTML,[retval, out] BSTR *pbstrStaticHTML);
    [propput, id (DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable] HRESULT onmessage ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW6_ONMESSAGE), displaybind, bindable] HRESULT onmessage ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLWINDOW6_MSWRITEPROFILERMARK)] HRESULT msWriteProfilerMark ([in] BSTR bstrProfilerMarkName);
  };
  [odl, oleautomation, dual, uuid (305104b7-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLWindow7 : IDispatch {
    [id (DISPID_IHTMLWINDOW7_GETSELECTION)] HRESULT getSelection ([retval, out] IHTMLSelection **ppIHTMLSelection);
    [id (DISPID_IHTMLWINDOW7_GETCOMPUTEDSTYLE)] HRESULT getComputedStyle ([in] IHTMLDOMNode *varArgIn,[defaultvalue (L""), in] BSTR bstrPseudoElt,[defaultvalue (0), retval, out] IHTMLCSSStyleDeclaration **ppComputedStyle);
    [propget, id (DISPID_IHTMLWINDOW7_STYLEMEDIA)] HRESULT styleMedia ([retval, out] IHTMLStyleMedia **p);
    [propput, id (DISPID_IHTMLWINDOW7_PERFORMANCE)] HRESULT performance ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_PERFORMANCE)] HRESULT performance ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLWINDOW7_INNERWIDTH)] HRESULT innerWidth ([retval, out] long *p);
    [propget, id (DISPID_IHTMLWINDOW7_INNERHEIGHT)] HRESULT innerHeight ([retval, out] long *p);
    [propget, id (DISPID_IHTMLWINDOW7_PAGEXOFFSET)] HRESULT pageXOffset ([retval, out] long *p);
    [propget, id (DISPID_IHTMLWINDOW7_PAGEYOFFSET)] HRESULT pageYOffset ([retval, out] long *p);
    [propget, id (DISPID_IHTMLWINDOW7_SCREENX)] HRESULT screenX ([retval, out] long *p);
    [propget, id (DISPID_IHTMLWINDOW7_SCREENY)] HRESULT screenY ([retval, out] long *p);
    [propget, id (DISPID_IHTMLWINDOW7_OUTERWIDTH)] HRESULT outerWidth ([retval, out] long *p);
    [propget, id (DISPID_IHTMLWINDOW7_OUTERHEIGHT)] HRESULT outerHeight ([retval, out] long *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONABORT), displaybind, bindable] HRESULT onabort ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONABORT), displaybind, bindable] HRESULT onabort ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONCANPLAY), displaybind, bindable] HRESULT oncanplay ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCANPLAY), displaybind, bindable] HRESULT oncanplay ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONCANPLAYTHROUGH), displaybind, bindable] HRESULT oncanplaythrough ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCANPLAYTHROUGH), displaybind, bindable] HRESULT oncanplaythrough ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONCHANGE), displaybind, bindable] HRESULT onchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCHANGE), displaybind, bindable] HRESULT onchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONCLICK), displaybind, bindable] HRESULT onclick ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCLICK), displaybind, bindable] HRESULT onclick ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONCONTEXTMENU), displaybind, bindable] HRESULT oncontextmenu ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONCONTEXTMENU), displaybind, bindable] HRESULT oncontextmenu ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDBLCLICK), displaybind, bindable] HRESULT ondblclick ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDBLCLICK), displaybind, bindable] HRESULT ondblclick ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAG), displaybind, bindable] HRESULT ondrag ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAG), displaybind, bindable] HRESULT ondrag ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGEND), displaybind, bindable] HRESULT ondragend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGEND), displaybind, bindable] HRESULT ondragend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGENTER), displaybind, bindable] HRESULT ondragenter ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGENTER), displaybind, bindable] HRESULT ondragenter ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGLEAVE), displaybind, bindable] HRESULT ondragleave ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGLEAVE), displaybind, bindable] HRESULT ondragleave ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGOVER), displaybind, bindable] HRESULT ondragover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGOVER), displaybind, bindable] HRESULT ondragover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDRAGSTART), displaybind, bindable] HRESULT ondragstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDRAGSTART), displaybind, bindable] HRESULT ondragstart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDROP), displaybind, bindable] HRESULT ondrop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDROP), displaybind, bindable] HRESULT ondrop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONDURATIONCHANGE), displaybind, bindable] HRESULT ondurationchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONDURATIONCHANGE), displaybind, bindable] HRESULT ondurationchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONFOCUSIN), displaybind, bindable] HRESULT onfocusin ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONFOCUSIN), displaybind, bindable] HRESULT onfocusin ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONFOCUSOUT), displaybind, bindable] HRESULT onfocusout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONFOCUSOUT), displaybind, bindable] HRESULT onfocusout ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONINPUT), displaybind, bindable] HRESULT oninput ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONINPUT), displaybind, bindable] HRESULT oninput ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONEMPTIED), displaybind, bindable] HRESULT onemptied ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONEMPTIED), displaybind, bindable] HRESULT onemptied ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONENDED), displaybind, bindable] HRESULT onended ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONENDED), displaybind, bindable] HRESULT onended ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONKEYDOWN), displaybind, bindable] HRESULT onkeydown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONKEYDOWN), displaybind, bindable] HRESULT onkeydown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONKEYPRESS), displaybind, bindable] HRESULT onkeypress ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONKEYPRESS), displaybind, bindable] HRESULT onkeypress ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONKEYUP), displaybind, bindable] HRESULT onkeyup ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONKEYUP), displaybind, bindable] HRESULT onkeyup ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONLOADEDDATA), displaybind, bindable] HRESULT onloadeddata ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONLOADEDDATA), displaybind, bindable] HRESULT onloadeddata ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONLOADEDMETADATA), displaybind, bindable] HRESULT onloadedmetadata ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONLOADEDMETADATA), displaybind, bindable] HRESULT onloadedmetadata ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONLOADSTART), displaybind, bindable] HRESULT onloadstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONLOADSTART), displaybind, bindable] HRESULT onloadstart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEDOWN), displaybind, bindable] HRESULT onmousedown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEDOWN), displaybind, bindable] HRESULT onmousedown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEENTER), displaybind, bindable] HRESULT onmouseenter ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEENTER), displaybind, bindable] HRESULT onmouseenter ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSELEAVE), displaybind, bindable] HRESULT onmouseleave ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSELEAVE), displaybind, bindable] HRESULT onmouseleave ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEMOVE), displaybind, bindable] HRESULT onmousemove ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEMOVE), displaybind, bindable] HRESULT onmousemove ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEOUT), displaybind, bindable] HRESULT onmouseout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEOUT), displaybind, bindable] HRESULT onmouseout ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEOVER), displaybind, bindable] HRESULT onmouseover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEOVER), displaybind, bindable] HRESULT onmouseover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEUP), displaybind, bindable] HRESULT onmouseup ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEUP), displaybind, bindable] HRESULT onmouseup ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONMOUSEWHEEL), displaybind, bindable] HRESULT onmousewheel ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONMOUSEWHEEL), displaybind, bindable] HRESULT onmousewheel ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONOFFLINE), displaybind, bindable] HRESULT onoffline ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONOFFLINE), displaybind, bindable] HRESULT onoffline ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONONLINE), displaybind, bindable] HRESULT ononline ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONONLINE), displaybind, bindable] HRESULT ononline ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONPROGRESS), displaybind, bindable] HRESULT onprogress ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONPROGRESS), displaybind, bindable] HRESULT onprogress ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONRATECHANGE), displaybind, bindable] HRESULT onratechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONRATECHANGE), displaybind, bindable] HRESULT onratechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONRESET), displaybind, bindable] HRESULT onreset ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONRESET), displaybind, bindable] HRESULT onreset ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONSEEKED), displaybind, bindable] HRESULT onseeked ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSEEKED), displaybind, bindable] HRESULT onseeked ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONSEEKING), displaybind, bindable] HRESULT onseeking ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSEEKING), displaybind, bindable] HRESULT onseeking ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONSELECT), displaybind, bindable] HRESULT onselect ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSELECT), displaybind, bindable] HRESULT onselect ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONSTALLED), displaybind, bindable] HRESULT onstalled ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSTALLED), displaybind, bindable] HRESULT onstalled ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONSTORAGE), displaybind, bindable] HRESULT onstorage ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSTORAGE), displaybind, bindable] HRESULT onstorage ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONSUBMIT), displaybind, bindable] HRESULT onsubmit ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSUBMIT), displaybind, bindable] HRESULT onsubmit ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONSUSPEND), displaybind, bindable] HRESULT onsuspend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONSUSPEND), displaybind, bindable] HRESULT onsuspend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONTIMEUPDATE), displaybind, bindable] HRESULT ontimeupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONTIMEUPDATE), displaybind, bindable] HRESULT ontimeupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONPAUSE), displaybind, bindable] HRESULT onpause ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONPAUSE), displaybind, bindable] HRESULT onpause ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONPLAY), displaybind, bindable] HRESULT onplay ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONPLAY), displaybind, bindable] HRESULT onplay ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONPLAYING), displaybind, bindable] HRESULT onplaying ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONPLAYING), displaybind, bindable] HRESULT onplaying ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONVOLUMECHANGE), displaybind, bindable] HRESULT onvolumechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONVOLUMECHANGE), displaybind, bindable] HRESULT onvolumechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW7_ONWAITING), displaybind, bindable] HRESULT onwaiting ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW7_ONWAITING), displaybind, bindable] HRESULT onwaiting ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (305107ab-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLWindow8 : IDispatch {
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERDOWN), displaybind, bindable] HRESULT onmspointerdown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERDOWN), displaybind, bindable] HRESULT onmspointerdown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERMOVE), displaybind, bindable] HRESULT onmspointermove ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERMOVE), displaybind, bindable] HRESULT onmspointermove ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERUP), displaybind, bindable] HRESULT onmspointerup ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERUP), displaybind, bindable] HRESULT onmspointerup ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROVER), displaybind, bindable] HRESULT onmspointerover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROVER), displaybind, bindable] HRESULT onmspointerover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROUT), displaybind, bindable] HRESULT onmspointerout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROUT), displaybind, bindable] HRESULT onmspointerout ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERCANCEL), displaybind, bindable] HRESULT onmspointercancel ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERCANCEL), displaybind, bindable] HRESULT onmspointercancel ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERHOVER), displaybind, bindable] HRESULT onmspointerhover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERHOVER), displaybind, bindable] HRESULT onmspointerhover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURESTART), displaybind, bindable] HRESULT onmsgesturestart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURESTART), displaybind, bindable] HRESULT onmsgesturestart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURECHANGE), displaybind, bindable] HRESULT onmsgesturechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURECHANGE), displaybind, bindable] HRESULT onmsgesturechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREEND), displaybind, bindable] HRESULT onmsgestureend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREEND), displaybind, bindable] HRESULT onmsgestureend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREHOLD), displaybind, bindable] HRESULT onmsgesturehold ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREHOLD), displaybind, bindable] HRESULT onmsgesturehold ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURETAP), displaybind, bindable] HRESULT onmsgesturetap ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURETAP), displaybind, bindable] HRESULT onmsgesturetap ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREDOUBLETAP), displaybind, bindable] HRESULT onmsgesturedoubletap ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREDOUBLETAP), displaybind, bindable] HRESULT onmsgesturedoubletap ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLWINDOW8_ONMSINERTIASTART), displaybind, bindable] HRESULT onmsinertiastart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSINERTIASTART), displaybind, bindable] HRESULT onmsinertiastart ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLWINDOW8_APPLICATIONCACHE)] HRESULT applicationCache ([retval, out] IHTMLApplicationCache **p);
    [propput, id (DISPID_IHTMLWINDOW8_ONPOPSTATE), displaybind, bindable] HRESULT onpopstate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONPOPSTATE), displaybind, bindable] HRESULT onpopstate ([retval, out] VARIANT *p);
  };
  [noncreatable, uuid (3050f7f6-98b5-11cf-bb82-00aa00bdce0b)] coclass FramesCollection {
    [default] interface IHTMLFramesCollection2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CFramesCollection;")
  [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_IHTMLSCREEN4_PIXELDEPTH)] long pixelDepth ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f35d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLScreen {
    [default] dispinterface DispHTMLScreen;
    interface IHTMLScreen;
    interface IHTMLScreen2;
    interface IHTMLScreen3;
    interface IHTMLScreen4;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CScreen;")
  [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 ([defaultvalue (L""), in] BSTR message);
    [id (DISPID_IHTMLWINDOW2_CONFIRM)] VARIANT_BOOL confirm ([defaultvalue (L""), in] BSTR message);
    [id (DISPID_IHTMLWINDOW2_PROMPT)] VARIANT prompt ([defaultvalue (L""), in] BSTR message,[defaultvalue (L"undefined"), in] BSTR defstr);
    [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 (L""), in] BSTR url,[defaultvalue (L""), in] BSTR name,[defaultvalue (L""), 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 (L""), in] BSTR features);
    [propget, id (DISPID_IHTMLWINDOW2_SCREEN)] IHTMLScreen *screen ();
    [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 (L"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 (L""), in] BSTR url,[defaultvalue (0), optional, in] VARIANT *varArgIn,[defaultvalue (0), optional, in] VARIANT *options);
    [id (DISPID_IHTMLWINDOW4_CREATEPOPUP)] IDispatch *createPopup ([optional, in] 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,[optional, in] 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,[defaultvalue (L""), in] 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 ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERDOWN), displaybind, bindable] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERDOWN), displaybind, bindable] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERMOVE), displaybind, bindable] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERMOVE), displaybind, bindable] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERUP), displaybind, bindable] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERUP), displaybind, bindable] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROVER), displaybind, bindable] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROVER), displaybind, bindable] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROUT), displaybind, bindable] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROUT), displaybind, bindable] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERCANCEL), displaybind, bindable] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERCANCEL), displaybind, bindable] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERHOVER), displaybind, bindable] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERHOVER), displaybind, bindable] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURESTART), displaybind, bindable] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURESTART), displaybind, bindable] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURECHANGE), displaybind, bindable] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURECHANGE), displaybind, bindable] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREEND), displaybind, bindable] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREEND), displaybind, bindable] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREHOLD), displaybind, bindable] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREHOLD), displaybind, bindable] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURETAP), displaybind, bindable] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURETAP), displaybind, bindable] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREDOUBLETAP), displaybind, bindable] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREDOUBLETAP), displaybind, bindable] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSINERTIASTART), displaybind, bindable] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSINERTIASTART), displaybind, bindable] VARIANT onmsinertiastart ();
    [propget, id (DISPID_IHTMLWINDOW8_APPLICATIONCACHE)] IHTMLApplicationCache *applicationCache ();
    [propput, id (DISPID_IHTMLWINDOW8_ONPOPSTATE), displaybind, bindable] void onpopstate (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONPOPSTATE), displaybind, bindable] VARIANT onpopstate ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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);
  };
  [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;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CWindow;")
  [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 (L""), in] BSTR message);
    [id (DISPID_IHTMLWINDOW2_CONFIRM)] VARIANT_BOOL confirm ([defaultvalue (L""), in] BSTR message);
    [id (DISPID_IHTMLWINDOW2_PROMPT)] VARIANT prompt ([defaultvalue (L""), in] BSTR message,[defaultvalue (L"undefined"), in] BSTR defstr);
    [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 (L""), in] BSTR url,[defaultvalue (L""), in] BSTR name,[defaultvalue (L""), 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 (L""), in] BSTR features);
    [propget, id (DISPID_IHTMLWINDOW2_SCREEN)] IHTMLScreen *screen ();
    [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 (L"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 (L""), in] BSTR url,[defaultvalue (0), optional, in] VARIANT *varArgIn,[defaultvalue (0), optional, in] VARIANT *options);
    [id (DISPID_IHTMLWINDOW4_CREATEPOPUP)] IDispatch *createPopup ([optional, in] 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,[optional, in] 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,[defaultvalue (L""), in] 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 ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERDOWN), displaybind, bindable] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERDOWN), displaybind, bindable] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERMOVE), displaybind, bindable] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERMOVE), displaybind, bindable] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERUP), displaybind, bindable] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERUP), displaybind, bindable] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROVER), displaybind, bindable] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROVER), displaybind, bindable] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROUT), displaybind, bindable] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTEROUT), displaybind, bindable] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERCANCEL), displaybind, bindable] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERCANCEL), displaybind, bindable] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSPOINTERHOVER), displaybind, bindable] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSPOINTERHOVER), displaybind, bindable] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURESTART), displaybind, bindable] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURESTART), displaybind, bindable] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURECHANGE), displaybind, bindable] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURECHANGE), displaybind, bindable] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREEND), displaybind, bindable] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREEND), displaybind, bindable] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREHOLD), displaybind, bindable] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREHOLD), displaybind, bindable] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTURETAP), displaybind, bindable] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTURETAP), displaybind, bindable] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSGESTUREDOUBLETAP), displaybind, bindable] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSGESTUREDOUBLETAP), displaybind, bindable] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLWINDOW8_ONMSINERTIASTART), displaybind, bindable] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONMSINERTIASTART), displaybind, bindable] VARIANT onmsinertiastart ();
    [propget, id (DISPID_IHTMLWINDOW8_APPLICATIONCACHE)] IHTMLApplicationCache *applicationCache ();
    [propput, id (DISPID_IHTMLWINDOW8_ONPOPSTATE), displaybind, bindable] void onpopstate (VARIANT v);
    [propget, id (DISPID_IHTMLWINDOW8_ONPOPSTATE), displaybind, bindable] VARIANT onpopstate ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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);
  };
  [uuid (3050f391-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLWindowProxy {
    [default] dispinterface DispHTMLWindowProxy;
    [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;
  };
  cpp_quote("EXTERN_C const GUID CLSID_COmWindowProxy;")
  [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);
  };
  [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 index,[retval, out] IHTMLDocumentCompatibleInfo **compatibleInfo);
  };
  [hidden, uuid (3050f53e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDocumentCompatibleInfo {
    properties:
    methods:
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3051041b-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDocumentCompatibleInfo {
    [default] dispinterface DispHTMLDocumentCompatibleInfo;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDocumentVersion;")
  [hidden, uuid (3050f53f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDocumentCompatibleInfoCollection {
    properties:
    methods:
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (30510419-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDocumentCompatibleInfoCollection {
    [default] dispinterface DispHTMLDocumentCompatibleInfoCollection;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDocumentVersionCollection;")
  [hidden, uuid (30510737-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLDocumentEvents4 {
    properties:
    methods:
    [id (DISPID_HTMLDOCUMENTEVENTS4_ONMSTHUMBNAILCLICK)] void onmsthumbnailclick ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS4_ONMSSITEMODEJUMPLISTITEMREMOVED)] void onmssitemodejumplistitemremoved ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f5a0-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLDocumentEvents3 {
    properties:
    methods:
    [id (DISPID_HTMLDOCUMENTEVENTS3_ONSTORAGE)] void onstorage ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLDOCUMENTEVENTS3_ONSTORAGECOMMIT)] void onstoragecommit ([in] IHTMLEventObj *pEvtObj);
  };
  [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);
  };
  [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 ();
  };
  typedef enum _htmlCompatMode {
    htmlCompatModeBackCompat = 0,
    htmlCompatModeCSS1Compat = 1,
    htmlCompatMode_Max = 0x7FFFFFFF
  } htmlCompatMode;
  interface ISVGSVGElement;
  interface IDOMNodeIterator;
  interface IDOMTreeWalker;
  interface IDOMProcessingInstruction;
  [odl, oleautomation, dual, uuid (626fc520-A41E-11cf-A731-00a0c9082637)] interface IHTMLDocument : IDispatch {
    [propget, id (DISPID_IHTMLDOCUMENT_SCRIPT), hidden, nonbrowsable] HRESULT Script ([retval, out] IDispatch **p);
  };
  [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), hidden] HRESULT designMode ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT2_DESIGNMODE), hidden] HRESULT designMode ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENT2_SELECTION)] HRESULT selection ([retval, out] IHTMLSelectionObject **p);
    [propget, id (DISPID_IHTMLDOCUMENT2_READYSTATE), bindable] 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), bindable, hidden] HRESULT expando ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDOCUMENT2_EXPANDO), bindable, hidden] HRESULT expando ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_CHARSET), hidden] HRESULT charset ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT2_CHARSET), hidden] 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 (L"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,[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), displaybind, bindable] HRESULT onhelp ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONHELP), displaybind, bindable] HRESULT onhelp ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONCLICK), displaybind, bindable] HRESULT onclick ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONCLICK), displaybind, bindable] HRESULT onclick ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONDBLCLICK), displaybind, bindable] HRESULT ondblclick ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONDBLCLICK), displaybind, bindable] HRESULT ondblclick ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONKEYUP), displaybind, bindable] HRESULT onkeyup ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONKEYUP), displaybind, bindable] HRESULT onkeyup ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONKEYDOWN), displaybind, bindable] HRESULT onkeydown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONKEYDOWN), displaybind, bindable] HRESULT onkeydown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONKEYPRESS), displaybind, bindable] HRESULT onkeypress ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONKEYPRESS), displaybind, bindable] HRESULT onkeypress ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONMOUSEUP), displaybind, bindable] HRESULT onmouseup ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONMOUSEUP), displaybind, bindable] HRESULT onmouseup ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN), displaybind, bindable] HRESULT onmousedown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONMOUSEDOWN), displaybind, bindable] HRESULT onmousedown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE), displaybind, bindable] HRESULT onmousemove ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONMOUSEMOVE), displaybind, bindable] HRESULT onmousemove ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONMOUSEOUT), displaybind, bindable] HRESULT onmouseout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONMOUSEOUT), displaybind, bindable] HRESULT onmouseout ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONMOUSEOVER), displaybind, bindable] HRESULT onmouseover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONMOUSEOVER), displaybind, bindable] HRESULT onmouseover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE), displaybind, bindable] HRESULT onafterupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONAFTERUPDATE), displaybind, bindable] HRESULT onafterupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONROWEXIT), displaybind, bindable] HRESULT onrowexit ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONROWEXIT), displaybind, bindable] HRESULT onrowexit ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONROWENTER), displaybind, bindable] HRESULT onrowenter ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONROWENTER), displaybind, bindable] HRESULT onrowenter ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONDRAGSTART), displaybind, bindable] HRESULT ondragstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONDRAGSTART), displaybind, bindable] HRESULT ondragstart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONSELECTSTART), displaybind, bindable] HRESULT onselectstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONSELECTSTART), displaybind, bindable] 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), displaybind, bindable] HRESULT onbeforeupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONBEFOREUPDATE), displaybind, bindable] HRESULT onbeforeupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT2_ONERRORUPDATE), displaybind, bindable] HRESULT onerrorupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT2_ONERRORUPDATE), displaybind, bindable] HRESULT onerrorupdate ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDOCUMENT2_TOSTRING)] HRESULT toString ([retval, out] BSTR *String);
    [id (DISPID_IHTMLDOCUMENT2_CREATESTYLESHEET)] HRESULT createStyleSheet ([defaultvalue (L""), in] BSTR bstrHref,[defaultvalue (-1), in] long lIndex,[defaultvalue (0), retval, out] IHTMLStyleSheet **ppnewStyleSheet);
  };
  [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);
  };
  [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);
  };
  [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);
  };
  [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 **ppRetElement);
    [id (DISPID_IHTMLDOCUMENT6_UPDATESETTINGS)] HRESULT updateSettings ();
  };
  [odl, oleautomation, dual, uuid (305104b8-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDocument7 : IDispatch {
    [propget, id (DISPID_IHTMLDOCUMENT7_DEFAULTVIEW)] HRESULT defaultView ([retval, out] IHTMLWindow2 **p);
    [id (DISPID_IHTMLDOCUMENT7_CREATECDATASECTION)] HRESULT createCDATASection ([in] BSTR text,[retval, out] IHTMLDOMNode **newCDATASectionNode);
    [id (DISPID_IHTMLDOCUMENT7_GETSELECTION)] HRESULT getSelection ([retval, out] IHTMLSelection **ppIHTMLSelection);
    [id (DISPID_IHTMLDOCUMENT7_GETELEMENTSBYTAGNAMENS)] HRESULT getElementsByTagNameNS ([in] VARIANT *pvarNS,[in] BSTR bstrLocalName,[retval, out] IHTMLElementCollection **pelColl);
    [id (DISPID_IHTMLDOCUMENT7_CREATEELEMENTNS)] HRESULT createElementNS ([in] VARIANT *pvarNS,[in] BSTR bstrTag,[retval, out] IHTMLElement **newElem);
    [id (DISPID_IHTMLDOCUMENT7_CREATEATTRIBUTENS)] HRESULT createAttributeNS ([in] VARIANT *pvarNS,[in] BSTR bstrAttrName,[retval, out] IHTMLDOMAttribute **ppAttribute);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONMSTHUMBNAILCLICK), displaybind, bindable] HRESULT onmsthumbnailclick ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONMSTHUMBNAILCLICK), displaybind, bindable] HRESULT onmsthumbnailclick ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOCUMENT7_CHARACTERSET)] HRESULT characterSet ([retval, out] BSTR *p);
    [id (DISPID_IHTMLDOCUMENT7_IE9_CREATEELEMENT)] HRESULT createElement ([in] BSTR bstrTag,[retval, out] IHTMLElement **newElem);
    [id (DISPID_IHTMLDOCUMENT7_IE9_CREATEATTRIBUTE)] HRESULT createAttribute ([in] BSTR bstrAttrName,[retval, out] IHTMLDOMAttribute **ppAttribute);
    [id (DISPID_IHTMLDOCUMENT7_GETELEMENTSBYCLASSNAME)] HRESULT getElementsByClassName ([in] BSTR v,[retval, out] IHTMLElementCollection **pel);
    [id (DISPID_IHTMLDOCUMENT7_CREATEPROCESSINGINSTRUCTION)] HRESULT createProcessingInstruction ([in] BSTR bstrTarget,[in] BSTR bstrData,[retval, out] IDOMProcessingInstruction **newProcessingInstruction);
    [id (DISPID_IHTMLDOCUMENT7_ADOPTNODE)] HRESULT adoptNode ([in] IHTMLDOMNode *pNodeSource,[retval, out] IHTMLDOMNode3 **ppNodeDest);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONMSSITEMODEJUMPLISTITEMREMOVED), displaybind, bindable] HRESULT onmssitemodejumplistitemremoved ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONMSSITEMODEJUMPLISTITEMREMOVED), displaybind, bindable] HRESULT onmssitemodejumplistitemremoved ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLDOCUMENT7_IE9_ALL)] HRESULT all ([retval, out] IHTMLElementCollection **p);
    [propget, id (DISPID_IHTMLDOCUMENT7_INPUTENCODING)] HRESULT inputEncoding ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLDOCUMENT7_XMLENCODING)] HRESULT xmlEncoding ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_XMLSTANDALONE)] HRESULT xmlStandalone ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDOCUMENT7_XMLSTANDALONE)] HRESULT xmlStandalone ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_XMLVERSION)] HRESULT xmlVersion ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT7_XMLVERSION)] HRESULT xmlVersion ([retval, out] BSTR *p);
    [id (DISPID_IHTMLDOCUMENT7_HASATTRIBUTES)] HRESULT hasAttributes ([retval, out] VARIANT_BOOL *pfHasAttributes);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONABORT), displaybind, bindable] HRESULT onabort ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONABORT), displaybind, bindable] HRESULT onabort ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONBLUR), displaybind, bindable] HRESULT onblur ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONBLUR), displaybind, bindable] HRESULT onblur ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONCANPLAY), displaybind, bindable] HRESULT oncanplay ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONCANPLAY), displaybind, bindable] HRESULT oncanplay ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONCANPLAYTHROUGH), displaybind, bindable] HRESULT oncanplaythrough ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONCANPLAYTHROUGH), displaybind, bindable] HRESULT oncanplaythrough ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONCHANGE), displaybind, bindable] HRESULT onchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONCHANGE), displaybind, bindable] HRESULT onchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAG), displaybind, bindable] HRESULT ondrag ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAG), displaybind, bindable] HRESULT ondrag ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAGEND), displaybind, bindable] HRESULT ondragend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAGEND), displaybind, bindable] HRESULT ondragend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAGENTER), displaybind, bindable] HRESULT ondragenter ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAGENTER), displaybind, bindable] HRESULT ondragenter ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAGLEAVE), displaybind, bindable] HRESULT ondragleave ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAGLEAVE), displaybind, bindable] HRESULT ondragleave ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAGOVER), displaybind, bindable] HRESULT ondragover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAGOVER), displaybind, bindable] HRESULT ondragover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDROP), displaybind, bindable] HRESULT ondrop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDROP), displaybind, bindable] HRESULT ondrop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDURATIONCHANGE), displaybind, bindable] HRESULT ondurationchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDURATIONCHANGE), displaybind, bindable] HRESULT ondurationchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONEMPTIED), displaybind, bindable] HRESULT onemptied ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONEMPTIED), displaybind, bindable] HRESULT onemptied ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONENDED), displaybind, bindable] HRESULT onended ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONENDED), displaybind, bindable] HRESULT onended ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONERROR), displaybind, bindable] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONERROR), displaybind, bindable] HRESULT onerror ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONFOCUS), displaybind, bindable] HRESULT onfocus ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONFOCUS), displaybind, bindable] HRESULT onfocus ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONINPUT), displaybind, bindable] HRESULT oninput ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONINPUT), displaybind, bindable] HRESULT oninput ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONLOADEDDATA), displaybind, bindable] HRESULT onloadeddata ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONLOADEDDATA), displaybind, bindable] HRESULT onloadeddata ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONLOADEDMETADATA), displaybind, bindable] HRESULT onloadedmetadata ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONLOADEDMETADATA), displaybind, bindable] HRESULT onloadedmetadata ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONLOADSTART), displaybind, bindable] HRESULT onloadstart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONLOADSTART), displaybind, bindable] HRESULT onloadstart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONPAUSE), displaybind, bindable] HRESULT onpause ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONPAUSE), displaybind, bindable] HRESULT onpause ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONPLAY), displaybind, bindable] HRESULT onplay ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONPLAY), displaybind, bindable] HRESULT onplay ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONPLAYING), displaybind, bindable] HRESULT onplaying ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONPLAYING), displaybind, bindable] HRESULT onplaying ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONPROGRESS), displaybind, bindable] HRESULT onprogress ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONPROGRESS), displaybind, bindable] HRESULT onprogress ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONRATECHANGE), displaybind, bindable] HRESULT onratechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONRATECHANGE), displaybind, bindable] HRESULT onratechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONRESET), displaybind, bindable] HRESULT onreset ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONRESET), displaybind, bindable] HRESULT onreset ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSCROLL), displaybind, bindable] HRESULT onscroll ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSCROLL), displaybind, bindable] HRESULT onscroll ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSEEKED), displaybind, bindable] HRESULT onseeked ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSEEKED), displaybind, bindable] HRESULT onseeked ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSEEKING), displaybind, bindable] HRESULT onseeking ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSEEKING), displaybind, bindable] HRESULT onseeking ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSELECT), displaybind, bindable] HRESULT onselect ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSELECT), displaybind, bindable] HRESULT onselect ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSTALLED), displaybind, bindable] HRESULT onstalled ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSTALLED), displaybind, bindable] HRESULT onstalled ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSUBMIT), displaybind, bindable] HRESULT onsubmit ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSUBMIT), displaybind, bindable] HRESULT onsubmit ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSUSPEND), displaybind, bindable] HRESULT onsuspend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSUSPEND), displaybind, bindable] HRESULT onsuspend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONTIMEUPDATE), displaybind, bindable] HRESULT ontimeupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONTIMEUPDATE), displaybind, bindable] HRESULT ontimeupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONVOLUMECHANGE), displaybind, bindable] HRESULT onvolumechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONVOLUMECHANGE), displaybind, bindable] HRESULT onvolumechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONWAITING), displaybind, bindable] HRESULT onwaiting ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONWAITING), displaybind, bindable] HRESULT onwaiting ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDOCUMENT7_NORMALIZE)] HRESULT normalize ();
    [id (DISPID_IHTMLDOCUMENT7_IMPORTNODE)] HRESULT importNode ([in] IHTMLDOMNode *pNodeSource,[in] VARIANT_BOOL fDeep,[retval, out] IHTMLDOMNode3 **ppNodeDest);
    [propget, id (DISPID_IHTMLDOCUMENT7_IE9_PARENTWINDOW)] HRESULT parentWindow ([retval, out] IHTMLWindow2 **p);
    [propputref, id (DISPID_IHTMLDOCUMENT7_IE9_BODY)] HRESULT body ([in] IHTMLElement *v);
    [propget, id (DISPID_IHTMLDOCUMENT7_IE9_BODY)] HRESULT body ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IHTMLDOCUMENT7_HEAD)] HRESULT head ([retval, out] IHTMLElement **p);
  };
  [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 ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERDOWN), displaybind, bindable] HRESULT onmspointerdown ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERDOWN), displaybind, bindable] HRESULT onmspointerdown ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERMOVE), displaybind, bindable] HRESULT onmspointermove ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERMOVE), displaybind, bindable] HRESULT onmspointermove ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERUP), displaybind, bindable] HRESULT onmspointerup ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERUP), displaybind, bindable] HRESULT onmspointerup ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTEROVER), displaybind, bindable] HRESULT onmspointerover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTEROVER), displaybind, bindable] HRESULT onmspointerover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTEROUT), displaybind, bindable] HRESULT onmspointerout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTEROUT), displaybind, bindable] HRESULT onmspointerout ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERCANCEL), displaybind, bindable] HRESULT onmspointercancel ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERCANCEL), displaybind, bindable] HRESULT onmspointercancel ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERHOVER), displaybind, bindable] HRESULT onmspointerhover ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERHOVER), displaybind, bindable] HRESULT onmspointerhover ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURESTART), displaybind, bindable] HRESULT onmsgesturestart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURESTART), displaybind, bindable] HRESULT onmsgesturestart ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURECHANGE), displaybind, bindable] HRESULT onmsgesturechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURECHANGE), displaybind, bindable] HRESULT onmsgesturechange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREEND), displaybind, bindable] HRESULT onmsgestureend ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREEND), displaybind, bindable] HRESULT onmsgestureend ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREHOLD), displaybind, bindable] HRESULT onmsgesturehold ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREHOLD), displaybind, bindable] HRESULT onmsgesturehold ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURETAP), displaybind, bindable] HRESULT onmsgesturetap ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURETAP), displaybind, bindable] HRESULT onmsgesturetap ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREDOUBLETAP), displaybind, bindable] HRESULT onmsgesturedoubletap ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREDOUBLETAP), displaybind, bindable] HRESULT onmsgesturedoubletap ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSINERTIASTART), displaybind, bindable] HRESULT onmsinertiastart ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSINERTIASTART), displaybind, bindable] HRESULT onmsinertiastart ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDOCUMENT8_ELEMENTSFROMPOINT)] HRESULT elementsFromPoint ([in] float x,[in] float y,[retval, out] IHTMLDOMChildrenCollection **elementsHit);
    [id (DISPID_IHTMLDOCUMENT8_ELEMENTSFROMRECT)] HRESULT elementsFromRect ([in] float left,[in] float top,[in] float width,[in] float height,[retval, out] IHTMLDOMChildrenCollection **elementsHit);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable] HRESULT onmsmanipulationstatechanged ([in] VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable] HRESULT onmsmanipulationstatechanged ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLDOCUMENT8_MSCAPSLOCKWARNINGOFF)] HRESULT msCapsLockWarningOff ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDOCUMENT8_MSCAPSLOCKWARNINGOFF)] HRESULT msCapsLockWarningOff ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (305104bc-98b5-11cf-bb82-00aa00bdce0b)] interface IDocumentEvent : IDispatch {
    [id (DISPID_IDOCUMENTEVENT_CREATEEVENT)] HRESULT createEvent ([in] BSTR eventType,[retval, out] IDOMEvent **ppEvent);
  };
  [odl, oleautomation, dual, uuid (305104af-98b5-11cf-bb82-00aa00bdce0b)] interface IDocumentRange : IDispatch {
    [id (DISPID_IDOCUMENTRANGE_CREATERANGE)] HRESULT createRange ([retval, out] IHTMLDOMRange **ppIHTMLDOMRange);
  };
  [odl, oleautomation, dual, uuid (30510462-98b5-11cf-bb82-00aa00bdce0b)] interface IDocumentSelector : IDispatch {
    [id (DISPID_IDOCUMENTSELECTOR_QUERYSELECTOR)] HRESULT querySelector ([in] BSTR v,[retval, out] IHTMLElement **pel);
    [id (DISPID_IDOCUMENTSELECTOR_QUERYSELECTORALL)] HRESULT querySelectorAll ([in] BSTR v,[retval, out] IHTMLDOMChildrenCollection **pel);
  };
  [odl, oleautomation, dual, uuid (30510744-98b5-11cf-bb82-00aa00bdce0b)] interface IDocumentTraversal : IDispatch {
    [id (DISPID_IDOCUMENTTRAVERSAL_CREATENODEITERATOR)] HRESULT createNodeIterator ([in] IDispatch *pRootNode,[in] long ulWhatToShow,[in] VARIANT *pFilter,[in] VARIANT_BOOL fEntityReferenceExpansion,[retval, out] IDOMNodeIterator **ppNodeIterator);
    [id (DISPID_IDOCUMENTTRAVERSAL_CREATETREEWALKER)] HRESULT createTreeWalker ([in] IDispatch *pRootNode,[in] long ulWhatToShow,[in] VARIANT *pFilter,[in] VARIANT_BOOL fEntityReferenceExpansion,[retval, out] IDOMTreeWalker **ppTreeWalker);
  };
  [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 (L"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,[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 (L""), 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 ();
    [propget, id (DISPID_IHTMLDOCUMENT7_DEFAULTVIEW)] IHTMLWindow2 *defaultView ();
    [id (DISPID_IHTMLDOCUMENT7_CREATECDATASECTION)] IHTMLDOMNode *createCDATASection ([in] BSTR text);
    [id (DISPID_IHTMLDOCUMENT7_GETSELECTION)] IHTMLSelection *getSelection ();
    [id (DISPID_IHTMLDOCUMENT7_GETELEMENTSBYTAGNAMENS)] IHTMLElementCollection *getElementsByTagNameNS ([in] VARIANT *pvarNS,[in] BSTR bstrLocalName);
    [id (DISPID_IHTMLDOCUMENT7_CREATEELEMENTNS)] IHTMLElement *createElementNS ([in] VARIANT *pvarNS,[in] BSTR bstrTag);
    [id (DISPID_IHTMLDOCUMENT7_CREATEATTRIBUTENS)] IHTMLDOMAttribute *createAttributeNS ([in] VARIANT *pvarNS,[in] BSTR bstrAttrName);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONMSTHUMBNAILCLICK), displaybind, bindable] void onmsthumbnailclick (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONMSTHUMBNAILCLICK), displaybind, bindable] VARIANT onmsthumbnailclick ();
    [propget, id (DISPID_IHTMLDOCUMENT7_CHARACTERSET)] BSTR characterSet ();
    [id (DISPID_IHTMLDOCUMENT7_IE9_CREATEELEMENT)] IHTMLElement *ie9_createElement ([in] BSTR bstrTag);
    [id (DISPID_IHTMLDOCUMENT7_IE9_CREATEATTRIBUTE)] IHTMLDOMAttribute *ie9_createAttribute ([in] BSTR bstrAttrName);
    [id (DISPID_IHTMLDOCUMENT7_GETELEMENTSBYCLASSNAME)] IHTMLElementCollection *getElementsByClassName ([in] BSTR v);
    [id (DISPID_IHTMLDOCUMENT7_CREATEPROCESSINGINSTRUCTION)] IDOMProcessingInstruction *createProcessingInstruction ([in] BSTR bstrTarget,[in] BSTR bstrData);
    [id (DISPID_IHTMLDOCUMENT7_ADOPTNODE)] IHTMLDOMNode3 *adoptNode ([in] IHTMLDOMNode *pNodeSource);
    [propput, id (DISPID_IHTMLDOCUMENT7_ONMSSITEMODEJUMPLISTITEMREMOVED), displaybind, bindable] void onmssitemodejumplistitemremoved (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONMSSITEMODEJUMPLISTITEMREMOVED), displaybind, bindable] VARIANT onmssitemodejumplistitemremoved ();
    [propget, id (DISPID_IHTMLDOCUMENT7_IE9_ALL)] IHTMLElementCollection *ie9_all ();
    [propget, id (DISPID_IHTMLDOCUMENT7_INPUTENCODING)] BSTR inputEncoding ();
    [propget, id (DISPID_IHTMLDOCUMENT7_XMLENCODING)] BSTR xmlEncoding ();
    [propput, id (DISPID_IHTMLDOCUMENT7_XMLSTANDALONE)] void xmlStandalone (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDOCUMENT7_XMLSTANDALONE)] VARIANT_BOOL xmlStandalone ();
    [propput, id (DISPID_IHTMLDOCUMENT7_XMLVERSION)] void xmlVersion (BSTR v);
    [propget, id (DISPID_IHTMLDOCUMENT7_XMLVERSION)] BSTR xmlVersion ();
    [id (DISPID_IHTMLDOCUMENT7_HASATTRIBUTES)] VARIANT_BOOL hasAttributes ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONABORT), displaybind, bindable] void onabort (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONABORT), displaybind, bindable] VARIANT onabort ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONCANPLAY), displaybind, bindable] void oncanplay (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONCANPLAY), displaybind, bindable] VARIANT oncanplay ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONCANPLAYTHROUGH), displaybind, bindable] void oncanplaythrough (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONCANPLAYTHROUGH), displaybind, bindable] VARIANT oncanplaythrough ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAG), displaybind, bindable] void ondrag (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAG), displaybind, bindable] VARIANT ondrag ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAGEND), displaybind, bindable] void ondragend (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAGEND), displaybind, bindable] VARIANT ondragend ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAGENTER), displaybind, bindable] void ondragenter (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAGENTER), displaybind, bindable] VARIANT ondragenter ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAGLEAVE), displaybind, bindable] void ondragleave (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAGLEAVE), displaybind, bindable] VARIANT ondragleave ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDRAGOVER), displaybind, bindable] void ondragover (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDRAGOVER), displaybind, bindable] VARIANT ondragover ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDROP), displaybind, bindable] void ondrop (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDROP), displaybind, bindable] VARIANT ondrop ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONDURATIONCHANGE), displaybind, bindable] void ondurationchange (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONDURATIONCHANGE), displaybind, bindable] VARIANT ondurationchange ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONEMPTIED), displaybind, bindable] void onemptied (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONEMPTIED), displaybind, bindable] VARIANT onemptied ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONENDED), displaybind, bindable] void onended (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONENDED), displaybind, bindable] VARIANT onended ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONERROR), displaybind, bindable] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONERROR), displaybind, bindable] VARIANT onerror ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONINPUT), displaybind, bindable] void oninput (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONINPUT), displaybind, bindable] VARIANT oninput ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONLOAD), displaybind, bindable] void onload (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONLOAD), displaybind, bindable] VARIANT onload ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONLOADEDDATA), displaybind, bindable] void onloadeddata (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONLOADEDDATA), displaybind, bindable] VARIANT onloadeddata ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONLOADEDMETADATA), displaybind, bindable] void onloadedmetadata (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONLOADEDMETADATA), displaybind, bindable] VARIANT onloadedmetadata ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONLOADSTART), displaybind, bindable] void onloadstart (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONLOADSTART), displaybind, bindable] VARIANT onloadstart ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONPAUSE), displaybind, bindable] void onpause (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONPAUSE), displaybind, bindable] VARIANT onpause ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONPLAY), displaybind, bindable] void onplay (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONPLAY), displaybind, bindable] VARIANT onplay ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONPLAYING), displaybind, bindable] void onplaying (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONPLAYING), displaybind, bindable] VARIANT onplaying ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONPROGRESS), displaybind, bindable] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONPROGRESS), displaybind, bindable] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONRATECHANGE), displaybind, bindable] void onratechange (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONRATECHANGE), displaybind, bindable] VARIANT onratechange ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONRESET), displaybind, bindable] void onreset (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONRESET), displaybind, bindable] VARIANT onreset ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSCROLL), displaybind, bindable] void onscroll (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSCROLL), displaybind, bindable] VARIANT onscroll ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSEEKED), displaybind, bindable] void onseeked (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSEEKED), displaybind, bindable] VARIANT onseeked ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSEEKING), displaybind, bindable] void onseeking (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSEEKING), displaybind, bindable] VARIANT onseeking ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSTALLED), displaybind, bindable] void onstalled (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSTALLED), displaybind, bindable] VARIANT onstalled ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSUBMIT), displaybind, bindable] void onsubmit (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSUBMIT), displaybind, bindable] VARIANT onsubmit ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONSUSPEND), displaybind, bindable] void onsuspend (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONSUSPEND), displaybind, bindable] VARIANT onsuspend ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONTIMEUPDATE), displaybind, bindable] void ontimeupdate (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONTIMEUPDATE), displaybind, bindable] VARIANT ontimeupdate ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONVOLUMECHANGE), displaybind, bindable] void onvolumechange (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONVOLUMECHANGE), displaybind, bindable] VARIANT onvolumechange ();
    [propput, id (DISPID_IHTMLDOCUMENT7_ONWAITING), displaybind, bindable] void onwaiting (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT7_ONWAITING), displaybind, bindable] VARIANT onwaiting ();
    [id (DISPID_IHTMLDOCUMENT7_NORMALIZE)] void normalize ();
    [id (DISPID_IHTMLDOCUMENT7_IMPORTNODE)] IHTMLDOMNode3 *importNode ([in] IHTMLDOMNode *pNodeSource,[in] VARIANT_BOOL fDeep);
    [propget, id (DISPID_IHTMLDOCUMENT7_IE9_PARENTWINDOW)] IHTMLWindow2 *ie9_parentWindow ();
    [propputref, id (DISPID_IHTMLDOCUMENT7_IE9_BODY)] void ie9_body (IHTMLElement *v);
    [propget, id (DISPID_IHTMLDOCUMENT7_IE9_BODY)] IHTMLElement *ie9_body ();
    [propget, id (DISPID_IHTMLDOCUMENT7_HEAD)] IHTMLElement *head ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSCONTENTZOOM), displaybind, bindable] void onmscontentzoom (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSCONTENTZOOM), displaybind, bindable] VARIANT onmscontentzoom ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERDOWN), displaybind, bindable] void onmspointerdown (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERDOWN), displaybind, bindable] VARIANT onmspointerdown ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERMOVE), displaybind, bindable] void onmspointermove (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERMOVE), displaybind, bindable] VARIANT onmspointermove ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERUP), displaybind, bindable] void onmspointerup (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERUP), displaybind, bindable] VARIANT onmspointerup ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTEROVER), displaybind, bindable] void onmspointerover (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTEROVER), displaybind, bindable] VARIANT onmspointerover ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTEROUT), displaybind, bindable] void onmspointerout (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTEROUT), displaybind, bindable] VARIANT onmspointerout ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERCANCEL), displaybind, bindable] void onmspointercancel (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERCANCEL), displaybind, bindable] VARIANT onmspointercancel ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERHOVER), displaybind, bindable] void onmspointerhover (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSPOINTERHOVER), displaybind, bindable] VARIANT onmspointerhover ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURESTART), displaybind, bindable] void onmsgesturestart (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURESTART), displaybind, bindable] VARIANT onmsgesturestart ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURECHANGE), displaybind, bindable] void onmsgesturechange (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURECHANGE), displaybind, bindable] VARIANT onmsgesturechange ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREEND), displaybind, bindable] void onmsgestureend (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREEND), displaybind, bindable] VARIANT onmsgestureend ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREHOLD), displaybind, bindable] void onmsgesturehold (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREHOLD), displaybind, bindable] VARIANT onmsgesturehold ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURETAP), displaybind, bindable] void onmsgesturetap (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTURETAP), displaybind, bindable] VARIANT onmsgesturetap ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREDOUBLETAP), displaybind, bindable] void onmsgesturedoubletap (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSGESTUREDOUBLETAP), displaybind, bindable] VARIANT onmsgesturedoubletap ();
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSINERTIASTART), displaybind, bindable] void onmsinertiastart (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSINERTIASTART), displaybind, bindable] VARIANT onmsinertiastart ();
    [id (DISPID_IHTMLDOCUMENT8_ELEMENTSFROMPOINT)] IHTMLDOMChildrenCollection *elementsFromPoint ([in] float x,[in] float y);
    [id (DISPID_IHTMLDOCUMENT8_ELEMENTSFROMRECT)] IHTMLDOMChildrenCollection *elementsFromRect ([in] float left,[in] float top,[in] float width,[in] float height);
    [propput, id (DISPID_IHTMLDOCUMENT8_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable] void onmsmanipulationstatechanged (VARIANT v);
    [propget, id (DISPID_IHTMLDOCUMENT8_ONMSMANIPULATIONSTATECHANGED), displaybind, bindable] VARIANT onmsmanipulationstatechanged ();
    [propput, id (DISPID_IHTMLDOCUMENT8_MSCAPSLOCKWARNINGOFF)] void msCapsLockWarningOff (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLDOCUMENT8_MSCAPSLOCKWARNINGOFF)] VARIANT_BOOL msCapsLockWarningOff ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [id (DISPID_IDOCUMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IDOCUMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [id (DISPID_IDOCUMENTTRAVERSAL_CREATENODEITERATOR)] IDOMNodeIterator *createNodeIterator ([in] IDispatch *pRootNode,[in] long ulWhatToShow,[in] VARIANT *pFilter,[in] VARIANT_BOOL fEntityReferenceExpansion);
    [id (DISPID_IDOCUMENTTRAVERSAL_CREATETREEWALKER)] IDOMTreeWalker *createTreeWalker ([in] IDispatch *pRootNode,[in] long ulWhatToShow,[in] VARIANT *pFilter,[in] VARIANT_BOOL fEntityReferenceExpansion);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [id (DISPID_IDOCUMENTEVENT_CREATEEVENT)] IDOMEvent *createEvent ([in] BSTR eventType);
    [id (DISPID_IDOCUMENTRANGE_CREATERANGE)] IHTMLDOMRange *createRange ();
    [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);
    [propget, id (DISPID_ISVGDOCUMENT_ROOTELEMENT)] ISVGSVGElement *rootElement ();
  };
  [uuid (25336920-03f9-11cf-8fd0-00aa00686f13)] coclass HTMLDocument {
    [default] dispinterface DispHTMLDocument;
    [source, default] dispinterface HTMLDocumentEvents;
    [source] dispinterface HTMLDocumentEvents2;
    [source] dispinterface HTMLDocumentEvents3;
    [source] dispinterface HTMLDocumentEvents4;
    interface IHTMLDocument2;
    interface IHTMLDocument3;
    interface IHTMLDocument4;
    interface IHTMLDocument5;
    interface IHTMLDocument6;
    interface IHTMLDocument7;
    interface IHTMLDocument8;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IDocumentSelector;
    interface IDocumentTraversal;
    interface IHTMLDOMConstructor;
    interface IDocumentEvent;
    interface IDocumentRange;
    interface IEventTarget;
    interface ISVGDocument;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDocument;")
  [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 ();
  };
  [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 ();
  };
  [odl, oleautomation, dual, uuid (A5170870-0cf8-11d1-8b91-0080c744f389)] interface IWBScriptControl : IDispatch {
    [id (DISPID_IWBSCRIPTCONTROL_RAISEEVENT)] HRESULT raiseEvent ([in] BSTR name,[in] VARIANT eventData);
    [id (DISPID_IWBSCRIPTCONTROL_BUBBLEEVENT)] HRESULT bubbleEvent ();
    [id (DISPID_IWBSCRIPTCONTROL_SETCONTEXTMENU)] HRESULT setContextMenu ([in] VARIANT menuItemPairs);
    [propput, id (DISPID_IWBSCRIPTCONTROL_SELECTABLECONTENT)] HRESULT selectableContent ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IWBSCRIPTCONTROL_SELECTABLECONTENT)] HRESULT selectableContent ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IWBSCRIPTCONTROL_FROZEN)] HRESULT frozen ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IWBSCRIPTCONTROL_SCROLLBAR)] HRESULT scrollbar ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IWBSCRIPTCONTROL_SCROLLBAR)] HRESULT scrollbar ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IWBSCRIPTCONTROL_VERSION)] HRESULT version ([retval, out] BSTR *p);
    [propget, id (DISPID_IWBSCRIPTCONTROL_VISIBILITY)] HRESULT visibility ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IWBSCRIPTCONTROL_ONVISIBILITYCHANGE)] HRESULT onvisibilitychange ([in] VARIANT v);
    [propget, id (DISPID_IWBSCRIPTCONTROL_ONVISIBILITYCHANGE)] HRESULT onvisibilitychange ([retval, out] VARIANT *p);
  };
  [control, uuid (AE24FDAE-03c6-11d1-8b76-0080c744f389)] coclass Scriptlet {
    [default] interface IWebBridge;
    [source, default] dispinterface DWebBridgeEvents;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CScriptlet;")
  typedef enum _BoolValue {
    True = 1,
    False = 0,
    BoolValue_Max = 0x7FFFFFFF
  } BoolValue;
  [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);
  };
  [odl, oleautomation, dual, uuid (30510493-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLEmbedElement2 : IDispatch {
    [propput, id (DISPID_IHTMLEMBEDELEMENT2_IE8_SRC)] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLEMBEDELEMENT2_IE8_SRC)] HRESULT src ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLEMBEDELEMENT2_IE8_PLUGINSPAGE)] HRESULT pluginspage ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f52e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLEmbed {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
    [id (DISPID_IGETSVGDOCUMENT_GETSVGDOCUMENT)] IDispatch *getSVGDocument ();
  };
  [noncreatable, uuid (3050f25d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLEmbed {
    [default] dispinterface DispHTMLEmbed;
    [source, default] dispinterface HTMLControlElementEvents;
    [source] dispinterface HTMLControlElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLEmbedElement;
    interface IHTMLEmbedElement2;
    interface IGetSVGDocument;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CPluginSite;")
  [hidden, uuid (3050f61e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLMapEvents2 {
    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 (3050f3ba-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLMapEvents {
    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 ();
  };
  [odl, oleautomation, dual, uuid (3050f383-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAreasCollection : IDispatch {
    [propput, id (DISPID_IHTMLAREASCOLLECTION_LENGTH)] HRESULT length ([in] long v);
    [propget, id (DISPID_IHTMLAREASCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLAREASCOLLECTION__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLAREASCOLLECTION_ITEM)] HRESULT item ([optional, in] VARIANT name,[optional, in] VARIANT index,[retval, out] IDispatch **pdisp);
    [id (DISPID_IHTMLAREASCOLLECTION_TAGS)] HRESULT tags ([in] VARIANT tagName,[retval, out] IDispatch **pdisp);
    [id (DISPID_IHTMLAREASCOLLECTION_ADD)] HRESULT add ([in] IHTMLElement *element,[optional, in] VARIANT before);
    [id (DISPID_IHTMLAREASCOLLECTION_REMOVE)] HRESULT remove ([defaultvalue (-1), in] long index);
  };
  [odl, oleautomation, dual, uuid (3050f5ec-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAreasCollection2 : IDispatch {
    [id (DISPID_IHTMLAREASCOLLECTION2_URNS)] HRESULT urns ([in] VARIANT urn,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (3050f837-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAreasCollection3 : IDispatch {
    [id (DISPID_IHTMLAREASCOLLECTION3_NAMEDITEM)] HRESULT namedItem ([in] BSTR name,[retval, out] IDispatch **pdisp);
  };
  [odl, oleautomation, dual, uuid (30510492-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAreasCollection4 : IDispatch {
    [propget, id (DISPID_IHTMLAREASCOLLECTION4_IE8_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLAREASCOLLECTION4_IE8_ITEM)] HRESULT item ([in] long index,[retval, out] IHTMLElement2 **pNode);
    [id (DISPID_IHTMLAREASCOLLECTION4_IE8_NAMEDITEM)] HRESULT namedItem ([in] BSTR name,[retval, out] IHTMLElement2 **pNode);
  };
  [odl, oleautomation, dual, uuid (3050f266-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMapElement : IDispatch {
    [propget, id (DISPID_IHTMLMAPELEMENT_AREAS)] HRESULT areas ([retval, out] IHTMLAreasCollection **p);
    [propput, id (DISPID_IHTMLMAPELEMENT_NAME)] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLMAPELEMENT_NAME)] HRESULT name ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f56a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLAreasCollection {
    properties:
    methods:
    [propput, id (DISPID_IHTMLAREASCOLLECTION_LENGTH)] void length (long v);
    [propget, id (DISPID_IHTMLAREASCOLLECTION_LENGTH)] long length ();
    [propget, id (DISPID_IHTMLAREASCOLLECTION__NEWENUM), hidden, restricted] IUnknown *_newEnum ();
    [id (DISPID_IHTMLAREASCOLLECTION_ITEM)] IDispatch *item ([optional, in] VARIANT name,[optional, in] VARIANT index);
    [id (DISPID_IHTMLAREASCOLLECTION_TAGS)] IDispatch *tags ([in] VARIANT tagName);
    [id (DISPID_IHTMLAREASCOLLECTION_ADD)] void add ([in] IHTMLElement *element,[optional, in] VARIANT before);
    [id (DISPID_IHTMLAREASCOLLECTION_REMOVE)] void remove ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLAREASCOLLECTION2_URNS)] IDispatch *urns ([in] VARIANT urn);
    [id (DISPID_IHTMLAREASCOLLECTION3_NAMEDITEM)] IDispatch *namedItem ([in] BSTR name);
    [propget, id (DISPID_IHTMLAREASCOLLECTION4_IE8_LENGTH)] long ie8_length ();
    [id (DISPID_IHTMLAREASCOLLECTION4_IE8_ITEM)] IHTMLElement2 *ie8_item ([in] long index);
    [id (DISPID_IHTMLAREASCOLLECTION4_IE8_NAMEDITEM)] IHTMLElement2 *ie8_namedItem ([in] BSTR name);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (3050f4ca-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLAreasCollection {
    [default] dispinterface DispHTMLAreasCollection;
    interface IHTMLAreasCollection;
    interface IHTMLAreasCollection2;
    interface IHTMLAreasCollection3;
    interface IHTMLAreasCollection4;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CAreasCollection;")
  [hidden, uuid (3050f526-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLMapElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propget, id (DISPID_IHTMLMAPELEMENT_AREAS)] IHTMLAreasCollection *areas ();
    [propput, id (DISPID_IHTMLMAPELEMENT_NAME)] void name (BSTR v);
    [propget, id (DISPID_IHTMLMAPELEMENT_NAME)] BSTR name ();
  };
  [noncreatable, uuid (3050f271-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLMapElement {
    [default] dispinterface DispHTMLMapElement;
    [source, default] dispinterface HTMLMapEvents;
    [source] dispinterface HTMLMapEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLMapElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMapElement;")
  [hidden, uuid (3050f611-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLAreaEvents2 {
    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 (3050f366-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLAreaEvents {
    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 ();
  };
  [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 ();
  };
  [odl, oleautomation, dual, uuid (3051041f-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAreaElement2 : IDispatch {
    [propput, id (DISPID_IHTMLAREAELEMENT2_IE8_SHAPE)] HRESULT shape ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT2_IE8_SHAPE)] HRESULT shape ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLAREAELEMENT2_IE8_COORDS)] HRESULT coords ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT2_IE8_COORDS)] HRESULT coords ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLAREAELEMENT2_IE8_HREF)] HRESULT href ([in] BSTR v);
    [propget, id (DISPID_IHTMLAREAELEMENT2_IE8_HREF)] HRESULT href ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f503-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLAreaElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
  };
  [noncreatable, uuid (3050f283-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLAreaElement {
    [default] dispinterface DispHTMLAreaElement;
    [source, default] dispinterface HTMLAreaEvents;
    [source] dispinterface HTMLAreaEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLAreaElement;
    interface IHTMLAreaElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CAreaElement;")
  typedef enum _htmlCaptionAlign {
    htmlCaptionAlignNotSet = 0,
    htmlCaptionAlignLeft = 1,
    htmlCaptionAlignCenter = 2,
    htmlCaptionAlignRight = 3,
    htmlCaptionAlignJustify = 4,
    htmlCaptionAlignTop = 5,
    htmlCaptionAlignBottom = 6,
    htmlCaptionAlign_Max = 0x7FFFFFFF
  } htmlCaptionAlign;

  typedef enum _htmlCaptionVAlign {
    htmlCaptionVAlignNotSet = 0,
    htmlCaptionVAlignTop = 1,
    htmlCaptionVAlignBottom = 2,
    htmlCaptionVAlign_Max = 0x7FFFFFFF
  } htmlCaptionVAlign;
  [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);
  };
  [hidden, uuid (3050f508-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTableCaption {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLTABLECAPTION_ALIGN)] void align (BSTR v);
    [propget, id (DISPID_IHTMLTABLECAPTION_ALIGN)] BSTR align ();
    [propput, id (DISPID_IHTMLTABLECAPTION_VALIGN)] void vAlign (BSTR v);
    [propget, id (DISPID_IHTMLTABLECAPTION_VALIGN)] BSTR vAlign ();
  };
  [noncreatable, uuid (3050f2ec-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTableCaption {
    [default] dispinterface DispHTMLTableCaption;
    [source, default] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLTableCaption;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTableCaption;")
  [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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable] HRESULT atomic ([in] long v);
    [propget, id (DISPID_IHTMLCOMMENTELEMENT_ATOMIC), displaybind, bindable] HRESULT atomic ([retval, out] long *p);
  };
  [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 ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLCOMMENTELEMENT2_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLCOMMENTELEMENT2_SUBSTRINGDATA)] HRESULT substringData ([in] long offset,[in] long Count,[retval, out] 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);
  };
  [odl, oleautomation, dual, uuid (3051073f-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLCommentElement3 : IDispatch {
    [id (DISPID_IHTMLCOMMENTELEMENT3_IE9_SUBSTRINGDATA)] HRESULT substringData ([in] long offset,[in] long Count,[retval, out] BSTR *pbstrsubString);
    [id (DISPID_IHTMLCOMMENTELEMENT3_IE9_INSERTDATA)] HRESULT insertData ([in] long offset,[in] BSTR bstrstring);
    [id (DISPID_IHTMLCOMMENTELEMENT3_IE9_DELETEDATA)] HRESULT deleteData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLCOMMENTELEMENT3_IE9_REPLACEDATA)] HRESULT replaceData ([in] long offset,[in] long Count,[in] BSTR bstrstring);
  };
  [hidden, uuid (3050f50a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLCommentElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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);
    [id (DISPID_IHTMLCOMMENTELEMENT3_IE9_SUBSTRINGDATA)] BSTR ie9_substringData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLCOMMENTELEMENT3_IE9_INSERTDATA)] void ie9_insertData ([in] long offset,[in] BSTR bstrstring);
    [id (DISPID_IHTMLCOMMENTELEMENT3_IE9_DELETEDATA)] void ie9_deleteData ([in] long offset,[in] long Count);
    [id (DISPID_IHTMLCOMMENTELEMENT3_IE9_REPLACEDATA)] void ie9_replaceData ([in] long offset,[in] long Count,[in] BSTR bstrstring);
  };
  [noncreatable, uuid (3050f317-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLCommentElement {
    [default] dispinterface DispHTMLCommentElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLCommentElement;
    interface IHTMLCommentElement2;
    interface IHTMLCommentElement3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CCommentElement;")
  [odl, oleautomation, dual, uuid (3050f20a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLPhraseElement : IDispatch {
  };
  [odl, oleautomation, dual, uuid (3050f824-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLPhraseElement2 : IDispatch {
    [propput, id (DISPID_IHTMLPHRASEELEMENT2_CITE), displaybind, bindable] HRESULT cite ([in] BSTR v);
    [propget, id (DISPID_IHTMLPHRASEELEMENT2_CITE), displaybind, bindable] HRESULT cite ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLPHRASEELEMENT2_DATETIME), displaybind, bindable] HRESULT dateTime ([in] BSTR v);
    [propget, id (DISPID_IHTMLPHRASEELEMENT2_DATETIME), displaybind, bindable] HRESULT dateTime ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3051043d-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLPhraseElement3 : IDispatch {
    [propput, id (DISPID_IHTMLPHRASEELEMENT3_IE8_CITE)] HRESULT cite ([in] BSTR v);
    [propget, id (DISPID_IHTMLPHRASEELEMENT3_IE8_CITE)] HRESULT cite ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f3f3-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSpanElement : IDispatch {
  };
  [hidden, uuid (3050f52d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLPhraseElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLPHRASEELEMENT2_CITE), displaybind, bindable] void cite (BSTR v);
    [propget, id (DISPID_IHTMLPHRASEELEMENT2_CITE), displaybind, bindable] BSTR cite ();
    [propput, id (DISPID_IHTMLPHRASEELEMENT2_DATETIME), displaybind, bindable] void dateTime (BSTR v);
    [propget, id (DISPID_IHTMLPHRASEELEMENT2_DATETIME), displaybind, bindable] BSTR dateTime ();
    [propput, id (DISPID_IHTMLPHRASEELEMENT3_IE8_CITE)] void ie8_cite (BSTR v);
    [propget, id (DISPID_IHTMLPHRASEELEMENT3_IE8_CITE)] BSTR ie8_cite ();
  };
  [noncreatable, uuid (3050f26e-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLPhraseElement {
    [default] dispinterface DispHTMLPhraseElement;
    [source, default] dispinterface HTMLElementEvents;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLPhraseElement;
    interface IHTMLPhraseElement2;
    interface IHTMLPhraseElement3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CPhraseElement;")
  [hidden, uuid (3050f548-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLSpanElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
  };
  [noncreatable, uuid (3050f3f5-98b4-11cf-bb82-00aa00bdce0b)] coclass HTMLSpanElement {
    [default] dispinterface DispHTMLSpanElement;
    [source, default] dispinterface HTMLElementEvents;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLPhraseElement;
    interface IHTMLSpanElement;
    interface IHTMLControlElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSpanElement;")
  [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);
  };
  [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 ();
  };
  typedef enum _htmlFrame {
    htmlFrameNotSet = 0,
    htmlFramevoid = 1,
    htmlFrameabove = 2,
    htmlFramebelow = 3,
    htmlFramehsides = 4,
    htmlFramelhs = 5,
    htmlFramerhs = 6,
    htmlFramevsides = 7,
    htmlFramebox = 8,
    htmlFrameborder = 9,
    htmlFrame_Max = 0x7FFFFFFF
  } htmlFrame;

  typedef enum _htmlRules {
    htmlRulesNotSet = 0,
    htmlRulesnone = 1,
    htmlRulesgroups = 2,
    htmlRulesrows = 3,
    htmlRulescols = 4,
    htmlRulesall = 5,
    htmlRules_Max = 0x7FFFFFFF
  } htmlRules;

  typedef enum _htmlCellAlign {
    htmlCellAlignNotSet = 0,
    htmlCellAlignLeft = 1,
    htmlCellAlignCenter = 2,
    htmlCellAlignRight = 3,
    htmlCellAlignMiddle = htmlCellAlignCenter,
    htmlCellAlign_Max = 0x7FFFFFFF
  } htmlCellAlign;

  typedef enum _htmlCellVAlign {
    htmlCellVAlignNotSet = 0,
    htmlCellVAlignTop = 1,
    htmlCellVAlignMiddle = 2,
    htmlCellVAlignBottom = 3,
    htmlCellVAlignBaseline = 4,
    htmlCellVAlignCenter = htmlCellVAlignMiddle,
    htmlCellVAlign_Max = 0x7FFFFFFF
  } htmlCellVAlign;
  interface IHTMLTableSection;
  [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,[defaultvalue (0), 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,[defaultvalue (0), 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);
  };
  [odl, oleautomation, dual, uuid (305106c2-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTable4 : IDispatch {
    [propputref, id (DISPID_IHTMLTABLE4_IE9_THEAD)] HRESULT tHead ([in] IHTMLTableSection *v);
    [propget, id (DISPID_IHTMLTABLE4_IE9_THEAD)] HRESULT tHead ([retval, out] IHTMLTableSection **p);
    [propputref, id (DISPID_IHTMLTABLE4_IE9_TFOOT)] HRESULT tFoot ([in] IHTMLTableSection *v);
    [propget, id (DISPID_IHTMLTABLE4_IE9_TFOOT)] HRESULT tFoot ([retval, out] IHTMLTableSection **p);
    [propputref, id (DISPID_IHTMLTABLE4_IE9_CAPTION)] HRESULT caption ([in] IHTMLTableCaption *v);
    [propget, id (DISPID_IHTMLTABLE4_IE9_CAPTION)] HRESULT caption ([retval, out] IHTMLTableCaption **p);
    [id (DISPID_IHTMLTABLE4_IE9_INSERTROW)] HRESULT insertRow ([defaultvalue (-1), in] long index,[defaultvalue (0), retval, out] IDispatch **row);
    [id (DISPID_IHTMLTABLE4_IE9_DELETEROW)] HRESULT deleteRow ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLE4_CREATETBODY)] HRESULT createTBody ([retval, out] IHTMLTableSection **tbody);
  };
  [odl, oleautomation, dual, uuid (3050f23a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableCol : IDispatch {
    [propput, id (DISPID_IHTMLTABLECOL_SPAN)] HRESULT span ([in] long v);
    [propget, id (DISPID_IHTMLTABLECOL_SPAN)] HRESULT span ([retval, out] long *p);
    [propput, id (DISPID_IHTMLTABLECOL_WIDTH)] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLECOL_WIDTH)] HRESULT width ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLECOL_ALIGN)] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL_ALIGN)] HRESULT align ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECOL_VALIGN)] HRESULT vAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL_VALIGN)] HRESULT vAlign ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f82a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableCol2 : IDispatch {
    [propput, id (DISPID_IHTMLTABLECOL2_CH), displaybind, bindable] HRESULT ch ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL2_CH), displaybind, bindable] HRESULT ch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECOL2_CHOFF), displaybind, bindable] HRESULT chOff ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL2_CHOFF), displaybind, bindable] HRESULT chOff ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305106c4-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableCol3 : IDispatch {
    [propput, id (DISPID_IHTMLTABLECOL3_IE9_CH), displaybind, bindable] HRESULT ch ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL3_IE9_CH), displaybind, bindable] HRESULT ch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECOL3_IE9_CHOFF), displaybind, bindable] HRESULT chOff ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL3_IE9_CHOFF), displaybind, bindable] HRESULT chOff ([retval, out] BSTR *p);
  };
  [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,[defaultvalue (0), retval, out] IDispatch **row);
    [id (DISPID_IHTMLTABLESECTION_DELETEROW)] HRESULT deleteRow ([defaultvalue (-1), in] long index);
  };
  [odl, oleautomation, dual, uuid (3050f5c7-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableSection2 : IDispatch {
    [id (DISPID_IHTMLTABLESECTION2_MOVEROW)] HRESULT moveRow ([defaultvalue (-1), in] long indexFrom,[defaultvalue (-1), in] long indexTo,[defaultvalue (0), retval, out] IDispatch **row);
  };
  [odl, oleautomation, dual, uuid (3050f82b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableSection3 : IDispatch {
    [propput, id (DISPID_IHTMLTABLESECTION3_CH), displaybind, bindable] HRESULT ch ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION3_CH), displaybind, bindable] HRESULT ch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLESECTION3_CHOFF), displaybind, bindable] HRESULT chOff ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION3_CHOFF), displaybind, bindable] HRESULT chOff ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305106c5-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableSection4 : IDispatch {
    [propput, id (DISPID_IHTMLTABLESECTION4_IE9_CH), displaybind, bindable] HRESULT ch ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION4_IE9_CH), displaybind, bindable] HRESULT ch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLESECTION4_IE9_CHOFF), displaybind, bindable] HRESULT chOff ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION4_IE9_CHOFF), displaybind, bindable] HRESULT chOff ([retval, out] BSTR *p);
    [id (DISPID_IHTMLTABLESECTION4_IE9_INSERTROW)] HRESULT insertRow ([defaultvalue (-1), in] long index,[defaultvalue (0), retval, out] IDispatch **row);
    [id (DISPID_IHTMLTABLESECTION4_IE9_DELETEROW)] HRESULT deleteRow ([defaultvalue (-1), in] long index);
  };
  [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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLEROW_VALIGN)] HRESULT vAlign ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW_VALIGN)] HRESULT vAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLEROW_BGCOLOR)] HRESULT bgColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLEROW_BGCOLOR)] HRESULT bgColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLEROW_BORDERCOLOR)] HRESULT borderColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLEROW_BORDERCOLOR)] HRESULT borderColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)] HRESULT borderColorLight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLEROW_BORDERCOLORLIGHT)] HRESULT borderColorLight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLTABLEROW_BORDERCOLORDARK)] HRESULT borderColorDark ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLEROW_BORDERCOLORDARK)] HRESULT borderColorDark ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLTABLEROW_ROWINDEX)] HRESULT rowIndex ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTABLEROW_SECTIONROWINDEX)] HRESULT sectionRowIndex ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTABLEROW_CELLS)] HRESULT cells ([retval, out] IHTMLElementCollection **p);
    [id (DISPID_IHTMLTABLEROW_INSERTCELL)] HRESULT insertCell ([defaultvalue (-1), in] long index,[defaultvalue (0), retval, out] IDispatch **row);
    [id (DISPID_IHTMLTABLEROW_DELETECELL)] HRESULT deleteCell ([defaultvalue (-1), in] long index);
  };
  [odl, oleautomation, dual, uuid (3050f4a1-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableRow2 : IDispatch {
    [propput, id (DISPID_IHTMLTABLEROW2_HEIGHT)] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLTABLEROW2_HEIGHT)] HRESULT height ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (3050f82c-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableRow3 : IDispatch {
    [propput, id (DISPID_IHTMLTABLEROW3_CH), displaybind, bindable] HRESULT ch ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW3_CH), displaybind, bindable] HRESULT ch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLEROW3_CHOFF), displaybind, bindable] HRESULT chOff ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW3_CHOFF), displaybind, bindable] HRESULT chOff ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305106c6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableRow4 : IDispatch {
    [propput, id (DISPID_IHTMLTABLEROW4_IE9_CH), displaybind, bindable] HRESULT ch ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW4_IE9_CH), displaybind, bindable] HRESULT ch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLEROW4_IE9_CHOFF), displaybind, bindable] HRESULT chOff ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW4_IE9_CHOFF), displaybind, bindable] HRESULT chOff ([retval, out] BSTR *p);
    [id (DISPID_IHTMLTABLEROW4_IE9_INSERTCELL)] HRESULT insertCell ([defaultvalue (-1), in] long index,[defaultvalue (0), retval, out] IDispatch **row);
    [id (DISPID_IHTMLTABLEROW4_IE9_DELETECELL)] HRESULT deleteCell ([defaultvalue (-1), in] long index);
  };
  [odl, oleautomation, dual, uuid (3050f413-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableRowMetrics : IDispatch {
    [propget, id (DISPID_IHTMLTABLEROWMETRICS_CLIENTHEIGHT), displaybind, bindable] HRESULT clientHeight ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTABLEROWMETRICS_CLIENTWIDTH), displaybind, bindable] HRESULT clientWidth ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTABLEROWMETRICS_CLIENTTOP), displaybind, bindable] HRESULT clientTop ([retval, out] long *p);
    [propget, id (DISPID_IHTMLTABLEROWMETRICS_CLIENTLEFT), displaybind, bindable] HRESULT clientLeft ([retval, out] long *p);
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (3050f82d-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableCell2 : IDispatch {
    [propput, id (DISPID_IHTMLTABLECELL2_ABBR), displaybind, bindable] HRESULT abbr ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_ABBR), displaybind, bindable] HRESULT abbr ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECELL2_AXIS), displaybind, bindable] HRESULT axis ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_AXIS), displaybind, bindable] HRESULT axis ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECELL2_CH), displaybind, bindable] HRESULT ch ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_CH), displaybind, bindable] HRESULT ch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECELL2_CHOFF), displaybind, bindable] HRESULT chOff ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_CHOFF), displaybind, bindable] HRESULT chOff ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECELL2_HEADERS), displaybind, bindable] HRESULT headers ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_HEADERS), displaybind, bindable] HRESULT headers ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECELL2_SCOPE), displaybind, bindable] HRESULT scope ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL2_SCOPE), displaybind, bindable] HRESULT scope ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305106c7-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTableCell3 : IDispatch {
    [propput, id (DISPID_IHTMLTABLECELL3_IE9_CH), displaybind, bindable] HRESULT ch ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL3_IE9_CH), displaybind, bindable] HRESULT ch ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLTABLECELL3_IE9_CHOFF), displaybind, bindable] HRESULT chOff ([in] BSTR v);
    [propget, id (DISPID_IHTMLTABLECELL3_IE9_CHOFF), displaybind, bindable] HRESULT chOff ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f532-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTable {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLE_DELETEROW)] void deleteRow ([defaultvalue (-1), in] 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 ([defaultvalue (-1), in] long indexFrom,[defaultvalue (-1), in] long indexTo);
    [propput, id (DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable] void summary (BSTR v);
    [propget, id (DISPID_IHTMLTABLE3_SUMMARY), displaybind, bindable] BSTR summary ();
    [propputref, id (DISPID_IHTMLTABLE4_IE9_THEAD)] void ie9_tHead (IHTMLTableSection *v);
    [propget, id (DISPID_IHTMLTABLE4_IE9_THEAD)] IHTMLTableSection *ie9_tHead ();
    [propputref, id (DISPID_IHTMLTABLE4_IE9_TFOOT)] void ie9_tFoot (IHTMLTableSection *v);
    [propget, id (DISPID_IHTMLTABLE4_IE9_TFOOT)] IHTMLTableSection *ie9_tFoot ();
    [propputref, id (DISPID_IHTMLTABLE4_IE9_CAPTION)] void ie9_caption (IHTMLTableCaption *v);
    [propget, id (DISPID_IHTMLTABLE4_IE9_CAPTION)] IHTMLTableCaption *ie9_caption ();
    [id (DISPID_IHTMLTABLE4_IE9_INSERTROW)] IDispatch *ie9_insertRow ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLE4_IE9_DELETEROW)] void ie9_deleteRow ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLE4_CREATETBODY)] IHTMLTableSection *createTBody ();
  };
  [noncreatable, uuid (3050f26b-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTable {
    [default] dispinterface DispHTMLTable;
    [source, default] dispinterface HTMLTableEvents;
    [source] dispinterface HTMLTableEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTable;
    interface IHTMLTable2;
    interface IHTMLTable3;
    interface IHTMLTable4;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTable;")
  [hidden, uuid (3050f533-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTableCol {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLTABLECOL_SPAN)] void span (long v);
    [propget, id (DISPID_IHTMLTABLECOL_SPAN)] long span ();
    [propput, id (DISPID_IHTMLTABLECOL_WIDTH)] void width (VARIANT v);
    [propget, id (DISPID_IHTMLTABLECOL_WIDTH)] VARIANT width ();
    [propput, id (DISPID_IHTMLTABLECOL_ALIGN)] void align (BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL_ALIGN)] BSTR align ();
    [propput, id (DISPID_IHTMLTABLECOL_VALIGN)] void vAlign (BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL_VALIGN)] BSTR vAlign ();
    [propput, id (DISPID_IHTMLTABLECOL2_CH), displaybind, bindable] void ch (BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL2_CH), displaybind, bindable] BSTR ch ();
    [propput, id (DISPID_IHTMLTABLECOL2_CHOFF), displaybind, bindable] void chOff (BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL2_CHOFF), displaybind, bindable] BSTR chOff ();
    [propput, id (DISPID_IHTMLTABLECOL3_IE9_CH), displaybind, bindable] void ie9_ch (BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL3_IE9_CH), displaybind, bindable] BSTR ie9_ch ();
    [propput, id (DISPID_IHTMLTABLECOL3_IE9_CHOFF), displaybind, bindable] void ie9_chOff (BSTR v);
    [propget, id (DISPID_IHTMLTABLECOL3_IE9_CHOFF), displaybind, bindable] BSTR ie9_chOff ();
  };
  [noncreatable, uuid (3050f26c-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTableCol {
    [default] dispinterface DispHTMLTableCol;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLTableCol;
    interface IHTMLTableCol2;
    interface IHTMLTableCol3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTableCol;")
  [hidden, uuid (3050f534-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTableSection {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLTABLESECTION_ALIGN)] void align (BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION_ALIGN)] BSTR align ();
    [propput, id (DISPID_IHTMLTABLESECTION_VALIGN)] void vAlign (BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION_VALIGN)] BSTR vAlign ();
    [propput, id (DISPID_IHTMLTABLESECTION_BGCOLOR)] void bgColor (VARIANT v);
    [propget, id (DISPID_IHTMLTABLESECTION_BGCOLOR)] VARIANT bgColor ();
    [propget, id (DISPID_IHTMLTABLESECTION_ROWS)] IHTMLElementCollection *rows ();
    [id (DISPID_IHTMLTABLESECTION_INSERTROW)] IDispatch *insertRow ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLESECTION_DELETEROW)] void deleteRow ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLESECTION2_MOVEROW)] IDispatch *moveRow ([defaultvalue (-1), in] long indexFrom,[defaultvalue (-1), in] long indexTo);
    [propput, id (DISPID_IHTMLTABLESECTION3_CH), displaybind, bindable] void ch (BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION3_CH), displaybind, bindable] BSTR ch ();
    [propput, id (DISPID_IHTMLTABLESECTION3_CHOFF), displaybind, bindable] void chOff (BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION3_CHOFF), displaybind, bindable] BSTR chOff ();
    [propput, id (DISPID_IHTMLTABLESECTION4_IE9_CH), displaybind, bindable] void ie9_ch (BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION4_IE9_CH), displaybind, bindable] BSTR ie9_ch ();
    [propput, id (DISPID_IHTMLTABLESECTION4_IE9_CHOFF), displaybind, bindable] void ie9_chOff (BSTR v);
    [propget, id (DISPID_IHTMLTABLESECTION4_IE9_CHOFF), displaybind, bindable] BSTR ie9_chOff ();
    [id (DISPID_IHTMLTABLESECTION4_IE9_INSERTROW)] IDispatch *ie9_insertRow ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLESECTION4_IE9_DELETEROW)] void ie9_deleteRow ([defaultvalue (-1), in] long index);
  };
  [noncreatable, uuid (3050f2e9-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTableSection {
    [default] dispinterface DispHTMLTableSection;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLTableSection;
    interface IHTMLTableSection2;
    interface IHTMLTableSection3;
    interface IHTMLTableSection4;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTableSection;")
  [hidden, uuid (3050f535-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTableRow {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLEROW_DELETECELL)] void deleteCell ([defaultvalue (-1), in] 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 ();
    [propput, id (DISPID_IHTMLTABLEROW4_IE9_CH), displaybind, bindable] void ie9_ch (BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW4_IE9_CH), displaybind, bindable] BSTR ie9_ch ();
    [propput, id (DISPID_IHTMLTABLEROW4_IE9_CHOFF), displaybind, bindable] void ie9_chOff (BSTR v);
    [propget, id (DISPID_IHTMLTABLEROW4_IE9_CHOFF), displaybind, bindable] BSTR ie9_chOff ();
    [id (DISPID_IHTMLTABLEROW4_IE9_INSERTCELL)] IDispatch *ie9_insertCell ([defaultvalue (-1), in] long index);
    [id (DISPID_IHTMLTABLEROW4_IE9_DELETECELL)] void ie9_deleteCell ([defaultvalue (-1), in] long index);
  };
  [noncreatable, uuid (3050f26d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTableRow {
    [default] dispinterface DispHTMLTableRow;
    [source, default] dispinterface HTMLControlElementEvents;
    [source] dispinterface HTMLControlElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLTableRow;
    interface IHTMLTableRowMetrics;
    interface IHTMLTableRow2;
    interface IHTMLTableRow3;
    interface IHTMLTableRow4;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTableRow;")
  [hidden, uuid (3050f536-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTableCell {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
  };
  [noncreatable, uuid (3050f246-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTableCell {
    [default] dispinterface DispHTMLTableCell;
    [source, default] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLTableCell;
    interface IHTMLTableCell2;
    interface IHTMLTableCell3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTableCell;")
  [hidden, uuid (3050f621-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLScriptEvents2 {
    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_HTMLSCRIPTEVENTS2_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f3e2-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLScriptEvents {
    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_HTMLSCRIPTEVENTS_ONERROR)] void onerror ();
  };
  [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);
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (30510447-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLScriptElement3 : IDispatch {
    [propput, id (DISPID_IHTMLSCRIPTELEMENT3_IE8_SRC)] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLSCRIPTELEMENT3_IE8_SRC)] HRESULT src ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510801-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLScriptElement4 : IDispatch {
    [propget, id (DISPID_IHTMLSCRIPTELEMENT4_USEDCHARSET)] HRESULT usedCharset ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f530-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLScriptElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLSCRIPTELEMENT4_USEDCHARSET)] BSTR usedCharset ();
  };
  [noncreatable, uuid (3050f28c-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLScriptElement {
    [default] dispinterface DispHTMLScriptElement;
    [source, default] dispinterface HTMLScriptEvents;
    [source] dispinterface HTMLScriptEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLScriptElement;
    interface IHTMLScriptElement2;
    interface IHTMLScriptElement3;
    interface IHTMLScriptElement4;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CScriptElement;")
  [odl, oleautomation, dual, uuid (3050f38a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLNoShowElement : IDispatch {
  };
  [hidden, uuid (3050f528-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLNoShowElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
  };
  [noncreatable, uuid (3050f38b-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLNoShowElement {
    [default] dispinterface DispHTMLNoShowElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLNoShowElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CNoShowElement;")
  [hidden, uuid (3050f620-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLObjectElementEvents2 {
    properties:
    methods:
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONAFTERUPDATE)] void onafterupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONROWEXIT)] VARIANT_BOOL onrowexit ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONROWENTER)] void onrowenter ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONDATASETCHANGED)] void ondatasetchanged ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONDATAAVAILABLE)] void ondataavailable ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONDATASETCOMPLETE)] void ondatasetcomplete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONERROR)] VARIANT_BOOL onerror ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONROWSDELETE)] void onrowsdelete ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONROWSINSERTED)] void onrowsinserted ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONCELLCHANGE)] void oncellchange ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLOBJECTELEMENTEVENTS2_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f3c4-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLObjectElementEvents {
    properties:
    methods:
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONBEFOREUPDATE)] VARIANT_BOOL onbeforeupdate ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONAFTERUPDATE)] void onafterupdate ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONERRORUPDATE)] VARIANT_BOOL onerrorupdate ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONROWEXIT)] VARIANT_BOOL onrowexit ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONROWENTER)] void onrowenter ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONDATASETCHANGED)] void ondatasetchanged ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONDATAAVAILABLE)] void ondataavailable ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONDATASETCOMPLETE)] void ondatasetcomplete ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONERROR)] VARIANT_BOOL onerror ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONROWSDELETE)] void onrowsdelete ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONROWSINSERTED)] void onrowsinserted ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONCELLCHANGE)] void oncellchange ();
    [id (DISPID_HTMLOBJECTELEMENTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (3050f4cd-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLObjectElement2 : IDispatch {
    [id (DISPID_IHTMLOBJECTELEMENT2_NAMEDRECORDSET)] HRESULT namedRecordset ([in] BSTR dataMember,[optional, in] VARIANT *hierarchy,[retval, out] IDispatch **ppRecordset);
    [propput, id (DISPID_IHTMLOBJECTELEMENT2_CLASSID), hidden] HRESULT classid ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT2_CLASSID), hidden] HRESULT classid ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT2_DATA), hidden] HRESULT data ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT2_DATA), hidden] HRESULT data ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f827-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLObjectElement3 : IDispatch {
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_ARCHIVE), displaybind, bindable] HRESULT archive ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_ARCHIVE), displaybind, bindable] HRESULT archive ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_ALT), displaybind, bindable] HRESULT alt ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_ALT), displaybind, bindable] HRESULT alt ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_DECLARE), displaybind, bindable] HRESULT declare ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_DECLARE), displaybind, bindable] HRESULT declare ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_STANDBY), displaybind, bindable] HRESULT standby ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_STANDBY), displaybind, bindable] HRESULT standby ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_BORDER)] HRESULT border ([in] VARIANT v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_BORDER)] HRESULT border ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT3_USEMAP), displaybind, bindable] HRESULT useMap ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT3_USEMAP), displaybind, bindable] HRESULT useMap ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3051043e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLObjectElement4 : IDispatch {
    [propget, id (DISPID_IHTMLOBJECTELEMENT4_CONTENTDOCUMENT)] HRESULT contentDocument ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT4_IE8_CODEBASE)] HRESULT codeBase ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT4_IE8_CODEBASE)] HRESULT codeBase ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOBJECTELEMENT4_IE8_DATA), hidden] HRESULT data ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT4_IE8_DATA), hidden] HRESULT data ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305104b5-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLObjectElement5 : IDispatch {
    [propput, id (DISPID_IHTMLOBJECTELEMENT5_IE9_OBJECT)] HRESULT object ([in] BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT5_IE9_OBJECT)] HRESULT object ([retval, out] BSTR *p);
  };
  [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);
  };
  [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);
  };
  [hidden, uuid (3050f529-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLObjectElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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), hidden] void ie8_data (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT4_IE8_DATA), hidden] BSTR ie8_data ();
    [id (DISPID_IGETSVGDOCUMENT_GETSVGDOCUMENT)] IDispatch *getSVGDocument ();
    [propput, id (DISPID_IHTMLOBJECTELEMENT5_IE9_OBJECT)] void ie9_object (BSTR v);
    [propget, id (DISPID_IHTMLOBJECTELEMENT5_IE9_OBJECT)] BSTR ie9_object ();
  };
  [noncreatable, uuid (3050f24e-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLObjectElement {
    [default] dispinterface DispHTMLObjectElement;
    [source, default] dispinterface HTMLObjectElementEvents;
    [source] dispinterface HTMLObjectElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLObjectElement;
    interface IHTMLObjectElement2;
    interface IHTMLObjectElement3;
    interface IHTMLObjectElement4;
    interface IGetSVGDocument;
    interface IHTMLObjectElement5;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CObjectElement;")
  [hidden, uuid (3050f590-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLParamElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
  };
  [noncreatable, uuid (3050f83e-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLParamElement {
    [default] dispinterface DispHTMLParamElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLParamElement;
    interface IHTMLParamElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CParamElement;")
  [hidden, uuid (3050f7ff-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLFrameSiteEvents2 {
    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_HTMLFRAMESITEEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f800-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLFrameSiteEvents {
    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_HTMLFRAMESITEEVENTS_ONLOAD)] void onload ();
  };
  typedef enum _frameScrolling {
    frameScrollingyes = 1,
    frameScrollingno = 2,
    frameScrollingauto = 4,
    frameScrolling_Max = 0x7FFFFFFF
  } frameScrolling;
  [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 ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMEBASE_NAME)] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_NAME)] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMEBASE_BORDER)] HRESULT border ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_BORDER)] HRESULT border ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMEBASE_FRAMEBORDER)] HRESULT frameBorder ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_FRAMEBORDER)] HRESULT frameBorder ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMEBASE_FRAMESPACING)] HRESULT frameSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_FRAMESPACING)] HRESULT frameSpacing ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMEBASE_MARGINWIDTH)] HRESULT marginWidth ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_MARGINWIDTH)] HRESULT marginWidth ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)] HRESULT marginHeight ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEBASE_MARGINHEIGHT)] HRESULT marginHeight ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMEBASE_NORESIZE)] HRESULT noResize ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLFRAMEBASE_NORESIZE)] HRESULT noResize ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLFRAMEBASE_SCROLLING)] HRESULT scrolling ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE_SCROLLING)] HRESULT scrolling ([retval, out] BSTR *p);
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (3050f82e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFrameBase3 : IDispatch {
    [propput, id (DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] HRESULT longDesc ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] HRESULT longDesc ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f541-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLFrameBase {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
    [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 ();
    [propput, id (DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] void longDesc (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] BSTR longDesc ();
  };
  [noncreatable, uuid (3050f312-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLFrameBase {
    [default] dispinterface DispHTMLFrameBase;
    [source, default] dispinterface HTMLControlElementEvents;
    [source] dispinterface HTMLControlElementEvents2;
    [source] dispinterface HTMLFrameSiteEvents;
    [source] dispinterface HTMLFrameSiteEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLFrameBase;
    interface IHTMLFrameBase2;
    interface IHTMLFrameBase3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CFrameSite;")
  [odl, oleautomation, dual, uuid (3050f313-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFrameElement : IDispatch {
    [propput, id (DISPID_IHTMLFRAMEELEMENT_BORDERCOLOR)] HRESULT borderColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT_BORDERCOLOR)] HRESULT borderColor ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (3050f7f5-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFrameElement2 : IDispatch {
    [propput, id (DISPID_IHTMLFRAMEELEMENT2_HEIGHT)] HRESULT height ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT2_HEIGHT)] HRESULT height ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMEELEMENT2_WIDTH)] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT2_WIDTH)] HRESULT width ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (3051042d-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFrameElement3 : IDispatch {
    [propget, id (DISPID_IHTMLFRAMEELEMENT3_CONTENTDOCUMENT)] HRESULT contentDocument ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT3_IE8_SRC)] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)] HRESULT longDesc ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT3_IE8_LONGDESC)] HRESULT longDesc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)] HRESULT frameBorder ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMEELEMENT3_IE8_FRAMEBORDER)] HRESULT frameBorder ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f513-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLFrameElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
    [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 ();
    [propput, id (DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] void longDesc (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] BSTR longDesc ();
    [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 ();
    [id (DISPID_IGETSVGDOCUMENT_GETSVGDOCUMENT)] IDispatch *getSVGDocument ();
  };
  [noncreatable, uuid (3050f314-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLFrameElement {
    [default] dispinterface DispHTMLFrameElement;
    [source, default] dispinterface HTMLControlElementEvents;
    [source] dispinterface HTMLControlElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLFrameBase;
    interface IHTMLFrameBase2;
    interface IHTMLFrameBase3;
    interface IHTMLFrameElement;
    interface IHTMLFrameElement2;
    interface IHTMLFrameElement3;
    interface IGetSVGDocument;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CFrameElement;")
  typedef enum _sandboxAllow {
    sandboxAllowScripts = 0,
    sandboxAllowSameOrigin = 1,
    sandboxAllowTopNavigation = 2,
    sandboxAllowForms = 3,
    sandboxAllowPopups = 4,
    sandboxAllow_Max = 0x7FFFFFFF
  } sandboxAllow;
  [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);
  };
  [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 ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLIFRAMEELEMENT2_WIDTH)] HRESULT width ([in] VARIANT v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT2_WIDTH)] HRESULT width ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (30510433-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLIFrameElement3 : IDispatch {
    [propget, id (DISPID_IHTMLIFRAMEELEMENT3_CONTENTDOCUMENT)] HRESULT contentDocument ([retval, out] IDispatch **p);
    [propput, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_SRC)] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_SRC)] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_LONGDESC)] HRESULT longDesc ([in] BSTR v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_LONGDESC)] HRESULT longDesc ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_FRAMEBORDER)] HRESULT frameBorder ([in] BSTR v);
    [propget, id (DISPID_IHTMLIFRAMEELEMENT3_IE8_FRAMEBORDER)] HRESULT frameBorder ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f51b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLIFrame {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
    [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 ();
    [propput, id (DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] void longDesc (BSTR v);
    [propget, id (DISPID_IHTMLFRAMEBASE3_LONGDESC), displaybind, bindable] BSTR longDesc ();
    [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 ();
    [id (DISPID_IGETSVGDOCUMENT_GETSVGDOCUMENT)] IDispatch *getSVGDocument ();
  };
  [noncreatable, uuid (3050f316-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLIFrame {
    [default] dispinterface DispHTMLIFrame;
    [source, default] dispinterface HTMLControlElementEvents;
    [source] dispinterface HTMLControlElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLFrameBase;
    interface IHTMLFrameBase2;
    interface IHTMLFrameBase3;
    interface IHTMLIFrameElement;
    interface IHTMLIFrameElement2;
    interface IHTMLIFrameElement3;
    interface IGetSVGDocument;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CIFrameElement;")
  [odl, oleautomation, dual, uuid (3050f212-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLDivPosition : IDispatch {
    [propput, id (DISPID_IHTMLDIVPOSITION_ALIGN), displaybind, bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLDIVPOSITION_ALIGN), displaybind, bindable] HRESULT align ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f3e7-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFieldSetElement : IDispatch {
    [propput, id (DISPID_IHTMLFIELDSETELEMENT_ALIGN), displaybind, bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLFIELDSETELEMENT_ALIGN), displaybind, bindable] HRESULT align ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f833-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFieldSetElement2 : IDispatch {
    [propget, id (DISPID_IHTMLFIELDSETELEMENT2_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
  };
  [odl, oleautomation, dual, uuid (3050f3ea-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLLegendElement : IDispatch {
    [propput, id (DISPID_IHTMLLEGENDELEMENT_ALIGN)] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLLEGENDELEMENT_ALIGN)] HRESULT align ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3050f834-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLLegendElement2 : IDispatch {
    [propget, id (DISPID_IHTMLLEGENDELEMENT2_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
  };
  [hidden, uuid (3050f50f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLDivPosition {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLDIVPOSITION_ALIGN), displaybind, bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLDIVPOSITION_ALIGN), displaybind, bindable] BSTR align ();
  };
  [noncreatable, uuid (3050f249-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDivPosition {
    [default] dispinterface DispHTMLDivPosition;
    [source, default] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLDivPosition;
  };
  cpp_quote("EXTERN_C const GUID CLSID_C1DElement;")
  [hidden, uuid (3050f545-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLFieldSetElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLFIELDSETELEMENT_ALIGN), displaybind, bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLFIELDSETELEMENT_ALIGN), displaybind, bindable] BSTR align ();
    [propget, id (DISPID_IHTMLFIELDSETELEMENT2_FORM)] IHTMLFormElement *form ();
  };
  [noncreatable, uuid (3050f3e8-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLFieldSetElement {
    [default] dispinterface DispHTMLFieldSetElement;
    [source, default] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLFieldSetElement;
    interface IHTMLFieldSetElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CFieldSetElement;")
  [hidden, uuid (3050f546-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLLegendElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLLEGENDELEMENT_ALIGN)] void align (BSTR v);
    [propget, id (DISPID_IHTMLLEGENDELEMENT_ALIGN)] BSTR align ();
    [propget, id (DISPID_IHTMLLEGENDELEMENT2_FORM)] IHTMLFormElement *form ();
  };
  [noncreatable, uuid (3050f3e9-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLLegendElement {
    [default] dispinterface DispHTMLLegendElement;
    [source, default] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLLegendElement;
    interface IHTMLLegendElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CLegendElement;")
  [odl, oleautomation, dual, uuid (3050f3e5-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSpanFlow : IDispatch {
    [propput, id (DISPID_IHTMLSPANFLOW_ALIGN), displaybind, bindable] HRESULT align ([in] BSTR v);
    [propget, id (DISPID_IHTMLSPANFLOW_ALIGN), displaybind, bindable] HRESULT align ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f544-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLSpanFlow {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLSPANFLOW_ALIGN), displaybind, bindable] void align (BSTR v);
    [propget, id (DISPID_IHTMLSPANFLOW_ALIGN), displaybind, bindable] BSTR align ();
  };
  [noncreatable, uuid (3050f3e6-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLSpanFlow {
    [default] dispinterface DispHTMLSpanFlow;
    [source, default] dispinterface HTMLTextContainerEvents;
    [source] dispinterface HTMLTextContainerEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLTextContainer;
    interface IHTMLSpanFlow;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSpanSite;")
  [odl, oleautomation, dual, uuid (3050f319-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFrameSetElement : IDispatch {
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_ROWS), displaybind, bindable] HRESULT rows ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_ROWS), displaybind, bindable] HRESULT rows ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_COLS), displaybind, bindable] HRESULT cols ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_COLS), displaybind, bindable] HRESULT cols ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_BORDER)] HRESULT border ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_BORDER)] HRESULT border ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_BORDERCOLOR)] HRESULT borderColor ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_BORDERCOLOR)] HRESULT borderColor ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_FRAMEBORDER)] HRESULT frameBorder ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_FRAMEBORDER)] HRESULT frameBorder ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_FRAMESPACING)] HRESULT frameSpacing ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_FRAMESPACING)] HRESULT frameSpacing ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_NAME), displaybind, bindable] HRESULT name ([in] BSTR v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_NAME), displaybind, bindable] HRESULT name ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_ONLOAD), displaybind, bindable] HRESULT onload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_ONUNLOAD), displaybind, bindable] HRESULT onunload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_ONUNLOAD), displaybind, bindable] HRESULT onunload ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_ONBEFOREUNLOAD), displaybind, bindable] HRESULT onbeforeunload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_ONBEFOREUNLOAD), displaybind, bindable] HRESULT onbeforeunload ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (3050f5c6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFrameSetElement2 : IDispatch {
    [propput, id (DISPID_IHTMLFRAMESETELEMENT2_ONBEFOREPRINT), displaybind, bindable] HRESULT onbeforeprint ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT2_ONBEFOREPRINT), displaybind, bindable] HRESULT onbeforeprint ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT2_ONAFTERPRINT), displaybind, bindable] HRESULT onafterprint ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT2_ONAFTERPRINT), displaybind, bindable] HRESULT onafterprint ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (30510796-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFrameSetElement3 : IDispatch {
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONHASHCHANGE), displaybind, bindable] HRESULT onhashchange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONHASHCHANGE), displaybind, bindable] HRESULT onhashchange ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONMESSAGE), displaybind, bindable] HRESULT onmessage ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONMESSAGE), displaybind, bindable] HRESULT onmessage ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONOFFLINE), displaybind, bindable] HRESULT onoffline ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONOFFLINE), displaybind, bindable] HRESULT onoffline ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONONLINE), displaybind, bindable] HRESULT ononline ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONONLINE), displaybind, bindable] HRESULT ononline ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONSTORAGE), displaybind, bindable] HRESULT onstorage ([in] VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONSTORAGE), displaybind, bindable] HRESULT onstorage ([retval, out] VARIANT *p);
  };
  [hidden, uuid (3050f514-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLFrameSetSite {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_ROWS), displaybind, bindable] void rows (BSTR v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_ROWS), displaybind, bindable] BSTR rows ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_COLS), displaybind, bindable] void cols (BSTR v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_COLS), displaybind, bindable] BSTR cols ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_BORDER)] void border (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_BORDER)] VARIANT border ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_BORDERCOLOR)] void borderColor (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_BORDERCOLOR)] VARIANT borderColor ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_FRAMEBORDER)] void frameBorder (BSTR v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_FRAMEBORDER)] BSTR frameBorder ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_FRAMESPACING)] void frameSpacing (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_FRAMESPACING)] VARIANT frameSpacing ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_ONUNLOAD), displaybind, bindable] void onunload (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_ONUNLOAD), displaybind, bindable] VARIANT onunload ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT_ONBEFOREUNLOAD), displaybind, bindable] void onbeforeunload (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT_ONBEFOREUNLOAD), displaybind, bindable] VARIANT onbeforeunload ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT2_ONBEFOREPRINT), displaybind, bindable] void onbeforeprint (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT2_ONBEFOREPRINT), displaybind, bindable] VARIANT onbeforeprint ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT2_ONAFTERPRINT), displaybind, bindable] void onafterprint (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT2_ONAFTERPRINT), displaybind, bindable] VARIANT onafterprint ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONHASHCHANGE), displaybind, bindable] void onhashchange (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONHASHCHANGE), displaybind, bindable] VARIANT onhashchange ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONMESSAGE), displaybind, bindable] void onmessage (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONMESSAGE), displaybind, bindable] VARIANT onmessage ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONOFFLINE), displaybind, bindable] void onoffline (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONOFFLINE), displaybind, bindable] VARIANT onoffline ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONONLINE), displaybind, bindable] void ononline (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONONLINE), displaybind, bindable] VARIANT ononline ();
    [propput, id (DISPID_IHTMLFRAMESETELEMENT3_ONSTORAGE), displaybind, bindable] void onstorage (VARIANT v);
    [propget, id (DISPID_IHTMLFRAMESETELEMENT3_ONSTORAGE), displaybind, bindable] VARIANT onstorage ();
  };
  [noncreatable, uuid (3050f31a-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLFrameSetSite {
    [default] dispinterface DispHTMLFrameSetSite;
    [source, default] dispinterface HTMLControlElementEvents;
    [source] dispinterface HTMLControlElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLControlElement;
    interface IHTMLFrameSetElement;
    interface IHTMLFrameSetElement2;
    interface IHTMLFrameSetElement3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CFrameSetSite;")
  [odl, oleautomation, dual, uuid (3050f369-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLBGsound : IDispatch {
    [propput, id (DISPID_IHTMLBGSOUND_SRC), displaybind, bindable] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLBGSOUND_SRC), displaybind, bindable] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLBGSOUND_LOOP), displaybind, bindable] HRESULT loop ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBGSOUND_LOOP), displaybind, bindable] HRESULT loop ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBGSOUND_VOLUME), displaybind, bindable] HRESULT volume ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBGSOUND_VOLUME), displaybind, bindable] HRESULT volume ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLBGSOUND_BALANCE), displaybind, bindable] HRESULT balance ([in] VARIANT v);
    [propget, id (DISPID_IHTMLBGSOUND_BALANCE), displaybind, bindable] HRESULT balance ([retval, out] VARIANT *p);
  };
  [hidden, uuid (3050f53c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLBGsound {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLBGSOUND_SRC), displaybind, bindable] void src (BSTR v);
    [propget, id (DISPID_IHTMLBGSOUND_SRC), displaybind, bindable] BSTR src ();
    [propput, id (DISPID_IHTMLBGSOUND_LOOP), displaybind, bindable] void loop (VARIANT v);
    [propget, id (DISPID_IHTMLBGSOUND_LOOP), displaybind, bindable] VARIANT loop ();
    [propput, id (DISPID_IHTMLBGSOUND_VOLUME), displaybind, bindable] void volume (VARIANT v);
    [propget, id (DISPID_IHTMLBGSOUND_VOLUME), displaybind, bindable] VARIANT volume ();
    [propput, id (DISPID_IHTMLBGSOUND_BALANCE), displaybind, bindable] void balance (VARIANT v);
    [propget, id (DISPID_IHTMLBGSOUND_BALANCE), displaybind, bindable] VARIANT balance ();
  };
  [noncreatable, uuid (3050f370-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLBGsound {
    [default] dispinterface DispHTMLBGsound;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLBGsound;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CBGsound;")
  [odl, oleautomation, dual, uuid (3050f376-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFontNamesCollection : IDispatch {
    [propget, id (DISPID_IHTMLFONTNAMESCOLLECTION_LENGTH), hidden] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLFONTNAMESCOLLECTION__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLFONTNAMESCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] BSTR *pBstr);
  };
  [odl, oleautomation, dual, uuid (3050f377-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLFontSizesCollection : IDispatch {
    [propget, id (DISPID_IHTMLFONTSIZESCOLLECTION_LENGTH), hidden] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLFONTSIZESCOLLECTION__NEWENUM), hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [propget, id (DISPID_IHTMLFONTSIZESCOLLECTION_FORFONT)] HRESULT forFont ([retval, out] BSTR *p);
    [id (DISPID_IHTMLFONTSIZESCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] long *plSize);
  };
  [odl, oleautomation, dual, uuid (3050f378-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLOptionsHolder : IDispatch {
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_DOCUMENT), hidden] HRESULT document ([retval, out] IHTMLDocument2 **p);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_FONTS), hidden] HRESULT fonts ([retval, out] IHTMLFontNamesCollection **p);
    [propput, id (DISPID_IHTMLOPTIONSHOLDER_EXECARG)] HRESULT execArg ([in] VARIANT v);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_EXECARG)] HRESULT execArg ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLOPTIONSHOLDER_ERRORLINE)] HRESULT errorLine ([in] long v);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_ERRORLINE)] HRESULT errorLine ([retval, out] long *p);
    [propput, id (DISPID_IHTMLOPTIONSHOLDER_ERRORCHARACTER)] HRESULT errorCharacter ([in] long v);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_ERRORCHARACTER)] HRESULT errorCharacter ([retval, out] long *p);
    [propput, id (DISPID_IHTMLOPTIONSHOLDER_ERRORCODE)] HRESULT errorCode ([in] long v);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_ERRORCODE)] HRESULT errorCode ([retval, out] long *p);
    [propput, id (DISPID_IHTMLOPTIONSHOLDER_ERRORMESSAGE)] HRESULT errorMessage ([in] BSTR v);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_ERRORMESSAGE)] HRESULT errorMessage ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOPTIONSHOLDER_ERRORDEBUG)] HRESULT errorDebug ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_ERRORDEBUG)] HRESULT errorDebug ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_UNSECUREDWINDOWOFDOCUMENT), hidden] HRESULT unsecuredWindowOfDocument ([retval, out] IHTMLWindow2 **p);
    [propput, id (DISPID_IHTMLOPTIONSHOLDER_FINDTEXT)] HRESULT findText ([in] BSTR v);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_FINDTEXT)] HRESULT findText ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLOPTIONSHOLDER_ANYTHINGAFTERFRAMESET)] HRESULT anythingAfterFrameset ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_ANYTHINGAFTERFRAMESET)] HRESULT anythingAfterFrameset ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLOPTIONSHOLDER_SIZES)] HRESULT sizes ([in] BSTR fontName,[retval, out] IHTMLFontSizesCollection **pSizesCollection);
    [id (DISPID_IHTMLOPTIONSHOLDER_OPENFILEDLG)] HRESULT openfiledlg ([optional, in] VARIANT initFile,[optional, in] VARIANT initDir,[optional, in] VARIANT filter,[optional, in] VARIANT title,[retval, out] BSTR *pathName);
    [id (DISPID_IHTMLOPTIONSHOLDER_SAVEFILEDLG)] HRESULT savefiledlg ([optional, in] VARIANT initFile,[optional, in] VARIANT initDir,[optional, in] VARIANT filter,[optional, in] VARIANT title,[retval, out] BSTR *pathName);
    [id (DISPID_IHTMLOPTIONSHOLDER_CHOOSECOLORDLG)] HRESULT choosecolordlg ([optional, in] VARIANT initColor,[retval, out] long *rgbColor);
    [id (DISPID_IHTMLOPTIONSHOLDER_SHOWSECURITYINFO)] HRESULT showSecurityInfo ();
    [id (DISPID_IHTMLOPTIONSHOLDER_ISAPARTMENTMODEL)] HRESULT isApartmentModel ([in] IHTMLObjectElement *object,[retval, out] VARIANT_BOOL *fApartment);
    [id (DISPID_IHTMLOPTIONSHOLDER_GETCHARSET)] HRESULT getCharset ([in] BSTR fontName,[retval, out] long *charset);
    [propget, id (DISPID_IHTMLOPTIONSHOLDER_SECURECONNECTIONINFO)] HRESULT secureConnectionInfo ([retval, out] BSTR *p);
  };
  [hidden, uuid (3050f615-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLStyleElementEvents2 {
    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_HTMLSTYLEELEMENTEVENTS2_ONLOAD)] void onload ([in] IHTMLEventObj *pEvtObj);
    [id (DISPID_HTMLSTYLEELEMENTEVENTS2_ONERROR)] void onerror ([in] IHTMLEventObj *pEvtObj);
  };
  [hidden, uuid (3050f3cb-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLStyleElementEvents {
    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_HTMLSTYLEELEMENTEVENTS_ONLOAD)] void onload ();
    [id (DISPID_HTMLSTYLEELEMENTEVENTS_ONERROR)] void onerror ();
  };
  [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);
  };
  [odl, oleautomation, dual, uuid (3051072a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleElement2 : IDispatch {
    [propget, id (DISPID_IHTMLSTYLEELEMENT2_SHEET)] HRESULT sheet ([retval, out] IHTMLStyleSheet **p);
  };
  [hidden, uuid (3050f511-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLStyleElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [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 ();
  };
  [noncreatable, uuid (3050f37d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStyleElement {
    [default] dispinterface DispHTMLStyleElement;
    [source, default] dispinterface HTMLStyleElementEvents;
    [source] dispinterface HTMLStyleElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLStyleElement;
    interface IHTMLStyleElement2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStyleElement;")
  [odl, oleautomation, dual, uuid (3050f3d5-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleFontFace : IDispatch {
    [propput, id (DISPID_IHTMLSTYLEFONTFACE_FONTSRC), displaybind, bindable] HRESULT fontsrc ([in] BSTR v);
    [propget, id (DISPID_IHTMLSTYLEFONTFACE_FONTSRC), displaybind, bindable] HRESULT fontsrc ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305106ec-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleFontFace2 : IDispatch {
    [propget, id (DISPID_IHTMLSTYLEFONTFACE2_STYLE), nonbrowsable] HRESULT style ([retval, out] IHTMLRuleStyle **p);
  };
  [hidden, uuid (30590081-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLStyleFontFace {
    properties:
    methods:
    [propget, id (DISPID_IHTMLCSSRULE_TYPE)] USHORT type ();
    [propput, id (DISPID_IHTMLCSSRULE_CSSTEXT)] void cssText (BSTR v);
    [propget, id (DISPID_IHTMLCSSRULE_CSSTEXT)] BSTR cssText ();
    [propget, id (DISPID_IHTMLCSSRULE_PARENTRULE)] IHTMLCSSRule *parentRule ();
    [propget, id (DISPID_IHTMLCSSRULE_PARENTSTYLESHEET)] IHTMLStyleSheet *parentStyleSheet ();
    [propput, id (DISPID_IHTMLSTYLEFONTFACE_FONTSRC), displaybind, bindable] void fontsrc (BSTR v);
    [propget, id (DISPID_IHTMLSTYLEFONTFACE_FONTSRC), displaybind, bindable] BSTR fontsrc ();
    [propget, id (DISPID_IHTMLSTYLEFONTFACE2_STYLE), nonbrowsable] IHTMLRuleStyle *style ();
  };
  [noncreatable, uuid (3050f3d4-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStyleFontFace {
    [default] dispinterface DispHTMLStyleFontFace;
    interface IHTMLCSSRule;
    interface IHTMLStyleFontFace;
    interface IHTMLStyleFontFace2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CFontFace;")
  [odl, oleautomation, dual, uuid (30510454-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLXDomainRequest : IDispatch {
    [propget, id (DISPID_IHTMLXDOMAINREQUEST_RESPONSETEXT)] HRESULT responseText ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLXDOMAINREQUEST_TIMEOUT)] HRESULT timeout ([in] long v);
    [propget, id (DISPID_IHTMLXDOMAINREQUEST_TIMEOUT)] HRESULT timeout ([retval, out] long *p);
    [propget, id (DISPID_IHTMLXDOMAINREQUEST_CONTENTTYPE)] HRESULT contentType ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLXDOMAINREQUEST_ONPROGRESS)] HRESULT onprogress ([in] VARIANT v);
    [propget, id (DISPID_IHTMLXDOMAINREQUEST_ONPROGRESS)] HRESULT onprogress ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLXDOMAINREQUEST_ONERROR)] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLXDOMAINREQUEST_ONERROR)] HRESULT onerror ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLXDOMAINREQUEST_ONTIMEOUT)] HRESULT ontimeout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLXDOMAINREQUEST_ONTIMEOUT)] HRESULT ontimeout ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLXDOMAINREQUEST_ONLOAD)] HRESULT onload ([in] VARIANT v);
    [propget, id (DISPID_IHTMLXDOMAINREQUEST_ONLOAD)] HRESULT onload ([retval, out] 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 ([optional, in] VARIANT varBody);
  };
  [odl, oleautomation, dual, uuid (30510456-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLXDomainRequestFactory : IDispatch {
    [id (DISPID_IHTMLXDOMAINREQUESTFACTORY_CREATE)] HRESULT create ([retval, out] IHTMLXDomainRequest **);
  };
  [hidden, uuid (3050f599-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispXDomainRequest {
    properties:
    methods:
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
  };
  [noncreatable, uuid (30510455-98b5-11cf-bb82-00aa00bdce0b)] coclass XDomainRequest {
    [default] dispinterface DispXDomainRequest;
    interface IHTMLDOMConstructor;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CXDomainRequest;")
  [noncreatable, uuid (30510457-98b5-11cf-bb82-00aa00bdce0b)] coclass XDomainRequestFactory {
    [default] interface IHTMLXDomainRequestFactory;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CXDomainRequestFactory;")
  [odl, oleautomation, dual, uuid (30510474-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStorage : IDispatch {
    [propget, id (DISPID_IHTMLSTORAGE_LENGTH), hidden] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IHTMLSTORAGE_REMAININGSPACE), hidden] HRESULT remainingSpace ([retval, out] long *p);
    [id (DISPID_IHTMLSTORAGE_KEY)] HRESULT key ([in] long lIndex,[retval, out] BSTR *);
    [id (DISPID_IHTMLSTORAGE_GETITEM)] HRESULT getItem ([in] BSTR bstrKey,[retval, out] 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 ();
  };
  [odl, oleautomation, dual, uuid (30510799-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStorage2 : IDispatch {
    [id (DISPID_IHTMLSTORAGE2_IE9_SETITEM)] HRESULT setItem ([in] BSTR bstrKey,[in] BSTR bstrValue);
  };
  [hidden, uuid (3050f59d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLStorage {
    properties:
    methods:
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [propget, id (DISPID_IHTMLSTORAGE_LENGTH), hidden] long length ();
    [propget, id (DISPID_IHTMLSTORAGE_REMAININGSPACE), hidden] long remainingSpace ();
    [id (DISPID_IHTMLSTORAGE_KEY)] BSTR key ([in] long lIndex);
    [id (DISPID_IHTMLSTORAGE_GETITEM)] VARIANT getItem ([in] BSTR bstrKey);
    [id (DISPID_IHTMLSTORAGE_SETITEM)] void setItem ([in] BSTR bstrKey,[in] BSTR bstrValue);
    [id (DISPID_IHTMLSTORAGE_REMOVEITEM)] void removeItem ([in] BSTR bstrKey);
    [id (DISPID_IHTMLSTORAGE_CLEAR)] void clear ();
    [id (DISPID_IHTMLSTORAGE2_IE9_SETITEM)] void ie9_setItem ([in] BSTR bstrKey,[in] BSTR bstrValue);
  };
  [noncreatable, uuid (30510475-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLStorage {
    [default] dispinterface DispHTMLStorage;
    interface IHTMLDOMConstructor;
    interface IHTMLStorage;
    interface IHTMLStorage2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CStorage;")
  [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,[retval, out] VARIANT_BOOL *pfResult);
  };
  [odl, oleautomation, dual, uuid (305104ba-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMEvent : IDispatch {
    [propget, id (DISPID_IDOMEVENT_BUBBLES)] HRESULT bubbles ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMEVENT_CANCELABLE)] HRESULT cancelable ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMEVENT_CURRENTTARGET)] HRESULT currentTarget ([retval, out] IEventTarget **p);
    [propget, id (DISPID_IDOMEVENT_DEFAULTPREVENTED)] HRESULT defaultPrevented ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMEVENT_EVENTPHASE)] HRESULT eventPhase ([retval, out] USHORT *p);
    [propget, id (DISPID_IDOMEVENT_TARGET)] HRESULT target ([retval, out] IEventTarget **p);
    [propget, id (DISPID_IDOMEVENT_TIMESTAMP)] HRESULT timeStamp ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IDOMEVENT_TYPE)] HRESULT type ([retval, out] 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 ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IDOMEVENT_CANCELBUBBLE)] HRESULT cancelBubble ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IDOMEVENT_CANCELBUBBLE)] HRESULT cancelBubble ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMEVENT_SRCELEMENT)] HRESULT srcElement ([retval, out] IHTMLElement **p);
  };
  [hidden, uuid (3050f5a2-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMEvent {
    properties:
    methods:
    [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 ();
  };
  [noncreatable, uuid (305104bb-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMEvent {
    [default] dispinterface DispDOMEvent;
    interface IDOMEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMEvent;")
  [odl, oleautomation, dual, uuid (305106ca-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMUIEvent : IDispatch {
    [propget, id (DISPID_IDOMUIEVENT_VIEW)] HRESULT view ([retval, out] IHTMLWindow2 **p);
    [propget, id (DISPID_IDOMUIEVENT_DETAIL)] HRESULT detail ([retval, out] 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);
  };
  [hidden, uuid (30590072-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMUIEvent {
    properties:
    methods:
    [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 ();
    [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);
  };
  [noncreatable, uuid (305106cb-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMUIEvent {
    [default] dispinterface DispDOMUIEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMUIEvent;")
  [odl, oleautomation, dual, uuid (305106ce-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMMouseEvent : IDispatch {
    [propget, id (DISPID_IDOMMOUSEEVENT_SCREENX)] HRESULT screenX ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_SCREENY)] HRESULT screenY ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_CLIENTX)] HRESULT clientX ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_CLIENTY)] HRESULT clientY ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_CTRLKEY)] HRESULT ctrlKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_SHIFTKEY)] HRESULT shiftKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_ALTKEY)] HRESULT altKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_METAKEY)] HRESULT metaKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_BUTTON)] HRESULT button ([retval, out] USHORT *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_RELATEDTARGET)] HRESULT relatedTarget ([retval, out] 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,[retval, out] VARIANT_BOOL *activated);
    [propget, id (DISPID_IDOMMOUSEEVENT_BUTTONS)] HRESULT buttons ([retval, out] USHORT *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_FROMELEMENT)] HRESULT fromElement ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IDOMMOUSEEVENT_TOELEMENT)] HRESULT toElement ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IDOMMOUSEEVENT_X)] HRESULT x ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_Y)] HRESULT y ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_OFFSETX)] HRESULT offsetX ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_OFFSETY)] HRESULT offsetY ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_PAGEX)] HRESULT pageX ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_PAGEY)] HRESULT pageY ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_LAYERX)] HRESULT layerX ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_LAYERY)] HRESULT layerY ([retval, out] long *p);
    [propget, id (DISPID_IDOMMOUSEEVENT_WHICH)] HRESULT which ([retval, out] USHORT *p);
  };
  [hidden, uuid (30590073-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMMouseEvent {
    properties:
    methods:
    [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 ();
    [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);
    [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 ();
  };
  [noncreatable, uuid (305106cf-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMMouseEvent {
    [default] dispinterface DispDOMMouseEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMMouseEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMMouseEvent;")
  [odl, oleautomation, dual, uuid (30510761-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMDragEvent : IDispatch {
    [propget, id (DISPID_IDOMDRAGEVENT_DATATRANSFER)] HRESULT dataTransfer ([retval, out] IHTMLDataTransfer **p);
    [id (DISPID_IDOMDRAGEVENT_INITDRAGEVENT)] HRESULT initDragEvent ([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,[in] IHTMLDataTransfer *dataTransferArg);
  };
  [hidden, uuid (305900a7-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMDragEvent {
    properties:
    methods:
    [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 ();
    [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);
    [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 ();
    [propget, id (DISPID_IDOMDRAGEVENT_DATATRANSFER)] IHTMLDataTransfer *dataTransfer ();
    [id (DISPID_IDOMDRAGEVENT_INITDRAGEVENT)] void initDragEvent ([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,[in] IHTMLDataTransfer *dataTransferArg);
  };
  [noncreatable, uuid (30510762-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMDragEvent {
    [default] dispinterface DispDOMDragEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMMouseEvent;
    interface IDOMDragEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMDragEvent;")
  [odl, oleautomation, dual, uuid (305106d0-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMMouseWheelEvent : IDispatch {
    [propget, id (DISPID_IDOMMOUSEWHEELEVENT_WHEELDELTA)] HRESULT wheelDelta ([retval, out] long *p);
    [id (DISPID_IDOMMOUSEWHEELEVENT_INITMOUSEWHEELEVENT)] HRESULT initMouseWheelEvent ([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] USHORT buttonArg,[in] IEventTarget *relatedTargetArg,[in] BSTR modifiersListArg,[in] long wheelDeltaArg);
  };
  [hidden, uuid (30590074-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMMouseWheelEvent {
    properties:
    methods:
    [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 ();
    [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);
    [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 ();
    [propget, id (DISPID_IDOMMOUSEWHEELEVENT_WHEELDELTA)] long wheelDelta ();
    [id (DISPID_IDOMMOUSEWHEELEVENT_INITMOUSEWHEELEVENT)] void initMouseWheelEvent ([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] USHORT buttonArg,[in] IEventTarget *relatedTargetArg,[in] BSTR modifiersListArg,[in] long wheelDeltaArg);
  };
  [noncreatable, uuid (305106d1-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMMouseWheelEvent {
    [default] dispinterface DispDOMMouseWheelEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMMouseEvent;
    interface IDOMMouseWheelEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMMouseWheelEvent;")
  [odl, oleautomation, dual, uuid (305106d2-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMWheelEvent : IDispatch {
    [propget, id (DISPID_IDOMWHEELEVENT_DELTAX)] HRESULT deltaX ([retval, out] long *p);
    [propget, id (DISPID_IDOMWHEELEVENT_DELTAY)] HRESULT deltaY ([retval, out] long *p);
    [propget, id (DISPID_IDOMWHEELEVENT_DELTAZ)] HRESULT deltaZ ([retval, out] long *p);
    [propget, id (DISPID_IDOMWHEELEVENT_DELTAMODE)] HRESULT deltaMode ([retval, out] ULONG *p);
    [id (DISPID_IDOMWHEELEVENT_INITWHEELEVENT)] HRESULT initWheelEvent ([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] USHORT buttonArg,[in] IEventTarget *relatedTargetArg,[in] BSTR modifiersListArg,[in] long deltaX,[in] long deltaY,[in] long deltaZ,[in] ULONG deltaMode);
  };
  [hidden, uuid (30590075-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMWheelEvent {
    properties:
    methods:
    [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 ();
    [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);
    [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 ();
    [propget, id (DISPID_IDOMWHEELEVENT_DELTAX)] long deltaX ();
    [propget, id (DISPID_IDOMWHEELEVENT_DELTAY)] long deltaY ();
    [propget, id (DISPID_IDOMWHEELEVENT_DELTAZ)] long deltaZ ();
    [propget, id (DISPID_IDOMWHEELEVENT_DELTAMODE)] ULONG deltaMode ();
    [id (DISPID_IDOMWHEELEVENT_INITWHEELEVENT)] void initWheelEvent ([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] USHORT buttonArg,[in] IEventTarget *relatedTargetArg,[in] BSTR modifiersListArg,[in] long deltaX,[in] long deltaY,[in] long deltaZ,[in] ULONG deltaMode);
  };
  [noncreatable, uuid (305106d3-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMWheelEvent {
    [default] dispinterface DispDOMWheelEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMMouseEvent;
    interface IDOMWheelEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMWheelEvent;")
  [odl, oleautomation, dual, uuid (305106d4-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMTextEvent : IDispatch {
    [propget, id (DISPID_IDOMTEXTEVENT_DATA)] HRESULT data ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMTEXTEVENT_INPUTMETHOD)] HRESULT inputMethod ([retval, out] ULONG *p);
    [id (DISPID_IDOMTEXTEVENT_INITTEXTEVENT)] HRESULT initTextEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] BSTR dataArg,[in] ULONG inputMethod,[in] BSTR locale);
    [propget, id (DISPID_IDOMTEXTEVENT_LOCALE)] HRESULT locale ([retval, out] BSTR *p);
  };
  [hidden, uuid (30590076-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMTextEvent {
    properties:
    methods:
    [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 ();
    [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);
    [propget, id (DISPID_IDOMTEXTEVENT_DATA)] BSTR data ();
    [propget, id (DISPID_IDOMTEXTEVENT_INPUTMETHOD)] ULONG inputMethod ();
    [id (DISPID_IDOMTEXTEVENT_INITTEXTEVENT)] void initTextEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] BSTR dataArg,[in] ULONG inputMethod,[in] BSTR locale);
    [propget, id (DISPID_IDOMTEXTEVENT_LOCALE)] BSTR locale ();
  };
  [noncreatable, uuid (305106d5-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMTextEvent {
    [default] dispinterface DispDOMTextEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMTextEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMTextEvent;")
  [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 ([retval, out] ULONG *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_CTRLKEY)] HRESULT ctrlKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_SHIFTKEY)] HRESULT shiftKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_ALTKEY)] HRESULT altKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_METAKEY)] HRESULT metaKey ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_REPEAT)] HRESULT repeat ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IDOMKEYBOARDEVENT_GETMODIFIERSTATE)] HRESULT getModifierState ([in] BSTR keyArg,[retval, out] 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 ([retval, out] long *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_CHARCODE)] HRESULT charCode ([retval, out] long *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_WHICH)] HRESULT which ([retval, out] long *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_IE9_CHAR)] HRESULT ie9_char ([retval, out] VARIANT *p);
    [propget, id (DISPID_IDOMKEYBOARDEVENT_LOCALE)] HRESULT locale ([retval, out] BSTR *p);
  };
  [hidden, uuid (30590077-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMKeyboardEvent {
    properties:
    methods:
    [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 ();
    [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);
    [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 ();
  };
  [noncreatable, uuid (305106d7-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMKeyboardEvent {
    [default] dispinterface DispDOMKeyboardEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMKeyboardEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMKeyboardEvent;")
  [odl, oleautomation, dual, uuid (305106d8-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMCompositionEvent : IDispatch {
    [propget, id (DISPID_IDOMCOMPOSITIONEVENT_DATA)] HRESULT data ([retval, out] BSTR *p);
    [id (DISPID_IDOMCOMPOSITIONEVENT_INITCOMPOSITIONEVENT)] HRESULT initCompositionEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] BSTR data,[in] BSTR locale);
    [propget, id (DISPID_IDOMCOMPOSITIONEVENT_LOCALE)] HRESULT locale ([retval, out] BSTR *p);
  };
  [hidden, uuid (30590078-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMCompositionEvent {
    properties:
    methods:
    [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 ();
    [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);
    [propget, id (DISPID_IDOMCOMPOSITIONEVENT_DATA)] BSTR data ();
    [id (DISPID_IDOMCOMPOSITIONEVENT_INITCOMPOSITIONEVENT)] void initCompositionEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] BSTR data,[in] BSTR locale);
    [propget, id (DISPID_IDOMCOMPOSITIONEVENT_LOCALE)] BSTR locale ();
  };
  [noncreatable, uuid (305106d9-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMCompositionEvent {
    [default] dispinterface DispDOMCompositionEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMCompositionEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMCompositionEvent;")
  [odl, oleautomation, dual, uuid (305106da-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMMutationEvent : IDispatch {
    [propget, id (DISPID_IDOMMUTATIONEVENT_RELATEDNODE)] HRESULT relatedNode ([retval, out] IDispatch **p);
    [propget, id (DISPID_IDOMMUTATIONEVENT_PREVVALUE)] HRESULT prevValue ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMMUTATIONEVENT_NEWVALUE)] HRESULT newValue ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMMUTATIONEVENT_ATTRNAME)] HRESULT attrName ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMMUTATIONEVENT_ATTRCHANGE)] HRESULT attrChange ([retval, out] USHORT *p);
    [id (DISPID_IDOMMUTATIONEVENT_INITMUTATIONEVENT)] HRESULT initMutationEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IDispatch *relatedNodeArg,[in] BSTR prevValueArg,[in] BSTR newValueArg,[in] BSTR attrNameArg,[in] USHORT attrChangeArg);
  };
  [hidden, uuid (30590079-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMMutationEvent {
    properties:
    methods:
    [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 ();
    [propget, id (DISPID_IDOMMUTATIONEVENT_RELATEDNODE)] IDispatch *relatedNode ();
    [propget, id (DISPID_IDOMMUTATIONEVENT_PREVVALUE)] BSTR prevValue ();
    [propget, id (DISPID_IDOMMUTATIONEVENT_NEWVALUE)] BSTR newValue ();
    [propget, id (DISPID_IDOMMUTATIONEVENT_ATTRNAME)] BSTR attrName ();
    [propget, id (DISPID_IDOMMUTATIONEVENT_ATTRCHANGE)] USHORT attrChange ();
    [id (DISPID_IDOMMUTATIONEVENT_INITMUTATIONEVENT)] void initMutationEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IDispatch *relatedNodeArg,[in] BSTR prevValueArg,[in] BSTR newValueArg,[in] BSTR attrNameArg,[in] USHORT attrChangeArg);
  };
  [noncreatable, uuid (305106db-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMMutationEvent {
    [default] dispinterface DispDOMMutationEvent;
    interface IDOMEvent;
    interface IDOMMutationEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMMutationEvent;")
  [odl, oleautomation, dual, uuid (30510763-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMBeforeUnloadEvent : IDispatch {
    [propput, id (DISPID_IDOMBEFOREUNLOADEVENT_RETURNVALUE)] HRESULT returnValue ([in] VARIANT v);
    [propget, id (DISPID_IDOMBEFOREUNLOADEVENT_RETURNVALUE)] HRESULT returnValue ([retval, out] VARIANT *p);
  };
  [hidden, uuid (305900a8-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMBeforeUnloadEvent {
    properties:
    methods:
    [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 ();
    [propput, id (DISPID_IDOMBEFOREUNLOADEVENT_RETURNVALUE)] void returnValue (VARIANT v);
    [propget, id (DISPID_IDOMBEFOREUNLOADEVENT_RETURNVALUE)] VARIANT returnValue ();
  };
  [noncreatable, uuid (30510764-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMBeforeUnloadEvent {
    [default] dispinterface DispDOMBeforeUnloadEvent;
    interface IDOMEvent;
    interface IDOMBeforeUnloadEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMBeforeUnloadEvent;")
  [odl, oleautomation, dual, uuid (305106cc-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMFocusEvent : IDispatch {
    [propget, id (DISPID_IDOMFOCUSEVENT_RELATEDTARGET)] HRESULT relatedTarget ([retval, out] IEventTarget **p);
    [id (DISPID_IDOMFOCUSEVENT_INITFOCUSEVENT)] HRESULT initFocusEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *view,[in] long detail,[in] IEventTarget *relatedTargetArg);
  };
  [hidden, uuid (30590071-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMFocusEvent {
    properties:
    methods:
    [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 ();
    [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);
    [propget, id (DISPID_IDOMFOCUSEVENT_RELATEDTARGET)] IEventTarget *relatedTarget ();
    [id (DISPID_IDOMFOCUSEVENT_INITFOCUSEVENT)] void initFocusEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *view,[in] long detail,[in] IEventTarget *relatedTargetArg);
  };
  [noncreatable, uuid (305106cd-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMFocusEvent {
    [default] dispinterface DispDOMFocusEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMFocusEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMFocusEvent;")
  [odl, oleautomation, dual, uuid (305106de-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMCustomEvent : IDispatch {
    [propget, id (DISPID_IDOMCUSTOMEVENT_DETAIL)] HRESULT detail ([retval, out] VARIANT *p);
    [id (DISPID_IDOMCUSTOMEVENT_INITCUSTOMEVENT)] HRESULT initCustomEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] VARIANT *detail);
  };
  [hidden, uuid (3059007c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMCustomEvent {
    properties:
    methods:
    [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 ();
    [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);
  };
  [noncreatable, uuid (305106df-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMCustomEvent {
    [default] dispinterface DispDOMCustomEvent;
    interface IDOMEvent;
    interface IDOMCustomEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMCustomEvent;")
  [odl, oleautomation, dual, uuid (30510714-98b5-11cf-bb82-00aa00bdce0b)] interface ICanvasGradient : IDispatch {
    [id (DISPID_ICANVASGRADIENT_ADDCOLORSTOP)] HRESULT addColorStop ([in] float offset,[in] BSTR color);
  };
  [odl, oleautomation, dual, uuid (30510716-98b5-11cf-bb82-00aa00bdce0b)] interface ICanvasPattern : IDispatch {
  };
  [odl, oleautomation, dual, uuid (30510718-98b5-11cf-bb82-00aa00bdce0b)] interface ICanvasTextMetrics : IDispatch {
    [propget, id (DISPID_ICANVASTEXTMETRICS_WIDTH)] HRESULT width ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (3051071a-98b5-11cf-bb82-00aa00bdce0b)] interface ICanvasImageData : IDispatch {
    [propget, id (DISPID_ICANVASIMAGEDATA_WIDTH)] HRESULT width ([retval, out] ULONG *p);
    [propget, id (DISPID_ICANVASIMAGEDATA_HEIGHT)] HRESULT height ([retval, out] ULONG *p);
    [propget, id (DISPID_ICANVASIMAGEDATA_DATA)] HRESULT data ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (3051071c-98b5-11cf-bb82-00aa00bdce0b)] interface ICanvasPixelArray : IDispatch {
    [propget, id (DISPID_ICANVASPIXELARRAY_LENGTH)] HRESULT length ([retval, out] ULONG *p);
  };
  interface IHTMLCanvasElement;
  [odl, oleautomation, dual, uuid (305106ff-98b5-11cf-bb82-00aa00bdce0b)] interface ICanvasRenderingContext2D : IDispatch {
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_CANVAS)] HRESULT canvas ([retval, out] IHTMLCanvasElement **p);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_RESTORE)] HRESULT restore ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_SAVE)] HRESULT save ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_ROTATE)] HRESULT rotate ([in] float angle);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_SCALE)] HRESULT scale ([in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_SETTRANSFORM)] HRESULT setTransform ([in] float m11,[in] float m12,[in] float m21,[in] float m22,[in] float dx,[in] float dy);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_TRANSFORM)] HRESULT transform ([in] float m11,[in] float m12,[in] float m21,[in] float m22,[in] float dx,[in] float dy);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_TRANSLATE)] HRESULT translate ([in] float x,[in] float y);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_GLOBALALPHA)] HRESULT globalAlpha ([in] float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_GLOBALALPHA)] HRESULT globalAlpha ([retval, out] float *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_GLOBALCOMPOSITEOPERATION)] HRESULT globalCompositeOperation ([in] BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_GLOBALCOMPOSITEOPERATION)] HRESULT globalCompositeOperation ([retval, out] BSTR *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_FILLSTYLE)] HRESULT fillStyle ([in] VARIANT v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_FILLSTYLE)] HRESULT fillStyle ([retval, out] VARIANT *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKESTYLE)] HRESULT strokeStyle ([in] VARIANT v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKESTYLE)] HRESULT strokeStyle ([retval, out] VARIANT *p);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CREATELINEARGRADIENT)] HRESULT createLinearGradient ([in] float x0,[in] float y0,[in] float x1,[in] float y1,[retval, out] ICanvasGradient **ppCanvasGradient);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CREATERADIALGRADIENT)] HRESULT createRadialGradient ([in] float x0,[in] float y0,[in] float r0,[in] float x1,[in] float y1,[in] float r1,[retval, out] ICanvasGradient **ppCanvasGradient);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CREATEPATTERN)] HRESULT createPattern ([in] IDispatch *image,[in] VARIANT repetition,[retval, out] ICanvasPattern **ppCanvasPattern);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINECAP)] HRESULT lineCap ([in] BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINECAP)] HRESULT lineCap ([retval, out] BSTR *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINEJOIN)] HRESULT lineJoin ([in] BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINEJOIN)] HRESULT lineJoin ([retval, out] BSTR *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINEWIDTH)] HRESULT lineWidth ([in] float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINEWIDTH)] HRESULT lineWidth ([retval, out] float *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_MITERLIMIT)] HRESULT miterLimit ([in] float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_MITERLIMIT)] HRESULT miterLimit ([retval, out] float *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWBLUR)] HRESULT shadowBlur ([in] float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWBLUR)] HRESULT shadowBlur ([retval, out] float *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWCOLOR)] HRESULT shadowColor ([in] BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWCOLOR)] HRESULT shadowColor ([retval, out] BSTR *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWOFFSETX)] HRESULT shadowOffsetX ([in] float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWOFFSETX)] HRESULT shadowOffsetX ([retval, out] float *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWOFFSETY)] HRESULT shadowOffsetY ([in] float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWOFFSETY)] HRESULT shadowOffsetY ([retval, out] float *p);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CLEARRECT)] HRESULT clearRect ([in] float x,[in] float y,[in] float w,[in] float h);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_FILLRECT)] HRESULT fillRect ([in] float x,[in] float y,[in] float w,[in] float h);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKERECT)] HRESULT strokeRect ([in] float x,[in] float y,[in] float w,[in] float h);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_ARC)] HRESULT arc ([in] float x,[in] float y,[in] float radius,[in] float startAngle,[in] float endAngle,[in] BOOL anticlockwise);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_ARCTO)] HRESULT arcTo ([in] float x1,[in] float y1,[in] float x2,[in] float y2,[in] float radius);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_BEGINPATH)] HRESULT beginPath ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_BEZIERCURVETO)] HRESULT bezierCurveTo ([in] float cp1x,[in] float cp1y,[in] float cp2x,[in] float cp2y,[in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CLIP)] HRESULT clip ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CLOSEPATH)] HRESULT closePath ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_FILL)] HRESULT fill ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_LINETO)] HRESULT lineTo ([in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_MOVETO)] HRESULT moveTo ([in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_QUADRATICCURVETO)] HRESULT quadraticCurveTo ([in] float cpx,[in] float cpy,[in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_RECT)] HRESULT rect ([in] float x,[in] float y,[in] float w,[in] float h);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKE)] HRESULT stroke ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_ISPOINTINPATH)] HRESULT isPointInPath ([in] float x,[in] float y,[retval, out] VARIANT_BOOL *pResult);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_FONT)] HRESULT font ([in] BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_FONT)] HRESULT font ([retval, out] BSTR *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_TEXTALIGN)] HRESULT textAlign ([in] BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_TEXTALIGN)] HRESULT textAlign ([retval, out] BSTR *p);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_TEXTBASELINE)] HRESULT textBaseline ([in] BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_TEXTBASELINE)] HRESULT textBaseline ([retval, out] BSTR *p);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_FILLTEXT)] HRESULT fillText ([in] BSTR text,[in] float x,[in] float y,[in] VARIANT maxWidth);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_MEASURETEXT)] HRESULT measureText ([in] BSTR text,[retval, out] ICanvasTextMetrics **ppCanvasTextMetrics);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKETEXT)] HRESULT strokeText ([in] BSTR text,[in] float x,[in] float y,[in] VARIANT maxWidth);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_DRAWIMAGE)] HRESULT drawImage ([in] IDispatch *pSrc,[in] VARIANT a1,[in] VARIANT a2,[in] VARIANT a3,[in] VARIANT a4,[in] VARIANT a5,[in] VARIANT a6,[in] VARIANT a7,[in] VARIANT a8);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CREATEIMAGEDATA)] HRESULT createImageData ([in] VARIANT a1,[in] VARIANT a2,[retval, out] ICanvasImageData **ppCanvasImageData);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_GETIMAGEDATA)] HRESULT getImageData ([in] float sx,[in] float sy,[in] float sw,[in] float sh,[retval, out] ICanvasImageData **ppCanvasImageData);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_PUTIMAGEDATA)] HRESULT putImageData ([in] ICanvasImageData *imagedata,[in] float dx,[in] float dy,[in] VARIANT dirtyX,[in] VARIANT dirtyY,[in] VARIANT dirtyWidth,[in] VARIANT dirtyHeight);
  };
  [odl, oleautomation, dual, uuid (305106e4-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLCanvasElement : IDispatch {
    [propput, id (DISPID_IHTMLCANVASELEMENT_WIDTH)] HRESULT width ([in] long v);
    [propget, id (DISPID_IHTMLCANVASELEMENT_WIDTH)] HRESULT width ([retval, out] long *p);
    [propput, id (DISPID_IHTMLCANVASELEMENT_HEIGHT)] HRESULT height ([in] long v);
    [propget, id (DISPID_IHTMLCANVASELEMENT_HEIGHT)] HRESULT height ([retval, out] long *p);
    [id (DISPID_IHTMLCANVASELEMENT_GETCONTEXT)] HRESULT getContext ([in] BSTR contextId,[retval, out] ICanvasRenderingContext2D **ppContext);
    [id (DISPID_IHTMLCANVASELEMENT_TODATAURL)] HRESULT toDataURL ([in] BSTR type,[in] VARIANT jpegquality,[retval, out] BSTR *pUrl);
  };
  [hidden, uuid (3059008c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispCanvasGradient {
    properties:
    methods:
    [id (DISPID_ICANVASGRADIENT_ADDCOLORSTOP)] void addColorStop ([in] float offset,[in] BSTR color);
  };
  [noncreatable, uuid (30510715-98b5-11cf-bb82-00aa00bdce0b)] coclass CanvasGradient {
    [default] dispinterface DispCanvasGradient;
    interface ICanvasGradient;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CCanvasGradient;")
  [hidden, uuid (3059008d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispCanvasPattern {
    properties:
    methods:
  };
  [noncreatable, uuid (30510717-98b5-11cf-bb82-00aa00bdce0b)] coclass CanvasPattern {
    [default] dispinterface DispCanvasPattern;
    interface ICanvasPattern;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CCanvasPattern;")
  [hidden, uuid (3059008e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispCanvasTextMetrics {
    properties:
    methods:
    [propget, id (DISPID_ICANVASTEXTMETRICS_WIDTH)] float width ();
  };
  [noncreatable, uuid (30510719-98b5-11cf-bb82-00aa00bdce0b)] coclass CanvasTextMetrics {
    [default] dispinterface DispCanvasTextMetrics;
    interface ICanvasTextMetrics;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CCanvasTextMetrics;")
  [hidden, uuid (3059008f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispCanvasImageData {
    properties:
    methods:
    [propget, id (DISPID_ICANVASIMAGEDATA_WIDTH)] ULONG width ();
    [propget, id (DISPID_ICANVASIMAGEDATA_HEIGHT)] ULONG height ();
    [propget, id (DISPID_ICANVASIMAGEDATA_DATA)] VARIANT data ();
  };
  [noncreatable, uuid (3051071b-98b5-11cf-bb82-00aa00bdce0b)] coclass CanvasImageData {
    [default] dispinterface DispCanvasImageData;
    interface ICanvasImageData;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CCanvasImageData;")
  [hidden, uuid (30590082-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispCanvasRenderingContext2D {
    properties:
    methods:
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_CANVAS)] IHTMLCanvasElement *canvas ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_RESTORE)] void restore ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_SAVE)] void save ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_ROTATE)] void rotate ([in] float angle);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_SCALE)] void scale ([in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_SETTRANSFORM)] void setTransform ([in] float m11,[in] float m12,[in] float m21,[in] float m22,[in] float dx,[in] float dy);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_TRANSFORM)] void transform ([in] float m11,[in] float m12,[in] float m21,[in] float m22,[in] float dx,[in] float dy);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_TRANSLATE)] void translate ([in] float x,[in] float y);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_GLOBALALPHA)] void globalAlpha (float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_GLOBALALPHA)] float globalAlpha ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_GLOBALCOMPOSITEOPERATION)] void globalCompositeOperation (BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_GLOBALCOMPOSITEOPERATION)] BSTR globalCompositeOperation ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_FILLSTYLE)] void fillStyle (VARIANT v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_FILLSTYLE)] VARIANT fillStyle ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKESTYLE)] void strokeStyle (VARIANT v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKESTYLE)] VARIANT strokeStyle ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CREATELINEARGRADIENT)] ICanvasGradient *createLinearGradient ([in] float x0,[in] float y0,[in] float x1,[in] float y1);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CREATERADIALGRADIENT)] ICanvasGradient *createRadialGradient ([in] float x0,[in] float y0,[in] float r0,[in] float x1,[in] float y1,[in] float r1);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CREATEPATTERN)] ICanvasPattern *createPattern ([in] IDispatch *image,[in] VARIANT repetition);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINECAP)] void lineCap (BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINECAP)] BSTR lineCap ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINEJOIN)] void lineJoin (BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINEJOIN)] BSTR lineJoin ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINEWIDTH)] void lineWidth (float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_LINEWIDTH)] float lineWidth ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_MITERLIMIT)] void miterLimit (float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_MITERLIMIT)] float miterLimit ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWBLUR)] void shadowBlur (float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWBLUR)] float shadowBlur ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWCOLOR)] void shadowColor (BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWCOLOR)] BSTR shadowColor ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWOFFSETX)] void shadowOffsetX (float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWOFFSETX)] float shadowOffsetX ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWOFFSETY)] void shadowOffsetY (float v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_SHADOWOFFSETY)] float shadowOffsetY ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CLEARRECT)] void clearRect ([in] float x,[in] float y,[in] float w,[in] float h);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_FILLRECT)] void fillRect ([in] float x,[in] float y,[in] float w,[in] float h);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKERECT)] void strokeRect ([in] float x,[in] float y,[in] float w,[in] float h);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_ARC)] void arc ([in] float x,[in] float y,[in] float radius,[in] float startAngle,[in] float endAngle,[in] BOOL anticlockwise);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_ARCTO)] void arcTo ([in] float x1,[in] float y1,[in] float x2,[in] float y2,[in] float radius);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_BEGINPATH)] void beginPath ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_BEZIERCURVETO)] void bezierCurveTo ([in] float cp1x,[in] float cp1y,[in] float cp2x,[in] float cp2y,[in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CLIP)] void clip ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CLOSEPATH)] void closePath ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_FILL)] void fill ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_LINETO)] void lineTo ([in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_MOVETO)] void moveTo ([in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_QUADRATICCURVETO)] void quadraticCurveTo ([in] float cpx,[in] float cpy,[in] float x,[in] float y);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_RECT)] void rect ([in] float x,[in] float y,[in] float w,[in] float h);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKE)] void stroke ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_ISPOINTINPATH)] VARIANT_BOOL isPointInPath ([in] float x,[in] float y);
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_FONT)] void font (BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_FONT)] BSTR font ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_TEXTALIGN)] void textAlign (BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_TEXTALIGN)] BSTR textAlign ();
    [propput, id (DISPID_ICANVASRENDERINGCONTEXT2D_TEXTBASELINE)] void textBaseline (BSTR v);
    [propget, id (DISPID_ICANVASRENDERINGCONTEXT2D_TEXTBASELINE)] BSTR textBaseline ();
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_FILLTEXT)] void fillText ([in] BSTR text,[in] float x,[in] float y,[in] VARIANT maxWidth);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_MEASURETEXT)] ICanvasTextMetrics *measureText ([in] BSTR text);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_STROKETEXT)] void strokeText ([in] BSTR text,[in] float x,[in] float y,[in] VARIANT maxWidth);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_DRAWIMAGE)] void drawImage ([in] IDispatch *pSrc,[in] VARIANT a1,[in] VARIANT a2,[in] VARIANT a3,[in] VARIANT a4,[in] VARIANT a5,[in] VARIANT a6,[in] VARIANT a7,[in] VARIANT a8);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_CREATEIMAGEDATA)] ICanvasImageData *createImageData ([in] VARIANT a1,[in] VARIANT a2);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_GETIMAGEDATA)] ICanvasImageData *getImageData ([in] float sx,[in] float sy,[in] float sw,[in] float sh);
    [id (DISPID_ICANVASRENDERINGCONTEXT2D_PUTIMAGEDATA)] void putImageData ([in] ICanvasImageData *imagedata,[in] float dx,[in] float dy,[in] VARIANT dirtyX,[in] VARIANT dirtyY,[in] VARIANT dirtyWidth,[in] VARIANT dirtyHeight);
  };
  [noncreatable, uuid (30510700-98b5-11cf-bb82-00aa00bdce0b)] coclass CanvasRenderingContext2D {
    [default] dispinterface DispCanvasRenderingContext2D;
    interface ICanvasRenderingContext2D;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CCanvasRenderingContext2D;")
  [hidden, uuid (3059007b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLCanvasElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLCANVASELEMENT_WIDTH)] void width (long v);
    [propget, id (DISPID_IHTMLCANVASELEMENT_WIDTH)] long width ();
    [propput, id (DISPID_IHTMLCANVASELEMENT_HEIGHT)] void height (long v);
    [propget, id (DISPID_IHTMLCANVASELEMENT_HEIGHT)] long height ();
    [id (DISPID_IHTMLCANVASELEMENT_GETCONTEXT)] ICanvasRenderingContext2D *getContext ([in] BSTR contextId);
    [id (DISPID_IHTMLCANVASELEMENT_TODATAURL)] BSTR toDataURL ([in] BSTR type,[in] VARIANT jpegquality);
  };
  [noncreatable, uuid (305106e5-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLCanvasElement {
    [default] dispinterface DispHTMLCanvasElement;
    [source, default] dispinterface HTMLElementEvents;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLCanvasElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CHTMLCanvasElement;")
  [odl, oleautomation, dual, uuid (3051071e-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMProgressEvent : IDispatch {
    [propget, id (DISPID_IDOMPROGRESSEVENT_LENGTHCOMPUTABLE)] HRESULT lengthComputable ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_IDOMPROGRESSEVENT_LOADED)] HRESULT loaded ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IDOMPROGRESSEVENT_TOTAL)] HRESULT total ([retval, out] 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);
  };
  [hidden, uuid (30590091-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMProgressEvent {
    properties:
    methods:
    [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 ();
    [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);
  };
  [noncreatable, uuid (3051071f-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMProgressEvent {
    [default] dispinterface DispDOMProgressEvent;
    interface IDOMEvent;
    interface IDOMProgressEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMProgressEvent;")
  [odl, oleautomation, dual, uuid (30510720-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMMessageEvent : IDispatch {
    [propget, id (DISPID_IDOMMESSAGEEVENT_DATA)] HRESULT data ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMMESSAGEEVENT_ORIGIN)] HRESULT origin ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMMESSAGEEVENT_SOURCE)] HRESULT source ([retval, out] 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);
  };
  [hidden, uuid (30590092-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMMessageEvent {
    properties:
    methods:
    [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 ();
    [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);
  };
  [noncreatable, uuid (30510721-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMMessageEvent {
    [default] dispinterface DispDOMMessageEvent;
    interface IDOMEvent;
    interface IDOMMessageEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMMessageEvent;")
  [odl, oleautomation, dual, uuid (30510765-98b6-11cf-bb82-00aa00bdce0b)] interface IDOMSiteModeEvent : IDispatch {
    [propget, id (DISPID_IDOMSITEMODEEVENT_BUTTONID)] HRESULT buttonID ([retval, out] LONG *p);
    [propget, id (DISPID_IDOMSITEMODEEVENT_ACTIONURL)] HRESULT actionURL ([retval, out] BSTR *p);
  };
  [hidden, uuid (305900a9-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMSiteModeEvent {
    properties:
    methods:
    [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 ();
    [propget, id (DISPID_IDOMSITEMODEEVENT_BUTTONID)] LONG buttonID ();
    [propget, id (DISPID_IDOMSITEMODEEVENT_ACTIONURL)] BSTR actionURL ();
  };
  [noncreatable, uuid (30510766-98b6-11cf-bb82-00aa00bdce0b)] coclass DOMSiteModeEvent {
    [default] dispinterface DispDOMSiteModeEvent;
    interface IDOMEvent;
    interface IDOMSiteModeEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMSiteModeEvent;")
  [odl, oleautomation, dual, uuid (30510722-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMStorageEvent : IDispatch {
    [propget, id (DISPID_IDOMSTORAGEEVENT_KEY)] HRESULT key ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMSTORAGEEVENT_OLDVALUE)] HRESULT oldValue ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMSTORAGEEVENT_NEWVALUE)] HRESULT newValue ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMSTORAGEEVENT_URL)] HRESULT url ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMSTORAGEEVENT_STORAGEAREA)] HRESULT storageArea ([retval, out] 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);
  };
  [hidden, uuid (30590093-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMStorageEvent {
    properties:
    methods:
    [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 ();
    [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);
  };
  [noncreatable, uuid (30510723-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMStorageEvent {
    [default] dispinterface DispDOMStorageEvent;
    interface IDOMEvent;
    interface IDOMStorageEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMStorageEvent;")
  [odl, oleautomation, dual, uuid (30510830-98b5-11cf-bb82-00aa00bdce0b)] interface IXMLHttpRequestEventTarget : IDispatch {
  };
  [hidden, uuid (305900e7-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispXMLHttpRequestEventTarget {
    properties:
    methods:
    [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);
  };
  [noncreatable, uuid (30510831-98b5-11cf-bb82-00aa00bdce0b)] coclass XMLHttpRequestEventTarget {
    [default] dispinterface DispXMLHttpRequestEventTarget;
    interface IXMLHttpRequestEventTarget;
    interface IEventTarget;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CXMLHttpRequestEventTarget;")
  [hidden, uuid (30510498-98b5-11cf-bb82-00aa00bdce0b)] dispinterface HTMLXMLHttpRequestEvents {
    properties:
    methods:
    [id (DISPID_HTMLXMLHTTPREQUESTEVENTS_ONTIMEOUT)] void ontimeout ();
    [id (DISPID_HTMLXMLHTTPREQUESTEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ();
  };
  [odl, oleautomation, dual, uuid (3051040a-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLXMLHttpRequest : IDispatch {
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_READYSTATE)] HRESULT readyState ([retval, out] long *p);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_RESPONSEBODY)] HRESULT responseBody ([retval, out] VARIANT *p);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_RESPONSETEXT)] HRESULT responseText ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_RESPONSEXML)] HRESULT responseXML ([retval, out] IDispatch **p);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_STATUS)] HRESULT status ([retval, out] long *p);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_STATUSTEXT)] HRESULT statusText ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLXMLHTTPREQUEST_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([in] VARIANT v);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST_ONREADYSTATECHANGE), displaybind, bindable] HRESULT onreadystatechange ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLXMLHTTPREQUEST_ABORT)] HRESULT abort ();
    [id (DISPID_IHTMLXMLHTTPREQUEST_OPEN)] HRESULT open ([in] BSTR bstrMethod,[in] BSTR bstrUrl,[in] VARIANT varAsync,[optional, in] VARIANT varUser,[optional, in] VARIANT varPassword);
    [id (DISPID_IHTMLXMLHTTPREQUEST_SEND)] HRESULT send ([optional, in] VARIANT varBody);
    [id (DISPID_IHTMLXMLHTTPREQUEST_GETALLRESPONSEHEADERS)] HRESULT getAllResponseHeaders ([retval, out] BSTR *);
    [id (DISPID_IHTMLXMLHTTPREQUEST_GETRESPONSEHEADER)] HRESULT getResponseHeader ([in] BSTR bstrHeader,[retval, out] BSTR *);
    [id (DISPID_IHTMLXMLHTTPREQUEST_SETREQUESTHEADER)] HRESULT setRequestHeader ([in] BSTR bstrHeader,[in] BSTR bstrValue);
  };
  [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 ([retval, out] long *p);
    [propput, id (DISPID_IHTMLXMLHTTPREQUEST2_ONTIMEOUT), displaybind, bindable] HRESULT ontimeout ([in] VARIANT v);
    [propget, id (DISPID_IHTMLXMLHTTPREQUEST2_ONTIMEOUT), displaybind, bindable] HRESULT ontimeout ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (3051040c-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLXMLHttpRequestFactory : IDispatch {
    [id (DISPID_IHTMLXMLHTTPREQUESTFACTORY_CREATE)] HRESULT create ([retval, out] IHTMLXMLHttpRequest **);
  };
  [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,[optional, in] VARIANT varUser,[optional, in] VARIANT varPassword);
    [id (DISPID_IHTMLXMLHTTPREQUEST_SEND)] void send ([optional, in] 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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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);
  };
  [noncreatable, uuid (3051040b-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLXMLHttpRequest {
    [default] dispinterface DispHTMLXMLHttpRequest;
    [source, default] dispinterface HTMLXMLHttpRequestEvents;
    interface IHTMLXMLHttpRequest;
    interface IHTMLXMLHttpRequest2;
    interface IHTMLDOMConstructor;
    interface IEventTarget;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CXMLHttpRequest;")
  [noncreatable, uuid (3051040d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLXMLHttpRequestFactory {
    [default] interface IHTMLXMLHttpRequestFactory;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CXMLHttpRequestFactory;")
  typedef enum _svgAngleType {
    SVG_ANGLETYPE_UNKNOWN = 0,
    SVG_ANGLETYPE_UNSPECIFIED = 1,
    SVG_ANGLETYPE_DEG = 2,
    SVG_ANGLETYPE_RAD = 3,
    SVG_ANGLETYPE_GRAD = 4,
    svgAngleType_Max = 0x7FFFFFFF
  } svgAngleType;
  [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 ([retval, out] short *p);
    [propput, id (DISPID_ISVGANGLE_VALUE)] HRESULT value ([in] float v);
    [propget, id (DISPID_ISVGANGLE_VALUE)] HRESULT value ([retval, out] float *p);
    [propput, id (DISPID_ISVGANGLE_VALUEINSPECIFIEDUNITS)] HRESULT valueInSpecifiedUnits ([in] float v);
    [propget, id (DISPID_ISVGANGLE_VALUEINSPECIFIEDUNITS)] HRESULT valueInSpecifiedUnits ([retval, out] float *p);
    [propput, id (DISPID_ISVGANGLE_VALUEASSTRING)] HRESULT valueAsString ([in] BSTR v);
    [propget, id (DISPID_ISVGANGLE_VALUEASSTRING)] HRESULT valueAsString ([retval, out] BSTR *p);
    [id (DISPID_ISVGANGLE_NEWVALUESPECIFIEDUNITS)] HRESULT newValueSpecifiedUnits ([in] short unitType,[in] float valueInSpecifiedUnits);
    [id (DISPID_ISVGANGLE_CONVERTTOSPECIFIEDUNITS)] HRESULT convertToSpecifiedUnits ([in] short unitType);
  };
  [noncreatable, uuid (30510584-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAngle {
    [default] interface ISVGAngle;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAngle;")
  typedef enum _svgExternalResourcesRequired {
    svgExternalResourcesRequiredFalse = 0,
    svgExternalResourcesRequiredTrue = 1,
    svgExternalResourcesRequired_Max = 0x7FFFFFFF
  } svgExternalResourcesRequired;
  interface ISVGElement;
  interface ISVGRect;
  interface ISVGMatrix;
  interface ISVGStringList;
  interface ISVGAnimatedRect;
  interface ISVGAnimatedString;
  interface ISVGAnimatedBoolean;
  interface ISVGAnimatedTransformList;
  interface ISVGAnimatedPreserveAspectRatio;
  [odl, oleautomation, dual, uuid (305104da-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGStylable : IDispatch {
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] HRESULT className ([retval, out] ISVGAnimatedString **p);
  };
  [odl, oleautomation, dual, uuid (305104db-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGLocatable : IDispatch {
    [propget, id (DISPID_ISVGLOCATABLE_NEARESTVIEWPORTELEMENT)] HRESULT nearestViewportElement ([retval, out] ISVGElement **p);
    [propget, id (DISPID_ISVGLOCATABLE_FARTHESTVIEWPORTELEMENT)] HRESULT farthestViewportElement ([retval, out] ISVGElement **p);
    [id (DISPID_ISVGLOCATABLE_GETBBOX)] HRESULT getBBox ([retval, out] ISVGRect **ppResult);
    [id (DISPID_ISVGLOCATABLE_GETCTM)] HRESULT getCTM ([retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGLOCATABLE_GETSCREENCTM)] HRESULT getScreenCTM ([retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGLOCATABLE_GETTRANSFORMTOELEMENT)] HRESULT getTransformToElement ([in] ISVGElement *pElement,[retval, out] ISVGMatrix **ppResult);
  };
  [odl, oleautomation, dual, uuid (305104dc-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGTransformable : IDispatch {
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] HRESULT transform ([retval, out] ISVGAnimatedTransformList **p);
  };
  [odl, oleautomation, dual, uuid (305104dd-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGTests : IDispatch {
    [propget, id (DISPID_ISVGTESTS_REQUIREDFEATURES)] HRESULT requiredFeatures ([retval, out] ISVGStringList **p);
    [propget, id (DISPID_ISVGTESTS_REQUIREDEXTENSIONS)] HRESULT requiredExtensions ([retval, out] ISVGStringList **p);
    [propget, id (DISPID_ISVGTESTS_SYSTEMLANGUAGE)] HRESULT systemLanguage ([retval, out] ISVGStringList **p);
    [id (DISPID_ISVGTESTS_HASEXTENSION)] HRESULT hasExtension ([in] BSTR extension,[retval, out] VARIANT_BOOL *pResult);
  };
  [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 ([retval, out] BSTR *p);
    [propput, id (DISPID_ISVGLANGSPACE_XMLSPACE)] HRESULT xmlspace ([in] BSTR v);
    [propget, id (DISPID_ISVGLANGSPACE_XMLSPACE)] HRESULT xmlspace ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305104df-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGExternalResourcesRequired : IDispatch {
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] HRESULT externalResourcesRequired ([retval, out] ISVGAnimatedBoolean **p);
  };
  [odl, oleautomation, dual, uuid (305104e0-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGFitToViewBox : IDispatch {
    [propget, id (DISPID_ISVGFITTOVIEWBOX_VIEWBOX)] HRESULT viewBox ([retval, out] ISVGAnimatedRect **p);
    [propputref, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] HRESULT preserveAspectRatio ([in] ISVGAnimatedPreserveAspectRatio *v);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] HRESULT preserveAspectRatio ([retval, out] ISVGAnimatedPreserveAspectRatio **p);
  };
  [odl, oleautomation, dual, uuid (305104e1-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGZoomAndPan : IDispatch {
    [propget, id (DISPID_ISVGZOOMANDPAN_ZOOMANDPAN)] HRESULT zoomAndPan ([retval, out] short *p);
  };
  [odl, oleautomation, dual, uuid (305104e3-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGURIReference : IDispatch {
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] HRESULT href ([retval, out] ISVGAnimatedString **p);
  };
  interface ISVGAngle;
  [odl, oleautomation, dual, uuid (305104d4-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedAngle : IDispatch {
    [propputref, id (DISPID_ISVGANIMATEDANGLE_BASEVAL)] HRESULT baseVal ([in] ISVGAngle *v);
    [propget, id (DISPID_ISVGANIMATEDANGLE_BASEVAL)] HRESULT baseVal ([retval, out] ISVGAngle **p);
    [propputref, id (DISPID_ISVGANIMATEDANGLE_ANIMVAL)] HRESULT animVal ([in] ISVGAngle *v);
    [propget, id (DISPID_ISVGANIMATEDANGLE_ANIMVAL)] HRESULT animVal ([retval, out] ISVGAngle **p);
  };
  [noncreatable, uuid (305105e4-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedAngle {
    [default] interface ISVGAnimatedAngle;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedAngle;")
  interface ISVGTransformList;
  [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 ([retval, out] ISVGTransformList **p);
    [propputref, id (DISPID_ISVGANIMATEDTRANSFORMLIST_ANIMVAL)] HRESULT animVal ([in] ISVGTransformList *v);
    [propget, id (DISPID_ISVGANIMATEDTRANSFORMLIST_ANIMVAL)] HRESULT animVal ([retval, out] ISVGTransformList **p);
  };
  [noncreatable, uuid (305105b1-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedTransformList {
    [default] interface ISVGAnimatedTransformList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedTransformList;")
  [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 ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ISVGANIMATEDBOOLEAN_ANIMVAL)] HRESULT animVal ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ISVGANIMATEDBOOLEAN_ANIMVAL)] HRESULT animVal ([retval, out] VARIANT_BOOL *p);
  };
  [noncreatable, uuid (3051058b-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedBoolean {
    [default] interface ISVGAnimatedBoolean;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedBoolean;")
  [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 ([retval, out] USHORT *p);
    [propput, id (DISPID_ISVGANIMATEDENUMERATION_ANIMVAL)] HRESULT animVal ([in] USHORT v);
    [propget, id (DISPID_ISVGANIMATEDENUMERATION_ANIMVAL)] HRESULT animVal ([retval, out] USHORT *p);
  };
  [noncreatable, uuid (3051058e-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedEnumeration {
    [default] interface ISVGAnimatedEnumeration;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedEnumeration;")
  [odl, oleautomation, dual, uuid (305104ca-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedInteger : IDispatch {
    [propput, id (DISPID_ISVGANIMATEDINTEGER_BASEVAL)] HRESULT baseVal ([in] long v);
    [propget, id (DISPID_ISVGANIMATEDINTEGER_BASEVAL)] HRESULT baseVal ([retval, out] long *p);
    [propput, id (DISPID_ISVGANIMATEDINTEGER_ANIMVAL)] HRESULT animVal ([in] long v);
    [propget, id (DISPID_ISVGANIMATEDINTEGER_ANIMVAL)] HRESULT animVal ([retval, out] long *p);
  };
  [noncreatable, uuid (3051058f-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedInteger {
    [default] interface ISVGAnimatedInteger;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedInteger;")
  interface ISVGLength;
  [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 ([retval, out] ISVGLength **p);
    [propputref, id (DISPID_ISVGANIMATEDLENGTH_ANIMVAL)] HRESULT animVal ([in] ISVGLength *v);
    [propget, id (DISPID_ISVGANIMATEDLENGTH_ANIMVAL)] HRESULT animVal ([retval, out] ISVGLength **p);
  };
  [noncreatable, uuid (30510581-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedLength {
    [default] interface ISVGAnimatedLength;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedLength;")
  interface ISVGLengthList;
  [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 ([retval, out] ISVGLengthList **p);
    [propputref, id (DISPID_ISVGANIMATEDLENGTHLIST_ANIMVAL)] HRESULT animVal ([in] ISVGLengthList *v);
    [propget, id (DISPID_ISVGANIMATEDLENGTHLIST_ANIMVAL)] HRESULT animVal ([retval, out] ISVGLengthList **p);
  };
  [noncreatable, uuid (30510582-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedLengthList {
    [default] interface ISVGAnimatedLengthList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedLengthList;")
  interface ISVGNumber;
  [odl, oleautomation, dual, uuid (305104cc-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedNumber : IDispatch {
    [propput, id (DISPID_ISVGANIMATEDNUMBER_BASEVAL)] HRESULT baseVal ([in] float v);
    [propget, id (DISPID_ISVGANIMATEDNUMBER_BASEVAL)] HRESULT baseVal ([retval, out] float *p);
    [propput, id (DISPID_ISVGANIMATEDNUMBER_ANIMVAL)] HRESULT animVal ([in] float v);
    [propget, id (DISPID_ISVGANIMATEDNUMBER_ANIMVAL)] HRESULT animVal ([retval, out] float *p);
  };
  [noncreatable, uuid (30510588-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedNumber {
    [default] interface ISVGAnimatedNumber;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedNumber;")
  interface ISVGNumberList;
  [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 ([retval, out] ISVGNumberList **p);
    [propputref, id (DISPID_ISVGANIMATEDNUMBERLIST_ANIMVAL)] HRESULT animVal ([in] ISVGNumberList *v);
    [propget, id (DISPID_ISVGANIMATEDNUMBERLIST_ANIMVAL)] HRESULT animVal ([retval, out] ISVGNumberList **p);
  };
  [noncreatable, uuid (3051058a-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedNumberList {
    [default] interface ISVGAnimatedNumberList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedNumberList;")
  interface ISVGRect;
  [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 ([retval, out] ISVGRect **p);
    [propputref, id (DISPID_ISVGANIMATEDRECT_ANIMVAL)] HRESULT animVal ([in] ISVGRect *v);
    [propget, id (DISPID_ISVGANIMATEDRECT_ANIMVAL)] HRESULT animVal ([retval, out] ISVGRect **p);
  };
  [noncreatable, uuid (30510586-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedRect {
    [default] interface ISVGAnimatedRect;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedRect;")
  [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 ([retval, out] BSTR *p);
    [propget, id (DISPID_ISVGANIMATEDSTRING_ANIMVAL)] HRESULT animVal ([retval, out] BSTR *p);
  };
  [noncreatable, uuid (3051058c-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedString {
    [default] interface ISVGAnimatedString;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedString;")
  [odl, oleautomation, dual, uuid (3051052d-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGClipPathElement : IDispatch {
    [propputref, id (DISPID_ISVGCLIPPATHELEMENT_CLIPPATHUNITS)] HRESULT clipPathUnits ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGCLIPPATHELEMENT_CLIPPATHUNITS)] HRESULT clipPathUnits ([retval, out] ISVGAnimatedEnumeration **p);
  };
  [hidden, uuid (3059003b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGClipPathElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGCLIPPATHELEMENT_CLIPPATHUNITS)] void clipPathUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGCLIPPATHELEMENT_CLIPPATHUNITS)] ISVGAnimatedEnumeration *clipPathUnits ();
    [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 ();
    [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);
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [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);
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
  };
  [noncreatable, uuid (305105e6-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGClipPathElement {
    [default] dispinterface DispSVGClipPathElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGClipPathElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGLocatable;
    interface ISVGTransformable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGClipPathElement;")
  [odl, oleautomation, dual, uuid (305104e6-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGDocument : IDispatch {
    [propget, id (DISPID_ISVGDOCUMENT_ROOTELEMENT)] HRESULT rootElement ([retval, out] ISVGSVGElement **p);
  };
  [odl, oleautomation, dual, uuid (305105ab-98b5-11cf-bb82-00aa00bdce0b)] interface IGetSVGDocument : IDispatch {
    [id (DISPID_IGETSVGDOCUMENT_GETSVGDOCUMENT)] HRESULT getSVGDocument ([retval, out] IDispatch **ppSVGDocument);
  };
  typedef enum _svgFocusable {
    svgFocusableNotSet = 0,
    svgFocusableAuto = 1,
    svgFocusableTrue = 2,
    svgFocusableFalse = 3,
    svgFocusable_Max = 0x7FFFFFFF
  } svgFocusable;
  interface ISVGSVGElement;
  [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 ([retval, out] BSTR *p);
    [propputref, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] HRESULT ownerSVGElement ([in] ISVGSVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_OWNERSVGELEMENT)] HRESULT ownerSVGElement ([retval, out] ISVGSVGElement **p);
    [propputref, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] HRESULT viewportElement ([in] ISVGElement *v);
    [propget, id (DISPID_ISVGELEMENT_VIEWPORTELEMENT)] HRESULT viewportElement ([retval, out] ISVGElement **p);
    [propputref, id (DISPID_ISVGELEMENT_FOCUSABLE)] HRESULT focusable ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGELEMENT_FOCUSABLE)] HRESULT focusable ([retval, out] ISVGAnimatedEnumeration **p);
  };
  [hidden, uuid (30590000-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGElement {
    properties:
    methods:
    [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 ();
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
  };
  [noncreatable, uuid (30510564-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGElement {
    [default] dispinterface DispSVGElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGElement;
    interface IHTMLElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGElement;")
  [odl, oleautomation, dual, uuid (305104d6-98b5-11cf-bb82-00aa00bdce0b)] interface IICCSVGColor : IDispatch {
  };
  typedef enum _svgLengthType {
    SVG_LENGTHTYPE_UNKNOWN = 0,
    SVG_LENGTHTYPE_NUMBER = 1,
    SVG_LENGTHTYPE_PERCENTAGE = 2,
    SVG_LENGTHTYPE_EMS = 3,
    SVG_LENGTHTYPE_EXS = 4,
    SVG_LENGTHTYPE_PX = 5,
    SVG_LENGTHTYPE_CM = 6,
    SVG_LENGTHTYPE_MM = 7,
    SVG_LENGTHTYPE_IN = 8,
    SVG_LENGTHTYPE_PT = 9,
    SVG_LENGTHTYPE_PC = 10,
    svgLengthType_Max = 0x7FFFFFFF
  } svgLengthType;
  [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 ([retval, out] short *p);
    [propput, id (DISPID_ISVGLENGTH_VALUE)] HRESULT value ([in] float v);
    [propget, id (DISPID_ISVGLENGTH_VALUE)] HRESULT value ([retval, out] float *p);
    [propput, id (DISPID_ISVGLENGTH_VALUEINSPECIFIEDUNITS)] HRESULT valueInSpecifiedUnits ([in] float v);
    [propget, id (DISPID_ISVGLENGTH_VALUEINSPECIFIEDUNITS)] HRESULT valueInSpecifiedUnits ([retval, out] float *p);
    [propput, id (DISPID_ISVGLENGTH_VALUEASSTRING)] HRESULT valueAsString ([in] BSTR v);
    [propget, id (DISPID_ISVGLENGTH_VALUEASSTRING)] HRESULT valueAsString ([retval, out] BSTR *p);
    [id (DISPID_ISVGLENGTH_NEWVALUESPECIFIEDUNITS)] HRESULT newValueSpecifiedUnits ([in] short unitType,[in] float valueInSpecifiedUnits);
    [id (DISPID_ISVGLENGTH_CONVERTTOSPECIFIEDUNITS)] HRESULT convertToSpecifiedUnits ([in] short unitType);
  };
  [noncreatable, uuid (3051057e-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGLength {
    [default] interface ISVGLength;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGLength;")
  interface ISVGLength;
  [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 ([retval, out] long *p);
    [id (DISPID_ISVGLENGTHLIST_CLEAR)] HRESULT clear ();
    [id (DISPID_ISVGLENGTHLIST_INITIALIZE)] HRESULT initialize ([in] ISVGLength *newItem,[retval, out] ISVGLength **ppResult);
    [id (DISPID_ISVGLENGTHLIST_GETITEM)] HRESULT getItem ([in] long index,[retval, out] ISVGLength **ppResult);
    [id (DISPID_ISVGLENGTHLIST_INSERTITEMBEFORE)] HRESULT insertItemBefore ([in] ISVGLength *newItem,[in] long index,[retval, out] ISVGLength **ppResult);
    [id (DISPID_ISVGLENGTHLIST_REPLACEITEM)] HRESULT replaceItem ([in] ISVGLength *newItem,[in] long index,[retval, out] ISVGLength **ppResult);
    [id (DISPID_ISVGLENGTHLIST_REMOVEITEM)] HRESULT removeItem ([in] long index,[retval, out] ISVGLength **ppResult);
    [id (DISPID_ISVGLENGTHLIST_APPENDITEM)] HRESULT appendItem ([in] ISVGLength *newItem,[retval, out] ISVGLength **ppResult);
  };
  [noncreatable, uuid (30510580-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGLengthList {
    [default] interface ISVGLengthList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGLengthList;")
  [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 ([retval, out] float *p);
    [propput, id (DISPID_ISVGMATRIX_B)] HRESULT b ([in] float v);
    [propget, id (DISPID_ISVGMATRIX_B)] HRESULT b ([retval, out] float *p);
    [propput, id (DISPID_ISVGMATRIX_C)] HRESULT c ([in] float v);
    [propget, id (DISPID_ISVGMATRIX_C)] HRESULT c ([retval, out] float *p);
    [propput, id (DISPID_ISVGMATRIX_D)] HRESULT d ([in] float v);
    [propget, id (DISPID_ISVGMATRIX_D)] HRESULT d ([retval, out] float *p);
    [propput, id (DISPID_ISVGMATRIX_E)] HRESULT e ([in] float v);
    [propget, id (DISPID_ISVGMATRIX_E)] HRESULT e ([retval, out] float *p);
    [propput, id (DISPID_ISVGMATRIX_F)] HRESULT f ([in] float v);
    [propget, id (DISPID_ISVGMATRIX_F)] HRESULT f ([retval, out] float *p);
    [id (DISPID_ISVGMATRIX_MULTIPLY)] HRESULT multiply ([in] ISVGMatrix *secondMatrix,[retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_INVERSE)] HRESULT inverse ([retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_TRANSLATE)] HRESULT translate ([in] float x,[in] float y,[retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_SCALE)] HRESULT scale ([in] float scaleFactor,[retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_SCALENONUNIFORM)] HRESULT scaleNonUniform ([in] float scaleFactorX,[in] float scaleFactorY,[retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_ROTATE)] HRESULT rotate ([in] float angle,[retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_ROTATEFROMVECTOR)] HRESULT rotateFromVector ([in] float x,[in] float y,[retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_FLIPX)] HRESULT flipX ([retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_FLIPY)] HRESULT flipY ([retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_SKEWX)] HRESULT skewX ([in] float angle,[retval, out] ISVGMatrix **ppResult);
    [id (DISPID_ISVGMATRIX_SKEWY)] HRESULT skewY ([in] float angle,[retval, out] ISVGMatrix **ppResult);
  };
  [noncreatable, uuid (305105ae-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGMatrix {
    [default] interface ISVGMatrix;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGMatrix;")
  [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 ([retval, out] float *p);
  };
  [noncreatable, uuid (30510587-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGNumber {
    [default] interface ISVGNumber;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGNumber;")
  interface ISVGNumber;
  [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 ([retval, out] long *p);
    [id (DISPID_ISVGNUMBERLIST_CLEAR)] HRESULT clear ();
    [id (DISPID_ISVGNUMBERLIST_INITIALIZE)] HRESULT initialize ([in] ISVGNumber *newItem,[retval, out] ISVGNumber **ppResult);
    [id (DISPID_ISVGNUMBERLIST_GETITEM)] HRESULT getItem ([in] long index,[retval, out] ISVGNumber **ppResult);
    [id (DISPID_ISVGNUMBERLIST_INSERTITEMBEFORE)] HRESULT insertItemBefore ([in] ISVGNumber *newItem,[in] long index,[retval, out] ISVGNumber **ppResult);
    [id (DISPID_ISVGNUMBERLIST_REPLACEITEM)] HRESULT replaceItem ([in] ISVGNumber *newItem,[in] long index,[retval, out] ISVGNumber **ppResult);
    [id (DISPID_ISVGNUMBERLIST_REMOVEITEM)] HRESULT removeItem ([in] long index,[retval, out] ISVGNumber **ppResult);
    [id (DISPID_ISVGNUMBERLIST_APPENDITEM)] HRESULT appendItem ([in] ISVGNumber *newItem,[retval, out] ISVGNumber **ppResult);
  };
  [noncreatable, uuid (30510589-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGNumberList {
    [default] interface ISVGNumberList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGNumberList;")
  [odl, oleautomation, dual, uuid (30510524-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPaint : IDispatch {
  };
  [odl, oleautomation, dual, uuid (3051052c-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPatternElement : IDispatch {
    [propputref, id (DISPID_ISVGPATTERNELEMENT_PATTERNUNITS)] HRESULT patternUnits ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_PATTERNUNITS)] HRESULT patternUnits ([retval, out] ISVGAnimatedEnumeration **p);
    [propputref, id (DISPID_ISVGPATTERNELEMENT_PATTERNCONTENTUNITS)] HRESULT patternContentUnits ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_PATTERNCONTENTUNITS)] HRESULT patternContentUnits ([retval, out] ISVGAnimatedEnumeration **p);
    [propputref, id (DISPID_ISVGPATTERNELEMENT_PATTERNTRANSFORM)] HRESULT patternTransform ([in] ISVGAnimatedTransformList *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_PATTERNTRANSFORM)] HRESULT patternTransform ([retval, out] ISVGAnimatedTransformList **p);
    [propputref, id (DISPID_ISVGPATTERNELEMENT_X)] HRESULT x ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_X)] HRESULT x ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGPATTERNELEMENT_Y)] HRESULT y ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_Y)] HRESULT y ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGPATTERNELEMENT_WIDTH)] HRESULT width ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_WIDTH)] HRESULT width ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGPATTERNELEMENT_HEIGHT)] HRESULT height ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_HEIGHT)] HRESULT height ([retval, out] ISVGAnimatedLength **p);
  };
  [hidden, uuid (3059002c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPatternElement {
    properties:
    methods:
    [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 ();
    [propputref, id (DISPID_ISVGPATTERNELEMENT_PATTERNUNITS)] void patternUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_PATTERNUNITS)] ISVGAnimatedEnumeration *patternUnits ();
    [propputref, id (DISPID_ISVGPATTERNELEMENT_PATTERNCONTENTUNITS)] void patternContentUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_PATTERNCONTENTUNITS)] ISVGAnimatedEnumeration *patternContentUnits ();
    [propputref, id (DISPID_ISVGPATTERNELEMENT_PATTERNTRANSFORM)] void patternTransform (ISVGAnimatedTransformList *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_PATTERNTRANSFORM)] ISVGAnimatedTransformList *patternTransform ();
    [propputref, id (DISPID_ISVGPATTERNELEMENT_X)] void x (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_X)] ISVGAnimatedLength *x ();
    [propputref, id (DISPID_ISVGPATTERNELEMENT_Y)] void y (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_Y)] ISVGAnimatedLength *y ();
    [propputref, id (DISPID_ISVGPATTERNELEMENT_WIDTH)] void width (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_WIDTH)] ISVGAnimatedLength *width ();
    [propputref, id (DISPID_ISVGPATTERNELEMENT_HEIGHT)] void height (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGPATTERNELEMENT_HEIGHT)] ISVGAnimatedLength *height ();
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
    [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);
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGFITTOVIEWBOX_VIEWBOX)] ISVGAnimatedRect *viewBox ();
    [propputref, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] void preserveAspectRatio (ISVGAnimatedPreserveAspectRatio *v);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] ISVGAnimatedPreserveAspectRatio *preserveAspectRatio ();
  };
  [noncreatable, uuid (305105d4-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPatternElement {
    [default] dispinterface DispSVGPatternElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGElement;
    interface ISVGPatternElement;
    interface ISVGURIReference;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGFitToViewBox;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPatternElement;")
  typedef enum _svgPathSegType {
    PATHSEG_UNKNOWN = 0,
    PATHSEG_CLOSEPATH = 1,
    PATHSEG_MOVETO_ABS = 2,
    PATHSEG_MOVETO_REL = 3,
    PATHSEG_LINETO_ABS = 4,
    PATHSEG_LINETO_REL = 5,
    PATHSEG_CURVETO_CUBIC_ABS = 6,
    PATHSEG_CURVETO_CUBIC_REL = 7,
    PATHSEG_CURVETO_QUADRATIC_ABS = 8,
    PATHSEG_CURVETO_QUADRATIC_REL = 9,
    PATHSEG_ARC_ABS = 10,
    PATHSEG_ARC_REL = 11,
    PATHSEG_LINETO_HORIZONTAL_ABS = 12,
    PATHSEG_LINETO_HORIZONTAL_REL = 13,
    PATHSEG_LINETO_VERTICAL_ABS = 14,
    PATHSEG_LINETO_VERTICAL_REL = 15,
    PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16,
    PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17,
    PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18,
    PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19,
    svgPathSegType_Max = 0x7FFFFFFF
  } svgPathSegType;
  [odl, oleautomation, dual, uuid (305104fc-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSeg : IDispatch {
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] HRESULT pathSegType ([in] short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] HRESULT pathSegType ([retval, out] short *p);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] HRESULT pathSegTypeAsLetter ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510506-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegArcAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGARCABS_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCABS_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCABS_R1)] HRESULT r1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_R1)] HRESULT r1 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCABS_R2)] HRESULT r2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_R2)] HRESULT r2 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCABS_ANGLE)] HRESULT angle ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_ANGLE)] HRESULT angle ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCABS_LARGEARCFLAG)] HRESULT largeArcFlag ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_LARGEARCFLAG)] HRESULT largeArcFlag ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ISVGPATHSEGARCABS_SWEEPFLAG)] HRESULT sweepFlag ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_SWEEPFLAG)] HRESULT sweepFlag ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (30510507-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegArcRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGARCREL_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCREL_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCREL_R1)] HRESULT r1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_R1)] HRESULT r1 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCREL_R2)] HRESULT r2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_R2)] HRESULT r2 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCREL_ANGLE)] HRESULT angle ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_ANGLE)] HRESULT angle ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGARCREL_LARGEARCFLAG)] HRESULT largeArcFlag ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_LARGEARCFLAG)] HRESULT largeArcFlag ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ISVGPATHSEGARCREL_SWEEPFLAG)] HRESULT sweepFlag ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_SWEEPFLAG)] HRESULT sweepFlag ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (305104fd-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegClosePath : IDispatch {
  };
  [odl, oleautomation, dual, uuid (305104fe-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegMovetoAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGMOVETOABS_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGMOVETOABS_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGMOVETOABS_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGMOVETOABS_Y)] HRESULT y ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (305104ff-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegMovetoRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGMOVETOREL_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGMOVETOREL_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGMOVETOREL_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGMOVETOREL_Y)] HRESULT y ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (30510500-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegLinetoAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGLINETOABS_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOABS_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGLINETOABS_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOABS_Y)] HRESULT y ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (30510501-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegLinetoRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGLINETOREL_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOREL_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGLINETOREL_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOREL_Y)] HRESULT y ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (30510502-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegCurvetoCubicAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X1)] HRESULT x1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X1)] HRESULT x1 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y1)] HRESULT y1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y1)] HRESULT y1 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X2)] HRESULT x2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X2)] HRESULT x2 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y2)] HRESULT y2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y2)] HRESULT y2 ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (30510503-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegCurvetoCubicRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X1)] HRESULT x1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X1)] HRESULT x1 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y1)] HRESULT y1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y1)] HRESULT y1 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X2)] HRESULT x2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X2)] HRESULT x2 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y2)] HRESULT y2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y2)] HRESULT y2 ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (3051050c-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegCurvetoCubicSmoothAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_X2)] HRESULT x2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_X2)] HRESULT x2 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_Y2)] HRESULT y2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_Y2)] HRESULT y2 ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (3051050d-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegCurvetoCubicSmoothRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_X2)] HRESULT x2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_X2)] HRESULT x2 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_Y2)] HRESULT y2 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_Y2)] HRESULT y2 ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (30510504-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegCurvetoQuadraticAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_X1)] HRESULT x1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_X1)] HRESULT x1 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_Y1)] HRESULT y1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_Y1)] HRESULT y1 ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (30510505-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegCurvetoQuadraticRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_X1)] HRESULT x1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_X1)] HRESULT x1 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_Y1)] HRESULT y1 ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_Y1)] HRESULT y1 ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (3051050e-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegCurvetoQuadraticSmoothAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHABS_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHABS_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHABS_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHABS_Y)] HRESULT y ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (3051050f-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegCurvetoQuadraticSmoothRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHREL_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHREL_X)] HRESULT x ([retval, out] float *p);
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHREL_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHREL_Y)] HRESULT y ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (30510508-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegLinetoHorizontalAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGLINETOHORIZONTALABS_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOHORIZONTALABS_X)] HRESULT x ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (30510509-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegLinetoHorizontalRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGLINETOHORIZONTALREL_X)] HRESULT x ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOHORIZONTALREL_X)] HRESULT x ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (3051050a-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegLinetoVerticalAbs : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGLINETOVERTICALABS_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOVERTICALABS_Y)] HRESULT y ([retval, out] float *p);
  };
  [odl, oleautomation, dual, uuid (3051050b-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegLinetoVerticalRel : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGLINETOVERTICALREL_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOVERTICALREL_Y)] HRESULT y ([retval, out] float *p);
  };
  [noncreatable, uuid (305105b3-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSeg {
    [default] interface ISVGPathSeg;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSeg;")
  [hidden, uuid (30590013-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegArcAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGARCABS_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGARCABS_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_Y)] float y ();
    [propput, id (DISPID_ISVGPATHSEGARCABS_R1)] void r1 (float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_R1)] float r1 ();
    [propput, id (DISPID_ISVGPATHSEGARCABS_R2)] void r2 (float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_R2)] float r2 ();
    [propput, id (DISPID_ISVGPATHSEGARCABS_ANGLE)] void angle (float v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_ANGLE)] float angle ();
    [propput, id (DISPID_ISVGPATHSEGARCABS_LARGEARCFLAG)] void largeArcFlag (VARIANT_BOOL v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_LARGEARCFLAG)] VARIANT_BOOL largeArcFlag ();
    [propput, id (DISPID_ISVGPATHSEGARCABS_SWEEPFLAG)] void sweepFlag (VARIANT_BOOL v);
    [propget, id (DISPID_ISVGPATHSEGARCABS_SWEEPFLAG)] VARIANT_BOOL sweepFlag ();
  };
  [noncreatable, uuid (305105bb-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegArcAbs {
    [default] dispinterface DispSVGPathSegArcAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegArcAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegArcAbs;")
  [hidden, uuid (30590014-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegArcRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGARCREL_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGARCREL_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_Y)] float y ();
    [propput, id (DISPID_ISVGPATHSEGARCREL_R1)] void r1 (float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_R1)] float r1 ();
    [propput, id (DISPID_ISVGPATHSEGARCREL_R2)] void r2 (float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_R2)] float r2 ();
    [propput, id (DISPID_ISVGPATHSEGARCREL_ANGLE)] void angle (float v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_ANGLE)] float angle ();
    [propput, id (DISPID_ISVGPATHSEGARCREL_LARGEARCFLAG)] void largeArcFlag (VARIANT_BOOL v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_LARGEARCFLAG)] VARIANT_BOOL largeArcFlag ();
    [propput, id (DISPID_ISVGPATHSEGARCREL_SWEEPFLAG)] void sweepFlag (VARIANT_BOOL v);
    [propget, id (DISPID_ISVGPATHSEGARCREL_SWEEPFLAG)] VARIANT_BOOL sweepFlag ();
  };
  [noncreatable, uuid (305105bc-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegArcRel {
    [default] dispinterface DispSVGPathSegArcRel;
    interface ISVGPathSeg;
    interface ISVGPathSegArcRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegArcRel;")
  [hidden, uuid (30590015-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegClosePath {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
  };
  [noncreatable, uuid (305105bd-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegClosePath {
    [default] dispinterface DispSVGPathSegClosePath;
    interface ISVGPathSeg;
    interface ISVGPathSegClosePath;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegClosePath;")
  [hidden, uuid (30590024-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegMovetoAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGMOVETOABS_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGMOVETOABS_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGMOVETOABS_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGMOVETOABS_Y)] float y ();
  };
  [noncreatable, uuid (305105cc-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegMovetoAbs {
    [default] dispinterface DispSVGPathSegMovetoAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegMovetoAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegMovetoAbs;")
  [hidden, uuid (30590025-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegMovetoRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGMOVETOREL_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGMOVETOREL_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGMOVETOREL_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGMOVETOREL_Y)] float y ();
  };
  [noncreatable, uuid (305105cd-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegMovetoRel {
    [default] dispinterface DispSVGPathSegMovetoRel;
    interface ISVGPathSeg;
    interface ISVGPathSegMovetoRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegMovetoRel;")
  [hidden, uuid (3059001e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegLinetoAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGLINETOABS_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOABS_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGLINETOABS_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOABS_Y)] float y ();
  };
  [noncreatable, uuid (305105c6-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegLinetoAbs {
    [default] dispinterface DispSVGPathSegLinetoAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegLinetoAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegLinetoAbs;")
  [hidden, uuid (30590021-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegLinetoRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGLINETOREL_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOREL_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGLINETOREL_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOREL_Y)] float y ();
  };
  [noncreatable, uuid (305105c9-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegLinetoRel {
    [default] dispinterface DispSVGPathSegLinetoRel;
    interface ISVGPathSeg;
    interface ISVGPathSegLinetoRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegLinetoRel;")
  [hidden, uuid (30590016-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegCurvetoCubicAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y)] float y ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X1)] void x1 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X1)] float x1 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y1)] void y1 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y1)] float y1 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X2)] void x2 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_X2)] float x2 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y2)] void y2 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICABS_Y2)] float y2 ();
  };
  [noncreatable, uuid (305105be-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegCurvetoCubicAbs {
    [default] dispinterface DispSVGPathSegCurvetoCubicAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegCurvetoCubicAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegCurvetoCubicAbs;")
  [hidden, uuid (30590017-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegCurvetoCubicRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y)] float y ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X1)] void x1 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X1)] float x1 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y1)] void y1 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y1)] float y1 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X2)] void x2 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_X2)] float x2 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y2)] void y2 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICREL_Y2)] float y2 ();
  };
  [noncreatable, uuid (305105bf-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegCurvetoCubicRel {
    [default] dispinterface DispSVGPathSegCurvetoCubicRel;
    interface ISVGPathSeg;
    interface ISVGPathSegCurvetoCubicRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegCurvetoCubicRel;")
  [hidden, uuid (30590018-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegCurvetoCubicSmoothAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_Y)] float y ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_X2)] void x2 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_X2)] float x2 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_Y2)] void y2 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHABS_Y2)] float y2 ();
  };
  [noncreatable, uuid (305105c0-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegCurvetoCubicSmoothAbs {
    [default] dispinterface DispSVGPathSegCurvetoCubicSmoothAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegCurvetoCubicSmoothAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegCurvetoCubicSmoothAbs;")
  [hidden, uuid (30590019-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegCurvetoCubicSmoothRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_Y)] float y ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_X2)] void x2 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_X2)] float x2 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_Y2)] void y2 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOCUBICSMOOTHREL_Y2)] float y2 ();
  };
  [noncreatable, uuid (305105c1-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegCurvetoCubicSmoothRel {
    [default] dispinterface DispSVGPathSegCurvetoCubicSmoothRel;
    interface ISVGPathSeg;
    interface ISVGPathSegCurvetoCubicSmoothRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegCurvetoCubicSmoothRel;")
  [hidden, uuid (3059001a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegCurvetoQuadraticAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_Y)] float y ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_X1)] void x1 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_X1)] float x1 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_Y1)] void y1 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICABS_Y1)] float y1 ();
  };
  [noncreatable, uuid (305105c2-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegCurvetoQuadraticAbs {
    [default] dispinterface DispSVGPathSegCurvetoQuadraticAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegCurvetoQuadraticAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegCurvetoQuadraticAbs;")
  [hidden, uuid (3059001b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegCurvetoQuadraticRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_Y)] float y ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_X1)] void x1 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_X1)] float x1 ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_Y1)] void y1 (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICREL_Y1)] float y1 ();
  };
  [noncreatable, uuid (305105c3-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegCurvetoQuadraticRel {
    [default] dispinterface DispSVGPathSegCurvetoQuadraticRel;
    interface ISVGPathSeg;
    interface ISVGPathSegCurvetoQuadraticRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegCurvetoQuadraticRel;")
  [hidden, uuid (3059001c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegCurvetoQuadraticSmoothAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHABS_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHABS_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHABS_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHABS_Y)] float y ();
  };
  [noncreatable, uuid (305105c4-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegCurvetoQuadraticSmoothAbs {
    [default] dispinterface DispSVGPathSegCurvetoQuadraticSmoothAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegCurvetoQuadraticSmoothAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegCurvetoQuadraticSmoothAbs;")
  [hidden, uuid (3059001d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegCurvetoQuadraticSmoothRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHREL_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHREL_X)] float x ();
    [propput, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHREL_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGCURVETOQUADRATICSMOOTHREL_Y)] float y ();
  };
  [noncreatable, uuid (305105c5-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegCurvetoQuadraticSmoothRel {
    [default] dispinterface DispSVGPathSegCurvetoQuadraticSmoothRel;
    interface ISVGPathSeg;
    interface ISVGPathSegCurvetoQuadraticSmoothRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegCurvetoQuadraticSmoothRel;")
  [hidden, uuid (3059001f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegLinetoHorizontalAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGLINETOHORIZONTALABS_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOHORIZONTALABS_X)] float x ();
  };
  [noncreatable, uuid (305105c7-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegLinetoHorizontalAbs {
    [default] dispinterface DispSVGPathSegLinetoHorizontalAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegLinetoHorizontalAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegLinetoHorizontalAbs;")
  [hidden, uuid (30590020-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegLinetoHorizontalRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGLINETOHORIZONTALREL_X)] void x (float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOHORIZONTALREL_X)] float x ();
  };
  [noncreatable, uuid (305105c8-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegLinetoHorizontalRel {
    [default] dispinterface DispSVGPathSegLinetoHorizontalRel;
    interface ISVGPathSeg;
    interface ISVGPathSegLinetoHorizontalRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegLinetoHorizontalRel;")
  [hidden, uuid (30590022-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegLinetoVerticalAbs {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGLINETOVERTICALABS_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOVERTICALABS_Y)] float y ();
  };
  [noncreatable, uuid (305105ca-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegLinetoVerticalAbs {
    [default] dispinterface DispSVGPathSegLinetoVerticalAbs;
    interface ISVGPathSeg;
    interface ISVGPathSegLinetoVerticalAbs;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegLinetoVerticalAbs;")
  [hidden, uuid (30590023-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathSegLinetoVerticalRel {
    properties:
    methods:
    [propput, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] void pathSegType (short v);
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPE)] short pathSegType ();
    [propget, id (DISPID_ISVGPATHSEG_PATHSEGTYPEASLETTER)] BSTR pathSegTypeAsLetter ();
    [propput, id (DISPID_ISVGPATHSEGLINETOVERTICALREL_Y)] void y (float v);
    [propget, id (DISPID_ISVGPATHSEGLINETOVERTICALREL_Y)] float y ();
  };
  [noncreatable, uuid (305105cb-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegLinetoVerticalRel {
    [default] dispinterface DispSVGPathSegLinetoVerticalRel;
    interface ISVGPathSeg;
    interface ISVGPathSegLinetoVerticalRel;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegLinetoVerticalRel;")
  interface ISVGPathSeg;
  [odl, oleautomation, dual, uuid (30510510-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathSegList : IDispatch {
    [propput, id (DISPID_ISVGPATHSEGLIST_NUMBEROFITEMS)] HRESULT numberOfItems ([in] long v);
    [propget, id (DISPID_ISVGPATHSEGLIST_NUMBEROFITEMS)] HRESULT numberOfItems ([retval, out] long *p);
    [id (DISPID_ISVGPATHSEGLIST_CLEAR)] HRESULT clear ();
    [id (DISPID_ISVGPATHSEGLIST_INITIALIZE)] HRESULT initialize ([in] ISVGPathSeg *newItem,[retval, out] ISVGPathSeg **ppResult);
    [id (DISPID_ISVGPATHSEGLIST_GETITEM)] HRESULT getItem ([in] long index,[retval, out] ISVGPathSeg **ppResult);
    [id (DISPID_ISVGPATHSEGLIST_INSERTITEMBEFORE)] HRESULT insertItemBefore ([in] ISVGPathSeg *newItem,[in] long index,[retval, out] ISVGPathSeg **ppResult);
    [id (DISPID_ISVGPATHSEGLIST_REPLACEITEM)] HRESULT replaceItem ([in] ISVGPathSeg *newItem,[in] long index,[retval, out] ISVGPathSeg **ppResult);
    [id (DISPID_ISVGPATHSEGLIST_REMOVEITEM)] HRESULT removeItem ([in] long index,[retval, out] ISVGPathSeg **ppResult);
    [id (DISPID_ISVGPATHSEGLIST_APPENDITEM)] HRESULT appendItem ([in] ISVGPathSeg *newItem,[retval, out] ISVGPathSeg **ppResult);
  };
  [noncreatable, uuid (305105b4-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathSegList {
    [default] interface ISVGPathSegList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathSegList;")
  interface ISVGMatrix;
  [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 ([retval, out] float *p);
    [propput, id (DISPID_ISVGPOINT_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGPOINT_Y)] HRESULT y ([retval, out] float *p);
    [id (DISPID_ISVGPOINT_MATRIXTRANSFORM)] HRESULT matrixTransform ([in] ISVGMatrix *pMatrix,[retval, out] ISVGPoint **ppResult);
  };
  [noncreatable, uuid (305105ba-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPoint {
    [default] interface ISVGPoint;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPoint;")
  interface ISVGPoint;
  [odl, oleautomation, dual, uuid (305104f5-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPointList : IDispatch {
    [propput, id (DISPID_ISVGPOINTLIST_NUMBEROFITEMS)] HRESULT numberOfItems ([in] long v);
    [propget, id (DISPID_ISVGPOINTLIST_NUMBEROFITEMS)] HRESULT numberOfItems ([retval, out] long *p);
    [id (DISPID_ISVGPOINTLIST_CLEAR)] HRESULT clear ();
    [id (DISPID_ISVGPOINTLIST_INITIALIZE)] HRESULT initialize ([in] ISVGPoint *pNewItem,[retval, out] ISVGPoint **ppResult);
    [id (DISPID_ISVGPOINTLIST_GETITEM)] HRESULT getItem ([in] long index,[retval, out] ISVGPoint **ppResult);
    [id (DISPID_ISVGPOINTLIST_INSERTITEMBEFORE)] HRESULT insertItemBefore ([in] ISVGPoint *pNewItem,[in] long index,[retval, out] ISVGPoint **ppResult);
    [id (DISPID_ISVGPOINTLIST_REPLACEITEM)] HRESULT replaceItem ([in] ISVGPoint *pNewItem,[in] long index,[retval, out] ISVGPoint **ppResult);
    [id (DISPID_ISVGPOINTLIST_REMOVEITEM)] HRESULT removeItem ([in] long index,[retval, out] ISVGPoint **ppResult);
    [id (DISPID_ISVGPOINTLIST_APPENDITEM)] HRESULT appendItem ([in] ISVGPoint *pNewItem,[retval, out] ISVGPoint **ppResult);
  };
  [noncreatable, uuid (305105b9-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPointList {
    [default] interface ISVGPointList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPointList;")
  [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 ([retval, out] float *p);
    [propput, id (DISPID_ISVGRECT_Y)] HRESULT y ([in] float v);
    [propget, id (DISPID_ISVGRECT_Y)] HRESULT y ([retval, out] float *p);
    [propput, id (DISPID_ISVGRECT_WIDTH)] HRESULT width ([in] float v);
    [propget, id (DISPID_ISVGRECT_WIDTH)] HRESULT width ([retval, out] float *p);
    [propput, id (DISPID_ISVGRECT_HEIGHT)] HRESULT height ([in] float v);
    [propget, id (DISPID_ISVGRECT_HEIGHT)] HRESULT height ([retval, out] float *p);
  };
  [noncreatable, uuid (30510583-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGRect {
    [default] interface ISVGRect;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGRect;")
  [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 ([retval, out] long *p);
    [id (DISPID_ISVGSTRINGLIST_CLEAR)] HRESULT clear ();
    [id (DISPID_ISVGSTRINGLIST_INITIALIZE)] HRESULT initialize ([in] BSTR newItem,[retval, out] BSTR *ppResult);
    [id (DISPID_ISVGSTRINGLIST_GETITEM)] HRESULT getItem ([in] long index,[retval, out] BSTR *ppResult);
    [id (DISPID_ISVGSTRINGLIST_INSERTITEMBEFORE)] HRESULT insertItemBefore ([in] BSTR newItem,[in] long index,[retval, out] BSTR *ppResult);
    [id (DISPID_ISVGSTRINGLIST_REPLACEITEM)] HRESULT replaceItem ([in] BSTR newItem,[in] long index,[retval, out] BSTR *ppResult);
    [id (DISPID_ISVGSTRINGLIST_REMOVEITEM)] HRESULT removeItem ([in] long index,[retval, out] BSTR *ppResult);
    [id (DISPID_ISVGSTRINGLIST_APPENDITEM)] HRESULT appendItem ([in] BSTR newItem,[retval, out] BSTR *ppResult);
  };
  [noncreatable, uuid (3051058d-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGStringList {
    [default] interface ISVGStringList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGStringList;")
  [odl, oleautomation, dual, uuid (305104e2-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGViewSpec : IDispatch {
  };
  typedef enum _svgTransformType {
    SVG_TRANSFORM_UNKNOWN = 0,
    SVG_TRANSFORM_MATRIX = 1,
    SVG_TRANSFORM_TRANSLATE = 2,
    SVG_TRANSFORM_SCALE = 3,
    SVG_TRANSFORM_ROTATE = 4,
    SVG_TRANSFORM_SKEWX = 5,
    SVG_TRANSFORM_SKEWY = 6,
    svgTransformType_Max = 0x7FFFFFFF
  } svgTransformType;
  interface ISVGMatrix;
  [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 ([retval, out] short *p);
    [propputref, id (DISPID_ISVGTRANSFORM_MATRIX)] HRESULT matrix ([in] ISVGMatrix *v);
    [propget, id (DISPID_ISVGTRANSFORM_MATRIX)] HRESULT matrix ([retval, out] ISVGMatrix **p);
    [propput, id (DISPID_ISVGTRANSFORM_ANGLE)] HRESULT angle ([in] float v);
    [propget, id (DISPID_ISVGTRANSFORM_ANGLE)] HRESULT angle ([retval, out] 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);
  };
  [noncreatable, uuid (305105af-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGTransform {
    [default] interface ISVGTransform;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGTransform;")
  interface IHTMLElement;
  [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 ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGSVGELEMENT_Y)] HRESULT y ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGSVGELEMENT_Y)] HRESULT y ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGSVGELEMENT_WIDTH)] HRESULT width ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGSVGELEMENT_WIDTH)] HRESULT width ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGSVGELEMENT_HEIGHT)] HRESULT height ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGSVGELEMENT_HEIGHT)] HRESULT height ([retval, out] ISVGAnimatedLength **p);
    [propput, id (DISPID_ISVGSVGELEMENT_CONTENTSCRIPTTYPE)] HRESULT contentScriptType ([in] BSTR v);
    [propget, id (DISPID_ISVGSVGELEMENT_CONTENTSCRIPTTYPE)] HRESULT contentScriptType ([retval, out] BSTR *p);
    [propput, id (DISPID_ISVGSVGELEMENT_CONTENTSTYLETYPE)] HRESULT contentStyleType ([in] BSTR v);
    [propget, id (DISPID_ISVGSVGELEMENT_CONTENTSTYLETYPE)] HRESULT contentStyleType ([retval, out] BSTR *p);
    [propputref, id (DISPID_ISVGSVGELEMENT_VIEWPORT)] HRESULT viewport ([in] ISVGRect *v);
    [propget, id (DISPID_ISVGSVGELEMENT_VIEWPORT)] HRESULT viewport ([retval, out] ISVGRect **p);
    [propput, id (DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERX)] HRESULT pixelUnitToMillimeterX ([in] float v);
    [propget, id (DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERX)] HRESULT pixelUnitToMillimeterX ([retval, out] float *p);
    [propput, id (DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERY)] HRESULT pixelUnitToMillimeterY ([in] float v);
    [propget, id (DISPID_ISVGSVGELEMENT_PIXELUNITTOMILLIMETERY)] HRESULT pixelUnitToMillimeterY ([retval, out] float *p);
    [propput, id (DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERX)] HRESULT screenPixelToMillimeterX ([in] float v);
    [propget, id (DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERX)] HRESULT screenPixelToMillimeterX ([retval, out] float *p);
    [propput, id (DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERY)] HRESULT screenPixelToMillimeterY ([in] float v);
    [propget, id (DISPID_ISVGSVGELEMENT_SCREENPIXELTOMILLIMETERY)] HRESULT screenPixelToMillimeterY ([retval, out] float *p);
    [propput, id (DISPID_ISVGSVGELEMENT_USECURRENTVIEW)] HRESULT useCurrentView ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ISVGSVGELEMENT_USECURRENTVIEW)] HRESULT useCurrentView ([retval, out] VARIANT_BOOL *p);
    [propputref, id (DISPID_ISVGSVGELEMENT_CURRENTVIEW)] HRESULT currentView ([in] ISVGViewSpec *v);
    [propget, id (DISPID_ISVGSVGELEMENT_CURRENTVIEW)] HRESULT currentView ([retval, out] ISVGViewSpec **p);
    [propput, id (DISPID_ISVGSVGELEMENT_CURRENTSCALE)] HRESULT currentScale ([in] float v);
    [propget, id (DISPID_ISVGSVGELEMENT_CURRENTSCALE)] HRESULT currentScale ([retval, out] float *p);
    [propputref, id (DISPID_ISVGSVGELEMENT_CURRENTTRANSLATE)] HRESULT currentTranslate ([in] ISVGPoint *v);
    [propget, id (DISPID_ISVGSVGELEMENT_CURRENTTRANSLATE)] HRESULT currentTranslate ([retval, out] ISVGPoint **p);
    [id (DISPID_ISVGSVGELEMENT_SUSPENDREDRAW)] HRESULT suspendRedraw ([in] ULONG maxWaitMilliseconds,[retval, out] ULONG *pResult);
    [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 ([retval, out] VARIANT_BOOL *pResult);
    [id (DISPID_ISVGSVGELEMENT_GETCURRENTTIME)] HRESULT getCurrentTime ([retval, out] float *pResult);
    [id (DISPID_ISVGSVGELEMENT_SETCURRENTTIME)] HRESULT setCurrentTime ([in] float seconds);
    [id (DISPID_ISVGSVGELEMENT_GETINTERSECTIONLIST)] HRESULT getIntersectionList ([in] ISVGRect *rect,[in] ISVGElement *referenceElement,[retval, out] VARIANT *pResult);
    [id (DISPID_ISVGSVGELEMENT_GETENCLOSURELIST)] HRESULT getEnclosureList ([in] ISVGRect *rect,[in] ISVGElement *referenceElement,[retval, out] VARIANT *pResult);
    [id (DISPID_ISVGSVGELEMENT_CHECKINTERSECTION)] HRESULT checkIntersection ([in] ISVGElement *element,[in] ISVGRect *rect,[retval, out] VARIANT_BOOL *pResult);
    [id (DISPID_ISVGSVGELEMENT_CHECKENCLOSURE)] HRESULT checkEnclosure ([in] ISVGElement *element,[in] ISVGRect *rect,[retval, out] VARIANT_BOOL *pResult);
    [id (DISPID_ISVGSVGELEMENT_DESELECTALL)] HRESULT deselectAll ();
    [id (DISPID_ISVGSVGELEMENT_CREATESVGNUMBER)] HRESULT createSVGNumber ([retval, out] ISVGNumber **pResult);
    [id (DISPID_ISVGSVGELEMENT_CREATESVGLENGTH)] HRESULT createSVGLength ([retval, out] ISVGLength **pResult);
    [id (DISPID_ISVGSVGELEMENT_CREATESVGANGLE)] HRESULT createSVGAngle ([retval, out] ISVGAngle **pResult);
    [id (DISPID_ISVGSVGELEMENT_CREATESVGPOINT)] HRESULT createSVGPoint ([retval, out] ISVGPoint **pResult);
    [id (DISPID_ISVGSVGELEMENT_CREATESVGMATRIX)] HRESULT createSVGMatrix ([retval, out] ISVGMatrix **pResult);
    [id (DISPID_ISVGSVGELEMENT_CREATESVGRECT)] HRESULT createSVGRect ([retval, out] ISVGRect **pResult);
    [id (DISPID_ISVGSVGELEMENT_CREATESVGTRANSFORM)] HRESULT createSVGTransform ([retval, out] ISVGTransform **pResult);
    [id (DISPID_ISVGSVGELEMENT_CREATESVGTRANSFORMFROMMATRIX)] HRESULT createSVGTransformFromMatrix ([in] ISVGMatrix *matrix,[retval, out] ISVGTransform **pResult);
    [id (DISPID_ISVGSVGELEMENT_GETELEMENTBYID)] HRESULT getElementById ([in] BSTR elementId,[retval, out] IHTMLElement **pResult);
  };
  [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);
    [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 ();
    [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);
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [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);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_VIEWBOX)] ISVGAnimatedRect *viewBox ();
    [propputref, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] void preserveAspectRatio (ISVGAnimatedPreserveAspectRatio *v);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] ISVGAnimatedPreserveAspectRatio *preserveAspectRatio ();
    [propget, id (DISPID_ISVGZOOMANDPAN_ZOOMANDPAN)] short zoomAndPan ();
  };
  [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;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGSVGElement;")
  interface ISVGElementInstance;
  [odl, oleautomation, dual, uuid (305104ed-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGUseElement : IDispatch {
    [propputref, id (DISPID_ISVGUSEELEMENT_X)] HRESULT x ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGUSEELEMENT_X)] HRESULT x ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGUSEELEMENT_Y)] HRESULT y ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGUSEELEMENT_Y)] HRESULT y ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGUSEELEMENT_WIDTH)] HRESULT width ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGUSEELEMENT_WIDTH)] HRESULT width ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGUSEELEMENT_HEIGHT)] HRESULT height ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGUSEELEMENT_HEIGHT)] HRESULT height ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGUSEELEMENT_INSTANCEROOT)] HRESULT instanceRoot ([in] ISVGElementInstance *v);
    [propget, id (DISPID_ISVGUSEELEMENT_INSTANCEROOT)] HRESULT instanceRoot ([retval, out] ISVGElementInstance **p);
    [propputref, id (DISPID_ISVGUSEELEMENT_ANIMATEDINSTANCEROOT)] HRESULT animatedInstanceRoot ([in] ISVGElementInstance *v);
    [propget, id (DISPID_ISVGUSEELEMENT_ANIMATEDINSTANCEROOT)] HRESULT animatedInstanceRoot ([retval, out] ISVGElementInstance **p);
  };
  [hidden, uuid (30590010-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGUseElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGUSEELEMENT_X)] void x (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGUSEELEMENT_X)] ISVGAnimatedLength *x ();
    [propputref, id (DISPID_ISVGUSEELEMENT_Y)] void y (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGUSEELEMENT_Y)] ISVGAnimatedLength *y ();
    [propputref, id (DISPID_ISVGUSEELEMENT_WIDTH)] void width (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGUSEELEMENT_WIDTH)] ISVGAnimatedLength *width ();
    [propputref, id (DISPID_ISVGUSEELEMENT_HEIGHT)] void height (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGUSEELEMENT_HEIGHT)] ISVGAnimatedLength *height ();
    [propputref, id (DISPID_ISVGUSEELEMENT_INSTANCEROOT)] void instanceRoot (ISVGElementInstance *v);
    [propget, id (DISPID_ISVGUSEELEMENT_INSTANCEROOT)] ISVGElementInstance *instanceRoot ();
    [propputref, id (DISPID_ISVGUSEELEMENT_ANIMATEDINSTANCEROOT)] void animatedInstanceRoot (ISVGElementInstance *v);
    [propget, id (DISPID_ISVGUSEELEMENT_ANIMATEDINSTANCEROOT)] ISVGElementInstance *animatedInstanceRoot ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [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);
    [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 ();
    [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);
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
  };
  [noncreatable, uuid (30510590-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGUseElement {
    [default] dispinterface DispSVGUseElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGUseElement;
    interface ISVGTransformable;
    interface ISVGLocatable;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGURIReference;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGUseElement;")
  interface IHTMLStyleSheetRulesAppliedCollection;
  interface IRulesApplied;
  interface IRulesAppliedCollection;
  [odl, oleautomation, dual, uuid (305104c0-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLStyleSheetRulesAppliedCollection : IDispatch {
    [id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] IHTMLStyleSheetRule **ppHTMLStyleSheetRule);
    [propget, id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_PROPERTYAPPLIEDBY)] HRESULT propertyAppliedBy ([in] BSTR name,[retval, out] IHTMLStyleSheetRule **ppRule);
    [id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_PROPERTYAPPLIEDTRACE)] HRESULT propertyAppliedTrace ([in] BSTR name,[in] long index,[retval, out] IHTMLStyleSheetRule **ppRule);
    [id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_PROPERTYAPPLIEDTRACELENGTH)] HRESULT propertyAppliedTraceLength ([in] BSTR name,[retval, out] long *pLength);
  };
  [odl, oleautomation, dual, uuid (305104bf-98b5-11cf-bb82-00aa00bdce0b)] interface IRulesApplied : IDispatch {
    [propget, id (DISPID_IRULESAPPLIED_ELEMENT)] HRESULT element ([retval, out] IHTMLElement **p);
    [propget, id (DISPID_IRULESAPPLIED_INLINESTYLES)] HRESULT inlineStyles ([retval, out] IHTMLStyle **p);
    [propget, id (DISPID_IRULESAPPLIED_APPLIEDRULES)] HRESULT appliedRules ([retval, out] IHTMLStyleSheetRulesAppliedCollection **p);
    [id (DISPID_IRULESAPPLIED_PROPERTYISINLINE)] HRESULT propertyIsInline ([in] BSTR name,[retval, out] VARIANT_BOOL *p);
    [id (DISPID_IRULESAPPLIED_PROPERTYISINHERITABLE)] HRESULT propertyIsInheritable ([in] BSTR name,[retval, out] VARIANT_BOOL *p);
    [id (DISPID_IRULESAPPLIED_HASINHERITABLEPROPERTY)] HRESULT hasInheritableProperty ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (305104be-98b5-11cf-bb82-00aa00bdce0b)] interface IRulesAppliedCollection : IDispatch {
    [id (DISPID_IRULESAPPLIEDCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] IRulesApplied **ppRulesApplied);
    [propget, id (DISPID_IRULESAPPLIEDCOLLECTION_LENGTH)] HRESULT length ([retval, out] long *p);
    [propget, id (DISPID_IRULESAPPLIEDCOLLECTION_ELEMENT)] HRESULT element ([retval, out] IHTMLElement **p);
    [id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTYINHERITEDFROM)] HRESULT propertyInheritedFrom ([in] BSTR name,[retval, out] IRulesApplied **ppRulesApplied);
    [propget, id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTYCOUNT)] HRESULT propertyCount ([retval, out] long *p);
    [id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTY)] HRESULT property ([in] long index,[retval, out] BSTR *pbstrProperty);
    [id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTYINHERITEDTRACE)] HRESULT propertyInheritedTrace ([in] BSTR name,[in] long index,[retval, out] IRulesApplied **ppRulesApplied);
    [id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTYINHERITEDTRACELENGTH)] HRESULT propertyInheritedTraceLength ([in] BSTR name,[retval, out] long *pLength);
  };
  [hidden, uuid (3050f5a6-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLStyleSheetRulesAppliedCollection {
    properties:
    methods:
    [id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_ITEM)] IHTMLStyleSheetRule *item ([in] long index);
    [propget, id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_LENGTH)] long length ();
    [id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_PROPERTYAPPLIEDBY)] IHTMLStyleSheetRule *propertyAppliedBy ([in] BSTR name);
    [id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_PROPERTYAPPLIEDTRACE)] IHTMLStyleSheetRule *propertyAppliedTrace ([in] BSTR name,[in] long index);
    [id (DISPID_IHTMLSTYLESHEETRULESAPPLIEDCOLLECTION_PROPERTYAPPLIEDTRACELENGTH)] long propertyAppliedTraceLength ([in] BSTR name);
  };
  [noncreatable, uuid (eb36f845-2395-4719-b85c-d0d80e184bd9)] coclass HTMLStyleSheetRulesAppliedCollection {
    [default] dispinterface DispHTMLStyleSheetRulesAppliedCollection;
    interface IHTMLStyleSheetRulesAppliedCollection;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CHTMLStyleSheetRulesAppliedCollection;")
  [hidden, uuid (3050f5a5-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispRulesApplied {
    properties:
    methods:
    [propget, id (DISPID_IRULESAPPLIED_ELEMENT)] IHTMLElement *element ();
    [propget, id (DISPID_IRULESAPPLIED_INLINESTYLES)] IHTMLStyle *inlineStyles ();
    [propget, id (DISPID_IRULESAPPLIED_APPLIEDRULES)] IHTMLStyleSheetRulesAppliedCollection *appliedRules ();
    [id (DISPID_IRULESAPPLIED_PROPERTYISINLINE)] VARIANT_BOOL propertyIsInline ([in] BSTR name);
    [id (DISPID_IRULESAPPLIED_PROPERTYISINHERITABLE)] VARIANT_BOOL propertyIsInheritable ([in] BSTR name);
    [id (DISPID_IRULESAPPLIED_HASINHERITABLEPROPERTY)] VARIANT_BOOL hasInheritableProperty ();
  };
  [noncreatable, uuid (7c803920-7a53-4d26-98ac-fdd23e6b9e01)] coclass RulesApplied {
    [default] dispinterface DispRulesApplied;
    interface IRulesApplied;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CRulesApplied;")
  [hidden, uuid (3050f5a4-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispRulesAppliedCollection {
    properties:
    methods:
    [id (DISPID_IRULESAPPLIEDCOLLECTION_ITEM)] IRulesApplied *item ([in] long index);
    [propget, id (DISPID_IRULESAPPLIEDCOLLECTION_LENGTH)] long length ();
    [propget, id (DISPID_IRULESAPPLIEDCOLLECTION_ELEMENT)] IHTMLElement *element ();
    [id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTYINHERITEDFROM)] IRulesApplied *propertyInheritedFrom ([in] BSTR name);
    [propget, id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTYCOUNT)] long propertyCount ();
    [id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTY)] BSTR property ([in] long index);
    [id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTYINHERITEDTRACE)] IRulesApplied *propertyInheritedTrace ([in] BSTR name,[in] long index);
    [id (DISPID_IRULESAPPLIEDCOLLECTION_PROPERTYINHERITEDTRACELENGTH)] long propertyInheritedTraceLength ([in] BSTR name);
  };
  [noncreatable, uuid (671926ee-c3cf-40af-be8f-1cbaee6486e8)] coclass RulesAppliedCollection {
    [default] dispinterface DispRulesAppliedCollection;
    interface IRulesAppliedCollection;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CRulesAppliedCollection;")
  [hidden, uuid (30590070-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLW3CComputedStyle {
    properties:
    methods:
    [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,[defaultvalue (NULL), in] 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 ();
    [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 ();
  };
  [noncreatable, uuid (305106c8-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLW3CComputedStyle {
    [default] dispinterface DispHTMLW3CComputedStyle;
    interface IHTMLCSSStyleDeclaration;
    interface IHTMLCSSStyleDeclaration2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CW3CComputedStyle;")
  interface ISVGTransform;
  interface ISVGMatrix;
  [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 ([retval, out] long *p);
    [id (DISPID_ISVGTRANSFORMLIST_CLEAR)] HRESULT clear ();
    [id (DISPID_ISVGTRANSFORMLIST_INITIALIZE)] HRESULT initialize ([in] ISVGTransform *newItem,[retval, out] ISVGTransform **ppResult);
    [id (DISPID_ISVGTRANSFORMLIST_GETITEM)] HRESULT getItem ([in] long index,[retval, out] ISVGTransform **ppResult);
    [id (DISPID_ISVGTRANSFORMLIST_INSERTITEMBEFORE)] HRESULT insertItemBefore ([in] ISVGTransform *newItem,[in] long index,[retval, out] ISVGTransform **ppResult);
    [id (DISPID_ISVGTRANSFORMLIST_REPLACEITEM)] HRESULT replaceItem ([in] ISVGTransform *newItem,[in] long index,[retval, out] ISVGTransform **ppResult);
    [id (DISPID_ISVGTRANSFORMLIST_REMOVEITEM)] HRESULT removeItem ([in] long index,[retval, out] ISVGTransform **ppResult);
    [id (DISPID_ISVGTRANSFORMLIST_APPENDITEM)] HRESULT appendItem ([in] ISVGTransform *newItem,[retval, out] ISVGTransform **ppResult);
    [id (DISPID_ISVGTRANSFORMLIST_CREATESVGTRANSFORMFROMMATRIX)] HRESULT createSVGTransformFromMatrix ([in] ISVGMatrix *newItem,[retval, out] ISVGTransform **ppResult);
    [id (DISPID_ISVGTRANSFORMLIST_CONSOLIDATE)] HRESULT consolidate ([retval, out] ISVGTransform **ppResult);
  };
  [noncreatable, uuid (305105b0-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGTransformList {
    [default] interface ISVGTransformList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGTransformList;")
  interface ISVGPointList;
  [odl, oleautomation, dual, uuid (30510517-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedPoints : IDispatch {
    [propputref, id (DISPID_ISVGANIMATEDPOINTS_POINTS)] HRESULT points ([in] ISVGPointList *v);
    [propget, id (DISPID_ISVGANIMATEDPOINTS_POINTS)] HRESULT points ([retval, out] ISVGPointList **p);
    [propputref, id (DISPID_ISVGANIMATEDPOINTS_ANIMATEDPOINTS)] HRESULT animatedPoints ([in] ISVGPointList *v);
    [propget, id (DISPID_ISVGANIMATEDPOINTS_ANIMATEDPOINTS)] HRESULT animatedPoints ([retval, out] ISVGPointList **p);
  };
  [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 ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGCIRCLEELEMENT_CY)] HRESULT cy ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGCIRCLEELEMENT_CY)] HRESULT cy ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGCIRCLEELEMENT_R)] HRESULT r ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGCIRCLEELEMENT_R)] HRESULT r ([retval, out] ISVGAnimatedLength **p);
  };
  [odl, oleautomation, dual, uuid (30510515-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGEllipseElement : IDispatch {
    [propputref, id (DISPID_ISVGELLIPSEELEMENT_CX)] HRESULT cx ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGELLIPSEELEMENT_CX)] HRESULT cx ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGELLIPSEELEMENT_CY)] HRESULT cy ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGELLIPSEELEMENT_CY)] HRESULT cy ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGELLIPSEELEMENT_RX)] HRESULT rx ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGELLIPSEELEMENT_RX)] HRESULT rx ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGELLIPSEELEMENT_RY)] HRESULT ry ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGELLIPSEELEMENT_RY)] HRESULT ry ([retval, out] ISVGAnimatedLength **p);
  };
  [odl, oleautomation, dual, uuid (30510516-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGLineElement : IDispatch {
    [propputref, id (DISPID_ISVGLINEELEMENT_X1)] HRESULT x1 ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEELEMENT_X1)] HRESULT x1 ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGLINEELEMENT_Y1)] HRESULT y1 ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEELEMENT_Y1)] HRESULT y1 ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGLINEELEMENT_X2)] HRESULT x2 ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEELEMENT_X2)] HRESULT x2 ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGLINEELEMENT_Y2)] HRESULT y2 ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEELEMENT_Y2)] HRESULT y2 ([retval, out] ISVGAnimatedLength **p);
  };
  [odl, oleautomation, dual, uuid (30510513-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGRectElement : IDispatch {
    [propputref, id (DISPID_ISVGRECTELEMENT_X)] HRESULT x ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_X)] HRESULT x ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRECTELEMENT_Y)] HRESULT y ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_Y)] HRESULT y ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRECTELEMENT_WIDTH)] HRESULT width ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_WIDTH)] HRESULT width ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRECTELEMENT_HEIGHT)] HRESULT height ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_HEIGHT)] HRESULT height ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRECTELEMENT_RX)] HRESULT rx ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_RX)] HRESULT rx ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRECTELEMENT_RY)] HRESULT ry ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_RY)] HRESULT ry ([retval, out] ISVGAnimatedLength **p);
  };
  [odl, oleautomation, dual, uuid (30510519-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPolygonElement : IDispatch {
  };
  [odl, oleautomation, dual, uuid (30510518-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPolylineElement : IDispatch {
  };
  [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 ();
    [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);
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [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);
    [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 ();
  };
  [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;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGCircleElement;")
  [hidden, uuid (3059000b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGEllipseElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGELLIPSEELEMENT_CX)] void cx (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGELLIPSEELEMENT_CX)] ISVGAnimatedLength *cx ();
    [propputref, id (DISPID_ISVGELLIPSEELEMENT_CY)] void cy (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGELLIPSEELEMENT_CY)] ISVGAnimatedLength *cy ();
    [propputref, id (DISPID_ISVGELLIPSEELEMENT_RX)] void rx (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGELLIPSEELEMENT_RX)] ISVGAnimatedLength *rx ();
    [propputref, id (DISPID_ISVGELLIPSEELEMENT_RY)] void ry (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGELLIPSEELEMENT_RY)] ISVGAnimatedLength *ry ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [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);
    [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 ();
    [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);
  };
  [noncreatable, uuid (30510579-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGEllipseElement {
    [default] dispinterface DispSVGEllipseElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGEllipseElement;
    interface ISVGTransformable;
    interface ISVGLocatable;
    interface ISVGElement;
    interface ISVGTests;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGEllipseElement;")
  [hidden, uuid (3059000c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGLineElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGLINEELEMENT_X1)] void x1 (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEELEMENT_X1)] ISVGAnimatedLength *x1 ();
    [propputref, id (DISPID_ISVGLINEELEMENT_Y1)] void y1 (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEELEMENT_Y1)] ISVGAnimatedLength *y1 ();
    [propputref, id (DISPID_ISVGLINEELEMENT_X2)] void x2 (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEELEMENT_X2)] ISVGAnimatedLength *x2 ();
    [propputref, id (DISPID_ISVGLINEELEMENT_Y2)] void y2 (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEELEMENT_Y2)] ISVGAnimatedLength *y2 ();
    [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 ();
    [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);
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [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);
  };
  [noncreatable, uuid (3051057a-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGLineElement {
    [default] dispinterface DispSVGLineElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGLineElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGTransformable;
    interface ISVGLocatable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGLineElement;")
  [hidden, uuid (30590009-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGRectElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGRECTELEMENT_X)] void x (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_X)] ISVGAnimatedLength *x ();
    [propputref, id (DISPID_ISVGRECTELEMENT_Y)] void y (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_Y)] ISVGAnimatedLength *y ();
    [propputref, id (DISPID_ISVGRECTELEMENT_WIDTH)] void width (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_WIDTH)] ISVGAnimatedLength *width ();
    [propputref, id (DISPID_ISVGRECTELEMENT_HEIGHT)] void height (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_HEIGHT)] ISVGAnimatedLength *height ();
    [propputref, id (DISPID_ISVGRECTELEMENT_RX)] void rx (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_RX)] ISVGAnimatedLength *rx ();
    [propputref, id (DISPID_ISVGRECTELEMENT_RY)] void ry (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRECTELEMENT_RY)] ISVGAnimatedLength *ry ();
    [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 ();
    [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);
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [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);
  };
  [noncreatable, uuid (30510577-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGRectElement {
    [default] dispinterface DispSVGRectElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGRectElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGTransformable;
    interface ISVGLocatable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGRectElement;")
  [hidden, uuid (3059000d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPolygonElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGANIMATEDPOINTS_POINTS)] void points (ISVGPointList *v);
    [propget, id (DISPID_ISVGANIMATEDPOINTS_POINTS)] ISVGPointList *points ();
    [propputref, id (DISPID_ISVGANIMATEDPOINTS_ANIMATEDPOINTS)] void animatedPoints (ISVGPointList *v);
    [propget, id (DISPID_ISVGANIMATEDPOINTS_ANIMATEDPOINTS)] ISVGPointList *animatedPoints ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [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);
    [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 ();
    [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);
  };
  [noncreatable, uuid (3051057b-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPolygonElement {
    [default] dispinterface DispSVGPolygonElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGPolygonElement;
    interface ISVGAnimatedPoints;
    interface ISVGTransformable;
    interface ISVGLocatable;
    interface ISVGElement;
    interface ISVGTests;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPolygonElement;")
  [hidden, uuid (3059000e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPolylineElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGANIMATEDPOINTS_POINTS)] void points (ISVGPointList *v);
    [propget, id (DISPID_ISVGANIMATEDPOINTS_POINTS)] ISVGPointList *points ();
    [propputref, id (DISPID_ISVGANIMATEDPOINTS_ANIMATEDPOINTS)] void animatedPoints (ISVGPointList *v);
    [propget, id (DISPID_ISVGANIMATEDPOINTS_ANIMATEDPOINTS)] ISVGPointList *animatedPoints ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [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);
    [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 ();
    [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);
  };
  [noncreatable, uuid (3051057c-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPolylineElement {
    [default] dispinterface DispSVGPolylineElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGPolylineElement;
    interface ISVGAnimatedPoints;
    interface ISVGTransformable;
    interface ISVGLocatable;
    interface ISVGElement;
    interface ISVGTests;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPolylineElement;")
  [odl, oleautomation, dual, uuid (305104e8-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGGElement : IDispatch {
  };
  [hidden, uuid (30590002-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGGElement {
    properties:
    methods:
    [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 ();
    [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);
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [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);
  };
  [noncreatable, uuid (3051056f-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGGElement {
    [default] dispinterface DispSVGGElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGGElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGTransformable;
    interface ISVGLocatable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGGElement;")
  [odl, oleautomation, dual, uuid (305104ec-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGSymbolElement : IDispatch {
  };
  [hidden, uuid (30590004-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGSymbolElement {
    properties:
    methods:
    [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 ();
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGFITTOVIEWBOX_VIEWBOX)] ISVGAnimatedRect *viewBox ();
    [propputref, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] void preserveAspectRatio (ISVGAnimatedPreserveAspectRatio *v);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] ISVGAnimatedPreserveAspectRatio *preserveAspectRatio ();
  };
  [noncreatable, uuid (30510571-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGSymbolElement {
    [default] dispinterface DispSVGSymbolElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGSymbolElement;
    interface ISVGElement;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGFitToViewBox;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGSymbolElement;")
  [odl, oleautomation, dual, uuid (305104e9-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGDefsElement : IDispatch {
  };
  [hidden, uuid (30590003-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGDefsElement {
    properties:
    methods:
    [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 ();
    [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);
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [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);
  };
  [noncreatable, uuid (30510570-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGDefsElement {
    [default] dispinterface DispSVGDefsElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGDefsElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGTransformable;
    interface ISVGLocatable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGDefsElement;")
  [odl, oleautomation, dual, uuid (30510511-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAnimatedPathData : IDispatch {
    [propputref, id (DISPID_ISVGANIMATEDPATHDATA_PATHSEGLIST)] HRESULT pathSegList ([in] ISVGPathSegList *v);
    [propget, id (DISPID_ISVGANIMATEDPATHDATA_PATHSEGLIST)] HRESULT pathSegList ([retval, out] ISVGPathSegList **p);
    [propputref, id (DISPID_ISVGANIMATEDPATHDATA_NORMALIZEDPATHSEGLIST)] HRESULT normalizedPathSegList ([in] ISVGPathSegList *v);
    [propget, id (DISPID_ISVGANIMATEDPATHDATA_NORMALIZEDPATHSEGLIST)] HRESULT normalizedPathSegList ([retval, out] ISVGPathSegList **p);
    [propputref, id (DISPID_ISVGANIMATEDPATHDATA_ANIMATEDPATHSEGLIST)] HRESULT animatedPathSegList ([in] ISVGPathSegList *v);
    [propget, id (DISPID_ISVGANIMATEDPATHDATA_ANIMATEDPATHSEGLIST)] HRESULT animatedPathSegList ([retval, out] ISVGPathSegList **p);
    [propputref, id (DISPID_ISVGANIMATEDPATHDATA_ANIMATEDNORMALIZEDPATHSEGLIST)] HRESULT animatedNormalizedPathSegList ([in] ISVGPathSegList *v);
    [propget, id (DISPID_ISVGANIMATEDPATHDATA_ANIMATEDNORMALIZEDPATHSEGLIST)] HRESULT animatedNormalizedPathSegList ([retval, out] ISVGPathSegList **p);
  };
  [odl, oleautomation, dual, uuid (30510512-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGPathElement : IDispatch {
    [propputref, id (DISPID_ISVGPATHELEMENT_PATHLENGTH)] HRESULT pathLength ([in] ISVGAnimatedNumber *v);
    [propget, id (DISPID_ISVGPATHELEMENT_PATHLENGTH)] HRESULT pathLength ([retval, out] ISVGAnimatedNumber **p);
    [id (DISPID_ISVGPATHELEMENT_GETTOTALLENGTH)] HRESULT getTotalLength ([retval, out] float *pfltResult);
    [id (DISPID_ISVGPATHELEMENT_GETPOINTATLENGTH)] HRESULT getPointAtLength ([in] float fltdistance,[retval, out] ISVGPoint **ppPointResult);
    [id (DISPID_ISVGPATHELEMENT_GETPATHSEGATLENGTH)] HRESULT getPathSegAtLength ([in] float fltdistance,[retval, out] long *plResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCLOSEPATH)] HRESULT createSVGPathSegClosePath ([retval, out] ISVGPathSegClosePath **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGMOVETOABS)] HRESULT createSVGPathSegMovetoAbs ([in] float x,[in] float y,[retval, out] ISVGPathSegMovetoAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGMOVETOREL)] HRESULT createSVGPathSegMovetoRel ([in] float x,[in] float y,[retval, out] ISVGPathSegMovetoRel **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOABS)] HRESULT createSVGPathSegLinetoAbs ([in] float x,[in] float y,[retval, out] ISVGPathSegLinetoAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOREL)] HRESULT createSVGPathSegLinetoRel ([in] float x,[in] float y,[retval, out] ISVGPathSegLinetoRel **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOCUBICABS)] HRESULT createSVGPathSegCurvetoCubicAbs ([in] float x,[in] float y,[in] float x1,[in] float y1,[in] float x2,[in] float y2,[retval, out] ISVGPathSegCurvetoCubicAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOCUBICREL)] HRESULT createSVGPathSegCurvetoCubicRel ([in] float x,[in] float y,[in] float x1,[in] float y1,[in] float x2,[in] float y2,[retval, out] ISVGPathSegCurvetoCubicRel **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOQUADRATICABS)] HRESULT createSVGPathSegCurvetoQuadraticAbs ([in] float x,[in] float y,[in] float x1,[in] float y1,[retval, out] ISVGPathSegCurvetoQuadraticAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOQUADRATICREL)] HRESULT createSVGPathSegCurvetoQuadraticRel ([in] float x,[in] float y,[in] float x1,[in] float y1,[retval, out] ISVGPathSegCurvetoQuadraticRel **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGARCABS)] HRESULT createSVGPathSegArcAbs ([in] float x,[in] float y,[in] float r1,[in] float r2,[in] float angle,[in] VARIANT_BOOL largeArcFlag,[in] VARIANT_BOOL sweepFlag,[retval, out] ISVGPathSegArcAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGARCREL)] HRESULT createSVGPathSegArcRel ([in] float x,[in] float y,[in] float r1,[in] float r2,[in] float angle,[in] VARIANT_BOOL largeArcFlag,[in] VARIANT_BOOL sweepFlag,[retval, out] ISVGPathSegArcRel **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOHORIZONTALABS)] HRESULT createSVGPathSegLinetoHorizontalAbs ([in] float x,[retval, out] ISVGPathSegLinetoHorizontalAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOHORIZONTALREL)] HRESULT createSVGPathSegLinetoHorizontalRel ([in] float x,[retval, out] ISVGPathSegLinetoHorizontalRel **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOVERTICALABS)] HRESULT createSVGPathSegLinetoVerticalAbs ([in] float y,[retval, out] ISVGPathSegLinetoVerticalAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOVERTICALREL)] HRESULT createSVGPathSegLinetoVerticalRel ([in] float y,[retval, out] ISVGPathSegLinetoVerticalRel **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOCUBICSMOOTHABS)] HRESULT createSVGPathSegCurvetoCubicSmoothAbs ([in] float x,[in] float y,[in] float x2,[in] float y2,[retval, out] ISVGPathSegCurvetoCubicSmoothAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOCUBICSMOOTHREL)] HRESULT createSVGPathSegCurvetoCubicSmoothRel ([in] float x,[in] float y,[in] float x2,[in] float y2,[retval, out] ISVGPathSegCurvetoCubicSmoothRel **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOQUADRATICSMOOTHABS)] HRESULT createSVGPathSegCurvetoQuadraticSmoothAbs ([in] float x,[in] float y,[retval, out] ISVGPathSegCurvetoQuadraticSmoothAbs **ppResult);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOQUADRATICSMOOTHREL)] HRESULT createSVGPathSegCurvetoQuadraticSmoothRel ([in] float x,[in] float y,[retval, out] ISVGPathSegCurvetoQuadraticSmoothRel **ppResult);
  };
  [hidden, uuid (30590011-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGPathElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGANIMATEDPATHDATA_PATHSEGLIST)] void pathSegList (ISVGPathSegList *v);
    [propget, id (DISPID_ISVGANIMATEDPATHDATA_PATHSEGLIST)] ISVGPathSegList *pathSegList ();
    [propputref, id (DISPID_ISVGANIMATEDPATHDATA_NORMALIZEDPATHSEGLIST)] void normalizedPathSegList (ISVGPathSegList *v);
    [propget, id (DISPID_ISVGANIMATEDPATHDATA_NORMALIZEDPATHSEGLIST)] ISVGPathSegList *normalizedPathSegList ();
    [propputref, id (DISPID_ISVGANIMATEDPATHDATA_ANIMATEDPATHSEGLIST)] void animatedPathSegList (ISVGPathSegList *v);
    [propget, id (DISPID_ISVGANIMATEDPATHDATA_ANIMATEDPATHSEGLIST)] ISVGPathSegList *animatedPathSegList ();
    [propputref, id (DISPID_ISVGANIMATEDPATHDATA_ANIMATEDNORMALIZEDPATHSEGLIST)] void animatedNormalizedPathSegList (ISVGPathSegList *v);
    [propget, id (DISPID_ISVGANIMATEDPATHDATA_ANIMATEDNORMALIZEDPATHSEGLIST)] ISVGPathSegList *animatedNormalizedPathSegList ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [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);
    [propputref, id (DISPID_ISVGPATHELEMENT_PATHLENGTH)] void pathLength (ISVGAnimatedNumber *v);
    [propget, id (DISPID_ISVGPATHELEMENT_PATHLENGTH)] ISVGAnimatedNumber *pathLength ();
    [id (DISPID_ISVGPATHELEMENT_GETTOTALLENGTH)] float getTotalLength ();
    [id (DISPID_ISVGPATHELEMENT_GETPOINTATLENGTH)] ISVGPoint *getPointAtLength ([in] float fltdistance);
    [id (DISPID_ISVGPATHELEMENT_GETPATHSEGATLENGTH)] long getPathSegAtLength ([in] float fltdistance);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCLOSEPATH)] ISVGPathSegClosePath *createSVGPathSegClosePath ();
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGMOVETOABS)] ISVGPathSegMovetoAbs *createSVGPathSegMovetoAbs ([in] float x,[in] float y);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGMOVETOREL)] ISVGPathSegMovetoRel *createSVGPathSegMovetoRel ([in] float x,[in] float y);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOABS)] ISVGPathSegLinetoAbs *createSVGPathSegLinetoAbs ([in] float x,[in] float y);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOREL)] ISVGPathSegLinetoRel *createSVGPathSegLinetoRel ([in] float x,[in] float y);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOCUBICABS)] ISVGPathSegCurvetoCubicAbs *createSVGPathSegCurvetoCubicAbs ([in] float x,[in] float y,[in] float x1,[in] float y1,[in] float x2,[in] float y2);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOCUBICREL)] ISVGPathSegCurvetoCubicRel *createSVGPathSegCurvetoCubicRel ([in] float x,[in] float y,[in] float x1,[in] float y1,[in] float x2,[in] float y2);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOQUADRATICABS)] ISVGPathSegCurvetoQuadraticAbs *createSVGPathSegCurvetoQuadraticAbs ([in] float x,[in] float y,[in] float x1,[in] float y1);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOQUADRATICREL)] ISVGPathSegCurvetoQuadraticRel *createSVGPathSegCurvetoQuadraticRel ([in] float x,[in] float y,[in] float x1,[in] float y1);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGARCABS)] ISVGPathSegArcAbs *createSVGPathSegArcAbs ([in] float x,[in] float y,[in] float r1,[in] float r2,[in] float angle,[in] VARIANT_BOOL largeArcFlag,[in] VARIANT_BOOL sweepFlag);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGARCREL)] ISVGPathSegArcRel *createSVGPathSegArcRel ([in] float x,[in] float y,[in] float r1,[in] float r2,[in] float angle,[in] VARIANT_BOOL largeArcFlag,[in] VARIANT_BOOL sweepFlag);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOHORIZONTALABS)] ISVGPathSegLinetoHorizontalAbs *createSVGPathSegLinetoHorizontalAbs ([in] float x);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOHORIZONTALREL)] ISVGPathSegLinetoHorizontalRel *createSVGPathSegLinetoHorizontalRel ([in] float x);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOVERTICALABS)] ISVGPathSegLinetoVerticalAbs *createSVGPathSegLinetoVerticalAbs ([in] float y);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGLINETOVERTICALREL)] ISVGPathSegLinetoVerticalRel *createSVGPathSegLinetoVerticalRel ([in] float y);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOCUBICSMOOTHABS)] ISVGPathSegCurvetoCubicSmoothAbs *createSVGPathSegCurvetoCubicSmoothAbs ([in] float x,[in] float y,[in] float x2,[in] float y2);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOCUBICSMOOTHREL)] ISVGPathSegCurvetoCubicSmoothRel *createSVGPathSegCurvetoCubicSmoothRel ([in] float x,[in] float y,[in] float x2,[in] float y2);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOQUADRATICSMOOTHABS)] ISVGPathSegCurvetoQuadraticSmoothAbs *createSVGPathSegCurvetoQuadraticSmoothAbs ([in] float x,[in] float y);
    [id (DISPID_ISVGPATHELEMENT_CREATESVGPATHSEGCURVETOQUADRATICSMOOTHREL)] ISVGPathSegCurvetoQuadraticSmoothRel *createSVGPathSegCurvetoQuadraticSmoothRel ([in] float x,[in] float y);
    [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 ();
    [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);
  };
  [noncreatable, uuid (305105b2-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPathElement {
    [default] dispinterface DispSVGPathElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGAnimatedPathData;
    interface ISVGTransformable;
    interface ISVGLocatable;
    interface ISVGPathElement;
    interface ISVGElement;
    interface ISVGTests;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPathElement;")
  typedef enum _svgPreserveAspectRatioAlignType {
    SVG_PRESERVEASPECTRATIO_UNKNOWN = 0,
    SVG_PRESERVEASPECTRATIO_NONE = 1,
    SVG_PRESERVEASPECTRATIO_XMINYMIN = 2,
    SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3,
    SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4,
    SVG_PRESERVEASPECTRATIO_XMINYMID = 5,
    SVG_PRESERVEASPECTRATIO_XMIDYMID = 6,
    SVG_PRESERVEASPECTRATIO_XMAXYMID = 7,
    SVG_PRESERVEASPECTRATIO_XMINYMAX = 8,
    SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9,
    SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10,
    svgPreserveAspectRatioAlignType_Max = 0x7FFFFFFF
  } svgPreserveAspectRatioAlignType;

  typedef enum _svgPreserveAspectMeetOrSliceType {
    SVG_MEETORSLICE_UNKNOWN = 0,
    SVG_MEETORSLICE_MEET = 1,
    SVG_MEETORSLICE_SLICE = 2,
    svgPreserveAspectMeetOrSliceType_Max = 0x7FFFFFFF
  } svgPreserveAspectMeetOrSliceType;
  [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 ([retval, out] short *p);
    [propput, id (DISPID_ISVGPRESERVEASPECTRATIO_MEETORSLICE)] HRESULT meetOrSlice ([in] short v);
    [propget, id (DISPID_ISVGPRESERVEASPECTRATIO_MEETORSLICE)] HRESULT meetOrSlice ([retval, out] short *p);
  };
  [noncreatable, uuid (305105d0-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGPreserveAspectRatio {
    [default] interface ISVGPreserveAspectRatio;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGPreserveAspectRatio;")
  [odl, oleautomation, dual, uuid (3051051c-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGTextElement : IDispatch {
  };
  [hidden, uuid (30590037-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGTextElement {
    properties:
    methods:
    [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 ();
    [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);
    [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 ();
    [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);
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [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);
  };
  [noncreatable, uuid (305105df-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGTextElement {
    [default] dispinterface DispSVGTextElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGTextElement;
    interface ISVGTextPositioningElement;
    interface ISVGTextContentElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGTransformable;
    interface ISVGLocatable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGTextElement;")
  interface ISVGPreserveAspectRatio;
  [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 ([retval, out] ISVGPreserveAspectRatio **p);
  };
  [noncreatable, uuid (305105ce-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAnimatedPreserveAspectRatio {
    [default] interface ISVGAnimatedPreserveAspectRatio;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAnimatedPreserveAspectRatio;")
  [odl, oleautomation, dual, uuid (305104f0-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGImageElement : IDispatch {
    [propputref, id (DISPID_ISVGIMAGEELEMENT_X)] HRESULT x ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGIMAGEELEMENT_X)] HRESULT x ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGIMAGEELEMENT_Y)] HRESULT y ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGIMAGEELEMENT_Y)] HRESULT y ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGIMAGEELEMENT_WIDTH)] HRESULT width ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGIMAGEELEMENT_WIDTH)] HRESULT width ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGIMAGEELEMENT_HEIGHT)] HRESULT height ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGIMAGEELEMENT_HEIGHT)] HRESULT height ([retval, out] ISVGAnimatedLength **p);
  };
  [hidden, uuid (30590027-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGImageElement {
    properties:
    methods:
    [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 ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [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);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_VIEWBOX)] ISVGAnimatedRect *viewBox ();
    [propputref, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] void preserveAspectRatio (ISVGAnimatedPreserveAspectRatio *v);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] ISVGAnimatedPreserveAspectRatio *preserveAspectRatio ();
    [propputref, id (DISPID_ISVGIMAGEELEMENT_X)] void x (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGIMAGEELEMENT_X)] ISVGAnimatedLength *x ();
    [propputref, id (DISPID_ISVGIMAGEELEMENT_Y)] void y (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGIMAGEELEMENT_Y)] ISVGAnimatedLength *y ();
    [propputref, id (DISPID_ISVGIMAGEELEMENT_WIDTH)] void width (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGIMAGEELEMENT_WIDTH)] ISVGAnimatedLength *width ();
    [propputref, id (DISPID_ISVGIMAGEELEMENT_HEIGHT)] void height (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGIMAGEELEMENT_HEIGHT)] ISVGAnimatedLength *height ();
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
    [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);
  };
  [noncreatable, uuid (305105cf-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGImageElement {
    [default] dispinterface DispSVGImageElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGElement;
    interface ISVGTransformable;
    interface ISVGLocatable;
    interface ISVGFitToViewBox;
    interface ISVGImageElement;
    interface ISVGURIReference;
    interface ISVGTests;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGImageElement;")
  typedef enum _svgUnitTypes {
    SVG_UNITTYPE_UNKNOWN = 0,
    SVG_UNITTYPE_USERSPACEONUSE = 1,
    SVG_UNITTYPE_OBJECTBOUNDINGBOX = 2,
    svgUnitTypes_Max = 0x7FFFFFFF
  } svgUnitTypes;
  [odl, oleautomation, dual, uuid (3051052b-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGStopElement : IDispatch {
    [propputref, id (DISPID_ISVGSTOPELEMENT_OFFSET)] HRESULT offset ([in] ISVGAnimatedNumber *v);
    [propget, id (DISPID_ISVGSTOPELEMENT_OFFSET)] HRESULT offset ([retval, out] ISVGAnimatedNumber **p);
  };
  [hidden, uuid (3059002d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGStopElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGSTOPELEMENT_OFFSET)] void offset (ISVGAnimatedNumber *v);
    [propget, id (DISPID_ISVGSTOPELEMENT_OFFSET)] ISVGAnimatedNumber *offset ();
    [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 ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105d5-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGStopElement {
    [default] dispinterface DispSVGStopElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGStopElement;
    interface ISVGElement;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGStopElement;")
  typedef enum _svgSpreadMethod {
    SVG_SPREADMETHOD_UNKNOWN = 0,
    SVG_SPREADMETHOD_PAD = 1,
    SVG_SPREADMETHOD_REFLECT = 2,
    SVG_SPREADMETHOD_REPEAT = 3,
    svgSpreadMethod_Max = 0x7FFFFFFF
  } svgSpreadMethod;
  [odl, oleautomation, dual, uuid (30510528-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGGradientElement : IDispatch {
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTUNITS)] HRESULT gradientUnits ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTUNITS)] HRESULT gradientUnits ([retval, out] ISVGAnimatedEnumeration **p);
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTTRANSFORM)] HRESULT gradientTransform ([in] ISVGAnimatedTransformList *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTTRANSFORM)] HRESULT gradientTransform ([retval, out] ISVGAnimatedTransformList **p);
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_SPREADMETHOD)] HRESULT spreadMethod ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_SPREADMETHOD)] HRESULT spreadMethod ([retval, out] ISVGAnimatedEnumeration **p);
  };
  [hidden, uuid (3059002e-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGGradientElement {
    properties:
    methods:
    [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 ();
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTUNITS)] void gradientUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTUNITS)] ISVGAnimatedEnumeration *gradientUnits ();
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTTRANSFORM)] void gradientTransform (ISVGAnimatedTransformList *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTTRANSFORM)] ISVGAnimatedTransformList *gradientTransform ();
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_SPREADMETHOD)] void spreadMethod (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_SPREADMETHOD)] ISVGAnimatedEnumeration *spreadMethod ();
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105d6-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGGradientElement {
    [default] dispinterface DispSVGGradientElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGElement;
    interface ISVGGradientElement;
    interface ISVGURIReference;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGGradientElement;")
  [odl, oleautomation, dual, uuid (30510529-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGLinearGradientElement : IDispatch {
    [propputref, id (DISPID_ISVGLINEARGRADIENTELEMENT_X1)] HRESULT x1 ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEARGRADIENTELEMENT_X1)] HRESULT x1 ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGLINEARGRADIENTELEMENT_Y1)] HRESULT y1 ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEARGRADIENTELEMENT_Y1)] HRESULT y1 ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGLINEARGRADIENTELEMENT_X2)] HRESULT x2 ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEARGRADIENTELEMENT_X2)] HRESULT x2 ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGLINEARGRADIENTELEMENT_Y2)] HRESULT y2 ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEARGRADIENTELEMENT_Y2)] HRESULT y2 ([retval, out] ISVGAnimatedLength **p);
  };
  [hidden, uuid (3059002a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGLinearGradientElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTUNITS)] void gradientUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTUNITS)] ISVGAnimatedEnumeration *gradientUnits ();
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTTRANSFORM)] void gradientTransform (ISVGAnimatedTransformList *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTTRANSFORM)] ISVGAnimatedTransformList *gradientTransform ();
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_SPREADMETHOD)] void spreadMethod (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_SPREADMETHOD)] ISVGAnimatedEnumeration *spreadMethod ();
    [propputref, id (DISPID_ISVGLINEARGRADIENTELEMENT_X1)] void x1 (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEARGRADIENTELEMENT_X1)] ISVGAnimatedLength *x1 ();
    [propputref, id (DISPID_ISVGLINEARGRADIENTELEMENT_Y1)] void y1 (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEARGRADIENTELEMENT_Y1)] ISVGAnimatedLength *y1 ();
    [propputref, id (DISPID_ISVGLINEARGRADIENTELEMENT_X2)] void x2 (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEARGRADIENTELEMENT_X2)] ISVGAnimatedLength *x2 ();
    [propputref, id (DISPID_ISVGLINEARGRADIENTELEMENT_Y2)] void y2 (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGLINEARGRADIENTELEMENT_Y2)] ISVGAnimatedLength *y2 ();
    [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 ();
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105d2-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGLinearGradientElement {
    [default] dispinterface DispSVGLinearGradientElement;
    interface ISVGGradientElement;
    interface ISVGLinearGradientElement;
    interface ISVGElement;
    interface ISVGURIReference;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGLinearGradientElement;")
  [odl, oleautomation, dual, uuid (3051052a-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGRadialGradientElement : IDispatch {
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_CX)] HRESULT cx ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_CX)] HRESULT cx ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_CY)] HRESULT cy ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_CY)] HRESULT cy ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_R)] HRESULT r ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_R)] HRESULT r ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_FX)] HRESULT fx ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_FX)] HRESULT fx ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_FY)] HRESULT fy ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_FY)] HRESULT fy ([retval, out] ISVGAnimatedLength **p);
  };
  [hidden, uuid (3059002b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGRadialGradientElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTUNITS)] void gradientUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTUNITS)] ISVGAnimatedEnumeration *gradientUnits ();
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTTRANSFORM)] void gradientTransform (ISVGAnimatedTransformList *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_GRADIENTTRANSFORM)] ISVGAnimatedTransformList *gradientTransform ();
    [propputref, id (DISPID_ISVGGRADIENTELEMENT_SPREADMETHOD)] void spreadMethod (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGGRADIENTELEMENT_SPREADMETHOD)] ISVGAnimatedEnumeration *spreadMethod ();
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_CX)] void cx (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_CX)] ISVGAnimatedLength *cx ();
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_CY)] void cy (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_CY)] ISVGAnimatedLength *cy ();
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_R)] void r (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_R)] ISVGAnimatedLength *r ();
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_FX)] void fx (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_FX)] ISVGAnimatedLength *fx ();
    [propputref, id (DISPID_ISVGRADIALGRADIENTELEMENT_FY)] void fy (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGRADIALGRADIENTELEMENT_FY)] ISVGAnimatedLength *fy ();
    [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 ();
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105d3-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGRadialGradientElement {
    [default] dispinterface DispSVGRadialGradientElement;
    interface ISVGGradientElement;
    interface ISVGRadialGradientElement;
    interface ISVGElement;
    interface ISVGURIReference;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGRadialGradientElement;")
  [odl, oleautomation, dual, uuid (3051052e-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGMaskElement : IDispatch {
    [propputref, id (DISPID_ISVGMASKELEMENT_MASKUNITS)] HRESULT maskUnits ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGMASKELEMENT_MASKUNITS)] HRESULT maskUnits ([retval, out] ISVGAnimatedEnumeration **p);
    [propputref, id (DISPID_ISVGMASKELEMENT_MASKCONTENTUNITS)] HRESULT maskContentUnits ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGMASKELEMENT_MASKCONTENTUNITS)] HRESULT maskContentUnits ([retval, out] ISVGAnimatedEnumeration **p);
    [propputref, id (DISPID_ISVGMASKELEMENT_X)] HRESULT x ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMASKELEMENT_X)] HRESULT x ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGMASKELEMENT_Y)] HRESULT y ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMASKELEMENT_Y)] HRESULT y ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGMASKELEMENT_WIDTH)] HRESULT width ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMASKELEMENT_WIDTH)] HRESULT width ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGMASKELEMENT_HEIGHT)] HRESULT height ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMASKELEMENT_HEIGHT)] HRESULT height ([retval, out] ISVGAnimatedLength **p);
  };
  [hidden, uuid (3059003c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGMaskElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGMASKELEMENT_MASKUNITS)] void maskUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGMASKELEMENT_MASKUNITS)] ISVGAnimatedEnumeration *maskUnits ();
    [propputref, id (DISPID_ISVGMASKELEMENT_MASKCONTENTUNITS)] void maskContentUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGMASKELEMENT_MASKCONTENTUNITS)] ISVGAnimatedEnumeration *maskContentUnits ();
    [propputref, id (DISPID_ISVGMASKELEMENT_X)] void x (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMASKELEMENT_X)] ISVGAnimatedLength *x ();
    [propputref, id (DISPID_ISVGMASKELEMENT_Y)] void y (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMASKELEMENT_Y)] ISVGAnimatedLength *y ();
    [propputref, id (DISPID_ISVGMASKELEMENT_WIDTH)] void width (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMASKELEMENT_WIDTH)] ISVGAnimatedLength *width ();
    [propputref, id (DISPID_ISVGMASKELEMENT_HEIGHT)] void height (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMASKELEMENT_HEIGHT)] ISVGAnimatedLength *height ();
    [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 ();
    [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);
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105e7-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGMaskElement {
    [default] dispinterface DispSVGMaskElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGMaskElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGMaskElement;")
  typedef enum _svgFeblendMode {
    SVG_FEBLEND_MODE_UNKNOWN = 0,
    SVG_FEBLEND_MODE_NORMAL = 1,
    SVG_FEBLEND_MODE_MULTIPLY = 2,
    SVG_FEBLEND_MODE_SCREEN = 3,
    SVG_FEBLEND_MODE_DARKEN = 4,
    SVG_FEBLEND_MODE_LIGHTEN = 5,
    svgFeblendMode_Max = 0x7FFFFFFF
  } svgFeblendMode;

  typedef enum _svgFecolormatrixType {
    SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0,
    SVG_FECOLORMATRIX_TYPE_MATRIX = 1,
    SVG_FECOLORMATRIX_TYPE_SATURATE = 2,
    SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3,
    SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4,
    svgFecolormatrixType_Max = 0x7FFFFFFF
  } svgFecolormatrixType;

  typedef enum _svgFecomponenttransferType {
    SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0,
    SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1,
    SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2,
    SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3,
    SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4,
    SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5,
    svgFecomponenttransferType_Max = 0x7FFFFFFF
  } svgFecomponenttransferType;

  typedef enum _svgFecompositeOperator {
    SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0,
    SVG_FECOMPOSITE_OPERATOR_OVER = 1,
    SVG_FECOMPOSITE_OPERATOR_IN = 2,
    SVG_FECOMPOSITE_OPERATOR_OUT = 3,
    SVG_FECOMPOSITE_OPERATOR_ATOP = 4,
    SVG_FECOMPOSITE_OPERATOR_XOR = 5,
    SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6,
    svgFecompositeOperator_Max = 0x7FFFFFFF
  } svgFecompositeOperator;

  typedef enum _svgEdgemode {
    SVG_EDGEMODE_UNKNOWN = 0,
    SVG_EDGEMODE_DUPLICATE = 1,
    SVG_EDGEMODE_WRAP = 2,
    SVG_EDGEMODE_NONE = 3,
    svgEdgemode_Max = 0x7FFFFFFF
  } svgEdgemode;

  typedef enum _svgPreserveAlpha {
    SVG_PRESERVEALPHA_FALSE = 0,
    SVG_PRESERVEALPHA_TRUE = 1,
    svgPreserveAlpha_Max = 0x7FFFFFFF
  } svgPreserveAlpha;

  typedef enum _svgChannel {
    SVG_CHANNEL_UNKNOWN = 0,
    SVG_CHANNEL_R = 1,
    SVG_CHANNEL_G = 2,
    SVG_CHANNEL_B = 3,
    SVG_CHANNEL_A = 4,
    svgChannel_Max = 0x7FFFFFFF
  } svgChannel;

  typedef enum _svgMorphologyOperator {
    SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0,
    SVG_MORPHOLOGY_OPERATOR_ERODE = 1,
    SVG_MORPHOLOGY_OPERATOR_DILATE = 2,
    svgMorphologyOperator_Max = 0x7FFFFFFF
  } svgMorphologyOperator;

  typedef enum _svgTurbulenceType {
    SVG_TURBULENCE_TYPE_UNKNOWN = 0,
    SVG_TURBULENCE_TYPE_FACTALNOISE = 1,
    SVG_TURBULENCE_TYPE_TURBULENCE = 2,
    svgTurbulenceType_Max = 0x7FFFFFFF
  } svgTurbulenceType;

  typedef enum _svgStitchtype {
    SVG_STITCHTYPE_UNKNOWN = 0,
    SVG_STITCHTYPE_STITCH = 1,
    SVG_STITCHTYPE_NOSTITCH = 2,
    svgStitchtype_Max = 0x7FFFFFFF
  } svgStitchtype;

  typedef enum _svgMarkerUnits {
    SVG_MARKERUNITS_UNKNOWN = 0,
    SVG_MARKERUNITS_USERSPACEONUSE = 1,
    SVG_MARKERUNITS_STROKEWIDTH = 2,
    svgMarkerUnits_Max = 0x7FFFFFFF
  } svgMarkerUnits;

  typedef enum _svgMarkerOrient {
    SVG_MARKER_ORIENT_UNKNOWN = 0,
    SVG_MARKER_ORIENT_AUTO = 1,
    SVG_MARKER_ORIENT_ANGLE = 2,
    svgMarkerOrient_Max = 0x7FFFFFFF
  } svgMarkerOrient;

  typedef enum _svgMarkerOrientAttribute {
    svgMarkerOrientAttributeAuto = 0,
    svgMarkerOrientAttribute_Max = 0x7FFFFFFF
  } svgMarkerOrientAttribute;
  [odl, oleautomation, dual, uuid (30510525-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGMarkerElement : IDispatch {
    [propputref, id (DISPID_ISVGMARKERELEMENT_REFX)] HRESULT refX ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_REFX)] HRESULT refX ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGMARKERELEMENT_REFY)] HRESULT refY ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_REFY)] HRESULT refY ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGMARKERELEMENT_MARKERUNITS)] HRESULT markerUnits ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_MARKERUNITS)] HRESULT markerUnits ([retval, out] ISVGAnimatedEnumeration **p);
    [propputref, id (DISPID_ISVGMARKERELEMENT_MARKERWIDTH)] HRESULT markerWidth ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_MARKERWIDTH)] HRESULT markerWidth ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGMARKERELEMENT_MARKERHEIGHT)] HRESULT markerHeight ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_MARKERHEIGHT)] HRESULT markerHeight ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGMARKERELEMENT_ORIENTTYPE)] HRESULT orientType ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_ORIENTTYPE)] HRESULT orientType ([retval, out] ISVGAnimatedEnumeration **p);
    [propputref, id (DISPID_ISVGMARKERELEMENT_ORIENTANGLE)] HRESULT orientAngle ([in] ISVGAnimatedAngle *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_ORIENTANGLE)] HRESULT orientAngle ([retval, out] ISVGAnimatedAngle **p);
    [id (DISPID_ISVGMARKERELEMENT_SETORIENTTOAUTO)] HRESULT setOrientToAuto ();
    [id (DISPID_ISVGMARKERELEMENT_SETORIENTTOANGLE)] HRESULT setOrientToAngle ([in] ISVGAngle *pSVGAngle);
  };
  [hidden, uuid (30590036-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGMarkerElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGMARKERELEMENT_REFX)] void refX (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_REFX)] ISVGAnimatedLength *refX ();
    [propputref, id (DISPID_ISVGMARKERELEMENT_REFY)] void refY (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_REFY)] ISVGAnimatedLength *refY ();
    [propputref, id (DISPID_ISVGMARKERELEMENT_MARKERUNITS)] void markerUnits (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_MARKERUNITS)] ISVGAnimatedEnumeration *markerUnits ();
    [propputref, id (DISPID_ISVGMARKERELEMENT_MARKERWIDTH)] void markerWidth (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_MARKERWIDTH)] ISVGAnimatedLength *markerWidth ();
    [propputref, id (DISPID_ISVGMARKERELEMENT_MARKERHEIGHT)] void markerHeight (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_MARKERHEIGHT)] ISVGAnimatedLength *markerHeight ();
    [propputref, id (DISPID_ISVGMARKERELEMENT_ORIENTTYPE)] void orientType (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_ORIENTTYPE)] ISVGAnimatedEnumeration *orientType ();
    [propputref, id (DISPID_ISVGMARKERELEMENT_ORIENTANGLE)] void orientAngle (ISVGAnimatedAngle *v);
    [propget, id (DISPID_ISVGMARKERELEMENT_ORIENTANGLE)] ISVGAnimatedAngle *orientAngle ();
    [id (DISPID_ISVGMARKERELEMENT_SETORIENTTOAUTO)] void setOrientToAuto ();
    [id (DISPID_ISVGMARKERELEMENT_SETORIENTTOANGLE)] void setOrientToAngle ([in] ISVGAngle *pSVGAngle);
    [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 ();
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGFITTOVIEWBOX_VIEWBOX)] ISVGAnimatedRect *viewBox ();
    [propputref, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] void preserveAspectRatio (ISVGAnimatedPreserveAspectRatio *v);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] ISVGAnimatedPreserveAspectRatio *preserveAspectRatio ();
  };
  [noncreatable, uuid (305105de-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGMarkerElement {
    [default] dispinterface DispSVGMarkerElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGMarkerElement;
    interface ISVGElement;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGFitToViewBox;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGMarkerElement;")
  [odl, oleautomation, dual, uuid (3051054e-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGZoomEvent : IDispatch {
    [propget, id (DISPID_ISVGZOOMEVENT_ZOOMRECTSCREEN)] HRESULT zoomRectScreen ([retval, out] ISVGRect **p);
    [propget, id (DISPID_ISVGZOOMEVENT_PREVIOUSSCALE)] HRESULT previousScale ([retval, out] float *p);
    [propget, id (DISPID_ISVGZOOMEVENT_PREVIOUSTRANSLATE)] HRESULT previousTranslate ([retval, out] ISVGPoint **p);
    [propget, id (DISPID_ISVGZOOMEVENT_NEWSCALE)] HRESULT newScale ([retval, out] float *p);
    [propget, id (DISPID_ISVGZOOMEVENT_NEWTRANSLATE)] HRESULT newTranslate ([retval, out] ISVGPoint **p);
  };
  [hidden, uuid (30590031-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGZoomEvent {
    properties:
    methods:
    [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 ();
    [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);
    [propget, id (DISPID_ISVGZOOMEVENT_ZOOMRECTSCREEN)] ISVGRect *zoomRectScreen ();
    [propget, id (DISPID_ISVGZOOMEVENT_PREVIOUSSCALE)] float previousScale ();
    [propget, id (DISPID_ISVGZOOMEVENT_PREVIOUSTRANSLATE)] ISVGPoint *previousTranslate ();
    [propget, id (DISPID_ISVGZOOMEVENT_NEWSCALE)] float newScale ();
    [propget, id (DISPID_ISVGZOOMEVENT_NEWTRANSLATE)] ISVGPoint *newTranslate ();
  };
  [noncreatable, uuid (305105d9-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGZoomEvent {
    [default] dispinterface DispSVGZoomEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface ISVGZoomEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGZoomEvent;")
  [odl, oleautomation, dual, uuid (3051054b-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGAElement : IDispatch {
    [propputref, id (DISPID_ISVGAELEMENT_TARGET)] HRESULT target ([in] ISVGAnimatedString *v);
    [propget, id (DISPID_ISVGAELEMENT_TARGET)] HRESULT target ([retval, out] ISVGAnimatedString **p);
  };
  [hidden, uuid (30590033-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGAElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGAELEMENT_TARGET)] void target (ISVGAnimatedString *v);
    [propget, id (DISPID_ISVGAELEMENT_TARGET)] ISVGAnimatedString *target ();
    [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 ();
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
    [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);
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [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);
  };
  [noncreatable, uuid (305105db-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGAElement {
    [default] dispinterface DispSVGAElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGAElement;
    interface ISVGElement;
    interface ISVGURIReference;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGTransformable;
    interface ISVGLocatable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGAElement;")
  [odl, oleautomation, dual, uuid (3051054c-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGViewElement : IDispatch {
    [propputref, id (DISPID_ISVGVIEWELEMENT_VIEWTARGET)] HRESULT viewTarget ([in] ISVGStringList *v);
    [propget, id (DISPID_ISVGVIEWELEMENT_VIEWTARGET)] HRESULT viewTarget ([retval, out] ISVGStringList **p);
  };
  [hidden, uuid (30590034-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGViewElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGVIEWELEMENT_VIEWTARGET)] void viewTarget (ISVGStringList *v);
    [propget, id (DISPID_ISVGVIEWELEMENT_VIEWTARGET)] ISVGStringList *viewTarget ();
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGFITTOVIEWBOX_VIEWBOX)] ISVGAnimatedRect *viewBox ();
    [propputref, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] void preserveAspectRatio (ISVGAnimatedPreserveAspectRatio *v);
    [propget, id (DISPID_ISVGFITTOVIEWBOX_PRESERVEASPECTRATIO)] ISVGAnimatedPreserveAspectRatio *preserveAspectRatio ();
    [propget, id (DISPID_ISVGZOOMANDPAN_ZOOMANDPAN)] short zoomAndPan ();
  };
  [noncreatable, uuid (305105dc-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGViewElement {
    [default] dispinterface DispSVGViewElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGViewElement;
    interface ISVGElement;
    interface ISVGExternalResourcesRequired;
    interface ISVGFitToViewBox;
    interface ISVGZoomAndPan;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGViewElement;")
  typedef enum _htmlMediaNetworkState {
    htmlMediaNetworkStateEmpty = 0,
    htmlMediaNetworkStateIdle = 1,
    htmlMediaNetworkStateLoading = 2,
    htmlMediaNetworkStateNoSource = 3,
    htmlMediaNetworkState_Max = 0x7FFFFFFF
  } htmlMediaNetworkState;

  typedef enum _htmlMediaReadyState {
    htmlMediaReadyStateHaveNothing = 0,
    htmlMediaReadyStateHaveMetadata = 1,
    htmlMediaReadyStateHaveCurrentData = 2,
    htmlMediaReadyStateHaveFutureData = 3,
    htmlMediaReadyStateHaveEnoughData = 4,
    htmlMediaReadyState_Max = 0x7FFFFFFF
  } htmlMediaReadyState;

  typedef enum _htmlMediaErr {
    htmlMediaErrAborted = 0,
    htmlMediaErrNetwork = 1,
    htmlMediaErrDecode = 2,
    htmlMediaErrSrcNotSupported = 3,
    htmlMediaErr_Max = 0x7FFFFFFF
  } htmlMediaErr;
  [odl, oleautomation, dual, uuid (30510704-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMediaError : IDispatch {
    [propget, id (DISPID_IHTMLMEDIAERROR_CODE)] HRESULT code ([retval, out] short *p);
  };
  [odl, oleautomation, dual, uuid (30510705-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTimeRanges : IDispatch {
    [propget, id (DISPID_IHTMLTIMERANGES_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLTIMERANGES_START)] HRESULT start ([in] long index,[retval, out] float *startTime);
    [id (DISPID_IHTMLTIMERANGES_END)] HRESULT end ([in] long index,[retval, out] float *endTime);
  };
  [odl, oleautomation, dual, uuid (3051080b-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLTimeRanges2 : IDispatch {
    [id (DISPID_IHTMLTIMERANGES2_STARTDOUBLE)] HRESULT startDouble ([in] long index,[retval, out] double *startTime);
    [id (DISPID_IHTMLTIMERANGES2_ENDDOUBLE)] HRESULT endDouble ([in] long index,[retval, out] double *endTime);
  };
  [odl, oleautomation, dual, uuid (30510706-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMediaElement : IDispatch {
    [propget, id (DISPID_IHTMLMEDIAELEMENT_ERROR)] HRESULT error ([retval, out] IHTMLMediaError **p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_SRC), displaybind, bindable] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SRC), displaybind, bindable] HRESULT src ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CURRENTSRC), displaybind, bindable] HRESULT currentSrc ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_NETWORKSTATE), displaybind, bindable] HRESULT networkState ([retval, out] USHORT *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_PRELOAD), displaybind, bindable] HRESULT preload ([in] BSTR v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PRELOAD), displaybind, bindable] HRESULT preload ([retval, out] BSTR *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_BUFFERED), displaybind, bindable] HRESULT buffered ([retval, out] IHTMLTimeRanges **p);
    [id (DISPID_IHTMLMEDIAELEMENT_LOAD)] HRESULT load ();
    [id (DISPID_IHTMLMEDIAELEMENT_CANPLAYTYPE)] HRESULT canPlayType ([in] BSTR type,[retval, out] BSTR *canPlay);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SEEKING), displaybind, bindable] HRESULT seeking ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_CURRENTTIME), displaybind, bindable] HRESULT currentTime ([in] float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CURRENTTIME), displaybind, bindable] HRESULT currentTime ([retval, out] float *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_INITIALTIME), displaybind, bindable] HRESULT initialTime ([retval, out] float *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_DURATION), displaybind, bindable] HRESULT duration ([retval, out] float *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PAUSED), displaybind, bindable] HRESULT paused ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_DEFAULTPLAYBACKRATE), displaybind, bindable] HRESULT defaultPlaybackRate ([in] float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_DEFAULTPLAYBACKRATE), displaybind, bindable] HRESULT defaultPlaybackRate ([retval, out] float *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_PLAYBACKRATE), displaybind, bindable] HRESULT playbackRate ([in] float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PLAYBACKRATE), displaybind, bindable] HRESULT playbackRate ([retval, out] float *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PLAYED), displaybind, bindable] HRESULT played ([retval, out] IHTMLTimeRanges **p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SEEKABLE), displaybind, bindable] HRESULT seekable ([retval, out] IHTMLTimeRanges **p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_ENDED), displaybind, bindable] HRESULT ended ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_AUTOPLAY), displaybind, bindable] HRESULT autoplay ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_AUTOPLAY), displaybind, bindable] HRESULT autoplay ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_LOOP), displaybind, bindable] HRESULT loop ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_LOOP), displaybind, bindable] HRESULT loop ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IHTMLMEDIAELEMENT_PLAY)] HRESULT play ();
    [id (DISPID_IHTMLMEDIAELEMENT_PAUSE)] HRESULT pause ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_CONTROLS), displaybind, bindable] HRESULT controls ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CONTROLS), displaybind, bindable] HRESULT controls ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_VOLUME), displaybind, bindable] HRESULT volume ([in] float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_VOLUME), displaybind, bindable] HRESULT volume ([retval, out] float *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_MUTED), displaybind, bindable] HRESULT muted ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_MUTED), displaybind, bindable] HRESULT muted ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT_AUTOBUFFER), displaybind, bindable] HRESULT autobuffer ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_AUTOBUFFER), displaybind, bindable] HRESULT autobuffer ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (30510809-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMediaElement2 : IDispatch {
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_CURRENTTIMEDOUBLE), displaybind, bindable] HRESULT currentTimeDouble ([in] double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_CURRENTTIMEDOUBLE), displaybind, bindable] HRESULT currentTimeDouble ([retval, out] double *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_INITIALTIMEDOUBLE), displaybind, bindable] HRESULT initialTimeDouble ([retval, out] double *p);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_DURATIONDOUBLE), displaybind, bindable] HRESULT durationDouble ([retval, out] double *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_DEFAULTPLAYBACKRATEDOUBLE), displaybind, bindable] HRESULT defaultPlaybackRateDouble ([in] double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_DEFAULTPLAYBACKRATEDOUBLE), displaybind, bindable] HRESULT defaultPlaybackRateDouble ([retval, out] double *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_PLAYBACKRATEDOUBLE), displaybind, bindable] HRESULT playbackRateDouble ([in] double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_PLAYBACKRATEDOUBLE), displaybind, bindable] HRESULT playbackRateDouble ([retval, out] double *p);
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_VOLUMEDOUBLE), displaybind, bindable] HRESULT volumeDouble ([in] double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_VOLUMEDOUBLE), displaybind, bindable] HRESULT volumeDouble ([retval, out] double *p);
  };
  [odl, oleautomation, dual, uuid (30510792-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLMSMediaElement : IDispatch {
    [propput, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTODISABLED), displaybind, bindable] HRESULT msPlayToDisabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTODISABLED), displaybind, bindable] HRESULT msPlayToDisabled ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] HRESULT msPlayToPrimary ([in] VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] HRESULT msPlayToPrimary ([retval, out] VARIANT_BOOL *p);
  };
  [odl, oleautomation, dual, uuid (30510707-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLSourceElement : IDispatch {
    [propput, id (DISPID_IHTMLSOURCEELEMENT_SRC)] HRESULT src ([in] BSTR v);
    [propget, id (DISPID_IHTMLSOURCEELEMENT_SRC)] HRESULT src ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSOURCEELEMENT_TYPE)] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_IHTMLSOURCEELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_IHTMLSOURCEELEMENT_MEDIA)] HRESULT media ([in] BSTR v);
    [propget, id (DISPID_IHTMLSOURCEELEMENT_MEDIA)] HRESULT media ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (30510708-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAudioElement : IDispatch {
  };
  [odl, oleautomation, dual, uuid (30510709-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLVideoElement : IDispatch {
    [propput, id (DISPID_IHTMLVIDEOELEMENT_WIDTH), displaybind, bindable] HRESULT width ([in] long v);
    [propget, id (DISPID_IHTMLVIDEOELEMENT_WIDTH), displaybind, bindable] HRESULT width ([retval, out] long *p);
    [propput, id (DISPID_IHTMLVIDEOELEMENT_HEIGHT), displaybind, bindable] HRESULT height ([in] long v);
    [propget, id (DISPID_IHTMLVIDEOELEMENT_HEIGHT), displaybind, bindable] HRESULT height ([retval, out] long *p);
    [propget, id (DISPID_IHTMLVIDEOELEMENT_VIDEOWIDTH), displaybind, bindable] HRESULT videoWidth ([retval, out] ULONG *p);
    [propget, id (DISPID_IHTMLVIDEOELEMENT_VIDEOHEIGHT), displaybind, bindable] HRESULT videoHeight ([retval, out] ULONG *p);
    [propput, id (DISPID_IHTMLVIDEOELEMENT_POSTER), displaybind, bindable] HRESULT poster ([in] BSTR v);
    [propget, id (DISPID_IHTMLVIDEOELEMENT_POSTER), displaybind, bindable] HRESULT poster ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305107eb-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLAudioElementFactory : IDispatch {
    [id (DISPID_IHTMLAUDIOELEMENTFACTORY_CREATE)] HRESULT create ([optional, in] VARIANT src,[retval, out] IHTMLAudioElement **);
  };
  [hidden, uuid (30590086-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLMediaError {
    properties:
    methods:
    [propget, id (DISPID_IHTMLMEDIAERROR_CODE)] short code ();
  };
  [noncreatable, uuid (3051070a-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLMediaError {
    [default] dispinterface DispHTMLMediaError;
    interface IHTMLMediaError;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMediaError;")
  [hidden, uuid (30590087-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLTimeRanges {
    properties:
    methods:
    [propget, id (DISPID_IHTMLTIMERANGES_LENGTH)] long length ();
    [id (DISPID_IHTMLTIMERANGES_START)] float start ([in] long index);
    [id (DISPID_IHTMLTIMERANGES_END)] float end ([in] long index);
    [id (DISPID_IHTMLTIMERANGES2_STARTDOUBLE)] double startDouble ([in] long index);
    [id (DISPID_IHTMLTIMERANGES2_ENDDOUBLE)] double endDouble ([in] long index);
  };
  [noncreatable, uuid (3051070b-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLTimeRanges {
    [default] dispinterface DispHTMLTimeRanges;
    interface IHTMLTimeRanges;
    interface IHTMLTimeRanges2;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTimeRanges;")
  [hidden, uuid (30590088-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLMediaElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_ERROR)] IHTMLMediaError *error ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_SRC), displaybind, bindable] void src (BSTR v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SRC), displaybind, bindable] BSTR src ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CURRENTSRC), displaybind, bindable] BSTR currentSrc ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_NETWORKSTATE), displaybind, bindable] USHORT networkState ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_PRELOAD), displaybind, bindable] void preload (BSTR v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PRELOAD), displaybind, bindable] BSTR preload ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_BUFFERED), displaybind, bindable] IHTMLTimeRanges *buffered ();
    [id (DISPID_IHTMLMEDIAELEMENT_LOAD)] void load ();
    [id (DISPID_IHTMLMEDIAELEMENT_CANPLAYTYPE)] BSTR canPlayType ([in] BSTR type);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SEEKING), displaybind, bindable] VARIANT_BOOL seeking ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_CURRENTTIME), displaybind, bindable] void currentTime (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CURRENTTIME), displaybind, bindable] float currentTime ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_INITIALTIME), displaybind, bindable] float initialTime ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_DURATION), displaybind, bindable] float duration ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PAUSED), displaybind, bindable] VARIANT_BOOL paused ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_DEFAULTPLAYBACKRATE), displaybind, bindable] void defaultPlaybackRate (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_DEFAULTPLAYBACKRATE), displaybind, bindable] float defaultPlaybackRate ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_PLAYBACKRATE), displaybind, bindable] void playbackRate (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PLAYBACKRATE), displaybind, bindable] float playbackRate ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PLAYED), displaybind, bindable] IHTMLTimeRanges *played ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SEEKABLE), displaybind, bindable] IHTMLTimeRanges *seekable ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_ENDED), displaybind, bindable] VARIANT_BOOL ended ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_AUTOPLAY), displaybind, bindable] void autoplay (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_AUTOPLAY), displaybind, bindable] VARIANT_BOOL autoplay ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_LOOP), displaybind, bindable] void loop (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_LOOP), displaybind, bindable] VARIANT_BOOL loop ();
    [id (DISPID_IHTMLMEDIAELEMENT_PLAY)] void play ();
    [id (DISPID_IHTMLMEDIAELEMENT_PAUSE)] void pause ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_CONTROLS), displaybind, bindable] void controls (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CONTROLS), displaybind, bindable] VARIANT_BOOL controls ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_VOLUME), displaybind, bindable] void volume (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_VOLUME), displaybind, bindable] float volume ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_MUTED), displaybind, bindable] void muted (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_MUTED), displaybind, bindable] VARIANT_BOOL muted ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_AUTOBUFFER), displaybind, bindable] void autobuffer (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_AUTOBUFFER), displaybind, bindable] VARIANT_BOOL autobuffer ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_CURRENTTIMEDOUBLE), displaybind, bindable] void currentTimeDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_CURRENTTIMEDOUBLE), displaybind, bindable] double currentTimeDouble ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_INITIALTIMEDOUBLE), displaybind, bindable] double initialTimeDouble ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_DURATIONDOUBLE), displaybind, bindable] double durationDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_DEFAULTPLAYBACKRATEDOUBLE), displaybind, bindable] void defaultPlaybackRateDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_DEFAULTPLAYBACKRATEDOUBLE), displaybind, bindable] double defaultPlaybackRateDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_PLAYBACKRATEDOUBLE), displaybind, bindable] void playbackRateDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_PLAYBACKRATEDOUBLE), displaybind, bindable] double playbackRateDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_VOLUMEDOUBLE), displaybind, bindable] void volumeDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_VOLUMEDOUBLE), displaybind, bindable] double volumeDouble ();
    [propput, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTODISABLED), displaybind, bindable] void msPlayToDisabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTODISABLED), displaybind, bindable] VARIANT_BOOL msPlayToDisabled ();
    [propput, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] void msPlayToPrimary (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] VARIANT_BOOL msPlayToPrimary ();
  };
  [noncreatable, uuid (3051070c-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLMediaElement {
    [default] dispinterface DispHTMLMediaElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLMediaElement;
    interface IHTMLMediaElement2;
    interface IHTMLMSMediaElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMediaElement;")
  [hidden, uuid (30590089-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLSourceElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLSOURCEELEMENT_SRC)] void src (BSTR v);
    [propget, id (DISPID_IHTMLSOURCEELEMENT_SRC)] BSTR src ();
    [propput, id (DISPID_IHTMLSOURCEELEMENT_TYPE)] void type (BSTR v);
    [propget, id (DISPID_IHTMLSOURCEELEMENT_TYPE)] BSTR type ();
    [propput, id (DISPID_IHTMLSOURCEELEMENT_MEDIA)] void media (BSTR v);
    [propget, id (DISPID_IHTMLSOURCEELEMENT_MEDIA)] BSTR media ();
  };
  [noncreatable, uuid (3051070d-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLSourceElement {
    [default] dispinterface DispHTMLSourceElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLSourceElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSourceElement;")
  [hidden, uuid (3059008a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLAudioElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_ERROR)] IHTMLMediaError *error ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_SRC), displaybind, bindable] void src (BSTR v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SRC), displaybind, bindable] BSTR src ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CURRENTSRC), displaybind, bindable] BSTR currentSrc ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_NETWORKSTATE), displaybind, bindable] USHORT networkState ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_PRELOAD), displaybind, bindable] void preload (BSTR v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PRELOAD), displaybind, bindable] BSTR preload ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_BUFFERED), displaybind, bindable] IHTMLTimeRanges *buffered ();
    [id (DISPID_IHTMLMEDIAELEMENT_LOAD)] void load ();
    [id (DISPID_IHTMLMEDIAELEMENT_CANPLAYTYPE)] BSTR canPlayType ([in] BSTR type);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SEEKING), displaybind, bindable] VARIANT_BOOL seeking ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_CURRENTTIME), displaybind, bindable] void currentTime (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CURRENTTIME), displaybind, bindable] float currentTime ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_INITIALTIME), displaybind, bindable] float initialTime ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_DURATION), displaybind, bindable] float duration ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PAUSED), displaybind, bindable] VARIANT_BOOL paused ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_DEFAULTPLAYBACKRATE), displaybind, bindable] void defaultPlaybackRate (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_DEFAULTPLAYBACKRATE), displaybind, bindable] float defaultPlaybackRate ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_PLAYBACKRATE), displaybind, bindable] void playbackRate (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PLAYBACKRATE), displaybind, bindable] float playbackRate ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PLAYED), displaybind, bindable] IHTMLTimeRanges *played ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SEEKABLE), displaybind, bindable] IHTMLTimeRanges *seekable ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_ENDED), displaybind, bindable] VARIANT_BOOL ended ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_AUTOPLAY), displaybind, bindable] void autoplay (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_AUTOPLAY), displaybind, bindable] VARIANT_BOOL autoplay ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_LOOP), displaybind, bindable] void loop (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_LOOP), displaybind, bindable] VARIANT_BOOL loop ();
    [id (DISPID_IHTMLMEDIAELEMENT_PLAY)] void play ();
    [id (DISPID_IHTMLMEDIAELEMENT_PAUSE)] void pause ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_CONTROLS), displaybind, bindable] void controls (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CONTROLS), displaybind, bindable] VARIANT_BOOL controls ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_VOLUME), displaybind, bindable] void volume (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_VOLUME), displaybind, bindable] float volume ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_MUTED), displaybind, bindable] void muted (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_MUTED), displaybind, bindable] VARIANT_BOOL muted ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_AUTOBUFFER), displaybind, bindable] void autobuffer (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_AUTOBUFFER), displaybind, bindable] VARIANT_BOOL autobuffer ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_CURRENTTIMEDOUBLE), displaybind, bindable] void currentTimeDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_CURRENTTIMEDOUBLE), displaybind, bindable] double currentTimeDouble ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_INITIALTIMEDOUBLE), displaybind, bindable] double initialTimeDouble ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_DURATIONDOUBLE), displaybind, bindable] double durationDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_DEFAULTPLAYBACKRATEDOUBLE), displaybind, bindable] void defaultPlaybackRateDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_DEFAULTPLAYBACKRATEDOUBLE), displaybind, bindable] double defaultPlaybackRateDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_PLAYBACKRATEDOUBLE), displaybind, bindable] void playbackRateDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_PLAYBACKRATEDOUBLE), displaybind, bindable] double playbackRateDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_VOLUMEDOUBLE), displaybind, bindable] void volumeDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_VOLUMEDOUBLE), displaybind, bindable] double volumeDouble ();
    [propput, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTODISABLED), displaybind, bindable] void msPlayToDisabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTODISABLED), displaybind, bindable] VARIANT_BOOL msPlayToDisabled ();
    [propput, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] void msPlayToPrimary (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] VARIANT_BOOL msPlayToPrimary ();
  };
  [noncreatable, uuid (3051070e-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLAudioElement {
    [default] dispinterface DispHTMLAudioElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLMediaElement;
    interface IHTMLMediaElement2;
    interface IHTMLMSMediaElement;
    interface IHTMLAudioElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CAudioElement;")
  [noncreatable, uuid (305107ec-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLAudioElementFactory {
    [default] interface IHTMLAudioElementFactory;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CAudioElementFactory;")
  [hidden, uuid (3059008b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLVideoElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_ERROR)] IHTMLMediaError *error ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_SRC), displaybind, bindable] void src (BSTR v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SRC), displaybind, bindable] BSTR src ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CURRENTSRC), displaybind, bindable] BSTR currentSrc ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_NETWORKSTATE), displaybind, bindable] USHORT networkState ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_PRELOAD), displaybind, bindable] void preload (BSTR v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PRELOAD), displaybind, bindable] BSTR preload ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_BUFFERED), displaybind, bindable] IHTMLTimeRanges *buffered ();
    [id (DISPID_IHTMLMEDIAELEMENT_LOAD)] void load ();
    [id (DISPID_IHTMLMEDIAELEMENT_CANPLAYTYPE)] BSTR canPlayType ([in] BSTR type);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SEEKING), displaybind, bindable] VARIANT_BOOL seeking ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_CURRENTTIME), displaybind, bindable] void currentTime (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CURRENTTIME), displaybind, bindable] float currentTime ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_INITIALTIME), displaybind, bindable] float initialTime ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_DURATION), displaybind, bindable] float duration ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PAUSED), displaybind, bindable] VARIANT_BOOL paused ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_DEFAULTPLAYBACKRATE), displaybind, bindable] void defaultPlaybackRate (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_DEFAULTPLAYBACKRATE), displaybind, bindable] float defaultPlaybackRate ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_PLAYBACKRATE), displaybind, bindable] void playbackRate (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PLAYBACKRATE), displaybind, bindable] float playbackRate ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_PLAYED), displaybind, bindable] IHTMLTimeRanges *played ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_SEEKABLE), displaybind, bindable] IHTMLTimeRanges *seekable ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT_ENDED), displaybind, bindable] VARIANT_BOOL ended ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_AUTOPLAY), displaybind, bindable] void autoplay (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_AUTOPLAY), displaybind, bindable] VARIANT_BOOL autoplay ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_LOOP), displaybind, bindable] void loop (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_LOOP), displaybind, bindable] VARIANT_BOOL loop ();
    [id (DISPID_IHTMLMEDIAELEMENT_PLAY)] void play ();
    [id (DISPID_IHTMLMEDIAELEMENT_PAUSE)] void pause ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_CONTROLS), displaybind, bindable] void controls (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_CONTROLS), displaybind, bindable] VARIANT_BOOL controls ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_VOLUME), displaybind, bindable] void volume (float v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_VOLUME), displaybind, bindable] float volume ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_MUTED), displaybind, bindable] void muted (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_MUTED), displaybind, bindable] VARIANT_BOOL muted ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT_AUTOBUFFER), displaybind, bindable] void autobuffer (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT_AUTOBUFFER), displaybind, bindable] VARIANT_BOOL autobuffer ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_CURRENTTIMEDOUBLE), displaybind, bindable] void currentTimeDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_CURRENTTIMEDOUBLE), displaybind, bindable] double currentTimeDouble ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_INITIALTIMEDOUBLE), displaybind, bindable] double initialTimeDouble ();
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_DURATIONDOUBLE), displaybind, bindable] double durationDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_DEFAULTPLAYBACKRATEDOUBLE), displaybind, bindable] void defaultPlaybackRateDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_DEFAULTPLAYBACKRATEDOUBLE), displaybind, bindable] double defaultPlaybackRateDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_PLAYBACKRATEDOUBLE), displaybind, bindable] void playbackRateDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_PLAYBACKRATEDOUBLE), displaybind, bindable] double playbackRateDouble ();
    [propput, id (DISPID_IHTMLMEDIAELEMENT2_VOLUMEDOUBLE), displaybind, bindable] void volumeDouble (double v);
    [propget, id (DISPID_IHTMLMEDIAELEMENT2_VOLUMEDOUBLE), displaybind, bindable] double volumeDouble ();
    [propput, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTODISABLED), displaybind, bindable] void msPlayToDisabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTODISABLED), displaybind, bindable] VARIANT_BOOL msPlayToDisabled ();
    [propput, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] void msPlayToPrimary (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLMSMEDIAELEMENT_MSPLAYTOPRIMARY), displaybind, bindable] VARIANT_BOOL msPlayToPrimary ();
    [propput, id (DISPID_IHTMLVIDEOELEMENT_WIDTH), displaybind, bindable] void width (long v);
    [propget, id (DISPID_IHTMLVIDEOELEMENT_WIDTH), displaybind, bindable] long width ();
    [propput, id (DISPID_IHTMLVIDEOELEMENT_HEIGHT), displaybind, bindable] void height (long v);
    [propget, id (DISPID_IHTMLVIDEOELEMENT_HEIGHT), displaybind, bindable] long height ();
    [propget, id (DISPID_IHTMLVIDEOELEMENT_VIDEOWIDTH), displaybind, bindable] ULONG videoWidth ();
    [propget, id (DISPID_IHTMLVIDEOELEMENT_VIDEOHEIGHT), displaybind, bindable] ULONG videoHeight ();
    [propput, id (DISPID_IHTMLVIDEOELEMENT_POSTER), displaybind, bindable] void poster (BSTR v);
    [propget, id (DISPID_IHTMLVIDEOELEMENT_POSTER), displaybind, bindable] BSTR poster ();
  };
  [noncreatable, uuid (3051070f-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLVideoElement {
    [default] dispinterface DispHTMLVideoElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLMediaElement;
    interface IHTMLMediaElement2;
    interface IHTMLMSMediaElement;
    interface IHTMLVideoElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CVideoElement;")
  [odl, oleautomation, dual, uuid (305104f1-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGSwitchElement : IDispatch {
  };
  [hidden, uuid (30590030-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGSwitchElement {
    properties:
    methods:
    [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 ();
    [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);
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
    [propget, id (DISPID_ISVGTRANSFORMABLE_TRANSFORM)] ISVGAnimatedTransformList *transform ();
    [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);
  };
  [noncreatable, uuid (305105d8-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGSwitchElement {
    [default] dispinterface DispSVGSwitchElement;
    interface ISVGSwitchElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
    interface ISVGTransformable;
    interface ISVGLocatable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGSwitchElement;")
  [odl, oleautomation, dual, uuid (305104ea-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGDescElement : IDispatch {
  };
  [hidden, uuid (30590005-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGDescElement {
    properties:
    methods:
    [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 ();
  };
  [noncreatable, uuid (30510572-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGDescElement {
    [default] dispinterface DispSVGDescElement;
    interface ISVGDescElement;
    interface ISVGElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGDescElement;")
  [odl, oleautomation, dual, uuid (305104eb-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGTitleElement : IDispatch {
  };
  [hidden, uuid (30590006-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGTitleElement {
    properties:
    methods:
    [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 ();
  };
  [noncreatable, uuid (30510573-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGTitleElement {
    [default] dispinterface DispSVGTitleElement;
    interface ISVGTitleElement;
    interface ISVGElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGTitleElement;")
  [odl, oleautomation, dual, uuid (30510560-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGMetadataElement : IDispatch {
  };
  [hidden, uuid (3059002f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGMetadataElement {
    properties:
    methods:
    [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 ();
  };
  [noncreatable, uuid (305105d7-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGMetadataElement {
    [default] dispinterface DispSVGMetadataElement;
    interface ISVGMetadataElement;
    interface ISVGElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGMetadataElement;")
  interface ISVGElement;
  interface ISVGUseElement;
  interface ISVGElementInstanceList;
  [odl, oleautomation, dual, uuid (305104ee-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGElementInstance : IDispatch {
    [propget, id (DISPID_ISVGELEMENTINSTANCE_CORRESPONDINGELEMENT)] HRESULT correspondingElement ([retval, out] ISVGElement **p);
    [propget, id (DISPID_ISVGELEMENTINSTANCE_CORRESPONDINGUSEELEMENT)] HRESULT correspondingUseElement ([retval, out] ISVGUseElement **p);
    [propget, id (DISPID_ISVGELEMENTINSTANCE_PARENTNODE)] HRESULT parentNode ([retval, out] ISVGElementInstance **p);
    [propget, id (DISPID_ISVGELEMENTINSTANCE_CHILDNODES)] HRESULT childNodes ([retval, out] ISVGElementInstanceList **p);
    [propget, id (DISPID_ISVGELEMENTINSTANCE_FIRSTCHILD)] HRESULT firstChild ([retval, out] ISVGElementInstance **p);
    [propget, id (DISPID_ISVGELEMENTINSTANCE_LASTCHILD)] HRESULT lastChild ([retval, out] ISVGElementInstance **p);
    [propget, id (DISPID_ISVGELEMENTINSTANCE_PREVIOUSSIBLING)] HRESULT previousSibling ([retval, out] ISVGElementInstance **p);
    [propget, id (DISPID_ISVGELEMENTINSTANCE_NEXTSIBLING)] HRESULT nextSibling ([retval, out] ISVGElementInstance **p);
  };
  [hidden, uuid (30590007-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGElementInstance {
    properties:
    methods:
    [propget, id (DISPID_ISVGELEMENTINSTANCE_CORRESPONDINGELEMENT)] ISVGElement *correspondingElement ();
    [propget, id (DISPID_ISVGELEMENTINSTANCE_CORRESPONDINGUSEELEMENT)] ISVGUseElement *correspondingUseElement ();
    [propget, id (DISPID_ISVGELEMENTINSTANCE_PARENTNODE)] ISVGElementInstance *parentNode ();
    [propget, id (DISPID_ISVGELEMENTINSTANCE_CHILDNODES)] ISVGElementInstanceList *childNodes ();
    [propget, id (DISPID_ISVGELEMENTINSTANCE_FIRSTCHILD)] ISVGElementInstance *firstChild ();
    [propget, id (DISPID_ISVGELEMENTINSTANCE_LASTCHILD)] ISVGElementInstance *lastChild ();
    [propget, id (DISPID_ISVGELEMENTINSTANCE_PREVIOUSSIBLING)] ISVGElementInstance *previousSibling ();
    [propget, id (DISPID_ISVGELEMENTINSTANCE_NEXTSIBLING)] ISVGElementInstance *nextSibling ();
    [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);
  };
  [noncreatable, uuid (30510575-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGElementInstance {
    [default] dispinterface DispSVGElementInstance;
    interface ISVGElementInstance;
    interface IEventTarget;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGElementInstance;")
  interface ISVGElementInstance;
  [odl, oleautomation, dual, uuid (305104ef-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGElementInstanceList : IDispatch {
    [propget, id (DISPID_ISVGELEMENTINSTANCELIST_LENGTH)] HRESULT length ([retval, out] long *p);
    [id (DISPID_ISVGELEMENTINSTANCELIST_ITEM)] HRESULT item ([in] long index,[retval, out] ISVGElementInstance **ppResult);
  };
  [hidden, uuid (30590008-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGElementInstanceList {
    properties:
    methods:
    [propget, id (DISPID_ISVGELEMENTINSTANCELIST_LENGTH)] long length ();
    [id (DISPID_ISVGELEMENTINSTANCELIST_ITEM)] ISVGElementInstance *item ([in] long index);
  };
  [noncreatable, uuid (30510576-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGElementInstanceList {
    [default] dispinterface DispSVGElementInstanceList;
    interface ISVGElementInstanceList;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGElementInstanceList;")
  [odl, oleautomation, dual, uuid (3051072b-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMException : IDispatch {
    [propput, id (DISPID_IDOMEXCEPTION_CODE)] HRESULT code ([in] long v);
    [propget, id (DISPID_IDOMEXCEPTION_CODE)] HRESULT code ([retval, out] long *p);
    [propget, id (DISPID_IDOMEXCEPTION_MESSAGE)] HRESULT message ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3051072d-98b5-11cf-bb82-00aa00bdce0b)] interface IRangeException : IDispatch {
    [propput, id (DISPID_IRANGEEXCEPTION_CODE)] HRESULT code ([in] long v);
    [propget, id (DISPID_IRANGEEXCEPTION_CODE)] HRESULT code ([retval, out] long *p);
    [propget, id (DISPID_IRANGEEXCEPTION_MESSAGE)] HRESULT message ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3051072f-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGException : IDispatch {
    [propput, id (DISPID_ISVGEXCEPTION_CODE)] HRESULT code ([in] long v);
    [propget, id (DISPID_ISVGEXCEPTION_CODE)] HRESULT code ([retval, out] long *p);
    [propget, id (DISPID_ISVGEXCEPTION_MESSAGE)] HRESULT message ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (3051073a-98b5-11cf-bb82-00aa00bdce0b)] interface IEventException : IDispatch {
    [propput, id (DISPID_IEVENTEXCEPTION_CODE)] HRESULT code ([in] long v);
    [propget, id (DISPID_IEVENTEXCEPTION_CODE)] HRESULT code ([retval, out] long *p);
    [propget, id (DISPID_IEVENTEXCEPTION_MESSAGE)] HRESULT message ([retval, out] BSTR *p);
  };
  [hidden, uuid (30590094-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMException {
    properties:
    methods:
    [propput, id (DISPID_IDOMEXCEPTION_CODE)] void code (long v);
    [propget, id (DISPID_IDOMEXCEPTION_CODE)] long code ();
    [propget, id (DISPID_IDOMEXCEPTION_MESSAGE)] BSTR message ();
  };
  [noncreatable, uuid (3051072c-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMException {
    [default] dispinterface DispDOMException;
    interface IDOMException;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMException;")
  [hidden, uuid (30590095-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispRangeException {
    properties:
    methods:
    [propput, id (DISPID_IRANGEEXCEPTION_CODE)] void code (long v);
    [propget, id (DISPID_IRANGEEXCEPTION_CODE)] long code ();
    [propget, id (DISPID_IRANGEEXCEPTION_MESSAGE)] BSTR message ();
  };
  [noncreatable, uuid (3051072e-98b5-11cf-bb82-00aa00bdce0b)] coclass RangeException {
    [default] dispinterface DispRangeException;
    interface IRangeException;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CRangeException;")
  [hidden, uuid (30590096-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGException {
    properties:
    methods:
    [propput, id (DISPID_ISVGEXCEPTION_CODE)] void code (long v);
    [propget, id (DISPID_ISVGEXCEPTION_CODE)] long code ();
    [propget, id (DISPID_ISVGEXCEPTION_MESSAGE)] BSTR message ();
  };
  [noncreatable, uuid (30510730-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGException {
    [default] dispinterface DispSVGException;
    interface ISVGException;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGException;")
  [hidden, uuid (30590099-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispEventException {
    properties:
    methods:
  };
  [noncreatable, uuid (3051073b-98b5-11cf-bb82-00aa00bdce0b)] coclass EventException {
    [default] dispinterface DispEventException;
    interface IEventException;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CEventException;")
  [odl, oleautomation, dual, uuid (3051054d-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGScriptElement : IDispatch {
    [propput, id (DISPID_ISVGSCRIPTELEMENT_TYPE)] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_ISVGSCRIPTELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
  };
  [hidden, uuid (30590039-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGScriptElement {
    properties:
    methods:
    [propput, id (DISPID_ISVGSCRIPTELEMENT_TYPE)] void type (BSTR v);
    [propget, id (DISPID_ISVGSCRIPTELEMENT_TYPE)] BSTR type ();
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
  };
  [noncreatable, uuid (305105e1-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGScriptElement {
    [default] dispinterface DispSVGScriptElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGScriptElement;
    interface ISVGURIReference;
    interface ISVGExternalResourcesRequired;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGScriptElement;")
  [odl, oleautomation, dual, uuid (305104f3-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGStyleElement : IDispatch {
    [propput, id (DISPID_ISVGSTYLEELEMENT_TYPE)] HRESULT type ([in] BSTR v);
    [propget, id (DISPID_ISVGSTYLEELEMENT_TYPE)] HRESULT type ([retval, out] BSTR *p);
    [propput, id (DISPID_ISVGSTYLEELEMENT_MEDIA)] HRESULT media ([in] BSTR v);
    [propget, id (DISPID_ISVGSTYLEELEMENT_MEDIA)] HRESULT media ([retval, out] BSTR *p);
  };
  [hidden, uuid (30590029-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGStyleElement {
    properties:
    methods:
    [propput, id (DISPID_ISVGSTYLEELEMENT_TYPE)] void type (BSTR v);
    [propget, id (DISPID_ISVGSTYLEELEMENT_TYPE)] BSTR type ();
    [propput, id (DISPID_ISVGSTYLEELEMENT_MEDIA)] void media (BSTR v);
    [propget, id (DISPID_ISVGSTYLEELEMENT_MEDIA)] BSTR media ();
  };
  [noncreatable, uuid (305105d1-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGStyleElement {
    [default] dispinterface DispSVGStyleElement;
    interface ISVGStyleElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGStyleElement;")
  typedef enum _lengthAdjust {
    LENGTHADJUST_UNKNOWN = 0,
    LENGTHADJUST_SPACING = 1,
    LENGTHADJUST_SPACINGANDGLYPHS = 2,
    lengthAdjust_Max = 0x7FFFFFFF
  } lengthAdjust;
  [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 ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)] HRESULT lengthAdjust ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGTEXTCONTENTELEMENT_LENGTHADJUST)] HRESULT lengthAdjust ([retval, out] ISVGAnimatedEnumeration **p);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETNUMBEROFCHARS)] HRESULT getNumberOfChars ([retval, out] long *pResult);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETCOMPUTEDTEXTLENGTH)] HRESULT getComputedTextLength ([retval, out] float *pResult);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETSUBSTRINGLENGTH)] HRESULT getSubStringLength ([in] long charnum,[in] long nchars,[retval, out] float *pResult);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETSTARTPOSITIONOFCHAR)] HRESULT getStartPositionOfChar ([in] long charnum,[retval, out] ISVGPoint **ppResult);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETENDPOSITIONOFCHAR)] HRESULT getEndPositionOfChar ([in] long charnum,[retval, out] ISVGPoint **ppResult);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETEXTENTOFCHAR)] HRESULT getExtentOfChar ([in] long charnum,[retval, out] ISVGRect **ppResult);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETROTATIONOFCHAR)] HRESULT getRotationOfChar ([in] long charnum,[retval, out] float *pResult);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_GETCHARNUMATPOSITION)] HRESULT getCharNumAtPosition ([in] ISVGPoint *point,[retval, out] long *pResult);
    [id (DISPID_ISVGTEXTCONTENTELEMENT_SELECTSUBSTRING)] HRESULT selectSubString ([in] long charnum,[in] long nchars);
  };
  [hidden, uuid (30590035-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGTextContentElement {
    properties:
    methods:
    [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 ();
    [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);
    [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);
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105dd-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGTextContentElement {
    [default] dispinterface DispSVGTextContentElement;
    interface ISVGElement;
    interface ISVGTextContentElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGTextContentElement;")
  [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 ([retval, out] ISVGAnimatedLengthList **p);
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_Y)] HRESULT y ([in] ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_Y)] HRESULT y ([retval, out] ISVGAnimatedLengthList **p);
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DX)] HRESULT dx ([in] ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DX)] HRESULT dx ([retval, out] ISVGAnimatedLengthList **p);
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DY)] HRESULT dy ([in] ISVGAnimatedLengthList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_DY)] HRESULT dy ([retval, out] ISVGAnimatedLengthList **p);
    [propputref, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_ROTATE)] HRESULT rotate ([in] ISVGAnimatedNumberList *v);
    [propget, id (DISPID_ISVGTEXTPOSITIONINGELEMENT_ROTATE)] HRESULT rotate ([retval, out] ISVGAnimatedNumberList **p);
  };
  [hidden, uuid (30590038-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGTextPositioningElement {
    properties:
    methods:
    [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 ();
    [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);
    [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 ();
    [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);
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105e0-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGTextPositioningElement {
    [default] dispinterface DispSVGTextPositioningElement;
    interface ISVGTextPositioningElement;
    interface ISVGTextContentElement;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGTextPositioningElement;")
  [odl, oleautomation, dual, uuid (30510738-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMDocumentType : IDispatch {
    [propget, id (DISPID_IDOMDOCUMENTTYPE_NAME)] HRESULT name ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMDOCUMENTTYPE_ENTITIES)] HRESULT entities ([retval, out] IDispatch **p);
    [propget, id (DISPID_IDOMDOCUMENTTYPE_NOTATIONS)] HRESULT notations ([retval, out] IDispatch **p);
    [propget, id (DISPID_IDOMDOCUMENTTYPE_PUBLICID)] HRESULT publicId ([retval, out] VARIANT *p);
    [propget, id (DISPID_IDOMDOCUMENTTYPE_SYSTEMID)] HRESULT systemId ([retval, out] VARIANT *p);
    [propget, id (DISPID_IDOMDOCUMENTTYPE_INTERNALSUBSET)] HRESULT internalSubset ([retval, out] VARIANT *p);
  };
  [hidden, uuid (30590098-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMDocumentType {
    properties:
    methods:
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDocumentType;")
  [odl, oleautomation, dual, uuid (30510746-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMNodeIterator : IDispatch {
    [propget, id (DISPID_IDOMNODEITERATOR_ROOT)] HRESULT root ([retval, out] IDispatch **p);
    [propget, id (DISPID_IDOMNODEITERATOR_WHATTOSHOW)] HRESULT whatToShow ([retval, out] ULONG *p);
    [propget, id (DISPID_IDOMNODEITERATOR_FILTER)] HRESULT filter ([retval, out] IDispatch **p);
    [propget, id (DISPID_IDOMNODEITERATOR_EXPANDENTITYREFERENCES)] HRESULT expandEntityReferences ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IDOMNODEITERATOR_NEXTNODE)] HRESULT nextNode ([retval, out] IDispatch **ppRetNode);
    [id (DISPID_IDOMNODEITERATOR_PREVIOUSNODE)] HRESULT previousNode ([retval, out] IDispatch **ppRetNode);
    [id (DISPID_IDOMNODEITERATOR_DETACH)] HRESULT detach ();
  };
  [odl, oleautomation, dual, uuid (30510748-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMTreeWalker : IDispatch {
    [propget, id (DISPID_IDOMTREEWALKER_ROOT)] HRESULT root ([retval, out] IDispatch **p);
    [propget, id (DISPID_IDOMTREEWALKER_WHATTOSHOW)] HRESULT whatToShow ([retval, out] ULONG *p);
    [propget, id (DISPID_IDOMTREEWALKER_FILTER)] HRESULT filter ([retval, out] IDispatch **p);
    [propget, id (DISPID_IDOMTREEWALKER_EXPANDENTITYREFERENCES)] HRESULT expandEntityReferences ([retval, out] VARIANT_BOOL *p);
    [propputref, id (DISPID_IDOMTREEWALKER_CURRENTNODE)] HRESULT currentNode ([in] IDispatch *v);
    [propget, id (DISPID_IDOMTREEWALKER_CURRENTNODE)] HRESULT currentNode ([retval, out] IDispatch **p);
    [id (DISPID_IDOMTREEWALKER_PARENTNODE)] HRESULT parentNode ([retval, out] IDispatch **ppRetNode);
    [id (DISPID_IDOMTREEWALKER_FIRSTCHILD)] HRESULT firstChild ([retval, out] IDispatch **ppRetNode);
    [id (DISPID_IDOMTREEWALKER_LASTCHILD)] HRESULT lastChild ([retval, out] IDispatch **ppRetNode);
    [id (DISPID_IDOMTREEWALKER_PREVIOUSSIBLING)] HRESULT previousSibling ([retval, out] IDispatch **ppRetNode);
    [id (DISPID_IDOMTREEWALKER_NEXTSIBLING)] HRESULT nextSibling ([retval, out] IDispatch **ppRetNode);
    [id (DISPID_IDOMTREEWALKER_PREVIOUSNODE)] HRESULT previousNode ([retval, out] IDispatch **ppRetNode);
    [id (DISPID_IDOMTREEWALKER_NEXTNODE)] HRESULT nextNode ([retval, out] IDispatch **ppRetNode);
  };
  [hidden, uuid (3059009c-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispNodeIterator {
    properties:
    methods:
    [propget, id (DISPID_IDOMNODEITERATOR_ROOT)] IDispatch *root ();
    [propget, id (DISPID_IDOMNODEITERATOR_WHATTOSHOW)] ULONG whatToShow ();
    [propget, id (DISPID_IDOMNODEITERATOR_FILTER)] IDispatch *filter ();
    [propget, id (DISPID_IDOMNODEITERATOR_EXPANDENTITYREFERENCES)] VARIANT_BOOL expandEntityReferences ();
    [id (DISPID_IDOMNODEITERATOR_NEXTNODE)] IDispatch *nextNode ();
    [id (DISPID_IDOMNODEITERATOR_PREVIOUSNODE)] IDispatch *previousNode ();
    [id (DISPID_IDOMNODEITERATOR_DETACH)] void detach ();
  };
  [noncreatable, uuid (30510745-98b5-11cf-bb82-00aa00bdce0b)] coclass NodeIterator {
    [default] dispinterface DispNodeIterator;
    interface IDOMNodeIterator;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTraversalNodeIterator;")
  [hidden, uuid (3059009d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispTreeWalker {
    properties:
    methods:
    [propget, id (DISPID_IDOMTREEWALKER_ROOT)] IDispatch *root ();
    [propget, id (DISPID_IDOMTREEWALKER_WHATTOSHOW)] ULONG whatToShow ();
    [propget, id (DISPID_IDOMTREEWALKER_FILTER)] IDispatch *filter ();
    [propget, id (DISPID_IDOMTREEWALKER_EXPANDENTITYREFERENCES)] VARIANT_BOOL expandEntityReferences ();
    [propputref, id (DISPID_IDOMTREEWALKER_CURRENTNODE)] void currentNode (IDispatch *v);
    [propget, id (DISPID_IDOMTREEWALKER_CURRENTNODE)] IDispatch *currentNode ();
    [id (DISPID_IDOMTREEWALKER_PARENTNODE)] IDispatch *parentNode ();
    [id (DISPID_IDOMTREEWALKER_FIRSTCHILD)] IDispatch *firstChild ();
    [id (DISPID_IDOMTREEWALKER_LASTCHILD)] IDispatch *lastChild ();
    [id (DISPID_IDOMTREEWALKER_PREVIOUSSIBLING)] IDispatch *previousSibling ();
    [id (DISPID_IDOMTREEWALKER_NEXTSIBLING)] IDispatch *nextSibling ();
    [id (DISPID_IDOMTREEWALKER_PREVIOUSNODE)] IDispatch *previousNode ();
    [id (DISPID_IDOMTREEWALKER_NEXTNODE)] IDispatch *nextNode ();
  };
  [noncreatable, uuid (30510747-98b5-11cf-bb82-00aa00bdce0b)] coclass TreeWalker {
    [default] dispinterface DispTreeWalker;
    interface IDOMTreeWalker;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTraversalTreeWalker;")
  [odl, oleautomation, dual, uuid (30510742-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMProcessingInstruction : IDispatch {
    [propget, id (DISPID_IDOMPROCESSINGINSTRUCTION_TARGET)] HRESULT target ([retval, out] BSTR *p);
    [propput, id (DISPID_IDOMPROCESSINGINSTRUCTION_DATA)] HRESULT data ([in] BSTR v);
    [propget, id (DISPID_IDOMPROCESSINGINSTRUCTION_DATA)] HRESULT data ([retval, out] BSTR *p);
  };
  [hidden, uuid (3059009b-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMProcessingInstruction {
    properties:
    methods:
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [propget, id (DISPID_IDOMPROCESSINGINSTRUCTION_TARGET)] BSTR target ();
    [propput, id (DISPID_IDOMPROCESSINGINSTRUCTION_DATA)] void data (BSTR v);
    [propget, id (DISPID_IDOMPROCESSINGINSTRUCTION_DATA)] BSTR data ();
  };
  [noncreatable, uuid (30510743-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMProcessingInstruction {
    [default] dispinterface DispDOMProcessingInstruction;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IDOMProcessingInstruction;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CProcessingInstruction;")
  interface IHTMLPerformance;
  interface IHTMLPerformanceNavigation;
  interface IHTMLPerformanceTiming;
  [odl, oleautomation, dual, uuid (3051074e-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLPerformance : IDispatch {
    [propget, id (DISPID_IHTMLPERFORMANCE_NAVIGATION)] HRESULT navigation ([retval, out] IHTMLPerformanceNavigation **p);
    [propget, id (DISPID_IHTMLPERFORMANCE_TIMING)] HRESULT timing ([retval, out] IHTMLPerformanceTiming **p);
    [id (DISPID_IHTMLPERFORMANCE_TOSTRING)] HRESULT toString ([retval, out] BSTR *string);
    [id (DISPID_IHTMLPERFORMANCE_TOJSON)] HRESULT toJSON ([retval, out] VARIANT *pVar);
  };
  [odl, oleautomation, dual, uuid (30510750-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLPerformanceNavigation : IDispatch {
    [propget, id (DISPID_IHTMLPERFORMANCENAVIGATION_TYPE)] HRESULT type ([retval, out] ULONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCENAVIGATION_REDIRECTCOUNT)] HRESULT redirectCount ([retval, out] ULONG *p);
    [id (DISPID_IHTMLPERFORMANCENAVIGATION_TOSTRING)] HRESULT toString ([retval, out] BSTR *string);
    [id (DISPID_IHTMLPERFORMANCENAVIGATION_TOJSON)] HRESULT toJSON ([retval, out] VARIANT *pVar);
  };
  [odl, oleautomation, dual, uuid (30510752-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLPerformanceTiming : IDispatch {
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_NAVIGATIONSTART)] HRESULT navigationStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_UNLOADEVENTSTART)] HRESULT unloadEventStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_UNLOADEVENTEND)] HRESULT unloadEventEnd ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_REDIRECTSTART)] HRESULT redirectStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_REDIRECTEND)] HRESULT redirectEnd ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_FETCHSTART)] HRESULT fetchStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMAINLOOKUPSTART)] HRESULT domainLookupStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMAINLOOKUPEND)] HRESULT domainLookupEnd ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_CONNECTSTART)] HRESULT connectStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_CONNECTEND)] HRESULT connectEnd ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_REQUESTSTART)] HRESULT requestStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_RESPONSESTART)] HRESULT responseStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_RESPONSEEND)] HRESULT responseEnd ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMLOADING)] HRESULT domLoading ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMINTERACTIVE)] HRESULT domInteractive ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMCONTENTLOADEDEVENTSTART)] HRESULT domContentLoadedEventStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMCONTENTLOADEDEVENTEND)] HRESULT domContentLoadedEventEnd ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMCOMPLETE)] HRESULT domComplete ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_LOADEVENTSTART)] HRESULT loadEventStart ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_LOADEVENTEND)] HRESULT loadEventEnd ([retval, out] ULONGLONG *p);
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_MSFIRSTPAINT)] HRESULT msFirstPaint ([retval, out] ULONGLONG *p);
    [id (DISPID_IHTMLPERFORMANCETIMING_TOSTRING)] HRESULT toString ([retval, out] BSTR *string);
    [id (DISPID_IHTMLPERFORMANCETIMING_TOJSON)] HRESULT toJSON ([retval, out] VARIANT *pVar);
  };
  [hidden, uuid (3059009f-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLPerformance {
    properties:
    methods:
    [propget, id (DISPID_IHTMLPERFORMANCE_NAVIGATION)] IHTMLPerformanceNavigation *navigation ();
    [propget, id (DISPID_IHTMLPERFORMANCE_TIMING)] IHTMLPerformanceTiming *timing ();
    [id (DISPID_IHTMLPERFORMANCE_TOSTRING)] BSTR toString ();
    [id (DISPID_IHTMLPERFORMANCE_TOJSON)] VARIANT toJSON ();
  };
  [noncreatable, uuid (3051074f-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLPerformance {
    [default] dispinterface DispHTMLPerformance;
    interface IHTMLPerformance;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMSPerformance;")
  [hidden, uuid (305900a0-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLPerformanceNavigation {
    properties:
    methods:
    [propget, id (DISPID_IHTMLPERFORMANCENAVIGATION_TYPE)] ULONG type ();
    [propget, id (DISPID_IHTMLPERFORMANCENAVIGATION_REDIRECTCOUNT)] ULONG redirectCount ();
    [id (DISPID_IHTMLPERFORMANCENAVIGATION_TOSTRING)] BSTR toString ();
    [id (DISPID_IHTMLPERFORMANCENAVIGATION_TOJSON)] VARIANT toJSON ();
  };
  [noncreatable, uuid (30510751-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLPerformanceNavigation {
    [default] dispinterface DispHTMLPerformanceNavigation;
    interface IHTMLPerformanceNavigation;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMSPerformanceNavigation;")
  [hidden, uuid (305900a1-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLPerformanceTiming {
    properties:
    methods:
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_NAVIGATIONSTART)] ULONGLONG navigationStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_UNLOADEVENTSTART)] ULONGLONG unloadEventStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_UNLOADEVENTEND)] ULONGLONG unloadEventEnd ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_REDIRECTSTART)] ULONGLONG redirectStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_REDIRECTEND)] ULONGLONG redirectEnd ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_FETCHSTART)] ULONGLONG fetchStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMAINLOOKUPSTART)] ULONGLONG domainLookupStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMAINLOOKUPEND)] ULONGLONG domainLookupEnd ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_CONNECTSTART)] ULONGLONG connectStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_CONNECTEND)] ULONGLONG connectEnd ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_REQUESTSTART)] ULONGLONG requestStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_RESPONSESTART)] ULONGLONG responseStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_RESPONSEEND)] ULONGLONG responseEnd ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMLOADING)] ULONGLONG domLoading ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMINTERACTIVE)] ULONGLONG domInteractive ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMCONTENTLOADEDEVENTSTART)] ULONGLONG domContentLoadedEventStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMCONTENTLOADEDEVENTEND)] ULONGLONG domContentLoadedEventEnd ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_DOMCOMPLETE)] ULONGLONG domComplete ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_LOADEVENTSTART)] ULONGLONG loadEventStart ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_LOADEVENTEND)] ULONGLONG loadEventEnd ();
    [propget, id (DISPID_IHTMLPERFORMANCETIMING_MSFIRSTPAINT)] ULONGLONG msFirstPaint ();
    [id (DISPID_IHTMLPERFORMANCETIMING_TOSTRING)] BSTR toString ();
    [id (DISPID_IHTMLPERFORMANCETIMING_TOJSON)] VARIANT toJSON ();
  };
  [noncreatable, uuid (30510753-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLPerformanceTiming {
    [default] dispinterface DispHTMLPerformanceTiming;
    interface IHTMLPerformanceTiming;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CMSPerformanceTiming;")
  [odl, oleautomation, dual, uuid (3051051d-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGTSpanElement : IDispatch {
  };
  [hidden, uuid (3059003a-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGTSpanElement {
    properties:
    methods:
    [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 ();
    [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);
    [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 ();
    [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);
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [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;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGTSpanElement;")
  [odl, oleautomation, dual, uuid (3050f6b4-98b5-11cf-bb82-00aa00bdce0b)] interface ITemplatePrinter : IDispatch {
    [id (DISPID_ITEMPLATEPRINTER_STARTDOC)] HRESULT startDoc ([in] BSTR bstrTitle,[retval, out] VARIANT_BOOL *p);
    [id (DISPID_ITEMPLATEPRINTER_STOPDOC)] HRESULT stopDoc ();
    [id (DISPID_ITEMPLATEPRINTER_PRINTBLANKPAGE)] HRESULT printBlankPage ();
    [id (DISPID_ITEMPLATEPRINTER_PRINTPAGE)] HRESULT printPage ([in] IDispatch *pElemDisp);
    [id (DISPID_ITEMPLATEPRINTER_ENSUREPRINTDIALOGDEFAULTS)] HRESULT ensurePrintDialogDefaults ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_ITEMPLATEPRINTER_SHOWPRINTDIALOG)] HRESULT showPrintDialog ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_ITEMPLATEPRINTER_SHOWPAGESETUPDIALOG)] HRESULT showPageSetupDialog ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_ITEMPLATEPRINTER_PRINTNONNATIVE)] HRESULT printNonNative ([in] IUnknown *pMarkup,[retval, out] VARIANT_BOOL *p);
    [id (DISPID_ITEMPLATEPRINTER_PRINTNONNATIVEFRAMES)] HRESULT printNonNativeFrames ([in] IUnknown *pMarkup,[in] VARIANT_BOOL fActiveFrame);
    [propput, id (DISPID_ITEMPLATEPRINTER_FRAMESETDOCUMENT)] HRESULT framesetDocument ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_FRAMESETDOCUMENT)] HRESULT framesetDocument ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_FRAMEACTIVE)] HRESULT frameActive ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_FRAMEACTIVE)] HRESULT frameActive ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_FRAMEASSHOWN)] HRESULT frameAsShown ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_FRAMEASSHOWN)] HRESULT frameAsShown ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_SELECTION)] HRESULT selection ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_SELECTION)] HRESULT selection ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_SELECTEDPAGES)] HRESULT selectedPages ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_SELECTEDPAGES)] HRESULT selectedPages ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_CURRENTPAGE)] HRESULT currentPage ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_CURRENTPAGE)] HRESULT currentPage ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_CURRENTPAGEAVAIL)] HRESULT currentPageAvail ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_CURRENTPAGEAVAIL)] HRESULT currentPageAvail ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_COLLATE)] HRESULT collate ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_COLLATE)] HRESULT collate ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_ITEMPLATEPRINTER_DUPLEX)] HRESULT duplex ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_COPIES)] HRESULT copies ([in] USHORT v);
    [propget, id (DISPID_ITEMPLATEPRINTER_COPIES)] HRESULT copies ([retval, out] USHORT *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_PAGEFROM)] HRESULT pageFrom ([in] USHORT v);
    [propget, id (DISPID_ITEMPLATEPRINTER_PAGEFROM)] HRESULT pageFrom ([retval, out] USHORT *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_PAGETO)] HRESULT pageTo ([in] USHORT v);
    [propget, id (DISPID_ITEMPLATEPRINTER_PAGETO)] HRESULT pageTo ([retval, out] USHORT *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_TABLEOFLINKS)] HRESULT tableOfLinks ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_TABLEOFLINKS)] HRESULT tableOfLinks ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_ALLLINKEDDOCUMENTS)] HRESULT allLinkedDocuments ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_ALLLINKEDDOCUMENTS)] HRESULT allLinkedDocuments ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_HEADER)] HRESULT header ([in] BSTR v);
    [propget, id (DISPID_ITEMPLATEPRINTER_HEADER)] HRESULT header ([retval, out] BSTR *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_FOOTER)] HRESULT footer ([in] BSTR v);
    [propget, id (DISPID_ITEMPLATEPRINTER_FOOTER)] HRESULT footer ([retval, out] BSTR *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_MARGINLEFT)] HRESULT marginLeft ([in] long v);
    [propget, id (DISPID_ITEMPLATEPRINTER_MARGINLEFT)] HRESULT marginLeft ([retval, out] long *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_MARGINRIGHT)] HRESULT marginRight ([in] long v);
    [propget, id (DISPID_ITEMPLATEPRINTER_MARGINRIGHT)] HRESULT marginRight ([retval, out] long *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_MARGINTOP)] HRESULT marginTop ([in] long v);
    [propget, id (DISPID_ITEMPLATEPRINTER_MARGINTOP)] HRESULT marginTop ([retval, out] long *p);
    [propput, id (DISPID_ITEMPLATEPRINTER_MARGINBOTTOM)] HRESULT marginBottom ([in] long v);
    [propget, id (DISPID_ITEMPLATEPRINTER_MARGINBOTTOM)] HRESULT marginBottom ([retval, out] long *p);
    [propget, id (DISPID_ITEMPLATEPRINTER_PAGEWIDTH)] HRESULT pageWidth ([retval, out] long *p);
    [propget, id (DISPID_ITEMPLATEPRINTER_PAGEHEIGHT)] HRESULT pageHeight ([retval, out] long *p);
    [propget, id (DISPID_ITEMPLATEPRINTER_UNPRINTABLELEFT)] HRESULT unprintableLeft ([retval, out] long *p);
    [propget, id (DISPID_ITEMPLATEPRINTER_UNPRINTABLETOP)] HRESULT unprintableTop ([retval, out] long *p);
    [propget, id (DISPID_ITEMPLATEPRINTER_UNPRINTABLERIGHT)] HRESULT unprintableRight ([retval, out] long *p);
    [propget, id (DISPID_ITEMPLATEPRINTER_UNPRINTABLEBOTTOM)] HRESULT unprintableBottom ([retval, out] long *p);
    [id (DISPID_ITEMPLATEPRINTER_UPDATEPAGESTATUS)] HRESULT updatePageStatus ([in] long *p);
  };
  [odl, oleautomation, dual, uuid (3050f83f-98b5-11cf-bb82-00aa00bdce0b)] interface ITemplatePrinter2 : ITemplatePrinter {
    [propput, id (DISPID_ITEMPLATEPRINTER2_SELECTIONENABLED)] HRESULT selectionEnabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER2_SELECTIONENABLED)] HRESULT selectionEnabled ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER2_FRAMEACTIVEENABLED)] HRESULT frameActiveEnabled ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER2_FRAMEACTIVEENABLED)] HRESULT frameActiveEnabled ([retval, out] VARIANT_BOOL *p);
    [propput, id (DISPID_ITEMPLATEPRINTER2_ORIENTATION)] HRESULT orientation ([in] BSTR v);
    [propget, id (DISPID_ITEMPLATEPRINTER2_ORIENTATION)] HRESULT orientation ([retval, out] BSTR *p);
    [propput, id (DISPID_ITEMPLATEPRINTER2_USEPRINTERCOPYCOLLATE)] HRESULT usePrinterCopyCollate ([in] VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER2_USEPRINTERCOPYCOLLATE)] HRESULT usePrinterCopyCollate ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_ITEMPLATEPRINTER2_DEVICESUPPORTS)] HRESULT deviceSupports ([in] BSTR bstrProperty,[retval, out] VARIANT *pvar);
  };
  [odl, oleautomation, dual, uuid (305104a3-98b5-11cf-bb82-00aa00bdce0b)] interface ITemplatePrinter3 : ITemplatePrinter2 {
    [propput, id (DISPID_ITEMPLATEPRINTER3_HEADERFOOTERFONT)] HRESULT headerFooterFont ([in] BSTR v);
    [propget, id (DISPID_ITEMPLATEPRINTER3_HEADERFOOTERFONT)] HRESULT headerFooterFont ([retval, out] BSTR *p);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINTOP)] HRESULT getPageMarginTop ([in] IDispatch *pageRule,[in] long pageWidth,[in] long pageHeight,[retval, out] VARIANT *pMargin);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINRIGHT)] HRESULT getPageMarginRight ([in] IDispatch *pageRule,[in] long pageWidth,[in] long pageHeight,[retval, out] VARIANT *pMargin);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINBOTTOM)] HRESULT getPageMarginBottom ([in] IDispatch *pageRule,[in] long pageWidth,[in] long pageHeight,[retval, out] VARIANT *pMargin);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINLEFT)] HRESULT getPageMarginLeft ([in] IDispatch *pageRule,[in] long pageWidth,[in] long pageHeight,[retval, out] VARIANT *pMargin);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINTOPIMPORTANT)] HRESULT getPageMarginTopImportant ([in] IDispatch *pageRule,[retval, out] VARIANT_BOOL *pbImportant);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINRIGHTIMPORTANT)] HRESULT getPageMarginRightImportant ([in] IDispatch *pageRule,[retval, out] VARIANT_BOOL *pbImportant);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINBOTTOMIMPORTANT)] HRESULT getPageMarginBottomImportant ([in] IDispatch *pageRule,[retval, out] VARIANT_BOOL *pbImportant);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINLEFTIMPORTANT)] HRESULT getPageMarginLeftImportant ([in] IDispatch *pageRule,[retval, out] VARIANT_BOOL *pbImportant);
  };
  [odl, oleautomation, dual, uuid (f633be14-9eff-4c4d-929e-05717b21b3e6)] interface IPrintManagerTemplatePrinter : IDispatch {
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_STARTPRINT)] HRESULT startPrint ();
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_DRAWPREVIEWPAGE)] HRESULT drawPreviewPage ([in] IDispatch *pElemDisp,[in] long nPage);
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_SETPAGECOUNT)] HRESULT setPageCount ([in] long nPage);
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_INVALIDATEPREVIEW)] HRESULT invalidatePreview ();
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_GETPRINTTASKOPTIONVALUE)] HRESULT getPrintTaskOptionValue ([in] BSTR bstrKey,[retval, out] VARIANT *pvarin);
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_ENDPRINT)] HRESULT endPrint ();
  };
  [uuid (3050f6b3-98b5-11cf-bb82-00aa00bdce0b)] coclass CTemplatePrinter {
    [default] interface ITemplatePrinter3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CTemplatePrinter;")
  [hidden, uuid (305900e9-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispCPrintManagerTemplatePrinter {
    properties:
    methods:
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_STARTPRINT)] void startPrint ();
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_DRAWPREVIEWPAGE)] void drawPreviewPage ([in] IDispatch *pElemDisp,[in] long nPage);
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_SETPAGECOUNT)] void setPageCount ([in] long nPage);
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_INVALIDATEPREVIEW)] void invalidatePreview ();
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_GETPRINTTASKOPTIONVALUE)] VARIANT getPrintTaskOptionValue ([in] BSTR bstrKey);
    [id (DISPID_IPRINTMANAGERTEMPLATEPRINTER_ENDPRINT)] void endPrint ();
    [id (DISPID_ITEMPLATEPRINTER_STARTDOC)] VARIANT_BOOL startDoc ([in] BSTR bstrTitle);
    [id (DISPID_ITEMPLATEPRINTER_STOPDOC)] void stopDoc ();
    [id (DISPID_ITEMPLATEPRINTER_PRINTBLANKPAGE)] void printBlankPage ();
    [id (DISPID_ITEMPLATEPRINTER_PRINTPAGE)] void printPage ([in] IDispatch *pElemDisp);
    [id (DISPID_ITEMPLATEPRINTER_ENSUREPRINTDIALOGDEFAULTS)] VARIANT_BOOL ensurePrintDialogDefaults ();
    [id (DISPID_ITEMPLATEPRINTER_SHOWPRINTDIALOG)] VARIANT_BOOL showPrintDialog ();
    [id (DISPID_ITEMPLATEPRINTER_SHOWPAGESETUPDIALOG)] VARIANT_BOOL showPageSetupDialog ();
    [id (DISPID_ITEMPLATEPRINTER_PRINTNONNATIVE)] VARIANT_BOOL printNonNative ([in] IUnknown *pMarkup);
    [id (DISPID_ITEMPLATEPRINTER_PRINTNONNATIVEFRAMES)] void printNonNativeFrames ([in] IUnknown *pMarkup,[in] VARIANT_BOOL fActiveFrame);
    [propput, id (DISPID_ITEMPLATEPRINTER_FRAMESETDOCUMENT)] void framesetDocument (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_FRAMESETDOCUMENT)] VARIANT_BOOL framesetDocument ();
    [propput, id (DISPID_ITEMPLATEPRINTER_FRAMEACTIVE)] void frameActive (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_FRAMEACTIVE)] VARIANT_BOOL frameActive ();
    [propput, id (DISPID_ITEMPLATEPRINTER_FRAMEASSHOWN)] void frameAsShown (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_FRAMEASSHOWN)] VARIANT_BOOL frameAsShown ();
    [propput, id (DISPID_ITEMPLATEPRINTER_SELECTION)] void selection (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_SELECTION)] VARIANT_BOOL selection ();
    [propput, id (DISPID_ITEMPLATEPRINTER_SELECTEDPAGES)] void selectedPages (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_SELECTEDPAGES)] VARIANT_BOOL selectedPages ();
    [propput, id (DISPID_ITEMPLATEPRINTER_CURRENTPAGE)] void currentPage (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_CURRENTPAGE)] VARIANT_BOOL currentPage ();
    [propput, id (DISPID_ITEMPLATEPRINTER_CURRENTPAGEAVAIL)] void currentPageAvail (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_CURRENTPAGEAVAIL)] VARIANT_BOOL currentPageAvail ();
    [propput, id (DISPID_ITEMPLATEPRINTER_COLLATE)] void collate (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_COLLATE)] VARIANT_BOOL collate ();
    [propget, id (DISPID_ITEMPLATEPRINTER_DUPLEX)] VARIANT_BOOL duplex ();
    [propput, id (DISPID_ITEMPLATEPRINTER_COPIES)] void copies (USHORT v);
    [propget, id (DISPID_ITEMPLATEPRINTER_COPIES)] USHORT copies ();
    [propput, id (DISPID_ITEMPLATEPRINTER_PAGEFROM)] void pageFrom (USHORT v);
    [propget, id (DISPID_ITEMPLATEPRINTER_PAGEFROM)] USHORT pageFrom ();
    [propput, id (DISPID_ITEMPLATEPRINTER_PAGETO)] void pageTo (USHORT v);
    [propget, id (DISPID_ITEMPLATEPRINTER_PAGETO)] USHORT pageTo ();
    [propput, id (DISPID_ITEMPLATEPRINTER_TABLEOFLINKS)] void tableOfLinks (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_TABLEOFLINKS)] VARIANT_BOOL tableOfLinks ();
    [propput, id (DISPID_ITEMPLATEPRINTER_ALLLINKEDDOCUMENTS)] void allLinkedDocuments (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER_ALLLINKEDDOCUMENTS)] VARIANT_BOOL allLinkedDocuments ();
    [propput, id (DISPID_ITEMPLATEPRINTER_HEADER)] void header (BSTR v);
    [propget, id (DISPID_ITEMPLATEPRINTER_HEADER)] BSTR header ();
    [propput, id (DISPID_ITEMPLATEPRINTER_FOOTER)] void footer (BSTR v);
    [propget, id (DISPID_ITEMPLATEPRINTER_FOOTER)] BSTR footer ();
    [propput, id (DISPID_ITEMPLATEPRINTER_MARGINLEFT)] void marginLeft (long v);
    [propget, id (DISPID_ITEMPLATEPRINTER_MARGINLEFT)] long marginLeft ();
    [propput, id (DISPID_ITEMPLATEPRINTER_MARGINRIGHT)] void marginRight (long v);
    [propget, id (DISPID_ITEMPLATEPRINTER_MARGINRIGHT)] long marginRight ();
    [propput, id (DISPID_ITEMPLATEPRINTER_MARGINTOP)] void marginTop (long v);
    [propget, id (DISPID_ITEMPLATEPRINTER_MARGINTOP)] long marginTop ();
    [propput, id (DISPID_ITEMPLATEPRINTER_MARGINBOTTOM)] void marginBottom (long v);
    [propget, id (DISPID_ITEMPLATEPRINTER_MARGINBOTTOM)] long marginBottom ();
    [propget, id (DISPID_ITEMPLATEPRINTER_PAGEWIDTH)] long pageWidth ();
    [propget, id (DISPID_ITEMPLATEPRINTER_PAGEHEIGHT)] long pageHeight ();
    [propget, id (DISPID_ITEMPLATEPRINTER_UNPRINTABLELEFT)] long unprintableLeft ();
    [propget, id (DISPID_ITEMPLATEPRINTER_UNPRINTABLETOP)] long unprintableTop ();
    [propget, id (DISPID_ITEMPLATEPRINTER_UNPRINTABLERIGHT)] long unprintableRight ();
    [propget, id (DISPID_ITEMPLATEPRINTER_UNPRINTABLEBOTTOM)] long unprintableBottom ();
    [id (DISPID_ITEMPLATEPRINTER_UPDATEPAGESTATUS)] void updatePageStatus ([in] long *p);
    [propput, id (DISPID_ITEMPLATEPRINTER2_SELECTIONENABLED)] void selectionEnabled (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER2_SELECTIONENABLED)] VARIANT_BOOL selectionEnabled ();
    [propput, id (DISPID_ITEMPLATEPRINTER2_FRAMEACTIVEENABLED)] void frameActiveEnabled (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER2_FRAMEACTIVEENABLED)] VARIANT_BOOL frameActiveEnabled ();
    [propput, id (DISPID_ITEMPLATEPRINTER2_ORIENTATION)] void orientation (BSTR v);
    [propget, id (DISPID_ITEMPLATEPRINTER2_ORIENTATION)] BSTR orientation ();
    [propput, id (DISPID_ITEMPLATEPRINTER2_USEPRINTERCOPYCOLLATE)] void usePrinterCopyCollate (VARIANT_BOOL v);
    [propget, id (DISPID_ITEMPLATEPRINTER2_USEPRINTERCOPYCOLLATE)] VARIANT_BOOL usePrinterCopyCollate ();
    [id (DISPID_ITEMPLATEPRINTER2_DEVICESUPPORTS)] VARIANT deviceSupports ([in] BSTR bstrProperty);
    [propput, id (DISPID_ITEMPLATEPRINTER3_HEADERFOOTERFONT)] void headerFooterFont (BSTR v);
    [propget, id (DISPID_ITEMPLATEPRINTER3_HEADERFOOTERFONT)] BSTR headerFooterFont ();
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINTOP)] VARIANT getPageMarginTop ([in] IDispatch *pageRule,[in] long pageWidth,[in] long pageHeight);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINRIGHT)] VARIANT getPageMarginRight ([in] IDispatch *pageRule,[in] long pageWidth,[in] long pageHeight);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINBOTTOM)] VARIANT getPageMarginBottom ([in] IDispatch *pageRule,[in] long pageWidth,[in] long pageHeight);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINLEFT)] VARIANT getPageMarginLeft ([in] IDispatch *pageRule,[in] long pageWidth,[in] long pageHeight);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINTOPIMPORTANT)] VARIANT_BOOL getPageMarginTopImportant ([in] IDispatch *pageRule);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINRIGHTIMPORTANT)] VARIANT_BOOL getPageMarginRightImportant ([in] IDispatch *pageRule);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINBOTTOMIMPORTANT)] VARIANT_BOOL getPageMarginBottomImportant ([in] IDispatch *pageRule);
    [id (DISPID_ITEMPLATEPRINTER3_GETPAGEMARGINLEFTIMPORTANT)] VARIANT_BOOL getPageMarginLeftImportant ([in] IDispatch *pageRule);
  };
  [noncreatable, uuid (63619f54-9d71-4c23-a08d-50d7f18db2e9)] coclass CPrintManagerTemplatePrinter {
    [default] dispinterface DispCPrintManagerTemplatePrinter;
    interface IPrintManagerTemplatePrinter;
    interface ITemplatePrinter3;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CPrintManagerTemplatePrinter;")
  typedef enum _textpathMethodtype {
    TEXTPATH_METHODTYPE_UNKNOWN = 0,
    TEXTPATH_METHODTYPE_ALIGN = 1,
    TEXTPATH_METHODTYPE_STRETCH = 2,
    textpathMethodtype_Max = 0x7FFFFFFF
  } textpathMethodtype;

  typedef enum _textpathSpacingtype {
    TEXTPATH_SPACINGTYPE_UNKNOWN = 0,
    TEXTPATH_SPACINGTYPE_AUTO = 1,
    TEXTPATH_SPACINGTYPE_EXACT = 2,
    textpathSpacingtype_Max = 0x7FFFFFFF
  } textpathSpacingtype;
  [odl, oleautomation, dual, uuid (3051051f-98b5-11cf-bb82-00aa00bdce0b)] interface ISVGTextPathElement : IDispatch {
    [propputref, id (DISPID_ISVGTEXTPATHELEMENT_STARTOFFSET)] HRESULT startOffset ([in] ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGTEXTPATHELEMENT_STARTOFFSET)] HRESULT startOffset ([retval, out] ISVGAnimatedLength **p);
    [propputref, id (DISPID_ISVGTEXTPATHELEMENT_METHOD)] HRESULT method ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGTEXTPATHELEMENT_METHOD)] HRESULT method ([retval, out] ISVGAnimatedEnumeration **p);
    [propputref, id (DISPID_ISVGTEXTPATHELEMENT_SPACING)] HRESULT spacing ([in] ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGTEXTPATHELEMENT_SPACING)] HRESULT spacing ([retval, out] ISVGAnimatedEnumeration **p);
  };
  [hidden, uuid (3059003d-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispSVGTextPathElement {
    properties:
    methods:
    [propputref, id (DISPID_ISVGTEXTPATHELEMENT_STARTOFFSET)] void startOffset (ISVGAnimatedLength *v);
    [propget, id (DISPID_ISVGTEXTPATHELEMENT_STARTOFFSET)] ISVGAnimatedLength *startOffset ();
    [propputref, id (DISPID_ISVGTEXTPATHELEMENT_METHOD)] void method (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGTEXTPATHELEMENT_METHOD)] ISVGAnimatedEnumeration *method ();
    [propputref, id (DISPID_ISVGTEXTPATHELEMENT_SPACING)] void spacing (ISVGAnimatedEnumeration *v);
    [propget, id (DISPID_ISVGTEXTPATHELEMENT_SPACING)] ISVGAnimatedEnumeration *spacing ();
    [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);
    [propget, id (DISPID_ISVGURIREFERENCE_HREF)] ISVGAnimatedString *href ();
    [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 ();
    [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);
    [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 ();
    [propget, id (DISPID_ISVGEXTERNALRESOURCESREQUIRED_EXTERNALRESOURCESREQUIRED)] ISVGAnimatedBoolean *externalResourcesRequired ();
    [propget, id (DISPID_ISVGSTYLABLE_CLASSNAME)] ISVGAnimatedString *className ();
  };
  [noncreatable, uuid (305105eb-98b5-11cf-bb82-00aa00bdce0b)] coclass SVGTextPathElement {
    [default] dispinterface DispSVGTextPathElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface ISVGTextPathElement;
    interface ISVGTextContentElement;
    interface ISVGURIReference;
    interface ISVGElement;
    interface ISVGTests;
    interface ISVGLangSpace;
    interface ISVGExternalResourcesRequired;
    interface ISVGStylable;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSVGTextPathElement;")
  [odl, oleautomation, dual, uuid (3051077d-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMXmlSerializer : IDispatch {
    [id (DISPID_IDOMXMLSERIALIZER_SERIALIZETOSTRING)] HRESULT serializeToString ([in] IHTMLDOMNode *pNode,[retval, out] BSTR *pString);
  };
  [odl, oleautomation, dual, uuid (3051077f-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMXmlSerializerFactory : IDispatch {
    [id (DISPID_IDOMXMLSERIALIZERFACTORY_CREATE)] HRESULT create ([retval, out] IDOMXmlSerializer **);
  };
  [odl, oleautomation, dual, uuid (30510781-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMParser : IDispatch {
    [id (DISPID_IDOMPARSER_PARSEFROMSTRING)] HRESULT parseFromString ([in] BSTR xmlSource,[in] BSTR mimeType,[retval, out] IHTMLDocument2 **ppNode);
  };
  [odl, oleautomation, dual, uuid (30510783-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMParserFactory : IDispatch {
    [id (DISPID_IDOMPARSERFACTORY_CREATE)] HRESULT create ([retval, out] IDOMParser **);
  };
  [hidden, uuid (305900ad-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispXMLSerializer {
    properties:
    methods:
    [id (DISPID_IDOMXMLSERIALIZER_SERIALIZETOSTRING)] BSTR serializeToString ([in] IHTMLDOMNode *pNode);
  };
  [noncreatable, uuid (3051077e-98b5-11cf-bb82-00aa00bdce0b)] coclass XMLSerializer {
    [default] dispinterface DispXMLSerializer;
    interface IDOMXmlSerializer;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMXmlSerializer;")
  [noncreatable, uuid (30510780-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLDOMXmlSerializerFactory {
    [default] interface IDOMXmlSerializerFactory;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMXmlSerializerFactory;")
  [hidden, uuid (305900ae-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMParser {
    properties:
    methods:
    [id (DISPID_IDOMPARSER_PARSEFROMSTRING)] IHTMLDocument2 *parseFromString ([in] BSTR xmlSource,[in] BSTR mimeType);
  };
  [noncreatable, uuid (30510782-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMParser {
    [default] dispinterface DispDOMParser;
    interface IDOMParser;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMParser;")
  [noncreatable, uuid (30510784-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMParserFactory {
    [default] interface IDOMParserFactory;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMParserFactory;")
  [hidden, uuid (305900ba-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLSemanticElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
  };
  [noncreatable, uuid (305107b0-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLSemanticElement {
    [default] dispinterface DispHTMLSemanticElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CSemanticElement;")
  [odl, oleautomation, dual, uuid (3050f2d6-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLProgressElement : IDispatch {
    [propput, id (DISPID_IHTMLPROGRESSELEMENT_VALUE)] HRESULT value ([in] float v);
    [propget, id (DISPID_IHTMLPROGRESSELEMENT_VALUE)] HRESULT value ([retval, out] float *p);
    [propput, id (DISPID_IHTMLPROGRESSELEMENT_MAX)] HRESULT max ([in] float v);
    [propget, id (DISPID_IHTMLPROGRESSELEMENT_MAX)] HRESULT max ([retval, out] float *p);
    [propget, id (DISPID_IHTMLPROGRESSELEMENT_POSITION)] HRESULT position ([retval, out] float *p);
    [propget, id (DISPID_IHTMLPROGRESSELEMENT_FORM)] HRESULT form ([retval, out] IHTMLFormElement **p);
  };
  [hidden, uuid (305900af-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispHTMLProgressElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [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 expression,[defaultvalue (L""), in] BSTR language);
    [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);
    [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 ();
    [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 ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUENUMBER), hidden] long uniqueNumber ();
    [propget, id (DISPID_IHTMLUNIQUENAME_UNIQUEID), hidden] BSTR uniqueID ();
    [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 ();
    [propget, id (DISPID_IHTMLDOMNODE2_OWNERDOCUMENT)] IDispatch *ownerDocument ();
    [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,[optional, in] 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);
    [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 ();
    [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 ();
    [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 ();
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTOR)] IHTMLElement *querySelector ([in] BSTR v);
    [id (DISPID_IELEMENTSELECTOR_QUERYSELECTORALL)] IHTMLDOMChildrenCollection *querySelectorAll ([in] BSTR v);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), hidden] IDispatch *constructor ();
    [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 ();
    [propput, id (DISPID_IHTMLPROGRESSELEMENT_VALUE)] void value (float v);
    [propget, id (DISPID_IHTMLPROGRESSELEMENT_VALUE)] float value ();
    [propput, id (DISPID_IHTMLPROGRESSELEMENT_MAX)] void max (float v);
    [propget, id (DISPID_IHTMLPROGRESSELEMENT_MAX)] float max ();
    [propget, id (DISPID_IHTMLPROGRESSELEMENT_POSITION)] float position ();
    [propget, id (DISPID_IHTMLPROGRESSELEMENT_FORM)] IHTMLFormElement *form ();
  };
  [noncreatable, uuid (3050f2d5-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLProgressElement {
    [default] dispinterface DispHTMLProgressElement;
    [source, default] dispinterface HTMLElementEvents;
    [source] dispinterface HTMLElementEvents2;
    interface IHTMLElement;
    interface IHTMLElement2;
    interface IHTMLElement3;
    interface IHTMLElement4;
    interface IHTMLUniqueName;
    interface IHTMLDOMNode;
    interface IHTMLDOMNode2;
    interface IHTMLDOMNode3;
    interface IHTMLDatabinding;
    interface IHTMLElement5;
    interface IHTMLElement6;
    interface IElementSelector;
    interface IHTMLDOMConstructor;
    interface IHTMLElement7;
    interface IHTMLProgressElement;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CProgressElement;")
  [odl, oleautomation, dual, uuid (305107b5-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMMSTransitionEvent : IDispatch {
    [propget, id (DISPID_IDOMMSTRANSITIONEVENT_PROPERTYNAME)] HRESULT propertyName ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMMSTRANSITIONEVENT_ELAPSEDTIME)] HRESULT elapsedTime ([retval, out] float *p);
    [id (DISPID_IDOMMSTRANSITIONEVENT_INITMSTRANSITIONEVENT)] HRESULT initMSTransitionEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] BSTR propertyName,[in] float elapsedTime);
  };
  [hidden, uuid (305900bb-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMMSTransitionEvent {
    properties:
    methods:
    [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 ();
    [propget, id (DISPID_IDOMMSTRANSITIONEVENT_PROPERTYNAME)] BSTR propertyName ();
    [propget, id (DISPID_IDOMMSTRANSITIONEVENT_ELAPSEDTIME)] float elapsedTime ();
    [id (DISPID_IDOMMSTRANSITIONEVENT_INITMSTRANSITIONEVENT)] void initMSTransitionEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] BSTR propertyName,[in] float elapsedTime);
  };
  [noncreatable, uuid (305107b6-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMMSTransitionEvent {
    [default] dispinterface DispDOMMSTransitionEvent;
    interface IDOMEvent;
    interface IDOMMSTransitionEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMMSTransitionEvent;")
  [odl, oleautomation, dual, uuid (305107b7-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMMSAnimationEvent : IDispatch {
    [propget, id (DISPID_IDOMMSANIMATIONEVENT_ANIMATIONNAME)] HRESULT animationName ([retval, out] BSTR *p);
    [propget, id (DISPID_IDOMMSANIMATIONEVENT_ELAPSEDTIME)] HRESULT elapsedTime ([retval, out] float *p);
    [id (DISPID_IDOMMSANIMATIONEVENT_INITMSANIMATIONEVENT)] HRESULT initMSAnimationEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] BSTR animationName,[in] float elapsedTime);
  };
  [hidden, uuid (305900bc-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMMSAnimationEvent {
    properties:
    methods:
    [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 ();
    [propget, id (DISPID_IDOMMSANIMATIONEVENT_ANIMATIONNAME)] BSTR animationName ();
    [propget, id (DISPID_IDOMMSANIMATIONEVENT_ELAPSEDTIME)] float elapsedTime ();
    [id (DISPID_IDOMMSANIMATIONEVENT_INITMSANIMATIONEVENT)] void initMSAnimationEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] BSTR animationName,[in] float elapsedTime);
  };
  [noncreatable, uuid (305107b8-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMMSAnimationEvent {
    [default] dispinterface DispDOMMSAnimationEvent;
    interface IDOMEvent;
    interface IDOMMSAnimationEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMMSAnimationEvent;")
  [odl, oleautomation, dual, uuid (305107c5-98b5-11cf-bb82-00aa00bdce0b)] interface IWebGeolocation : IDispatch {
    [id (DISPID_IWEBGEOLOCATION_GETCURRENTPOSITION)] HRESULT getCurrentPosition ([in] IDispatch *successCallback,[defaultvalue (0), in] IDispatch *errorCallback,[defaultvalue (0), in] IDispatch *options);
    [id (DISPID_IWEBGEOLOCATION_WATCHPOSITION)] HRESULT watchPosition ([in] IDispatch *successCallback,[defaultvalue (0), in] IDispatch *errorCallback,[defaultvalue (0), in] IDispatch *options,[defaultvalue (0), retval, out] long *watchId);
    [id (DISPID_IWEBGEOLOCATION_CLEARWATCH)] HRESULT clearWatch ([in] long watchId);
  };
  [odl, oleautomation, dual, uuid (305107c7-98b5-11cf-bb82-00aa00bdce0b)] interface IWebGeocoordinates : IDispatch {
    [propget, id (DISPID_IWEBGEOCOORDINATES_LATITUDE)] HRESULT latitude ([retval, out] double *p);
    [propget, id (DISPID_IWEBGEOCOORDINATES_LONGITUDE)] HRESULT longitude ([retval, out] double *p);
    [propget, id (DISPID_IWEBGEOCOORDINATES_ALTITUDE)] HRESULT altitude ([retval, out] VARIANT *p);
    [propget, id (DISPID_IWEBGEOCOORDINATES_ACCURACY)] HRESULT accuracy ([retval, out] double *p);
    [propget, id (DISPID_IWEBGEOCOORDINATES_ALTITUDEACCURACY)] HRESULT altitudeAccuracy ([retval, out] VARIANT *p);
    [propget, id (DISPID_IWEBGEOCOORDINATES_HEADING)] HRESULT heading ([retval, out] VARIANT *p);
    [propget, id (DISPID_IWEBGEOCOORDINATES_SPEED)] HRESULT speed ([retval, out] VARIANT *p);
  };
  [odl, oleautomation, dual, uuid (305107c9-98b5-11cf-bb82-00aa00bdce0b)] interface IWebGeopositionError : IDispatch {
    [propget, id (DISPID_IWEBGEOPOSITIONERROR_CODE)] HRESULT code ([retval, out] long *p);
    [propget, id (DISPID_IWEBGEOPOSITIONERROR_MESSAGE)] HRESULT message ([retval, out] BSTR *p);
  };
  [odl, oleautomation, dual, uuid (305107cd-98b5-11cf-bb82-00aa00bdce0b)] interface IWebGeoposition : IDispatch {
    [propget, id (DISPID_IWEBGEOPOSITION_COORDS)] HRESULT coords ([retval, out] IWebGeocoordinates **p);
    [propget, id (DISPID_IWEBGEOPOSITION_TIMESTAMP)] HRESULT timestamp ([retval, out] ULONGLONG *p);
  };
  [hidden, uuid (305900bd-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispWebGeolocation {
    properties:
    methods:
    [id (DISPID_IWEBGEOLOCATION_GETCURRENTPOSITION)] void getCurrentPosition ([in] IDispatch *successCallback,[defaultvalue (0), in] IDispatch *errorCallback,[defaultvalue (0), in] IDispatch *options);
    [id (DISPID_IWEBGEOLOCATION_WATCHPOSITION)] long watchPosition ([in] IDispatch *successCallback,[defaultvalue (0), in] IDispatch *errorCallback,[defaultvalue (0), in] IDispatch *options);
    [id (DISPID_IWEBGEOLOCATION_CLEARWATCH)] void clearWatch ([in] long watchId);
  };
  [noncreatable, uuid (305107c6-98b5-11cf-bb82-00aa00bdce0b)] coclass WebGeolocation {
    [default] dispinterface DispWebGeolocation;
    interface IWebGeolocation;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CWebGeolocation;")
  [hidden, uuid (305900be-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispWebGeocoordinates {
    properties:
    methods:
    [propget, id (DISPID_IWEBGEOCOORDINATES_LATITUDE)] double latitude ();
    [propget, id (DISPID_IWEBGEOCOORDINATES_LONGITUDE)] double longitude ();
    [propget, id (DISPID_IWEBGEOCOORDINATES_ALTITUDE)] VARIANT altitude ();
    [propget, id (DISPID_IWEBGEOCOORDINATES_ACCURACY)] double accuracy ();
    [propget, id (DISPID_IWEBGEOCOORDINATES_ALTITUDEACCURACY)] VARIANT altitudeAccuracy ();
    [propget, id (DISPID_IWEBGEOCOORDINATES_HEADING)] VARIANT heading ();
    [propget, id (DISPID_IWEBGEOCOORDINATES_SPEED)] VARIANT speed ();
  };
  [noncreatable, uuid (305107c8-98b5-11cf-bb82-00aa00bdce0b)] coclass WebGeocoordinates {
    [default] dispinterface DispWebGeocoordinates;
    interface IWebGeocoordinates;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CWebGeocoordinates;")
  [hidden, uuid (305900bf-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispWebGeopositionError {
    properties:
    methods:
    [propget, id (DISPID_IWEBGEOPOSITIONERROR_CODE)] long code ();
    [propget, id (DISPID_IWEBGEOPOSITIONERROR_MESSAGE)] BSTR message ();
  };
  [noncreatable, uuid (305107ca-98b5-11cf-bb82-00aa00bdce0b)] coclass WebGeopositionError {
    [default] dispinterface DispWebGeopositionError;
    interface IWebGeopositionError;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CWebGeopositionError;")
  [hidden, uuid (305900c1-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispWebGeoposition {
    properties:
    methods:
    [propget, id (DISPID_IWEBGEOPOSITION_COORDS)] IWebGeocoordinates *coords ();
    [propget, id (DISPID_IWEBGEOPOSITION_TIMESTAMP)] ULONGLONG timestamp ();
  };
  [noncreatable, uuid (305107ce-98b5-11cf-bb82-00aa00bdce0b)] coclass WebGeoposition {
    [default] dispinterface DispWebGeoposition;
    interface IWebGeoposition;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CWebGeoposition;")
  [odl, oleautomation, dual, uuid (7e8bc44d-AEFF-11d1-89c2-00c04fb6bfc4)] interface IClientCaps : IDispatch {
    [propget, id (DISPID_ICLIENTCAPS_JAVAENABLED)] HRESULT javaEnabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_ICLIENTCAPS_COOKIEENABLED)] HRESULT cookieEnabled ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_ICLIENTCAPS_CPUCLASS)] HRESULT cpuClass ([retval, out] BSTR *p);
    [propget, id (DISPID_ICLIENTCAPS_SYSTEMLANGUAGE)] HRESULT systemLanguage ([retval, out] BSTR *p);
    [propget, id (DISPID_ICLIENTCAPS_USERLANGUAGE)] HRESULT userLanguage ([retval, out] BSTR *p);
    [propget, id (DISPID_ICLIENTCAPS_PLATFORM)] HRESULT platform ([retval, out] BSTR *p);
    [propget, id (DISPID_ICLIENTCAPS_CONNECTIONSPEED)] HRESULT connectionSpeed ([retval, out] long *p);
    [propget, id (DISPID_ICLIENTCAPS_ONLINE)] HRESULT onLine ([retval, out] VARIANT_BOOL *p);
    [propget, id (DISPID_ICLIENTCAPS_COLORDEPTH)] HRESULT colorDepth ([retval, out] long *p);
    [propget, id (DISPID_ICLIENTCAPS_BUFFERDEPTH)] HRESULT bufferDepth ([retval, out] long *p);
    [propget, id (DISPID_ICLIENTCAPS_WIDTH)] HRESULT width ([retval, out] long *p);
    [propget, id (DISPID_ICLIENTCAPS_HEIGHT)] HRESULT height ([retval, out] long *p);
    [propget, id (DISPID_ICLIENTCAPS_AVAILHEIGHT)] HRESULT availHeight ([retval, out] long *p);
    [propget, id (DISPID_ICLIENTCAPS_AVAILWIDTH)] HRESULT availWidth ([retval, out] long *p);
    [propget, id (DISPID_ICLIENTCAPS_CONNECTIONTYPE)] HRESULT connectionType ([retval, out] BSTR *p);
    [id (DISPID_ICLIENTCAPS_ISCOMPONENTINSTALLED)] HRESULT isComponentInstalled ([in] BSTR bstrName,[in] BSTR bstrUrl,[defaultvalue (L""), in] BSTR bStrVer,[retval, out, defaultvalue (0)] VARIANT_BOOL *p);
    [id (DISPID_ICLIENTCAPS_GETCOMPONENTVERSION)] HRESULT getComponentVersion ([in] BSTR bstrName,[in] BSTR bstrUrl,[retval, out] BSTR *pbstrVer);
    [id (DISPID_ICLIENTCAPS_COMPAREVERSIONS)] HRESULT compareVersions ([in] BSTR bstrVer1,[in] BSTR bstrVer2,[retval, out] long *p);
    [id (DISPID_ICLIENTCAPS_ADDCOMPONENTREQUEST)] HRESULT addComponentRequest ([in] BSTR bstrName,[in] BSTR bstrUrl,[defaultvalue (L""), in] BSTR bStrVer);
    [id (DISPID_ICLIENTCAPS_DOCOMPONENTREQUEST)] HRESULT doComponentRequest ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_ICLIENTCAPS_CLEARCOMPONENTREQUEST)] HRESULT clearComponentRequest ();
  };
  [uuid (7e8bc44e-AEFF-11d1-89c2-00c04fb6bfc4)] coclass CClientCaps {
    [default] interface IClientCaps;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CClientCaps;")
  [odl, oleautomation, dual, uuid (30510816-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMMSManipulationEvent : IDispatch {
    [propget, id (DISPID_IDOMMSMANIPULATIONEVENT_LASTSTATE)] HRESULT lastState ([retval, out] long *p);
    [propget, id (DISPID_IDOMMSMANIPULATIONEVENT_CURRENTSTATE)] HRESULT currentState ([retval, out] long *p);
    [id (DISPID_IDOMMSMANIPULATIONEVENT_INITMSMANIPULATIONEVENT)] HRESULT initMSManipulationEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] long detailArg,[in] long lastState,[in] long currentState);
  };
  [hidden, uuid (305900e1-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMMSManipulationEvent {
    properties:
    methods:
    [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 ();
    [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);
    [propget, id (DISPID_IDOMMSMANIPULATIONEVENT_LASTSTATE)] long lastState ();
    [propget, id (DISPID_IDOMMSMANIPULATIONEVENT_CURRENTSTATE)] long currentState ();
    [id (DISPID_IDOMMSMANIPULATIONEVENT_INITMSMANIPULATIONEVENT)] void initMSManipulationEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] IHTMLWindow2 *viewArg,[in] long detailArg,[in] long lastState,[in] long currentState);
  };
  [noncreatable, uuid (30510817-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMMSManipulationEvent {
    [default] dispinterface DispDOMMSManipulationEvent;
    interface IDOMEvent;
    interface IDOMUIEvent;
    interface IDOMMSManipulationEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMMSManipulationEvent;")
  [odl, oleautomation, dual, uuid (305107ff-98b5-11cf-bb82-00aa00bdce0b)] interface IDOMCloseEvent : IDispatch {
    [propget, id (DISPID_IDOMCLOSEEVENT_WASCLEAN)] HRESULT wasClean ([retval, out] VARIANT_BOOL *p);
    [id (DISPID_IDOMCLOSEEVENT_INITCLOSEEVENT)] HRESULT initCloseEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] VARIANT_BOOL wasClean,[in] long code,[in] BSTR reason);
  };
  [hidden, uuid (305900dc-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispDOMCloseEvent {
    properties:
    methods:
    [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 ();
    [propget, id (DISPID_IDOMCLOSEEVENT_WASCLEAN)] VARIANT_BOOL wasClean ();
    [id (DISPID_IDOMCLOSEEVENT_INITCLOSEEVENT)] void initCloseEvent ([in] BSTR eventType,[in] VARIANT_BOOL canBubble,[in] VARIANT_BOOL cancelable,[in] VARIANT_BOOL wasClean,[in] long code,[in] BSTR reason);
  };
  [noncreatable, uuid (30510800-98b5-11cf-bb82-00aa00bdce0b)] coclass DOMCloseEvent {
    [default] dispinterface DispDOMCloseEvent;
    interface IDOMEvent;
    interface IDOMCloseEvent;
  };
  cpp_quote("EXTERN_C const GUID CLSID_CDOMCloseEvent;")
  [odl, oleautomation, dual, uuid (30510828-98b5-11cf-bb82-00aa00bdce0b)] interface IHTMLApplicationCache : IDispatch {
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_STATUS)] HRESULT status ([retval, out] long *p);
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONCHECKING)] HRESULT onchecking ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONCHECKING)] HRESULT onchecking ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONERROR)] HRESULT onerror ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONERROR)] HRESULT onerror ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONNOUPDATE)] HRESULT onnoupdate ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONNOUPDATE)] HRESULT onnoupdate ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONDOWNLOADING)] HRESULT ondownloading ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONDOWNLOADING)] HRESULT ondownloading ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONPROGRESS)] HRESULT onprogress ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONPROGRESS)] HRESULT onprogress ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONUPDATEREADY)] HRESULT onupdateready ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONUPDATEREADY)] HRESULT onupdateready ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONCACHED)] HRESULT oncached ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONCACHED)] HRESULT oncached ([retval, out] VARIANT *p);
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONOBSOLETE)] HRESULT onobsolete ([in] VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONOBSOLETE)] HRESULT onobsolete ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLAPPLICATIONCACHE_UPDATE)] HRESULT update ();
    [id (DISPID_IHTMLAPPLICATIONCACHE_SWAPCACHE)] HRESULT swapCache ();
    [id (DISPID_IHTMLAPPLICATIONCACHE_ABORT)] HRESULT abort ();
  };
  [hidden, uuid (305900e4-98b5-11cf-bb82-00aa00bdce0b)] dispinterface DispApplicationCache {
    properties:
    methods:
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_STATUS)] long status ();
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONCHECKING)] void onchecking (VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONCHECKING)] VARIANT onchecking ();
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONERROR)] void onerror (VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONERROR)] VARIANT onerror ();
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONNOUPDATE)] void onnoupdate (VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONNOUPDATE)] VARIANT onnoupdate ();
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONDOWNLOADING)] void ondownloading (VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONDOWNLOADING)] VARIANT ondownloading ();
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONPROGRESS)] void onprogress (VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONPROGRESS)] VARIANT onprogress ();
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONUPDATEREADY)] void onupdateready (VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONUPDATEREADY)] VARIANT onupdateready ();
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONCACHED)] void oncached (VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONCACHED)] VARIANT oncached ();
    [propput, id (DISPID_IHTMLAPPLICATIONCACHE_ONOBSOLETE)] void onobsolete (VARIANT v);
    [propget, id (DISPID_IHTMLAPPLICATIONCACHE_ONOBSOLETE)] VARIANT onobsolete ();
    [id (DISPID_IHTMLAPPLICATIONCACHE_UPDATE)] void update ();
    [id (DISPID_IHTMLAPPLICATIONCACHE_SWAPCACHE)] void swapCache ();
    [id (DISPID_IHTMLAPPLICATIONCACHE_ABORT)] void abort ();
  };
  [noncreatable, uuid (30510829-98b5-11cf-bb82-00aa00bdce0b)] coclass ApplicationCache {
    [default] interface IHTMLApplicationCache;
  };
  
  interface IElementBehaviorSite;
  interface ICSSFilterSite;
  interface IMarkupPointer;
  interface IMarkupContainer;
  interface IMarkupContainer2;
  interface IHTMLChangeLog;
  interface IHTMLChangeSink;
  interface IHTMLDocument2;
  interface IActiveIMMApp;
  interface ISegmentList;
  interface ISegmentListIterator;
  interface IHTMLCaret;
  interface ISegment;
  interface IElementSegment;
  interface IHighlightSegment;
  interface IHighlightRenderingServices;
  interface ILineInfo;
  interface IDisplayPointer;
  interface IDisplayServices;
  interface IHtmlDlgSafeHelper;
  interface IBlockFormats;
  interface IFontNames;
  interface IScriptEventHandler;
  interface IHTMLPainter;
  interface IHTMLPaintSite;

  cpp_quote("EXTERN_C const GUID CLSID_CHTMLNamespace;")
  cpp_quote("EXTERN_C const GUID CLSID_CHTMLNamespaceCollection;")
  cpp_quote("EXTERN_C const GUID CLSID_HtmlDlgSafeHelper;")
  cpp_quote("EXTERN_C const GUID CLSID_BlockFormats;")
  cpp_quote("EXTERN_C const GUID CLSID_FontNames;")
  cpp_quote("EXTERN_C const GUID CLSID_CApplicationCache;")
  
  typedef enum _ELEMENT_CORNER {
    ELEMENT_CORNER_NONE = 0,
    ELEMENT_CORNER_TOP = 1,
    ELEMENT_CORNER_LEFT = 2,
    ELEMENT_CORNER_BOTTOM = 3,
    ELEMENT_CORNER_RIGHT = 4,
    ELEMENT_CORNER_TOPLEFT = 5,
    ELEMENT_CORNER_TOPRIGHT = 6,
    ELEMENT_CORNER_BOTTOMLEFT = 7,
    ELEMENT_CORNER_BOTTOMRIGHT = 8,
    ELEMENT_CORNER_Max = 0x7FFFFFFF
  } ELEMENT_CORNER;

  typedef enum _SECUREURLHOSTVALIDATE_FLAGS {
    SUHV_PROMPTBEFORENO = 0x1,
    SUHV_SILENTYES = 0x2,
    SUHV_UNSECURESOURCE = 0x00000004,
    SECUREURLHOSTVALIDATE_FLAGS_Max = 0x7FFFFFFF
  } SECUREURLHOSTVALIDATE_FLAGS;

  typedef enum _POINTER_GRAVITY {
    POINTER_GRAVITY_Left = 0,
    POINTER_GRAVITY_Right = 1,
    POINTER_GRAVITY_Max = 0x7FFFFFFF
  } POINTER_GRAVITY;

  typedef enum _ELEMENT_ADJACENCY {
    ELEM_ADJ_BeforeBegin = 0,
    ELEM_ADJ_AfterBegin = 1,
    ELEM_ADJ_BeforeEnd = 2,
    ELEM_ADJ_AfterEnd = 3,
    ELEMENT_ADJACENCY_Max = 0x7FFFFFFF
  } ELEMENT_ADJACENCY;

  typedef enum _MARKUP_CONTEXT_TYPE {
    CONTEXT_TYPE_None = 0,
    CONTEXT_TYPE_Text = 1,
    CONTEXT_TYPE_EnterScope = 2,
    CONTEXT_TYPE_ExitScope = 3,
    CONTEXT_TYPE_NoScope = 4,
    MARKUP_CONTEXT_TYPE_Max = 0x7FFFFFFF
  } MARKUP_CONTEXT_TYPE;

  typedef enum _FINDTEXT_FLAGS {
    FINDTEXT_BACKWARDS = 0x1,
    FINDTEXT_WHOLEWORD = 0x2,
    FINDTEXT_MATCHCASE = 0x00000004,
    FINDTEXT_RAW = 0x00020000,
    FINDTEXT_MATCHREPEATEDWHITESPACE = 0x00040000,
    FINDTEXT_MATCHDIAC = 0x20000000,
    FINDTEXT_MATCHKASHIDA = 0x40000000,
    FINDTEXT_MATCHALEFHAMZA = 0x80000000,
    FINDTEXT_FLAGS_Max = 0x7FFFFFFF
  } FINDTEXT_FLAGS;

  typedef enum _MOVEUNIT_ACTION {
    MOVEUNIT_PREVCHAR = 0,
    MOVEUNIT_NEXTCHAR = 1,
    MOVEUNIT_PREVCLUSTERBEGIN = 2,
    MOVEUNIT_NEXTCLUSTERBEGIN = 3,
    MOVEUNIT_PREVCLUSTEREND = 4,
    MOVEUNIT_NEXTCLUSTEREND = 5,
    MOVEUNIT_PREVWORDBEGIN = 6,
    MOVEUNIT_NEXTWORDBEGIN = 7,
    MOVEUNIT_PREVWORDEND = 8,
    MOVEUNIT_NEXTWORDEND = 9,
    MOVEUNIT_PREVPROOFWORD = 10,
    MOVEUNIT_NEXTPROOFWORD = 11,
    MOVEUNIT_NEXTURLBEGIN = 12,
    MOVEUNIT_PREVURLBEGIN = 13,
    MOVEUNIT_NEXTURLEND = 14,
    MOVEUNIT_PREVURLEND = 15,
    MOVEUNIT_PREVSENTENCE = 16,
    MOVEUNIT_NEXTSENTENCE = 17,
    MOVEUNIT_PREVBLOCK = 18,
    MOVEUNIT_NEXTBLOCK = 19,
    MOVEUNIT_ACTION_Max = 0x7FFFFFFF
  } MOVEUNIT_ACTION;

  typedef enum _PARSE_FLAGS {
    PARSE_ABSOLUTIFYIE40URLS = 0x1,
    PARSE_DISABLEVML = 0x2,
    PARSE_FLAGS_Max = 0x7FFFFFFF
  } PARSE_FLAGS;

  typedef enum _ELEMENT_TAG_ID {
    TAGID_NULL = 0,
    TAGID_UNKNOWN = 1,
    TAGID_A = 2,
    TAGID_ACRONYM = 3,
    TAGID_ADDRESS = 4,
    TAGID_APPLET = 5,
    TAGID_AREA = 6,
    TAGID_B = 7,
    TAGID_BASE = 8,
    TAGID_BASEFONT = 9,
    TAGID_BDO = 10,
    TAGID_BGSOUND = 11,
    TAGID_BIG = 12,
    TAGID_BLINK = 13,
    TAGID_BLOCKQUOTE = 14,
    TAGID_BODY = 15,
    TAGID_BR = 16,
    TAGID_BUTTON = 17,
    TAGID_CAPTION = 18,
    TAGID_CENTER = 19,
    TAGID_CITE = 20,
    TAGID_CODE = 21,
    TAGID_COL = 22,
    TAGID_COLGROUP = 23,
    TAGID_COMMENT = 24,
    TAGID_COMMENT_RAW = 25,
    TAGID_DD = 26,
    TAGID_DEL = 27,
    TAGID_DFN = 28,
    TAGID_DIR = 29,
    TAGID_DIV = 30,
    TAGID_DL = 31,
    TAGID_DT = 32,
    TAGID_EM = 33,
    TAGID_EMBED = 34,
    TAGID_FIELDSET = 35,
    TAGID_FONT = 36,
    TAGID_FORM = 37,
    TAGID_FRAME = 38,
    TAGID_FRAMESET = 39,
    TAGID_GENERIC = 40,
    TAGID_H1 = 41,
    TAGID_H2 = 42,
    TAGID_H3 = 43,
    TAGID_H4 = 44,
    TAGID_H5 = 45,
    TAGID_H6 = 46,
    TAGID_HEAD = 47,
    TAGID_HR = 48,
    TAGID_HTML = 49,
    TAGID_I = 50,
    TAGID_IFRAME = 51,
    TAGID_IMG = 52,
    TAGID_INPUT = 53,
    TAGID_INS = 54,
    TAGID_KBD = 55,
    TAGID_LABEL = 56,
    TAGID_LEGEND = 57,
    TAGID_LI = 58,
    TAGID_LINK = 59,
    TAGID_LISTING = 60,
    TAGID_MAP = 61,
    TAGID_MARQUEE = 62,
    TAGID_MENU = 63,
    TAGID_META = 64,
    TAGID_NEXTID = 65,
    TAGID_NOBR = 66,
    TAGID_NOEMBED = 67,
    TAGID_NOFRAMES = 68,
    TAGID_NOSCRIPT = 69,
    TAGID_OBJECT = 70,
    TAGID_OL = 71,
    TAGID_OPTION = 72,
    TAGID_P = 73,
    TAGID_PARAM = 74,
    TAGID_PLAINTEXT = 75,
    TAGID_PRE = 76,
    TAGID_Q = 77,
    TAGID_RP = 78,
    TAGID_RT = 79,
    TAGID_RUBY = 80,
    TAGID_S = 81,
    TAGID_SAMP = 82,
    TAGID_SCRIPT = 83,
    TAGID_SELECT = 84,
    TAGID_SMALL = 85,
    TAGID_SPAN = 86,
    TAGID_STRIKE = 87,
    TAGID_STRONG = 88,
    TAGID_STYLE = 89,
    TAGID_SUB = 90,
    TAGID_SUP = 91,
    TAGID_TABLE = 92,
    TAGID_TBODY = 93,
    TAGID_TC = 94,
    TAGID_TD = 95,
    TAGID_TEXTAREA = 96,
    TAGID_TFOOT = 97,
    TAGID_TH = 98,
    TAGID_THEAD = 99,
    TAGID_TITLE = 100,
    TAGID_TR = 101,
    TAGID_TT = 102,
    TAGID_U = 103,
    TAGID_UL = 104,
    TAGID_VAR = 105,
    TAGID_WBR = 106,
    TAGID_XMP = 107,
    TAGID_ROOT = 108,
    TAGID_OPTGROUP = 109,
    TAGID_ABBR = 110,
    TAGID_SVG_A = 111,
    TAGID_SVG_ALTGLYPH = 112,
    TAGID_SVG_ALTGLYPHDEF = 113,
    TAGID_SVG_ALTGLYPHITEM = 114,
    TAGID_SVG_ANIMATE = 115,
    TAGID_SVG_ANIMATECOLOR = 116,
    TAGID_SVG_ANIMATEMOTION = 117,
    TAGID_SVG_ANIMATETRANSFORM = 118,
    TAGID_SVG_CIRCLE = 119,
    TAGID_SVG_CLIPPATH = 120,
    TAGID_SVG_COLOR_PROFILE = 121,
    TAGID_SVG_CURSOR = 122,
    TAGID_SVG_DEFINITION_SRC = 123,
    TAGID_SVG_DEFS = 124,
    TAGID_SVG_DESC = 125,
    TAGID_SVG_ELLIPSE = 126,
    TAGID_SVG_FEBLEND = 127,
    TAGID_SVG_FECOLORMATRIX = 128,
    TAGID_SVG_FECOMPONENTTRANSFER = 129,
    TAGID_SVG_FECOMPOSITE = 130,
    TAGID_SVG_FECONVOLVEMATRIX = 131,
    TAGID_SVG_FEDIFFUSELIGHTING = 132,
    TAGID_SVG_FEDISPLACEMENTMAP = 133,
    TAGID_SVG_FEDISTANTLIGHT = 134,
    TAGID_SVG_FEFLOOD = 135,
    TAGID_SVG_FEFUNCA = 136,
    TAGID_SVG_FEFUNCB = 137,
    TAGID_SVG_FEFUNCG = 138,
    TAGID_SVG_FEFUNCR = 139,
    TAGID_SVG_FEGAUSSIANBLUR = 140,
    TAGID_SVG_FEIMAGE = 141,
    TAGID_SVG_FEMERGE = 142,
    TAGID_SVG_FEMERGENODE = 143,
    TAGID_SVG_FEMORPHOLOGY = 144,
    TAGID_SVG_FEOFFSET = 145,
    TAGID_SVG_FEPOINTLIGHT = 146,
    TAGID_SVG_FESPECULARLIGHTING = 147,
    TAGID_SVG_FESPOTLIGHT = 148,
    TAGID_SVG_FETILE = 149,
    TAGID_SVG_FETURBULENCE = 150,
    TAGID_SVG_FILTER = 151,
    TAGID_SVG_FONT = 152,
    TAGID_SVG_FONT_FACE = 153,
    TAGID_SVG_FONT_FACE_FORMAT = 154,
    TAGID_SVG_FONT_FACE_NAME = 155,
    TAGID_SVG_FONT_FACE_SRC = 156,
    TAGID_SVG_FONT_FACE_URI = 157,
    TAGID_SVG_FOREIGNOBJECT = 158,
    TAGID_SVG_G = 159,
    TAGID_SVG_GLYPH = 160,
    TAGID_SVG_GLYPHREF = 161,
    TAGID_SVG_HKERN = 162,
    TAGID_SVG_IMAGE = 163,
    TAGID_SVG_LINE = 164,
    TAGID_SVG_LINEARGRADIENT = 165,
    TAGID_SVG_MARKER = 166,
    TAGID_SVG_MASK = 167,
    TAGID_SVG_METADATA = 168,
    TAGID_SVG_MISSING_GLYPH = 169,
    TAGID_SVG_MPATH = 170,
    TAGID_SVG_PATH = 171,
    TAGID_SVG_PATTERN = 172,
    TAGID_SVG_POLYGON = 173,
    TAGID_SVG_POLYLINE = 174,
    TAGID_SVG_RADIALGRADIENT = 175,
    TAGID_SVG_RECT = 176,
    TAGID_SVG_SCRIPT = 177,
    TAGID_SVG_SET = 178,
    TAGID_SVG_STOP = 179,
    TAGID_SVG_STYLE = 180,
    TAGID_SVG_SVG = 181,
    TAGID_SVG_SWITCH = 182,
    TAGID_SVG_SYMBOL = 183,
    TAGID_SVG_TEXT = 184,
    TAGID_SVG_TEXTPATH = 185,
    TAGID_SVG_TITLE = 186,
    TAGID_SVG_TREF = 187,
    TAGID_SVG_TSPAN = 188,
    TAGID_SVG_USE = 189,
    TAGID_SVG_VIEW = 190,
    TAGID_SVG_VKERN = 191,
    TAGID_AUDIO = 192,
    TAGID_SOURCE = 193,
    TAGID_VIDEO = 194,
    TAGID_CANVAS = 195,
    TAGID_DOCTYPE = 196,
    TAGID_KEYGEN = 197,
    TAGID_PROCESSINGINSTRUCTION = 198,
    TAGID_ARTICLE = 199,
    TAGID_ASIDE = 200,
    TAGID_FIGCAPTION = 201,
    TAGID_FIGURE = 202,
    TAGID_FOOTER = 203,
    TAGID_HEADER = 204,
    TAGID_HGROUP = 205,
    TAGID_MARK = 206,
    TAGID_NAV = 207,
    TAGID_SECTION = 208,
    TAGID_PROGRESS = 209,
    TAGID_MATHML_ANNOTATION_XML = 210,
    TAGID_MATHML_MATH = 211,
    TAGID_MATHML_MI = 212,
    TAGID_MATHML_MN = 213,
    TAGID_MATHML_MO = 214,
    TAGID_MATHML_MS = 215,
    TAGID_MATHML_MTEXT = 216,
    TAGID_DATALIST = 217,
    TAGID_TRACK = 218,
    TAGID_ISINDEX = 219,
    TAGID_COMMAND = 220,
    TAGID_DETAILS = 221,
    TAGID_SUMMARY = 222,
    TAGID_COUNT = 223,
    TAGID_LAST_PREDEFINED = 10000,
    ELEMENT_TAG_ID_Max = 0x7FFFFFFF
  } ELEMENT_TAG_ID;

  typedef enum _SELECTION_TYPE {
    SELECTION_TYPE_None = 0,
    SELECTION_TYPE_Caret = 1,
    SELECTION_TYPE_Text = 2,
    SELECTION_TYPE_Control = 3,
    SELECTION_TYPE_Max = 0x7FFFFFFF
  } SELECTION_TYPE;

  typedef enum _SAVE_SEGMENTS_FLAGS {
    SAVE_SEGMENTS_NoIE4SelectionCompat = 0x0001,
    SAVE_SEGMENTS_FLAGS_Max = 0x7FFFFFFF
  } SAVE_SEGMENTS_FLAGS;

  typedef enum _CARET_DIRECTION {
    CARET_DIRECTION_INDETERMINATE = 0,
    CARET_DIRECTION_SAME = 1,
    CARET_DIRECTION_BACKWARD = 2,
    CARET_DIRECTION_FORWARD = 3,
    CARET_DIRECTION_Max = 0x7FFFFFFF
  } CARET_DIRECTION;

  typedef enum _LINE_DIRECTION {
    LINE_DIRECTION_RightToLeft = 1,
    LINE_DIRECTION_LeftToRight = 2,
    LINE_DIRECTION_Max = 0x7FFFFFFF
  } LINE_DIRECTION;

  typedef enum _HT_OPTIONS {
    HT_OPT_AllowAfterEOL = 0x1,
    HT_OPTIONS_Max = 0x7FFFFFFF
  } HT_OPTIONS;

  typedef enum _HT_RESULTS {
    HT_RESULTS_Glyph = 0x1,
    HT_RESULTS_Max = 0x7FFFFFFF
  } HT_RESULTS;

  typedef enum _DISPLAY_MOVEUNIT {
    DISPLAY_MOVEUNIT_PreviousLine = 1,
    DISPLAY_MOVEUNIT_NextLine = 2,
    DISPLAY_MOVEUNIT_CurrentLineStart = 3,
    DISPLAY_MOVEUNIT_CurrentLineEnd = 4,
    DISPLAY_MOVEUNIT_TopOfWindow = 5,
    DISPLAY_MOVEUNIT_BottomOfWindow = 6,
    DISPLAY_MOVEUNIT_Max = 0x7FFFFFFF
  } DISPLAY_MOVEUNIT;

  typedef enum _DISPLAY_GRAVITY {
    DISPLAY_GRAVITY_PreviousLine = 1,
    DISPLAY_GRAVITY_NextLine = 2,
    DISPLAY_GRAVITY_Max = 0x7FFFFFFF
  } DISPLAY_GRAVITY;

  typedef enum _DISPLAY_BREAK {
    DISPLAY_BREAK_None = 0x0,
    DISPLAY_BREAK_Block = 0x1,
    DISPLAY_BREAK_Break = 0x2,
    DISPLAY_BREAK_Max = 0x7FFFFFFF
  } DISPLAY_BREAK;

  typedef enum _COORD_SYSTEM {
    COORD_SYSTEM_GLOBAL = 0,
    COORD_SYSTEM_PARENT = 1,
    COORD_SYSTEM_CONTAINER = 2,
    COORD_SYSTEM_CONTENT = 3,
    COORD_SYSTEM_FRAME = 4,
    COORD_SYSTEM_CLIENT = 5,
    COORD_SYSTEM_Max = 0x7FFFFFFF
  } COORD_SYSTEM;

  typedef enum _DEV_CONSOLE_MESSAGE_LEVEL {
    DCML_INFORMATIONAL = 0x0,
    DCML_WARNING = 0x1,
    DCML_ERROR = 0x2,
    DEV_CONSOLE_MESSAGE_LEVEL_Max = 0x7FFFFFFF
  } DEV_CONSOLE_MESSAGE_LEVEL;

  typedef enum _DOM_EVENT_PHASE {
    DEP_CAPTURING_PHASE = 0x1,
    DEP_AT_TARGET = 0x2,
    DEP_BUBBLING_PHASE = 0x3,
    DOM_EVENT_PHASE_Max = 0x7FFFFFFF
  } DOM_EVENT_PHASE;

  typedef enum _SCRIPT_TIMER_TYPE {
    STT_TIMEOUT = 0x0,
    STT_INTERVAL = 0x1,
    STT_IMMEDIATE = 0x2,
    STT_ANIMATION_FRAME = 0x3,
    SCRIPT_TIMER_TYPE_Max = 0x7FFFFFFF
  } SCRIPT_TIMER_TYPE;

  typedef enum _HTML_PAINTER {
    HTMLPAINTER_OPAQUE = 0x1,
    HTMLPAINTER_TRANSPARENT = 0x2,
    HTMLPAINTER_ALPHA = 0x4,
    HTMLPAINTER_COMPLEX = 0x8,
    HTMLPAINTER_OVERLAY = 0x10,
    HTMLPAINTER_HITTEST = 0x20,
    HTMLPAINTER_SURFACE = 0x100,
    HTMLPAINTER_3DSURFACE = 0x200,
    HTMLPAINTER_NOBAND = 0x400,
    HTMLPAINTER_NODC = 0x1000,
    HTMLPAINTER_NOPHYSICALCLIP = 0x2000,
    HTMLPAINTER_NOSAVEDC = 0x4000,
    HTMLPAINTER_SUPPORTS_XFORM = 0x8000,
    HTMLPAINTER_EXPAND = 0x10000,
    HTMLPAINTER_NOSCROLLBITS = 0x20000,
    HTML_PAINTER_Max = 0x7FFFFFFF
  } HTML_PAINTER;

  typedef enum _HTML_PAINT_ZORDER {
    HTMLPAINT_ZORDER_NONE = 0,
    HTMLPAINT_ZORDER_REPLACE_ALL = 1,
    HTMLPAINT_ZORDER_REPLACE_CONTENT = 2,
    HTMLPAINT_ZORDER_REPLACE_BACKGROUND = 3,
    HTMLPAINT_ZORDER_BELOW_CONTENT = 4,
    HTMLPAINT_ZORDER_BELOW_FLOW = 5,
    HTMLPAINT_ZORDER_ABOVE_FLOW = 6,
    HTMLPAINT_ZORDER_ABOVE_CONTENT = 7,
    HTMLPAINT_ZORDER_WINDOW_TOP = 8,
    HTML_PAINT_ZORDER_Max = 0x7FFFFFFF
  } HTML_PAINT_ZORDER;

  typedef enum _HTML_PAINT_DRAW_FLAGS {
    HTMLPAINT_DRAW_UPDATEREGION = 0x1,
    HTMLPAINT_DRAW_USE_XFORM = 0x2,
    HTML_PAINT_DRAW_FLAGS_Max = 0x7FFFFFFF
  } HTML_PAINT_DRAW_FLAGS;

  typedef enum _HTML_PAINT_EVENT_FLAGS {
    HTMLPAINT_EVENT_TARGET = 0x0001,
    HTMLPAINT_EVENT_SETCURSOR = 0x0002,
    HTML_PAINT_EVENT_FLAGS_Max = 0x7FFFFFFF
  } HTML_PAINT_EVENT_FLAGS;

  typedef enum _HTML_PAINT_DRAW_INFO_FLAGS {
    HTMLPAINT_DRAWINFO_VIEWPORT = 0x1,
    HTMLPAINT_DRAWINFO_UPDATEREGION = 0x2,
    HTMLPAINT_DRAWINFO_XFORM = 0x4,
    HTML_PAINT_DRAW_INFO_FLAGS_Max = 0x7FFFFFFF
  } HTML_PAINT_DRAW_INFO_FLAGS;

  typedef struct _HTML_PAINTER_INFO {
    LONG lFlags;
    LONG lZOrder;
    IID iidDrawObject;
    RECT rcExpand;
  } HTML_PAINTER_INFO;

  typedef struct _HTML_PAINT_XFORM {
    FLOAT eM11;
    FLOAT eM12;
    FLOAT eM21;
    FLOAT eM22;
    FLOAT eDx;
    FLOAT eDy;
  } HTML_PAINT_XFORM;

  typedef struct _HTML_PAINT_DRAW_INFO {
    RECT rcViewport;
    HRGN hrgnUpdate;
    HTML_PAINT_XFORM xform;
  } HTML_PAINT_DRAW_INFO;

  interface IElementBehavior;
  interface IElementBehaviorSite;
  interface IHTMLElementDefaults;
  interface ISurfacePresenter;

  cpp_quote("EXTERN_C const GUID CLSID_CAppBehavior;")
  cpp_quote("EXTERN_C const GUID CLSID_CHTMLDlg;")
  cpp_quote("EXTERN_C const GUID CLSID_CHTMLPopup;")
  cpp_quote("EXTERN_C const GUID CLSID_CThreadDialogProcParam;")

  typedef enum _HTMLDlgFlag {
    HTMLDlgFlagNo = 0,
    HTMLDlgFlagOff = 0,
    HTMLDlgFlag0 = 0,
    HTMLDlgFlagYes = 1,
    HTMLDlgFlagOn = 1,
    HTMLDlgFlag1 = 1,
    HTMLDlgFlagNotSet = -1,
    HTMLDlgFlag_Max = 0x7FFFFFFF
  } HTMLDlgFlag;

  typedef enum _HTMLDlgBorder {
    HTMLDlgBorderThin = 0,
    HTMLDlgBorderThick = 0x40000,
    HTMLDlgBorder_Max = 0x7FFFFFFF
  } HTMLDlgBorder;

  typedef enum _HTMLDlgEdge {
    HTMLDlgEdgeSunken = 0,
    HTMLDlgEdgeRaised = 16,
    HTMLDlgEdge_Max = 0x7FFFFFFF
  } HTMLDlgEdge;

  typedef enum _HTMLDlgCenter {
    HTMLDlgCenterNo = 0,
    HTMLDlgCenterOff = 0,
    HTMLDlgCenter0 = 0,
    HTMLDlgCenterYes = 1,
    HTMLDlgCenterOn = 1,
    HTMLDlgCenter1 = 1,
    HTMLDlgCenterParent = 1,
    HTMLDlgCenterDesktop = 2,
    HTMLDlgCenter_Max = 0x7FFFFFFF
  } HTMLDlgCenter;

  typedef enum _HTMLAppFlag {
    HTMLAppFlagNo = 0,
    HTMLAppFlagOff = 0,
    HTMLAppFlag0 = 0,
    HTMLAppFlagYes = 1,
    HTMLAppFlagOn = 1,
    HTMLAppFlag1 = 1,
    HTMLAppFlag_Max = 0x7FFFFFFF
  } HTMLAppFlag;

  typedef enum _HTMLMinimizeFlag {
    HTMLMinimizeFlagNo = 0,
    HTMLMinimizeFlagYes = 0x20000,
    HTMLMinimizeFlag_Max = 0x7FFFFFFF
  } HTMLMinimizeFlag;

  typedef enum _HTMLMaximizeFlag {
    HTMLMaximizeFlagNo = 0,
    HTMLMaximizeFlagYes = 0x10000,
    HTMLMaximizeFlag_Max = 0x7FFFFFFF
  } HTMLMaximizeFlag;

  typedef enum _HTMLCaptionFlag {
    HTMLCaptionFlagNo = 0,
    HTMLCaptionFlagYes = 0xc00000,
    HTMLCaptionFlag_Max = 0x7FFFFFFF
  } HTMLCaptionFlag;

  typedef enum _HTMLSysMenuFlag {
    HTMLSysMenuFlagNo = 0,
    HTMLSysMenuFlagYes = 0x80000,
    HTMLSysMenuFlag_Max = 0x7FFFFFFF
  } HTMLSysMenuFlag;

  typedef enum _HTMLBorder {
    HTMLBorderNone = 0,
    HTMLBorderThick = 0x40000,
    HTMLBorderDialog = 0x400000,
    HTMLBorderThin = 0x800000,
    HTMLBorder_Max = 0x7FFFFFFF
  } HTMLBorder;

  typedef enum _HTMLBorderStyle {
    HTMLBorderStyleNormal = 0,
    HTMLBorderStyleRaised = 0x100,
    HTMLBorderStyleSunken = 0x200,
    HTMLBorderStylecombined = 0x300,
    HTMLBorderStyleStatic = 0x20000,
    HTMLBorderStyle_Max = 0x7FFFFFFF
  } HTMLBorderStyle;

  typedef enum _HTMLWindowState {
    HTMLWindowStateNormal = 1,
    HTMLWindowStateMaximize = 3,
    HTMLWindowStateMinimize = 6,
    HTMLWindowState_Max = 0x7FFFFFFF
  } HTMLWindowState;

  typedef enum _BEHAVIOR_EVENT {
    BEHAVIOREVENT_FIRST = 0,
    BEHAVIOREVENT_CONTENTREADY = 0,
    BEHAVIOREVENT_DOCUMENTREADY = 1,
    BEHAVIOREVENT_APPLYSTYLE = 2,
    BEHAVIOREVENT_DOCUMENTCONTEXTCHANGE = 3,
    BEHAVIOREVENT_CONTENTSAVE = 4,
    BEHAVIOREVENT_LAST = 4,
    BEHAVIOR_EVENT_Max = 0x7FFFFFFF
  } BEHAVIOR_EVENT;

  typedef enum _BEHAVIOR_EVENT_FLAGS {
    BEHAVIOREVENTFLAGS_BUBBLE = 1,
    BEHAVIOREVENTFLAGS_STANDARDADDITIVE = 2,
    BEHAVIOR_EVENT_FLAGS_Max = 0x7FFFFFFF
  } BEHAVIOR_EVENT_FLAGS;

  typedef enum _BEHAVIOR_RENDER_INFO {
    BEHAVIORRENDERINFO_BEFOREBACKGROUND = 0x1,
    BEHAVIORRENDERINFO_AFTERBACKGROUND = 0x2,
    BEHAVIORRENDERINFO_BEFORECONTENT = 0x4,
    BEHAVIORRENDERINFO_AFTERCONTENT = 0x8,
    BEHAVIORRENDERINFO_AFTERFOREGROUND = 0x000020,
    BEHAVIORRENDERINFO_ABOVECONTENT = 0x000028,
    BEHAVIORRENDERINFO_ALLLAYERS = 0x0000ff,
    BEHAVIORRENDERINFO_DISABLEBACKGROUND = 0x000100,
    BEHAVIORRENDERINFO_DISABLENEGATIVEZ = 0x000200,
    BEHAVIORRENDERINFO_DISABLECONTENT = 0x000400,
    BEHAVIORRENDERINFO_DISABLEPOSITIVEZ = 0x000800,
    BEHAVIORRENDERINFO_DISABLEALLLAYERS = 0x000f00,
    BEHAVIORRENDERINFO_HITTESTING = 0x001000,
    BEHAVIORRENDERINFO_SURFACE = 0x100000,
    BEHAVIORRENDERINFO_3DSURFACE = 0x200000,
    BEHAVIOR_RENDER_INFO_Max = 0x7FFFFFFF
  } BEHAVIOR_RENDER_INFO;

  typedef enum _BEHAVIOR_RELATION {
    BEHAVIOR_FIRSTRELATION = 0,
    BEHAVIOR_SAMEELEMENT = 0,
    BEHAVIOR_PARENT = 1,
    BEHAVIOR_CHILD = 2,
    BEHAVIOR_SIBLING = 3,
    BEHAVIOR_LASTRELATION = 3,
    BEHAVIOR_RELATION_Max = 0x7FFFFFFF
  } BEHAVIOR_RELATION;

  typedef enum _BEHAVIOR_LAYOUT_INFO {
    BEHAVIORLAYOUTINFO_FULLDELEGATION = 0x01,
    BEHAVIORLAYOUTINFO_MODIFYNATURAL = 0x02,
    BEHAVIORLAYOUTINFO_MAPSIZE = 0x04,
    BEHAVIOR_LAYOUT_INFO_Max = 0x7FFFFFFF
  } BEHAVIOR_LAYOUT_INFO;

  typedef enum _BEHAVIOR_LAYOUT_MODE {
    BEHAVIORLAYOUTMODE_NATURAL = 0x0001,
    BEHAVIORLAYOUTMODE_MINWIDTH = 0x0002,
    BEHAVIORLAYOUTMODE_MAXWIDTH = 0x0004,
    BEHAVIORLAYOUTMODE_MEDIA_RESOLUTION = 0x4000,
    BEHAVIORLAYOUTMODE_FINAL_PERCENT = 0x8000,
    BEHAVIOR_LAYOUT_MODE_Max = 0x7FFFFFFF
  } BEHAVIOR_LAYOUT_MODE;

  typedef enum _ELEMENTDESCRIPTOR_FLAGS {
    ELEMENTDESCRIPTORFLAGS_LITERAL = 1,
    ELEMENTDESCRIPTORFLAGS_NESTED_LITERAL = 2,
    ELEMENTDESCRIPTOR_FLAGS_Max = 0x7FFFFFFF
  } ELEMENTDESCRIPTOR_FLAGS;

  typedef enum _ELEMENTNAMESPACE_FLAGS {
    ELEMENTNAMESPACEFLAGS_ALLOWANYTAG = 0x1,
    ELEMENTNAMESPACEFLAGS_QUERYFORUNKNOWNTAGS = 0x2,
    ELEMENTNAMESPACE_FLAGS_Max = 0x7FFFFFFF
  } ELEMENTNAMESPACE_FLAGS;

  typedef enum _VIEW_OBJECT_ALPHA_MODE {
    VIEW_OBJECT_ALPHA_MODE_IGNORE = 0,
    VIEW_OBJECT_ALPHA_MODE_PREMULTIPLIED = 1,
    VIEW_OBJECT_ALPHA_MODE_Max = 0x7FFFFFFF
  } VIEW_OBJECT_ALPHA_MODE;

  typedef enum _VIEW_OBJECT_COMPOSITION_MODE {
    VIEW_OBJECT_COMPOSITION_MODE_LEGACY = 0,
    VIEW_OBJECT_COMPOSITION_MODE_SURFACEPRESENTER = 1,
    VIEW_OBJECT_COMPOSITION_MODE_Max = 0x7FFFFFFF
  } VIEW_OBJECT_COMPOSITION_MODE;

  [object, pointer_default (unique), uuid (3050f3ed-98b5-11cf-bb82-00aa00bdce0b)]
  interface ICSSFilterSite : IUnknown {
    HRESULT GetElement ([retval, out] IHTMLElement **Element);
    HRESULT FireOnFilterChangeEvent ();
  };

  [object, pointer_default (unique), uuid (3050f3ec-98b5-11cf-bb82-00aa00bdce0b)]
  interface ICSSFilter : IUnknown {
    HRESULT SetSite ([in] ICSSFilterSite *pSink);
    HRESULT OnAmbientPropertyChange ([in] LONG dispid);
  };

  [object, pointer_default (unique), uuid (c81984c4-74c8-11d2-baa9-00c04fc2040e)] 
  interface ISecureUrlHost : IUnknown {
    HRESULT ValidateSecureUrl ([out] BOOL *pfAllow,[in] OLECHAR *pchUrlInQuestion,[in] DWORD dwFlags);
  };

  [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 ();
  };

  [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);
  };
  [object, pointer_default (unique), uuid (3050f5f9-98b5-11cf-bb82-00aa00bdce0b)] interface IMarkupContainer : IUnknown {
    HRESULT OwningDoc ([out] IHTMLDocument2 **ppDoc);
  };

  [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);
  };

  [object, pointer_default (unique), uuid (3050f6e0-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLChangePlayback : IUnknown {
    HRESULT ExecChange ([in] BYTE *pbRecord,[in] BOOL fForward);
  };

  [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, string] OLECHAR *pchFindText,[in] DWORD dwFlags,[in] IMarkupPointer *pIEndMatch,[in] IMarkupPointer *pIEndSearch);
  };

  [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,[in] BOOL fAtStart);
  };
  [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 *pPointerFrag);
    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);
  };

  [object, pointer_default (unique), uuid (3050f649-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLChangeLog : IUnknown {
    HRESULT GetNextChange ([in] BYTE *pbBuffer,[in] long nBufferSize,[out] long *pnRecordLength);
  };

  [object, pointer_default (unique), uuid (3050f64a-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLChangeSink : IUnknown {
    HRESULT Notify ();
  };

  [object, pointer_default (unique), uuid (E4E23071-4d07-11d2-AE76-0080c73bc199)]
  interface IXMLGenericParse : IUnknown {
    HRESULT SetGenericParse ([in] VARIANT_BOOL fDoGeneric);
  };

  [object, pointer_default (unique), uuid (3050f6a0-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLEditHost : IUnknown {
    HRESULT SnapRect ([in] IHTMLElement *pIElement,[in, out] RECT *prcNew,[in] ELEMENT_CORNER eHandle);
  };

  [object, pointer_default (unique), uuid (3050f848-98b5-11cf-bb82-00aa00bdce0d)]
  interface IHTMLEditHost2 : IHTMLEditHost {
    HRESULT PreDrag ();
  };

  [object, pointer_default (unique), uuid (3050f683-98b5-11cf-bb82-00aa00bdce0b)]
  interface ISegment : IUnknown {
    HRESULT GetPointers ([in] IMarkupPointer *pIStart,[in] IMarkupPointer *pIEnd);
  };

  [object, pointer_default (unique), uuid (3050f692-98b5-11cf-bb82-00aa00bdce0b)]
  interface ISegmentListIterator : IUnknown {
    HRESULT Current ([out] ISegment **ppISegment);
    HRESULT First ();
    HRESULT IsDone ();
    HRESULT Advance ();
  };

  [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 *pfEmpty);
  };

  [object, pointer_default (unique), uuid (3050f6c1-98b5-11cf-bb82-00aa00bdce0b)]
  interface ISequenceNumber : IUnknown {
    HRESULT GetSequenceNumber ([in] long nCurrent,[out] long *pnNew);
  };

  [object, pointer_default (unique), uuid (3050f6ca-98b5-11cf-bb82-00aa00bdce0b)]
  interface IIMEServices : IUnknown {
    HRESULT GetActiveIMM ([out] IActiveIMMApp **ppActiveIMM);
  };

  [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);
  };

  [object, pointer_default (unique), uuid (3050f606-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHighlightRenderingServices : IUnknown {
    HRESULT AddSegment ([in] IDisplayPointer *pDispPointerStart,[in] IDisplayPointer *pDispPointerEnd,[in] IHTMLRenderStyle *pIRenderStyle,[out] IHighlightSegment **ppISegment);
    HRESULT MoveSegmentToPointers ([in] IHighlightSegment *pISegment,[in] IDisplayPointer *pDispPointerStart,[in] IDisplayPointer *pDispPointerEnd);
    HRESULT RemoveSegment ([in] IHighlightSegment *pISegment);
  };

  [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);
  };

  [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);
  };

  [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);
  };

  [object, pointer_default (unique), uuid (3050f690-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHighlightSegment : ISegment {
  };

  [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);
  };

  [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);
  };

  [object, pointer_default (unique), uuid (3050f812-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLEditServices2 : IHTMLEditServices {
    HRESULT MoveToSelectionAnchorEx ([in] IDisplayPointer *pIStartAnchor);
    HRESULT MoveToSelectionEndEx ([in] IDisplayPointer *pIEndAnchor);
    HRESULT FreezeVirtualCaretPos ([in] BOOL fReCompute);
    HRESULT UnFreezeVirtualCaretPos ([in] BOOL fReset);
  };

  [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);
  };

  [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] TCHAR *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);
  };

  [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);
  };

  [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);
  };

  [object, pointer_default (unique), uuid (3050f81a-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHtmlDlgSafeHelper : IDispatch {
    [id (DISPID_IHTMLDLGSAFEHELPER_CHOOSECOLORDLG)] HRESULT choosecolordlg ([optional, in] VARIANT initColor,[retval, out] VARIANT *rgbColor);
    [id (DISPID_IHTMLDLGSAFEHELPER_GETCHARSET)] HRESULT getCharset ([in] BSTR fontName,[retval, out] VARIANT *charset);
    [propget, id (DISPID_IHTMLDLGSAFEHELPER_FONTS)] HRESULT Fonts ([retval, out] IDispatch **p);
    [propget, id (DISPID_IHTMLDLGSAFEHELPER_BLOCKFORMATS)] HRESULT BlockFormats ([retval, out] IDispatch **p);
  };

  [object, pointer_default (unique), uuid (3050f830-98b5-11cf-bb82-00aa00bdce0b)]
  interface IBlockFormats : IDispatch {
    [id (DISPID_IBLOCKFORMATS__NEWENUM), propget, restricted] HRESULT _NewEnum ([retval, out] IUnknown **p);
    [id (DISPID_IBLOCKFORMATS_COUNT), propget] HRESULT Count ([retval, out] long *p);
    [id (DISPID_IBLOCKFORMATS_ITEM)] HRESULT Item ([in] VARIANT *pvarIndex,[retval, out] BSTR *pbstrBlockFormat);
  };
  
  [object, pointer_default (unique), uuid (3050f839-98b5-11cf-bb82-00aa00bdce0b)]
  interface IFontNames : IDispatch {
    [id (DISPID_IFONTNAMES__NEWENUM), propget, restricted] HRESULT _NewEnum ([retval, out] IUnknown **p);
    [id (DISPID_IFONTNAMES_COUNT), propget] HRESULT Count ([retval, out] long *p);
    [id (DISPID_IFONTNAMES_ITEM)] HRESULT Item ([in] VARIANT *pvarIndex,[retval, out] BSTR *pbstrFontName);
  };
  
  [noncreatable, uuid (3050f819-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HtmlDlgSafeHelper {
    [default] interface IHtmlDlgSafeHelper;
  };

  [noncreatable, uuid (3050f831-98b5-11cf-bb82-00aa00bdce0b)]
  coclass BlockFormats {
    [default] interface IBlockFormats;
  };

  [noncreatable, uuid (3050f83a-98b5-11cf-bb82-00aa00bdce0b)]
  coclass FontNames {
    [default] interface IFontNames;
  };

  [object, local, uuid (30510808-98b5-11cf-bb82-00aa00bdce0b), pointer_default (unique)]
  interface IDeveloperConsoleMessageReceiver : IUnknown {
    HRESULT Write ([in] LPCWSTR source,[in] DEV_CONSOLE_MESSAGE_LEVEL level,[in] int messageId,[in] LPCWSTR messageText);
    HRESULT WriteWithUrl ([in] LPCWSTR source,[in] DEV_CONSOLE_MESSAGE_LEVEL level,[in] int messageId,[in] LPCWSTR messageText,[in] LPCWSTR fileUrl);
    HRESULT WriteWithUrlAndLine ([in] LPCWSTR source,[in] DEV_CONSOLE_MESSAGE_LEVEL level,[in] int messageId,[in] LPCWSTR messageText,[in] LPCWSTR fileUrl,[in] ULONG line);
    HRESULT WriteWithUrlLineAndColumn ([in] LPCWSTR source,[in] DEV_CONSOLE_MESSAGE_LEVEL level,[in] int messageId,[in] LPCWSTR messageText,[in] LPCWSTR fileUrl,[in] ULONG line,[in] ULONG column);
  };

  [object, local, uuid (30510842-98b5-11cf-bb82-00aa00bdce0b), pointer_default (unique)]
  interface IDebugCallbackNotificationHandler : IUnknown {
    HRESULT RequestedCallbackTypes ([out] DWORD *pCallbackMask);
    HRESULT BeforeDispatchEvent ([in] IUnknown *pEvent);
    HRESULT DispatchEventComplete ([in] IUnknown *pEvent,[in] DWORD propagationStatus);
    HRESULT BeforeInvokeDomCallback ([in] IUnknown *pEvent,[in] IScriptEventHandler *pCallback,[in] DOM_EVENT_PHASE eStage,[in] DWORD propagationStatus);
    HRESULT InvokeDomCallbackComplete ([in] IUnknown *pEvent,[in] IScriptEventHandler *pCallback,[in] DOM_EVENT_PHASE eStage,[in] DWORD propagationStatus);
    HRESULT BeforeInvokeCallback ([in] SCRIPT_TIMER_TYPE eCallbackType,[in] DWORD callbackCookie,[in] IDispatch *pDispHandler,[in] ULONGLONG ullHandlerCookie,[in] BSTR functionName,[in] UINT32 line,[in] UINT32 column,[in] UINT32 cchLength,[in] IUnknown *pDebugDocumentContext);
    HRESULT InvokeCallbackComplete ([in] SCRIPT_TIMER_TYPE eCallbackType,[in] DWORD callbackCookie,[in] IDispatch *pDispHandler,[in] ULONGLONG ullHandlerCookie,[in] BSTR functionName,[in] UINT32 line,[in] UINT32 column,[in] UINT32 cchLength,[in] IUnknown *pDebugDocumentContext);
  };

  [object, pointer_default (unique), uuid (3051083a-98b5-11cf-bb82-00aa00bdce0b)]
  interface IScriptEventHandler : IUnknown {
    HRESULT FunctionName ([retval, out] BSTR *pbstrFunctionName);
    HRESULT DebugDocumentContext ([retval, out] IUnknown **ppDebugDocumentContext);
    HRESULT EventHandlerDispatch ([retval, out] IDispatch **ppDispHandler);
    HRESULT UsesCapture ([retval, out] BOOL *pfUsesCapture);
    HRESULT Cookie ([retval, out] ULONGLONG *pullCookie);
  };

  [object, pointer_default (unique), uuid (30510841-98b5-11cf-bb82-00aa00bdce0b)]
  interface IScriptEventHandlerSourceInfo : IUnknown {
    HRESULT GetSourceInfo ([out] BSTR *pbstrFunctionName,[out] UINT32 *line,[out] UINT32 *column,[out] UINT32 *cchLength);
  };

  [object, pointer_default (unique), uuid (3051083b-98b5-11cf-bb82-00aa00bdce0b)]
  interface IDOMEventRegistrationCallback : IUnknown {
    HRESULT OnDOMEventListenerAdded ([in] LPCWSTR pszEventType,[in] IScriptEventHandler *pHandler);
    HRESULT OnDOMEventListenerRemoved ([in] ULONGLONG ullCookie);
  };

  [object, pointer_default (unique), uuid (30510839-98b5-11cf-bb82-00aa00bdce0b)]
  interface IEventTarget2 : IUnknown {
    HRESULT GetRegisteredEventTypes ([retval, out] SAFEARRAY **ppEventTypeArray);
    HRESULT GetListenersForType ([in] LPCWSTR pszEventType,[retval, out] SAFEARRAY **ppEventHandlerArray);
    HRESULT RegisterForDOMEventListeners ([in] IDOMEventRegistrationCallback *pCallback);
    HRESULT UnregisterForDOMEventListeners ([in] IDOMEventRegistrationCallback *pCallback);
  };

  [hidden, uuid (3050f6bd-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface HTMLNamespaceEvents {
    properties:
    methods:
    [id (DISPID_HTMLNAMESPACEEVENTS_ONREADYSTATECHANGE)] void onreadystatechange ([in] IHTMLEventObj *pEvtObj);
  };

  [odl, oleautomation, dual, uuid (3050f6bb-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLNamespace : IDispatch {
    [id (DISPID_IHTMLNAMESPACE_NAME), propget, bindable] HRESULT name ([retval, out] BSTR *p);
    [id (DISPID_IHTMLNAMESPACE_URN), propget, bindable] HRESULT urn ([retval, out] BSTR *p);
    [id (DISPID_IHTMLNAMESPACE_TAGNAMES), propget, bindable] HRESULT tagNames ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLNAMESPACE_READYSTATE), propget, bindable] HRESULT readyState ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLNAMESPACE_ONREADYSTATECHANGE), propput, displaybind, bindable] HRESULT onreadystatechange ([in] VARIANT v);
    [id (DISPID_IHTMLNAMESPACE_ONREADYSTATECHANGE), propget, displaybind, bindable] HRESULT onreadystatechange ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLNAMESPACE_DOIMPORT)] HRESULT doImport ([in] BSTR bstrImplementationUrl);
    [id (DISPID_IHTMLNAMESPACE_ATTACHEVENT)] HRESULT attachEvent ([in] BSTR event,[in] IDispatch *pDisp,[retval, out] VARIANT_BOOL *pfResult);
    [id (DISPID_IHTMLNAMESPACE_DETACHEVENT)] HRESULT detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
  };

  [odl, oleautomation, dual, uuid (3050f6b8-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLNamespaceCollection : IDispatch {
    [id (DISPID_IHTMLNAMESPACECOLLECTION_LENGTH), propget] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLNAMESPACECOLLECTION_ITEM)] HRESULT item ([in] VARIANT index,[retval, out] IDispatch **ppNamespace);
    [id (DISPID_IHTMLNAMESPACECOLLECTION_ADD)] HRESULT add ([in] BSTR bstrNamespace,[in] BSTR bstrUrn,[optional, in] VARIANT implementationUrl,[retval, out] IDispatch **ppNamespace);
  };

  [hidden, uuid (3050f54f-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLNamespace {
    properties:
    methods:
    [id (DISPID_IHTMLNAMESPACE_NAME), propget, bindable] BSTR name ();
    [id (DISPID_IHTMLNAMESPACE_URN), propget, bindable] BSTR urn ();
    [id (DISPID_IHTMLNAMESPACE_TAGNAMES), propget, bindable] IDispatch *tagNames ();
    [id (DISPID_IHTMLNAMESPACE_READYSTATE), propget, bindable] VARIANT readyState ();
    [id (DISPID_IHTMLNAMESPACE_ONREADYSTATECHANGE), propput, displaybind, bindable] void onreadystatechange (VARIANT v);
    [id (DISPID_IHTMLNAMESPACE_ONREADYSTATECHANGE), propget, displaybind, bindable] VARIANT onreadystatechange ();
    [id (DISPID_IHTMLNAMESPACE_DOIMPORT)] void doImport ([in] BSTR bstrImplementationUrl);
    [id (DISPID_IHTMLNAMESPACE_ATTACHEVENT)] VARIANT_BOOL attachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLNAMESPACE_DETACHEVENT)] void detachEvent ([in] BSTR event,[in] IDispatch *pDisp);
    [id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), propget, hidden] IDispatch *constructor ();
  };

  [noncreatable, uuid (3050f6bc-98b5-11cf-bb82-00aa00bdce0b)] coclass HTMLNamespace {
    [default] dispinterface DispHTMLNamespace;
    [source, default] dispinterface HTMLNamespaceEvents;
    interface IHTMLNamespace;
    interface IHTMLDOMConstructor;
  };

  [hidden, uuid (3050f550-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLNamespaceCollection {
    properties:
    methods:
    [id (DISPID_IHTMLNAMESPACECOLLECTION_LENGTH), propget] long length ();
    [id (DISPID_IHTMLNAMESPACECOLLECTION_ITEM)] IDispatch *item ([in] VARIANT index);
    [id (DISPID_IHTMLNAMESPACECOLLECTION_ADD)] IDispatch *add ([in] BSTR bstrNamespace,[in] BSTR bstrUrn,[optional, in] VARIANT implementationUrl);
    [id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), propget, hidden] IDispatch *constructor ();
  };

  [noncreatable, uuid (3050f6b9-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLNamespaceCollection {
    [default] dispinterface DispHTMLNamespaceCollection;
    interface IHTMLNamespaceCollection;
    interface IHTMLDOMConstructor;
  };

  [object, pointer_default (unique), uuid (3050f6a6-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLPainter : IUnknown {
    HRESULT Draw ([in] RECT rcBounds,[in] RECT rcUpdate,[in] LONG lDrawFlags,[in] HDC hdc,[in] LPVOID pvDrawObject);
    HRESULT OnResize ([in] SIZE size);
    HRESULT GetPainterInfo ([out] HTML_PAINTER_INFO *pInfo);
    HRESULT HitTestPoint ([in] POINT pt,[out] BOOL *pbHit,[out] LONG *plPartID);
  };

  [object, pointer_default (unique), uuid (3050f6df-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLPainterEventInfo : IUnknown {
    HRESULT GetEventInfoFlags ([out] long *plEventInfoFlags);
    HRESULT GetEventTarget ([in] IHTMLElement **ppElement);
    HRESULT SetCursor ([in] LONG lPartID);
    HRESULT StringFromPartID ([in] LONG lPartID,[out] BSTR *pbstrPart);
  };

  [object, pointer_default (unique), uuid (3050f7e3-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLPainterOverlay : IUnknown {
    HRESULT OnMove ([in] RECT rcDevice);
  };

  [object, pointer_default (unique), uuid (3050f6a7-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLPaintSite : IUnknown {
    HRESULT InvalidatePainterInfo ();
    HRESULT InvalidateRect ([in] RECT *prcInvalid);
    HRESULT InvalidateRegion ([in] HRGN rgnInvalid);
    HRESULT GetDrawInfo ([in] LONG lFlags,[out] HTML_PAINT_DRAW_INFO *pDrawInfo);
    HRESULT TransformGlobalToLocal ([in] POINT ptGlobal,[out] POINT *pptLocal);
    HRESULT TransformLocalToGlobal ([in] POINT ptLocal,[out] POINT *pptGlobal);
    HRESULT GetHitTestCookie ([out] LONG *plCookie);
  };

  [odl, oleautomation, dual, uuid (3050f6b5-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLIPrintCollection : IDispatch {
    [id (DISPID_IHTMLIPRINTCOLLECTION_LENGTH), propget, hidden] HRESULT length ([retval, out] long *p);
    [id (DISPID_IHTMLIPRINTCOLLECTION__NEWENUM), propget, hidden, restricted] HRESULT _newEnum ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLIPRINTCOLLECTION_ITEM)] HRESULT item ([in] long index,[retval, out] IUnknown **ppIPrint);
  };

  [object, pointer_default (unique), uuid (3050f844-98b5-11cf-bb82-00aa00bdce0b)]
  interface IEnumPrivacyRecords : IUnknown {
    HRESULT Reset ();
    HRESULT GetSize ([out] ULONG *pSize);
    HRESULT GetPrivacyImpacted ([out] BOOL *pState);
    HRESULT Next ([out] BSTR *pbstrUrl,[out] BSTR *pbstrPolicyRef,[out] LONG *pdwReserved,[out] DWORD *pdwPrivacyFlags);
  };

  [object, pointer_default (unique), uuid (30510413-98b5-11cf-bb82-00aa00bdce0b)]
  interface IWPCBlockedUrls : IUnknown {
    HRESULT GetCount ([out] DWORD *pdwCount);
    HRESULT GetUrl ([in] DWORD dwIdx,[out] BSTR *pbstrUrl);
  };

  [odl, oleautomation, dual, uuid (3051049c-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLDOMConstructorCollection : IDispatch {
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_ATTR), propget] HRESULT Attr ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_BEHAVIORURNSCOLLECTION), propget] HRESULT BehaviorUrnsCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_BOOKMARKCOLLECTION), propget] HRESULT BookmarkCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_COMPATIBLEINFO), propget] HRESULT CompatibleInfo ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_COMPATIBLEINFOCOLLECTION), propget] HRESULT CompatibleInfoCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CONTROLRANGECOLLECTION), propget] HRESULT ControlRangeCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSCURRENTSTYLEDECLARATION), propget] HRESULT CSSCurrentStyleDeclaration ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSRULELIST), propget] HRESULT CSSRuleList ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSRULESTYLEDECLARATION), propget] HRESULT CSSRuleStyleDeclaration ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSSTYLEDECLARATION), propget] HRESULT CSSStyleDeclaration ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSSTYLERULE), propget] HRESULT CSSStyleRule ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_CSSSTYLESHEET), propget] HRESULT CSSStyleSheet ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_DATATRANSFER), propget] HRESULT DataTransfer ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_DOMIMPLEMENTATION), propget] HRESULT DOMImplementation ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_ELEMENT), propget] HRESULT Element ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_EVENT), propget] HRESULT Event ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HISTORY), propget] HRESULT History ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTCELEMENTBEHAVIORDEFAULTS), propget] HRESULT HTCElementBehaviorDefaults ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLANCHORELEMENT), propget] HRESULT HTMLAnchorElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLAREAELEMENT), propget] HRESULT HTMLAreaElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLAREASCOLLECTION), propget] HRESULT HTMLAreasCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBASEELEMENT), propget] HRESULT HTMLBaseElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBASEFONTELEMENT), propget] HRESULT HTMLBaseFontElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBGSOUNDELEMENT), propget] HRESULT HTMLBGSoundElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBLOCKELEMENT), propget] HRESULT HTMLBlockElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBODYELEMENT), propget] HRESULT HTMLBodyElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBRELEMENT), propget] HRESULT HTMLBRElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLBUTTONELEMENT), propget] HRESULT HTMLButtonElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLCOLLECTION), propget] HRESULT HTMLCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLCOMMENTELEMENT), propget] HRESULT HTMLCommentElement ([retval, out] IDispatch **p);
    [propget, id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLDDELEMENT)] HRESULT HTMLDDElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLDIVELEMENT), propget] HRESULT HTMLDivElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLDOCUMENT), propget] HRESULT HTMLDocument ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLDLISTELEMENT), propget] HRESULT HTMLDListElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLDTELEMENT), propget] HRESULT HTMLDTElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLEMBEDELEMENT), propget] HRESULT HTMLEmbedElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLFIELDSETELEMENT), propget] HRESULT HTMLFieldSetElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLFONTELEMENT), propget] HRESULT HTMLFontElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLFORMELEMENT), propget] HRESULT HTMLFormElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLFRAMEELEMENT), propget] HRESULT HTMLFrameElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLFRAMESETELEMENT), propget] HRESULT HTMLFrameSetElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLGENERICELEMENT), propget] HRESULT HTMLGenericElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLHEADELEMENT), propget] HRESULT HTMLHeadElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLHEADINGELEMENT), propget] HRESULT HTMLHeadingElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLHRELEMENT), propget] HRESULT HTMLHRElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLHTMLELEMENT), propget] HRESULT HTMLHtmlElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLIFRAMEELEMENT), propget] HRESULT HTMLIFrameElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLIMAGEELEMENT), propget] HRESULT HTMLImageElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLINPUTELEMENT), propget] HRESULT HTMLInputElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLISINDEXELEMENT), propget] HRESULT HTMLIsIndexElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLLABELELEMENT), propget] HRESULT HTMLLabelElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLLEGENDELEMENT), propget] HRESULT HTMLLegendElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLLIELEMENT), propget] HRESULT HTMLLIElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLLINKELEMENT), propget] HRESULT HTMLLinkElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLMAPELEMENT), propget] HRESULT HTMLMapElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLMARQUEEELEMENT), propget] HRESULT HTMLMarqueeElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLMETAELEMENT), propget] HRESULT HTMLMetaElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLMODELESSDIALOG), propget] HRESULT HTMLModelessDialog ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLNAMESPACEINFO), propget] HRESULT HTMLNamespaceInfo ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLNAMESPACEINFOCOLLECTION), propget] HRESULT HTMLNamespaceInfoCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLNEXTIDELEMENT), propget] HRESULT HTMLNextIdElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLNOSHOWELEMENT), propget] HRESULT HTMLNoShowElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLOBJECTELEMENT), propget] HRESULT HTMLObjectElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLOLISTELEMENT), propget] HRESULT HTMLOListElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLOPTIONELEMENT), propget] HRESULT HTMLOptionElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLPARAGRAPHELEMENT), propget] HRESULT HTMLParagraphElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLPARAMELEMENT), propget] HRESULT HTMLParamElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLPHRASEELEMENT), propget] HRESULT HTMLPhraseElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLPLUGINSCOLLECTION), propget] HRESULT HTMLPluginsCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLPOPUP), propget] HRESULT HTMLPopup ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLSCRIPTELEMENT), propget] HRESULT HTMLScriptElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLSELECTELEMENT), propget] HRESULT HTMLSelectElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLSPANELEMENT), propget] HRESULT HTMLSpanElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLSTYLEELEMENT), propget] HRESULT HTMLStyleElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLECAPTIONELEMENT), propget] HRESULT HTMLTableCaptionElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLECELLELEMENT), propget] HRESULT HTMLTableCellElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLECOLELEMENT), propget] HRESULT HTMLTableColElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLEELEMENT), propget] HRESULT HTMLTableElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLEROWELEMENT), propget] HRESULT HTMLTableRowElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTABLESECTIONELEMENT), propget] HRESULT HTMLTableSectionElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTEXTAREAELEMENT), propget] HRESULT HTMLTextAreaElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTEXTELEMENT), propget] HRESULT HTMLTextElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLTITLEELEMENT), propget] HRESULT HTMLTitleElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLULISTELEMENT), propget] HRESULT HTMLUListElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_HTMLUNKNOWNELEMENT), propget] HRESULT HTMLUnknownElement ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_IMAGE), propget] HRESULT Image ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_LOCATION), propget] HRESULT Location ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_NAMEDNODEMAP), propget] HRESULT NamedNodeMap ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_NAVIGATOR), propget] HRESULT Navigator ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_NODELIST), propget] HRESULT NodeList ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_OPTION), propget] HRESULT Option ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_SCREEN), propget] HRESULT Screen ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_SELECTION), propget] HRESULT Selection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_STATICNODELIST), propget] HRESULT StaticNodeList ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_STORAGE), propget] HRESULT Storage ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_STYLESHEETLIST), propget] HRESULT StyleSheetList ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_STYLESHEETPAGE), propget] HRESULT StyleSheetPage ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_STYLESHEETPAGELIST), propget] HRESULT StyleSheetPageList ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_TEXT), propget] HRESULT Text ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_TEXTRANGE), propget] HRESULT TextRange ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_TEXTRANGECOLLECTION), propget] HRESULT TextRangeCollection ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_TEXTRECTANGLE), propget] HRESULT TextRectangle ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_TEXTRECTANGLELIST), propget] HRESULT TextRectangleList ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_WINDOW), propget] HRESULT Window ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_XDOMAINREQUEST), propget] HRESULT XDomainRequest ([retval, out] IDispatch **p);
    [id (DISPID_IHTMLDOMCONSTRUCTORCOLLECTION_XMLHTTPREQUEST), propget] HRESULT XMLHttpRequest ([retval, out] IDispatch **p);
  };

  [odl, oleautomation, dual, uuid (3050f216-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLDialog : IDispatch {
    [id (DISPID_IHTMLDIALOG_DIALOGTOP), propput, bindable] HRESULT dialogTop ([in] VARIANT v);
    [id (DISPID_IHTMLDIALOG_DIALOGTOP), propget, bindable] HRESULT dialogTop ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDIALOG_DIALOGLEFT), propput, bindable] HRESULT dialogLeft ([in] VARIANT v);
    [id (DISPID_IHTMLDIALOG_DIALOGLEFT), propget, bindable] HRESULT dialogLeft ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDIALOG_DIALOGWIDTH), propput, bindable] HRESULT dialogWidth ([in] VARIANT v);
    [id (DISPID_IHTMLDIALOG_DIALOGWIDTH), propget, bindable] HRESULT dialogWidth ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDIALOG_DIALOGHEIGHT), propput, bindable] HRESULT dialogHeight ([in] VARIANT v);
    [id (DISPID_IHTMLDIALOG_DIALOGHEIGHT), propget, bindable] HRESULT dialogHeight ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDIALOG_DIALOGARGUMENTS), propget] HRESULT dialogArguments ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDIALOG_MENUARGUMENTS), propget] HRESULT menuArguments ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDIALOG_RETURNVALUE), propput] HRESULT returnValue ([in] VARIANT v);
    [id (DISPID_IHTMLDIALOG_RETURNVALUE), propget] HRESULT returnValue ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLDIALOG_CLOSE)] HRESULT close ();
    [id (DISPID_IHTMLDIALOG_TOSTRING)] HRESULT toString ([retval, out] BSTR *String);
  };

  [odl, oleautomation, dual, uuid (3050f5e0-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLDialog2 : IDispatch {
    [id (DISPID_IHTMLDIALOG2_STATUS), propput, hidden] HRESULT status ([in] BSTR v);
    [id (DISPID_IHTMLDIALOG2_STATUS), propget, hidden] HRESULT status ([retval, out] BSTR *p);
    [id (DISPID_IHTMLDIALOG2_RESIZABLE), propput, hidden] HRESULT resizable ([in] BSTR v);
    [id (DISPID_IHTMLDIALOG2_RESIZABLE), propget, hidden] HRESULT resizable ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (3050f388-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLDialog3 : IDispatch {
    [id (DISPID_IHTMLDIALOG3_UNADORNED), propput, hidden] HRESULT unadorned ([in] BSTR v);
    [id (DISPID_IHTMLDIALOG3_UNADORNED), propget, hidden] HRESULT unadorned ([retval, out] BSTR *p);
    [id (DISPID_IHTMLDIALOG3_DIALOGHIDE), propput] HRESULT dialogHide ([in] BSTR v);
    [id (DISPID_IHTMLDIALOG3_DIALOGHIDE), propget] HRESULT dialogHide ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (3050f5e4-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLModelessInit : IDispatch {
    [id (DISPID_IHTMLMODELESSINIT_PARAMETERS), propget] HRESULT parameters ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLMODELESSINIT_OPTIONSTRING), propget] HRESULT optionString ([retval, out] VARIANT *p);
    [id (DISPID_IHTMLMODELESSINIT_MONIKER), propget] HRESULT moniker ([retval, out] IUnknown **p);
    [id (DISPID_IHTMLMODELESSINIT_DOCUMENT), propget] HRESULT document ([retval, out] IUnknown **p);
  };

  [noncreatable, uuid (3050f5eb-98b5-11cf-bb82-00aa00bdce0b)]
  coclass ThreadDialogProcParam {
    [default] interface IHTMLModelessInit;
  };

  [noncreatable, uuid (3050f28a-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLDialog {
    [default] interface IHTMLDialog;
  };

  [odl, oleautomation, dual, uuid (3050f666-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLPopup : IDispatch {
    [id (DISPID_IHTMLPOPUP_SHOW)] HRESULT show ([in] long x,[in] long y,[in] long w,[in] long h,[in] VARIANT *pElement);
    [id (DISPID_IHTMLPOPUP_HIDE)] HRESULT hide ();
    [id (DISPID_IHTMLPOPUP_DOCUMENT), propget] HRESULT document ([retval, out] IHTMLDocument **p);
    [id (DISPID_IHTMLPOPUP_ISOPEN), propget] HRESULT isOpen ([retval, out] VARIANT_BOOL *p);
  };

  [hidden, uuid (3050f589-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLPopup {
    properties:
    methods:
    [id (DISPID_IHTMLPOPUP_SHOW)] void show ([in] long x,[in] long y,[in] long w,[in] long h,[in] VARIANT *pElement);
    [id (DISPID_IHTMLPOPUP_HIDE)] void hide ();
    [id (DISPID_IHTMLPOPUP_DOCUMENT), propget] IHTMLDocument *document ();
    [id (DISPID_IHTMLPOPUP_ISOPEN), propget] VARIANT_BOOL isOpen ();
    [id (DISPID_IHTMLDOMCONSTRUCTOR_CONSTRUCTOR), propget, hidden] IDispatch *constructor ();
  };

  [uuid (3050f667-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLPopup {
    [default] dispinterface DispHTMLPopup;
    interface IHTMLPopup;
    interface IHTMLDOMConstructor;
  };

  [odl, oleautomation, dual, uuid (3050f5ca-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLAppBehavior : IDispatch {
    [id (DISPID_IHTMLAPPBEHAVIOR_APPLICATIONNAME), propput] HRESULT applicationName ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_APPLICATIONNAME), propget] HRESULT applicationName ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_VERSION), propput] HRESULT version ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_VERSION), propget] HRESULT version ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_ICON), propput] HRESULT icon ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_ICON), propget] HRESULT icon ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_SINGLEINSTANCE), propput] HRESULT singleInstance ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_SINGLEINSTANCE), propget] HRESULT singleInstance ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_MINIMIZEBUTTON), propput] HRESULT minimizeButton ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_MINIMIZEBUTTON), propget] HRESULT minimizeButton ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_MAXIMIZEBUTTON), propput] HRESULT maximizeButton ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_MAXIMIZEBUTTON), propget] HRESULT maximizeButton ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_BORDER), propput] HRESULT border ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_BORDER), propget] HRESULT border ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_BORDERSTYLE), propput] HRESULT borderStyle ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_BORDERSTYLE), propget] HRESULT borderStyle ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_SYSMENU), propput] HRESULT sysMenu ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_SYSMENU), propget] HRESULT sysMenu ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_CAPTION), propput] HRESULT caption ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_CAPTION), propget] HRESULT caption ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_WINDOWSTATE), propput] HRESULT windowState ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_WINDOWSTATE), propget] HRESULT windowState ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_SHOWINTASKBAR), propput] HRESULT showInTaskBar ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_SHOWINTASKBAR), propget] HRESULT showInTaskBar ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR_COMMANDLINE), propget] HRESULT commandLine ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (3050f5c9-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLAppBehavior2 : IDispatch {
    [id (DISPID_IHTMLAPPBEHAVIOR2_CONTEXTMENU), propput] HRESULT contextMenu ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_CONTEXTMENU), propget] HRESULT contextMenu ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR2_INNERBORDER), propput] HRESULT innerBorder ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_INNERBORDER), propget] HRESULT innerBorder ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SCROLL), propput] HRESULT scroll ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SCROLL), propget] HRESULT scroll ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SCROLLFLAT), propput] HRESULT scrollFlat ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SCROLLFLAT), propget] HRESULT scrollFlat ([retval, out] BSTR *p);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SELECTION), propput] HRESULT selection ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SELECTION), propget] HRESULT selection ([retval, out] BSTR *p);
  };

  [odl, oleautomation, dual, uuid (3050f5cd-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHTMLAppBehavior3 : IDispatch {
    [id (DISPID_IHTMLAPPBEHAVIOR3_NAVIGABLE), propput] HRESULT navigable ([in] BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR3_NAVIGABLE), propget] HRESULT navigable ([retval, out] BSTR *p);
  };

  [hidden, uuid (3050f57c-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispHTMLAppBehavior {
    properties:
    methods:
    [id (DISPID_IHTMLAPPBEHAVIOR_APPLICATIONNAME), propput] void applicationName (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_APPLICATIONNAME), propget] BSTR applicationName ();
    [id (DISPID_IHTMLAPPBEHAVIOR_VERSION), propput] void version (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_VERSION), propget] BSTR version ();
    [id (DISPID_IHTMLAPPBEHAVIOR_ICON), propput] void icon (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_ICON), propget] BSTR icon ();
    [id (DISPID_IHTMLAPPBEHAVIOR_SINGLEINSTANCE), propput] void singleInstance (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_SINGLEINSTANCE), propget] BSTR singleInstance ();
    [id (DISPID_IHTMLAPPBEHAVIOR_MINIMIZEBUTTON), propput] void minimizeButton (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_MINIMIZEBUTTON), propget] BSTR minimizeButton ();
    [id (DISPID_IHTMLAPPBEHAVIOR_MAXIMIZEBUTTON), propput] void maximizeButton (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_MAXIMIZEBUTTON), propget] BSTR maximizeButton ();
    [id (DISPID_IHTMLAPPBEHAVIOR_BORDER), propput] void border (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_BORDER), propget] BSTR border ();
    [id (DISPID_IHTMLAPPBEHAVIOR_BORDERSTYLE), propput] void borderStyle (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_BORDERSTYLE), propget] BSTR borderStyle ();
    [id (DISPID_IHTMLAPPBEHAVIOR_SYSMENU), propput] void sysMenu (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_SYSMENU), propget] BSTR sysMenu ();
    [id (DISPID_IHTMLAPPBEHAVIOR_CAPTION), propput] void caption (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_CAPTION), propget] BSTR caption ();
    [id (DISPID_IHTMLAPPBEHAVIOR_WINDOWSTATE), propput] void windowState (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_WINDOWSTATE), propget] BSTR windowState ();
    [id (DISPID_IHTMLAPPBEHAVIOR_SHOWINTASKBAR), propput] void showInTaskBar (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR_SHOWINTASKBAR), propget] BSTR showInTaskBar ();
    [id (DISPID_IHTMLAPPBEHAVIOR_COMMANDLINE), propget] BSTR commandLine ();
    [id (DISPID_IHTMLAPPBEHAVIOR2_CONTEXTMENU), propput] void contextMenu (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_CONTEXTMENU), propget] BSTR contextMenu ();
    [id (DISPID_IHTMLAPPBEHAVIOR2_INNERBORDER), propput] void innerBorder (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_INNERBORDER), propget] BSTR innerBorder ();
    [id (DISPID_IHTMLAPPBEHAVIOR2_SCROLL), propput] void scroll (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SCROLL), propget] BSTR scroll ();
    [id (DISPID_IHTMLAPPBEHAVIOR2_SCROLLFLAT), propput] void scrollFlat (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SCROLLFLAT), propget] BSTR scrollFlat ();
    [id (DISPID_IHTMLAPPBEHAVIOR2_SELECTION), propput] void selection (BSTR v);
    [id (DISPID_IHTMLAPPBEHAVIOR2_SELECTION), propget] BSTR selection ();
  };

  [noncreatable, uuid (3050f5cb-98b5-11cf-bb82-00aa00bdce0b)]
  coclass HTMLAppBehavior {
    [default] dispinterface DispHTMLAppBehavior;
    interface IHTMLAppBehavior;
    interface IHTMLAppBehavior2;
  };

  [uuid (D48A6EC9-6a4a-11cf-94a7-444553540000), noncreatable]
  coclass OldHTMLDocument {
    [default] dispinterface DispHTMLDocument;
    [source, default] dispinterface HTMLDocumentEvents;
    interface IHTMLDocument2;
    interface IHTMLDocument3;
  };
  
  [uuid (0d04d285-6bec-11cf-8b97-00aa00476da6), noncreatable]
  coclass OldHTMLFormElement {
    [default] dispinterface DispHTMLFormElement;
    [source, default] dispinterface HTMLFormElementEvents;
    interface IHTMLFormElement;
    interface IHTMLElement;
    interface IHTMLElement2;
  };

  [hidden, uuid (3050f51e-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispIHTMLInputButtonElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [id (DISPID_IHTMLELEMENT_ONSELECTSTART), propput, displaybind, bindable] void onselectstart (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONSELECTSTART), propget, displaybind, bindable] VARIANT onselectstart ();
    [id (DISPID_IHTMLELEMENT_SCROLLINTOVIEW)] void scrollIntoView ([optional, in] VARIANT varargStart);
    [id (DISPID_IHTMLELEMENT_CONTAINS)] VARIANT_BOOL contains ([in] IHTMLElement *pChild);
    [id (DISPID_IHTMLELEMENT_SOURCEINDEX), propget, bindable] long sourceIndex ();
    [id (DISPID_IHTMLELEMENT_RECORDNUMBER), propget] 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 ();
    [id (DISPID_IHTMLELEMENT_INNERHTML), propput] void innerHTML (BSTR v);
    [id (DISPID_IHTMLELEMENT_INNERHTML), propget] BSTR innerHTML ();
    [id (DISPID_IHTMLELEMENT_INNERTEXT), propput] void innerText (BSTR v);
    [id (DISPID_IHTMLELEMENT_INNERTEXT), propget] BSTR innerText ();
    [id (DISPID_IHTMLELEMENT_OUTERHTML), propput] void outerHTML (BSTR v);
    [id (DISPID_IHTMLELEMENT_OUTERHTML), propget] BSTR outerHTML ();
    [id (DISPID_IHTMLELEMENT_OUTERTEXT), propput] void outerText (BSTR v);
    [id (DISPID_IHTMLELEMENT_OUTERTEXT), propget] 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);
    [id (DISPID_IHTMLELEMENT_PARENTTEXTEDIT), propget] IHTMLElement *parentTextEdit ();
    [id (DISPID_IHTMLELEMENT_ISTEXTEDIT), propget] VARIANT_BOOL isTextEdit ();
    [id (DISPID_IHTMLELEMENT_CLICK)] void click ();
    [id (DISPID_IHTMLELEMENT_FILTERS), propget] IHTMLFiltersCollection *filters ();
    [id (DISPID_IHTMLELEMENT_ONDRAGSTART), propput, displaybind, bindable] void ondragstart (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDRAGSTART), propget, displaybind, bindable] VARIANT ondragstart ();
    [id (DISPID_IHTMLELEMENT_TOSTRING)] BSTR toString ();
    [id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), propput, displaybind, bindable] void onbeforeupdate (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONBEFOREUPDATE), propget, displaybind, bindable] VARIANT onbeforeupdate ();
    [id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), propput, displaybind, bindable] void onafterupdate (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONAFTERUPDATE), propget, displaybind, bindable] VARIANT onafterupdate ();
    [id (DISPID_IHTMLELEMENT_ONERRORUPDATE), propput, displaybind, bindable] void onerrorupdate (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONERRORUPDATE), propget, displaybind, bindable] VARIANT onerrorupdate ();
    [id (DISPID_IHTMLELEMENT_ONROWEXIT), propput, displaybind, bindable] void onrowexit (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONROWEXIT), propget, displaybind, bindable] VARIANT onrowexit ();
    [id (DISPID_IHTMLELEMENT_ONROWENTER), propput, displaybind, bindable] void onrowenter (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONROWENTER), propget, displaybind, bindable] VARIANT onrowenter ();
    [id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), propput, displaybind, bindable] void ondatasetchanged (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDATASETCHANGED), propget, displaybind, bindable] VARIANT ondatasetchanged ();
    [id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), propput, displaybind, bindable] void ondataavailable (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDATAAVAILABLE), propget, displaybind, bindable] VARIANT ondataavailable ();
    [id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), propput, displaybind, bindable] void ondatasetcomplete (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONDATASETCOMPLETE), propget, displaybind, bindable] VARIANT ondatasetcomplete ();
    [id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), propput, displaybind, bindable] void onfilterchange (VARIANT v);
    [id (DISPID_IHTMLELEMENT_ONFILTERCHANGE), propget, displaybind, bindable] VARIANT onfilterchange ();
    [id (DISPID_IHTMLELEMENT_CHILDREN), propget] IDispatch *children ();
    [id (DISPID_IHTMLELEMENT_ALL), propget] IDispatch *all ();
    [id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), propput, displaybind, bindable] void tabIndex (short v);
    [id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), propget, displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLCONTROLELEMENT_FOCUS)] void focus ();
    [id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), propput, displaybind, bindable] void accessKey (BSTR v);
    [id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), propget, displaybind, bindable] BSTR accessKey ();
    [id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), propput, displaybind, bindable] void onblur (VARIANT v);
    [id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), propget, displaybind, bindable] VARIANT onblur ();
    [id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), propput, displaybind, bindable] void onfocus (VARIANT v);
    [id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), propget, displaybind, bindable] VARIANT onfocus ();
    [id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), propput, displaybind, bindable] void onresize (VARIANT v);
    [id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), propget, displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLCONTROLELEMENT_BLUR)] void blur ();
    [id (DISPID_IHTMLCONTROLELEMENT_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLCONTROLELEMENT_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLCONTROLELEMENT_CLIENTHEIGHT), propget, displaybind, bindable] long clientHeight ();
    [id (DISPID_IHTMLCONTROLELEMENT_CLIENTWIDTH), propget, displaybind, bindable] long clientWidth ();
    [id (DISPID_IHTMLCONTROLELEMENT_CLIENTTOP), propget, displaybind, bindable] long clientTop ();
    [id (DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT), propget, displaybind, bindable] long clientLeft ();
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_TYPE), propget] BSTR type ();
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_VALUE), propput, displaybind, bindable] void value (BSTR v);
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_VALUE), propget, displaybind, bindable] BSTR value ();
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_NAME), propput, displaybind, bindable] void name (BSTR v);
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_NAME), propget, displaybind, bindable] BSTR name ();
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_STATUS), propput] void status (VARIANT v);
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_STATUS), propget] VARIANT status ();
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_DISABLED), propput, displaybind, bindable] void disabled (VARIANT_BOOL v);
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_DISABLED), propget, displaybind, bindable] VARIANT_BOOL disabled ();
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_FORM), propget] IHTMLFormElement *form ();
    [id (DISPID_IHTMLINPUTBUTTONELEMENT_CREATETEXTRANGE)] IHTMLTxtRange *createTextRange ();
  };

  [uuid (3050f2b4-98b5-11cf-bb82-00aa00bdce0b), noncreatable]
  coclass HTMLInputButtonElement {
    [default] dispinterface DispIHTMLInputButtonElement;
    [source, default] dispinterface HTMLButtonElementEvents;
    interface IHTMLInputButtonElement;
    interface IHTMLControlElement;
    interface IHTMLElement;
  };
  
  [hidden, uuid (3050f520-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispIHTMLInputTextElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLCONTROLELEMENT_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLCONTROLELEMENT_BLUR)] void blur ();
    [id (DISPID_IHTMLCONTROLELEMENT_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLCONTROLELEMENT_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_TYPE)] BSTR type ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_VALUE), displaybind, bindable] void value (BSTR v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_VALUE), displaybind, bindable] BSTR value ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_STATUS)] void status (VARIANT v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_STATUS)] VARIANT status ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_FORM)] IHTMLFormElement *form ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] void defaultValue (BSTR v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_DEFAULTVALUE), displaybind, bindable, hidden] BSTR defaultValue ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_SIZE), displaybind, bindable] void size (long v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_SIZE), displaybind, bindable] long size ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_MAXLENGTH), displaybind, bindable] void maxLength (long v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_MAXLENGTH), displaybind, bindable] long maxLength ();
    [id (DISPID_IHTMLINPUTTEXTELEMENT_SELECT)] void select ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLINPUTTEXTELEMENT_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLINPUTTEXTELEMENT_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [id (DISPID_IHTMLINPUTTEXTELEMENT_READONLY), propput, displaybind, bindable] void readOnly (VARIANT_BOOL v);
    [id (DISPID_IHTMLINPUTTEXTELEMENT_READONLY), propget, displaybind, bindable] VARIANT_BOOL readOnly ();
    [id (DISPID_IHTMLINPUTTEXTELEMENT_CREATETEXTRANGE)] IHTMLTxtRange *createTextRange ();
    [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 ();
  };
  
  [uuid (3050f2ab-98b5-11cf-bb82-00aa00bdce0b), noncreatable]
  coclass HTMLInputTextElement {
    [default] dispinterface DispIHTMLInputTextElement;
    [source, default] dispinterface HTMLInputTextElementEvents;
    interface IHTMLInputTextElement;
    interface IHTMLControlElement;
    interface IHTMLElement;
    interface IHTMLDatabinding;
  };
  
  [hidden, uuid (3050f542-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispIHTMLInputFileElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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);
    [id (DISPID_IHTMLELEMENT_CLASSNAME), propput, bindable] void className (BSTR v);
    [id (DISPID_IHTMLELEMENT_CLASSNAME), propget, bindable] BSTR className ();
    [id (DISPID_IHTMLELEMENT_ID), propput, bindable] void id (BSTR v);
    [id (DISPID_IHTMLELEMENT_ID), propget, 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 ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLCONTROLELEMENT_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLCONTROLELEMENT_BLUR)] void blur ();
    [id (DISPID_IHTMLCONTROLELEMENT_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLCONTROLELEMENT_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_TYPE)] BSTR type ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_NAME), displaybind, bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_NAME), displaybind, bindable] BSTR name ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_STATUS)] void status (VARIANT v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_STATUS)] VARIANT status ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_FORM)] IHTMLFormElement *form ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_SIZE), displaybind, bindable] void size (long v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_SIZE), displaybind, bindable] long size ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_MAXLENGTH), displaybind, bindable] void maxLength (long v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_MAXLENGTH), displaybind, bindable] long maxLength ();
    [id (DISPID_IHTMLINPUTFILEELEMENT_SELECT)] void select ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_ONCHANGE), displaybind, bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_ONCHANGE), displaybind, bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_ONSELECT), displaybind, bindable] void onselect (VARIANT v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_ONSELECT), displaybind, bindable] VARIANT onselect ();
    [propput, id (DISPID_IHTMLINPUTFILEELEMENT_VALUE), displaybind, bindable] void value (BSTR v);
    [propget, id (DISPID_IHTMLINPUTFILEELEMENT_VALUE), displaybind, bindable] BSTR value ();
  };

  [uuid (3050f2ae-98b5-11cf-bb82-00aa00bdce0b), noncreatable]
  coclass HTMLInputFileElement {
    [default] dispinterface DispIHTMLInputFileElement;
    [source, default] dispinterface HTMLInputFileElementEvents;
    interface IHTMLInputFileElement;
    interface IHTMLControlElement;
    interface IHTMLElement;
  };

  [hidden, uuid (3050f509-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispIHTMLOptionButtonElement {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLCONTROLELEMENT_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLCONTROLELEMENT_BLUR)] void blur ();
    [id (DISPID_IHTMLCONTROLELEMENT_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLCONTROLELEMENT_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_VALUE), bindable] void value (BSTR v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_VALUE), bindable] BSTR value ();
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_TYPE)] BSTR type ();
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_NAME), bindable] void name (BSTR v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_NAME), bindable] BSTR name ();
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_CHECKED), bindable] void checked (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_CHECKED), bindable] VARIANT_BOOL checked ();
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_DEFAULTCHECKED), bindable] void defaultChecked (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_DEFAULTCHECKED), bindable] VARIANT_BOOL defaultChecked ();
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_ONCHANGE), bindable] void onchange (VARIANT v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_ONCHANGE), bindable] VARIANT onchange ();
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_STATUS)] void status (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_STATUS)] VARIANT_BOOL status ();
    [propput, id (DISPID_IHTMLOPTIONBUTTONELEMENT_INDETERMINATE), bindable] void indeterminate (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_INDETERMINATE), bindable] VARIANT_BOOL indeterminate ();
    [propget, id (DISPID_IHTMLOPTIONBUTTONELEMENT_FORM)] IHTMLFormElement *form ();
    [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 ();
  };

  [uuid (3050f2be-98b5-11cf-bb82-00aa00bdce0b), noncreatable]
  coclass HTMLOptionButtonElement {
    [default] dispinterface DispIHTMLOptionButtonElement;
    [source, default] dispinterface HTMLOptionButtonElementEvents;
    interface IHTMLOptionButtonElement;
    interface IHTMLControlElement;
    interface IHTMLElement;
    interface IHTMLDatabinding;
  };

  [hidden, uuid (3050f51d-98b5-11cf-bb82-00aa00bdce0b)]
  dispinterface DispIHTMLInputImage {
    properties:
    methods:
    [id (DISPID_IHTMLELEMENT_SETATTRIBUTE)] void setAttribute ([in] BSTR strAttributeName,[in] VARIANT AttributeValue,[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 ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] void tabIndex (short v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_TABINDEX), displaybind, bindable] short tabIndex ();
    [id (DISPID_IHTMLCONTROLELEMENT_FOCUS)] void focus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] void accessKey (BSTR v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ACCESSKEY), displaybind, bindable] BSTR accessKey ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] void onblur (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONBLUR), displaybind, bindable] VARIANT onblur ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] void onfocus (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONFOCUS), displaybind, bindable] VARIANT onfocus ();
    [propput, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] void onresize (VARIANT v);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_ONRESIZE), displaybind, bindable] VARIANT onresize ();
    [id (DISPID_IHTMLCONTROLELEMENT_BLUR)] void blur ();
    [id (DISPID_IHTMLCONTROLELEMENT_ADDFILTER)] void addFilter ([in] IUnknown *pUnk);
    [id (DISPID_IHTMLCONTROLELEMENT_REMOVEFILTER)] void removeFilter ([in] IUnknown *pUnk);
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTHEIGHT), displaybind, bindable] long clientHeight ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTWIDTH), displaybind, bindable] long clientWidth ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTTOP), displaybind, bindable] long clientTop ();
    [propget, id (DISPID_IHTMLCONTROLELEMENT_CLIENTLEFT), displaybind, bindable] long clientLeft ();
    [propget, id (DISPID_IHTMLINPUTIMAGE_TYPE)] BSTR type ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_DISABLED), displaybind, bindable] void disabled (VARIANT_BOOL v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_DISABLED), displaybind, bindable] VARIANT_BOOL disabled ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_BORDER), displaybind, bindable] void border (VARIANT v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_BORDER), displaybind, bindable] VARIANT border ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_VSPACE), displaybind, bindable] void vspace (long v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_VSPACE), displaybind, bindable] long vspace ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_HSPACE), displaybind, bindable] void hspace (long v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_HSPACE), displaybind, bindable] long hspace ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_ALT), displaybind, bindable] void alt (BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_ALT), displaybind, bindable] BSTR alt ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_SRC), displaybind, bindable] void src (BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_SRC), displaybind, bindable] BSTR src ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_LOWSRC), displaybind, bindable] void lowsrc (BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_LOWSRC), displaybind, bindable] BSTR lowsrc ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_VRML), displaybind, bindable] void vrml (BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_VRML), displaybind, bindable] BSTR vrml ();
    [propput, id (DISPID_IHTMLINPUTIMAGE_DYNSRC), displaybind, bindable] void dynsrc (BSTR v);
    [propget, id (DISPID_IHTMLINPUTIMAGE_DYNSRC), displaybind, bindable] BSTR dynsrc ();
    [propget, id (DISPID_IHTMLINPUTIMAGE_READYSTATE)] BSTR readyState ();
    [propget, id (DISPID_IHTMLINPUTIMAGE_COMPLETE)] VARIANT_BOOL complete ();
    [id (DISPID_IHTMLINPUTIMAGE_LOOP), propput, displaybind, bindable] void loop (VARIANT v);
    [id (DISPID_IHTMLINPUTIMAGE_LOOP), propget, displaybind, bindable] VARIANT loop ();
    [id (DISPID_IHTMLINPUTIMAGE_ALIGN), propput, displaybind, bindable] void align (BSTR v);
    [id (DISPID_IHTMLINPUTIMAGE_ALIGN), propget, displaybind, bindable] BSTR align ();
    [id (DISPID_IHTMLINPUTIMAGE_ONLOAD), propput, displaybind, bindable] void onload (VARIANT v);
    [id (DISPID_IHTMLINPUTIMAGE_ONLOAD), propget, displaybind, bindable] VARIANT onload ();
    [id (DISPID_IHTMLINPUTIMAGE_ONERROR), propput, displaybind, bindable] void onerror (VARIANT v);
    [id (DISPID_IHTMLINPUTIMAGE_ONERROR), propget, displaybind, bindable] VARIANT onerror ();
    [id (DISPID_IHTMLINPUTIMAGE_ONABORT), propput, displaybind, bindable] void onabort (VARIANT v);
    [id (DISPID_IHTMLINPUTIMAGE_ONABORT), propget, displaybind, bindable] VARIANT onabort ();
    [id (DISPID_IHTMLINPUTIMAGE_NAME), propput, displaybind, bindable] void name (BSTR v);
    [id (DISPID_IHTMLINPUTIMAGE_NAME), propget, displaybind, bindable] BSTR name ();
    [id (DISPID_IHTMLINPUTIMAGE_WIDTH), propput] void width (long v);
    [id (DISPID_IHTMLINPUTIMAGE_WIDTH), propget] long width ();
    [id (DISPID_IHTMLINPUTIMAGE_HEIGHT), propput] void height (long v);
    [id (DISPID_IHTMLINPUTIMAGE_HEIGHT), propget] long height ();
    [id (DISPID_IHTMLINPUTIMAGE_START), propput, displaybind, bindable] void start (BSTR v);
    [id (DISPID_IHTMLINPUTIMAGE_START), propget, displaybind, bindable] BSTR start ();
  };

  [uuid (3050f2c4-98b5-11cf-bb82-00aa00bdce0b), noncreatable]
  coclass HTMLInputImage {
    [default] dispinterface DispIHTMLInputImage;
    [source, default] dispinterface HTMLInputImageEvents;
    interface IHTMLInputImage;
    interface IHTMLControlElement;
    interface IHTMLElement;
  };

  [object, pointer_default (unique), uuid (3050f429-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorFactory : IUnknown {
    HRESULT FindBehavior ([in] BSTR bstrBehavior,[in] BSTR bstrBehaviorUrl,[in] IElementBehaviorSite *pSite,[retval, out] IElementBehavior **ppBehavior);
  };

  [object, pointer_default (unique), uuid (3050f671-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementNamespace : IUnknown {
    HRESULT AddTag ([in] BSTR bstrTagName,[in] LONG lFlags);
  };

  [object, pointer_default (unique), uuid (3050f670-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementNamespaceTable : IUnknown {
    HRESULT AddNamespace ([in] BSTR bstrNamespace,[in] BSTR bstrUrn,[in] LONG lFlags,[in] VARIANT *pvarFactory);
  };

  [object, pointer_default (unique), uuid (3050f672-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementNamespaceFactory : IUnknown {
    HRESULT Create ([in] IElementNamespace *pNamespace);
  };

  [object, pointer_default (unique), uuid (3050f805-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementNamespaceFactory2 : IElementNamespaceFactory {
    HRESULT CreateWithImplementation ([in] IElementNamespace *pNamespace,[in] BSTR bstrImplementation);
  };

  [object, pointer_default (unique), uuid (3050f7fd-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementNamespaceFactoryCallback : IUnknown {
    HRESULT Resolve ([in] BSTR bstrNamespace,[in] BSTR bstrTagName,[in] BSTR bstrAttrs,[in] IElementNamespace *pNamespace);
  };

  [object, pointer_default (unique), 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 ();
  };

  [object, pointer_default (unique), uuid (3050f427-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorSite : IUnknown {
    HRESULT GetElement ([retval, out] IHTMLElement **ppElement);
    HRESULT RegisterNotification ([in] LONG lEvent);
  };

  [object, pointer_default (unique), uuid (3050f489-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorSiteOM : IUnknown {
    HRESULT RegisterEvent ([in] LPOLESTR pchEvent,[in] LONG lFlags,[retval, out] LONG *plCookie);
    HRESULT GetEventCookie ([in] LPOLESTR pchEvent,[retval, out] LONG *plCookie);
    HRESULT FireEvent ([in] LONG lCookie,[in] IHTMLEventObj *pEventObject);
    HRESULT CreateEventObject ([retval, out] IHTMLEventObj **ppEventObject);
    HRESULT RegisterName ([in] LPOLESTR pchName);
    HRESULT RegisterUrn ([in] LPOLESTR pchUrn);
  };

  [object, pointer_default (unique), uuid (3050f659-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorSiteOM2 : IElementBehaviorSiteOM {
    HRESULT GetDefaults ([retval, out] IHTMLElementDefaults **ppDefaults);
  };

  [object, pointer_default (unique), uuid (3050f4aa-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorRender : IUnknown {
    HRESULT Draw ([in] HDC hdc,[in] LONG lLayer,[in] RECT *pRect,[in] IUnknown *pReserved);
    HRESULT GetRenderInfo ([retval, out] LONG *plRenderInfo);
    HRESULT HitTestPoint ([in] POINT *pPoint,[in] IUnknown *pReserved,[retval, out] BOOL *pbHit);
  };

  [object, pointer_default (unique), uuid (3050f4a7-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorSiteRender : IUnknown {
    HRESULT Invalidate ([in] RECT *pRect);
    HRESULT InvalidateRenderInfo ();
    HRESULT InvalidateStyle ();
  };

  [object, pointer_default (unique), uuid (3050f4ed-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorCategory : IUnknown {
    HRESULT GetCategory ([retval, out] LPOLESTR *ppchCategory);
  };

  [object, pointer_default (unique), uuid (3050f4ee-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorSiteCategory : IUnknown {
    HRESULT GetRelatedBehaviors ([in] LONG lDirection,[in] LPOLESTR pchCategory,[retval, out] IEnumUnknown **ppEnumerator);
  };

  [object, pointer_default (unique), uuid (3050f646-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorSubmit : IUnknown {
    HRESULT GetSubmitInfo ([in] IHTMLSubmitData *pSubmitData);
    HRESULT Reset ();
  };

  [object, pointer_default (unique), uuid (3050f6b6-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorFocus : IUnknown {
    HRESULT GetFocusRect ([in] RECT *pRect);
  };

  [object, pointer_default (unique), uuid (3050f6ba-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorLayout : IUnknown {
    HRESULT GetSize ([in] LONG dwFlags,[in] SIZE sizeContent,[in, out] POINT *pptTranslateBy,[in, out] POINT *pptTopLeft,[in, out] SIZE *psizeProposed);
    HRESULT GetLayoutInfo ([retval, out] LONG *plLayoutInfo);
    HRESULT GetPosition ([in] LONG lFlags,[in, out] POINT *pptTopLeft);
    HRESULT MapSize ([in] SIZE *psizeIn,[out] RECT *prcOut);
  };

  [object, pointer_default (unique), uuid (3050f846-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorLayout2 : IUnknown {
    HRESULT GetTextDescent ([out] LONG *plDescent);
  };

  [object, pointer_default (unique), uuid (3050f6b7-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorSiteLayout : IUnknown {
    HRESULT InvalidateLayoutInfo ();
    HRESULT InvalidateSize ();
    HRESULT GetMediaResolution ([retval, out] SIZE *psizeResolution);
  };

  [object, pointer_default (unique), uuid (3050f847-98b5-11cf-bb82-00aa00bdce0b)]
  interface IElementBehaviorSiteLayout2 : IUnknown {
    HRESULT GetFontInfo ([out] LOGFONTW *plf);
  };

  [object, pointer_default (unique), uuid (3050f842-98b5-11cf-bb82-00aa00bdce0b)]
  interface IHostBehaviorInit : IUnknown {
    HRESULT PopulateNamespaceTable ();
  };

  [object, pointer_default (unique), uuid (305106e1-98b5-11cf-bb82-00aa00bdce0b)]
  interface IViewObjectPresentSite : IUnknown {
    HRESULT CreateSurfacePresenter ([in] IUnknown *pDevice,[in] UINT width,[in] UINT height,[in] UINT backBufferCount,[in] DXGI_FORMAT format,[in] VIEW_OBJECT_ALPHA_MODE mode,[retval, out] ISurfacePresenter **ppQueue);
    HRESULT IsHardwareComposition ([retval, out] BOOL *pIsHardwareComposition);
    HRESULT SetCompositionMode ([in] VIEW_OBJECT_COMPOSITION_MODE mode);
  };

  [object, pointer_default (unique), uuid (305106e2-98b5-11cf-bb82-00aa00bdce0b)]
  interface ISurfacePresenter : IUnknown {
    HRESULT Present ([in] UINT uBuffer,[in] RECT *pDirty);
    HRESULT GetBuffer ([in] UINT backBufferIndex,[in] REFIID riid,[retval, out, iid_is (riid)] void **ppBuffer);
    HRESULT IsCurrent ([retval, out] BOOL *pIsCurrent);
  };

  [object, pointer_default (unique), uuid (305107f9-98b5-11cf-bb82-00aa00bdce0b)]
  interface ICanvasPixelArrayData : IUnknown {
    HRESULT GetBufferPointer ([out] BYTE **ppBuffer,[out] ULONG *pBufferLength);
  };

  [object, pointer_default (unique), uuid (305106e3-98b5-11cf-bb82-00aa00bdce0b)]
  interface IViewObjectPrint : IUnknown {
    HRESULT GetPrintBitmap ([retval, out] IUnknown **ppPrintBitmap);
  };

  [object, pointer_default (unique), uuid (305107fa-98b5-11cf-bb82-00aa00bdce0b)]
  interface IViewObjectPresentNotifySite : IViewObjectPresentSite {
    HRESULT RequestFrame ();
  };

  [object, pointer_default (unique), uuid (305107f8-98b5-11cf-bb82-00aa00bdce0b)]
  interface IViewObjectPresentNotify : IUnknown {
    HRESULT OnPreRender ();
  };

  [object, pointer_default (unique), uuid (30510803-98b5-11cf-bb82-00aa00bdce0b)]
  interface ITrackingProtection : IUnknown {
    HRESULT EvaluateUrl ([in] BSTR bstrUrl,[out] BOOL *pfAllowed);
    HRESULT GetEnabled ([out] BOOL *pfEnabled);
  };
}

cpp_quote("#endif")
