<!--
 * Copyright (C) 2013, 2014 Apple 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:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. 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.
 *
 * 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
 * HOLDER 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.
-->
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <!--
    These resources should match the order and groups used in Main.html.
    -->
    <script src="External/CodeMirror/codemirror.js"></script>
    <script src="External/CodeMirror/css.js"></script>
    <script src="External/CodeMirror/htmlmixed.js"></script>
    <script src="External/CodeMirror/javascript.js"></script>
    <script src="External/Esprima/esprima.js"></script>

    <script src="Base/WebInspector.js"></script>
    <script src="Base/Platform.js"></script>
    <script src="Base/Debouncer.js"></script>
    <script src="Base/DebuggableType.js"></script>
    <script src="Base/LinkedList.js"></script>
    <script src="Base/ListMultimap.js"></script>
    <script src="Base/Multimap.js"></script>
    <script src="Base/Object.js"></script>
    <script src="Base/TargetType.js"></script>
    <script src="Base/Throttler.js"></script>

    <script src="Test/TestHarness.js"></script>
    <script src="Test/FrontendTestHarness.js"></script>
    <script src="Test/TestSuite.js"></script>

    <script src="Test/Test.js"></script>
    <script src="Controllers/AppControllerBase.js"></script>
    <script src="Test/TestAppController.js"></script>
    <script src="Test/TestUtilities.js"></script>

    <script src="Base/BlobUtilities.js"></script>
    <script src="Base/DOMUtilities.js"></script>
    <script src="Base/EventListener.js"></script>
    <script src="Base/EventListenerSet.js"></script>
    <script src="Base/FileUtilities.js"></script>
    <script src="Base/ImageUtilities.js"></script>
    <script src="Base/MIMETypeUtilities.js"></script>
    <script src="Base/ObjectStore.js"></script>
    <script src="Base/URLUtilities.js"></script>
    <script src="Base/Utilities.js"></script>
    <script src="Base/Setting.js"></script>
    <script src="Base/YieldableTask.js"></script>

    <script src="Protocol/ProtocolTracer.js"></script>
    <script src="Protocol/LoggingProtocolTracer.js"></script>
    <script src="Protocol/InspectorBackend.js"></script>

    <script src="Protocol/Connection.js"></script>
    <script src="Protocol/InspectorFrontendAPI.js"></script>
    <script src="Protocol/LoadInspectorBackendCommands.js"></script>
    <script src="Protocol/MessageDispatcher.js"></script>
    <script src="Protocol/Target.js"></script>

    <script src="Protocol/DirectBackendTarget.js"></script>
    <script src="Protocol/MultiplexingBackendTarget.js"></script>
    <script src="Protocol/PageTarget.js"></script>
    <script src="Protocol/WorkerTarget.js"></script>

    <script src="Protocol/InspectorObserver.js"></script>
    <script src="Protocol/ApplicationCacheObserver.js"></script>
    <script src="Protocol/CPUProfilerObserver.js"></script>
    <script src="Protocol/CSSObserver.js"></script>
    <script src="Protocol/CanvasObserver.js"></script>
    <script src="Protocol/ConsoleObserver.js"></script>
    <script src="Protocol/DOMObserver.js"></script>
    <script src="Protocol/DOMStorageObserver.js"></script>
    <script src="Protocol/DatabaseObserver.js"></script>
    <script src="Protocol/DebuggerObserver.js"></script>
    <script src="Protocol/HeapObserver.js"></script>
    <script src="Protocol/InspectorObserver.js"></script>
    <script src="Protocol/LayerTreeObserver.js"></script>
    <script src="Protocol/MemoryObserver.js"></script>
    <script src="Protocol/NetworkObserver.js"></script>
    <script src="Protocol/PageObserver.js"></script>
    <script src="Protocol/RemoteObject.js"></script>
    <script src="Protocol/RuntimeObserver.js"></script>
    <script src="Protocol/ScriptProfilerObserver.js"></script>
    <script src="Protocol/TargetObserver.js"></script>
    <script src="Protocol/TimelineObserver.js"></script>
    <script src="Protocol/WorkerObserver.js"></script>

    <script src="Models/BreakpointAction.js"></script>
    <script src="Models/ConsoleMessage.js"></script>
    <script src="Models/Instrument.js"></script>
    <script src="Models/SourceCode.js"></script>
    <script src="Models/SourceCodeLocation.js"></script>
    <script src="Models/SourceCodePosition.js"></script>
    <script src="Models/Timeline.js"></script>
    <script src="Models/TimelineRange.js"></script>
    <script src="Models/TimelineRecord.js"></script>

    <script src="Models/Resource.js"></script>
    <script src="Models/Script.js"></script>
    <script src="Models/LocalScript.js"></script>

    <script src="Models/Breakpoint.js"></script>
    <script src="Models/CPUInstrument.js"></script>
    <script src="Models/CPUTimeline.js"></script>
    <script src="Models/CPUTimelineRecord.js"></script>
    <script src="Models/CSSCompletions.js"></script>
    <script src="Models/CSSGrouping.js"></script>
    <script src="Models/CSSKeywordCompletions.js"></script>
    <script src="Models/CSSProperty.js"></script>
    <script src="Models/CSSRule.js"></script>
    <script src="Models/CSSSelector.js"></script>
    <script src="Models/CSSStyleDeclaration.js"></script>
    <script src="Models/CSSStyleSheet.js"></script>
    <script src="Models/CallFrame.js"></script>
    <script src="Models/CallingContextTree.js"></script>
    <script src="Models/CallingContextTreeNode.js"></script>
    <script src="Models/Canvas.js"></script>
    <script src="Models/Collection.js"></script>
    <script src="Models/CollectionEntry.js"></script>
    <script src="Models/CollectionEntryPreview.js"></script>
    <script src="Models/CollectionTypes.js"></script>
    <script src="Models/Color.js"></script>
    <script src="Models/ConsoleCommandResultMessage.js"></script>
    <script src="Models/Cookie.js"></script>
    <script src="Models/CookieStorageObject.js"></script>
    <script src="Models/DOMBreakpoint.js"></script>
    <script src="Models/DOMNode.js"></script>
    <script src="Models/DOMNodeStyles.js"></script>
    <script src="Models/DOMStorageObject.js"></script>
    <script src="Models/DOMTree.js"></script>
    <script src="Models/DebuggerData.js"></script>
    <script src="Models/EventBreakpoint.js"></script>
    <script src="Models/ExecutionContext.js"></script>
    <script src="Models/ExecutionContextList.js"></script>
    <script src="Models/FPSInstrument.js"></script>
    <script src="Models/Frame.js"></script>
    <script src="Models/GarbageCollection.js"></script>
    <script src="Models/Geometry.js"></script>
    <script src="Models/Gradient.js"></script>
    <script src="Models/HeapAllocationsInstrument.js"></script>
    <script src="Models/HeapAllocationsTimelineRecord.js"></script>
    <script src="Models/IndexedDatabase.js"></script>
    <script src="Models/IndexedDatabaseObjectStore.js"></script>
    <script src="Models/IndexedDatabaseObjectStoreIndex.js"></script>
    <script src="Models/IssueMessage.js"></script>
    <script src="Models/Layer.js"></script>
    <script src="Models/LayoutInstrument.js"></script>
    <script src="Models/LayoutTimelineRecord.js"></script>
    <script src="Models/LazySourceCodeLocation.js"></script>
    <script src="Models/LocalResourceOverride.js"></script>
    <script src="Models/LoggingChannel.js"></script>
    <script src="Models/MediaInstrument.js"></script>
    <script src="Models/MediaTimelineRecord.js"></script>
    <script src="Models/MemoryCategory.js"></script>
    <script src="Models/MemoryInstrument.js"></script>
    <script src="Models/MemoryPressureEvent.js"></script>
    <script src="Models/MemoryTimeline.js"></script>
    <script src="Models/MemoryTimelineRecord.js"></script>
    <script src="Models/NetworkInstrument.js"></script>
    <script src="Models/NetworkTimeline.js"></script>
    <script src="Models/ObjectPreview.js"></script>
    <script src="Models/Probe.js"></script>
    <script src="Models/ProbeSet.js"></script>
    <script src="Models/ProbeSetDataFrame.js"></script>
    <script src="Models/ProbeSetDataTable.js"></script>
    <script src="Models/Profile.js"></script>
    <script src="Models/ProfileNode.js"></script>
    <script src="Models/ProfileNodeCall.js"></script>
    <script src="Models/PropertyDescriptor.js"></script>
    <script src="Models/PropertyPreview.js"></script>
    <script src="Models/Recording.js"></script>
    <script src="Models/RecordingAction.js"></script>
    <script src="Models/RecordingFrame.js"></script>
    <script src="Models/RecordingInitialStateAction.js"></script>
    <script src="Models/RecordingState.js"></script>
    <script src="Models/Redirect.js"></script>
    <script src="Models/RenderingFrameTimelineRecord.js"></script>
    <script src="Models/ResourceCollection.js"></script>
    <script src="Models/ResourceQueryMatch.js"></script>
    <script src="Models/ResourceQueryResult.js"></script>
    <script src="Models/ResourceTimelineRecord.js"></script>
    <script src="Models/ResourceTimingData.js"></script>
    <script src="Models/Revision.js"></script>
    <script src="Models/ScopeChainNode.js"></script>
    <script src="Models/ScriptInstrument.js"></script>
    <script src="Models/ScriptSyntaxTree.js"></script>
    <script src="Models/ScriptTimelineRecord.js"></script>
    <script src="Models/ServerTimingEntry.js"></script>
    <script src="Models/ShaderProgram.js"></script>
    <script src="Models/SourceCodeRevision.js"></script>
    <script src="Models/SourceCodeTimeline.js"></script>
    <script src="Models/SourceMap.js"></script>
    <script src="Models/StackTrace.js"></script>
    <script src="Models/TextRange.js"></script>
    <script src="Models/TimelineMarker.js"></script>
    <script src="Models/TimelineRecording.js"></script>
    <script src="Models/URLBreakpoint.js"></script>
    <script src="Models/WebSocketResource.js"></script>
    <script src="Models/WrappedPromise.js"></script>

    <script src="Models/LocalResource.js"></script>
    <script src="Models/SourceMapResource.js"></script>

    <script src="Models/AuditTestBase.js"></script>
    <script src="Models/AuditTestCase.js"></script>
    <script src="Models/AuditTestGroup.js"></script>
    <script src="Models/AuditTestResultBase.js"></script>
    <script src="Models/AuditTestCaseResult.js"></script>
    <script src="Models/AuditTestGroupResult.js"></script>

    <script src="Proxies/FormatterWorkerProxy.js"></script>
    <script src="Proxies/HeapSnapshotDiffProxy.js"></script>
    <script src="Proxies/HeapSnapshotEdgeProxy.js"></script>
    <script src="Proxies/HeapSnapshotNodeProxy.js"></script>
    <script src="Proxies/HeapSnapshotProxy.js"></script>
    <script src="Proxies/HeapSnapshotWorkerProxy.js"></script>

    <script src="Controllers/AuditManager.js"></script>
    <script src="Controllers/ApplicationCacheManager.js"></script>
    <script src="Controllers/BreakpointLogMessageLexer.js"></script>
    <script src="Controllers/CSSManager.js"></script>
    <script src="Controllers/CanvasManager.js"></script>
    <script src="Controllers/ConsoleManager.js"></script>
    <script src="Controllers/DOMDebuggerManager.js"></script>
    <script src="Controllers/DOMManager.js"></script>
    <script src="Controllers/DOMStorageManager.js"></script>
    <script src="Controllers/DatabaseManager.js"></script>
    <script src="Controllers/DebuggerManager.js"></script>
    <script src="Controllers/FormatterSourceMap.js"></script>
    <script src="Controllers/HARBuilder.js"></script>
    <script src="Controllers/HeapManager.js"></script>
    <script src="Controllers/IndexedDBManager.js"></script>
    <script src="Controllers/LayerTreeManager.js"></script>
    <script src="Controllers/MemoryManager.js"></script>
    <script src="Controllers/NetworkManager.js"></script>
    <script src="Controllers/RuntimeManager.js"></script>
    <script src="Controllers/TargetManager.js"></script>
    <script src="Controllers/TimelineManager.js"></script>
    <script src="Controllers/WorkerManager.js"></script>

    <script src="Controllers/ResourceQueryController.js"></script>
    <script src="Controllers/SelectionController.js"></script>
    <script src="Workers/Formatter/FormatterContentBuilder.js"></script>
    <script src="Views/CodeMirrorAdditions.js"></script>
    <script src="Views/EditingSupport.js"></script>
    <script src="Views/View.js"></script>

    <script src="Views/Resizer.js"></script>
    <script src="Views/Table.js"></script>
    <script src="Views/TableColumn.js"></script>
    <script src="Views/TreeElement.js"></script>
    <script src="Views/TreeOutline.js"></script>

    <script type="text/javascript">
        WI.sharedApp = new WI.TestAppController;
        WI.sharedApp.initialize();

        // Debug logging is synchronous on the test page.
        InspectorTest.forceDebugLogging = false;

        // Tee all TestHarness commands to stderr from within the Inspector.
        InspectorTest.dumpActivityToSystemConsole = false;

        // Best used in combination with dumpActivityToSystemConsole.
        InspectorBackend.dumpInspectorProtocolMessages = false;

        // Only needed when debugging issues related to the Target domain.
        InspectorBackend.filterMultiplexingBackendInspectorProtocolMessages = true;
    </script>
</head>
<body>
</body>
</html>
