/*
 * Copyright (c) 2009, Google Inc. All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 * 
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above
 *       copyright notice, this list of conditions and the following disclaimer
 *       in the documentation and/or other materials provided with the
 *       distribution.
 *     * Neither the name of Google Inc. nor the names of its
 *       contributors may be used to endorse or promote products derived from
 *       this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

// This source file coalesces the HTML elements into a single object file to
// reduce bloat and allow us to link release builds on 32-bit Windows.

#include "HTMLAnchorElement.cpp"
#include "HTMLAppletElement.cpp"
#include "HTMLAreaElement.cpp"
#include "HTMLAudioElement.cpp"
#include "HTMLBRElement.cpp"
#include "HTMLBaseElement.cpp"
#include "HTMLBaseFontElement.cpp"
#include "HTMLBlockquoteElement.cpp"
#include "HTMLBodyElement.cpp"
#include "HTMLButtonElement.cpp"
#include "HTMLCanvasElement.cpp"
#include "HTMLDataGridElement.cpp"
#include "HTMLDataGridCellElement.cpp"
#include "HTMLDataGridColElement.cpp"
#include "HTMLDataGridRowElement.cpp"
#include "HTMLDListElement.cpp"
#include "HTMLDirectoryElement.cpp"
#include "HTMLDivElement.cpp"
#include "HTMLElement.cpp"
#include "HTMLEmbedElement.cpp"
#include "HTMLFieldSetElement.cpp"
#include "HTMLFontElement.cpp"
#include "HTMLFormControlElement.cpp"
#include "HTMLFormElement.cpp"
#include "HTMLFrameElement.cpp"
#include "HTMLFrameElementBase.cpp"
#include "HTMLFrameOwnerElement.cpp"
#include "HTMLFrameSetElement.cpp"
#include "HTMLHRElement.cpp"
#include "HTMLHeadElement.cpp"
#include "HTMLHeadingElement.cpp"
#include "HTMLHtmlElement.cpp"
#include "HTMLIFrameElement.cpp"
#include "HTMLImageElement.cpp"
#include "HTMLInputElement.cpp"
#include "HTMLIsIndexElement.cpp"
#include "HTMLKeygenElement.cpp"
#include "HTMLLIElement.cpp"
#include "HTMLLabelElement.cpp"
#include "HTMLLegendElement.cpp"
#include "HTMLLinkElement.cpp"
#include "HTMLMapElement.cpp"
#include "HTMLMarqueeElement.cpp"
#include "HTMLMediaElement.cpp"
#include "HTMLMenuElement.cpp"
#include "HTMLMetaElement.cpp"
#include "HTMLModElement.cpp"
#include "HTMLOListElement.cpp"
#include "HTMLObjectElement.cpp"
#include "HTMLOptGroupElement.cpp"
#include "HTMLOptionElement.cpp"
#include "HTMLParagraphElement.cpp"
#include "HTMLParamElement.cpp"
#include "HTMLPlugInElement.cpp"
#include "HTMLPlugInImageElement.cpp"
#include "HTMLPreElement.cpp"
#include "HTMLQuoteElement.cpp"
#include "HTMLScriptElement.cpp"
#include "HTMLSelectElement.cpp"
#include "HTMLSourceElement.cpp"
#include "HTMLStyleElement.cpp"
#include "HTMLTableCaptionElement.cpp"
#include "HTMLTableCellElement.cpp"
#include "HTMLTableColElement.cpp"
#include "HTMLTableElement.cpp"
#include "HTMLTablePartElement.cpp"
#include "HTMLTableRowElement.cpp"
#include "HTMLTableSectionElement.cpp"
#include "HTMLTextAreaElement.cpp"
#include "HTMLTitleElement.cpp"
#include "HTMLUListElement.cpp"
#include "HTMLVideoElement.cpp"
