Merged with the default branch to prepare the 18.08 release. maintenance release-18.08

Wed, 01 Aug 2018 19:43:34 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 01 Aug 2018 19:43:34 +0200
branch
maintenance
changeset 6455
22a6fc33ab6d
parent 6409
913a08004977 (current diff)
parent 6454
60e4c8cda62e (diff)
child 6456
a930352300c9

Merged with the default branch to prepare the 18.08 release.

APIs/Python3/eric6.api file | annotate | diff | comparison | revisions
Debugger/DebugServer.py file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Preferences/__init__.py file | annotate | diff | comparison | revisions
QScintilla/Editor.py file | annotate | diff | comparison | revisions
UI/UserInterface.py file | annotate | diff | comparison | revisions
ViewManager/ViewManager.py file | annotate | diff | comparison | revisions
WebBrowser/OpenSearch/DefaultSearchEngines/DefaultSearchEngines_rc.py file | annotate | diff | comparison | revisions
WebBrowser/WebBrowserView.py file | annotate | diff | comparison | revisions
WebBrowser/data/html_rc.py file | annotate | diff | comparison | revisions
changelog file | annotate | diff | comparison | revisions
eric6.e4p file | annotate | diff | comparison | revisions
i18n/eric6_cs.ts file | annotate | diff | comparison | revisions
i18n/eric6_de.qm file | annotate | diff | comparison | revisions
i18n/eric6_de.ts file | annotate | diff | comparison | revisions
i18n/eric6_empty.ts file | annotate | diff | comparison | revisions
i18n/eric6_en.ts file | annotate | diff | comparison | revisions
i18n/eric6_es.qm file | annotate | diff | comparison | revisions
i18n/eric6_es.ts file | annotate | diff | comparison | revisions
i18n/eric6_fr.ts file | annotate | diff | comparison | revisions
i18n/eric6_it.ts file | annotate | diff | comparison | revisions
i18n/eric6_pt.ts file | annotate | diff | comparison | revisions
i18n/eric6_ru.qm file | annotate | diff | comparison | revisions
i18n/eric6_ru.ts file | annotate | diff | comparison | revisions
i18n/eric6_tr.ts file | annotate | diff | comparison | revisions
i18n/eric6_zh_CN.ts file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric6.api	Sat Jul 07 12:01:23 2018 +0200
+++ b/APIs/Python3/eric6.api	Wed Aug 01 19:43:34 2018 +0200
@@ -431,6 +431,7 @@
 eric6.Debugger.DebugServer.DebugServer.getWatchPointModel?4()
 eric6.Debugger.DebugServer.DebugServer.isClientProcessUp?4()
 eric6.Debugger.DebugServer.DebugServer.isConnected?4()
+eric6.Debugger.DebugServer.DebugServer.isDebugging?4()
 eric6.Debugger.DebugServer.DebugServer.passiveDebugStarted?7
 eric6.Debugger.DebugServer.DebugServer.passiveStartUp?4(fn, exc)
 eric6.Debugger.DebugServer.DebugServer.preferencesChanged?4()
@@ -461,6 +462,7 @@
 eric6.Debugger.DebugServer.DebugServer.remoteUTRun?4()
 eric6.Debugger.DebugServer.DebugServer.remoteUTStop?4()
 eric6.Debugger.DebugServer.DebugServer.setCallTraceEnabled?4(on)
+eric6.Debugger.DebugServer.DebugServer.setDebugging?4(on)
 eric6.Debugger.DebugServer.DebugServer.shutdownServer?4()
 eric6.Debugger.DebugServer.DebugServer.signalClientBanner?4(version, platform, debugClient)
 eric6.Debugger.DebugServer.DebugServer.signalClientBreakConditionError?4(filename, lineno)
@@ -526,13 +528,10 @@
 eric6.Debugger.DebugViewer.DebugViewer.currentWidget?4()
 eric6.Debugger.DebugViewer.DebugViewer.handleClientStack?4(stack)
 eric6.Debugger.DebugViewer.DebugViewer.handleDebuggingStarted?4()
-eric6.Debugger.DebugViewer.DebugViewer.handleRawInput?4()
 eric6.Debugger.DebugViewer.DebugViewer.handleResetUI?4()
 eric6.Debugger.DebugViewer.DebugViewer.initCallStackViewer?4(projectMode)
 eric6.Debugger.DebugViewer.DebugViewer.isCallTraceEnabled?4()
 eric6.Debugger.DebugViewer.DebugViewer.preferencesChanged?4()
-eric6.Debugger.DebugViewer.DebugViewer.restoreCurrentPage?4()
-eric6.Debugger.DebugViewer.DebugViewer.saveCurrentPage?4()
 eric6.Debugger.DebugViewer.DebugViewer.setCallTraceToProjectMode?4(enabled)
 eric6.Debugger.DebugViewer.DebugViewer.setCurrentWidget?4(widget)
 eric6.Debugger.DebugViewer.DebugViewer.setDebugger?4(debugUI)
@@ -544,7 +543,7 @@
 eric6.Debugger.DebugViewer.DebugViewer.showVariables?4(vlist, showGlobals)
 eric6.Debugger.DebugViewer.DebugViewer.showVariablesTab?4(showGlobals)
 eric6.Debugger.DebugViewer.DebugViewer.sourceFile?7
-eric6.Debugger.DebugViewer.DebugViewer?1(debugServer, docked, vm, parent=None, embeddedShell=True, embeddedBrowser=True)
+eric6.Debugger.DebugViewer.DebugViewer?1(debugServer, docked, vm, parent=None)
 eric6.Debugger.DebuggerInterfaceNone.ClientDefaultCapabilities?7
 eric6.Debugger.DebuggerInterfaceNone.ClientTypeAssociations?7
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.flush?4()
@@ -971,8 +970,9 @@
 eric6.E5Gui.E5LineEditButton.E5LineEditButton.setMenu?4(menu)
 eric6.E5Gui.E5LineEditButton.E5LineEditButton?1(parent=None)
 eric6.E5Gui.E5ListSelectionDialog.E5ListSelectionDialog.getSelection?4()
+eric6.E5Gui.E5ListSelectionDialog.E5ListSelectionDialog.on_selectionList_itemChanged?4(itm)
 eric6.E5Gui.E5ListSelectionDialog.E5ListSelectionDialog.on_selectionList_itemSelectionChanged?4()
-eric6.E5Gui.E5ListSelectionDialog.E5ListSelectionDialog?1(entries, selectionMode=QAbstractItemView.ExtendedSelection, title="", message="", parent=None)
+eric6.E5Gui.E5ListSelectionDialog.E5ListSelectionDialog?1(entries, selectionMode=QAbstractItemView.ExtendedSelection, title="", message="", checkBoxSelection=False, parent=None)
 eric6.E5Gui.E5ListView.E5ListView.keyPressEvent?4(evt)
 eric6.E5Gui.E5ListView.E5ListView.removeAll?4()
 eric6.E5Gui.E5ListView.E5ListView.removeSelected?4()
@@ -1170,6 +1170,15 @@
 eric6.E5Gui.E5PathPicker.E5PathPickerModes.SaveFileEnsureExtensionMode?7
 eric6.E5Gui.E5PathPicker.E5PathPickerModes.SaveFileMode?7
 eric6.E5Gui.E5PathPicker.E5PathPickerModes.SaveFileOverwriteMode?7
+eric6.E5Gui.E5PathPickerDialog.E5PathPickerDialog.getPath?4()
+eric6.E5Gui.E5PathPickerDialog.E5PathPickerDialog.setDefaultDirectory?4(directory)
+eric6.E5Gui.E5PathPickerDialog.E5PathPickerDialog.setLabelText?4(text)
+eric6.E5Gui.E5PathPickerDialog.E5PathPickerDialog.setPickerFilters?4(filters)
+eric6.E5Gui.E5PathPickerDialog.E5PathPickerDialog.setPickerMode?4(mode)
+eric6.E5Gui.E5PathPickerDialog.E5PathPickerDialog.setPickerPath?4(path)
+eric6.E5Gui.E5PathPickerDialog.E5PathPickerDialog.setTitle?4(title)
+eric6.E5Gui.E5PathPickerDialog.E5PathPickerDialog?1(parent=None)
+eric6.E5Gui.E5PathPickerDialog.getPath?4(parent, title, label, mode=E5PathPickerModes.OpenFileMode, path="", defaultDirectory="", filters=None)
 eric6.E5Gui.E5ProgressDialog.E5ProgressDialog.format?4()
 eric6.E5Gui.E5ProgressDialog.E5ProgressDialog.setFormat?4(labelFormat)
 eric6.E5Gui.E5ProgressDialog.E5ProgressDialog?1(labelText, cancelButtonText, minimum, maximum, labelFormat=None, parent=None, flags=None)
@@ -1573,6 +1582,7 @@
 eric6.E5XML.Config.pluginRepositoryFileFormatVersion?7
 eric6.E5XML.Config.projectFileFormatVersion?7
 eric6.E5XML.Config.projectFileFormatVersionAlt?7
+eric6.E5XML.Config.projectFileFormatVersionMake?7
 eric6.E5XML.Config.projectFileFormatVersionProto?7
 eric6.E5XML.Config.sessionFileFormatVersion?7
 eric6.E5XML.Config.shortcutsFileFormatVersion?7
@@ -1623,7 +1633,7 @@
 eric6.E5XML.TasksWriter.TasksWriter?1(device, forProject=False, projectName="")
 eric6.E5XML.TemplatesReader.TemplatesReader.readXML?4()
 eric6.E5XML.TemplatesReader.TemplatesReader.supportedVersions?7
-eric6.E5XML.TemplatesReader.TemplatesReader?1(device, viewer=None)
+eric6.E5XML.TemplatesReader.TemplatesReader?1(device, viewer)
 eric6.E5XML.TemplatesWriter.TemplatesWriter.writeXML?4()
 eric6.E5XML.TemplatesWriter.TemplatesWriter?1(device, templatesViewer)
 eric6.E5XML.UserProjectReader.UserProjectReader.readXML?4()
@@ -4963,6 +4973,12 @@
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.GoogleV2Engine.GoogleV2Engine.getTranslation?4(requestObject, text, originalLanguage, translationLanguage)
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.GoogleV2Engine.GoogleV2Engine.supportedLanguages?4()
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.GoogleV2Engine.GoogleV2Engine?1(plugin, parent=None)
+eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.IbmWatsonEngine.engineName?4()
+eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.IbmWatsonEngine.getTranslation?4(requestObject, text, originalLanguage, translationLanguage)
+eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.IbmWatsonEngine.hasTTS?4()
+eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.IbmWatsonEngine.supportedLanguages?4()
+eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.IbmWatsonEngine.supportedTargetLanguages?4(original)
+eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.IbmWatsonEngine?1(plugin, parent=None)
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.MicrosoftEngine.MicrosoftEngine.AccessTokenUrl?7
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.MicrosoftEngine.MicrosoftEngine.TextToSpeechUrl?7
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.MicrosoftEngine.MicrosoftEngine.TranslatorUrl?7
@@ -4983,11 +4999,13 @@
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.PromtEngine.PromtEngine.getTranslation?4(requestObject, text, originalLanguage, translationLanguage)
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.PromtEngine.PromtEngine.supportedLanguages?4()
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.PromtEngine.PromtEngine?1(plugin, parent=None)
+eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.TranslationEngine.TranslationEngine.availableTranslationsLoaded?7
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.TranslationEngine.TranslationEngine.engineName?4()
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.TranslationEngine.TranslationEngine.getTextToSpeechData?4(requestObject, text, language)
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.TranslationEngine.TranslationEngine.getTranslation?4(requestObject, text, originalLanguage, translationLanguage)
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.TranslationEngine.TranslationEngine.hasTTS?4()
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.TranslationEngine.TranslationEngine.supportedLanguages?4()
+eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.TranslationEngine.TranslationEngine.supportedTargetLanguages?4(original)
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.TranslationEngine.TranslationEngine?1(plugin, parent=None)
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.YandexEngine.YandexEngine.TranslatorLimit?7
 eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.YandexEngine.YandexEngine.TranslatorUrl?7
@@ -7657,7 +7675,6 @@
 eric6.Preferences.getTrayStarter?4(key, prefClass=Prefs)
 eric6.Preferences.getUI?4(key, prefClass=Prefs)
 eric6.Preferences.getUILanguage?4(prefClass=Prefs)
-eric6.Preferences.getUILayout?4(prefClass=Prefs)
 eric6.Preferences.getUser?4(key, prefClass=Prefs)
 eric6.Preferences.getVCS?4(key, prefClass=Prefs)
 eric6.Preferences.getVarFilters?4(prefClass=Prefs)
@@ -7710,7 +7727,6 @@
 eric6.Preferences.setTrayStarter?4(key, value, prefClass=Prefs)
 eric6.Preferences.setUI?4(key, value, prefClass=Prefs)
 eric6.Preferences.setUILanguage?4(lang, prefClass=Prefs)
-eric6.Preferences.setUILayout?4(layout, prefClass=Prefs)
 eric6.Preferences.setUser?4(key, value, prefClass=Prefs)
 eric6.Preferences.setVCS?4(key, value, prefClass=Prefs)
 eric6.Preferences.setVarFilters?4(filters, prefClass=Prefs)
@@ -7761,6 +7777,23 @@
 eric6.Project.FiletypeAssociationDialog.FiletypeAssociationDialog.on_filetypeAssociationList_currentItemChanged?4(itm, prevItm)
 eric6.Project.FiletypeAssociationDialog.FiletypeAssociationDialog.transferData?4()
 eric6.Project.FiletypeAssociationDialog.FiletypeAssociationDialog?1(project, parent=None)
+eric6.Project.IdlCompilerDefineNameDialog.IdlCompilerDefineNameDialog.getData?4()
+eric6.Project.IdlCompilerDefineNameDialog.IdlCompilerDefineNameDialog.on_nameEdit_textChanged?4(txt)
+eric6.Project.IdlCompilerDefineNameDialog.IdlCompilerDefineNameDialog?1(name="", value="", parent=None)
+eric6.Project.IdlCompilerOptionsDialog.IdlCompilerOptionsDialog.getData?4()
+eric6.Project.IdlCompilerOptionsDialog.IdlCompilerOptionsDialog.on_dnAddButton_clicked?4()
+eric6.Project.IdlCompilerOptionsDialog.IdlCompilerOptionsDialog.on_dnDeleteButton_clicked?4()
+eric6.Project.IdlCompilerOptionsDialog.IdlCompilerOptionsDialog.on_dnEditButton_clicked?4()
+eric6.Project.IdlCompilerOptionsDialog.IdlCompilerOptionsDialog.on_dnList_itemSelectionChanged?4()
+eric6.Project.IdlCompilerOptionsDialog.IdlCompilerOptionsDialog.on_idAddButton_clicked?4()
+eric6.Project.IdlCompilerOptionsDialog.IdlCompilerOptionsDialog.on_idDeleteButton_clicked?4()
+eric6.Project.IdlCompilerOptionsDialog.IdlCompilerOptionsDialog.on_idEditButton_clicked?4()
+eric6.Project.IdlCompilerOptionsDialog.IdlCompilerOptionsDialog.on_idList_itemSelectionChanged?4()
+eric6.Project.IdlCompilerOptionsDialog.IdlCompilerOptionsDialog.on_unAddButton_clicked?4()
+eric6.Project.IdlCompilerOptionsDialog.IdlCompilerOptionsDialog.on_unDeleteButton_clicked?4()
+eric6.Project.IdlCompilerOptionsDialog.IdlCompilerOptionsDialog.on_unEditButton_clicked?4()
+eric6.Project.IdlCompilerOptionsDialog.IdlCompilerOptionsDialog.on_unList_itemSelectionChanged?4()
+eric6.Project.IdlCompilerOptionsDialog.IdlCompilerOptionsDialog?1(includeDirectories, definedNames, undefinedNames, project=None, parent=None)
 eric6.Project.LexerAssociationDialog.LexerAssociationDialog.on_addLexerButton_clicked?4()
 eric6.Project.LexerAssociationDialog.LexerAssociationDialog.on_deleteLexerButton_clicked?4()
 eric6.Project.LexerAssociationDialog.LexerAssociationDialog.on_editorLexerCombo_currentIndexChanged?4(text)
@@ -7860,6 +7893,7 @@
 eric6.Project.Project.Project.getVcs?4()
 eric6.Project.Project.Project.handleApplicationDiagram?4()
 eric6.Project.Project.Project.handlePreferencesChanged?4()
+eric6.Project.Project.Project.hasDefaultIdlCompilerParameters?4()
 eric6.Project.Project.Project.hasDefaultMakeParameters?4()
 eric6.Project.Project.Project.hasEntry?4(fn)
 eric6.Project.Project.Project.hasProjectType?4(type_, progLanguage="")
@@ -7998,8 +8032,7 @@
 eric6.Project.ProjectBrowser.ProjectBrowser.handleEditorChanged?4(fn)
 eric6.Project.ProjectBrowser.ProjectBrowser.handleEditorLineChanged?4(fn, lineno)
 eric6.Project.ProjectBrowser.ProjectBrowser.handlePreferencesChanged?4()
-eric6.Project.ProjectBrowser.ProjectBrowser.showEvent?4(evt)
-eric6.Project.ProjectBrowser.ProjectBrowser?1(project, parent=None, embeddedBrowser=True)
+eric6.Project.ProjectBrowser.ProjectBrowser?1(project, parent=None)
 eric6.Project.ProjectBrowserFlags.AllBrowsersFlag?7
 eric6.Project.ProjectBrowserFlags.FormsBrowserFlag?7
 eric6.Project.ProjectBrowserFlags.InterfacesBrowserFlag?7
@@ -9900,6 +9933,7 @@
 eric6.UI.UserInterface.UserInterface.dropEvent?4(event)
 eric6.UI.UserInterface.UserInterface.getActions?4(actionType)
 eric6.UI.UserInterface.UserInterface.getHelpViewer?4(preview=False)
+eric6.UI.UserInterface.UserInterface.getLayoutType?4()
 eric6.UI.UserInterface.UserInterface.getLocale?4()
 eric6.UI.UserInterface.UserInterface.getMenu?4(name)
 eric6.UI.UserInterface.UserInterface.getMenuAction?4(menuName, actionName)
--- a/APIs/Python3/eric6.bas	Sat Jul 07 12:01:23 2018 +0200
+++ b/APIs/Python3/eric6.bas	Wed Aug 01 19:43:34 2018 +0200
@@ -194,6 +194,7 @@
 E5PasswordMeter QProgressBar
 E5PathPicker E5PathPickerBase
 E5PathPickerBase QWidget
+E5PathPickerDialog QDialog
 E5PathPickerModes Enum
 E5ProgressDialog QProgressDialog
 E5RequestModel QAbstractTableModel
@@ -496,6 +497,7 @@
 HtmlProvider MarkupBase
 HyperlinkMarkupDialog QDialog Ui_HyperlinkMarkupDialog
 IExplorerImporter BookmarksImporter
+IbmWatsonEngine TranslationEngine
 IconEditCommand QUndoCommand
 IconEditorGrid QWidget
 IconEditorPalette QWidget
@@ -503,6 +505,8 @@
 IconSizeDialog QDialog Ui_IconSizeDialog
 IconsPage ConfigurationPageBase Ui_IconsPage
 IconsPreviewDialog QDialog Ui_IconsPreviewDialog
+IdlCompilerDefineNameDialog QDialog Ui_IdlCompilerDefineNameDialog
+IdlCompilerOptionsDialog QDialog Ui_IdlCompilerOptionsDialog
 ImageMarkupDialog QDialog Ui_ImageMarkupDialog
 ImageSearchEngine QObject
 ImagesIcon StatusBarIcon
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DTDs/Project-6.2.dtd	Wed Aug 01 19:43:34 2018 +0200
@@ -0,0 +1,182 @@
+<!-- This is the DTD for eric5's project file version 6.0 -->
+
+<!-- This is a copy of the Basic DTD -->
+<!ELEMENT   int         (#PCDATA)>
+<!ELEMENT   long        (#PCDATA)>
+<!ELEMENT   float       (#PCDATA)>
+<!ELEMENT   complex     (#PCDATA)>
+<!ELEMENT   bool        (#PCDATA)>
+<!ELEMENT   string      (#PCDATA)>
+<!ELEMENT   bytes       (#PCDATA)>
+<!ELEMENT   bytearray   (#PCDATA)>
+<!ELEMENT   none        EMPTY>
+
+<!ELEMENT   pickle      (#PCDATA)>
+<!ATTLIST   pickle
+    method      CDATA   #REQUIRED
+    encoding    CDATA   #REQUIRED>
+
+<!ELEMENT   key         (int | long | float | complex | string | bytes)>
+<!ELEMENT   value       (int | long | float | complex | bool | string | bytes | 
+    bytearray | none | dict | tuple | list | set | frozenset | pickle)>
+
+<!ELEMENT   dict        (key, value)*>
+
+<!ELEMENT   tuple       (int | long | float | complex | bool | string | bytes | 
+    bytearray | none | dict | tuple | list | set | frozenset | pickle)*>
+
+<!ELEMENT   list        (int | long | float | complex | bool | string | bytes | 
+    bytearray | none | dict | tuple | list | set | frozenset | pickle)*>
+
+<!ELEMENT   set         (int | long | float | complex | bool | string | bytes | 
+    bytearray | none | dict | tuple | list | set | frozenset | pickle)*>
+
+<!ELEMENT   frozenset   (int | long | float | complex | bool | string | bytes | 
+    bytearray | none | dict | tuple | list | set | frozenset | pickle)*>
+<!-- End of the Basic DTD -->
+
+<!ELEMENT   ProgLanguage        (#PCDATA)>
+<!ATTLIST   ProgLanguage
+    mixed       CDATA   #REQUIRED>
+
+<!ELEMENT   ProjectType         (#PCDATA)>
+
+<!ELEMENT   Description         (#PCDATA)>
+
+<!ELEMENT   Version             (#PCDATA)>
+
+<!ELEMENT   Author              (#PCDATA)>
+
+<!ELEMENT   Email               (#PCDATA)>
+
+<!ELEMENT   TranslationPattern  (#PCDATA)>
+
+<!ELEMENT   TranslationsBinPath (#PCDATA)>
+
+<!ELEMENT   Source              (#PCDATA)>
+
+<!ELEMENT   Sources             (Source*)>
+
+<!ELEMENT   Form                (#PCDATA)>
+
+<!ELEMENT   Forms               (Form*)>
+
+<!ELEMENT   Translation         (#PCDATA)>
+
+<!ELEMENT   Translations        (Translation*)>
+
+<!ELEMENT   TranslationException  (#PCDATA)>
+
+<!ELEMENT   TranslationExceptions (TranslationException*)>
+
+<!ELEMENT   Resource            (#PCDATA)>
+
+<!ELEMENT   Resources           (Resource*)>
+
+<!ELEMENT   Interface           (#PCDATA)>
+
+<!ELEMENT   Interfaces          (Interface*)>
+
+<!ELEMENT   Protocol            (#PCDATA)>
+
+<!ELEMENT   Protocols           (Protocol*)>
+
+<!ELEMENT   Other               (#PCDATA)>
+
+<!ELEMENT   Others              (Other*)>
+
+<!ELEMENT   MainScript          (#PCDATA)>
+
+<!ELEMENT   VcsType             (#PCDATA)>
+<!ELEMENT   VcsOptions          (dict)>
+<!ELEMENT   VcsOtherData        (dict)>
+
+<!ELEMENT   Vcs                 (VcsType?,
+                                 VcsOptions?,
+                                 VcsOtherData?)>
+
+<!ELEMENT   FiletypeAssociation EMPTY>
+<!ATTLIST   FiletypeAssociation
+    pattern     CDATA   #REQUIRED
+    type        CDATA   #REQUIRED>
+
+<!ELEMENT   FiletypeAssociations (FiletypeAssociation*)>
+
+<!ELEMENT   LexerAssociation EMPTY>
+<!ATTLIST   LexerAssociation
+    pattern     CDATA   #REQUIRED
+    lexer       CDATA   #REQUIRED>
+
+<!ELEMENT   LexerAssociations (LexerAssociation*)>
+
+<!ELEMENT   MakeParameters (dict)>
+
+<!ELEMENT   Make (MakeParameters?)>
+
+<!ELEMENT   IdlCompiler (IdlCompilerParameters?)>
+
+<!ELEMENT   ProjectTypeSpecificData (dict)>
+
+<!ELEMENT   ProjectTypeSpecific (ProjectTypeSpecific?)>
+
+<!ELEMENT   DocumentationParams (dict)>
+
+<!ELEMENT   Documentation       (DocumentationParams?)>
+
+<!ELEMENT   PackagersParams     (dict)>
+
+<!ELEMENT   Packagers           (PackagersParams?)>
+
+<!ELEMENT   CheckersParams      (dict)>
+
+<!ELEMENT   Checkers            (CheckersParams?)>
+
+<!ELEMENT   OtherToolsParams    (dict)>
+
+<!ELEMENT   OtherTools          (OtherToolsParams?)>
+
+<!ELEMENT   Language            (#PCDATA)>
+
+<!ELEMENT   ProjectWordList     (#PCDATA)>
+
+<!ELEMENT   ProjectExcludeList  (#PCDATA)>
+
+<!ELEMENT   Hash                (#PCDATA)>
+
+<!ELEMENT   Eol EMPTY>
+<!ATTLIST   Eol
+    index       CDATA   #REQUIRED>
+
+<!ELEMENT   Project             (Language,
+                                 ProjectWordList?,
+                                 ProjectExcludeList?,
+                                 Hash,
+                                 ProgLanguage,
+                                 ProjectType,
+                                 Description?,
+                                 Version?,
+                                 Author?,
+                                 Email?,
+                                 TranslationPattern?,
+                                 TranslationsBinPath?,
+                                 Eol?,
+                                 Sources,
+                                 Forms,
+                                 Translations,
+                                 TranslationExceptions?,
+                                 Resources,
+                                 Interfaces,
+                                 Others,
+                                 MainScript?,
+                                 Vcs,
+                                 FiletypeAssociations,
+                                 LexerAssociations?,
+                                 Make?,
+                                 IdlCompiler?,
+                                 ProjectTypeSpecific?,
+                                 Documentation?,
+                                 Packagers?,
+                                 Checkers?,
+                                 OtherTools?)>
+<!ATTLIST   Project
+    version     CDATA   #REQUIRED>
--- a/Debugger/DebugServer.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Debugger/DebugServer.py	Wed Aug 01 19:43:34 2018 +0200
@@ -474,6 +474,7 @@
         if not self.passive or not self.passiveClientExited:
             if self.debuggerInterface and self.debuggerInterface.isConnected():
                 self.shutdownServer()
+                self.debugging = False
                 self.clientGone.emit(unplanned and self.debugging)
         
         if clType:
@@ -1489,6 +1490,7 @@
         self.clientExit.emit(int(status), message)
         if Preferences.getDebugger("AutomaticReset") or (self.running and
                                                          not self.debugging):
+            self.debugging = False
             self.startClient(False)
         if self.passive:
             self.__createDebuggerInterface("None")
@@ -1732,3 +1734,21 @@
         @return flag indicating a connection (boolean)
         """
         return self.debuggerInterface and self.debuggerInterface.isConnected()
+    
+    def isDebugging(self):
+        """
+        Public method to test, if the debug server is debugging.
+        
+        @return flag indicating the debugging state
+        @rtype bool
+        """
+        return self.debugging
+    
+    def setDebugging(self, on):
+        """
+        Public method to set the debugging state.
+        
+        @param on flag indicating the new debugging state
+        @type bool
+        """
+        self.debugging = on
--- a/Debugger/DebugUI.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Debugger/DebugUI.py	Wed Aug 01 19:43:34 2018 +0200
@@ -137,8 +137,6 @@
         debugServer.passiveDebugStarted.connect(self.__passiveDebugStarted)
         debugServer.clientThreadSet.connect(self.__clientThreadSet)
         
-        debugServer.clientRawInput.connect(debugViewer.handleRawInput)
-        debugServer.clientRawInputSent.connect(debugViewer.restoreCurrentPage)
         debugServer.clientThreadList.connect(debugViewer.showThreadList)
         
         # Connect the signals emitted by the viewmanager
@@ -1200,6 +1198,7 @@
                                 exceptionType,
                                 Utilities.html_encode(exceptionMessage)))
             if res == E5MessageBox.Yes:
+                self.debugServer.setDebugging(True)
                 self.exceptionInterrupt.emit()
                 stack = []
                 for fn, ln, func, args in stackTrace:
--- a/Debugger/DebugViewer.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Debugger/DebugViewer.py	Wed Aug 01 19:43:34 2018 +0200
@@ -48,8 +48,7 @@
     """
     sourceFile = pyqtSignal(str, int)
     
-    def __init__(self, debugServer, docked, vm, parent=None,
-                 embeddedShell=True, embeddedBrowser=True):
+    def __init__(self, debugServer, docked, vm, parent=None):
         """
         Constructor
         
@@ -57,13 +56,6 @@
         @param docked flag indicating a dock window
         @param vm reference to the viewmanager object
         @param parent parent widget (QWidget)
-        @param embeddedShell flag indicating whether the shell should be
-            included. This flag is set to False by those layouts, that have
-            the interpreter shell in a separate window.
-        @param embeddedBrowser flag indicating whether the file browser should
-            be included. This flag is set to False by those layouts, that
-            have the file browser in a separate window or embedded
-            in the project browser instead.
         """
         super(DebugViewer, self).__init__(parent)
         
@@ -79,27 +71,6 @@
         self.__tabWidget = E5TabWidget()
         self.__mainLayout.addWidget(self.__tabWidget)
         
-        self.embeddedShell = embeddedShell
-        if embeddedShell:
-            from QScintilla.Shell import ShellAssembly
-            # add the interpreter shell
-            self.shellAssembly = ShellAssembly(debugServer, vm, False)
-            self.shell = self.shellAssembly.shell()
-            index = self.__tabWidget.addTab(
-                self.shellAssembly,
-                UI.PixmapCache.getIcon("shell.png"), '')
-            self.__tabWidget.setTabToolTip(index, self.shell.windowTitle())
-        
-        self.embeddedBrowser = embeddedBrowser
-        if embeddedBrowser:
-            from UI.Browser import Browser
-            # add the browser
-            self.browser = Browser()
-            index = self.__tabWidget.addTab(
-                self.browser,
-                UI.PixmapCache.getIcon("browser.png"), '')
-            self.__tabWidget.setTabToolTip(index, self.browser.windowTitle())
-        
         from .VariablesViewer import VariablesViewer
         # add the global variables viewer
         self.glvWidget = QWidget()
@@ -249,13 +220,7 @@
         self.__tabWidget.setTabToolTip(
             index, self.exceptionLogger.windowTitle())
         
-        if self.embeddedShell:
-            self.__tabWidget.setCurrentWidget(self.shellAssembly)
-        else:
-            if self.embeddedBrowser:
-                self.__tabWidget.setCurrentWidget(self.browser)
-            else:
-                self.__tabWidget.setCurrentWidget(self.glvWidget)
+        self.__tabWidget.setCurrentWidget(self.glvWidget)
         
         # add the threads viewer
         self.__mainLayout.addWidget(QLabel(self.tr("Threads:")))
@@ -273,7 +238,6 @@
         self.__mainLayout.setStretchFactor(self.__tabWidget, 5)
         self.__mainLayout.setStretchFactor(self.__threadList, 1)
         
-        self.currPage = None
         self.currentStack = None
         self.framenr = 0
         
@@ -311,23 +275,9 @@
         self.currentStack = None
         self.stackComboBox.clear()
         self.__threadList.clear()
-        if self.embeddedShell:
-            self.__tabWidget.setCurrentWidget(self.shellAssembly)
-        else:
-            if self.embeddedBrowser:
-                self.__tabWidget.setCurrentWidget(self.browser)
-            else:
-                self.__tabWidget.setCurrentWidget(self.glvWidget)
+        self.__tabWidget.setCurrentWidget(self.glvWidget)
         self.breakpointViewer.handleResetUI()
         
-    def handleRawInput(self):
-        """
-        Public slot to handle the switch to the shell in raw input mode.
-        """
-        if self.embeddedShell:
-            self.saveCurrentPage()
-            self.__tabWidget.setCurrentWidget(self.shellAssembly)
-        
     def initCallStackViewer(self, projectMode):
         """
         Public method to initialize the call stack viewer.
@@ -397,19 +347,6 @@
         else:
             self.__tabWidget.setCurrentWidget(self.lvWidget)
         
-    def saveCurrentPage(self):
-        """
-        Public slot to save the current page.
-        """
-        self.currPage = self.__tabWidget.currentWidget()
-        
-    def restoreCurrentPage(self):
-        """
-        Public slot to restore the previously saved page.
-        """
-        if self.currPage is not None:
-            self.__tabWidget.setCurrentWidget(self.currPage)
-            
     def handleClientStack(self, stack):
         """
         Public slot to show the call stack of the program being debugged.
@@ -456,7 +393,8 @@
         @param frmnr frame number (0 is the current frame) (int)
         """
         self.framenr = frmnr
-        self.debugServer.remoteClientVariables(0, self.localsFilter, frmnr)
+        if self.debugServer.isDebugging():
+            self.debugServer.remoteClientVariables(0, self.localsFilter, frmnr)
         
         if self.__autoViewSource:
             self.__showSource()
@@ -465,19 +403,21 @@
         """
         Public slot to set the global variable filter.
         """
-        filterStr = self.globalsFilterEdit.text()
-        self.debugServer.remoteClientSetFilter(1, filterStr)
-        self.debugServer.remoteClientVariables(2, self.globalsFilter)
+        if self.debugServer.isDebugging():
+            filterStr = self.globalsFilterEdit.text()
+            self.debugServer.remoteClientSetFilter(1, filterStr)
+            self.debugServer.remoteClientVariables(2, self.globalsFilter)
         
     def setLocalsFilter(self):
         """
         Public slot to set the local variable filter.
         """
-        filterStr = self.localsFilterEdit.text()
-        self.debugServer.remoteClientSetFilter(0, filterStr)
-        if self.currentStack:
-            self.debugServer.remoteClientVariables(
-                0, self.localsFilter, self.framenr)
+        if self.debugServer.isDebugging():
+            filterStr = self.localsFilterEdit.text()
+            self.debugServer.remoteClientSetFilter(0, filterStr)
+            if self.currentStack:
+                self.debugServer.remoteClientVariables(
+                    0, self.localsFilter, self.framenr)
         
     def handleDebuggingStarted(self):
         """
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Help/source.qhp	Wed Aug 01 19:43:34 2018 +0200
@@ -104,6 +104,7 @@
             <section title="eric6.E5Gui.E5PassivePopup" ref="eric6.E5Gui.E5PassivePopup.html" />
             <section title="eric6.E5Gui.E5PasswordMeter" ref="eric6.E5Gui.E5PasswordMeter.html" />
             <section title="eric6.E5Gui.E5PathPicker" ref="eric6.E5Gui.E5PathPicker.html" />
+            <section title="eric6.E5Gui.E5PathPickerDialog" ref="eric6.E5Gui.E5PathPickerDialog.html" />
             <section title="eric6.E5Gui.E5ProgressDialog" ref="eric6.E5Gui.E5ProgressDialog.html" />
             <section title="eric6.E5Gui.E5SideBar" ref="eric6.E5Gui.E5SideBar.html" />
             <section title="eric6.E5Gui.E5SimpleHelpDialog" ref="eric6.E5Gui.E5SimpleHelpDialog.html" />
@@ -537,6 +538,7 @@
                   <section title="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.GlosbeEngine" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.GlosbeEngine.html" />
                   <section title="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.GoogleV1Engine" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.GoogleV1Engine.html" />
                   <section title="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.GoogleV2Engine" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.GoogleV2Engine.html" />
+                  <section title="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.html" />
                   <section title="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.MicrosoftEngine" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.MicrosoftEngine.html" />
                   <section title="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.MyMemoryEngine" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.MyMemoryEngine.html" />
                   <section title="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.PromtEngine" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.PromtEngine.html" />
@@ -971,6 +973,8 @@
             <section title="eric6.Project.CreateDialogCodeDialog" ref="eric6.Project.CreateDialogCodeDialog.html" />
             <section title="eric6.Project.DebuggerPropertiesDialog" ref="eric6.Project.DebuggerPropertiesDialog.html" />
             <section title="eric6.Project.FiletypeAssociationDialog" ref="eric6.Project.FiletypeAssociationDialog.html" />
+            <section title="eric6.Project.IdlCompilerDefineNameDialog" ref="eric6.Project.IdlCompilerDefineNameDialog.html" />
+            <section title="eric6.Project.IdlCompilerOptionsDialog" ref="eric6.Project.IdlCompilerOptionsDialog.html" />
             <section title="eric6.Project.LexerAssociationDialog" ref="eric6.Project.LexerAssociationDialog.html" />
             <section title="eric6.Project.MakePropertiesDialog" ref="eric6.Project.MakePropertiesDialog.html" />
             <section title="eric6.Project.NewDialogClassDialog" ref="eric6.Project.NewDialogClassDialog.html" />
@@ -3350,6 +3354,7 @@
       <keyword name="CookieJar (Package)" id="CookieJar (Package)" ref="index-eric6.WebBrowser.CookieJar.html" />
       <keyword name="CookieJar.__applyRules" id="CookieJar.__applyRules" ref="eric6.Helpviewer.CookieJar.CookieJar.html#CookieJar.__applyRules" />
       <keyword name="CookieJar.__cookieAdded" id="CookieJar.__cookieAdded" ref="eric6.WebBrowser.CookieJar.CookieJar.html#CookieJar.__cookieAdded" />
+      <keyword name="CookieJar.__cookieFilter" id="CookieJar.__cookieFilter" ref="eric6.WebBrowser.CookieJar.CookieJar.html#CookieJar.__cookieFilter" />
       <keyword name="CookieJar.__cookieRemoved" id="CookieJar.__cookieRemoved" ref="eric6.WebBrowser.CookieJar.CookieJar.html#CookieJar.__cookieRemoved" />
       <keyword name="CookieJar.__isOnDomainList" id="CookieJar.__isOnDomainList" ref="eric6.Helpviewer.CookieJar.CookieJar.html#CookieJar.__isOnDomainList" />
       <keyword name="CookieJar.__isOnDomainList" id="CookieJar.__isOnDomainList" ref="eric6.WebBrowser.CookieJar.CookieJar.html#CookieJar.__isOnDomainList" />
@@ -3673,6 +3678,7 @@
       <keyword name="DebugServer.getWatchPointModel" id="DebugServer.getWatchPointModel" ref="eric6.Debugger.DebugServer.html#DebugServer.getWatchPointModel" />
       <keyword name="DebugServer.isClientProcessUp" id="DebugServer.isClientProcessUp" ref="eric6.Debugger.DebugServer.html#DebugServer.isClientProcessUp" />
       <keyword name="DebugServer.isConnected" id="DebugServer.isConnected" ref="eric6.Debugger.DebugServer.html#DebugServer.isConnected" />
+      <keyword name="DebugServer.isDebugging" id="DebugServer.isDebugging" ref="eric6.Debugger.DebugServer.html#DebugServer.isDebugging" />
       <keyword name="DebugServer.passiveStartUp" id="DebugServer.passiveStartUp" ref="eric6.Debugger.DebugServer.html#DebugServer.passiveStartUp" />
       <keyword name="DebugServer.preferencesChanged" id="DebugServer.preferencesChanged" ref="eric6.Debugger.DebugServer.html#DebugServer.preferencesChanged" />
       <keyword name="DebugServer.registerDebuggerInterface" id="DebugServer.registerDebuggerInterface" ref="eric6.Debugger.DebugServer.html#DebugServer.registerDebuggerInterface" />
@@ -3702,6 +3708,7 @@
       <keyword name="DebugServer.remoteUTRun" id="DebugServer.remoteUTRun" ref="eric6.Debugger.DebugServer.html#DebugServer.remoteUTRun" />
       <keyword name="DebugServer.remoteUTStop" id="DebugServer.remoteUTStop" ref="eric6.Debugger.DebugServer.html#DebugServer.remoteUTStop" />
       <keyword name="DebugServer.setCallTraceEnabled" id="DebugServer.setCallTraceEnabled" ref="eric6.Debugger.DebugServer.html#DebugServer.setCallTraceEnabled" />
+      <keyword name="DebugServer.setDebugging" id="DebugServer.setDebugging" ref="eric6.Debugger.DebugServer.html#DebugServer.setDebugging" />
       <keyword name="DebugServer.shutdownServer" id="DebugServer.shutdownServer" ref="eric6.Debugger.DebugServer.html#DebugServer.shutdownServer" />
       <keyword name="DebugServer.signalClientBanner" id="DebugServer.signalClientBanner" ref="eric6.Debugger.DebugServer.html#DebugServer.signalClientBanner" />
       <keyword name="DebugServer.signalClientBreakConditionError" id="DebugServer.signalClientBreakConditionError" ref="eric6.Debugger.DebugServer.html#DebugServer.signalClientBreakConditionError" />
@@ -3815,13 +3822,10 @@
       <keyword name="DebugViewer.currentWidget" id="DebugViewer.currentWidget" ref="eric6.Debugger.DebugViewer.html#DebugViewer.currentWidget" />
       <keyword name="DebugViewer.handleClientStack" id="DebugViewer.handleClientStack" ref="eric6.Debugger.DebugViewer.html#DebugViewer.handleClientStack" />
       <keyword name="DebugViewer.handleDebuggingStarted" id="DebugViewer.handleDebuggingStarted" ref="eric6.Debugger.DebugViewer.html#DebugViewer.handleDebuggingStarted" />
-      <keyword name="DebugViewer.handleRawInput" id="DebugViewer.handleRawInput" ref="eric6.Debugger.DebugViewer.html#DebugViewer.handleRawInput" />
       <keyword name="DebugViewer.handleResetUI" id="DebugViewer.handleResetUI" ref="eric6.Debugger.DebugViewer.html#DebugViewer.handleResetUI" />
       <keyword name="DebugViewer.initCallStackViewer" id="DebugViewer.initCallStackViewer" ref="eric6.Debugger.DebugViewer.html#DebugViewer.initCallStackViewer" />
       <keyword name="DebugViewer.isCallTraceEnabled" id="DebugViewer.isCallTraceEnabled" ref="eric6.Debugger.DebugViewer.html#DebugViewer.isCallTraceEnabled" />
       <keyword name="DebugViewer.preferencesChanged" id="DebugViewer.preferencesChanged" ref="eric6.Debugger.DebugViewer.html#DebugViewer.preferencesChanged" />
-      <keyword name="DebugViewer.restoreCurrentPage" id="DebugViewer.restoreCurrentPage" ref="eric6.Debugger.DebugViewer.html#DebugViewer.restoreCurrentPage" />
-      <keyword name="DebugViewer.saveCurrentPage" id="DebugViewer.saveCurrentPage" ref="eric6.Debugger.DebugViewer.html#DebugViewer.saveCurrentPage" />
       <keyword name="DebugViewer.setCallTraceToProjectMode" id="DebugViewer.setCallTraceToProjectMode" ref="eric6.Debugger.DebugViewer.html#DebugViewer.setCallTraceToProjectMode" />
       <keyword name="DebugViewer.setCurrentWidget" id="DebugViewer.setCurrentWidget" ref="eric6.Debugger.DebugViewer.html#DebugViewer.setCurrentWidget" />
       <keyword name="DebugViewer.setDebugger" id="DebugViewer.setDebugger" ref="eric6.Debugger.DebugViewer.html#DebugViewer.setDebugger" />
@@ -4530,6 +4534,7 @@
       <keyword name="E5ListSelectionDialog (Constructor)" id="E5ListSelectionDialog (Constructor)" ref="eric6.E5Gui.E5ListSelectionDialog.html#E5ListSelectionDialog.__init__" />
       <keyword name="E5ListSelectionDialog (Module)" id="E5ListSelectionDialog (Module)" ref="eric6.E5Gui.E5ListSelectionDialog.html" />
       <keyword name="E5ListSelectionDialog.getSelection" id="E5ListSelectionDialog.getSelection" ref="eric6.E5Gui.E5ListSelectionDialog.html#E5ListSelectionDialog.getSelection" />
+      <keyword name="E5ListSelectionDialog.on_selectionList_itemChanged" id="E5ListSelectionDialog.on_selectionList_itemChanged" ref="eric6.E5Gui.E5ListSelectionDialog.html#E5ListSelectionDialog.on_selectionList_itemChanged" />
       <keyword name="E5ListSelectionDialog.on_selectionList_itemSelectionChanged" id="E5ListSelectionDialog.on_selectionList_itemSelectionChanged" ref="eric6.E5Gui.E5ListSelectionDialog.html#E5ListSelectionDialog.on_selectionList_itemSelectionChanged" />
       <keyword name="E5ListView" id="E5ListView" ref="eric6.E5Gui.E5ListView.html#E5ListView" />
       <keyword name="E5ListView (Module)" id="E5ListView (Module)" ref="eric6.E5Gui.E5ListView.html" />
@@ -4742,6 +4747,16 @@
       <keyword name="E5PathPickerBase.setWindowTitle" id="E5PathPickerBase.setWindowTitle" ref="eric6.E5Gui.E5PathPicker.html#E5PathPickerBase.setWindowTitle" />
       <keyword name="E5PathPickerBase.text" id="E5PathPickerBase.text" ref="eric6.E5Gui.E5PathPicker.html#E5PathPickerBase.text" />
       <keyword name="E5PathPickerBase.windowTitle" id="E5PathPickerBase.windowTitle" ref="eric6.E5Gui.E5PathPicker.html#E5PathPickerBase.windowTitle" />
+      <keyword name="E5PathPickerDialog" id="E5PathPickerDialog" ref="eric6.E5Gui.E5PathPickerDialog.html#E5PathPickerDialog" />
+      <keyword name="E5PathPickerDialog (Constructor)" id="E5PathPickerDialog (Constructor)" ref="eric6.E5Gui.E5PathPickerDialog.html#E5PathPickerDialog.__init__" />
+      <keyword name="E5PathPickerDialog (Module)" id="E5PathPickerDialog (Module)" ref="eric6.E5Gui.E5PathPickerDialog.html" />
+      <keyword name="E5PathPickerDialog.getPath" id="E5PathPickerDialog.getPath" ref="eric6.E5Gui.E5PathPickerDialog.html#E5PathPickerDialog.getPath" />
+      <keyword name="E5PathPickerDialog.setDefaultDirectory" id="E5PathPickerDialog.setDefaultDirectory" ref="eric6.E5Gui.E5PathPickerDialog.html#E5PathPickerDialog.setDefaultDirectory" />
+      <keyword name="E5PathPickerDialog.setLabelText" id="E5PathPickerDialog.setLabelText" ref="eric6.E5Gui.E5PathPickerDialog.html#E5PathPickerDialog.setLabelText" />
+      <keyword name="E5PathPickerDialog.setPickerFilters" id="E5PathPickerDialog.setPickerFilters" ref="eric6.E5Gui.E5PathPickerDialog.html#E5PathPickerDialog.setPickerFilters" />
+      <keyword name="E5PathPickerDialog.setPickerMode" id="E5PathPickerDialog.setPickerMode" ref="eric6.E5Gui.E5PathPickerDialog.html#E5PathPickerDialog.setPickerMode" />
+      <keyword name="E5PathPickerDialog.setPickerPath" id="E5PathPickerDialog.setPickerPath" ref="eric6.E5Gui.E5PathPickerDialog.html#E5PathPickerDialog.setPickerPath" />
+      <keyword name="E5PathPickerDialog.setTitle" id="E5PathPickerDialog.setTitle" ref="eric6.E5Gui.E5PathPickerDialog.html#E5PathPickerDialog.setTitle" />
       <keyword name="E5PathPickerModes" id="E5PathPickerModes" ref="eric6.E5Gui.E5PathPicker.html#E5PathPickerModes" />
       <keyword name="E5ProgressDialog" id="E5ProgressDialog" ref="eric6.E5Gui.E5ProgressDialog.html#E5ProgressDialog" />
       <keyword name="E5ProgressDialog (Constructor)" id="E5ProgressDialog (Constructor)" ref="eric6.E5Gui.E5ProgressDialog.html#E5ProgressDialog.__init__" />
@@ -9786,6 +9801,17 @@
       <keyword name="IExplorerImporter.setPath" id="IExplorerImporter.setPath" ref="eric6.Helpviewer.Bookmarks.BookmarksImporters.IExplorerImporter.html#IExplorerImporter.setPath" />
       <keyword name="IExplorerImporter.setPath" id="IExplorerImporter.setPath" ref="eric6.WebBrowser.Bookmarks.BookmarksImporters.IExplorerImporter.html#IExplorerImporter.setPath" />
       <keyword name="IRC (Package)" id="IRC (Package)" ref="index-eric6.Network.IRC.html" />
+      <keyword name="IbmWatsonEngine" id="IbmWatsonEngine" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.html#IbmWatsonEngine" />
+      <keyword name="IbmWatsonEngine (Constructor)" id="IbmWatsonEngine (Constructor)" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.html#IbmWatsonEngine.__init__" />
+      <keyword name="IbmWatsonEngine (Module)" id="IbmWatsonEngine (Module)" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.html" />
+      <keyword name="IbmWatsonEngine.__adjustLanguageCode" id="IbmWatsonEngine.__adjustLanguageCode" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.html#IbmWatsonEngine.__adjustLanguageCode" />
+      <keyword name="IbmWatsonEngine.__getTranslationModels" id="IbmWatsonEngine.__getTranslationModels" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.html#IbmWatsonEngine.__getTranslationModels" />
+      <keyword name="IbmWatsonEngine.__getTranslationModelsReplyFinished" id="IbmWatsonEngine.__getTranslationModelsReplyFinished" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.html#IbmWatsonEngine.__getTranslationModelsReplyFinished" />
+      <keyword name="IbmWatsonEngine.engineName" id="IbmWatsonEngine.engineName" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.html#IbmWatsonEngine.engineName" />
+      <keyword name="IbmWatsonEngine.getTranslation" id="IbmWatsonEngine.getTranslation" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.html#IbmWatsonEngine.getTranslation" />
+      <keyword name="IbmWatsonEngine.hasTTS" id="IbmWatsonEngine.hasTTS" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.html#IbmWatsonEngine.hasTTS" />
+      <keyword name="IbmWatsonEngine.supportedLanguages" id="IbmWatsonEngine.supportedLanguages" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.html#IbmWatsonEngine.supportedLanguages" />
+      <keyword name="IbmWatsonEngine.supportedTargetLanguages" id="IbmWatsonEngine.supportedTargetLanguages" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.html#IbmWatsonEngine.supportedTargetLanguages" />
       <keyword name="IconEditCommand" id="IconEditCommand" ref="eric6.IconEditor.IconEditorGrid.html#IconEditCommand" />
       <keyword name="IconEditCommand (Constructor)" id="IconEditCommand (Constructor)" ref="eric6.IconEditor.IconEditorGrid.html#IconEditCommand.__init__" />
       <keyword name="IconEditCommand.redo" id="IconEditCommand.redo" ref="eric6.IconEditor.IconEditorGrid.html#IconEditCommand.redo" />
@@ -9918,6 +9944,39 @@
       <keyword name="IconsPreviewDialog" id="IconsPreviewDialog" ref="eric6.Preferences.ConfigurationPages.IconsPreviewDialog.html#IconsPreviewDialog" />
       <keyword name="IconsPreviewDialog (Constructor)" id="IconsPreviewDialog (Constructor)" ref="eric6.Preferences.ConfigurationPages.IconsPreviewDialog.html#IconsPreviewDialog.__init__" />
       <keyword name="IconsPreviewDialog (Module)" id="IconsPreviewDialog (Module)" ref="eric6.Preferences.ConfigurationPages.IconsPreviewDialog.html" />
+      <keyword name="IdlCompilerDefineNameDialog" id="IdlCompilerDefineNameDialog" ref="eric6.Project.IdlCompilerDefineNameDialog.html#IdlCompilerDefineNameDialog" />
+      <keyword name="IdlCompilerDefineNameDialog (Constructor)" id="IdlCompilerDefineNameDialog (Constructor)" ref="eric6.Project.IdlCompilerDefineNameDialog.html#IdlCompilerDefineNameDialog.__init__" />
+      <keyword name="IdlCompilerDefineNameDialog (Module)" id="IdlCompilerDefineNameDialog (Module)" ref="eric6.Project.IdlCompilerDefineNameDialog.html" />
+      <keyword name="IdlCompilerDefineNameDialog.__updateOkButton" id="IdlCompilerDefineNameDialog.__updateOkButton" ref="eric6.Project.IdlCompilerDefineNameDialog.html#IdlCompilerDefineNameDialog.__updateOkButton" />
+      <keyword name="IdlCompilerDefineNameDialog.getData" id="IdlCompilerDefineNameDialog.getData" ref="eric6.Project.IdlCompilerDefineNameDialog.html#IdlCompilerDefineNameDialog.getData" />
+      <keyword name="IdlCompilerDefineNameDialog.on_nameEdit_textChanged" id="IdlCompilerDefineNameDialog.on_nameEdit_textChanged" ref="eric6.Project.IdlCompilerDefineNameDialog.html#IdlCompilerDefineNameDialog.on_nameEdit_textChanged" />
+      <keyword name="IdlCompilerOptionsDialog" id="IdlCompilerOptionsDialog" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog" />
+      <keyword name="IdlCompilerOptionsDialog (Constructor)" id="IdlCompilerOptionsDialog (Constructor)" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.__init__" />
+      <keyword name="IdlCompilerOptionsDialog (Module)" id="IdlCompilerOptionsDialog (Module)" ref="eric6.Project.IdlCompilerOptionsDialog.html" />
+      <keyword name="IdlCompilerOptionsDialog.__definedNamesContain" id="IdlCompilerOptionsDialog.__definedNamesContain" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.__definedNamesContain" />
+      <keyword name="IdlCompilerOptionsDialog.__generateDefinedNamesList" id="IdlCompilerOptionsDialog.__generateDefinedNamesList" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.__generateDefinedNamesList" />
+      <keyword name="IdlCompilerOptionsDialog.__generateIncludeDirectoriesList" id="IdlCompilerOptionsDialog.__generateIncludeDirectoriesList" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.__generateIncludeDirectoriesList" />
+      <keyword name="IdlCompilerOptionsDialog.__generateUndefinedNamesList" id="IdlCompilerOptionsDialog.__generateUndefinedNamesList" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.__generateUndefinedNamesList" />
+      <keyword name="IdlCompilerOptionsDialog.__includeDirectoriesContain" id="IdlCompilerOptionsDialog.__includeDirectoriesContain" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.__includeDirectoriesContain" />
+      <keyword name="IdlCompilerOptionsDialog.__populateDefineNamesList" id="IdlCompilerOptionsDialog.__populateDefineNamesList" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.__populateDefineNamesList" />
+      <keyword name="IdlCompilerOptionsDialog.__populateIncludeDirectoriesList" id="IdlCompilerOptionsDialog.__populateIncludeDirectoriesList" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.__populateIncludeDirectoriesList" />
+      <keyword name="IdlCompilerOptionsDialog.__undefinedNamesContain" id="IdlCompilerOptionsDialog.__undefinedNamesContain" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.__undefinedNamesContain" />
+      <keyword name="IdlCompilerOptionsDialog.__updateDefineNameButtons" id="IdlCompilerOptionsDialog.__updateDefineNameButtons" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.__updateDefineNameButtons" />
+      <keyword name="IdlCompilerOptionsDialog.__updateIncludeDirectoryButtons" id="IdlCompilerOptionsDialog.__updateIncludeDirectoryButtons" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.__updateIncludeDirectoryButtons" />
+      <keyword name="IdlCompilerOptionsDialog.__updateUndefineNameButtons" id="IdlCompilerOptionsDialog.__updateUndefineNameButtons" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.__updateUndefineNameButtons" />
+      <keyword name="IdlCompilerOptionsDialog.getData" id="IdlCompilerOptionsDialog.getData" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.getData" />
+      <keyword name="IdlCompilerOptionsDialog.on_dnAddButton_clicked" id="IdlCompilerOptionsDialog.on_dnAddButton_clicked" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.on_dnAddButton_clicked" />
+      <keyword name="IdlCompilerOptionsDialog.on_dnDeleteButton_clicked" id="IdlCompilerOptionsDialog.on_dnDeleteButton_clicked" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.on_dnDeleteButton_clicked" />
+      <keyword name="IdlCompilerOptionsDialog.on_dnEditButton_clicked" id="IdlCompilerOptionsDialog.on_dnEditButton_clicked" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.on_dnEditButton_clicked" />
+      <keyword name="IdlCompilerOptionsDialog.on_dnList_itemSelectionChanged" id="IdlCompilerOptionsDialog.on_dnList_itemSelectionChanged" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.on_dnList_itemSelectionChanged" />
+      <keyword name="IdlCompilerOptionsDialog.on_idAddButton_clicked" id="IdlCompilerOptionsDialog.on_idAddButton_clicked" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.on_idAddButton_clicked" />
+      <keyword name="IdlCompilerOptionsDialog.on_idDeleteButton_clicked" id="IdlCompilerOptionsDialog.on_idDeleteButton_clicked" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.on_idDeleteButton_clicked" />
+      <keyword name="IdlCompilerOptionsDialog.on_idEditButton_clicked" id="IdlCompilerOptionsDialog.on_idEditButton_clicked" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.on_idEditButton_clicked" />
+      <keyword name="IdlCompilerOptionsDialog.on_idList_itemSelectionChanged" id="IdlCompilerOptionsDialog.on_idList_itemSelectionChanged" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.on_idList_itemSelectionChanged" />
+      <keyword name="IdlCompilerOptionsDialog.on_unAddButton_clicked" id="IdlCompilerOptionsDialog.on_unAddButton_clicked" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.on_unAddButton_clicked" />
+      <keyword name="IdlCompilerOptionsDialog.on_unDeleteButton_clicked" id="IdlCompilerOptionsDialog.on_unDeleteButton_clicked" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.on_unDeleteButton_clicked" />
+      <keyword name="IdlCompilerOptionsDialog.on_unEditButton_clicked" id="IdlCompilerOptionsDialog.on_unEditButton_clicked" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.on_unEditButton_clicked" />
+      <keyword name="IdlCompilerOptionsDialog.on_unList_itemSelectionChanged" id="IdlCompilerOptionsDialog.on_unList_itemSelectionChanged" ref="eric6.Project.IdlCompilerOptionsDialog.html#IdlCompilerOptionsDialog.on_unList_itemSelectionChanged" />
       <keyword name="ImageMarkupDialog" id="ImageMarkupDialog" ref="eric6.QScintilla.MarkupProviders.ImageMarkupDialog.html#ImageMarkupDialog" />
       <keyword name="ImageMarkupDialog (Constructor)" id="ImageMarkupDialog (Constructor)" ref="eric6.QScintilla.MarkupProviders.ImageMarkupDialog.html#ImageMarkupDialog.__init__" />
       <keyword name="ImageMarkupDialog (Module)" id="ImageMarkupDialog (Module)" ref="eric6.QScintilla.MarkupProviders.ImageMarkupDialog.html" />
@@ -12627,6 +12686,7 @@
       <keyword name="Project.getVcs" id="Project.getVcs" ref="eric6.Project.Project.html#Project.getVcs" />
       <keyword name="Project.handleApplicationDiagram" id="Project.handleApplicationDiagram" ref="eric6.Project.Project.html#Project.handleApplicationDiagram" />
       <keyword name="Project.handlePreferencesChanged" id="Project.handlePreferencesChanged" ref="eric6.Project.Project.html#Project.handlePreferencesChanged" />
+      <keyword name="Project.hasDefaultIdlCompilerParameters" id="Project.hasDefaultIdlCompilerParameters" ref="eric6.Project.Project.html#Project.hasDefaultIdlCompilerParameters" />
       <keyword name="Project.hasDefaultMakeParameters" id="Project.hasDefaultMakeParameters" ref="eric6.Project.Project.html#Project.hasDefaultMakeParameters" />
       <keyword name="Project.hasEntry" id="Project.hasEntry" ref="eric6.Project.Project.html#Project.hasEntry" />
       <keyword name="Project.hasProjectType" id="Project.hasProjectType" ref="eric6.Project.Project.html#Project.hasProjectType" />
@@ -12746,7 +12806,6 @@
       <keyword name="ProjectBrowser.handleEditorChanged" id="ProjectBrowser.handleEditorChanged" ref="eric6.Project.ProjectBrowser.html#ProjectBrowser.handleEditorChanged" />
       <keyword name="ProjectBrowser.handleEditorLineChanged" id="ProjectBrowser.handleEditorLineChanged" ref="eric6.Project.ProjectBrowser.html#ProjectBrowser.handleEditorLineChanged" />
       <keyword name="ProjectBrowser.handlePreferencesChanged" id="ProjectBrowser.handlePreferencesChanged" ref="eric6.Project.ProjectBrowser.html#ProjectBrowser.handlePreferencesChanged" />
-      <keyword name="ProjectBrowser.showEvent" id="ProjectBrowser.showEvent" ref="eric6.Project.ProjectBrowser.html#ProjectBrowser.showEvent" />
       <keyword name="ProjectBrowserDirectoryItem" id="ProjectBrowserDirectoryItem" ref="eric6.Project.ProjectBrowserModel.html#ProjectBrowserDirectoryItem" />
       <keyword name="ProjectBrowserDirectoryItem (Constructor)" id="ProjectBrowserDirectoryItem (Constructor)" ref="eric6.Project.ProjectBrowserModel.html#ProjectBrowserDirectoryItem.__init__" />
       <keyword name="ProjectBrowserFileItem" id="ProjectBrowserFileItem" ref="eric6.Project.ProjectBrowserModel.html#ProjectBrowserFileItem" />
@@ -12868,6 +12927,7 @@
       <keyword name="ProjectInterfacesBrowser.__compileInterface" id="ProjectInterfacesBrowser.__compileInterface" ref="eric6.Project.ProjectInterfacesBrowser.html#ProjectInterfacesBrowser.__compileInterface" />
       <keyword name="ProjectInterfacesBrowser.__compileSelectedInterfaces" id="ProjectInterfacesBrowser.__compileSelectedInterfaces" ref="eric6.Project.ProjectInterfacesBrowser.html#ProjectInterfacesBrowser.__compileSelectedInterfaces" />
       <keyword name="ProjectInterfacesBrowser.__configureCorba" id="ProjectInterfacesBrowser.__configureCorba" ref="eric6.Project.ProjectInterfacesBrowser.html#ProjectInterfacesBrowser.__configureCorba" />
+      <keyword name="ProjectInterfacesBrowser.__configureIdlCompiler" id="ProjectInterfacesBrowser.__configureIdlCompiler" ref="eric6.Project.ProjectInterfacesBrowser.html#ProjectInterfacesBrowser.__configureIdlCompiler" />
       <keyword name="ProjectInterfacesBrowser.__deleteFile" id="ProjectInterfacesBrowser.__deleteFile" ref="eric6.Project.ProjectInterfacesBrowser.html#ProjectInterfacesBrowser.__deleteFile" />
       <keyword name="ProjectInterfacesBrowser.__readStderr" id="ProjectInterfacesBrowser.__readStderr" ref="eric6.Project.ProjectInterfacesBrowser.html#ProjectInterfacesBrowser.__readStderr" />
       <keyword name="ProjectInterfacesBrowser.__readStdout" id="ProjectInterfacesBrowser.__readStdout" ref="eric6.Project.ProjectInterfacesBrowser.html#ProjectInterfacesBrowser.__readStdout" />
@@ -16244,6 +16304,7 @@
       <keyword name="TranslationEngine.getTranslation" id="TranslationEngine.getTranslation" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.TranslationEngine.html#TranslationEngine.getTranslation" />
       <keyword name="TranslationEngine.hasTTS" id="TranslationEngine.hasTTS" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.TranslationEngine.html#TranslationEngine.hasTTS" />
       <keyword name="TranslationEngine.supportedLanguages" id="TranslationEngine.supportedLanguages" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.TranslationEngine.html#TranslationEngine.supportedLanguages" />
+      <keyword name="TranslationEngine.supportedTargetLanguages" id="TranslationEngine.supportedTargetLanguages" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.TranslationEngine.html#TranslationEngine.supportedTargetLanguages" />
       <keyword name="TranslationPropertiesDialog" id="TranslationPropertiesDialog" ref="eric6.Project.TranslationPropertiesDialog.html#TranslationPropertiesDialog" />
       <keyword name="TranslationPropertiesDialog (Constructor)" id="TranslationPropertiesDialog (Constructor)" ref="eric6.Project.TranslationPropertiesDialog.html#TranslationPropertiesDialog.__init__" />
       <keyword name="TranslationPropertiesDialog (Module)" id="TranslationPropertiesDialog (Module)" ref="eric6.Project.TranslationPropertiesDialog.html" />
@@ -16312,7 +16373,9 @@
       <keyword name="TranslatorWidget" id="TranslatorWidget" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html#TranslatorWidget" />
       <keyword name="TranslatorWidget (Constructor)" id="TranslatorWidget (Constructor)" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html#TranslatorWidget.__init__" />
       <keyword name="TranslatorWidget (Module)" id="TranslatorWidget (Module)" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html" />
+      <keyword name="TranslatorWidget.__availableTranslationsLoaded" id="TranslatorWidget.__availableTranslationsLoaded" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html#TranslatorWidget.__availableTranslationsLoaded" />
       <keyword name="TranslatorWidget.__engineComboBoxCurrentIndexChanged" id="TranslatorWidget.__engineComboBoxCurrentIndexChanged" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html#TranslatorWidget.__engineComboBoxCurrentIndexChanged" />
+      <keyword name="TranslatorWidget.__ensureTranslationEngineReady" id="TranslatorWidget.__ensureTranslationEngineReady" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html#TranslatorWidget.__ensureTranslationEngineReady" />
       <keyword name="TranslatorWidget.__mediaPlayerStateChanged" id="TranslatorWidget.__mediaPlayerStateChanged" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html#TranslatorWidget.__mediaPlayerStateChanged" />
       <keyword name="TranslatorWidget.__originalLanguage" id="TranslatorWidget.__originalLanguage" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html#TranslatorWidget.__originalLanguage" />
       <keyword name="TranslatorWidget.__pronounce" id="TranslatorWidget.__pronounce" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html#TranslatorWidget.__pronounce" />
@@ -16322,6 +16385,7 @@
       <keyword name="TranslatorWidget.__updateEngines" id="TranslatorWidget.__updateEngines" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html#TranslatorWidget.__updateEngines" />
       <keyword name="TranslatorWidget.__updateLanguages" id="TranslatorWidget.__updateLanguages" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html#TranslatorWidget.__updateLanguages" />
       <keyword name="TranslatorWidget.__updatePronounceButtons" id="TranslatorWidget.__updatePronounceButtons" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html#TranslatorWidget.__updatePronounceButtons" />
+      <keyword name="TranslatorWidget.__updateTranslateButton" id="TranslatorWidget.__updateTranslateButton" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html#TranslatorWidget.__updateTranslateButton" />
       <keyword name="TranslatorWidget.on_clearButton_clicked" id="TranslatorWidget.on_clearButton_clicked" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html#TranslatorWidget.on_clearButton_clicked" />
       <keyword name="TranslatorWidget.on_origEdit_textChanged" id="TranslatorWidget.on_origEdit_textChanged" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html#TranslatorWidget.on_origEdit_textChanged" />
       <keyword name="TranslatorWidget.on_origLanguageComboBox_currentIndexChanged" id="TranslatorWidget.on_origLanguageComboBox_currentIndexChanged" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html#TranslatorWidget.on_origLanguageComboBox_currentIndexChanged" />
@@ -16857,6 +16921,7 @@
       <keyword name="UserInterface.dropEvent" id="UserInterface.dropEvent" ref="eric6.UI.UserInterface.html#UserInterface.dropEvent" />
       <keyword name="UserInterface.getActions" id="UserInterface.getActions" ref="eric6.UI.UserInterface.html#UserInterface.getActions" />
       <keyword name="UserInterface.getHelpViewer" id="UserInterface.getHelpViewer" ref="eric6.UI.UserInterface.html#UserInterface.getHelpViewer" />
+      <keyword name="UserInterface.getLayoutType" id="UserInterface.getLayoutType" ref="eric6.UI.UserInterface.html#UserInterface.getLayoutType" />
       <keyword name="UserInterface.getLocale" id="UserInterface.getLocale" ref="eric6.UI.UserInterface.html#UserInterface.getLocale" />
       <keyword name="UserInterface.getMenu" id="UserInterface.getMenu" ref="eric6.UI.UserInterface.html#UserInterface.getMenu" />
       <keyword name="UserInterface.getMenuAction" id="UserInterface.getMenuAction" ref="eric6.UI.UserInterface.html#UserInterface.getMenuAction" />
@@ -17812,6 +17877,8 @@
       <keyword name="WebBrowserView.__openLinkInNewWindow" id="WebBrowserView.__openLinkInNewWindow" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.__openLinkInNewWindow" />
       <keyword name="WebBrowserView.__pauseMedia" id="WebBrowserView.__pauseMedia" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.__pauseMedia" />
       <keyword name="WebBrowserView.__printPage" id="WebBrowserView.__printPage" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.__printPage" />
+      <keyword name="WebBrowserView.__quotaRequested" id="WebBrowserView.__quotaRequested" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.__quotaRequested" />
+      <keyword name="WebBrowserView.__registerProtocolHandlerRequested" id="WebBrowserView.__registerProtocolHandlerRequested" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.__registerProtocolHandlerRequested" />
       <keyword name="WebBrowserView.__reloadAllSpeedDials" id="WebBrowserView.__reloadAllSpeedDials" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.__reloadAllSpeedDials" />
       <keyword name="WebBrowserView.__renderPreview" id="WebBrowserView.__renderPreview" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.__renderPreview" />
       <keyword name="WebBrowserView.__renderProcessTerminated" id="WebBrowserView.__renderProcessTerminated" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.__renderProcessTerminated" />
@@ -18808,6 +18875,7 @@
       <keyword name="getOpenFileNames" id="getOpenFileNames" ref="eric6.E5Gui.E5FileDialog.html#getOpenFileNames" />
       <keyword name="getOpenFileNamesAndFilter" id="getOpenFileNamesAndFilter" ref="eric6.E5Gui.E5FileDialog.html#getOpenFileNamesAndFilter" />
       <keyword name="getOpenSearchLinks" id="getOpenSearchLinks" ref="eric6.WebBrowser.Tools.Scripts.html#getOpenSearchLinks" />
+      <keyword name="getPath" id="getPath" ref="eric6.E5Gui.E5PathPickerDialog.html#getPath" />
       <keyword name="getPercentReplacement" id="getPercentReplacement" ref="eric6.Utilities.__init__.html#getPercentReplacement" />
       <keyword name="getPercentReplacementHelp" id="getPercentReplacementHelp" ref="eric6.Utilities.__init__.html#getPercentReplacementHelp" />
       <keyword name="getPixmap" id="getPixmap" ref="eric6.UI.PixmapCache.html#getPixmap" />
@@ -18853,7 +18921,6 @@
       <keyword name="getTypeFromTypeName" id="getTypeFromTypeName" ref="eric6.Utilities.ModuleParser.html#getTypeFromTypeName" />
       <keyword name="getUI" id="getUI" ref="eric6.Preferences.__init__.html#getUI" />
       <keyword name="getUILanguage" id="getUILanguage" ref="eric6.Preferences.__init__.html#getUILanguage" />
-      <keyword name="getUILayout" id="getUILayout" ref="eric6.Preferences.__init__.html#getUILayout" />
       <keyword name="getUser" id="getUser" ref="eric6.Preferences.__init__.html#getUser" />
       <keyword name="getUserName" id="getUserName" ref="eric6.Utilities.__init__.html#getUserName" />
       <keyword name="getVCS" id="getVCS" ref="eric6.Preferences.__init__.html#getVCS" />
@@ -19181,7 +19248,6 @@
       <keyword name="setTrayStarter" id="setTrayStarter" ref="eric6.Preferences.__init__.html#setTrayStarter" />
       <keyword name="setUI" id="setUI" ref="eric6.Preferences.__init__.html#setUI" />
       <keyword name="setUILanguage" id="setUILanguage" ref="eric6.Preferences.__init__.html#setUILanguage" />
-      <keyword name="setUILayout" id="setUILayout" ref="eric6.Preferences.__init__.html#setUILayout" />
       <keyword name="setUser" id="setUser" ref="eric6.Preferences.__init__.html#setUser" />
       <keyword name="setVCS" id="setVCS" ref="eric6.Preferences.__init__.html#setVCS" />
       <keyword name="setVarFilters" id="setVarFilters" ref="eric6.Preferences.__init__.html#setVarFilters" />
@@ -19366,6 +19432,7 @@
       <file>eric6.E5Gui.E5PassivePopup.html</file>
       <file>eric6.E5Gui.E5PasswordMeter.html</file>
       <file>eric6.E5Gui.E5PathPicker.html</file>
+      <file>eric6.E5Gui.E5PathPickerDialog.html</file>
       <file>eric6.E5Gui.E5ProgressDialog.html</file>
       <file>eric6.E5Gui.E5SideBar.html</file>
       <file>eric6.E5Gui.E5SimpleHelpDialog.html</file>
@@ -19718,6 +19785,7 @@
       <file>eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.GlosbeEngine.html</file>
       <file>eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.GoogleV1Engine.html</file>
       <file>eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.GoogleV2Engine.html</file>
+      <file>eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.html</file>
       <file>eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.MicrosoftEngine.html</file>
       <file>eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.MyMemoryEngine.html</file>
       <file>eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.PromtEngine.html</file>
@@ -20048,6 +20116,8 @@
       <file>eric6.Project.CreateDialogCodeDialog.html</file>
       <file>eric6.Project.DebuggerPropertiesDialog.html</file>
       <file>eric6.Project.FiletypeAssociationDialog.html</file>
+      <file>eric6.Project.IdlCompilerDefineNameDialog.html</file>
+      <file>eric6.Project.IdlCompilerOptionsDialog.html</file>
       <file>eric6.Project.LexerAssociationDialog.html</file>
       <file>eric6.Project.MakePropertiesDialog.html</file>
       <file>eric6.Project.NewDialogClassDialog.html</file>
--- a/Documentation/Source/eric6.Debugger.DebugServer.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/eric6.Debugger.DebugServer.html	Wed Aug 01 19:43:34 2018 +0200
@@ -352,6 +352,9 @@
 <td><a href="#DebugServer.isConnected">isConnected</a></td>
 <td>Public method to test, if the debug server is connected to a backend.</td>
 </tr><tr>
+<td><a href="#DebugServer.isDebugging">isDebugging</a></td>
+<td>Public method to test, if the debug server is debugging.</td>
+</tr><tr>
 <td><a href="#DebugServer.passiveStartUp">passiveStartUp</a></td>
 <td>Public method to handle a passive debug connection.</td>
 </tr><tr>
@@ -439,6 +442,9 @@
 <td><a href="#DebugServer.setCallTraceEnabled">setCallTraceEnabled</a></td>
 <td>Public method to set the call trace state.</td>
 </tr><tr>
+<td><a href="#DebugServer.setDebugging">setDebugging</a></td>
+<td>Public method to set the debugging state.</td>
+</tr><tr>
 <td><a href="#DebugServer.shutdownServer">shutdownServer</a></td>
 <td>Public method to cleanly shut down.</td>
 </tr><tr>
@@ -1122,6 +1128,21 @@
 <dd>
 flag indicating a connection (boolean)
 </dd>
+</dl><a NAME="DebugServer.isDebugging" ID="DebugServer.isDebugging"></a>
+<h4>DebugServer.isDebugging</h4>
+<b>isDebugging</b>(<i></i>)
+<p>
+        Public method to test, if the debug server is debugging.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating the debugging state
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
 </dl><a NAME="DebugServer.passiveStartUp" ID="DebugServer.passiveStartUp"></a>
 <h4>DebugServer.passiveStartUp</h4>
 <b>passiveStartUp</b>(<i>fn, exc</i>)
@@ -1570,6 +1591,16 @@
 <dd>
 flag indicating to enable the call trace function (boolean)
 </dd>
+</dl><a NAME="DebugServer.setDebugging" ID="DebugServer.setDebugging"></a>
+<h4>DebugServer.setDebugging</h4>
+<b>setDebugging</b>(<i>on</i>)
+<p>
+        Public method to set the debugging state.
+</p><dl>
+<dt><i>on</i> (bool)</dt>
+<dd>
+flag indicating the new debugging state
+</dd>
 </dl><a NAME="DebugServer.shutdownServer" ID="DebugServer.shutdownServer"></a>
 <h4>DebugServer.shutdownServer</h4>
 <b>shutdownServer</b>(<i></i>)
--- a/Documentation/Source/eric6.Debugger.DebugViewer.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/eric6.Debugger.DebugViewer.html	Wed Aug 01 19:43:34 2018 +0200
@@ -108,9 +108,6 @@
 <td><a href="#DebugViewer.handleDebuggingStarted">handleDebuggingStarted</a></td>
 <td>Public slot to handle the start of a debugging session.</td>
 </tr><tr>
-<td><a href="#DebugViewer.handleRawInput">handleRawInput</a></td>
-<td>Public slot to handle the switch to the shell in raw input mode.</td>
-</tr><tr>
 <td><a href="#DebugViewer.handleResetUI">handleResetUI</a></td>
 <td>Public method to reset the SBVviewer.</td>
 </tr><tr>
@@ -123,12 +120,6 @@
 <td><a href="#DebugViewer.preferencesChanged">preferencesChanged</a></td>
 <td>Public slot to handle the preferencesChanged signal.</td>
 </tr><tr>
-<td><a href="#DebugViewer.restoreCurrentPage">restoreCurrentPage</a></td>
-<td>Public slot to restore the previously saved page.</td>
-</tr><tr>
-<td><a href="#DebugViewer.saveCurrentPage">saveCurrentPage</a></td>
-<td>Public slot to save the current page.</td>
-</tr><tr>
 <td><a href="#DebugViewer.setCallTraceToProjectMode">setCallTraceToProjectMode</a></td>
 <td>Public slot to set the call trace viewer to project mode.</td>
 </tr><tr>
@@ -166,7 +157,7 @@
 </table>
 <a NAME="DebugViewer.__init__" ID="DebugViewer.__init__"></a>
 <h4>DebugViewer (Constructor)</h4>
-<b>DebugViewer</b>(<i>debugServer, docked, vm, parent=None, embeddedShell=True, embeddedBrowser=True</i>)
+<b>DebugViewer</b>(<i>debugServer, docked, vm, parent=None</i>)
 <p>
         Constructor
 </p><dl>
@@ -182,17 +173,6 @@
 </dd><dt><i>parent</i></dt>
 <dd>
 parent widget (QWidget)
-</dd><dt><i>embeddedShell</i></dt>
-<dd>
-flag indicating whether the shell should be
-            included. This flag is set to False by those layouts, that have
-            the interpreter shell in a separate window.
-</dd><dt><i>embeddedBrowser</i></dt>
-<dd>
-flag indicating whether the file browser should
-            be included. This flag is set to False by those layouts, that
-            have the file browser in a separate window or embedded
-            in the project browser instead.
 </dd>
 </dl><a NAME="DebugViewer.__callStackFrameSelected" ID="DebugViewer.__callStackFrameSelected"></a>
 <h4>DebugViewer.__callStackFrameSelected</h4>
@@ -268,11 +248,6 @@
         Public slot to handle the start of a debugging session.
 </p><p>
         This slot sets the variables filter expressions.
-</p><a NAME="DebugViewer.handleRawInput" ID="DebugViewer.handleRawInput"></a>
-<h4>DebugViewer.handleRawInput</h4>
-<b>handleRawInput</b>(<i></i>)
-<p>
-        Public slot to handle the switch to the shell in raw input mode.
 </p><a NAME="DebugViewer.handleResetUI" ID="DebugViewer.handleResetUI"></a>
 <h4>DebugViewer.handleResetUI</h4>
 <b>handleResetUI</b>(<i></i>)
@@ -303,16 +278,6 @@
 <b>preferencesChanged</b>(<i></i>)
 <p>
         Public slot to handle the preferencesChanged signal.
-</p><a NAME="DebugViewer.restoreCurrentPage" ID="DebugViewer.restoreCurrentPage"></a>
-<h4>DebugViewer.restoreCurrentPage</h4>
-<b>restoreCurrentPage</b>(<i></i>)
-<p>
-        Public slot to restore the previously saved page.
-</p><a NAME="DebugViewer.saveCurrentPage" ID="DebugViewer.saveCurrentPage"></a>
-<h4>DebugViewer.saveCurrentPage</h4>
-<b>saveCurrentPage</b>(<i></i>)
-<p>
-        Public slot to save the current page.
 </p><a NAME="DebugViewer.setCallTraceToProjectMode" ID="DebugViewer.setCallTraceToProjectMode"></a>
 <h4>DebugViewer.setCallTraceToProjectMode</h4>
 <b>setCallTraceToProjectMode</b>(<i>enabled</i>)
--- a/Documentation/Source/eric6.E5Gui.E5ListSelectionDialog.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/eric6.E5Gui.E5ListSelectionDialog.html	Wed Aug 01 19:43:34 2018 +0200
@@ -63,6 +63,9 @@
 <td><a href="#E5ListSelectionDialog.getSelection">getSelection</a></td>
 <td>Public method to retrieve the selected items.</td>
 </tr><tr>
+<td><a href="#E5ListSelectionDialog.on_selectionList_itemChanged">on_selectionList_itemChanged</a></td>
+<td>Private slot handling a change of an item.</td>
+</tr><tr>
 <td><a href="#E5ListSelectionDialog.on_selectionList_itemSelectionChanged">on_selectionList_itemSelectionChanged</a></td>
 <td>Private slot handling a change of the selection.</td>
 </tr>
@@ -73,7 +76,7 @@
 </table>
 <a NAME="E5ListSelectionDialog.__init__" ID="E5ListSelectionDialog.__init__"></a>
 <h4>E5ListSelectionDialog (Constructor)</h4>
-<b>E5ListSelectionDialog</b>(<i>entries, selectionMode=QAbstractItemView.ExtendedSelection, title="", message="", parent=None</i>)
+<b>E5ListSelectionDialog</b>(<i>entries, selectionMode=QAbstractItemView.ExtendedSelection, title="", message="", checkBoxSelection=False, parent=None</i>)
 <p>
         Constructor
 </p><dl>
@@ -89,6 +92,10 @@
 </dd><dt><i>message</i> (str)</dt>
 <dd>
 message to be show in the dialog
+</dd><dt><i>checkBoxSelection</i> (bool)</dt>
+<dd>
+flag indicating to select items via their
+            checkbox
 </dd><dt><i>parent</i> (QWidget)</dt>
 <dd>
 reference to the parent widget
@@ -108,6 +115,16 @@
 <dd>
 list of str
 </dd>
+</dl><a NAME="E5ListSelectionDialog.on_selectionList_itemChanged" ID="E5ListSelectionDialog.on_selectionList_itemChanged"></a>
+<h4>E5ListSelectionDialog.on_selectionList_itemChanged</h4>
+<b>on_selectionList_itemChanged</b>(<i>itm</i>)
+<p>
+        Private slot handling a change of an item.
+</p><dl>
+<dt><i>itm</i> (QListWidgetItem)</dt>
+<dd>
+reference to the changed item
+</dd>
 </dl><a NAME="E5ListSelectionDialog.on_selectionList_itemSelectionChanged" ID="E5ListSelectionDialog.on_selectionList_itemSelectionChanged"></a>
 <h4>E5ListSelectionDialog.on_selectionList_itemSelectionChanged</h4>
 <b>on_selectionList_itemSelectionChanged</b>(<i></i>)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.E5Gui.E5PathPickerDialog.html	Wed Aug 01 19:43:34 2018 +0200
@@ -0,0 +1,226 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.E5Gui.E5PathPickerDialog</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric6.E5Gui.E5PathPickerDialog</h1>
+<p>
+Module implementing a dialog to enter a file system path using a file picker.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#E5PathPickerDialog">E5PathPickerDialog</a></td>
+<td>Class implementing a dialog to enter a file system path using a file picker.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr>
+<td><a href="#getPath">getPath</a></td>
+<td>Function to get a file or directory path from the user.</td>
+</tr>
+</table>
+<hr /><hr />
+<a NAME="E5PathPickerDialog" ID="E5PathPickerDialog"></a>
+<h2>E5PathPickerDialog</h2>
+<p>
+    Class implementing a dialog to enter a file system path using a file
+    picker.
+</p>
+<h3>Derived from</h3>
+QDialog
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#E5PathPickerDialog.__init__">E5PathPickerDialog</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#E5PathPickerDialog.getPath">getPath</a></td>
+<td>Public method to get the current path.</td>
+</tr><tr>
+<td><a href="#E5PathPickerDialog.setDefaultDirectory">setDefaultDirectory</a></td>
+<td>Public method to set the default directory of the path picker.</td>
+</tr><tr>
+<td><a href="#E5PathPickerDialog.setLabelText">setLabelText</a></td>
+<td>Public method to set the label text.</td>
+</tr><tr>
+<td><a href="#E5PathPickerDialog.setPickerFilters">setPickerFilters</a></td>
+<td>Public method to set the filters of the path picker.</td>
+</tr><tr>
+<td><a href="#E5PathPickerDialog.setPickerMode">setPickerMode</a></td>
+<td>Public method to set the mode of the path picker.</td>
+</tr><tr>
+<td><a href="#E5PathPickerDialog.setPickerPath">setPickerPath</a></td>
+<td>Public method to set the path of the path picker.</td>
+</tr><tr>
+<td><a href="#E5PathPickerDialog.setTitle">setTitle</a></td>
+<td>Public method to set the window title.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="E5PathPickerDialog.__init__" ID="E5PathPickerDialog.__init__"></a>
+<h4>E5PathPickerDialog (Constructor)</h4>
+<b>E5PathPickerDialog</b>(<i>parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
+</dd>
+</dl><a NAME="E5PathPickerDialog.getPath" ID="E5PathPickerDialog.getPath"></a>
+<h4>E5PathPickerDialog.getPath</h4>
+<b>getPath</b>(<i></i>)
+<p>
+        Public method to get the current path.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+current path
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl><a NAME="E5PathPickerDialog.setDefaultDirectory" ID="E5PathPickerDialog.setDefaultDirectory"></a>
+<h4>E5PathPickerDialog.setDefaultDirectory</h4>
+<b>setDefaultDirectory</b>(<i>directory</i>)
+<p>
+        Public method to set the default directory of the path picker.
+</p><dl>
+<dt><i>directory</i> (str)</dt>
+<dd>
+default directory
+</dd>
+</dl><a NAME="E5PathPickerDialog.setLabelText" ID="E5PathPickerDialog.setLabelText"></a>
+<h4>E5PathPickerDialog.setLabelText</h4>
+<b>setLabelText</b>(<i>text</i>)
+<p>
+        Public method to set the label text.
+</p><dl>
+<dt><i>text</i> (str)</dt>
+<dd>
+label text
+</dd>
+</dl><a NAME="E5PathPickerDialog.setPickerFilters" ID="E5PathPickerDialog.setPickerFilters"></a>
+<h4>E5PathPickerDialog.setPickerFilters</h4>
+<b>setPickerFilters</b>(<i>filters</i>)
+<p>
+        Public method to set the filters of the path picker.
+</p><p>
+        Note: Multiple filters must be separated by ';;'.
+</p><dl>
+<dt><i>filters</i> (str)</dt>
+<dd>
+string containing the file filters
+</dd>
+</dl><a NAME="E5PathPickerDialog.setPickerMode" ID="E5PathPickerDialog.setPickerMode"></a>
+<h4>E5PathPickerDialog.setPickerMode</h4>
+<b>setPickerMode</b>(<i>mode</i>)
+<p>
+        Public method to set the mode of the path picker.
+</p><dl>
+<dt><i>mode</i> (E5PathPickerModes)</dt>
+<dd>
+picker mode
+</dd>
+</dl><a NAME="E5PathPickerDialog.setPickerPath" ID="E5PathPickerDialog.setPickerPath"></a>
+<h4>E5PathPickerDialog.setPickerPath</h4>
+<b>setPickerPath</b>(<i>path</i>)
+<p>
+        Public method to set the path of the path picker.
+</p><dl>
+<dt><i>path</i> (str)</dt>
+<dd>
+path to be set
+</dd>
+</dl><a NAME="E5PathPickerDialog.setTitle" ID="E5PathPickerDialog.setTitle"></a>
+<h4>E5PathPickerDialog.setTitle</h4>
+<b>setTitle</b>(<i>title</i>)
+<p>
+        Public method to set the window title.
+</p><dl>
+<dt><i>title</i> (str)</dt>
+<dd>
+window title
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="getPath" ID="getPath"></a>
+<h2>getPath</h2>
+<b>getPath</b>(<i>parent, title, label, mode=E5PathPickerModes.OpenFileMode, path="", defaultDirectory="", filters=None</i>)
+<p>
+    Function to get a file or directory path from the user.
+</p><dl>
+<dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
+</dd><dt><i>title</i> (str)</dt>
+<dd>
+title of the dialog
+</dd><dt><i>label</i> (str)</dt>
+<dd>
+text to be shown above the path picker
+</dd><dt><i>mode</i> (E5PathPickerModes)</dt>
+<dd>
+mode of the path picker
+</dd><dt><i>path</i> (str)</dt>
+<dd>
+initial path to be shown
+</dd><dt><i>defaultDirectory</i> (str)</dt>
+<dd>
+default directory of the path picker selection
+        dialog
+</dd><dt><i>filters</i> (list of str)</dt>
+<dd>
+list of file filters
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+tuple containing the entered path and a flag indicating that the
+        user pressed the OK button
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (str, bool)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.E5XML.Config.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/eric6.E5XML.Config.html	Wed Aug 01 19:43:34 2018 +0200
@@ -25,7 +25,7 @@
 </p>
 <h3>Global Attributes</h3>
 <table>
-<tr><td>debuggerPropertiesFileFormatVersion</td></tr><tr><td>dictionariesListFileFormatVersion</td></tr><tr><td>highlightingStylesFileFormatVersion</td></tr><tr><td>multiProjectFileFormatVersion</td></tr><tr><td>pluginRepositoryFileFormatVersion</td></tr><tr><td>projectFileFormatVersion</td></tr><tr><td>projectFileFormatVersionAlt</td></tr><tr><td>projectFileFormatVersionProto</td></tr><tr><td>sessionFileFormatVersion</td></tr><tr><td>shortcutsFileFormatVersion</td></tr><tr><td>tasksFileFormatVersion</td></tr><tr><td>templatesFileFormatVersion</td></tr><tr><td>userProjectFileFormatVersion</td></tr>
+<tr><td>debuggerPropertiesFileFormatVersion</td></tr><tr><td>dictionariesListFileFormatVersion</td></tr><tr><td>highlightingStylesFileFormatVersion</td></tr><tr><td>multiProjectFileFormatVersion</td></tr><tr><td>pluginRepositoryFileFormatVersion</td></tr><tr><td>projectFileFormatVersion</td></tr><tr><td>projectFileFormatVersionAlt</td></tr><tr><td>projectFileFormatVersionMake</td></tr><tr><td>projectFileFormatVersionProto</td></tr><tr><td>sessionFileFormatVersion</td></tr><tr><td>shortcutsFileFormatVersion</td></tr><tr><td>tasksFileFormatVersion</td></tr><tr><td>templatesFileFormatVersion</td></tr><tr><td>userProjectFileFormatVersion</td></tr>
 </table>
 <h3>Classes</h3>
 <table>
--- a/Documentation/Source/eric6.E5XML.TemplatesReader.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/eric6.E5XML.TemplatesReader.html	Wed Aug 01 19:43:34 2018 +0200
@@ -76,7 +76,7 @@
 </table>
 <a NAME="TemplatesReader.__init__" ID="TemplatesReader.__init__"></a>
 <h4>TemplatesReader (Constructor)</h4>
-<b>TemplatesReader</b>(<i>device, viewer=None</i>)
+<b>TemplatesReader</b>(<i>device, viewer</i>)
 <p>
         Constructor
 </p><dl>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.html	Wed Aug 01 19:43:34 2018 +0200
@@ -0,0 +1,240 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine</h1>
+<p>
+Module implementing the IBM Watson translation engine.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#IbmWatsonEngine">IbmWatsonEngine</a></td>
+<td>Class implementing the translation engine for the IBM Watson Language Translator service.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="IbmWatsonEngine" ID="IbmWatsonEngine"></a>
+<h2>IbmWatsonEngine</h2>
+<p>
+    Class implementing the translation engine for the IBM Watson Language
+    Translator service.
+</p>
+<h3>Derived from</h3>
+TranslationEngine
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#IbmWatsonEngine.__init__">IbmWatsonEngine</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#IbmWatsonEngine.__adjustLanguageCode">__adjustLanguageCode</a></td>
+<td>Private method to adjust a given language code.</td>
+</tr><tr>
+<td><a href="#IbmWatsonEngine.__getTranslationModels">__getTranslationModels</a></td>
+<td>Private method to get the translation models supported by IBM Watson Language Translator.</td>
+</tr><tr>
+<td><a href="#IbmWatsonEngine.__getTranslationModelsReplyFinished">__getTranslationModelsReplyFinished</a></td>
+<td>Private slot handling the receipt of the available translations.</td>
+</tr><tr>
+<td><a href="#IbmWatsonEngine.engineName">engineName</a></td>
+<td>Public method to return the name of the engine.</td>
+</tr><tr>
+<td><a href="#IbmWatsonEngine.getTranslation">getTranslation</a></td>
+<td>Public method to translate the given text.</td>
+</tr><tr>
+<td><a href="#IbmWatsonEngine.hasTTS">hasTTS</a></td>
+<td>Public method indicating the Text-to-Speech capability.</td>
+</tr><tr>
+<td><a href="#IbmWatsonEngine.supportedLanguages">supportedLanguages</a></td>
+<td>Public method to get the supported languages.</td>
+</tr><tr>
+<td><a href="#IbmWatsonEngine.supportedTargetLanguages">supportedTargetLanguages</a></td>
+<td>Public method to get a list of supported target languages for an original language.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="IbmWatsonEngine.__init__" ID="IbmWatsonEngine.__init__"></a>
+<h4>IbmWatsonEngine (Constructor)</h4>
+<b>IbmWatsonEngine</b>(<i>plugin, parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>plugin</i> (TranslatorPlugin)</dt>
+<dd>
+reference to the plugin object
+</dd><dt><i>parent</i> (QObject)</dt>
+<dd>
+reference to the parent object
+</dd>
+</dl><a NAME="IbmWatsonEngine.__adjustLanguageCode" ID="IbmWatsonEngine.__adjustLanguageCode"></a>
+<h4>IbmWatsonEngine.__adjustLanguageCode</h4>
+<b>__adjustLanguageCode</b>(<i>code</i>)
+<p>
+        Private method to adjust a given language code.
+</p><dl>
+<dt><i>code</i> (str)</dt>
+<dd>
+code to be adjusted
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+adjusted language code
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl><a NAME="IbmWatsonEngine.__getTranslationModels" ID="IbmWatsonEngine.__getTranslationModels"></a>
+<h4>IbmWatsonEngine.__getTranslationModels</h4>
+<b>__getTranslationModels</b>(<i></i>)
+<p>
+        Private method to get the translation models supported by IBM Watson
+        Language Translator.
+</p><a NAME="IbmWatsonEngine.__getTranslationModelsReplyFinished" ID="IbmWatsonEngine.__getTranslationModelsReplyFinished"></a>
+<h4>IbmWatsonEngine.__getTranslationModelsReplyFinished</h4>
+<b>__getTranslationModelsReplyFinished</b>(<i>reply</i>)
+<p>
+        Private slot handling the receipt of the available translations.
+</p><dl>
+<dt><i>reply</i> (QNetworkReply)</dt>
+<dd>
+reference to the network reply object
+</dd>
+</dl><a NAME="IbmWatsonEngine.engineName" ID="IbmWatsonEngine.engineName"></a>
+<h4>IbmWatsonEngine.engineName</h4>
+<b>engineName</b>(<i></i>)
+<p>
+        Public method to return the name of the engine.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+engine name
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl><a NAME="IbmWatsonEngine.getTranslation" ID="IbmWatsonEngine.getTranslation"></a>
+<h4>IbmWatsonEngine.getTranslation</h4>
+<b>getTranslation</b>(<i>requestObject, text, originalLanguage, translationLanguage</i>)
+<p>
+        Public method to translate the given text.
+</p><dl>
+<dt><i>requestObject</i> (TranslatorRequest)</dt>
+<dd>
+reference to the request object
+</dd><dt><i>text</i> (str)</dt>
+<dd>
+text to be translated
+</dd><dt><i>originalLanguage</i> (str)</dt>
+<dd>
+language code of the original
+</dd><dt><i>translationLanguage</i> (str)</dt>
+<dd>
+language code of the translation
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+tuple of translated text and flag indicating success
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (str, bool)
+</dd>
+</dl><a NAME="IbmWatsonEngine.hasTTS" ID="IbmWatsonEngine.hasTTS"></a>
+<h4>IbmWatsonEngine.hasTTS</h4>
+<b>hasTTS</b>(<i></i>)
+<p>
+        Public method indicating the Text-to-Speech capability.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating the Text-to-Speech capability
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl><a NAME="IbmWatsonEngine.supportedLanguages" ID="IbmWatsonEngine.supportedLanguages"></a>
+<h4>IbmWatsonEngine.supportedLanguages</h4>
+<b>supportedLanguages</b>(<i></i>)
+<p>
+        Public method to get the supported languages.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+list of supported language codes
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
+</dd>
+</dl><a NAME="IbmWatsonEngine.supportedTargetLanguages" ID="IbmWatsonEngine.supportedTargetLanguages"></a>
+<h4>IbmWatsonEngine.supportedTargetLanguages</h4>
+<b>supportedTargetLanguages</b>(<i>original</i>)
+<p>
+        Public method to get a list of supported target languages for an
+        original language.
+</p><dl>
+<dt><i>original</i> (str)</dt>
+<dd>
+original language
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+list of supported target languages for the given original
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.TranslationEngine.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.TranslationEngine.html	Wed Aug 01 19:43:34 2018 +0200
@@ -44,7 +44,14 @@
 <p>
     Class implementing the translation engine base class containing
     default methods.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>availableTranslationsLoaded()</dt>
+<dd>
+emitted to indicate the availability
+        of the list of supported translation languages
+</dd>
+</dl>
 <h3>Derived from</h3>
 QObject
 <h3>Class Attributes</h3>
@@ -75,6 +82,9 @@
 </tr><tr>
 <td><a href="#TranslationEngine.supportedLanguages">supportedLanguages</a></td>
 <td>Public method to get the supported languages.</td>
+</tr><tr>
+<td><a href="#TranslationEngine.supportedTargetLanguages">supportedTargetLanguages</a></td>
+<td>Public method to get a list of supported target languages for an original language.</td>
 </tr>
 </table>
 <h3>Static Methods</h3>
@@ -173,6 +183,31 @@
 <dd>
 list of supported language codes (list of string)
 </dd>
+</dl><a NAME="TranslationEngine.supportedTargetLanguages" ID="TranslationEngine.supportedTargetLanguages"></a>
+<h4>TranslationEngine.supportedTargetLanguages</h4>
+<b>supportedTargetLanguages</b>(<i>original</i>)
+<p>
+        Public method to get a list of supported target languages for an
+        original language.
+</p><p>
+        Note: The default implementation return the list of supported languages
+        (i.e. the same as those for the source) with the given original
+        removed.
+</p><dl>
+<dt><i>original</i> (str)</dt>
+<dd>
+original language
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+list of supported target languages for the given original
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
+</dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
--- a/Documentation/Source/eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/eric6.Plugins.UiExtensionPlugins.Translator.TranslatorWidget.html	Wed Aug 01 19:43:34 2018 +0200
@@ -60,9 +60,15 @@
 <td><a href="#TranslatorWidget.__init__">TranslatorWidget</a></td>
 <td>Constructor</td>
 </tr><tr>
+<td><a href="#TranslatorWidget.__availableTranslationsLoaded">__availableTranslationsLoaded</a></td>
+<td>Private slot to handle the availability of translations.</td>
+</tr><tr>
 <td><a href="#TranslatorWidget.__engineComboBoxCurrentIndexChanged">__engineComboBoxCurrentIndexChanged</a></td>
 <td>Private slot to handle the selection of a translation service.</td>
 </tr><tr>
+<td><a href="#TranslatorWidget.__ensureTranslationEngineReady">__ensureTranslationEngineReady</a></td>
+<td>Private slot to ensure, that the currently selected translation engine is ready.</td>
+</tr><tr>
 <td><a href="#TranslatorWidget.__mediaPlayerStateChanged">__mediaPlayerStateChanged</a></td>
 <td>Private slot handling changes of the media player state.</td>
 </tr><tr>
@@ -90,6 +96,9 @@
 <td><a href="#TranslatorWidget.__updatePronounceButtons">__updatePronounceButtons</a></td>
 <td>Private slot to set the state of the pronounce buttons.</td>
 </tr><tr>
+<td><a href="#TranslatorWidget.__updateTranslateButton">__updateTranslateButton</a></td>
+<td>Private slot to set the state of the translate button.</td>
+</tr><tr>
 <td><a href="#TranslatorWidget.on_clearButton_clicked">on_clearButton_clicked</a></td>
 <td>Private slot to clear the text fields.</td>
 </tr><tr>
@@ -138,17 +147,28 @@
 <dd>
 reference to the parent widget (QWidget)
 </dd>
-</dl><a NAME="TranslatorWidget.__engineComboBoxCurrentIndexChanged" ID="TranslatorWidget.__engineComboBoxCurrentIndexChanged"></a>
+</dl><a NAME="TranslatorWidget.__availableTranslationsLoaded" ID="TranslatorWidget.__availableTranslationsLoaded"></a>
+<h4>TranslatorWidget.__availableTranslationsLoaded</h4>
+<b>__availableTranslationsLoaded</b>(<i></i>)
+<p>
+        Private slot to handle the availability of translations.
+</p><a NAME="TranslatorWidget.__engineComboBoxCurrentIndexChanged" ID="TranslatorWidget.__engineComboBoxCurrentIndexChanged"></a>
 <h4>TranslatorWidget.__engineComboBoxCurrentIndexChanged</h4>
 <b>__engineComboBoxCurrentIndexChanged</b>(<i>index</i>)
 <p>
         Private slot to handle the selection of a translation service.
 </p><dl>
-<dt><i>index</i></dt>
+<dt><i>index</i> (int)</dt>
 <dd>
-current index (integer)
+current index
 </dd>
-</dl><a NAME="TranslatorWidget.__mediaPlayerStateChanged" ID="TranslatorWidget.__mediaPlayerStateChanged"></a>
+</dl><a NAME="TranslatorWidget.__ensureTranslationEngineReady" ID="TranslatorWidget.__ensureTranslationEngineReady"></a>
+<h4>TranslatorWidget.__ensureTranslationEngineReady</h4>
+<b>__ensureTranslationEngineReady</b>(<i></i>)
+<p>
+        Private slot to ensure, that the currently selected translation engine
+        is ready.
+</p><a NAME="TranslatorWidget.__mediaPlayerStateChanged" ID="TranslatorWidget.__mediaPlayerStateChanged"></a>
 <h4>TranslatorWidget.__mediaPlayerStateChanged</h4>
 <b>__mediaPlayerStateChanged</b>(<i>state</i>)
 <p>
@@ -233,6 +253,11 @@
 <b>__updatePronounceButtons</b>(<i></i>)
 <p>
         Private slot to set the state of the pronounce buttons.
+</p><a NAME="TranslatorWidget.__updateTranslateButton" ID="TranslatorWidget.__updateTranslateButton"></a>
+<h4>TranslatorWidget.__updateTranslateButton</h4>
+<b>__updateTranslateButton</b>(<i></i>)
+<p>
+        Private slot to set the state of the translate button.
 </p><a NAME="TranslatorWidget.on_clearButton_clicked" ID="TranslatorWidget.on_clearButton_clicked"></a>
 <h4>TranslatorWidget.on_clearButton_clicked</h4>
 <b>on_clearButton_clicked</b>(<i></i>)
--- a/Documentation/Source/eric6.Preferences.__init__.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/eric6.Preferences.__init__.html	Wed Aug 01 19:43:34 2018 +0200
@@ -175,9 +175,6 @@
 <td><a href="#getUILanguage">getUILanguage</a></td>
 <td>Module function to retrieve the language for the user interface.</td>
 </tr><tr>
-<td><a href="#getUILayout">getUILayout</a></td>
-<td>Module function to retrieve the layout for the user interface.</td>
-</tr><tr>
 <td><a href="#getUser">getUser</a></td>
 <td>Module function to retrieve the various user settings.</td>
 </tr><tr>
@@ -334,9 +331,6 @@
 <td><a href="#setUILanguage">setUILanguage</a></td>
 <td>Module function to store the language for the user interface.</td>
 </tr><tr>
-<td><a href="#setUILayout">setUILayout</a></td>
-<td>Module function to store the layout for the user interface.</td>
-</tr><tr>
 <td><a href="#setUser">setUser</a></td>
 <td>Module function to store the various user settings.</td>
 </tr><tr>
@@ -1309,25 +1303,6 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
-<a NAME="getUILayout" ID="getUILayout"></a>
-<h2>getUILayout</h2>
-<b>getUILayout</b>(<i>prefClass=Prefs</i>)
-<p>
-    Module function to retrieve the layout for the user interface.
-</p><dl>
-<dt><i>prefClass</i></dt>
-<dd>
-preferences class used as the storage area
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-the UI layout as a tuple of main layout, flag for
-        an embedded shell and a value for an embedded file browser
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
 <a NAME="getUser" ID="getUser"></a>
 <h2>getUser</h2>
 <b>getUser</b>(<i>key, prefClass=Prefs</i>)
@@ -2276,22 +2251,6 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
-<a NAME="setUILayout" ID="setUILayout"></a>
-<h2>setUILayout</h2>
-<b>setUILayout</b>(<i>layout, prefClass=Prefs</i>)
-<p>
-    Module function to store the layout for the user interface.
-</p><dl>
-<dt><i>layout</i></dt>
-<dd>
-the layout type
-</dd><dt><i>prefClass</i></dt>
-<dd>
-preferences class used as the storage area
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
 <a NAME="setUser" ID="setUser"></a>
 <h2>setUser</h2>
 <b>setUser</b>(<i>key, value, prefClass=Prefs</i>)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.Project.IdlCompilerDefineNameDialog.html	Wed Aug 01 19:43:34 2018 +0200
@@ -0,0 +1,128 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.Project.IdlCompilerDefineNameDialog</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric6.Project.IdlCompilerDefineNameDialog</h1>
+<p>
+Module implementing a dialog to enter the name-value pair to define a variable
+for the IDL compiler.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#IdlCompilerDefineNameDialog">IdlCompilerDefineNameDialog</a></td>
+<td>Class implementing a dialog to enter the name-value pair to define a variable for the IDL compiler.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="IdlCompilerDefineNameDialog" ID="IdlCompilerDefineNameDialog"></a>
+<h2>IdlCompilerDefineNameDialog</h2>
+<p>
+    Class implementing a dialog to enter the name-value pair to define a
+    variable for the IDL compiler.
+</p>
+<h3>Derived from</h3>
+QDialog, Ui_IdlCompilerDefineNameDialog
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#IdlCompilerDefineNameDialog.__init__">IdlCompilerDefineNameDialog</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#IdlCompilerDefineNameDialog.__updateOkButton">__updateOkButton</a></td>
+<td>Private slot to update the enable state of the OK button.</td>
+</tr><tr>
+<td><a href="#IdlCompilerDefineNameDialog.getData">getData</a></td>
+<td>Public method to get the entered data.</td>
+</tr><tr>
+<td><a href="#IdlCompilerDefineNameDialog.on_nameEdit_textChanged">on_nameEdit_textChanged</a></td>
+<td>Private slot to handle changes of the name.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="IdlCompilerDefineNameDialog.__init__" ID="IdlCompilerDefineNameDialog.__init__"></a>
+<h4>IdlCompilerDefineNameDialog (Constructor)</h4>
+<b>IdlCompilerDefineNameDialog</b>(<i>name="", value="", parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>name</i> (str)</dt>
+<dd>
+name of the variable
+</dd><dt><i>value</i> (str)</dt>
+<dd>
+value of the variable
+</dd><dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
+</dd>
+</dl><a NAME="IdlCompilerDefineNameDialog.__updateOkButton" ID="IdlCompilerDefineNameDialog.__updateOkButton"></a>
+<h4>IdlCompilerDefineNameDialog.__updateOkButton</h4>
+<b>__updateOkButton</b>(<i></i>)
+<p>
+        Private slot to update the enable state of the OK button.
+</p><a NAME="IdlCompilerDefineNameDialog.getData" ID="IdlCompilerDefineNameDialog.getData"></a>
+<h4>IdlCompilerDefineNameDialog.getData</h4>
+<b>getData</b>(<i></i>)
+<p>
+        Public method to get the entered data.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+tuple containing the variable name and value
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (str, str)
+</dd>
+</dl><a NAME="IdlCompilerDefineNameDialog.on_nameEdit_textChanged" ID="IdlCompilerDefineNameDialog.on_nameEdit_textChanged"></a>
+<h4>IdlCompilerDefineNameDialog.on_nameEdit_textChanged</h4>
+<b>on_nameEdit_textChanged</b>(<i>txt</i>)
+<p>
+        Private slot to handle changes of the name.
+</p><dl>
+<dt><i>txt</i> (str)</dt>
+<dd>
+current text of the name edit
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.Project.IdlCompilerOptionsDialog.html	Wed Aug 01 19:43:34 2018 +0200
@@ -0,0 +1,386 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.Project.IdlCompilerOptionsDialog</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric6.Project.IdlCompilerOptionsDialog</h1>
+<p>
+Module implementing a dialog to enter some IDL compiler options.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#IdlCompilerOptionsDialog">IdlCompilerOptionsDialog</a></td>
+<td>Class implementing a dialog to enter some IDL compiler options.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="IdlCompilerOptionsDialog" ID="IdlCompilerOptionsDialog"></a>
+<h2>IdlCompilerOptionsDialog</h2>
+<p>
+    Class implementing a dialog to enter some IDL compiler options.
+</p>
+<h3>Derived from</h3>
+QDialog, Ui_IdlCompilerOptionsDialog
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#IdlCompilerOptionsDialog.__init__">IdlCompilerOptionsDialog</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.__definedNamesContain">__definedNamesContain</a></td>
+<td>Private method to test, if the currently defined 'Defined Names' contain a given one.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.__generateDefinedNamesList">__generateDefinedNamesList</a></td>
+<td>Private method to prepare the list of 'Defined Names'.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.__generateIncludeDirectoriesList">__generateIncludeDirectoriesList</a></td>
+<td>Private method to prepare the list of 'Include Directories'.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.__generateUndefinedNamesList">__generateUndefinedNamesList</a></td>
+<td>Private method to prepare the list of 'Undefined Names'.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.__includeDirectoriesContain">__includeDirectoriesContain</a></td>
+<td>Private method to test, if the currently defined 'Include Directories' contain a given one.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.__populateDefineNamesList">__populateDefineNamesList</a></td>
+<td>Private method to populate the list of defined names.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.__populateIncludeDirectoriesList">__populateIncludeDirectoriesList</a></td>
+<td>Private method to populate the 'Include Directories' list.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.__undefinedNamesContain">__undefinedNamesContain</a></td>
+<td>Private method to test, if the currently defined 'Undefined Names' contain a given one.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.__updateDefineNameButtons">__updateDefineNameButtons</a></td>
+<td>Private method to set the state of the 'Define Name' buttons.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.__updateIncludeDirectoryButtons">__updateIncludeDirectoryButtons</a></td>
+<td>Private method to set the state of the 'Include Directory' buttons.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.__updateUndefineNameButtons">__updateUndefineNameButtons</a></td>
+<td>Private method to set the state of the 'Undefine Name' buttons.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.getData">getData</a></td>
+<td>Public method to return the data entered by the user.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.on_dnAddButton_clicked">on_dnAddButton_clicked</a></td>
+<td>Private slot to add a 'Define Name' entry.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.on_dnDeleteButton_clicked">on_dnDeleteButton_clicked</a></td>
+<td>Private slot to delete the selected 'Define Name' entry.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.on_dnEditButton_clicked">on_dnEditButton_clicked</a></td>
+<td>Private slot to edit the selected 'Define Name' entry.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.on_dnList_itemSelectionChanged">on_dnList_itemSelectionChanged</a></td>
+<td>Private slot handling the selection of a 'Define Name' entry.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.on_idAddButton_clicked">on_idAddButton_clicked</a></td>
+<td>Private slot to add an 'Include Directory'.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.on_idDeleteButton_clicked">on_idDeleteButton_clicked</a></td>
+<td>Private slot to delete the selected 'Include Directory' entry.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.on_idEditButton_clicked">on_idEditButton_clicked</a></td>
+<td>Private slot to edit the selected 'Include Directory' entry.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.on_idList_itemSelectionChanged">on_idList_itemSelectionChanged</a></td>
+<td>Private slot handling the selection of an 'Include Directory' entry.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.on_unAddButton_clicked">on_unAddButton_clicked</a></td>
+<td>Private slot to add a 'Undefine Name' entry.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.on_unDeleteButton_clicked">on_unDeleteButton_clicked</a></td>
+<td>Private slot to delete the selected 'Undefine Name' entry.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.on_unEditButton_clicked">on_unEditButton_clicked</a></td>
+<td>Private slot to edit the selected 'Undefine Name' entry.</td>
+</tr><tr>
+<td><a href="#IdlCompilerOptionsDialog.on_unList_itemSelectionChanged">on_unList_itemSelectionChanged</a></td>
+<td>Private slot handling the selection of a 'Undefine Name' entry.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="IdlCompilerOptionsDialog.__init__" ID="IdlCompilerOptionsDialog.__init__"></a>
+<h4>IdlCompilerOptionsDialog (Constructor)</h4>
+<b>IdlCompilerOptionsDialog</b>(<i>includeDirectories, definedNames, undefinedNames, project=None, parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>includeDirectories</i> (list of str)</dt>
+<dd>
+list of include directories
+</dd><dt><i>definedNames</i> (list of str)</dt>
+<dd>
+list of defined variables with name and value
+            separated by '='
+</dd><dt><i>undefinedNames</i> (list of str)</dt>
+<dd>
+list of undefined names
+</dd><dt><i>projectDirectory</i> (str)</dt>
+<dd>
+directory name of the project
+</dd><dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
+</dd>
+</dl><a NAME="IdlCompilerOptionsDialog.__definedNamesContain" ID="IdlCompilerOptionsDialog.__definedNamesContain"></a>
+<h4>IdlCompilerOptionsDialog.__definedNamesContain</h4>
+<b>__definedNamesContain</b>(<i>name</i>)
+<p>
+        Private method to test, if the currently defined 'Defined Names'
+        contain a given one.
+</p><dl>
+<dt><i>name</i> (str)</dt>
+<dd>
+variable name to be tested
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating that the given name is already included
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl><a NAME="IdlCompilerOptionsDialog.__generateDefinedNamesList" ID="IdlCompilerOptionsDialog.__generateDefinedNamesList"></a>
+<h4>IdlCompilerOptionsDialog.__generateDefinedNamesList</h4>
+<b>__generateDefinedNamesList</b>(<i></i>)
+<p>
+        Private method to prepare the list of 'Defined Names'.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+list of 'Defined Names'
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
+</dd>
+</dl><a NAME="IdlCompilerOptionsDialog.__generateIncludeDirectoriesList" ID="IdlCompilerOptionsDialog.__generateIncludeDirectoriesList"></a>
+<h4>IdlCompilerOptionsDialog.__generateIncludeDirectoriesList</h4>
+<b>__generateIncludeDirectoriesList</b>(<i></i>)
+<p>
+        Private method to prepare the list of 'Include Directories'.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+list of 'Include Directories'
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
+</dd>
+</dl><a NAME="IdlCompilerOptionsDialog.__generateUndefinedNamesList" ID="IdlCompilerOptionsDialog.__generateUndefinedNamesList"></a>
+<h4>IdlCompilerOptionsDialog.__generateUndefinedNamesList</h4>
+<b>__generateUndefinedNamesList</b>(<i></i>)
+<p>
+        Private method to prepare the list of 'Undefined Names'.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+list of 'Undefined Names'
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
+</dd>
+</dl><a NAME="IdlCompilerOptionsDialog.__includeDirectoriesContain" ID="IdlCompilerOptionsDialog.__includeDirectoriesContain"></a>
+<h4>IdlCompilerOptionsDialog.__includeDirectoriesContain</h4>
+<b>__includeDirectoriesContain</b>(<i>directory</i>)
+<p>
+        Private method to test, if the currently defined 'Include Directories'
+        contain a given one.
+</p><dl>
+<dt><i>directory</i> (str)</dt>
+<dd>
+directory name to be tested
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating that the given directory is already included
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl><a NAME="IdlCompilerOptionsDialog.__populateDefineNamesList" ID="IdlCompilerOptionsDialog.__populateDefineNamesList"></a>
+<h4>IdlCompilerOptionsDialog.__populateDefineNamesList</h4>
+<b>__populateDefineNamesList</b>(<i>definedNames</i>)
+<p>
+        Private method to populate the list of defined names.
+</p><dl>
+<dt><i>definedNames</i> (list of str)</dt>
+<dd>
+list of defined variables with name and value
+            separated by '='
+</dd>
+</dl><a NAME="IdlCompilerOptionsDialog.__populateIncludeDirectoriesList" ID="IdlCompilerOptionsDialog.__populateIncludeDirectoriesList"></a>
+<h4>IdlCompilerOptionsDialog.__populateIncludeDirectoriesList</h4>
+<b>__populateIncludeDirectoriesList</b>(<i>includeDirectories</i>)
+<p>
+        Private method to populate the 'Include Directories' list.
+</p><dl>
+<dt><i>includeDirectories</i> (list of str)</dt>
+<dd>
+list of include directories
+</dd>
+</dl><a NAME="IdlCompilerOptionsDialog.__undefinedNamesContain" ID="IdlCompilerOptionsDialog.__undefinedNamesContain"></a>
+<h4>IdlCompilerOptionsDialog.__undefinedNamesContain</h4>
+<b>__undefinedNamesContain</b>(<i>name</i>)
+<p>
+        Private method to test, if the currently defined 'Undefined Names'
+        contain a given one.
+</p><dl>
+<dt><i>name</i> (str)</dt>
+<dd>
+variable name to be tested
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating that the given name is already included
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl><a NAME="IdlCompilerOptionsDialog.__updateDefineNameButtons" ID="IdlCompilerOptionsDialog.__updateDefineNameButtons"></a>
+<h4>IdlCompilerOptionsDialog.__updateDefineNameButtons</h4>
+<b>__updateDefineNameButtons</b>(<i></i>)
+<p>
+        Private method to set the state of the 'Define Name' buttons.
+</p><a NAME="IdlCompilerOptionsDialog.__updateIncludeDirectoryButtons" ID="IdlCompilerOptionsDialog.__updateIncludeDirectoryButtons"></a>
+<h4>IdlCompilerOptionsDialog.__updateIncludeDirectoryButtons</h4>
+<b>__updateIncludeDirectoryButtons</b>(<i></i>)
+<p>
+        Private method to set the state of the 'Include Directory' buttons.
+</p><a NAME="IdlCompilerOptionsDialog.__updateUndefineNameButtons" ID="IdlCompilerOptionsDialog.__updateUndefineNameButtons"></a>
+<h4>IdlCompilerOptionsDialog.__updateUndefineNameButtons</h4>
+<b>__updateUndefineNameButtons</b>(<i></i>)
+<p>
+        Private method to set the state of the 'Undefine Name' buttons.
+</p><a NAME="IdlCompilerOptionsDialog.getData" ID="IdlCompilerOptionsDialog.getData"></a>
+<h4>IdlCompilerOptionsDialog.getData</h4>
+<b>getData</b>(<i></i>)
+<p>
+        Public method to return the data entered by the user.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+tuple containing the list of include directories, list of
+            defined names and list of undefined names
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (list of str, list of str, list of str)
+</dd>
+</dl><a NAME="IdlCompilerOptionsDialog.on_dnAddButton_clicked" ID="IdlCompilerOptionsDialog.on_dnAddButton_clicked"></a>
+<h4>IdlCompilerOptionsDialog.on_dnAddButton_clicked</h4>
+<b>on_dnAddButton_clicked</b>(<i></i>)
+<p>
+        Private slot to add a 'Define Name' entry.
+</p><a NAME="IdlCompilerOptionsDialog.on_dnDeleteButton_clicked" ID="IdlCompilerOptionsDialog.on_dnDeleteButton_clicked"></a>
+<h4>IdlCompilerOptionsDialog.on_dnDeleteButton_clicked</h4>
+<b>on_dnDeleteButton_clicked</b>(<i></i>)
+<p>
+        Private slot to delete the selected 'Define Name' entry.
+</p><a NAME="IdlCompilerOptionsDialog.on_dnEditButton_clicked" ID="IdlCompilerOptionsDialog.on_dnEditButton_clicked"></a>
+<h4>IdlCompilerOptionsDialog.on_dnEditButton_clicked</h4>
+<b>on_dnEditButton_clicked</b>(<i></i>)
+<p>
+        Private slot to edit the selected 'Define Name' entry.
+</p><a NAME="IdlCompilerOptionsDialog.on_dnList_itemSelectionChanged" ID="IdlCompilerOptionsDialog.on_dnList_itemSelectionChanged"></a>
+<h4>IdlCompilerOptionsDialog.on_dnList_itemSelectionChanged</h4>
+<b>on_dnList_itemSelectionChanged</b>(<i></i>)
+<p>
+        Private slot handling the selection of a 'Define Name' entry.
+</p><a NAME="IdlCompilerOptionsDialog.on_idAddButton_clicked" ID="IdlCompilerOptionsDialog.on_idAddButton_clicked"></a>
+<h4>IdlCompilerOptionsDialog.on_idAddButton_clicked</h4>
+<b>on_idAddButton_clicked</b>(<i></i>)
+<p>
+        Private slot to add an 'Include Directory'.
+</p><a NAME="IdlCompilerOptionsDialog.on_idDeleteButton_clicked" ID="IdlCompilerOptionsDialog.on_idDeleteButton_clicked"></a>
+<h4>IdlCompilerOptionsDialog.on_idDeleteButton_clicked</h4>
+<b>on_idDeleteButton_clicked</b>(<i></i>)
+<p>
+        Private slot to delete the selected 'Include Directory' entry.
+</p><a NAME="IdlCompilerOptionsDialog.on_idEditButton_clicked" ID="IdlCompilerOptionsDialog.on_idEditButton_clicked"></a>
+<h4>IdlCompilerOptionsDialog.on_idEditButton_clicked</h4>
+<b>on_idEditButton_clicked</b>(<i></i>)
+<p>
+        Private slot to edit the selected 'Include Directory' entry.
+</p><a NAME="IdlCompilerOptionsDialog.on_idList_itemSelectionChanged" ID="IdlCompilerOptionsDialog.on_idList_itemSelectionChanged"></a>
+<h4>IdlCompilerOptionsDialog.on_idList_itemSelectionChanged</h4>
+<b>on_idList_itemSelectionChanged</b>(<i></i>)
+<p>
+        Private slot handling the selection of an 'Include Directory' entry.
+</p><a NAME="IdlCompilerOptionsDialog.on_unAddButton_clicked" ID="IdlCompilerOptionsDialog.on_unAddButton_clicked"></a>
+<h4>IdlCompilerOptionsDialog.on_unAddButton_clicked</h4>
+<b>on_unAddButton_clicked</b>(<i></i>)
+<p>
+        Private slot to add a 'Undefine Name' entry.
+</p><a NAME="IdlCompilerOptionsDialog.on_unDeleteButton_clicked" ID="IdlCompilerOptionsDialog.on_unDeleteButton_clicked"></a>
+<h4>IdlCompilerOptionsDialog.on_unDeleteButton_clicked</h4>
+<b>on_unDeleteButton_clicked</b>(<i></i>)
+<p>
+        Private slot to delete the selected 'Undefine Name' entry.
+</p><a NAME="IdlCompilerOptionsDialog.on_unEditButton_clicked" ID="IdlCompilerOptionsDialog.on_unEditButton_clicked"></a>
+<h4>IdlCompilerOptionsDialog.on_unEditButton_clicked</h4>
+<b>on_unEditButton_clicked</b>(<i></i>)
+<p>
+        Private slot to edit the selected 'Undefine Name' entry.
+</p><a NAME="IdlCompilerOptionsDialog.on_unList_itemSelectionChanged" ID="IdlCompilerOptionsDialog.on_unList_itemSelectionChanged"></a>
+<h4>IdlCompilerOptionsDialog.on_unList_itemSelectionChanged</h4>
+<b>on_unList_itemSelectionChanged</b>(<i></i>)
+<p>
+        Private slot handling the selection of a 'Undefine Name' entry.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Project.Project.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/eric6.Project.Project.html	Wed Aug 01 19:43:34 2018 +0200
@@ -604,6 +604,9 @@
 <td><a href="#Project.handlePreferencesChanged">handlePreferencesChanged</a></td>
 <td>Public slot used to handle the preferencesChanged signal.</td>
 </tr><tr>
+<td><a href="#Project.hasDefaultIdlCompilerParameters">hasDefaultIdlCompilerParameters</a></td>
+<td>Public method to test, if the project contains the default IDL compiler parameters.</td>
+</tr><tr>
 <td><a href="#Project.hasDefaultMakeParameters">hasDefaultMakeParameters</a></td>
 <td>Public method to test, if the project contains the default make parameters.</td>
 </tr><tr>
@@ -2129,7 +2132,23 @@
 <b>handlePreferencesChanged</b>(<i></i>)
 <p>
         Public slot used to handle the preferencesChanged signal.
-</p><a NAME="Project.hasDefaultMakeParameters" ID="Project.hasDefaultMakeParameters"></a>
+</p><a NAME="Project.hasDefaultIdlCompilerParameters" ID="Project.hasDefaultIdlCompilerParameters"></a>
+<h4>Project.hasDefaultIdlCompilerParameters</h4>
+<b>hasDefaultIdlCompilerParameters</b>(<i></i>)
+<p>
+        Public method to test, if the project contains the default IDL compiler
+        parameters.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating default parameter set
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl><a NAME="Project.hasDefaultMakeParameters" ID="Project.hasDefaultMakeParameters"></a>
 <h4>Project.hasDefaultMakeParameters</h4>
 <b>hasDefaultMakeParameters</b>(<i></i>)
 <p>
--- a/Documentation/Source/eric6.Project.ProjectBrowser.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/eric6.Project.ProjectBrowser.html	Wed Aug 01 19:43:34 2018 +0200
@@ -111,9 +111,6 @@
 </tr><tr>
 <td><a href="#ProjectBrowser.handlePreferencesChanged">handlePreferencesChanged</a></td>
 <td>Public slot used to handle the preferencesChanged signal.</td>
-</tr><tr>
-<td><a href="#ProjectBrowser.showEvent">showEvent</a></td>
-<td>Protected method handleing the show event.</td>
 </tr>
 </table>
 <h3>Static Methods</h3>
@@ -122,7 +119,7 @@
 </table>
 <a NAME="ProjectBrowser.__init__" ID="ProjectBrowser.__init__"></a>
 <h4>ProjectBrowser (Constructor)</h4>
-<b>ProjectBrowser</b>(<i>project, parent=None, embeddedBrowser=True</i>)
+<b>ProjectBrowser</b>(<i>project, parent=None</i>)
 <p>
         Constructor
 </p><dl>
@@ -132,12 +129,6 @@
 </dd><dt><i>parent</i></dt>
 <dd>
 parent widget (QWidget)
-</dd><dt><i>embeddedBrowser</i></dt>
-<dd>
-flag indicating whether the file browser should
-            be included. This flag is set to False by those layouts, that
-            have the file browser in a separate window or embedded
-            in the debeug browser instead
 </dd>
 </dl><a NAME="ProjectBrowser.__currentChanged" ID="ProjectBrowser.__currentChanged"></a>
 <h4>ProjectBrowser.__currentChanged</h4>
@@ -269,17 +260,7 @@
 <b>handlePreferencesChanged</b>(<i></i>)
 <p>
         Public slot used to handle the preferencesChanged signal.
-</p><a NAME="ProjectBrowser.showEvent" ID="ProjectBrowser.showEvent"></a>
-<h4>ProjectBrowser.showEvent</h4>
-<b>showEvent</b>(<i>evt</i>)
-<p>
-        Protected method handleing the show event.
-</p><dl>
-<dt><i>evt</i></dt>
-<dd>
-show event to handle (QShowEvent)
-</dd>
-</dl>
+</p>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Project.ProjectInterfacesBrowser.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/eric6.Project.ProjectInterfacesBrowser.html	Wed Aug 01 19:43:34 2018 +0200
@@ -100,6 +100,9 @@
 <td><a href="#ProjectInterfacesBrowser.__configureCorba">__configureCorba</a></td>
 <td>Private method to open the configuration dialog.</td>
 </tr><tr>
+<td><a href="#ProjectInterfacesBrowser.__configureIdlCompiler">__configureIdlCompiler</a></td>
+<td>Private method to show a dialog to configure some options for the IDL compiler.</td>
+</tr><tr>
 <td><a href="#ProjectInterfacesBrowser.__deleteFile">__deleteFile</a></td>
 <td>Private method to delete files from the project.</td>
 </tr><tr>
@@ -215,6 +218,12 @@
 <b>__configureCorba</b>(<i></i>)
 <p>
         Private method to open the configuration dialog.
+</p><a NAME="ProjectInterfacesBrowser.__configureIdlCompiler" ID="ProjectInterfacesBrowser.__configureIdlCompiler"></a>
+<h4>ProjectInterfacesBrowser.__configureIdlCompiler</h4>
+<b>__configureIdlCompiler</b>(<i></i>)
+<p>
+        Private method to show a dialog to configure some options for the
+        IDL compiler.
 </p><a NAME="ProjectInterfacesBrowser.__deleteFile" ID="ProjectInterfacesBrowser.__deleteFile"></a>
 <h4>ProjectInterfacesBrowser.__deleteFile</h4>
 <b>__deleteFile</b>(<i></i>)
--- a/Documentation/Source/eric6.UI.UserInterface.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/eric6.UI.UserInterface.html	Wed Aug 01 19:43:34 2018 +0200
@@ -735,6 +735,9 @@
 <td><a href="#UserInterface.getHelpViewer">getHelpViewer</a></td>
 <td>Public method to get a reference to the help window instance.</td>
 </tr><tr>
+<td><a href="#UserInterface.getLayoutType">getLayoutType</a></td>
+<td>Public method to get the current layout type.</td>
+</tr><tr>
 <td><a href="#UserInterface.getLocale">getLocale</a></td>
 <td>Public method to get the locale of the IDE.</td>
 </tr><tr>
@@ -1521,10 +1524,15 @@
         Private slot to handle the Feature Request dialog.
 </p><a NAME="UserInterface.__restart" ID="UserInterface.__restart"></a>
 <h4>UserInterface.__restart</h4>
-<b>__restart</b>(<i></i>)
+<b>__restart</b>(<i>ask=False</i>)
 <p>
         Private method to restart the application.
-</p><a NAME="UserInterface.__saveCurrentViewProfile" ID="UserInterface.__saveCurrentViewProfile"></a>
+</p><dl>
+<dt><i>ask</i> (bool)</dt>
+<dd>
+flag indicating to ask the user for permission
+</dd>
+</dl><a NAME="UserInterface.__saveCurrentViewProfile" ID="UserInterface.__saveCurrentViewProfile"></a>
 <h4>UserInterface.__saveCurrentViewProfile</h4>
 <b>__saveCurrentViewProfile</b>(<i>save</i>)
 <p>
@@ -2294,6 +2302,21 @@
 <dd>
 reference to the help window instance (HelpWindow)
 </dd>
+</dl><a NAME="UserInterface.getLayoutType" ID="UserInterface.getLayoutType"></a>
+<h4>UserInterface.getLayoutType</h4>
+<b>getLayoutType</b>(<i></i>)
+<p>
+        Public method to get the current layout type.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+current layout type
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
 </dl><a NAME="UserInterface.getLocale" ID="UserInterface.getLocale"></a>
 <h4>UserInterface.getLocale</h4>
 <b>getLocale</b>(<i></i>)
--- a/Documentation/Source/eric6.WebBrowser.CookieJar.CookieJar.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/eric6.WebBrowser.CookieJar.CookieJar.html	Wed Aug 01 19:43:34 2018 +0200
@@ -70,6 +70,9 @@
 <td><a href="#CookieJar.__cookieAdded">__cookieAdded</a></td>
 <td>Private slot handling the addition of a cookie.</td>
 </tr><tr>
+<td><a href="#CookieJar.__cookieFilter">__cookieFilter</a></td>
+<td>Private method to filter cookies.</td>
+</tr><tr>
 <td><a href="#CookieJar.__cookieRemoved">__cookieRemoved</a></td>
 <td>Private slot handling the removal of a cookie.</td>
 </tr><tr>
@@ -167,6 +170,28 @@
 <dd>
 cookie which was added
 </dd>
+</dl><a NAME="CookieJar.__cookieFilter" ID="CookieJar.__cookieFilter"></a>
+<h4>CookieJar.__cookieFilter</h4>
+<b>__cookieFilter</b>(<i>request</i>)
+<p>
+        Private method to filter cookies.
+</p><p>
+        Note: This method is used for Qt 5.11+ only.
+</p><dl>
+<dt><i>request</i> (QWebEngineCookieStore.FilterRequest)</dt>
+<dd>
+reference to the cookie filter request object
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating cookie access is allowed
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
 </dl><a NAME="CookieJar.__cookieRemoved" ID="CookieJar.__cookieRemoved"></a>
 <h4>CookieJar.__cookieRemoved</h4>
 <b>__cookieRemoved</b>(<i>cookie</i>)
--- a/Documentation/Source/eric6.WebBrowser.WebBrowserView.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/eric6.WebBrowser.WebBrowserView.html	Wed Aug 01 19:43:34 2018 +0200
@@ -203,6 +203,12 @@
 <td><a href="#WebBrowserView.__printPage">__printPage</a></td>
 <td>Private slot to support printing from the web page.</td>
 </tr><tr>
+<td><a href="#WebBrowserView.__quotaRequested">__quotaRequested</a></td>
+<td>Private slot to handle quota requests of the web page.</td>
+</tr><tr>
+<td><a href="#WebBrowserView.__registerProtocolHandlerRequested">__registerProtocolHandlerRequested</a></td>
+<td>Private slot to handle requests for registration of a protocol handler.</td>
+</tr><tr>
 <td><a href="#WebBrowserView.__reloadAllSpeedDials">__reloadAllSpeedDials</a></td>
 <td>Private slot to reload all speed dials.</td>
 </tr><tr>
@@ -813,7 +819,27 @@
 <b>__printPage</b>(<i></i>)
 <p>
         Private slot to support printing from the web page.
-</p><a NAME="WebBrowserView.__reloadAllSpeedDials" ID="WebBrowserView.__reloadAllSpeedDials"></a>
+</p><a NAME="WebBrowserView.__quotaRequested" ID="WebBrowserView.__quotaRequested"></a>
+<h4>WebBrowserView.__quotaRequested</h4>
+<b>__quotaRequested</b>(<i>quotaRequest</i>)
+<p>
+        Private slot to handle quota requests of the web page.
+</p><dl>
+<dt><i>quotaRequest</i> (QWebEngineQuotaRequest)</dt>
+<dd>
+reference to the quota request object
+</dd>
+</dl><a NAME="WebBrowserView.__registerProtocolHandlerRequested" ID="WebBrowserView.__registerProtocolHandlerRequested"></a>
+<h4>WebBrowserView.__registerProtocolHandlerRequested</h4>
+<b>__registerProtocolHandlerRequested</b>(<i>request</i>)
+<p>
+        Private slot to handle requests for registration of a protocol handler.
+</p><dl>
+<dt><i>request</i> (QWebEngineRegisterProtocolHandlerRequest)</dt>
+<dd>
+reference to the protocol handler request object
+</dd>
+</dl><a NAME="WebBrowserView.__reloadAllSpeedDials" ID="WebBrowserView.__reloadAllSpeedDials"></a>
 <h4>WebBrowserView.__reloadAllSpeedDials</h4>
 <b>__reloadAllSpeedDials</b>(<i></i>)
 <p>
--- a/Documentation/Source/index-eric6.E5Gui.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/index-eric6.E5Gui.html	Wed Aug 01 19:43:34 2018 +0200
@@ -99,6 +99,9 @@
 <td><a href="eric6.E5Gui.E5PathPicker.html">E5PathPicker</a></td>
 <td>Module implementing a path picker widget.</td>
 </tr><tr>
+<td><a href="eric6.E5Gui.E5PathPickerDialog.html">E5PathPickerDialog</a></td>
+<td>Module implementing a dialog to enter a file system path using a file picker.</td>
+</tr><tr>
 <td><a href="eric6.E5Gui.E5ProgressDialog.html">E5ProgressDialog</a></td>
 <td>Module implementing a progress dialog allowing a customized progress bar label.</td>
 </tr><tr>
--- a/Documentation/Source/index-eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/index-eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.html	Wed Aug 01 19:43:34 2018 +0200
@@ -40,6 +40,9 @@
 <td><a href="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.GoogleV2Engine.html">GoogleV2Engine</a></td>
 <td>Module implementing the Google V2 translation engine.</td>
 </tr><tr>
+<td><a href="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.IbmWatsonEngine.html">IbmWatsonEngine</a></td>
+<td>Module implementing the IBM Watson translation engine.</td>
+</tr><tr>
 <td><a href="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.MicrosoftEngine.html">MicrosoftEngine</a></td>
 <td>Module implementing the Microsoft translation engine.</td>
 </tr><tr>
--- a/Documentation/Source/index-eric6.Project.html	Sat Jul 07 12:01:23 2018 +0200
+++ b/Documentation/Source/index-eric6.Project.html	Wed Aug 01 19:43:34 2018 +0200
@@ -56,6 +56,12 @@
 <td><a href="eric6.Project.FiletypeAssociationDialog.html">FiletypeAssociationDialog</a></td>
 <td>Module implementing a dialog to enter filetype associations for the project.</td>
 </tr><tr>
+<td><a href="eric6.Project.IdlCompilerDefineNameDialog.html">IdlCompilerDefineNameDialog</a></td>
+<td>Module implementing a dialog to enter the name-value pair to define a variable for the IDL compiler.</td>
+</tr><tr>
+<td><a href="eric6.Project.IdlCompilerOptionsDialog.html">IdlCompilerOptionsDialog</a></td>
+<td>Module implementing a dialog to enter some IDL compiler options.</td>
+</tr><tr>
 <td><a href="eric6.Project.LexerAssociationDialog.html">LexerAssociationDialog</a></td>
 <td>Module implementing a dialog to enter lexer associations for the project.</td>
 </tr><tr>
--- a/E5Gui/E5ListSelectionDialog.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/E5Gui/E5ListSelectionDialog.py	Wed Aug 01 19:43:34 2018 +0200
@@ -9,8 +9,9 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import pyqtSlot
-from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QAbstractItemView
+from PyQt5.QtCore import pyqtSlot, Qt
+from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QAbstractItemView, \
+    QListWidgetItem
 
 from .Ui_E5ListSelectionDialog import Ui_E5ListSelectionDialog
 
@@ -21,7 +22,7 @@
     """
     def __init__(self, entries,
                  selectionMode=QAbstractItemView.ExtendedSelection,
-                 title="", message="", parent=None):
+                 title="", message="", checkBoxSelection=False, parent=None):
         """
         Constructor
         
@@ -33,19 +34,32 @@
         @type str
         @param message message to be show in the dialog
         @type str
+        @param checkBoxSelection flag indicating to select items via their
+            checkbox
+        @type bool
         @param parent reference to the parent widget
         @type QWidget
         """
         super(E5ListSelectionDialog, self).__init__(parent)
         self.setupUi(self)
         
-        self.selectionList.setSelectionMode(selectionMode)
         if title:
             self.setWindowTitle(title)
         if message:
             self.messageLabel.setText(message)
         
-        self.selectionList.addItems(entries)
+        self.__checkCount = 0
+        self.__isCheckBoxSelection = checkBoxSelection
+        if self.__isCheckBoxSelection:
+            self.selectionList.setSelectionMode(QAbstractItemView.NoSelection)
+            for entry in entries:
+                itm = QListWidgetItem(entry)
+                itm.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
+                itm.setCheckState(Qt.Unchecked)
+                self.selectionList.addItem(itm)
+        else:
+            self.selectionList.setSelectionMode(selectionMode)
+            self.selectionList.addItems(entries)
         
         self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(False)
     
@@ -54,8 +68,24 @@
         """
         Private slot handling a change of the selection.
         """
-        self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(
-            len(self.selectionList.selectedItems()) > 0)
+        if not self.__isCheckBoxSelection:
+            self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(
+                len(self.selectionList.selectedItems()) > 0)
+    
+    def on_selectionList_itemChanged(self, itm):
+        """
+        Private slot handling a change of an item.
+        
+        @param itm reference to the changed item
+        @type QListWidgetItem
+        """
+        if self.__isCheckBoxSelection:
+            if itm.checkState() == Qt.Checked:
+                self.__checkCount += 1
+            else:
+                self.__checkCount -= 1
+            self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(
+                self.__checkCount > 0)
     
     def getSelection(self):
         """
@@ -65,6 +95,12 @@
         @rtype list of str
         """
         entries = []
-        for item in self.selectionList.selectedItems():
-            entries.append(item.text())
+        if self.__isCheckBoxSelection:
+            for row in range(self.selectionList.count()):
+                item = self.selectionList.item(row)
+                if item.checkState() == Qt.Checked:
+                    entries.append(item.text())
+        else:
+            for item in self.selectionList.selectedItems():
+                entries.append(item.text())
         return entries
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/E5Gui/E5PathPickerDialog.py	Wed Aug 01 19:43:34 2018 +0200
@@ -0,0 +1,162 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to enter a file system path using a file picker.
+"""
+
+from __future__ import unicode_literals
+
+from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel
+
+from .E5PathPicker import E5PathPicker, E5PathPickerModes
+
+class E5PathPickerDialog(QDialog):
+    """
+    Class implementing a dialog to enter a file system path using a file
+    picker.
+    """
+    def __init__(self, parent=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent widget
+        @type QWidget
+        """
+        super(E5PathPickerDialog, self).__init__(parent)
+        
+        self.setMinimumWidth(400)
+        
+        self.__layout = QVBoxLayout(self)
+        
+        self.__label = QLabel(self)
+        self.__label.setWordWrap(True)
+        
+        self.__pathPicker = E5PathPicker(self)
+        self.__buttonBox = QDialogButtonBox(
+            QDialogButtonBox.Cancel | QDialogButtonBox.Ok, self)
+        
+        self.__layout.addWidget(self.__label)
+        self.__layout.addWidget(self.__pathPicker)
+        self.__layout.addWidget(self.__buttonBox)
+        
+        self.__buttonBox.accepted.connect(self.accept)
+        self.__buttonBox.rejected.connect(self.reject)
+    
+    def setLabelText(self, text):
+        """
+        Public method to set the label text.
+        
+        @param text label text
+        @type str
+        """
+        self.__label.setText(text)
+    
+    def setTitle(self, title):
+        """
+        Public method to set the window title.
+        
+        @param title window title
+        @type str
+        """
+        self.setWindowTitle(title)
+        self.__pathPicker.setWindowTitle(title)
+    
+    def setPickerMode(self, mode):
+        """
+        Public method to set the mode of the path picker.
+        
+        @param mode picker mode
+        @type E5PathPickerModes
+        """
+        self.__pathPicker.setMode(mode)
+    
+    def setPickerPath(self, path):
+        """
+        Public method to set the path of the path picker.
+        
+        @param path path to be set
+        @type str
+        """
+        self.__pathPicker.setPath(path)
+    
+    def setDefaultDirectory(self, directory):
+        """
+        Public method to set the default directory of the path picker.
+        
+        @param directory default directory
+        @type str
+        """
+        self.__pathPicker.setDefaultDirectory(directory)
+    
+    def setPickerFilters(self, filters):
+        """
+        Public method to set the filters of the path picker.
+        
+        Note: Multiple filters must be separated by ';;'.
+        
+        @param filters string containing the file filters
+        @type str
+        """
+        self.__pathPicker.setFilters(filters)
+    
+    def getPath(self):
+        """
+        Public method to get the current path.
+        
+        @return current path
+        @rtype str
+        """
+        return self.__pathPicker.path()
+
+
+def getPath(parent, title, label, mode=E5PathPickerModes.OpenFileMode,
+            path="", defaultDirectory="", filters=None):
+    """
+    Function to get a file or directory path from the user.
+    
+    @param parent reference to the parent widget
+    @type QWidget
+    @param title title of the dialog
+    @type str
+    @param label text to be shown above the path picker
+    @type str
+    @param mode mode of the path picker
+    @type E5PathPickerModes
+    @param path initial path to be shown
+    @type str
+    @param defaultDirectory default directory of the path picker selection
+        dialog
+    @type str
+    @param filters list of file filters
+    @type list of str
+    @return tuple containing the entered path and a flag indicating that the
+        user pressed the OK button
+    @rtype tuple of (str, bool)
+    """
+    # step 1: setup of the dialog
+    dlg = E5PathPickerDialog(parent)
+    if title:
+        dlg.setTitle(title)
+    if label:
+        dlg.setLabelText(label)
+    dlg.setPickerMode(mode)
+    if path:
+        dlg.setPickerPath(path)
+    if defaultDirectory:
+        dlg.setDefaultDirectory(defaultDirectory)
+    if filters is not None and len(filters) > 0:
+        dlg.setPickerFilters(";;".join(filters))
+    
+    # step 2: show the dialog and get the result
+    if dlg.exec_() == QDialog.Accepted:
+        ok = True
+        path = dlg.getPath().strip()
+    else:
+        ok = False
+        path = ""
+    
+    # step 3: return the result
+    return path, ok
--- a/E5XML/Config.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/E5XML/Config.py	Wed Aug 01 19:43:34 2018 +0200
@@ -11,7 +11,8 @@
 multiProjectFileFormatVersion = "5.1"
 
 # version numbers of the project file
-projectFileFormatVersion = "6.1"
+projectFileFormatVersion = "6.2"
+projectFileFormatVersionMake = "6.1"
 projectFileFormatVersionProto = "6.0"
 projectFileFormatVersionAlt = "5.1"
 
--- a/E5XML/ProjectReader.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/E5XML/ProjectReader.py	Wed Aug 01 19:43:34 2018 +0200
@@ -19,7 +19,7 @@
     """
     Class for reading an XML project file.
     """
-    supportedVersions = ["4.6", "5.0", "5.1", "6.0", "6.1"]
+    supportedVersions = ["4.6", "5.0", "5.1", "6.0", "6.1", "6.2"]
     
     def __init__(self, device, project):
         """
@@ -115,6 +115,9 @@
                 elif self.name() == "Make":
                     self.__readBasicDataField(
                         "Make", "MakeParameters", "MAKEPARAMS")
+                elif self.name() == "IdlCompiler":
+                    self.__readBasicDataField(
+                        "IdlCompiler", "IdlCompilerParameters", "IDLPARAMS")
                 elif self.name() == "ProjectTypeSpecific":
                     self.__readBasicDataField(
                         "ProjectTypeSpecific", "ProjectTypeSpecificData",
--- a/E5XML/ProjectWriter.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/E5XML/ProjectWriter.py	Wed Aug 01 19:43:34 2018 +0200
@@ -14,8 +14,8 @@
 from E5Gui.E5Application import e5App
 
 from .XMLStreamWriterBase import XMLStreamWriterBase
-from .Config import projectFileFormatVersion, projectFileFormatVersionProto, \
-    projectFileFormatVersionAlt
+from .Config import projectFileFormatVersion, projectFileFormatVersionMake, \
+    projectFileFormatVersionProto, projectFileFormatVersionAlt
 
 import Preferences
 import Utilities
@@ -43,8 +43,10 @@
         """
         XMLStreamWriterBase.writeXML(self)
         
-        if not e5App().getObject("Project").hasDefaultMakeParameters():
+        if not e5App().getObject("Project").hasDefaultIdlCompilerParameters():
             fileFormatVersion = projectFileFormatVersion
+        elif not e5App().getObject("Project").hasDefaultMakeParameters():
+            fileFormatVersion = projectFileFormatVersionMake
         elif self.pdata["PROTOCOLS"]:
             fileFormatVersion = projectFileFormatVersionProto
         else:
@@ -223,6 +225,12 @@
             self.writeBasics("MakeParameters", self.pdata["MAKEPARAMS"])
             self.writeEndElement()
         
+        # do the 'IDL' parameters
+        if not e5App().getObject("Project").hasDefaultIdlCompilerParameters():
+            self.writeStartElement("IdlCompiler")
+            self.writeBasics("IdlCompilerParameters", self.pdata["IDLPARAMS"])
+            self.writeEndElement()
+        
         # do the extra project data stuff
         if len(self.pdata["PROJECTTYPESPECIFICDATA"]):
             self.writeStartElement("ProjectTypeSpecific")
--- a/E5XML/TemplatesReader.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/E5XML/TemplatesReader.py	Wed Aug 01 19:43:34 2018 +0200
@@ -9,8 +9,6 @@
 
 from __future__ import unicode_literals
 
-from E5Gui.E5Application import e5App
-
 from .Config import templatesFileFormatVersion
 from .XMLStreamReaderBase import XMLStreamReaderBase
 
@@ -21,7 +19,7 @@
     """
     supportedVersions = ["4.0"]
     
-    def __init__(self, device, viewer=None):
+    def __init__(self, device, viewer):
         """
         Constructor
         
@@ -30,10 +28,7 @@
         """
         XMLStreamReaderBase.__init__(self, device)
         
-        if viewer:
-            self.viewer = viewer
-        else:
-            self.viewer = e5App().getObject("TemplateViewer")
+        self.__viewer = viewer
         
         self.version = ""
         self.groupName = "DEFAULT"
@@ -63,7 +58,7 @@
         """
         self.groupName = self.attribute('name', "DEFAULT")
         language = self.attribute('language', "All")
-        self.viewer.addGroup(self.groupName, language)
+        self.__viewer.addGroup(self.groupName, language)
         
         while not self.atEnd():
             self.readNext()
@@ -89,9 +84,9 @@
             if self.isEndElement() and \
                     self.name() == "Template" and \
                     templateName:
-                self.viewer.addEntry(self.groupName, templateName,
-                                     templateDescription, templateText,
-                                     quiet=True)
+                self.__viewer.addEntry(self.groupName, templateName,
+                                       templateDescription, templateText,
+                                       quiet=True)
                 break
             
             if self.isStartElement():
--- a/Helpviewer/OpenSearch/OpenSearchReader.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Helpviewer/OpenSearch/OpenSearchReader.py	Wed Aug 01 19:43:34 2018 +0200
@@ -74,7 +74,7 @@
                 if (not type_ or
                     type_ == "text/html" or
                     type_ == "application/xhtml+xml") and \
-                   engine.suggestionsUrlTemplate():
+                   engine.searchUrlTemplate():
                     continue
                 
                 if not url:
--- a/Plugins/PluginTranslator.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Plugins/PluginTranslator.py	Wed Aug 01 19:43:34 2018 +0200
@@ -79,9 +79,6 @@
     Preferences.Prefs.settings.remove(TranslatorPlugin.PreferencesKey)
 
 
-# TODO: add support for IBM Watson translator
-# https://www.ibm.com/watson/developercloud/language-translator
-# https://www.ibm.com/watson/services/language-translator/
 class TranslatorPlugin(QObject):
     """
     Class implementing the Translator plug-in.
@@ -112,6 +109,9 @@
             # Google
             "GoogleEnableDictionary": False,
             "GoogleV2Key": "",
+            # IBM Watson Language Translator
+            "IbmUrl": "",
+            "IbmKey": "",
             # Microsoft
             "MsTranslatorKey": "",
             "MsAuthToken": "",
--- a/Plugins/UiExtensionPlugins/Translator/ConfigurationPage/TranslatorPage.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Plugins/UiExtensionPlugins/Translator/ConfigurationPage/TranslatorPage.py	Wed Aug 01 19:43:34 2018 +0200
@@ -43,6 +43,10 @@
             """<p>A key is <b>required</b> to use this service."""
             """ <a href="{0}">Get a commercial API key.</a></p>""").format(
                 TranslatorEngines.getKeyUrl("googlev2")))
+        self.ibmLabel.setText(self.tr(
+            """<p>A key is <b>required</b> to use this service."""
+            """ <a href="{0}">Register with IBM Cloud.</a></p>""").format(
+                TranslatorEngines.getKeyUrl("ibm_watson")))
         self.msLabel.setText(self.tr(
             """<p>A registration of the text translation service is"""
             """ <b>required</b>. <a href="{0}">Register with Microsoft"""
@@ -77,6 +81,11 @@
             self.__plugin.getPreferences("GoogleEnableDictionary"))
         self.googlev2KeyEdit.setText(
             self.__plugin.getPreferences("GoogleV2Key"))
+        # IBM Watson settings
+        self.ibmUrlEdit.setText(
+            self.__plugin.getPreferences("IbmUrl"))
+        self.ibmKeyEdit.setText(
+            self.__plugin.getPreferences("IbmKey"))
         # Microsoft settings
         self.msSubscriptionKeyEdit.setText(
             self.__plugin.getPreferences("MsTranslatorKey"))
@@ -105,6 +114,11 @@
             "GoogleEnableDictionary", self.dictionaryCheckBox.isChecked())
         self.__plugin.setPreferences(
             "GoogleV2Key", self.googlev2KeyEdit.text())
+        # IBM Watson settings
+        self.__plugin.setPreferences(
+            "IbmUrl", self.ibmUrlEdit.text())
+        self.__plugin.setPreferences(
+            "IbmKey", self.ibmKeyEdit.text())
         # Microsoft settings
         self.__plugin.setPreferences(
             "MsTranslatorKey", self.msSubscriptionKeyEdit.text())
--- a/Plugins/UiExtensionPlugins/Translator/ConfigurationPage/TranslatorPage.ui	Sat Jul 07 12:01:23 2018 +0200
+++ b/Plugins/UiExtensionPlugins/Translator/ConfigurationPage/TranslatorPage.ui	Wed Aug 01 19:43:34 2018 +0200
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>494</width>
-    <height>937</height>
+    <height>1068</height>
    </rect>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout_3">
@@ -178,6 +178,56 @@
     </widget>
    </item>
    <item>
+    <widget class="QGroupBox" name="groupBox_7">
+     <property name="title">
+      <string>IBM Watson</string>
+     </property>
+     <layout class="QGridLayout" name="gridLayout_5">
+      <item row="0" column="0">
+       <widget class="QLabel" name="label_7">
+        <property name="text">
+         <string>URL:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="0" column="1">
+       <widget class="QLineEdit" name="ibmUrlEdit">
+        <property name="toolTip">
+         <string>Enter your IBM Watson Translator URL</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="0">
+       <widget class="QLabel" name="label_6">
+        <property name="text">
+         <string>API Key:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="1" column="1">
+       <widget class="QLineEdit" name="ibmKeyEdit">
+        <property name="toolTip">
+         <string>Enter your IBM Watson Translator API key</string>
+        </property>
+       </widget>
+      </item>
+      <item row="2" column="0" colspan="2">
+       <widget class="QLabel" name="ibmLabel">
+        <property name="text">
+         <string/>
+        </property>
+        <property name="wordWrap">
+         <bool>true</bool>
+        </property>
+        <property name="openExternalLinks">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
     <widget class="QGroupBox" name="groupBox_6">
      <property name="title">
       <string>Microsoft Azure</string>
@@ -304,6 +354,8 @@
   <tabstop>defaultButton</tabstop>
   <tabstop>dictionaryCheckBox</tabstop>
   <tabstop>googlev2KeyEdit</tabstop>
+  <tabstop>ibmUrlEdit</tabstop>
+  <tabstop>ibmKeyEdit</tabstop>
   <tabstop>msSubscriptionKeyEdit</tabstop>
   <tabstop>mymemoryEmailEdit</tabstop>
   <tabstop>mymemoryKeyEdit</tabstop>
--- a/Plugins/UiExtensionPlugins/Translator/Translator.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Plugins/UiExtensionPlugins/Translator/Translator.py	Wed Aug 01 19:43:34 2018 +0200
@@ -92,10 +92,11 @@
         """
         Private slot to handle the activation of the project browser.
         """
-        if self.__ui.layout == "Toolboxes":
+        uiLayoutType = self.__ui.getLayoutType()
+        if uiLayoutType == "Toolboxes":
             self.__ui.hToolboxDock.show()
-            self.__ui.hToolboxDock.setCurrentWidget(self.__widget)
-        elif self.__ui.layout == "Sidebars":
+            self.__ui.hToolbox.setCurrentWidget(self.__widget)
+        elif uiLayoutType == "Sidebars":
             self.__ui.bottomSidebar.show()
             self.__ui.bottomSidebar.setCurrentWidget(self.__widget)
         else:
--- a/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py	Wed Aug 01 19:43:34 2018 +0200
@@ -16,7 +16,7 @@
 import json
 import re
 
-from PyQt5.QtCore import QUrl, QByteArray
+from PyQt5.QtCore import QUrl, QByteArray, QTimer
 
 from .TranslationEngine import TranslationEngine
 
@@ -41,6 +41,8 @@
         super(DeepLEngine, self).__init__(plugin, parent)
         
         self.__splitPattern = re.compile(r"([^\.!\?;]+[\.!\?;]*)")
+        
+        QTimer.singleShot(0, self.availableTranslationsLoaded.emit)
     
     def engineName(self):
         """
--- a/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/GlosbeEngine.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/GlosbeEngine.py	Wed Aug 01 19:43:34 2018 +0200
@@ -15,7 +15,7 @@
 
 import json
 
-from PyQt5.QtCore import QUrl
+from PyQt5.QtCore import QUrl, QTimer
 
 from .TranslationEngine import TranslationEngine
 
@@ -36,6 +36,8 @@
         @param parent reference to the parent object (QObject)
         """
         super(GlosbeEngine, self).__init__(plugin, parent)
+        
+        QTimer.singleShot(0, self.availableTranslationsLoaded.emit)
     
     def engineName(self):
         """
--- a/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/GoogleV1Engine.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/GoogleV1Engine.py	Wed Aug 01 19:43:34 2018 +0200
@@ -12,7 +12,7 @@
 import json
 import re
 
-from PyQt5.QtCore import QByteArray, QUrl
+from PyQt5.QtCore import QByteArray, QUrl, QTimer
 
 import Utilities
 
@@ -36,6 +36,8 @@
         @param parent reference to the parent object (QObject)
         """
         super(GoogleV1Engine, self).__init__(plugin, parent)
+        
+        QTimer.singleShot(0, self.availableTranslationsLoaded.emit)
     
     def engineName(self):
         """
--- a/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/GoogleV2Engine.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/GoogleV2Engine.py	Wed Aug 01 19:43:34 2018 +0200
@@ -11,7 +11,7 @@
 
 import json
 
-from PyQt5.QtCore import QUrl
+from PyQt5.QtCore import QUrl, QTimer
 
 from .TranslationEngine import TranslationEngine
 
@@ -31,6 +31,8 @@
         @param parent reference to the parent object (QObject)
         """
         super(GoogleV2Engine, self).__init__(plugin, parent)
+        
+        QTimer.singleShot(0, self.availableTranslationsLoaded.emit)
     
     def engineName(self):
         """
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/IbmWatsonEngine.py	Wed Aug 01 19:43:34 2018 +0200
@@ -0,0 +1,275 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the IBM Watson translation engine.
+"""
+
+from __future__ import unicode_literals
+try:
+    str = unicode
+except NameError:
+    pass
+
+import json
+
+from PyQt5.QtCore import QUrl, QByteArray, QTimer
+from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, \
+    QNetworkReply
+
+from E5Gui import E5MessageBox
+
+from E5Network.E5NetworkProxyFactory import proxyAuthenticationRequired
+
+from Globals import qVersionTuple
+
+from .TranslationEngine import TranslationEngine
+
+
+class IbmWatsonEngine(TranslationEngine):
+    """
+    Class implementing the translation engine for the IBM Watson Language
+    Translator service.
+    """
+    # Documentation:
+    # https://www.ibm.com/watson/developercloud/language-translator
+    #
+    # Start page:
+    # https://www.ibm.com/watson/services/language-translator/
+    
+    def __init__(self, plugin, parent=None):
+        """
+        Constructor
+        
+        @param plugin reference to the plugin object
+        @type TranslatorPlugin
+        @param parent reference to the parent object
+        @type QObject
+        """
+        super(IbmWatsonEngine, self).__init__(plugin, parent)
+        
+        self.__ui = parent
+        
+        self.__networkManager = QNetworkAccessManager(self)
+        self.__networkManager.proxyAuthenticationRequired.connect(
+            proxyAuthenticationRequired)
+        
+        self.__availableTranslations = {}
+        # dictionary of sets of available translations
+        
+        self.__replies = []
+        
+        QTimer.singleShot(0, self.__getTranslationModels)
+    
+    def engineName(self):
+        """
+        Public method to return the name of the engine.
+        
+        @return engine name
+        @rtype str
+        """
+        return "ibm_watson"
+    
+    def supportedLanguages(self):
+        """
+        Public method to get the supported languages.
+        
+        @return list of supported language codes
+        @rtype list of str
+        """
+        return list(self.__availableTranslations.keys())
+    
+    def supportedTargetLanguages(self, original):
+        """
+        Public method to get a list of supported target languages for an
+        original language.
+        
+        @param original original language
+        @type str
+        @return list of supported target languages for the given original
+        @rtype list of str
+        """
+        targets = self.__availableTranslations.get(original, set())
+        return list(targets)
+    
+    def hasTTS(self):
+        """
+        Public method indicating the Text-to-Speech capability.
+        
+        @return flag indicating the Text-to-Speech capability
+        @rtype bool
+        """
+        return False
+    
+    def getTranslation(self, requestObject, text, originalLanguage,
+                       translationLanguage):
+        """
+        Public method to translate the given text.
+        
+        @param requestObject reference to the request object
+        @type TranslatorRequest
+        @param text text to be translated
+        @type str
+        @param originalLanguage language code of the original
+        @type str
+        @param translationLanguage language code of the translation
+        @type str
+        @return tuple of translated text and flag indicating success
+        @rtype tuple of (str, bool)
+        """
+        apiKey = self.plugin.getPreferences("IbmKey")
+        if not apiKey:
+            return self.tr("A valid IBM Watson Language Translator key is"
+                           " required."), False
+        translatorUrl = self.plugin.getPreferences("IbmUrl")
+        if not translatorUrl:
+            return self.tr("A valid IBM Watson Language Translator URL is"
+                           " required."), False
+        
+        params = "?version=2018-05-01"
+        url = QUrl(translatorUrl + "/v3/translate" + params)
+        
+        requestDict = {
+            "text": [text],
+            "source": originalLanguage,
+            "target": translationLanguage,
+        }
+        request = QByteArray(json.dumps(requestDict).encode("utf-8"))
+        
+        extraHeaders = [
+            (b"Authorization",
+             b"Basic " + QByteArray(
+                 b"apikey:" + apiKey.encode("utf-8")).toBase64())
+        ]
+        
+        response, ok = requestObject.post(url, request, dataType="json",
+                                          extraHeaders=extraHeaders)
+        if ok:
+            try:
+                responseDict = json.loads(response)
+            except ValueError:
+                return self.tr("Invalid response received"), False
+            
+            if "translations" not in responseDict:
+                return self.tr("No translation available."), False
+            
+            result = ""
+            translations = responseDict["translations"]
+            for translation in translations:
+                result += translation["translation"]
+                if translation != translations[-1]:
+                    result += "<br/>"
+        else:
+            result = response
+        return result, ok
+    
+    def __adjustLanguageCode(self, code):
+        """
+        Private method to adjust a given language code.
+        
+        @param code code to be adjusted
+        @type str
+        @return adjusted language code
+        @rtype str
+        """
+        if code == "zh":
+            return "zh-CN"
+        else:
+            return code
+    
+    def __getTranslationModels(self):
+        """
+        Private method to get the translation models supported by IBM Watson
+        Language Translator.
+        """
+        apiKey = self.plugin.getPreferences("IbmKey")
+        if not apiKey:
+            E5MessageBox.critical(
+                self.__ui,
+                self.tr("Error Getting Available Translations"),
+                self.tr("A valid IBM Watson Language Translator key is"
+                        " required.")
+            )
+            return
+        translatorUrl = self.plugin.getPreferences("IbmUrl")
+        if not translatorUrl:
+            E5MessageBox.critical(
+                self.__ui,
+                self.tr("Error Getting Available Translations"),
+                self.tr("A valid IBM Watson Language Translator URL is"
+                        " required.")
+            )
+            return
+        
+        params = "?version=2018-05-01"
+        url = QUrl(translatorUrl + "/v3/models" + params)
+        
+        extraHeaders = [
+            (b"Authorization",
+             b"Basic " + QByteArray(
+                 b"apikey:" + apiKey.encode("utf-8")).toBase64())
+        ]
+        
+        request = QNetworkRequest(url)
+        if qVersionTuple() >= (5, 6, 0):
+            request.setAttribute(QNetworkRequest.FollowRedirectsAttribute,
+                                 True)
+        if extraHeaders:
+            for name, value in extraHeaders:
+                request.setRawHeader(name, value)
+        reply = self.__networkManager.get(request)
+        reply.finished.connect(
+            lambda: self.__getTranslationModelsReplyFinished(reply))
+        self.__replies.append(reply)
+    
+    def __getTranslationModelsReplyFinished(self, reply):
+        """
+        Private slot handling the receipt of the available translations.
+        
+        @param reply reference to the network reply object
+        @type QNetworkReply
+        """
+        if reply in self.__replies:
+            self.__replies.remove(reply)
+            reply.deleteLater()
+            
+            if reply.error() != QNetworkReply.NoError:
+                errorStr = reply.errorString()
+                E5MessageBox.critical(
+                    self.__ui,
+                    self.tr("Error Getting Available Translations"),
+                    self.tr("The server sent an error indication.\n"
+                            "Error: {0}").format(errorStr)
+                )
+                return
+            else:
+                response = str(reply.readAll(), "utf-8", "replace")
+                try:
+                    responseDict = json.loads(response)
+                except ValueError:
+                    E5MessageBox.critical(
+                        self.__ui,
+                        self.tr("Error Getting Available Translations"),
+                        self.tr("Invalid response received")
+                    )
+                    return
+                
+                if "models" not in responseDict:
+                    E5MessageBox.critical(
+                        self.__ui,
+                        self.tr("Error Getting Available Translations"),
+                        self.tr("No translation available.")
+                    )
+                    return
+                
+                for model in responseDict["models"]:
+                    if model["status"] == "available":
+                        source = self.__adjustLanguageCode(model["source"])
+                        target = self.__adjustLanguageCode(model["target"])
+                        if source not in self.__availableTranslations:
+                            self.__availableTranslations[source] = set()
+                        self.__availableTranslations[source].add(target)
+                
+                self.availableTranslationsLoaded.emit()
--- a/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/MicrosoftEngine.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/MicrosoftEngine.py	Wed Aug 01 19:43:34 2018 +0200
@@ -13,7 +13,7 @@
 except NameError:
     pass
 
-from PyQt5.QtCore import QUrl, QDateTime, QByteArray
+from PyQt5.QtCore import QUrl, QDateTime, QByteArray, QTimer
 
 from .TranslationEngine import TranslationEngine
 
@@ -41,6 +41,8 @@
             "zh-CN": "zh-CHS",
             "zh-TW": "zh-CHT",
         }
+        
+        QTimer.singleShot(0, self.availableTranslationsLoaded.emit)
     
     def engineName(self):
         """
--- a/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/MyMemoryEngine.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/MyMemoryEngine.py	Wed Aug 01 19:43:34 2018 +0200
@@ -15,7 +15,7 @@
 
 import json
 
-from PyQt5.QtCore import QUrl
+from PyQt5.QtCore import QUrl, QTimer
 
 from .TranslationEngine import TranslationEngine
 
@@ -36,6 +36,8 @@
         @param parent reference to the parent object (QObject)
         """
         super(MyMemoryEngine, self).__init__(plugin, parent)
+        
+        QTimer.singleShot(0, self.availableTranslationsLoaded.emit)
     
     def engineName(self):
         """
--- a/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/PromtEngine.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/PromtEngine.py	Wed Aug 01 19:43:34 2018 +0200
@@ -15,7 +15,7 @@
 
 import json
 
-from PyQt5.QtCore import QUrl, QByteArray
+from PyQt5.QtCore import QUrl, QByteArray, QTimer
 
 import Utilities
 
@@ -50,6 +50,8 @@
             "pt": "p",
             "ru": "r",
         }
+        
+        QTimer.singleShot(0, self.availableTranslationsLoaded.emit)
     
     def engineName(self):
         """
--- a/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/TranslationEngine.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/TranslationEngine.py	Wed Aug 01 19:43:34 2018 +0200
@@ -9,14 +9,19 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import QObject
+from PyQt5.QtCore import pyqtSignal, QObject
 
 
 class TranslationEngine(QObject):
     """
     Class implementing the translation engine base class containing
     default methods.
+    
+    @signal availableTranslationsLoaded() emitted to indicate the availability
+        of the list of supported translation languages
     """
+    availableTranslationsLoaded = pyqtSignal()
+    
     def __init__(self, plugin, parent=None):
         """
         Constructor
@@ -44,6 +49,29 @@
         """
         return []
     
+    def supportedTargetLanguages(self, original):
+        """
+        Public method to get a list of supported target languages for an
+        original language.
+        
+        Note: The default implementation return the list of supported languages
+        (i.e. the same as those for the source) with the given original
+        removed.
+        
+        @param original original language
+        @type str
+        @return list of supported target languages for the given original
+        @rtype list of str
+        """
+        targetLanguages = self.supportedLanguages()[:]
+        try:
+            targetLanguages.remove(original)
+        except ValueError:
+            # original is not in the list of target languages
+            pass
+        
+        return targetLanguages
+    
     def hasTTS(self):
         """
         Public method indicating the Text-to-Speech capability.
--- a/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/YandexEngine.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/YandexEngine.py	Wed Aug 01 19:43:34 2018 +0200
@@ -15,7 +15,7 @@
 
 import json
 
-from PyQt5.QtCore import QUrl, QByteArray
+from PyQt5.QtCore import QUrl, QByteArray, QTimer
 
 import Utilities
 
@@ -50,6 +50,8 @@
             501: self.tr("The specified translation direction is not"
                          " supported."),
         }
+        
+        QTimer.singleShot(0, self.availableTranslationsLoaded.emit)
     
     def engineName(self):
         """
--- a/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/__init__.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/__init__.py	Wed Aug 01 19:43:34 2018 +0200
@@ -24,7 +24,7 @@
     @return names of supported engines (list of string)
     """
     return ["googlev1", "mymemory", "glosbe", "promt", "yandex", "googlev2",
-            "microsoft", "deepl"]
+            "microsoft", "deepl", "ibm_watson"]
 
 
 def engineDisplayName(name):
@@ -50,6 +50,8 @@
         return QCoreApplication.translate("TranslatorEngines", "Microsoft")
     elif name == "deepl":
         return QCoreApplication.translate("TranslatorEngines", "DeepL")
+    elif name == "ibm_watson":
+        return QCoreApplication.translate("TranslatorEngines", "IBM Watson")
     else:
         return QCoreApplication.translate(
             "TranslatorEngines", "Unknow translation service name ({0})")\
@@ -89,6 +91,9 @@
     elif name == "deepl":
         from .DeepLEngine import DeepLEngine
         engine = DeepLEngine(plugin, parent)
+    elif name == "ibm_watson":
+        from .IbmWatsonEngine import IbmWatsonEngine
+        engine = IbmWatsonEngine(plugin, parent)
     else:
         engine = None
     return engine
@@ -126,5 +131,7 @@
         return "https://console.developers.google.com/"
     elif name == "microsoft":
         return "https://portal.azure.com"
+    elif name == "ibm_watson":
+        return "https://www.ibm.com/watson/services/language-translator/"
     else:
         return ""
--- a/Plugins/UiExtensionPlugins/Translator/TranslatorRequest.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Plugins/UiExtensionPlugins/Translator/TranslatorRequest.py	Wed Aug 01 19:43:34 2018 +0200
@@ -14,12 +14,14 @@
 except NameError:
     pass
 
-from PyQt5.QtCore import qVersion, QObject, QEventLoop, QByteArray
+from PyQt5.QtCore import QObject, QEventLoop, QByteArray
 from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, \
     QNetworkReply
 
 from E5Network.E5NetworkProxyFactory import proxyAuthenticationRequired
 
+from Globals import qVersionTuple
+
 
 class TranslatorRequest(QObject):
     """
@@ -56,7 +58,9 @@
         @return server response (QByteArray) or error message (string)
         """
         request = QNetworkRequest(requestUrl)
-        request.setAttribute(QNetworkRequest.FollowRedirectsAttribute, True)
+        if qVersionTuple() >= (5, 6, 0):
+            request.setAttribute(QNetworkRequest.FollowRedirectsAttribute,
+                                 True)
         if extraHeaders:
             for name, value in extraHeaders:
                 request.setRawHeader(name, value)
@@ -88,12 +92,13 @@
                              self.__contentTypes[dataType])
         request.setRawHeader(b"Content-Length",
                              QByteArray.number(requestData.size()))
-        if qVersion() >= "5.6.0":
+        if qVersionTuple() >= (5, 6, 0):
             request.setAttribute(QNetworkRequest.FollowRedirectsAttribute,
                                  True)
         if extraHeaders:
             for name, value in extraHeaders:
                 request.setRawHeader(name, value)
+        request.setUrl(requestUrl)
         reply = self.__networkManager.post(request, requestData)
         if not self.__loop.isRunning():
             self.__loop.exec_()
--- a/Plugins/UiExtensionPlugins/Translator/TranslatorWidget.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Plugins/UiExtensionPlugins/Translator/TranslatorWidget.py	Wed Aug 01 19:43:34 2018 +0200
@@ -74,18 +74,11 @@
         self.pronounceTransButton.setEnabled(False)
         
         selectedEngine = self.__plugin.getPreferences("SelectedEngine")
-        origLanguage = self.__plugin.getPreferences("OriginalLanguage")
-        transLanguage = self.__plugin.getPreferences("TranslationLanguage")
         
         self.__updateEngines()
         engineIndex = self.engineComboBox.findData(selectedEngine)
         self.engineComboBox.setCurrentIndex(engineIndex)
         self.__engineComboBoxCurrentIndexChanged(engineIndex)
-        # this calls self.__updateLanguages() implicitly
-        self.origLanguageComboBox.setCurrentIndex(
-            self.origLanguageComboBox.findData(origLanguage))
-        self.transLanguageComboBox.setCurrentIndex(
-            self.transLanguageComboBox.findData(transLanguage))
         
         self.engineComboBox.currentIndexChanged.connect(
             self.__engineComboBoxCurrentIndexChanged)
@@ -96,25 +89,27 @@
         Private slot to update the language combo boxes.
         """
         supportedCodes = self.__translationEngine.supportedLanguages()
+        enabledCodes = self.__plugin.getPreferences("EnabledLanguages")
+        
+        # 1. save current selections
         origLanguage = self.origLanguageComboBox.itemData(
             self.origLanguageComboBox.currentIndex())
-        transLanguage = self.transLanguageComboBox.itemData(
-            self.transLanguageComboBox.currentIndex())
+        
+        # 2. reload the original language combo box
+        self.origLanguageComboBox.blockSignals(True)
         self.origLanguageComboBox.clear()
-        self.transLanguageComboBox.clear()
-        for code in self.__plugin.getPreferences("EnabledLanguages"):
+        for code in enabledCodes:
             if code in supportedCodes:
                 language = self.__languages.getLanguage(code)
                 if language:
                     icon = self.__languages.getLanguageIcon(code)
                     self.origLanguageComboBox.addItem(icon, language, code)
-                    self.transLanguageComboBox.addItem(icon, language, code)
         self.origLanguageComboBox.model().sort(0)
-        self.transLanguageComboBox.model().sort(0)
-        self.origLanguageComboBox.setCurrentIndex(
-            self.origLanguageComboBox.findData(origLanguage))
-        self.transLanguageComboBox.setCurrentIndex(
-            self.transLanguageComboBox.findData(transLanguage))
+        origIndex = self.origLanguageComboBox.findData(origLanguage)
+        if origIndex == -1:
+            origIndex = 0
+        self.origLanguageComboBox.blockSignals(False)
+        self.origLanguageComboBox.setCurrentIndex(origIndex)
     
     def __updateEngines(self):
         """
@@ -190,10 +185,22 @@
         """
         Private slot to swap the languages.
         """
-        oIdx = self.origLanguageComboBox.currentIndex()
-        self.origLanguageComboBox.setCurrentIndex(
+        # save selected language codes
+        oLanguage = self.origLanguageComboBox.itemData(
+            self.origLanguageComboBox.currentIndex())
+        
+        tLanguage = self.transLanguageComboBox.itemData(
             self.transLanguageComboBox.currentIndex())
-        self.transLanguageComboBox.setCurrentIndex(oIdx)
+        
+        oIdx = self.origLanguageComboBox.findData(tLanguage)
+        if oIdx < 0:
+            oIdx = 0
+        self.origLanguageComboBox.setCurrentIndex(oIdx)
+        
+        tIdx = self.transLanguageComboBox.findData(oLanguage)
+        if tIdx < 0:
+            tIdx = 0
+        self.transLanguageComboBox.setCurrentIndex(tIdx)
         
         origText = self.origEdit.toPlainText()
         self.origEdit.setPlainText(self.transEdit.toPlainText())
@@ -212,10 +219,9 @@
         """
         Private slot to handle changes of the original text.
         """
-        enable = bool(self.origEdit.toPlainText())
-        self.translateButton.setEnabled(enable)
         self.__updatePronounceButtons()
         self.__updateClearButton()
+        self.__updateTranslateButton()
     
     @pyqtSlot()
     def on_transEdit_textChanged(self):
@@ -234,6 +240,31 @@
         """
         self.__plugin.setPreferences(
             "OriginalLanguage", self.origLanguageComboBox.itemData(index))
+        
+        supportedTargetCodes = \
+            self.__translationEngine.supportedTargetLanguages(
+                self.origLanguageComboBox.itemData(index)
+            )
+        if supportedTargetCodes is not None:
+            enabledCodes = self.__plugin.getPreferences("EnabledLanguages")
+            transLanguage = self.transLanguageComboBox.itemData(
+                self.transLanguageComboBox.currentIndex())
+            self.transLanguageComboBox.clear()
+            if len(supportedTargetCodes) > 0:
+                for code in enabledCodes:
+                    if code in supportedTargetCodes:
+                        language = self.__languages.getLanguage(code)
+                        if language:
+                            icon = self.__languages.getLanguageIcon(code)
+                            self.transLanguageComboBox.addItem(
+                                icon, language, code)
+                self.transLanguageComboBox.model().sort(0)
+                index = self.transLanguageComboBox.findData(transLanguage)
+                if index == -1:
+                    index = 0
+                self.transLanguageComboBox.setCurrentIndex(index)
+            
+            self.__updateTranslateButton()
     
     @pyqtSlot(int)
     def on_transLanguageComboBox_currentIndexChanged(self, index):
@@ -245,25 +276,54 @@
         self.__plugin.setPreferences(
             "TranslationLanguage", self.transLanguageComboBox.itemData(index))
     
-    @pyqtSlot(int)
-    def __engineComboBoxCurrentIndexChanged(self, index):
+    @pyqtSlot()
+    def __availableTranslationsLoaded(self):
+        """
+        Private slot to handle the availability of translations.
         """
-        Private slot to handle the selection of a translation service.
+        origLanguage = self.__plugin.getPreferences("OriginalLanguage")
+        transLanguage = self.__plugin.getPreferences("TranslationLanguage")
+        
+        self.__updateLanguages()
         
-        @param index current index (integer)
+        origIndex = self.origLanguageComboBox.findData(origLanguage)
+        self.origLanguageComboBox.setCurrentIndex(origIndex)
+        self.on_origLanguageComboBox_currentIndexChanged(origIndex)
+        self.transLanguageComboBox.setCurrentIndex(
+            self.transLanguageComboBox.findData(transLanguage))
+    
+    def __ensureTranslationEngineReady(self):
         """
-        engineName = self.engineComboBox.itemData(index)
-        if self.__translationEngine and \
+        Private slot to ensure, that the currently selected translation engine
+        is ready.
+        """
+        engineName = self.engineComboBox.itemData(
+            self.engineComboBox.currentIndex())
+        if self.__translationEngine is not None and \
                 self.__translationEngine.engineName() != engineName:
+            self.__translationEngine.availableTranslationsLoaded.disconnect(
+                self.__availableTranslationsLoaded)
             self.__translationEngine.deleteLater()
             self.__translationEngine = None
         
         if self.__translationEngine is None:
             self.__translationEngine = TranslatorEngines.getTranslationEngine(
                 engineName, self.__plugin, self)
+            if self.__translationEngine is not None:
+                self.__translationEngine.availableTranslationsLoaded.connect(
+                    self.__availableTranslationsLoaded)
+    
+    @pyqtSlot(int)
+    def __engineComboBoxCurrentIndexChanged(self, index):
+        """
+        Private slot to handle the selection of a translation service.
+        
+        @param index current index
+        @type int
+        """
+        self.__ensureTranslationEngineReady()
         
         self.__updatePronounceButtons()
-        self.__updateLanguages()
         
         self.__plugin.setPreferences(
             "SelectedEngine", self.engineComboBox.itemData(index))
@@ -272,7 +332,10 @@
         """
         Private slot to set the state of the pronounce buttons.
         """
-        hasTTS = self.__translationEngine.hasTTS()
+        if self.__translationEngine is not None:
+            hasTTS = self.__translationEngine.hasTTS()
+        else:
+            hasTTS = False
         self.pronounceOrigButton.setEnabled(
             hasTTS and bool(self.origEdit.toPlainText()))
         self.pronounceTransButton.setEnabled(
@@ -286,6 +349,14 @@
             bool(self.transEdit.toPlainText())
         self.clearButton.setEnabled(enable)
     
+    def __updateTranslateButton(self):
+        """
+        Private slot to set the state of the translate button.
+        """
+        enable = bool(self.origEdit.toPlainText())
+        enable &= bool(self.__translationLanguage())
+        self.translateButton.setEnabled(enable)
+    
     def __translate(self, text, originalLanguage, translationLanguage):
         """
         Private method to translate the given text.
@@ -300,16 +371,7 @@
             from .TranslatorRequest import TranslatorRequest
             self.__translatorRequest = TranslatorRequest(self)
         
-        engineName = self.engineComboBox.itemData(
-            self.engineComboBox.currentIndex())
-        if self.__translationEngine and \
-                self.__translationEngine.engineName() != engineName:
-            self.__translationEngine.deleteLater()
-            self.__translationEngine = None
-        
-        if self.__translationEngine is None:
-            self.__translationEngine = TranslatorEngines.getTranslationEngine(
-                engineName, self.__plugin, self)
+        self.__ensureTranslationEngineReady()
         
         result, ok = self.__translationEngine.getTranslation(
             self.__translatorRequest, text, originalLanguage,
@@ -339,16 +401,7 @@
         if self.__mediaPlayer.state() == QMediaPlayer.PlayingState:
             return
         
-        engineName = self.engineComboBox.itemData(
-            self.engineComboBox.currentIndex())
-        if self.__translationEngine and \
-                self.__translationEngine.engineName() != engineName:
-            self.__translationEngine.deleteLater()
-            self.__translationEngine = None
-        
-        if self.__translationEngine is None:
-            self.__translationEngine = TranslatorEngines.getTranslationEngine(
-                engineName, self.__plugin, self)
+        self.__ensureTranslationEngineReady()
         
         if not self.__translationEngine.hasTTS():
             E5MessageBox.critical(
Binary file Plugins/UiExtensionPlugins/Translator/icons/engines/ibm_watson.png has changed
--- a/Preferences/ConfigurationPages/InterfacePage.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Preferences/ConfigurationPages/InterfacePage.py	Wed Aug 01 19:43:34 2018 +0200
@@ -82,24 +82,33 @@
         else:
             self.brTopButton.setChecked(True)
         
-        layout = Preferences.getUILayout()
-        if layout[0] == "Sidebars":
+        layoutType = Preferences.getUI("LayoutType")
+        if layoutType == "Sidebars":
             index = 0
-        elif layout[0] == "Toolboxes":
+        elif layoutType == "Toolboxes":
             index = 1
         else:
             index = 0   # default for bad values
         self.layoutComboBox.setCurrentIndex(index)
-        if layout[1] == 0:
-            self.separateShellButton.setChecked(True)
-        else:
-            self.debugEmbeddedShellButton.setChecked(True)
-        if layout[2] == 0:
-            self.separateFileBrowserButton.setChecked(True)
-        elif layout[2] == 1:
-            self.debugEmbeddedFileBrowserButton.setChecked(True)
-        else:
-            self.projectEmbeddedFileBrowserButton.setChecked(True)
+        
+        # integrated tools activation
+        # left side
+        self.templateViewerCheckBox.setChecked(
+            Preferences.getUI("ShowTemplateViewer"))
+        self.fileBrowserCheckBox.setChecked(
+            Preferences.getUI("ShowFileBrowser"))
+        self.symbolsCheckBox.setChecked(
+            Preferences.getUI("ShowSymbolsViewer"))
+        # right side
+        self.codeDocumentationViewerCheckBox.setChecked(
+            Preferences.getUI("ShowCodeDocumentationViewer"))
+        self.cooperationCheckBox.setChecked(
+            Preferences.getUI("ShowCooperation"))
+        self.ircCheckBox.setChecked(
+            Preferences.getUI("ShowIrc"))
+        # bottom side
+        self.numbersCheckBox.setChecked(
+            Preferences.getUI("ShowNumbersViewer"))
         
         self.tabsGroupBox.setEnabled(True)
         self.tabsCloseButtonCheckBox.setChecked(
@@ -167,24 +176,39 @@
         Preferences.setUILanguage(uiLanguage)
         
         # save the interface layout settings
-        if self.separateShellButton.isChecked():
-            layout2 = 0
-        else:
-            layout2 = 1
-        if self.separateFileBrowserButton.isChecked():
-            layout3 = 0
-        elif self.debugEmbeddedFileBrowserButton.isChecked():
-            layout3 = 1
+        if self.layoutComboBox.currentIndex() == 0:
+            layoutType = "Sidebars"
+        elif self.layoutComboBox.currentIndex() == 1:
+            layoutType = "Toolboxes"
         else:
-            layout3 = 2
-        if self.layoutComboBox.currentIndex() == 0:
-            layout1 = "Sidebars"
-        elif self.layoutComboBox.currentIndex() == 1:
-            layout1 = "Toolboxes"
-        else:
-            layout1 = "Sidebars"    # just in case
-        layout = (layout1, layout2, layout3)
-        Preferences.setUILayout(layout)
+            layoutType = "Sidebars"    # just in case
+        Preferences.setUI("LayoutType", layoutType)
+        
+        # save the integrated tools activation
+        # left side
+        Preferences.setUI(
+            "ShowTemplateViewer",
+            self.templateViewerCheckBox.isChecked())
+        Preferences.setUI(
+            "ShowFileBrowser",
+            self.fileBrowserCheckBox.isChecked())
+        Preferences.setUI(
+            "ShowSymbolsViewer",
+            self.symbolsCheckBox.isChecked())
+        # right side
+        Preferences.setUI(
+            "ShowCodeDocumentationViewer",
+            self.codeDocumentationViewerCheckBox.isChecked())
+        Preferences.setUI(
+            "ShowCooperation",
+            self.cooperationCheckBox.isChecked())
+        Preferences.setUI(
+            "ShowIrc",
+            self.ircCheckBox.isChecked())
+        # bottom side
+        Preferences.setUI(
+            "ShowNumbersViewer",
+            self.numbersCheckBox.isChecked())
         
         Preferences.setUI(
             "SingleCloseButton",
--- a/Preferences/ConfigurationPages/InterfacePage.ui	Sat Jul 07 12:01:23 2018 +0200
+++ b/Preferences/ConfigurationPages/InterfacePage.ui	Wed Aug 01 19:43:34 2018 +0200
@@ -7,10 +7,10 @@
     <x>0</x>
     <y>0</y>
     <width>557</width>
-    <height>1121</height>
+    <height>1300</height>
    </rect>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
+  <layout class="QVBoxLayout" name="verticalLayout_3">
    <item>
     <widget class="QLabel" name="headerLabel">
      <property name="text">
@@ -456,76 +456,110 @@
     </layout>
    </item>
    <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <item>
-      <widget class="QGroupBox" name="groupBox_9">
-       <property name="title">
-        <string>Shell</string>
-       </property>
-       <layout class="QVBoxLayout" name="_8">
-        <item>
-         <widget class="QRadioButton" name="separateShellButton">
-          <property name="toolTip">
-           <string>Select to get a separate shell window</string>
-          </property>
-          <property name="text">
-           <string>separate window</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QRadioButton" name="debugEmbeddedShellButton">
-          <property name="toolTip">
-           <string>Select to embed the shell in the Debug-Viewer</string>
-          </property>
-          <property name="text">
-           <string>embed in Debug-Viewer</string>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </widget>
-     </item>
-     <item>
-      <widget class="QGroupBox" name="groupBox_10">
-       <property name="title">
-        <string>File-Browser</string>
-       </property>
-       <layout class="QVBoxLayout" name="_9">
-        <item>
-         <widget class="QRadioButton" name="separateFileBrowserButton">
-          <property name="toolTip">
-           <string>Select to get a separate file browser window</string>
-          </property>
-          <property name="text">
-           <string>separate window</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QRadioButton" name="debugEmbeddedFileBrowserButton">
-          <property name="toolTip">
-           <string>Select to embed the file browser in the Debug-Viewer</string>
-          </property>
-          <property name="text">
-           <string>embed in Debug-Viewer</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QRadioButton" name="projectEmbeddedFileBrowserButton">
-          <property name="toolTip">
-           <string>Select to embed the file browser in the Project-Viewer</string>
-          </property>
-          <property name="text">
-           <string>embed in Project-Viewer</string>
-          </property>
-         </widget>
-        </item>
-       </layout>
-      </widget>
-     </item>
-    </layout>
+    <widget class="QGroupBox" name="groupBox_3">
+     <property name="title">
+      <string>Integrated Tools Activation</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout">
+      <item>
+       <widget class="QGroupBox" name="groupBox_10">
+        <property name="title">
+         <string>Left Side</string>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_5">
+         <item row="0" column="0">
+          <widget class="QCheckBox" name="templateViewerCheckBox">
+           <property name="toolTip">
+            <string>Select to activate the Template viewer</string>
+           </property>
+           <property name="text">
+            <string>Template-Viewer</string>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="QCheckBox" name="fileBrowserCheckBox">
+           <property name="toolTip">
+            <string>Select to activate the File-Browser widget</string>
+           </property>
+           <property name="text">
+            <string>File-Browser</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QCheckBox" name="symbolsCheckBox">
+           <property name="toolTip">
+            <string>Select to activate the Symbols widget</string>
+           </property>
+           <property name="text">
+            <string>Symbols</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item>
+       <widget class="QGroupBox" name="groupBox_9">
+        <property name="title">
+         <string>Right Side</string>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_4">
+         <item row="0" column="0">
+          <widget class="QCheckBox" name="codeDocumentationViewerCheckBox">
+           <property name="toolTip">
+            <string>Select to activate the Code Documentation Viewer</string>
+           </property>
+           <property name="text">
+            <string>Code Documentation Viewer</string>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="QCheckBox" name="cooperationCheckBox">
+           <property name="toolTip">
+            <string>Select to activate the Cooperation widget</string>
+           </property>
+           <property name="text">
+            <string>Cooperation</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QCheckBox" name="ircCheckBox">
+           <property name="toolTip">
+            <string>Select to activate the IRC widget</string>
+           </property>
+           <property name="text">
+            <string>IRC</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+      <item>
+       <widget class="QGroupBox" name="groupBox_11">
+        <property name="title">
+         <string>Bottom Side</string>
+        </property>
+        <layout class="QGridLayout" name="gridLayout_6">
+         <item row="0" column="0">
+          <widget class="QCheckBox" name="numbersCheckBox">
+           <property name="toolTip">
+            <string>Select to activate the Numbers widget</string>
+           </property>
+           <property name="text">
+            <string>Numbers</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </widget>
+      </item>
+     </layout>
+    </widget>
    </item>
    <item>
     <widget class="QGroupBox" name="tabsGroupBox">
@@ -594,11 +628,13 @@
   <tabstop>delaySpinBox</tabstop>
   <tabstop>languageComboBox</tabstop>
   <tabstop>layoutComboBox</tabstop>
-  <tabstop>separateShellButton</tabstop>
-  <tabstop>debugEmbeddedShellButton</tabstop>
-  <tabstop>separateFileBrowserButton</tabstop>
-  <tabstop>debugEmbeddedFileBrowserButton</tabstop>
-  <tabstop>projectEmbeddedFileBrowserButton</tabstop>
+  <tabstop>templateViewerCheckBox</tabstop>
+  <tabstop>fileBrowserCheckBox</tabstop>
+  <tabstop>symbolsCheckBox</tabstop>
+  <tabstop>codeDocumentationViewerCheckBox</tabstop>
+  <tabstop>cooperationCheckBox</tabstop>
+  <tabstop>ircCheckBox</tabstop>
+  <tabstop>numbersCheckBox</tabstop>
   <tabstop>tabsCloseButtonCheckBox</tabstop>
   <tabstop>resetLayoutButton</tabstop>
  </tabstops>
--- a/Preferences/ConfigurationPages/WebBrowserPage.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Preferences/ConfigurationPages/WebBrowserPage.py	Wed Aug 01 19:43:34 2018 +0200
@@ -14,6 +14,8 @@
 from .ConfigurationPageBase import ConfigurationPageBase
 from .Ui_WebBrowserPage import Ui_WebBrowserPage
 
+from Globals import qVersionTuple
+
 import UI.PixmapCache
 import Preferences
 
@@ -73,6 +75,15 @@
         except KeyError:
             self.screenCaptureCheckBox.setEnabled(False)
             self.webGLCheckBox.setEnabled(False)
+        try:
+            # Qt 5.11
+            self.autoplayMediaCheckBox.setChecked(
+                Preferences.getWebBrowser("PlaybackRequiresUserGesture"))
+            self.webRtcPublicOnlyCheckBox.setChecked(
+                Preferences.getWebBrowser("WebRTCPublicInterfacesOnly"))
+        except KeyError:
+            self.autoplayMediaCheckBox.setEnabled(False)
+            self.webRtcPublicOnlyCheckBox.setEnabled(False)
         
         self.javaScriptGroup.setChecked(
             Preferences.getWebBrowser("JavaScriptEnabled"))
@@ -87,6 +98,12 @@
             self.jsActivateWindowsCheckBox.setEnabled(False)
         self.jsClipboardCheckBox.setChecked(
             Preferences.getWebBrowser("JavaScriptCanAccessClipboard"))
+        try:
+            # Qt 5.11
+            self.jsPasteCheckBox.setChecked(
+                Preferences.getWebBrowser("JavaScriptCanPaste"))
+        except KeyError:
+            self.jsPasteCheckBox.setEnabled(False)
         self.pluginsCheckBox.setChecked(
             Preferences.getWebBrowser("PluginsEnabled"))
         self.doNotTrackCheckBox.setChecked(
@@ -205,10 +222,22 @@
         self.autoScrollDividerSpinBox.setValue(
             Preferences.getWebBrowser("AutoScrollDivider"))
         
-        self.webInspectorGroup.setChecked(
-            Preferences.getWebBrowser("WebInspectorEnabled"))
-        self.webInspectorPortSpinBox.setValue(
-            Preferences.getWebBrowser("WebInspectorPort"))
+        if qVersionTuple() < (5, 11, 0):
+            self.webInspectorGroup.setChecked(
+                Preferences.getWebBrowser("WebInspectorEnabled"))
+            self.webInspectorPortSpinBox.setValue(
+                Preferences.getWebBrowser("WebInspectorPort"))
+        else:
+            self.webInspectorGroup.setEnabled(False)
+        
+        if qVersionTuple() >= (5, 11, 0):
+            self.protocolHandlerComboBox.setCurrentIndex(
+                Preferences.getWebBrowser("AcceptProtocolHandlerRequest"))
+            self.requestQuotaComboBox.setCurrentIndex(
+                Preferences.getWebBrowser("AcceptQuotaRequest"))
+        else:
+            self.protocolHandlerComboBox.setEnabled(False)
+            self.requestQuotaComboBox.setEnabled(False)
     
     def save(self):
         """
@@ -244,6 +273,14 @@
                 "WebGLEnabled",
                 self.webGLCheckBox.isChecked())
         
+        if self.autoplayMediaCheckBox.isEnabled():
+            Preferences.setWebBrowser(
+                "PlaybackRequiresUserGesture",
+                self.autoplayMediaCheckBox.isChecked())
+            Preferences.setWebBrowser(
+                "WebRTCPublicInterfacesOnly",
+                self.webRtcPublicOnlyCheckBox.isChecked())
+        
         Preferences.setWebBrowser(
             "JavaScriptEnabled",
             self.javaScriptGroup.isChecked())
@@ -257,6 +294,10 @@
         Preferences.setWebBrowser(
             "JavaScriptCanAccessClipboard",
             self.jsClipboardCheckBox.isChecked())
+        if self.jsPasteCheckBox.isEnabled():
+            Preferences.setWebBrowser(
+                "JavaScriptCanPaste",
+                self.jsPasteCheckBox.isChecked())
         Preferences.setWebBrowser(
             "PluginsEnabled",
             self.pluginsCheckBox.isChecked())
@@ -368,12 +409,21 @@
             "AutoScrollDivider",
             self.autoScrollDividerSpinBox.value())
         
-        Preferences.setWebBrowser(
-            "WebInspectorEnabled",
-            self.webInspectorGroup.isChecked())
-        Preferences.setWebBrowser(
-            "WebInspectorPort",
-            self.webInspectorPortSpinBox.value())
+        if qVersionTuple() < (5, 11, 0):
+            Preferences.setWebBrowser(
+                "WebInspectorEnabled",
+                self.webInspectorGroup.isChecked())
+            Preferences.setWebBrowser(
+                "WebInspectorPort",
+                self.webInspectorPortSpinBox.value())
+        
+        if self.protocolHandlerComboBox.isEnabled():
+            Preferences.setWebBrowser(
+                "AcceptProtocolHandlerRequest",
+                self.protocolHandlerComboBox.currentIndex())
+            Preferences.setWebBrowser(
+                "AcceptQuotaRequest",
+                self.requestQuotaComboBox.currentIndex())
     
     @pyqtSlot()
     def on_setCurrentPageButton_clicked(self):
--- a/Preferences/ConfigurationPages/WebBrowserPage.ui	Sat Jul 07 12:01:23 2018 +0200
+++ b/Preferences/ConfigurationPages/WebBrowserPage.ui	Wed Aug 01 19:43:34 2018 +0200
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>650</width>
-    <height>2000</height>
+    <height>2300</height>
    </rect>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout_5">
@@ -127,6 +127,26 @@
         </property>
        </widget>
       </item>
+      <item row="4" column="1">
+       <widget class="QCheckBox" name="autoplayMediaCheckBox">
+        <property name="toolTip">
+         <string>Select, to inhibit playback of media content until the user interacts with the page</string>
+        </property>
+        <property name="text">
+         <string>Don't auto-play media content</string>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="0">
+       <widget class="QCheckBox" name="webRtcPublicOnlyCheckBox">
+        <property name="toolTip">
+         <string>Select to limit WebRTC to public IP addresses only</string>
+        </property>
+        <property name="text">
+         <string>Only public IP-Addresses for WebRTC</string>
+        </property>
+       </widget>
+      </item>
      </layout>
     </widget>
    </item>
@@ -370,6 +390,57 @@
     </widget>
    </item>
    <item>
+    <widget class="QGroupBox" name="groupBox_11">
+     <property name="title">
+      <string>Protocol Handler</string>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout_8">
+      <item>
+       <widget class="QLabel" name="label_18">
+        <property name="text">
+         <string>Allow websites to register protocol handlers:</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QComboBox" name="protocolHandlerComboBox">
+        <property name="toolTip">
+         <string>Select how to allow websites to register protocol handlers via &quot;navigator.registerProtocolHandler&quot;</string>
+        </property>
+        <item>
+         <property name="text">
+          <string>yes</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>no</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>ask</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer_9">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>272</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
     <widget class="QGroupBox" name="privacyGroup">
      <property name="title">
       <string>Privacy</string>
@@ -417,6 +488,16 @@
            </property>
           </widget>
          </item>
+         <item>
+          <widget class="QCheckBox" name="jsPasteCheckBox">
+           <property name="toolTip">
+            <string>Select to allow JavaScript to paste from the clipboard (this needs access to the clipboard)</string>
+           </property>
+           <property name="text">
+            <string>Allow to paste from the clipboard</string>
+           </property>
+          </widget>
+         </item>
         </layout>
        </widget>
       </item>
@@ -782,6 +863,57 @@
     </widget>
    </item>
    <item>
+    <widget class="QGroupBox" name="groupBox_10">
+     <property name="title">
+      <string>Local Storage</string>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout_7">
+      <item>
+       <widget class="QLabel" name="label_17">
+        <property name="text">
+         <string>Allow websites to request persistent storage quota:</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QComboBox" name="requestQuotaComboBox">
+        <property name="toolTip">
+         <string>Select how to allow websites to request persistent storage quota via &quot;navigator.webkitPersistentStorage.requestQuota&quot;</string>
+        </property>
+        <item>
+         <property name="text">
+          <string>yes</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>no</string>
+         </property>
+        </item>
+        <item>
+         <property name="text">
+          <string>ask</string>
+         </property>
+        </item>
+       </widget>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer_10">
+        <property name="orientation">
+         <enum>Qt::Horizontal</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>230</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
     <widget class="QGroupBox" name="groupBox_5">
      <property name="title">
       <string>Web Search</string>
@@ -1086,6 +1218,8 @@
   <tabstop>fullscreenCheckBox</tabstop>
   <tabstop>screenCaptureCheckBox</tabstop>
   <tabstop>webGLCheckBox</tabstop>
+  <tabstop>autoplayMediaCheckBox</tabstop>
+  <tabstop>webRtcPublicOnlyCheckBox</tabstop>
   <tabstop>startupCombo</tabstop>
   <tabstop>newTabCombo</tabstop>
   <tabstop>homePageEdit</tabstop>
@@ -1095,10 +1229,12 @@
   <tabstop>saveSessionCheckBox</tabstop>
   <tabstop>sessionTimerSpinBox</tabstop>
   <tabstop>defaultSchemeCombo</tabstop>
+  <tabstop>protocolHandlerComboBox</tabstop>
   <tabstop>javaScriptGroup</tabstop>
   <tabstop>jsOpenWindowsCheckBox</tabstop>
   <tabstop>jsActivateWindowsCheckBox</tabstop>
   <tabstop>jsClipboardCheckBox</tabstop>
+  <tabstop>jsPasteCheckBox</tabstop>
   <tabstop>pluginsCheckBox</tabstop>
   <tabstop>doNotTrackCheckBox</tabstop>
   <tabstop>refererSendComboBox</tabstop>
@@ -1111,6 +1247,7 @@
   <tabstop>expireHistory</tabstop>
   <tabstop>diskCacheCheckBox</tabstop>
   <tabstop>cacheSizeSpinBox</tabstop>
+  <tabstop>requestQuotaComboBox</tabstop>
   <tabstop>languageCombo</tabstop>
   <tabstop>imageSearchComboBox</tabstop>
   <tabstop>spatialCheckBox</tabstop>
--- a/Preferences/__init__.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Preferences/__init__.py	Wed Aug 01 19:43:34 2018 +0200
@@ -167,6 +167,13 @@
         "ShowFilePreview": True,
         "ShowFilePreviewJS": True,
         "ShowFilePreviewSSI": True,
+        "ShowTemplateViewer": True,             # left side
+        "ShowFileBrowser": True,                # left side
+        "ShowSymbolsViewer": True,              # left side
+        "ShowCodeDocumentationViewer": True,    # right side
+        "ShowCooperation": True,                # right side
+        "ShowIrc": True,                        # right side
+        "ShowNumbersViewer": True,              # bottom side
         "ViewProfiles2": {
             "edit": [
                 # saved state main window with toolbox windows (0)
@@ -1119,6 +1126,8 @@
         "FilterTrackingCookies": True,
         "SaveUrlColor": QColor(184, 248, 169),
         "UserAgent": "",
+        "AcceptQuotaRequest": 2,            # yes/no/ask (0, 1, 2)
+        "AcceptProtocolHandlerRequest": 2,  # yes/no/ask (0, 1, 2)
         # Auto Scroller
         "AutoScrollEnabled": True,
         "AutoScrollDivider": 8.0,
@@ -1291,6 +1300,21 @@
             })
         except AttributeError:
             pass
+        try:
+            # Qt 5.11+
+            cls.webBrowserDefaults.update({
+                "PlaybackRequiresUserGesture":
+                    webEngineSettings.testAttribute(
+                        QWebEngineSettings.PlaybackRequiresUserGesture),
+                "JavaScriptCanPaste":
+                    webEngineSettings.testAttribute(
+                        QWebEngineSettings.JavascriptCanPaste),
+                "WebRTCPublicInterfacesOnly":
+                    webEngineSettings.testAttribute(
+                        QWebEngineSettings.WebRTCPublicInterfacesOnly),
+            })
+        except AttributeError:
+            pass
         
         cls.webEngineSettingsIntitialized = True
     
@@ -1901,40 +1925,6 @@
         prefClass.settings.setValue("UI/Language", lang)
 
 
-def getUILayout(prefClass=Prefs):
-    """
-    Module function to retrieve the layout for the user interface.
-    
-    @param prefClass preferences class used as the storage area
-    @return the UI layout as a tuple of main layout, flag for
-        an embedded shell and a value for an embedded file browser
-    """
-    layoutType = prefClass.settings.value(
-        "UI/LayoutType", prefClass.uiDefaults["LayoutType"])
-    if layoutType in ["DockWindows", "FloatingWindows"]:
-        # change old fashioned layouts to the modern default
-        layoutType = prefClass.uiDefaults["LayoutType"]
-    layout = (layoutType,
-              int(prefClass.settings.value("UI/LayoutShellEmbedded",
-                  prefClass.uiDefaults["LayoutShellEmbedded"])),
-              int(prefClass.settings.value("UI/LayoutFileBrowserEmbedded",
-                  prefClass.uiDefaults["LayoutFileBrowserEmbedded"])),
-              )
-    return layout
-    
-
-def setUILayout(layout, prefClass=Prefs):
-    """
-    Module function to store the layout for the user interface.
-    
-    @param layout the layout type
-    @param prefClass preferences class used as the storage area
-    """
-    prefClass.settings.setValue("UI/LayoutType", layout[0])
-    prefClass.settings.setValue("UI/LayoutShellEmbedded", layout[1])
-    prefClass.settings.setValue("UI/LayoutFileBrowserEmbedded", layout[2])
-
-
 def getViewManager(prefClass=Prefs):
     """
     Module function to retrieve the selected viewmanager type.
@@ -1978,7 +1968,9 @@
                "LayoutShellEmbedded", "LayoutFileBrowserEmbedded",
                "CheckErrorLog", "NotificationsEnabled", "DynamicOnlineCheck",
                "OpenCrashSessionOnStartup", "CrashSessionEnabled",
-               "UseNativeMenuBar"]:
+               "ShowCodeDocumentationViewer", "ShowCooperation", "ShowIrc",
+               "ShowTemplateViewer", "ShowFileBrowser", "ShowSymbolsViewer",
+               "ShowNumbersViewer", "UseNativeMenuBar"]:
         return toBool(prefClass.settings.value(
             "UI/" + key, prefClass.uiDefaults[key]))
     elif key in ["TabViewManagerFilenameLength", "CaptionFilenameLength",
@@ -2810,7 +2802,8 @@
                  "OfflineWebApplicationCacheQuota", "CachePolicy",
                  "DownloadManagerRemovePolicy", "AdBlockUpdatePeriod",
                  "SearchLanguage", "SyncType", "SyncFtpPort",
-                 "SyncFtpIdleTimeout", "SyncEncryptionKeyLength"]:
+                 "SyncFtpIdleTimeout", "SyncEncryptionKeyLength",
+                 ]:
         return int(prefClass.settings.value(
             "Help/" + key, prefClass.helpDefaults[key]))
     elif key in ["SingleHelpWindow", "SaveGeometry", "WebSearchSuggestions",
@@ -3013,7 +3006,8 @@
                  "AdBlockUpdatePeriod", "TabManagerGroupByType",
                  "SessionAutoSaveInterval", "NewTabBehavior",
                  "RefererSendReferer", "RefererDefaultPolicy",
-                 "RefererTrimmingPolicy",
+                 "RefererTrimmingPolicy", "AcceptQuotaRequest",
+                 "AcceptProtocolHandlerRequest",
                  ]:
         return int(prefClass.settings.value(
             "WebBrowser/" + key, prefClass.webBrowserDefaults[key]))
@@ -3044,6 +3038,8 @@
                  "AllowGeolocationOnInsecureOrigins",
                  "AllowWindowActivationFromJavaScript", "ShowScrollBars",
                  "DownloadManagerAutoOpen", "DownloadManagerAutoClose",
+                 "PlaybackRequiresUserGesture", "JavaScriptCanPaste",
+                 "WebRTCPublicInterfacesOnly",
                  ]:
         return toBool(prefClass.settings.value(
             "WebBrowser/" + key, prefClass.webBrowserDefaults[key]))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Project/IdlCompilerDefineNameDialog.py	Wed Aug 01 19:43:34 2018 +0200
@@ -0,0 +1,71 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to enter the name-value pair to define a variable
+for the IDL compiler.
+"""
+
+from PyQt5.QtCore import pyqtSlot
+from PyQt5.QtWidgets import QDialog, QDialogButtonBox
+
+from .Ui_IdlCompilerDefineNameDialog import Ui_IdlCompilerDefineNameDialog
+
+
+class IdlCompilerDefineNameDialog(QDialog, Ui_IdlCompilerDefineNameDialog):
+    """
+    Class implementing a dialog to enter the name-value pair to define a
+    variable for the IDL compiler.
+    """
+    def __init__(self, name="", value="", parent=None):
+        """
+        Constructor
+        
+        @param name name of the variable
+        @type str
+        @param value value of the variable
+        @type str
+        @param parent reference to the parent widget
+        @type QWidget
+        """
+        super(IdlCompilerDefineNameDialog, self).__init__(parent)
+        self.setupUi(self)
+        
+        self.nameEdit.setText(name)
+        self.valueEdit.setText(value)
+        
+        msh = self.minimumSizeHint()
+        self.resize(max(self.width(), msh.width()), msh.height())
+        
+        self.__updateOkButton()
+    
+    def __updateOkButton(self):
+        """
+        Private slot to update the enable state of the OK button.
+        """
+        self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(
+            bool(self.nameEdit.text()))
+    
+    @pyqtSlot(str)
+    def on_nameEdit_textChanged(self, txt):
+        """
+        Private slot to handle changes of the name.
+        
+        @param txt current text of the name edit
+        @type str
+        """
+        self.__updateOkButton()
+    
+    def getData(self):
+        """
+        Public method to get the entered data.
+        
+        @return tuple containing the variable name and value
+        @rtype tuple of (str, str)
+        """
+        return (
+            self.nameEdit.text().strip(),
+            self.valueEdit.text().strip(),
+        )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Project/IdlCompilerDefineNameDialog.ui	Wed Aug 01 19:43:34 2018 +0200
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IdlCompilerDefineNameDialog</class>
+ <widget class="QDialog" name="IdlCompilerDefineNameDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>108</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Define Name</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>Name:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <widget class="QLineEdit" name="nameEdit">
+     <property name="toolTip">
+      <string>Enter the variable name</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <widget class="QLabel" name="label_2">
+     <property name="text">
+      <string>Value:</string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <widget class="QLineEdit" name="valueEdit">
+     <property name="toolTip">
+      <string>Enter an optional value</string>
+     </property>
+    </widget>
+   </item>
+   <item row="2" column="0" colspan="2">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>nameEdit</tabstop>
+  <tabstop>valueEdit</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>IdlCompilerDefineNameDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>IdlCompilerDefineNameDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Project/IdlCompilerOptionsDialog.py	Wed Aug 01 19:43:34 2018 +0200
@@ -0,0 +1,420 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to enter some IDL compiler options.
+"""
+
+from PyQt5.QtCore import pyqtSlot, Qt
+from PyQt5.QtWidgets import QDialog, QTreeWidgetItem, QInputDialog
+
+from .Ui_IdlCompilerOptionsDialog import Ui_IdlCompilerOptionsDialog
+
+import UI.PixmapCache
+
+from E5Gui import E5PathPickerDialog
+from E5Gui.E5PathPicker import E5PathPickerModes
+
+from .IdlCompilerDefineNameDialog import IdlCompilerDefineNameDialog
+
+
+class IdlCompilerOptionsDialog(QDialog, Ui_IdlCompilerOptionsDialog):
+    """
+    Class implementing a dialog to enter some IDL compiler options.
+    """
+    def __init__(self, includeDirectories, definedNames, undefinedNames,
+                 project=None, parent=None):
+        """
+        Constructor
+        
+        @param includeDirectories list of include directories
+        @type list of str
+        @param definedNames list of defined variables with name and value
+            separated by '='
+        @type list of str
+        @param undefinedNames list of undefined names
+        @type list of str
+        @param projectDirectory directory name of the project
+        @type str
+        @param parent reference to the parent widget
+        @type QWidget
+        """
+        super(IdlCompilerOptionsDialog, self).__init__(parent)
+        self.setupUi(self)
+        
+        self.__project = project
+        
+        self.idAddButton.setIcon(UI.PixmapCache.getIcon("plus.png"))
+        self.idDeleteButton.setIcon(UI.PixmapCache.getIcon("minus.png"))
+        self.idEditButton.setIcon(UI.PixmapCache.getIcon("edit.png"))
+        
+        self.dnAddButton.setIcon(UI.PixmapCache.getIcon("plus.png"))
+        self.dnDeleteButton.setIcon(UI.PixmapCache.getIcon("minus.png"))
+        self.dnEditButton.setIcon(UI.PixmapCache.getIcon("edit.png"))
+        
+        self.unAddButton.setIcon(UI.PixmapCache.getIcon("plus.png"))
+        self.unDeleteButton.setIcon(UI.PixmapCache.getIcon("minus.png"))
+        self.unEditButton.setIcon(UI.PixmapCache.getIcon("edit.png"))
+        
+        self.__populateIncludeDirectoriesList(includeDirectories)
+        self.__populateDefineNamesList(definedNames)
+        self.unList.addItems(undefinedNames)
+        
+        self.__updateIncludeDirectoryButtons()
+        self.__updateDefineNameButtons()
+        self.__updateUndefineNameButtons()
+    
+    #######################################################################
+    ## Methods implementing the 'Include Directory' option
+    #######################################################################
+    
+    def __updateIncludeDirectoryButtons(self):
+        """
+        Private method to set the state of the 'Include Directory' buttons.
+        """
+        enable = len(self.idList.selectedItems())
+        self.idDeleteButton.setEnabled(enable)
+        self.idEditButton.setEnabled(enable)
+    
+    def __populateIncludeDirectoriesList(self, includeDirectories):
+        """
+        Private method to populate the 'Include Directories' list.
+        
+        @param includeDirectories list of include directories
+        @type list of str
+        """
+        for directory in includeDirectories:
+            if self.__project:
+                path = self.__project.getRelativeUniversalPath(directory)
+                if not path:
+                    # it is the project directory
+                    path = "."
+                self.idList.addItem(path)
+            else:
+                self.idList.addItem(directory)
+    
+    def __generateIncludeDirectoriesList(self):
+        """
+        Private method to prepare the list of 'Include Directories'.
+        
+        @return list of 'Include Directories'
+        @rtype list of str
+        """
+        return [
+            self.idList.item(row).text()
+            for row in range(self.idList.count())
+        ]
+    
+    def __includeDirectoriesContain(self, directory):
+        """
+        Private method to test, if the currently defined 'Include Directories'
+        contain a given one.
+        
+        @param directory directory name to be tested
+        @type str
+        @return flag indicating that the given directory is already included
+        @rtype bool
+        """
+        return len(self.idList.findItems(directory, Qt.MatchExactly)) > 0
+    
+    @pyqtSlot()
+    def on_idList_itemSelectionChanged(self):
+        """
+        Private slot handling the selection of an 'Include Directory' entry.
+        """
+        self.__updateIncludeDirectoryButtons()
+    
+    @pyqtSlot()
+    def on_idAddButton_clicked(self):
+        """
+        Private slot to add an 'Include Directory'.
+        """
+        if self.__project:
+            defaultDirectory = self.__project.getProjectPath()
+        else:
+            defaultDirectory = ""
+        path, ok = E5PathPickerDialog.getPath(
+            self,
+            self.tr("Include Directory"),
+            self.tr("Select Include Directory"),
+            E5PathPickerModes.DirectoryShowFilesMode,
+            defaultDirectory=defaultDirectory
+        )
+        if ok and path:
+            if self.__project:
+                path = self.__project.getRelativeUniversalPath(path)
+                if not path:
+                    path = "."
+            if not self.__includeDirectoriesContain(path):
+                self.idList.addItem(path)
+    
+    @pyqtSlot()
+    def on_idDeleteButton_clicked(self):
+        """
+        Private slot to delete the selected 'Include Directory' entry.
+        """
+        itm = self.idList.selectedItems()[0]
+        row = self.idList.row(itm)
+        self.idList.takeItem(row)
+        del itm
+    
+    @pyqtSlot()
+    def on_idEditButton_clicked(self):
+        """
+        Private slot to edit the selected 'Include Directory' entry.
+        """
+        itm = self.idList.selectedItems()[0]
+        if self.__project:
+            path = self.__project.getAbsoluteUniversalPath(itm.text())
+            defaultDirectory = self.__project.getProjectPath()
+        else:
+            path = itm.text()
+            defaultDirectory = ""
+        path, ok = E5PathPickerDialog.getPath(
+            self,
+            self.tr("Include Directory"),
+            self.tr("Select Include Directory"),
+            E5PathPickerModes.DirectoryShowFilesMode,
+            path=path,
+            defaultDirectory=defaultDirectory
+        )
+        if ok and path:
+            if self.__project:
+                path = self.__project.getRelativeUniversalPath(path)
+                if not path:
+                    path = "."
+            if self.__includeDirectoriesContain(path) and itm.text() != path:
+                # the entry exists already, delete the edited one
+                row = self.idList.row(itm)
+                self.idList.takeItem(row)
+                del itm
+            else:
+                itm.setText(path)
+    
+    #######################################################################
+    ## Methods implementing the 'Define Name' option
+    #######################################################################
+    
+    def __updateDefineNameButtons(self):
+        """
+        Private method to set the state of the 'Define Name' buttons.
+        """
+        enable = len(self.dnList.selectedItems())
+        self.dnDeleteButton.setEnabled(enable)
+        self.dnEditButton.setEnabled(enable)
+    
+    def __populateDefineNamesList(self, definedNames):
+        """
+        Private method to populate the list of defined names.
+        
+        @param definedNames list of defined variables with name and value
+            separated by '='
+        @type list of str
+        """
+        for definedName in definedNames:
+            if definedName:
+                nameValueList = definedName.split("=")
+                name = nameValueList[0].strip()
+                if len(nameValueList) > 1:
+                    value = nameValueList[1].strip()
+                else:
+                    value = ""
+                QTreeWidgetItem(self.dnList, [name, value])
+        
+        self.dnList.sortItems(0, Qt.AscendingOrder)
+    
+    def __generateDefinedNamesList(self):
+        """
+        Private method to prepare the list of 'Defined Names'.
+        
+        @return list of 'Defined Names'
+        @rtype list of str
+        """
+        definedNames = []
+        for row in range(self.dnList.topLevelItemCount()):
+            itm = self.dnList.topLevelItem(row)
+            name = itm.text(0).strip()
+            value = itm.text(1).strip()
+            if value:
+                definedNames.append("{0}={1}".format(name, value))
+            else:
+                definedNames.append(name)
+        
+        return definedNames
+    
+    def __definedNamesContain(self, name):
+        """
+        Private method to test, if the currently defined 'Defined Names'
+        contain a given one.
+        
+        @param name variable name to be tested
+        @type str
+        @return flag indicating that the given name is already included
+        @rtype bool
+        """
+        return len(self.dnList.findItems(name, Qt.MatchExactly, 0)) > 0
+    
+    @pyqtSlot()
+    def on_dnList_itemSelectionChanged(self):
+        """
+        Private slot handling the selection of a 'Define Name' entry.
+        """
+        self.__updateDefineNameButtons()
+    
+    @pyqtSlot()
+    def on_dnAddButton_clicked(self):
+        """
+        Private slot to add a 'Define Name' entry.
+        """
+        dlg = IdlCompilerDefineNameDialog(parent=self)
+        if dlg.exec_() == QDialog.Accepted:
+            name, value = dlg.getData()
+            if not self.__definedNamesContain(name):
+                QTreeWidgetItem(self.dnList, [name, value])
+        
+        self.dnList.sortItems(0, Qt.AscendingOrder)
+    
+    @pyqtSlot()
+    def on_dnDeleteButton_clicked(self):
+        """
+        Private slot to delete the selected 'Define Name' entry.
+        """
+        itm = self.dnList.selectedItems()[0]
+        index = self.dnList.indexOfTopLevelItem(itm)
+        self.dnList.takeTopLevelItem(index)
+        del itm
+    
+    @pyqtSlot()
+    def on_dnEditButton_clicked(self):
+        """
+        Private slot to edit the selected 'Define Name' entry.
+        """
+        itm = self.dnList.selectedItems()[0]
+        
+        dlg = IdlCompilerDefineNameDialog(
+            name=itm.text(0), value=itm.text(1), parent=self)
+        if dlg.exec_() == QDialog.Accepted:
+            name, value = dlg.getData()
+            if self.__definedNamesContain(name) and itm.text(0) != name:
+                # the entry exists already, delete the edited one
+                index = self.dnList.indexOfTopLevelItem(itm)
+                self.dnList.takeTopLevelItem(index)
+                del itm
+                
+                # change the named one
+                itm = self.dnList.findItems(name, Qt.MatchExactly, 0)[0]
+                itm.setText(1, value)
+            else:
+                itm.setText(0, name)
+                itm.setText(1, value)
+        
+        self.dnList.sortItems(0, Qt.AscendingOrder)
+    
+    #######################################################################
+    ## Methods implementing the 'Undefine Name' option
+    #######################################################################
+    
+    def __updateUndefineNameButtons(self):
+        """
+        Private method to set the state of the 'Undefine Name' buttons.
+        """
+        enable = len(self.unList.selectedItems())
+        self.unDeleteButton.setEnabled(enable)
+        self.unEditButton.setEnabled(enable)
+    
+    def __generateUndefinedNamesList(self):
+        """
+        Private method to prepare the list of 'Undefined Names'.
+        
+        @return list of 'Undefined Names'
+        @rtype list of str
+        """
+        return [
+            self.unList.item(row).text()
+            for row in range(self.unList.count())
+        ]
+    
+    def __undefinedNamesContain(self, name):
+        """
+        Private method to test, if the currently defined 'Undefined Names'
+        contain a given one.
+        
+        @param name variable name to be tested
+        @type str
+        @return flag indicating that the given name is already included
+        @rtype bool
+        """
+        return len(self.unList.findItems(name, Qt.MatchExactly)) > 0
+    
+    @pyqtSlot()
+    def on_unList_itemSelectionChanged(self):
+        """
+        Private slot handling the selection of a 'Undefine Name' entry.
+        """
+        self.__updateUndefineNameButtons()
+    
+    @pyqtSlot()
+    def on_unAddButton_clicked(self):
+        """
+        Private slot to add a 'Undefine Name' entry.
+        """
+        name, ok = QInputDialog.getText(
+            self,
+            self.tr("Undefine Name"),
+            self.tr("Enter a variable name to be undefined:")
+        )
+        name = name.strip()
+        if ok and name and not self.__undefinedNamesContain(name):
+            self.unList.addItem(name)
+    
+    @pyqtSlot()
+    def on_unDeleteButton_clicked(self):
+        """
+        Private slot to delete the selected 'Undefine Name' entry.
+        """
+        itm = self.unList.selectedItems()[0]
+        row = self.unList.row(itm)
+        self.unList.takeItem(row)
+        del itm
+    
+    @pyqtSlot()
+    def on_unEditButton_clicked(self):
+        """
+        Private slot to edit the selected 'Undefine Name' entry.
+        """
+        itm = self.unList.selectedItems()[0]
+        name, ok = QInputDialog.getText(
+            self,
+            self.tr("Undefine Name"),
+            self.tr("Enter a variable name to be undefined:"),
+            text=itm.text()
+        )
+        name = name.strip()
+        if ok and name:
+            if self.__undefinedNamesContain(name) and itm.text() != name:
+                # the entry exists already, delete the edited one
+                row = self.unList.row(itm)
+                self.unList.takeItem(row)
+                del itm
+            else:
+                itm.setText(name)
+    
+    #######################################################################
+    ## Methods implementing the result preparation
+    #######################################################################
+    
+    def getData(self):
+        """
+        Public method to return the data entered by the user.
+        
+        @return tuple containing the list of include directories, list of
+            defined names and list of undefined names
+        @rtype tuple of (list of str, list of str, list of str)
+        """
+        return (
+            self.__generateIncludeDirectoriesList(),
+            self.__generateDefinedNamesList(),
+            self.__generateUndefinedNamesList(),
+        )
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Project/IdlCompilerOptionsDialog.ui	Wed Aug 01 19:43:34 2018 +0200
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IdlCompilerOptionsDialog</class>
+ <widget class="QDialog" name="IdlCompilerOptionsDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>450</width>
+    <height>600</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>IDL Compiler Options</string>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_4">
+   <item>
+    <widget class="QGroupBox" name="includeDirectoriesGroup">
+     <property name="title">
+      <string>Include Directories (absolute or project relative)</string>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout">
+      <item>
+       <widget class="QListWidget" name="idList">
+        <property name="alternatingRowColors">
+         <bool>true</bool>
+        </property>
+        <property name="sortingEnabled">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <layout class="QVBoxLayout" name="verticalLayout">
+        <item>
+         <widget class="QToolButton" name="idAddButton">
+          <property name="toolTip">
+           <string>Add an include directory</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="idDeleteButton">
+          <property name="toolTip">
+           <string>Delete an include directory</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="idEditButton">
+          <property name="toolTip">
+           <string>Edit an include directory</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox">
+     <property name="title">
+      <string>Define Names</string>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout_2">
+      <item>
+       <widget class="QTreeWidget" name="dnList">
+        <property name="alternatingRowColors">
+         <bool>true</bool>
+        </property>
+        <property name="rootIsDecorated">
+         <bool>false</bool>
+        </property>
+        <property name="itemsExpandable">
+         <bool>false</bool>
+        </property>
+        <property name="sortingEnabled">
+         <bool>false</bool>
+        </property>
+        <property name="allColumnsShowFocus">
+         <bool>true</bool>
+        </property>
+        <attribute name="headerDefaultSectionSize">
+         <number>150</number>
+        </attribute>
+        <attribute name="headerShowSortIndicator" stdset="0">
+         <bool>false</bool>
+        </attribute>
+        <column>
+         <property name="text">
+          <string>Name</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string>Value</string>
+         </property>
+        </column>
+        <column>
+         <property name="text">
+          <string> </string>
+         </property>
+        </column>
+       </widget>
+      </item>
+      <item>
+       <layout class="QVBoxLayout" name="verticalLayout_2">
+        <item>
+         <widget class="QToolButton" name="dnAddButton">
+          <property name="toolTip">
+           <string>Add a name entry</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="dnDeleteButton">
+          <property name="toolTip">
+           <string>Delete a name entry</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="dnEditButton">
+          <property name="toolTip">
+           <string>Edit a name entry</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer_2">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox_2">
+     <property name="title">
+      <string>Undefine Names</string>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout_3">
+      <item>
+       <widget class="QListWidget" name="unList">
+        <property name="alternatingRowColors">
+         <bool>true</bool>
+        </property>
+        <property name="sortingEnabled">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <layout class="QVBoxLayout" name="verticalLayout_3">
+        <item>
+         <widget class="QToolButton" name="unAddButton">
+          <property name="toolTip">
+           <string>Add a name entry</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="unDeleteButton">
+          <property name="toolTip">
+           <string>Delete a name entry</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="unEditButton">
+          <property name="toolTip">
+           <string>Edit a name entry</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer_3">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>idList</tabstop>
+  <tabstop>idAddButton</tabstop>
+  <tabstop>idDeleteButton</tabstop>
+  <tabstop>idEditButton</tabstop>
+  <tabstop>dnList</tabstop>
+  <tabstop>dnAddButton</tabstop>
+  <tabstop>dnDeleteButton</tabstop>
+  <tabstop>dnEditButton</tabstop>
+  <tabstop>unList</tabstop>
+  <tabstop>unAddButton</tabstop>
+  <tabstop>unDeleteButton</tabstop>
+  <tabstop>unEditButton</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>IdlCompilerOptionsDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>IdlCompilerOptionsDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- a/Project/Project.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Project/Project.py	Wed Aug 01 19:43:34 2018 +0200
@@ -488,6 +488,11 @@
                 "MakeParameters": "",
                 "MakeTestOnly": True,
             },
+            "IDLPARAMS": {
+                "IncludeDirs": [],
+                "DefinedNames": [],
+                "UndefinedNames": [],
+            },
             "EOL": -1,
         }
         
@@ -5180,7 +5185,8 @@
         elif len(pkglists) > 1:
             dlg = E5ListSelectionDialog(
                 sorted(pkglists), title=self.tr("Create Plugin Archive"),
-                message=self.tr("Select package lists:"))
+                message=self.tr("Select package lists:"),
+                checkBoxSelection=True)
             if dlg.exec_() == QDialog.Accepted:
                 selectedLists = [os.path.join(self.ppath, s)
                                  for s in dlg.getSelection()]
@@ -5615,3 +5621,21 @@
         self.__makeProcess.finished.disconnect()
         self.__makeProcess.deleteLater()
         self.__makeProcess = None
+    
+    #########################################################################
+    ## Below are methods implementing the some 'IDL' support functions
+    #########################################################################
+    
+    def hasDefaultIdlCompilerParameters(self):
+        """
+        Public method to test, if the project contains the default IDL compiler
+        parameters.
+        
+        @return flag indicating default parameter set
+        @rtype bool
+        """
+        return self.pdata["IDLPARAMS"] == {
+            "IncludeDirs": [],
+            "DefinedNames": [],
+            "UndefinedNames": [],
+        }
--- a/Project/ProjectBrowser.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Project/ProjectBrowser.py	Wed Aug 01 19:43:34 2018 +0200
@@ -13,8 +13,6 @@
 from PyQt5.QtGui import QColor
 from PyQt5.QtWidgets import QApplication
 
-from UI.Browser import Browser
-
 from E5Gui.E5TabWidget import E5TabWidget
 from E5Gui.E5Led import E5ClickableLed
 
@@ -37,16 +35,12 @@
     that doesn't fit these categories. Optionally it contains an additional
     tab with the file system browser.
     """
-    def __init__(self, project, parent=None, embeddedBrowser=True):
+    def __init__(self, project, parent=None):
         """
         Constructor
         
         @param project reference to the project object
         @param parent parent widget (QWidget)
-        @param embeddedBrowser flag indicating whether the file browser should
-            be included. This flag is set to False by those layouts, that
-            have the file browser in a separate window or embedded
-            in the debeug browser instead
         """
         E5TabWidget.__init__(self, parent)
         self.project = project
@@ -101,11 +95,6 @@
         # others browser
         self.poBrowser = ProjectOthersBrowser(self.project)
         
-        # add the file browser, if it should be embedded here
-        self.embeddedBrowser = embeddedBrowser
-        if embeddedBrowser:
-            self.fileBrowser = Browser()
-        
         # step 2: connect all the browsers
         # connect the sources browser
         self.project.projectClosed.connect(self.psBrowser._projectClosed)
@@ -174,10 +163,7 @@
         
         self.__currentBrowsersFlags = 0
         self.__projectPropertiesChanged()
-        if self.embeddedBrowser:
-            self.setCurrentWidget(self.fileBrowser)
-        else:
-            self.setCurrentIndex(0)
+        self.setCurrentIndex(0)
         
     def __setBrowsersAvailable(self, browserFlags):
         """
@@ -232,24 +218,8 @@
                 UI.PixmapCache.getIcon("projectOthers.png"), '')
             self.setTabToolTip(index, self.poBrowser.windowTitle())
         
-        if self.embeddedBrowser:
-            index = self.addTab(
-                self.fileBrowser,
-                UI.PixmapCache.getIcon("browser.png"), '')
-            self.setTabToolTip(index, self.fileBrowser.windowTitle())
-        
         QApplication.processEvents()
         
-    def showEvent(self, evt):
-        """
-        Protected method handleing the show event.
-        
-        @param evt show event to handle (QShowEvent)
-        """
-        E5TabWidget.showEvent(self, evt)
-        if self.embeddedBrowser:
-            self.fileBrowser.layoutDisplay()
-        
     def __currentChanged(self, index):
         """
         Private slot to handle the currentChanged(int) signal.
@@ -274,10 +244,7 @@
         Private slot to handle the projectClosed signal.
         """
         self.__projectPropertiesChanged()
-        if self.embeddedBrowser:
-            self.setCurrentWidget(self.fileBrowser)
-        else:
-            self.setCurrentIndex(0)
+        self.setCurrentIndex(0)
         self.__setSourcesIcon()
         self.__vcsStateChanged(" ")
         
@@ -302,10 +269,7 @@
             self.__currentBrowsersFlags = flags
             self.__setBrowsersAvailable(flags)
         
-        if self.embeddedBrowser:
-            endIndex = self.count() - 1
-        else:
-            endIndex = self.count()
+        endIndex = self.count()
         for index in range(endIndex):
             self.setTabEnabled(index, self.project.isOpen())
         
--- a/Project/ProjectInterfacesBrowser.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/Project/ProjectInterfacesBrowser.py	Wed Aug 01 19:43:34 2018 +0200
@@ -100,6 +100,11 @@
             self.sourceMenu.addAction(
                 self.tr('Compile all interfaces'),
                 self.__compileAllInterfaces)
+            self.sourceMenu.addSeparator()
+            self.sourceMenu.addAction(
+                self.tr('Configure IDL compiler'),
+                self.__configureIdlCompiler)
+            self.sourceMenu.addSeparator()
         self.sourceMenu.addAction(self.tr('Open'), self._openItem)
         self.sourceMenu.addSeparator()
         act = self.sourceMenu.addAction(
@@ -137,6 +142,11 @@
             self.menu.addAction(
                 self.tr('Compile all interfaces'),
                 self.__compileAllInterfaces)
+            self.menu.addSeparator()
+            self.menu.addAction(
+                self.tr('Configure IDL compiler'),
+                self.__configureIdlCompiler)
+            self.menu.addSeparator()
         self.menu.addAction(self.tr('Open'), self._openItem)
         self.menu.addSeparator()
         self.menu.addAction(
@@ -160,6 +170,10 @@
                 self.tr('Compile all interfaces'),
                 self.__compileAllInterfaces)
             self.backMenu.addSeparator()
+            self.backMenu.addAction(
+                self.tr('Configure IDL compiler'),
+                self.__configureIdlCompiler)
+            self.backMenu.addSeparator()
         self.backMenu.addAction(
             self.tr('Add interfaces...'), self.project.addIdlFiles)
         self.backMenu.addAction(
@@ -181,6 +195,11 @@
             self.multiMenu.addAction(
                 self.tr('Compile interfaces'),
                 self.__compileSelectedInterfaces)
+            self.multiMenu.addSeparator()
+            self.multiMenu.addAction(
+                self.tr('Configure IDL compiler'),
+                self.__configureIdlCompiler)
+            self.multiMenu.addSeparator()
         self.multiMenu.addAction(self.tr('Open'), self._openItem)
         self.multiMenu.addSeparator()
         act = self.multiMenu.addAction(
@@ -205,6 +224,10 @@
                 self.tr('Compile all interfaces'),
                 self.__compileAllInterfaces)
             self.dirMenu.addSeparator()
+            self.dirMenu.addAction(
+                self.tr('Configure IDL compiler'),
+                self.__configureIdlCompiler)
+            self.dirMenu.addSeparator()
         act = self.dirMenu.addAction(
             self.tr('Remove from project'), self._removeFile)
         self.dirMenuActions.append(act)
@@ -236,6 +259,10 @@
                 self.tr('Compile all interfaces'),
                 self.__compileAllInterfaces)
             self.dirMultiMenu.addSeparator()
+            self.dirMultiMenu.addAction(
+                self.tr('Configure IDL compiler'),
+                self.__configureIdlCompiler)
+            self.dirMultiMenu.addSeparator()
         self.dirMultiMenu.addAction(
             self.tr('Add interfaces...'), self.project.addIdlFiles)
         self.dirMultiMenu.addAction(
@@ -525,13 +552,22 @@
         @param progress reference to the progress dialog (E5ProgressDialog)
         @return reference to the compile process (QProcess)
         """
+        params = self.project.pdata["IDLPARAMS"]
+        
         self.compileProc = QProcess()
         args = []
         
         args.append("-bpython")
         args.append("-I.")
+        for directory in params["IncludeDirs"]:
+            args.append("-I{0}".format(
+                self.project.getAbsoluteUniversalPath(directory)))
+        for name in params["DefinedNames"]:
+            args.append("-D{0}".format(name))
+        for name in params["UndefinedNames"]:
+            args.append("-U{0}".format(name))
         
-        fn = os.path.join(self.project.ppath, fn)
+        fn = self.project.getAbsoluteUniversalPath(fn)
         self.idlFile = fn
         args.append("-C{0}".format(os.path.dirname(fn)))
         args.append(fn)
@@ -634,7 +670,30 @@
                 i += 1
                 
             progress.setValue(numIDLs)
+    
+    def __configureIdlCompiler(self):
+        """
+        Private method to show a dialog to configure some options for the
+        IDL compiler.
+        """
+        params = self.project.pdata["IDLPARAMS"]
         
+        from .IdlCompilerOptionsDialog import IdlCompilerOptionsDialog
+        dlg = IdlCompilerOptionsDialog(
+            params["IncludeDirs"][:], params["DefinedNames"][:],
+            params["UndefinedNames"][:], self.project, self)
+        if dlg.exec_() == QDialog.Accepted:
+            include, defined, undefined = dlg.getData()
+            if include != params["IncludeDirs"]:
+                params["IncludeDirs"] = include[:]
+                self.project.setDirty(True)
+            if defined != params["DefinedNames"]:
+                params["DefinedNames"] = defined[:]
+                self.project.setDirty(True)
+            if undefined != params["UndefinedNames"]:
+                params["UndefinedNames"] = undefined[:]
+                self.project.setDirty(True)
+    
     def __configureCorba(self):
         """
         Private method to open the configuration dialog.
--- a/QScintilla/Editor.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/QScintilla/Editor.py	Wed Aug 01 19:43:34 2018 +0200
@@ -7191,27 +7191,33 @@
         @param cmd the scintilla command to be performed
         """
         if cmd == QsciScintilla.SCI_TAB:
-            line, index = self.getCursorPosition()
-            tmplName = self.getWordLeft(line, index)
-            if tmplName:
-                if e5App().getObject("TemplateViewer").hasTemplate(
-                        tmplName, self.getLanguage()):
-                    self.__applyTemplate(tmplName, self.getLanguage())
-                    return
-                else:
-                    templateNames = \
-                        e5App().getObject("TemplateViewer").getTemplateNames(
+            try:
+                templateViewer = e5App().getObject("TemplateViewer")
+            except KeyError:
+                # template viewer is not active
+                templateViewer = None
+            
+            if templateViewer is not None:
+                line, index = self.getCursorPosition()
+                tmplName = self.getWordLeft(line, index)
+                if tmplName:
+                    if templateViewer.hasTemplate(tmplName,
+                                                  self.getLanguage()):
+                        self.__applyTemplate(tmplName, self.getLanguage())
+                        return
+                    else:
+                        templateNames = templateViewer.getTemplateNames(
                             tmplName, self.getLanguage())
-                    if len(templateNames) == 1:
-                        self.__applyTemplate(templateNames[0],
-                                             self.getLanguage())
-                        return
-                    elif len(templateNames) > 1:
-                        self.showUserList(
-                            TemplateCompletionListID,
-                            ["{0}?{1:d}".format(t, self.TemplateImageID)
-                             for t in templateNames])
-                        return
+                        if len(templateNames) == 1:
+                            self.__applyTemplate(templateNames[0],
+                                                 self.getLanguage())
+                            return
+                        elif len(templateNames) > 1:
+                            self.showUserList(
+                                TemplateCompletionListID,
+                                ["{0}?{1:d}".format(t, self.TemplateImageID)
+                                 for t in templateNames])
+                            return
         
         super(Editor, self).editorCommand(cmd)
     
@@ -7223,11 +7229,16 @@
         @param language name of the language (group) to get the template
             from (string)
         """
-        if e5App().getObject("TemplateViewer").hasTemplate(
-                templateName, self.getLanguage()):
+        try:
+            templateViewer = e5App().getObject("TemplateViewer")
+        except KeyError:
+            # template viewer is not active
+            return
+        
+        if templateViewer.hasTemplate(templateName, self.getLanguage()):
             self.extendSelectionWordLeft()
-            e5App().getObject("TemplateViewer").applyNamedTemplate(
-                templateName, self.getLanguage())
+            templateViewer.applyNamedTemplate(templateName,
+                                              self.getLanguage())
     
     #######################################################################
     ## Project related methods
--- a/UI/UserInterface.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/UI/UserInterface.py	Wed Aug 01 19:43:34 2018 +0200
@@ -209,8 +209,7 @@
         self.__disableCrashSession = disableCrashSession
         self.__disabledPlugins = disabledPlugins[:]
         
-        self.layoutType, self.embeddedShell, self.embeddedFileBrowser = \
-            Preferences.getUILayout()
+        self.__layoutType = Preferences.getUI("LayoutType")
         
         self.passiveMode = Preferences.getDebugger("PassiveDbgEnabled")
         
@@ -268,6 +267,14 @@
         
         splash.showMessage(self.tr("Generating Main User Interface..."))
         
+        self.codeDocumentationViewer = None
+        self.cooperation = None
+        self.irc = None
+        self.symbolsViewer = None
+        self.browser = None
+        self.templateViewer = None
+        self.numbersViewer = None
+        
         # Create the main window now so that we can connect QActions to it.
         logging.debug("Creating Layout...")
         self.__createLayout(debugServer)
@@ -301,25 +308,6 @@
         
         # now setup the connections
         splash.showMessage(self.tr("Setting up connections..."))
-        self.browser.sourceFile[str].connect(
-            self.viewmanager.openSourceFile)
-        self.browser.sourceFile[str, int].connect(
-            self.viewmanager.openSourceFile)
-        self.browser.sourceFile[str, list].connect(
-            self.viewmanager.openSourceFile)
-        self.browser.sourceFile[str, int, str].connect(
-            self.viewmanager.openSourceFile)
-        self.browser.designerFile.connect(self.__designer)
-        self.browser.linguistFile.connect(self.__linguist4)
-        self.browser.projectFile.connect(self.project.openProject)
-        self.browser.multiProjectFile.connect(
-            self.multiProject.openMultiProject)
-        self.browser.pixmapEditFile.connect(self.__editPixmap)
-        self.browser.pixmapFile.connect(self.__showPixmap)
-        self.browser.svgFile.connect(self.__showSvg)
-        self.browser.binaryFile.connect(self.__openHexEditor)
-        self.browser.unittestOpen.connect(self.__unittestScript)
-        self.browser.trpreview.connect(self.__TRPreviewer)
         
         self.debugViewer.exceptionLogger.sourceFile.connect(
             self.viewmanager.openSourceFile)
@@ -426,8 +414,6 @@
         self.debuggerUI.resetUI.connect(self.debugViewer.handleResetUI)
         self.debuggerUI.resetUI.connect(self.__debuggingDone)
         self.debuggerUI.debuggingStarted.connect(
-            self.browser.handleProgramChange)
-        self.debuggerUI.debuggingStarted.connect(
             self.debugViewer.exceptionLogger.debuggingStarted)
         self.debuggerUI.debuggingStarted.connect(
             self.debugViewer.handleDebuggingStarted)
@@ -450,8 +436,6 @@
             self.debugViewer.breakpointViewer.highlightBreakpoint)
         debugServer.clientProcessStdout.connect(self.appendToStdout)
         debugServer.clientProcessStderr.connect(self.appendToStderr)
-        debugServer.clientInterpreterChanged.connect(
-            self.browser.handleInterpreterChanged)
         debugServer.appendStdout.connect(self.appendToStdout)
         
         self.stdout.appendStdout.connect(self.appendToStdout)
@@ -480,17 +464,47 @@
             self.projectBrowser.ppBrowser.handlePreferencesChanged)
         self.preferencesChanged.connect(
             self.projectBrowser.poBrowser.handlePreferencesChanged)
-        self.preferencesChanged.connect(self.browser.handlePreferencesChanged)
         self.preferencesChanged.connect(
             self.taskViewer.handlePreferencesChanged)
         self.preferencesChanged.connect(self.pluginManager.preferencesChanged)
         self.preferencesChanged.connect(debugServer.preferencesChanged)
         self.preferencesChanged.connect(self.debugViewer.preferencesChanged)
-        self.preferencesChanged.connect(self.cooperation.preferencesChanged)
         self.preferencesChanged.connect(
             self.backgroundService.preferencesOrProjectChanged)
-        self.preferencesChanged.connect(
-            self.codeDocumentationViewer.preferencesChanged)
+        
+        if self.browser is not None:
+            self.browser.sourceFile[str].connect(
+                self.viewmanager.openSourceFile)
+            self.browser.sourceFile[str, int].connect(
+                self.viewmanager.openSourceFile)
+            self.browser.sourceFile[str, list].connect(
+                self.viewmanager.openSourceFile)
+            self.browser.sourceFile[str, int, str].connect(
+                self.viewmanager.openSourceFile)
+            self.browser.designerFile.connect(self.__designer)
+            self.browser.linguistFile.connect(self.__linguist4)
+            self.browser.projectFile.connect(self.project.openProject)
+            self.browser.multiProjectFile.connect(
+                self.multiProject.openMultiProject)
+            self.browser.pixmapEditFile.connect(self.__editPixmap)
+            self.browser.pixmapFile.connect(self.__showPixmap)
+            self.browser.svgFile.connect(self.__showSvg)
+            self.browser.binaryFile.connect(self.__openHexEditor)
+            self.browser.unittestOpen.connect(self.__unittestScript)
+            self.browser.trpreview.connect(self.__TRPreviewer)
+            
+            self.debuggerUI.debuggingStarted.connect(
+                self.browser.handleProgramChange)
+            
+            debugServer.clientInterpreterChanged.connect(
+                self.browser.handleInterpreterChanged)
+            
+            self.preferencesChanged.connect(
+                self.browser.handlePreferencesChanged)
+        
+        if self.codeDocumentationViewer is not None:
+            self.preferencesChanged.connect(
+                self.codeDocumentationViewer.preferencesChanged)
         
         self.viewmanager.editorSaved.connect(self.project.repopulateItem)
         self.viewmanager.lastEditorClosed.connect(self.__lastEditorClosed)
@@ -501,8 +515,6 @@
             self.projectBrowser.handleEditorChanged)
         self.viewmanager.editorLineChanged.connect(
             self.projectBrowser.handleEditorLineChanged)
-        self.viewmanager.checkActions.connect(
-            self.cooperation.checkEditorActions)
         self.viewmanager.editorOpened.connect(self.__writeCrashSession)
         self.viewmanager.editorClosed.connect(self.__writeCrashSession)
         self.viewmanager.editorRenamed.connect(self.__writeCrashSession)
@@ -511,19 +523,36 @@
         self.shell.zoomValueChanged.connect(
             lambda v: self.viewmanager.zoomValueChanged(v, self.shell))
         
-        self.cooperation.shareEditor.connect(self.viewmanager.shareEditor)
-        self.cooperation.startEdit.connect(self.viewmanager.startSharedEdit)
-        self.cooperation.sendEdit.connect(self.viewmanager.sendSharedEdit)
-        self.cooperation.cancelEdit.connect(self.viewmanager.cancelSharedEdit)
-        self.cooperation.connected.connect(self.viewmanager.shareConnected)
-        self.cooperation.editorCommand.connect(self.viewmanager.receive)
-        self.viewmanager.setCooperationClient(self.cooperation.getClient())
-        
-        self.symbolsViewer.insertSymbol.connect(self.viewmanager.insertSymbol)
-        
-        self.numbersViewer.insertNumber.connect(self.viewmanager.insertNumber)
-        
-        self.irc.autoConnected.connect(self.__ircAutoConnected)
+        if self.cooperation is not None:
+            self.viewmanager.checkActions.connect(
+                self.cooperation.checkEditorActions)
+            self.preferencesChanged.connect(
+                self.cooperation.preferencesChanged)
+            self.cooperation.shareEditor.connect(
+                self.viewmanager.shareEditor)
+            self.cooperation.startEdit.connect(
+                self.viewmanager.startSharedEdit)
+            self.cooperation.sendEdit.connect(
+                self.viewmanager.sendSharedEdit)
+            self.cooperation.cancelEdit.connect(
+                self.viewmanager.cancelSharedEdit)
+            self.cooperation.connected.connect(
+                self.viewmanager.shareConnected)
+            self.cooperation.editorCommand.connect(
+                self.viewmanager.receive)
+            self.viewmanager.setCooperationClient(
+                self.cooperation.getClient())
+        
+        if self.symbolsViewer is not None:
+            self.symbolsViewer.insertSymbol.connect(
+                self.viewmanager.insertSymbol)
+        
+        if self.numbersViewer is not None:
+            self.numbersViewer.insertNumber.connect(
+                self.viewmanager.insertNumber)
+        
+        if self.irc is not None:
+            self.irc.autoConnected.connect(self.__ircAutoConnected)
         
         # create the toolbar manager object
         self.toolbarManager = E5ToolBarManager(self, self)
@@ -563,17 +592,23 @@
         e5App().registerObject("ProjectBrowser", self.projectBrowser)
         e5App().registerObject("MultiProject", self.multiProject)
         e5App().registerObject("TaskViewer", self.taskViewer)
-        e5App().registerObject("TemplateViewer", self.templateViewer)
+        if self.templateViewer is not None:
+            e5App().registerObject("TemplateViewer", self.templateViewer)
         e5App().registerObject("Shell", self.shell)
         if self.dummyHelpViewer is not None:
             e5App().registerObject("DummyHelpViewer", self.dummyHelpViewer)
         e5App().registerObject("PluginManager", self.pluginManager)
         e5App().registerObject("ToolbarManager", self.toolbarManager)
-        e5App().registerObject("Cooperation", self.cooperation)
-        e5App().registerObject("IRC", self.irc)
-        e5App().registerObject("Symbols", self.symbolsViewer)
-        e5App().registerObject("Numbers", self.numbersViewer)
-        e5App().registerObject("DocuViewer", self.codeDocumentationViewer)
+        if self.cooperation is not None:
+            e5App().registerObject("Cooperation", self.cooperation)
+        if self.irc is not None:
+            e5App().registerObject("IRC", self.irc)
+        if self.symbolsViewer is not None:
+            e5App().registerObject("Symbols", self.symbolsViewer)
+        if self.numbersViewer is not None:
+            e5App().registerObject("Numbers", self.numbersViewer)
+        if self.codeDocumentationViewer is not None:
+            e5App().registerObject("DocuViewer", self.codeDocumentationViewer)
         
         # list of web addresses serving the versions file
         self.__httpAlternatives = Preferences.getUI("VersionsUrls6")
@@ -642,8 +677,9 @@
         self.toolbarManager.restoreState(
             Preferences.getUI("ToolbarManagerState"))
         
-        # finalize the initialization of the code documentation viewer
-        self.codeDocumentationViewer.finalizeSetup()
+        if self.codeDocumentationViewer is not None:
+            # finalize the initialization of the code documentation viewer
+            self.codeDocumentationViewer.finalizeSetup()
         
         # now activate the initial view profile
         splash.showMessage(self.tr("Setting View Profile..."))
@@ -653,9 +689,10 @@
         splash.showMessage(self.tr("Reading Tasks..."))
         self.__readTasks()
         
-        # now read the saved templates
-        splash.showMessage(self.tr("Reading Templates..."))
-        self.templateViewer.readTemplates()
+        if self.templateViewer is not None:
+            # now read the saved templates
+            splash.showMessage(self.tr("Reading Templates..."))
+            self.templateViewer.readTemplates()
         
         # now start the debug client
         splash.showMessage(self.tr("Starting Debugger..."))
@@ -724,18 +761,18 @@
         splitter.addWidget(self.__previewer)
         
         # Create layout with toolbox windows embedded in dock windows
-        if self.layoutType == "Toolboxes":
+        if self.__layoutType == "Toolboxes":
             logging.debug("Creating toolboxes...")
             self.__createToolboxesLayout(debugServer)
         
         # Create layout with sidebar windows embedded in dock windows
-        elif self.layoutType == "Sidebars":
+        elif self.__layoutType == "Sidebars":
             logging.debug("Creating sidebars...")
             self.__createSidebarsLayout(debugServer)
         
         else:
             raise ValueError("Wrong layout type given ({0})".format(
-                self.layoutType))
+                self.__layoutType))
         logging.debug("Created Layout")
 
     def __createToolboxesLayout(self, debugServer):
@@ -770,9 +807,7 @@
         # Create the project browser
         logging.debug("Creating Project Browser...")
         from Project.ProjectBrowser import ProjectBrowser
-        self.projectBrowser = ProjectBrowser(
-            self.project, None,
-            embeddedBrowser=(self.embeddedFileBrowser == 2))
+        self.projectBrowser = ProjectBrowser(self.project)
         self.lToolbox.addItem(self.projectBrowser,
                               UI.PixmapCache.getIcon("projectViewer.png"),
                               self.tr("Project-Viewer"))
@@ -785,50 +820,51 @@
         self.lToolbox.addItem(self.multiProjectBrowser,
                               UI.PixmapCache.getIcon("multiProjectViewer.png"),
                               self.tr("Multiproject-Viewer"))
-
-        # Create the template viewer part of the user interface
-        logging.debug("Creating Template Viewer...")
-        from Templates.TemplateViewer import TemplateViewer
-        self.templateViewer = TemplateViewer(None,
-                                             self.viewmanager)
-        self.lToolbox.addItem(self.templateViewer,
-                              UI.PixmapCache.getIcon("templateViewer.png"),
-                              self.tr("Template-Viewer"))
-
-        # Create the code documentation viewer
-        logging.debug("Creating Code Documentation Viewer...")
-        from .CodeDocumentationViewer import CodeDocumentationViewer
-        self.codeDocumentationViewer = CodeDocumentationViewer(self)
-        self.rToolbox.addItem(self.codeDocumentationViewer,
-                              UI.PixmapCache.getIcon("codeDocuViewer.png"),
-                              self.tr("Code Documentation Viewer"))
+        
+        if Preferences.getUI("ShowTemplateViewer"):
+            # Create the template viewer part of the user interface
+            logging.debug("Creating Template Viewer...")
+            from Templates.TemplateViewer import TemplateViewer
+            self.templateViewer = TemplateViewer(None,
+                                                 self.viewmanager)
+            self.lToolbox.addItem(self.templateViewer,
+                                  UI.PixmapCache.getIcon("templateViewer.png"),
+                                  self.tr("Template-Viewer"))
+        
+        if Preferences.getUI("ShowCodeDocumentationViewer"):
+            # Create the code documentation viewer
+            logging.debug("Creating Code Documentation Viewer...")
+            from .CodeDocumentationViewer import CodeDocumentationViewer
+            self.codeDocumentationViewer = CodeDocumentationViewer(self)
+            self.rToolbox.addItem(self.codeDocumentationViewer,
+                                  UI.PixmapCache.getIcon("codeDocuViewer.png"),
+                                  self.tr("Code Documentation Viewer"))
         
         # Create the debug viewer maybe without the embedded shell
         logging.debug("Creating Debug Viewer...")
         from Debugger.DebugViewer import DebugViewer
-        self.debugViewer = DebugViewer(
-            debugServer, True, self.viewmanager, None,
-            embeddedShell=self.embeddedShell,
-            embeddedBrowser=(self.embeddedFileBrowser == 1))
+        self.debugViewer = DebugViewer(debugServer, True, self.viewmanager)
         self.rToolbox.addItem(self.debugViewer,
                               UI.PixmapCache.getIcon("debugViewer.png"),
                               self.tr("Debug-Viewer"))
-
-        # Create the chat part of the user interface
-        logging.debug("Creating Chat Widget...")
-        from Cooperation.ChatWidget import ChatWidget
-        self.cooperation = ChatWidget(self)
-        self.rToolbox.addItem(self.cooperation,
-                              UI.PixmapCache.getIcon("cooperation.png"),
-                              self.tr("Cooperation"))
-        
-        # Create the IRC part of the user interface
-        logging.debug("Creating IRC Widget...")
-        from Network.IRC.IrcWidget import IrcWidget
-        self.irc = IrcWidget(self)
-        self.rToolbox.addItem(self.irc,
-                              UI.PixmapCache.getIcon("irc.png"),
-                              self.tr("IRC"))
+        
+        if Preferences.getUI("ShowCooperation"):
+            # Create the chat part of the user interface
+            logging.debug("Creating Chat Widget...")
+            from Cooperation.ChatWidget import ChatWidget
+            self.cooperation = ChatWidget(self)
+            self.rToolbox.addItem(self.cooperation,
+                                  UI.PixmapCache.getIcon("cooperation.png"),
+                                  self.tr("Cooperation"))
+        
+        if Preferences.getUI("ShowIrc"):
+            # Create the IRC part of the user interface
+            logging.debug("Creating IRC Widget...")
+            from Network.IRC.IrcWidget import IrcWidget
+            self.irc = IrcWidget(self)
+            self.rToolbox.addItem(self.irc,
+                                  UI.PixmapCache.getIcon("irc.png"),
+                                  self.tr("IRC"))
         
         # Create the task viewer part of the user interface
         logging.debug("Creating Task Viewer...")
@@ -846,20 +882,17 @@
                               UI.PixmapCache.getIcon("logViewer.png"),
                               self.tr("Log-Viewer"))
 
-        if self.embeddedShell:
-            self.shell = self.debugViewer.shell
-        else:
-            # Create the shell
-            logging.debug("Creating Shell...")
-            from QScintilla.Shell import ShellAssembly
-            self.shellAssembly = \
-                ShellAssembly(debugServer, self.viewmanager, True)
-            self.shell = self.shellAssembly.shell()
-            self.hToolbox.insertItem(0, self.shellAssembly,
-                                     UI.PixmapCache.getIcon("shell.png"),
-                                     self.tr("Shell"))
-
-        if self.embeddedFileBrowser == 0:   # separate window
+        # Create the shell
+        logging.debug("Creating Shell...")
+        from QScintilla.Shell import ShellAssembly
+        self.shellAssembly = \
+            ShellAssembly(debugServer, self.viewmanager, True)
+        self.shell = self.shellAssembly.shell()
+        self.hToolbox.insertItem(0, self.shellAssembly,
+                                 UI.PixmapCache.getIcon("shell.png"),
+                                 self.tr("Shell"))
+        
+        if Preferences.getUI("ShowFileBrowser"):
             # Create the file browser
             logging.debug("Creating File Browser...")
             from .Browser import Browser
@@ -867,26 +900,24 @@
             self.lToolbox.addItem(self.browser,
                                   UI.PixmapCache.getIcon("browser.png"),
                                   self.tr("File-Browser"))
-        elif self.embeddedFileBrowser == 1:  # embedded in debug browser
-            self.browser = self.debugViewer.browser
-        else:                               # embedded in project browser
-            self.browser = self.projectBrowser.fileBrowser
-        
-        # Create the symbols viewer
-        logging.debug("Creating Symbols Viewer...")
-        from .SymbolsWidget import SymbolsWidget
-        self.symbolsViewer = SymbolsWidget()
-        self.lToolbox.addItem(self.symbolsViewer,
-                              UI.PixmapCache.getIcon("symbols.png"),
-                              self.tr("Symbols"))
-        
-        # Create the numbers viewer
-        logging.debug("Creating Numbers Viewer...")
-        from .NumbersWidget import NumbersWidget
-        self.numbersViewer = NumbersWidget()
-        self.hToolbox.addItem(self.numbersViewer,
-                              UI.PixmapCache.getIcon("numbers.png"),
-                              self.tr("Numbers"))
+        
+        if Preferences.getUI("ShowSymbolsViewer"):
+            # Create the symbols viewer
+            logging.debug("Creating Symbols Viewer...")
+            from .SymbolsWidget import SymbolsWidget
+            self.symbolsViewer = SymbolsWidget()
+            self.lToolbox.addItem(self.symbolsViewer,
+                                  UI.PixmapCache.getIcon("symbols.png"),
+                                  self.tr("Symbols"))
+        
+        if Preferences.getUI("ShowNumbersViewer"):
+            # Create the numbers viewer
+            logging.debug("Creating Numbers Viewer...")
+            from .NumbersWidget import NumbersWidget
+            self.numbersViewer = NumbersWidget()
+            self.hToolbox.addItem(self.numbersViewer,
+                                  UI.PixmapCache.getIcon("numbers.png"),
+                                  self.tr("Numbers"))
         
         self.hToolbox.setCurrentIndex(0)
         
@@ -913,9 +944,7 @@
         # Create the project browser
         logging.debug("Creating Project Browser...")
         from Project.ProjectBrowser import ProjectBrowser
-        self.projectBrowser = ProjectBrowser(
-            self.project, None,
-            embeddedBrowser=(self.embeddedFileBrowser == 2))
+        self.projectBrowser = ProjectBrowser(self.project)
         self.leftSidebar.addTab(
             self.projectBrowser,
             UI.PixmapCache.getIcon("projectViewer.png"),
@@ -931,50 +960,52 @@
             UI.PixmapCache.getIcon("multiProjectViewer.png"),
             self.tr("Multiproject-Viewer"))
 
-        # Create the template viewer part of the user interface
-        logging.debug("Creating Template Viewer...")
-        from Templates.TemplateViewer import TemplateViewer
-        self.templateViewer = TemplateViewer(None,
-                                             self.viewmanager)
-        self.leftSidebar.addTab(
-            self.templateViewer,
-            UI.PixmapCache.getIcon("templateViewer.png"),
-            self.tr("Template-Viewer"))
+        if Preferences.getUI("ShowTemplateViewer"):
+            # Create the template viewer part of the user interface
+            logging.debug("Creating Template Viewer...")
+            from Templates.TemplateViewer import TemplateViewer
+            self.templateViewer = TemplateViewer(None,
+                                                 self.viewmanager)
+            self.leftSidebar.addTab(
+                self.templateViewer,
+                UI.PixmapCache.getIcon("templateViewer.png"),
+                self.tr("Template-Viewer"))
 
-        # Create the code documentation viewer
-        logging.debug("Creating Code Documentation Viewer...")
-        from .CodeDocumentationViewer import CodeDocumentationViewer
-        self.codeDocumentationViewer = CodeDocumentationViewer(self)
-        self.rightSidebar.addTab(
-            self.codeDocumentationViewer,
-            UI.PixmapCache.getIcon("codeDocuViewer.png"),
-            self.tr("Code Documentation Viewer"))
+        if Preferences.getUI("ShowCodeDocumentationViewer"):
+            # Create the code documentation viewer
+            logging.debug("Creating Code Documentation Viewer...")
+            from .CodeDocumentationViewer import CodeDocumentationViewer
+            self.codeDocumentationViewer = CodeDocumentationViewer(self)
+            self.rightSidebar.addTab(
+                self.codeDocumentationViewer,
+                UI.PixmapCache.getIcon("codeDocuViewer.png"),
+                self.tr("Code Documentation Viewer"))
         
         # Create the debug viewer maybe without the embedded shell
         logging.debug("Creating Debug Viewer...")
         from Debugger.DebugViewer import DebugViewer
-        self.debugViewer = DebugViewer(
-            debugServer, True, self.viewmanager, None,
-            embeddedShell=self.embeddedShell,
-            embeddedBrowser=(self.embeddedFileBrowser == 1))
+        self.debugViewer = DebugViewer(debugServer, True, self.viewmanager)
         self.rightSidebar.addTab(
             self.debugViewer, UI.PixmapCache.getIcon("debugViewer.png"),
             self.tr("Debug-Viewer"))
 
-        # Create the chat part of the user interface
-        logging.debug("Creating Chat Widget...")
-        from Cooperation.ChatWidget import ChatWidget
-        self.cooperation = ChatWidget(self)
-        self.rightSidebar.addTab(
-            self.cooperation, UI.PixmapCache.getIcon("cooperation.png"),
-            self.tr("Cooperation"))
-        
-        # Create the IRC part of the user interface
-        logging.debug("Creating IRC Widget...")
-        from Network.IRC.IrcWidget import IrcWidget
-        self.irc = IrcWidget(self)
-        self.rightSidebar.addTab(
-            self.irc, UI.PixmapCache.getIcon("irc.png"), self.tr("IRC"))
+        if Preferences.getUI("ShowCooperation"):
+            # Create the chat part of the user interface
+            logging.debug("Creating Chat Widget...")
+            from Cooperation.ChatWidget import ChatWidget
+            self.cooperation = ChatWidget(self)
+            self.rightSidebar.addTab(
+                self.cooperation, UI.PixmapCache.getIcon("cooperation.png"),
+                self.tr("Cooperation"))
+        
+        if Preferences.getUI("ShowIrc"):
+            # Create the IRC part of the user interface
+            logging.debug("Creating IRC Widget...")
+            from Network.IRC.IrcWidget import IrcWidget
+            self.irc = IrcWidget(self)
+            self.rightSidebar.addTab(
+                self.irc, UI.PixmapCache.getIcon("irc.png"),
+                self.tr("IRC"))
         
         # Create the task viewer part of the user interface
         logging.debug("Creating Task Viewer...")
@@ -992,20 +1023,17 @@
                                   UI.PixmapCache.getIcon("logViewer.png"),
                                   self.tr("Log-Viewer"))
 
-        if self.embeddedShell:
-            self.shell = self.debugViewer.shell
-        else:
-            # Create the shell
-            logging.debug("Creating Shell...")
-            from QScintilla.Shell import ShellAssembly
-            self.shellAssembly = \
-                ShellAssembly(debugServer, self.viewmanager, True)
-            self.shell = self.shellAssembly.shell()
-            self.bottomSidebar.insertTab(0, self.shellAssembly,
-                                         UI.PixmapCache.getIcon("shell.png"),
-                                         self.tr("Shell"))
+        # Create the shell
+        logging.debug("Creating Shell...")
+        from QScintilla.Shell import ShellAssembly
+        self.shellAssembly = \
+            ShellAssembly(debugServer, self.viewmanager, True)
+        self.shell = self.shellAssembly.shell()
+        self.bottomSidebar.insertTab(0, self.shellAssembly,
+                                     UI.PixmapCache.getIcon("shell.png"),
+                                     self.tr("Shell"))
 
-        if self.embeddedFileBrowser == 0:   # separate window
+        if Preferences.getUI("ShowFileBrowser"):
             # Create the file browser
             logging.debug("Creating File Browser...")
             from .Browser import Browser
@@ -1013,26 +1041,24 @@
             self.leftSidebar.addTab(self.browser,
                                     UI.PixmapCache.getIcon("browser.png"),
                                     self.tr("File-Browser"))
-        elif self.embeddedFileBrowser == 1:  # embedded in debug browser
-            self.browser = self.debugViewer.browser
-        else:                               # embedded in project browser
-            self.browser = self.projectBrowser.fileBrowser
-        
-        # Create the symbols viewer
-        logging.debug("Creating Symbols Viewer...")
-        from .SymbolsWidget import SymbolsWidget
-        self.symbolsViewer = SymbolsWidget()
-        self.leftSidebar.addTab(self.symbolsViewer,
-                                UI.PixmapCache.getIcon("symbols.png"),
-                                self.tr("Symbols"))
-        
-        # Create the numbers viewer
-        logging.debug("Creating Numbers Viewer...")
-        from .NumbersWidget import NumbersWidget
-        self.numbersViewer = NumbersWidget()
-        self.bottomSidebar.addTab(self.numbersViewer,
-                                  UI.PixmapCache.getIcon("numbers.png"),
-                                  self.tr("Numbers"))
+        
+        if Preferences.getUI("ShowSymbolsViewer"):
+            # Create the symbols viewer
+            logging.debug("Creating Symbols Viewer...")
+            from .SymbolsWidget import SymbolsWidget
+            self.symbolsViewer = SymbolsWidget()
+            self.leftSidebar.addTab(self.symbolsViewer,
+                                    UI.PixmapCache.getIcon("symbols.png"),
+                                    self.tr("Symbols"))
+        
+        if Preferences.getUI("ShowNumbersViewer"):
+            # Create the numbers viewer
+            logging.debug("Creating Numbers Viewer...")
+            from .NumbersWidget import NumbersWidget
+            self.numbersViewer = NumbersWidget()
+            self.bottomSidebar.addTab(self.numbersViewer,
+                                      UI.PixmapCache.getIcon("numbers.png"),
+                                      self.tr("Numbers"))
         
         self.bottomSidebar.setCurrentIndex(0)
         
@@ -1087,14 +1113,14 @@
         """
         assert side in [UserInterface.LeftSide, UserInterface.BottomSide]
         
-        if self.layoutType == "Toolboxes":
+        if self.__layoutType == "Toolboxes":
             if side == UserInterface.LeftSide:
                 self.lToolbox.addItem(widget, icon, label)
             elif side == UserInterface.BottomSide:
                 self.hToolbox.addItem(widget, icon, label)
             elif side == UserInterface.RightSide:
                 self.rToolbox.addItem(widget, icon, label)
-        elif self.layoutType == "Sidebars":
+        elif self.__layoutType == "Sidebars":
             if side == UserInterface.LeftSide:
                 self.leftSidebar.addTab(widget, icon, label)
             elif side == UserInterface.BottomSide:
@@ -1108,12 +1134,12 @@
         
         @param widget reference to the widget to remove (QWidget)
         """
-        if self.layoutType == "Toolboxes":
+        if self.__layoutType == "Toolboxes":
             for container in [self.lToolbox, self.hToolbox, self.rToolbox]:
                 index = container.indexOf(widget)
                 if index != -1:
                     container.removeItem(index)
-        elif self.layoutType == "Sidebars":
+        elif self.__layoutType == "Sidebars":
             for container in [self.leftSidebar, self.bottomSidebar,
                               self.rightSidebar]:
                 index = container.indexOf(widget)
@@ -1125,11 +1151,11 @@
         Public method to show the Log-Viewer.
         """
         if Preferences.getUI("LogViewerAutoRaise"):
-            if self.layoutType == "Toolboxes":
+            if self.__layoutType == "Toolboxes":
                 self.hToolboxDock.show()
                 self.hToolbox.setCurrentWidget(self.logViewer)
                 self.hToolboxDock.raise_()
-            elif self.layoutType == "Sidebars":
+            elif self.__layoutType == "Sidebars":
                 self.bottomSidebar.show()
                 self.bottomSidebar.setCurrentWidget(self.logViewer)
                 self.bottomSidebar.raise_()
@@ -1366,6 +1392,22 @@
         self.exitAct.setMenuRole(QAction.QuitRole)
         self.actions.append(self.exitAct)
 
+        self.restartAct = E5Action(
+            self.tr('Restart'),
+            UI.PixmapCache.getIcon("restart.png"),
+            self.tr('Restart'),
+            QKeySequence(self.tr("Ctrl+Shift+Q", "File|Quit")),
+            0, self, 'restart_eric')
+        self.restartAct.setStatusTip(self.tr('Restart the IDE'))
+        self.restartAct.setWhatsThis(self.tr(
+            """<b>Restart the IDE</b>"""
+            """<p>This restarts the IDE. Any unsaved changes may be saved"""
+            """ first. Any Python program being debugged will be stopped"""
+            """ and the preferences will be written to disc.</p>"""
+        ))
+        self.restartAct.triggered.connect(self.__restart)
+        self.actions.append(self.restartAct)
+
         self.saveSessionAct = E5Action(
             self.tr('Save session'),
             self.tr('Save session...'),
@@ -1513,23 +1555,24 @@
         self.shellActivateAct.triggered.connect(self.__activateShell)
         self.actions.append(self.shellActivateAct)
         self.addAction(self.shellActivateAct)
-
-        self.browserActivateAct = E5Action(
-            self.tr('File-Browser'),
-            self.tr('&File-Browser'),
-            QKeySequence(self.tr("Alt+Shift+F")),
-            0, self,
-            'file_browser_activate')
-        self.browserActivateAct.setStatusTip(self.tr(
-            "Switch the input focus to the File-Browser window."))
-        self.browserActivateAct.setWhatsThis(self.tr(
-            """<b>Activate File-Browser</b>"""
-            """<p>This switches the input focus to the File-Browser"""
-            """ window.</p>"""
-        ))
-        self.browserActivateAct.triggered.connect(self.__activateBrowser)
-        self.actions.append(self.browserActivateAct)
-        self.addAction(self.browserActivateAct)
+        
+        if self.browser is not None:
+            self.browserActivateAct = E5Action(
+                self.tr('File-Browser'),
+                self.tr('&File-Browser'),
+                QKeySequence(self.tr("Alt+Shift+F")),
+                0, self,
+                'file_browser_activate')
+            self.browserActivateAct.setStatusTip(self.tr(
+                "Switch the input focus to the File-Browser window."))
+            self.browserActivateAct.setWhatsThis(self.tr(
+                """<b>Activate File-Browser</b>"""
+                """<p>This switches the input focus to the File-Browser"""
+                """ window.</p>"""
+            ))
+            self.browserActivateAct.triggered.connect(self.__activateBrowser)
+            self.actions.append(self.browserActivateAct)
+            self.addAction(self.browserActivateAct)
 
         self.logViewerActivateAct = E5Action(
             self.tr('Log-Viewer'),
@@ -1566,24 +1609,25 @@
             self.__activateTaskViewer)
         self.actions.append(self.taskViewerActivateAct)
         self.addAction(self.taskViewerActivateAct)
-
-        self.templateViewerActivateAct = E5Action(
-            self.tr('Template-Viewer'),
-            self.tr('Templ&ate-Viewer'),
-            QKeySequence(self.tr("Alt+Shift+A")),
-            0, self,
-            'template_viewer_activate')
-        self.templateViewerActivateAct.setStatusTip(self.tr(
-            "Switch the input focus to the Template-Viewer window."))
-        self.templateViewerActivateAct.setWhatsThis(self.tr(
-            """<b>Activate Template-Viewer</b>"""
-            """<p>This switches the input focus to the Template-Viewer"""
-            """ window.</p>"""
-        ))
-        self.templateViewerActivateAct.triggered.connect(
-            self.__activateTemplateViewer)
-        self.actions.append(self.templateViewerActivateAct)
-        self.addAction(self.templateViewerActivateAct)
+        
+        if self.templateViewer is not None:
+            self.templateViewerActivateAct = E5Action(
+                self.tr('Template-Viewer'),
+                self.tr('Templ&ate-Viewer'),
+                QKeySequence(self.tr("Alt+Shift+A")),
+                0, self,
+                'template_viewer_activate')
+            self.templateViewerActivateAct.setStatusTip(self.tr(
+                "Switch the input focus to the Template-Viewer window."))
+            self.templateViewerActivateAct.setWhatsThis(self.tr(
+                """<b>Activate Template-Viewer</b>"""
+                """<p>This switches the input focus to the Template-Viewer"""
+                """ window.</p>"""
+            ))
+            self.templateViewerActivateAct.triggered.connect(
+                self.__activateTemplateViewer)
+            self.actions.append(self.templateViewerActivateAct)
+            self.addAction(self.templateViewerActivateAct)
 
         self.ltAct = E5Action(
             self.tr('Left Toolbox'),
@@ -1665,76 +1709,80 @@
         self.bsbAct.triggered.connect(self.__toggleBottomSidebar)
         self.actions.append(self.bsbAct)
         
-        self.cooperationViewerActivateAct = E5Action(
-            self.tr('Cooperation-Viewer'),
-            self.tr('Co&operation-Viewer'),
-            QKeySequence(self.tr("Alt+Shift+O")),
-            0, self,
-            'cooperation_viewer_activate')
-        self.cooperationViewerActivateAct.setStatusTip(self.tr(
-            "Switch the input focus to the Cooperation-Viewer window."))
-        self.cooperationViewerActivateAct.setWhatsThis(self.tr(
-            """<b>Activate Cooperation-Viewer</b>"""
-            """<p>This switches the input focus to the Cooperation-Viewer"""
-            """ window.</p>"""
-        ))
-        self.cooperationViewerActivateAct.triggered.connect(
-            self.activateCooperationViewer)
-        self.actions.append(self.cooperationViewerActivateAct)
-        self.addAction(self.cooperationViewerActivateAct)
-
-        self.ircActivateAct = E5Action(
-            self.tr('IRC'),
-            self.tr('&IRC'),
-            QKeySequence(self.tr("Meta+Shift+I")),
-            0, self,
-            'irc_widget_activate')
-        self.ircActivateAct.setStatusTip(self.tr(
-            "Switch the input focus to the IRC window."))
-        self.ircActivateAct.setWhatsThis(self.tr(
-            """<b>Activate IRC</b>"""
-            """<p>This switches the input focus to the IRC window.</p>"""
-        ))
-        self.ircActivateAct.triggered.connect(
-            self.__activateIRC)
-        self.actions.append(self.ircActivateAct)
-        self.addAction(self.ircActivateAct)
-
-        self.symbolsViewerActivateAct = E5Action(
-            self.tr('Symbols-Viewer'),
-            self.tr('S&ymbols-Viewer'),
-            QKeySequence(self.tr("Alt+Shift+Y")),
-            0, self,
-            'symbols_viewer_activate')
-        self.symbolsViewerActivateAct.setStatusTip(self.tr(
-            "Switch the input focus to the Symbols-Viewer window."))
-        self.symbolsViewerActivateAct.setWhatsThis(self.tr(
-            """<b>Activate Symbols-Viewer</b>"""
-            """<p>This switches the input focus to the Symbols-Viewer"""
-            """ window.</p>"""
-        ))
-        self.symbolsViewerActivateAct.triggered.connect(
-            self.__activateSymbolsViewer)
-        self.actions.append(self.symbolsViewerActivateAct)
-        self.addAction(self.symbolsViewerActivateAct)
-
-        self.numbersViewerActivateAct = E5Action(
-            self.tr('Numbers-Viewer'),
-            self.tr('Num&bers-Viewer'),
-            QKeySequence(self.tr("Alt+Shift+B")),
-            0, self,
-            'numbers_viewer_activate')
-        self.numbersViewerActivateAct.setStatusTip(self.tr(
-            "Switch the input focus to the Numbers-Viewer window."))
-        self.numbersViewerActivateAct.setWhatsThis(self.tr(
-            """<b>Activate Numbers-Viewer</b>"""
-            """<p>This switches the input focus to the Numbers-Viewer"""
-            """ window.</p>"""
-        ))
-        self.numbersViewerActivateAct.triggered.connect(
-            self.__activateNumbersViewer)
-        self.actions.append(self.numbersViewerActivateAct)
-        self.addAction(self.numbersViewerActivateAct)
+        if self.cooperation is not None:
+            self.cooperationViewerActivateAct = E5Action(
+                self.tr('Cooperation-Viewer'),
+                self.tr('Co&operation-Viewer'),
+                QKeySequence(self.tr("Alt+Shift+O")),
+                0, self,
+                'cooperation_viewer_activate')
+            self.cooperationViewerActivateAct.setStatusTip(self.tr(
+                "Switch the input focus to the Cooperation-Viewer window."))
+            self.cooperationViewerActivateAct.setWhatsThis(self.tr(
+                """<b>Activate Cooperation-Viewer</b>"""
+                """<p>This switches the input focus to the"""
+                """ Cooperation-Viewer window.</p>"""
+            ))
+            self.cooperationViewerActivateAct.triggered.connect(
+                self.activateCooperationViewer)
+            self.actions.append(self.cooperationViewerActivateAct)
+            self.addAction(self.cooperationViewerActivateAct)
+        
+        if self.irc is not None:
+            self.ircActivateAct = E5Action(
+                self.tr('IRC'),
+                self.tr('&IRC'),
+                QKeySequence(self.tr("Meta+Shift+I")),
+                0, self,
+                'irc_widget_activate')
+            self.ircActivateAct.setStatusTip(self.tr(
+                "Switch the input focus to the IRC window."))
+            self.ircActivateAct.setWhatsThis(self.tr(
+                """<b>Activate IRC</b>"""
+                """<p>This switches the input focus to the IRC window.</p>"""
+            ))
+            self.ircActivateAct.triggered.connect(
+                self.__activateIRC)
+            self.actions.append(self.ircActivateAct)
+            self.addAction(self.ircActivateAct)
+        
+        if self.symbolsViewer is not None:
+            self.symbolsViewerActivateAct = E5Action(
+                self.tr('Symbols-Viewer'),
+                self.tr('S&ymbols-Viewer'),
+                QKeySequence(self.tr("Alt+Shift+Y")),
+                0, self,
+                'symbols_viewer_activate')
+            self.symbolsViewerActivateAct.setStatusTip(self.tr(
+                "Switch the input focus to the Symbols-Viewer window."))
+            self.symbolsViewerActivateAct.setWhatsThis(self.tr(
+                """<b>Activate Symbols-Viewer</b>"""
+                """<p>This switches the input focus to the Symbols-Viewer"""
+                """ window.</p>"""
+            ))
+            self.symbolsViewerActivateAct.triggered.connect(
+                self.__activateSymbolsViewer)
+            self.actions.append(self.symbolsViewerActivateAct)
+            self.addAction(self.symbolsViewerActivateAct)
+        
+        if self.numbersViewer is not None:
+            self.numbersViewerActivateAct = E5Action(
+                self.tr('Numbers-Viewer'),
+                self.tr('Num&bers-Viewer'),
+                QKeySequence(self.tr("Alt+Shift+B")),
+                0, self,
+                'numbers_viewer_activate')
+            self.numbersViewerActivateAct.setStatusTip(self.tr(
+                "Switch the input focus to the Numbers-Viewer window."))
+            self.numbersViewerActivateAct.setWhatsThis(self.tr(
+                """<b>Activate Numbers-Viewer</b>"""
+                """<p>This switches the input focus to the Numbers-Viewer"""
+                """ window.</p>"""
+            ))
+            self.numbersViewerActivateAct.triggered.connect(
+                self.__activateNumbersViewer)
+            self.actions.append(self.numbersViewerActivateAct)
+            self.addAction(self.numbersViewerActivateAct)
 
         self.whatsThisAct = E5Action(
             self.tr('What\'s This?'),
@@ -2664,6 +2712,7 @@
         self.__menus["file"].addAction(self.saveSessionAct)
         self.__menus["file"].addAction(self.loadSessionAct)
         self.__menus["file"].addSeparator()
+        self.__menus["file"].addAction(self.restartAct)
         self.__menus["file"].addAction(self.exitAct)
         act = self.__menus["file"].actions()[0]
         sep = self.__menus["file"].insertSeparator(act)
@@ -2756,20 +2805,51 @@
                                           self.__menus["window"])
         self.__menus["subwindow"].setTearOffEnabled(True)
         # left side
+        try:
+            self.__menus["subwindow"].addSection(self.tr("Left Side"))
+        except AttributeError:
+            # Qt4
+            pass
         self.__menus["subwindow"].addAction(self.pbActivateAct)
         self.__menus["subwindow"].addAction(self.mpbActivateAct)
-        self.__menus["subwindow"].addAction(self.templateViewerActivateAct)
-        self.__menus["subwindow"].addAction(self.browserActivateAct)
-        self.__menus["subwindow"].addAction(self.symbolsViewerActivateAct)
+        if self.templateViewer is not None:
+            self.__menus["subwindow"].addAction(self.templateViewerActivateAct)
+        if self.browser is not None:
+            self.__menus["subwindow"].addAction(self.browserActivateAct)
+        if self.symbolsViewer is not None:
+            self.__menus["subwindow"].addAction(self.symbolsViewerActivateAct)
         # bottom side
+        try:
+            self.__menus["subwindow"].addSection(self.tr("Bottom Side"))
+        except AttributeError:
+            # Qt4
+            self.__menus["subwindow"].addSeparator()
         self.__menus["subwindow"].addAction(self.shellActivateAct)
         self.__menus["subwindow"].addAction(self.taskViewerActivateAct)
         self.__menus["subwindow"].addAction(self.logViewerActivateAct)
-        self.__menus["subwindow"].addAction(self.numbersViewerActivateAct)
+        if self.numbersViewer is not None:
+            self.__menus["subwindow"].addAction(self.numbersViewerActivateAct)
+        try:
+            self.__menus["subwindow"].addSection(self.tr("Right Side"))
+        except AttributeError:
+            # Qt4
+            self.__menus["subwindow"].addSeparator()
         # right side
+        if self.codeDocumentationViewer is not None:
+            self.__menus["subwindow"].addAction(
+                self.tr("Code Documentation Viewer"),
+                self.activateCodeDocumentationViewer)
         self.__menus["subwindow"].addAction(self.debugViewerActivateAct)
-        self.__menus["subwindow"].addAction(self.cooperationViewerActivateAct)
-        self.__menus["subwindow"].addAction(self.ircActivateAct)
+        if self.cooperation is not None:
+            self.__menus["subwindow"].addAction(
+                self.cooperationViewerActivateAct)
+        if self.irc is not None:
+            self.__menus["subwindow"].addAction(self.ircActivateAct)
+        try:
+            self.__menus["subwindow"].addSection(self.tr("Plug-ins"))
+        except AttributeError:
+            # Qt4
+            self.__menus["subwindow"].addSeparator()
         
         self.__menus["toolbars"] = \
             QMenu(self.tr("&Toolbars"), self.__menus["window"])
@@ -2880,6 +2960,7 @@
         pluginstb.setToolTip(self.tr("Plugins"))
         
         filetb.addSeparator()
+        filetb.addAction(self.restartAct)
         filetb.addAction(self.exitAct)
         act = filetb.actions()[0]
         sep = filetb.insertSeparator(act)
@@ -3582,17 +3663,24 @@
         """
         if self.__shutdown():
             e5App().closeAllWindows()
-        
-    def __restart(self):
+    
+    @pyqtSlot()
+    def __restart(self, ask=False):
         """
         Private method to restart the application.
-        """
-        res = E5MessageBox.yesNo(
-            self,
-            self.tr("Restart application"),
-            self.tr(
-                """The application needs to be restarted. Do it now?"""),
-            yesDefault=True)
+        
+        @param ask flag indicating to ask the user for permission
+        @type bool
+        """
+        if ask:
+            res = E5MessageBox.yesNo(
+                self,
+                self.tr("Restart application"),
+                self.tr(
+                    """The application needs to be restarted. Do it now?"""),
+                yesDefault=True)
+        else:
+            res = True
         
         if res and self.__shutdown():
             e5App().closeAllWindows()
@@ -3737,14 +3825,14 @@
         self.__menus["window"].addActions(self.viewProfileActGrp.actions())
         self.__menus["window"].addSeparator()
         
-        if self.layoutType == "Toolboxes":
+        if self.__layoutType == "Toolboxes":
             self.__menus["window"].addAction(self.ltAct)
             self.ltAct.setChecked(not self.lToolboxDock.isHidden())
             self.__menus["window"].addAction(self.rtAct)
             self.rtAct.setChecked(not self.lToolboxDock.isHidden())
             self.__menus["window"].addAction(self.htAct)
             self.htAct.setChecked(not self.hToolboxDock.isHidden())
-        elif self.layoutType == "Sidebars":
+        elif self.__layoutType == "Sidebars":
             self.__menus["window"].addAction(self.lsbAct)
             self.lsbAct.setChecked(not self.leftSidebar.isHidden())
             self.__menus["window"].addAction(self.rsbAct)
@@ -3869,10 +3957,10 @@
         """
         if self.currentProfile and save:
             # step 1: save the window geometries of the active profile
-            if self.layoutType in ["Toolboxes", "Sidebars"]:
+            if self.__layoutType in ["Toolboxes", "Sidebars"]:
                 state = self.saveState()
                 self.profiles[self.currentProfile][0] = state
-                if self.layoutType == "Sidebars":
+                if self.__layoutType == "Sidebars":
                     state = self.leftSplitter.saveState()
                     self.profiles[self.currentProfile][2][0] = state
                     state = self.verticalSplitter.saveState()
@@ -3886,14 +3974,14 @@
                     state = self.rightSidebar.saveState()
                     self.profiles[self.currentProfile][2][5] = state
             # step 2: save the visibility of the windows of the active profile
-            if self.layoutType == "Toolboxes":
+            if self.__layoutType == "Toolboxes":
                 self.profiles[self.currentProfile][1][0] = \
                     self.lToolboxDock.isVisible()
                 self.profiles[self.currentProfile][1][1] = \
                     self.hToolboxDock.isVisible()
                 self.profiles[self.currentProfile][1][2] = \
                     self.rToolboxDock.isVisible()
-            elif self.layoutType == "Sidebars":
+            elif self.__layoutType == "Sidebars":
                 self.profiles[self.currentProfile][1][0] = \
                     self.leftSidebar.isVisible()
                 self.profiles[self.currentProfile][1][1] = \
@@ -3915,11 +4003,11 @@
             self.__saveCurrentViewProfile(save)
             
             # step 2: set the window geometries of the new profile
-            if self.layoutType in ["Toolboxes", "Sidebars"]:
+            if self.__layoutType in ["Toolboxes", "Sidebars"]:
                 state = self.profiles[name][0]
                 if not state.isEmpty():
                     self.restoreState(state)
-                if self.layoutType == "Sidebars":
+                if self.__layoutType == "Sidebars":
                     state = self.profiles[name][2][0]
                     if not state.isEmpty():
                         self.leftSplitter.restoreState(state)
@@ -3941,11 +4029,11 @@
                 self.__configureDockareaCornerUsage()
             
             # step 3: activate the windows of the new profile
-            if self.layoutType == "Toolboxes":
+            if self.__layoutType == "Toolboxes":
                 self.lToolboxDock.setVisible(self.profiles[name][1][0])
                 self.hToolboxDock.setVisible(self.profiles[name][1][1])
                 self.rToolboxDock.setVisible(self.profiles[name][1][2])
-            elif self.layoutType == "Sidebars":
+            elif self.__layoutType == "Sidebars":
                 self.leftSidebar.setVisible(self.profiles[name][1][0])
                 self.bottomSidebar.setVisible(self.profiles[name][1][1])
                 self.rightSidebar.setVisible(self.profiles[name][1][2])
@@ -3968,30 +4056,28 @@
         Private slot to handle the start of a debugging session.
         """
         self.setDebugProfile()
-        if self.layoutType == "Toolboxes":
+        if self.__layoutType == "Toolboxes":
             self.__currentRightWidget = self.rToolbox.currentWidget()
             self.rToolbox.setCurrentWidget(self.debugViewer)
-            if not self.embeddedShell:
-                self.__currentBottomWidget = self.hToolbox.currentWidget()
-                self.hToolbox.setCurrentWidget(self.shellAssembly)
-        elif self.layoutType == "Sidebars":
+            self.__currentBottomWidget = self.hToolbox.currentWidget()
+            self.hToolbox.setCurrentWidget(self.shellAssembly)
+        elif self.__layoutType == "Sidebars":
             self.__currentRightWidget = self.rightSidebar.currentWidget()
             self.rightSidebar.setCurrentWidget(self.debugViewer)
-            if not self.embeddedShell:
-                self.__currentBottomWidget = self.bottomSidebar.currentWidget()
-                self.bottomSidebar.setCurrentWidget(self.shellAssembly)
+            self.__currentBottomWidget = self.bottomSidebar.currentWidget()
+            self.bottomSidebar.setCurrentWidget(self.shellAssembly)
         
     def __debuggingDone(self):
         """
         Private slot to handle the end of a debugging session.
         """
         self.__setEditProfile()
-        if self.layoutType == "Toolboxes":
+        if self.__layoutType == "Toolboxes":
             if self.__currentRightWidget:
                 self.rToolbox.setCurrentWidget(self.__currentRightWidget)
             if self.__currentBottomWidget:
                 self.hToolbox.setCurrentWidget(self.__currentBottomWidget)
-        elif self.layoutType == "Sidebars":
+        elif self.__layoutType == "Sidebars":
             if self.__currentRightWidget:
                 self.rightSidebar.setCurrentWidget(self.__currentRightWidget)
             if self.__currentBottomWidget:
@@ -4031,15 +4117,24 @@
         @return the name of the current view profile (string)
         """
         return self.currentProfile
-        
+    
+    def getLayoutType(self):
+        """
+        Public method to get the current layout type.
+        
+        @return current layout type
+        @rtype str
+        """
+        return self.__layoutType
+    
     def __activateProjectBrowser(self):
         """
         Private slot to handle the activation of the project browser.
         """
-        if self.layoutType == "Toolboxes":
+        if self.__layoutType == "Toolboxes":
             self.lToolboxDock.show()
             self.lToolbox.setCurrentWidget(self.projectBrowser)
-        elif self.layoutType == "Sidebars":
+        elif self.__layoutType == "Sidebars":
             self.leftSidebar.show()
             self.leftSidebar.setCurrentWidget(self.projectBrowser)
         else:
@@ -4051,10 +4146,10 @@
         """
         Private slot to handle the activation of the project browser.
         """
-        if self.layoutType == "Toolboxes":
+        if self.__layoutType == "Toolboxes":
             self.lToolboxDock.show()
             self.lToolbox.setCurrentWidget(self.multiProjectBrowser)
-        elif self.layoutType == "Sidebars":
+        elif self.__layoutType == "Sidebars":
             self.leftSidebar.show()
             self.leftSidebar.setCurrentWidget(self.multiProjectBrowser)
         else:
@@ -4065,10 +4160,10 @@
         """
         Public slot to handle the activation of the debug viewer.
         """
-        if self.layoutType == "Toolboxes":
+        if self.__layoutType == "Toolboxes":
             self.rToolboxDock.show()
             self.rToolbox.setCurrentWidget(self.debugViewer)
-        elif self.layoutType == "Sidebars":
+        elif self.__layoutType == "Sidebars":
             self.rightSidebar.show()
             self.rightSidebar.setCurrentWidget(self.debugViewer)
         else:
@@ -4079,35 +4174,24 @@
         """
         Private slot to handle the activation of the Shell window.
         """
-        if self.embeddedShell:              # embedded in debug browser
-            if self.layoutType == "Toolboxes":
-                self.rToolboxDock.show()
-                self.rToolbox.setCurrentWidget(self.debugViewer)
-            elif self.layoutType == "Sidebars":
-                self.rightSidebar.show()
-                self.rightSidebar.setCurrentWidget(self.debugViewer)
-            else:
-                self.debugViewer.show()
-            self.debugViewer.setCurrentWidget(self.debugViewer.shellAssembly)
-        else:                               # separate window
-            if self.layoutType == "Toolboxes":
-                self.hToolboxDock.show()
-                self.hToolbox.setCurrentWidget(self.shellAssembly)
-            elif self.layoutType == "Sidebars":
-                self.bottomSidebar.show()
-                self.bottomSidebar.setCurrentWidget(self.shellAssembly)
-            else:
-                self.shell.show()
+        if self.__layoutType == "Toolboxes":
+            self.hToolboxDock.show()
+            self.hToolbox.setCurrentWidget(self.shellAssembly)
+        elif self.__layoutType == "Sidebars":
+            self.bottomSidebar.show()
+            self.bottomSidebar.setCurrentWidget(self.shellAssembly)
+        else:
+            self.shell.show()
         self.shell.setFocus(Qt.ActiveWindowFocusReason)
         
     def __activateLogViewer(self):
         """
         Private slot to handle the activation of the Log Viewer.
         """
-        if self.layoutType == "Toolboxes":
+        if self.__layoutType == "Toolboxes":
             self.hToolboxDock.show()
             self.hToolbox.setCurrentWidget(self.logViewer)
-        elif self.layoutType == "Sidebars":
+        elif self.__layoutType == "Sidebars":
             self.bottomSidebar.show()
             self.bottomSidebar.setCurrentWidget(self.logViewer)
         else:
@@ -4118,10 +4202,10 @@
         """
         Private slot to handle the activation of the Task Viewer.
         """
-        if self.layoutType == "Toolboxes":
+        if self.__layoutType == "Toolboxes":
             self.hToolboxDock.show()
             self.hToolbox.setCurrentWidget(self.taskViewer)
-        elif self.layoutType == "Sidebars":
+        elif self.__layoutType == "Sidebars":
             self.bottomSidebar.show()
             self.bottomSidebar.setCurrentWidget(self.taskViewer)
         else:
@@ -4132,50 +4216,31 @@
         """
         Private slot to handle the activation of the Template Viewer.
         """
-        if self.layoutType == "Toolboxes":
-            self.lToolboxDock.show()
-            self.lToolbox.setCurrentWidget(self.templateViewer)
-        elif self.layoutType == "Sidebars":
-            self.leftSidebar.show()
-            self.leftSidebar.setCurrentWidget(self.templateViewer)
-        else:
-            self.templateViewer.show()
-        self.templateViewer.setFocus(Qt.ActiveWindowFocusReason)
+        if self.templateViewer is not None:
+            if self.__layoutType == "Toolboxes":
+                self.lToolboxDock.show()
+                self.lToolbox.setCurrentWidget(self.templateViewer)
+            elif self.__layoutType == "Sidebars":
+                self.leftSidebar.show()
+                self.leftSidebar.setCurrentWidget(self.templateViewer)
+            else:
+                self.templateViewer.show()
+            self.templateViewer.setFocus(Qt.ActiveWindowFocusReason)
         
     def __activateBrowser(self):
         """
         Private slot to handle the activation of the file browser.
         """
-        if self.embeddedFileBrowser == 0:   # separate window
-            if self.layoutType == "Toolboxes":
+        if self.browser is not None:
+            if self.__layoutType == "Toolboxes":
                 self.lToolboxDock.show()
                 self.lToolbox.setCurrentWidget(self.browser)
-            elif self.layoutType == "Sidebars":
+            elif self.__layoutType == "Sidebars":
                 self.leftSidebar.show()
                 self.leftSidebar.setCurrentWidget(self.browser)
             else:
                 self.browser.show()
-        elif self.embeddedFileBrowser == 1:  # embedded in debug browser
-            if self.layoutType == "Toolboxes":
-                self.rToolboxDock.show()
-                self.rToolbox.setCurrentWidget(self.debugViewer)
-            elif self.layoutType == "Sidebars":
-                self.rightSidebar.show()
-                self.rightSidebar.setCurrentWidget(self.debugViewer)
-            else:
-                self.debugViewer.show()
-            self.debugViewer.setCurrentWidget(self.browser)
-        else:                               # embedded in project browser
-            if self.layoutType == "Toolboxes":
-                self.lToolboxDock.show()
-                self.lToolbox.setCurrentWidget(self.projectBrowser)
-            elif self.layoutType == "Sidebars":
-                self.leftSidebar.show()
-                self.leftSidebar.setCurrentWidget(self.projectBrowser)
-            else:
-                self.projectBrowser.show()
-            self.projectBrowser.setCurrentWidget(self.browser)
-        self.browser.setFocus(Qt.ActiveWindowFocusReason)
+            self.browser.setFocus(Qt.ActiveWindowFocusReason)
         
     def __toggleLeftToolbox(self):
         """
@@ -4256,57 +4321,61 @@
         """
         Public slot to handle the activation of the cooperation window.
         """
-        if self.layoutType == "Toolboxes":
-            self.rToolboxDock.show()
-            self.rToolbox.setCurrentWidget(self.cooperation)
-        elif self.layoutType == "Sidebars":
-            self.rightSidebar.show()
-            self.rightSidebar.setCurrentWidget(self.cooperation)
-        else:
-            self.cooperation.show()
-        self.cooperation.setFocus(Qt.ActiveWindowFocusReason)
+        if self.cooperation is not None:
+            if self.__layoutType == "Toolboxes":
+                self.rToolboxDock.show()
+                self.rToolbox.setCurrentWidget(self.cooperation)
+            elif self.__layoutType == "Sidebars":
+                self.rightSidebar.show()
+                self.rightSidebar.setCurrentWidget(self.cooperation)
+            else:
+                self.cooperation.show()
+            self.cooperation.setFocus(Qt.ActiveWindowFocusReason)
         
     def __activateIRC(self):
         """
         Private slot to handle the activation of the IRC window.
         """
-        if self.layoutType == "Toolboxes":
-            self.rToolboxDock.show()
-            self.rToolbox.setCurrentWidget(self.irc)
-        elif self.layoutType == "Sidebars":
-            self.rightSidebar.show()
-            self.rightSidebar.setCurrentWidget(self.irc)
-        else:
-            self.irc.show()
-        self.irc.setFocus(Qt.ActiveWindowFocusReason)
+        if self.irc is not None:
+            if self.__layoutType == "Toolboxes":
+                self.rToolboxDock.show()
+                self.rToolbox.setCurrentWidget(self.irc)
+            elif self.__layoutType == "Sidebars":
+                self.rightSidebar.show()
+                self.rightSidebar.setCurrentWidget(self.irc)
+            else:
+                self.irc.show()
+            self.irc.setFocus(Qt.ActiveWindowFocusReason)
         
     def __activateSymbolsViewer(self):
         """
         Private slot to handle the activation of the Symbols Viewer.
         """
-        if self.layoutType == "Toolboxes":
-            self.lToolboxDock.show()
-            self.lToolbox.setCurrentWidget(self.symbolsViewer)
-        elif self.layoutType == "Sidebars":
-            self.leftSidebar.show()
-            self.leftSidebar.setCurrentWidget(self.symbolsViewer)
-        else:
-            self.symbolsViewer.show()
-        self.symbolsViewer.setFocus(Qt.ActiveWindowFocusReason)
+        if self.symbolsViewer is not None:
+            if self.__layoutType == "Toolboxes":
+                self.lToolboxDock.show()
+                self.lToolbox.setCurrentWidget(self.symbolsViewer)
+            elif self.__layoutType == "Sidebars":
+                self.leftSidebar.show()
+                self.leftSidebar.setCurrentWidget(self.symbolsViewer)
+            else:
+                self.symbolsViewer.show()
+            self.symbolsViewer.setFocus(Qt.ActiveWindowFocusReason)
         
     def __activateNumbersViewer(self):
         """
         Private slot to handle the activation of the Numbers Viewer.
         """
-        if self.layoutType == "Toolboxes":
-            self.hToolboxDock.show()
-            self.hToolboxDock.setCurrentWidget(self.numbersViewer)
-        elif self.layoutType == "Sidebars":
-            self.bottomSidebar.show()
-            self.bottomSidebar.setCurrentWidget(self.numbersViewer)
-        else:
-            self.numbersViewer.show()
-        self.numbersViewer.setFocus(Qt.ActiveWindowFocusReason)
+        if self.numbersViewer is not None:
+            if self.__layoutType == "Toolboxes":
+                self.hToolboxDock.show()
+                self.hToolbox.setCurrentWidget(self.numbersViewer)
+            elif self.__layoutType == "Sidebars":
+                self.bottomSidebar.show()
+                self.bottomSidebar.setCurrentWidget(self.numbersViewer)
+            else:
+                self.numbersViewer.show()
+            self.numbersViewer.setFocus(Qt.ActiveWindowFocusReason)
         
     def __activateViewmanager(self):
         """
@@ -4323,16 +4392,19 @@
         @param switchFocus flag indicating to transfer the input focus
         @type bool
         """
-        if self.layoutType == "Toolboxes":
-            self.rToolboxDock.show()
-            self.rToolbox.setCurrentWidget(self.codeDocumentationViewer)
-        elif self.layoutType == "Sidebars":
-            self.rightSidebar.show()
-            self.rightSidebar.setCurrentWidget(self.codeDocumentationViewer)
-        else:
-            self.codeDocumentationViewer.show()
-        if switchFocus:
-            self.codeDocumentationViewer.setFocus(Qt.ActiveWindowFocusReason)
+        if self.codeDocumentationViewer is not None:
+            if self.__layoutType == "Toolboxes":
+                self.rToolboxDock.show()
+                self.rToolbox.setCurrentWidget(self.codeDocumentationViewer)
+            elif self.__layoutType == "Sidebars":
+                self.rightSidebar.show()
+                self.rightSidebar.setCurrentWidget(
+                    self.codeDocumentationViewer)
+            else:
+                self.codeDocumentationViewer.show()
+            if switchFocus:
+                self.codeDocumentationViewer.setFocus(
+                    Qt.ActiveWindowFocusReason)
     
     def __toggleWindow(self, w):
         """
@@ -5735,7 +5807,7 @@
         SpellChecker.setDefaultLanguage(
             Preferences.getEditor("SpellCheckingDefaultLanguage"))
         
-        if self.layoutType == "Sidebars":
+        if self.__layoutType == "Sidebars":
             delay = Preferences.getUI("SidebarDelay")
             self.leftSidebar.setDelay(delay)
             self.bottomSidebar.setDelay(delay)
@@ -5799,7 +5871,7 @@
         Private slot to configure the various view profiles.
         """
         from Preferences.ViewProfileDialog import ViewProfileDialog
-        dlg = ViewProfileDialog(self.layoutType, self.profiles['edit'][1],
+        dlg = ViewProfileDialog(self.__layoutType, self.profiles['edit'][1],
                                 self.profiles['debug'][1])
         if dlg.exec_() == QDialog.Accepted:
             edit, debug = dlg.getVisibilities()
@@ -6338,7 +6410,7 @@
             self)
         dlg.exec_()
         if dlg.restartNeeded():
-            self.__restart()
+            self.__restart(ask=True)
         
     def __deinstallPlugin(self):
         """
@@ -6458,8 +6530,9 @@
             if not self.helpWindow.shutdown():
                 return False
         
-        if not self.irc.shutdown():
-            return False
+        if self.irc is not None:
+            if not self.irc.shutdown():
+                return False
         
         sessionCreated = self.__writeSession()
         
@@ -6475,14 +6548,17 @@
         if sessionCreated and not self.__disableCrashSession:
             self.__deleteCrashSession()
         
-        self.codeDocumentationViewer.shutdown()
+        if self.codeDocumentationViewer is not None:
+            self.codeDocumentationViewer.shutdown()
         
         self.__previewer.shutdown()
         
         self.shell.closeShell()
         
         self.__writeTasks()
-        self.templateViewer.save()
+        
+        if self.templateViewer is not None:
+            self.templateViewer.save()
         
         if not self.debuggerUI.shutdownServer():
             return False
@@ -6490,13 +6566,14 @@
         
         self.backgroundService.shutdown()
         
-        self.cooperation.shutdown()
+        if self.cooperation is not None:
+            self.cooperation.shutdown()
         
         self.pluginManager.doShutdown()
         
         self.virtualenvManager.shutdown()
         
-        if self.layoutType == "Sidebars":
+        if self.__layoutType == "Sidebars":
             self.leftSidebar.shutdown()
             self.bottomSidebar.shutdown()
             self.rightSidebar.shutdown()
@@ -6508,7 +6585,9 @@
         Preferences.setGeometry("MainMaximized", self.isMaximized())
         if not self.isMaximized():
             Preferences.setGeometry("MainGeometry", self.saveGeometry())
-        self.browser.saveToplevelDirs()
+        
+        if self.browser is not None:
+            self.browser.saveToplevelDirs()
         
         Preferences.setUI(
             "ToolbarManagerState", self.toolbarManager.saveState())
@@ -7008,7 +7087,8 @@
         """
         Public method to initiate the IRC auto connection.
         """
-        self.irc.autoConnect()
+        if self.irc is not None:
+            self.irc.autoConnect()
     
     def __ircAutoConnected(self):
         """
--- a/ViewManager/ViewManager.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/ViewManager/ViewManager.py	Wed Aug 01 19:43:34 2018 +0200
@@ -6962,7 +6962,9 @@
         @param editor editor to show information text for
         @type Editor
         """
-        self.ui.documentationViewer().showInfo(editor)
+        documentationViewer = self.ui.documentationViewer()
+        if documentationViewer:
+            documentationViewer.showInfo(editor)
     
     def isEditorInfoSupported(self, language):
         """
@@ -6974,7 +6976,11 @@
         @return flag indicating the support status
         @rtype bool
         """
-        return self.ui.documentationViewer().isSupportedLanguage(language)
+        documentationViewer = self.ui.documentationViewer()
+        if documentationViewer:
+            return documentationViewer.isSupportedLanguage(language)
+        else:
+            return False
     
     def __isEditorInfoSupportedEd(self, editor):
         """
--- a/WebBrowser/CookieJar/CookieJar.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/WebBrowser/CookieJar/CookieJar.py	Wed Aug 01 19:43:34 2018 +0200
@@ -59,6 +59,11 @@
                                           "web_browser", "cookies.ini")
         
         self.__store = WebBrowserWindow.webProfile().cookieStore()
+        try:
+            self.__store.setCookieFilter(self.__cookieFilter)
+        except AttributeError:
+            # pre Qt 5.11
+            pass
         self.__store.cookieAdded.connect(self.__cookieAdded)
         self.__store.cookieRemoved.connect(self.__cookieRemoved)
         
@@ -187,6 +192,38 @@
         if self.deleteCookie(cookie):
             self.cookiesChanged.emit()
     
+    def __cookieFilter(self, request):
+        """
+        Private method to filter cookies.
+        
+        Note: This method is used for Qt 5.11+ only.
+        
+        @param request reference to the cookie filter request object
+        @type QWebEngineCookieStore.FilterRequest
+        @return flag indicating cookie access is allowed
+        @rtype bool
+        """
+        if not self.__loaded:
+            self.__load()
+        
+        if self.__acceptCookies == self.AcceptNever:
+            res = self.__isOnDomainList(self.__exceptionsAllow,
+                                        request.origin.host())
+            if not res:
+                return False
+        
+        if self.__acceptCookies == self.AcceptAlways:
+            res = self.__isOnDomainList(self.__exceptionsBlock,
+                                        request.origin.host())
+            if res:
+                return False
+        
+        if self.__acceptCookies == self.AcceptOnlyFromSitesNavigatedTo and \
+           request.thirdParty:
+            return False
+        
+        return True
+ 
     def __rejectCookie(self, cookie, cookieDomain):
         """
         Private method to test, if a cookie shall be rejected.
--- a/WebBrowser/OpenSearch/DefaultSearchEngines/DefaultSearchEngines.qrc	Sat Jul 07 12:01:23 2018 +0200
+++ b/WebBrowser/OpenSearch/DefaultSearchEngines/DefaultSearchEngines.qrc	Wed Aug 01 19:43:34 2018 +0200
@@ -11,7 +11,9 @@
   <file>LEO_DeuEng.xml</file>
   <file>LinuxMagazin.xml</file>
   <file>PyPI.xml</file>
+  <file>Qwant.xml</file>
   <file>Reddit.xml</file>
+  <file>StartPage.xml</file>
   <file>Wikia.xml</file>
   <file>Wikia_en.xml</file>
   <file>Wikipedia.xml</file>
--- a/WebBrowser/OpenSearch/DefaultSearchEngines/DefaultSearchEngines_rc.py	Sat Jul 07 12:01:23 2018 +0200
+++ b/WebBrowser/OpenSearch/DefaultSearchEngines/DefaultSearchEngines_rc.py	Wed Aug 01 19:43:34 2018 +0200
@@ -2,40 +2,14 @@
 
 # Resource object code
 #
-# Created by: The Resource Compiler for PyQt5 (Qt v5.10.0)
+# Created by: The Resource Compiler for PyQt5 (Qt v5.11.1)
 #
 # WARNING! All changes made in this file will be lost!
 
 from PyQt5 import QtCore
 
 qt_resource_data = b"\
-\x00\x00\x01\x79\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
-\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
-\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\
-\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
-\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
-\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
-\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x42\x69\x6e\x67\x3c\x2f\
-\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\
-\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x42\x69\x6e\x67\
-\x20\x57\x65\x62\x20\x53\x65\x61\x72\x63\x68\x3c\x2f\x44\x65\x73\
-\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\
-\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\
-\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\
-\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x62\x69\x6e\x67\x2e\x63\x6f\x6d\x2f\x73\
-\x65\x61\x72\x63\x68\x3f\x63\x63\x3d\x7b\x6c\x61\x6e\x67\x75\x61\
-\x67\x65\x7d\x26\x61\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\x72\x63\
-\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\
-\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\
-\x2e\x62\x69\x6e\x67\x2e\x63\x6f\x6d\x2f\x73\x2f\x77\x6c\x66\x6c\
-\x61\x67\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\
-\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\
-\x69\x70\x74\x69\x6f\x6e\x3e\x0a\
-\x00\x00\x02\x46\
+\x00\x00\x02\x8d\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
@@ -44,62 +18,40 @@
 \x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
 \x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
 \x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
-\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x47\x6f\x6f\x67\x6c\x65\
-\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\
-\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x47\x6f\
-\x6f\x67\x6c\x65\x20\x57\x65\x62\x20\x53\x65\x61\x72\x63\x68\x3c\
-\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\
-\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\
-\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\
-\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\
-\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6f\x6f\x67\x6c\x65\
-\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x3f\x68\x6c\x3d\x7b\
-\x6c\x61\x6e\x67\x75\x61\x67\x65\x7d\x26\x61\x6d\x70\x3b\x6c\x72\
-\x3d\x6c\x61\x6e\x67\x5f\x7b\x6c\x61\x6e\x67\x75\x61\x67\x65\x7d\
-\x26\x61\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\
-\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\
-\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\
-\x70\x65\x3d\x22\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\
-\x78\x2d\x73\x75\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\x6a\x73\
-\x6f\x6e\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\
-\x74\x70\x3a\x2f\x2f\x73\x75\x67\x67\x65\x73\x74\x71\x75\x65\x72\
-\x69\x65\x73\x2e\x67\x6f\x6f\x67\x6c\x65\x2e\x63\x6f\x6d\x2f\x63\
-\x6f\x6d\x70\x6c\x65\x74\x65\x2f\x73\x65\x61\x72\x63\x68\x3f\x6f\
-\x75\x74\x70\x75\x74\x3d\x66\x69\x72\x65\x66\x6f\x78\x26\x61\x6d\
-\x70\x3b\x68\x6c\x3d\x7b\x6c\x61\x6e\x67\x75\x61\x67\x65\x7d\x26\
-\x61\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\
-\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\
-\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6f\x6f\
-\x67\x6c\x65\x2e\x63\x6f\x6d\x2f\x66\x61\x76\x69\x63\x6f\x6e\x2e\
-\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\
-\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\
-\x69\x6f\x6e\x3e\x0a\
-\x00\x00\x01\x74\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
-\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
-\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\
-\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
-\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
-\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
-\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x50\x79\x50\x49\x3c\x2f\
-\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\
-\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x53\x65\x61\x72\
-\x63\x68\x20\x50\x79\x50\x49\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\
-\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\
-\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\
-\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\
-\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x73\x3a\x2f\x2f\x70\
-\x79\x70\x69\x2e\x6f\x72\x67\x2f\x73\x65\x61\x72\x63\x68\x2f\x3f\
-\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\
-\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\
-\x74\x70\x73\x3a\x2f\x2f\x70\x79\x70\x69\x2e\x6f\x72\x67\x2f\x73\
-\x74\x61\x74\x69\x63\x2f\x69\x6d\x61\x67\x65\x73\x2f\x66\x61\x76\
-\x69\x63\x6f\x6e\x2e\x36\x61\x37\x36\x32\x37\x35\x64\x2e\x69\x63\
-\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\
-\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\
-\x6e\x3e\x0a\
+\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x53\x74\x61\x72\x74\x50\
+\x61\x67\x65\x20\x2d\x20\x45\x6e\x67\x6c\x69\x73\x68\x3c\x2f\x53\
+\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x44\
+\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x53\x74\x61\x72\x74\
+\x50\x61\x67\x65\x20\x53\x65\x61\x72\x63\x68\x3c\x2f\x44\x65\x73\
+\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\
+\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\
+\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\
+\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x73\
+\x3a\x2f\x2f\x77\x77\x77\x2e\x73\x74\x61\x72\x74\x70\x61\x67\x65\
+\x2e\x63\x6f\x6d\x2f\x64\x6f\x2f\x64\x73\x65\x61\x72\x63\x68\x3f\
+\x71\x75\x65\x72\x79\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\
+\x6d\x73\x7d\x26\x61\x6d\x70\x3b\x63\x61\x74\x3d\x77\x65\x62\x26\
+\x61\x6d\x70\x3b\x70\x6c\x3d\x6f\x70\x65\x6e\x73\x65\x61\x72\x63\
+\x68\x26\x61\x6d\x70\x3b\x6c\x61\x6e\x67\x75\x61\x67\x65\x3d\x65\
+\x6e\x67\x6c\x69\x73\x68\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\
+\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\
+\x74\x79\x70\x65\x3d\x22\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\
+\x6e\x2f\x78\x2d\x73\x75\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\
+\x6a\x73\x6f\x6e\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\
+\x68\x74\x74\x70\x73\x3a\x2f\x2f\x77\x77\x77\x2e\x73\x74\x61\x72\
+\x74\x70\x61\x67\x65\x2e\x63\x6f\x6d\x2f\x63\x67\x69\x2d\x62\x69\
+\x6e\x2f\x63\x73\x75\x67\x67\x65\x73\x74\x3f\x71\x75\x65\x72\x79\
+\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x26\x61\
+\x6d\x70\x3b\x6c\x69\x6d\x69\x74\x3d\x31\x30\x26\x61\x6d\x70\x3b\
+\x6c\x61\x6e\x67\x3d\x65\x6e\x67\x6c\x69\x73\x68\x26\x61\x6d\x70\
+\x3b\x66\x6f\x72\x6d\x61\x74\x3d\x6a\x73\x6f\x6e\x22\x2f\x3e\x0a\
+\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x73\
+\x3a\x2f\x2f\x77\x77\x77\x2e\x73\x74\x61\x72\x74\x70\x61\x67\x65\
+\x2e\x63\x6f\x6d\x2f\x67\x72\x61\x70\x68\x69\x63\x73\x2f\x66\x61\
+\x76\x69\x63\x6f\x6e\x2f\x73\x70\x2d\x66\x61\x76\x69\x63\x6f\x6e\
+\x2d\x31\x36\x78\x31\x36\x2e\x70\x6e\x67\x3c\x2f\x49\x6d\x61\x67\
+\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\
+\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\
 \x00\x00\x01\x9b\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -128,66 +80,7 @@
 \x69\x63\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\
 \x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\
 \x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\
-\x00\x00\x01\xc9\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
-\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
-\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\
-\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
-\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
-\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
-\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x4c\x69\x6e\x75\x78\x2d\
-\x4d\x61\x67\x61\x7a\x69\x6e\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\
-\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\
-\x74\x69\x6f\x6e\x3e\x53\x75\x63\x68\x65\x20\x61\x75\x66\x20\x77\
-\x77\x77\x2e\x6c\x69\x6e\x75\x78\x2d\x6d\x61\x67\x61\x7a\x69\x6e\
-\x2e\x64\x65\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\
-\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\
-\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\
-\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\
-\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x6c\x69\
-\x6e\x75\x78\x2d\x6d\x61\x67\x61\x7a\x69\x6e\x2e\x64\x65\x2f\x63\
-\x6f\x6e\x74\x65\x6e\x74\x2f\x73\x65\x61\x72\x63\x68\x3f\x53\x65\
-\x61\x72\x63\x68\x54\x65\x78\x74\x3d\x7b\x73\x65\x61\x72\x63\x68\
-\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\
-\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\
-\x6c\x69\x6e\x75\x78\x2d\x6d\x61\x67\x61\x7a\x69\x6e\x2e\x64\x65\
-\x2f\x65\x78\x74\x65\x6e\x73\x69\x6f\x6e\x2f\x6c\x6e\x6d\x2f\x64\
-\x65\x73\x69\x67\x6e\x2f\x6c\x69\x6e\x75\x78\x5f\x6d\x61\x67\x61\
-\x7a\x69\x6e\x2f\x69\x6d\x61\x67\x65\x73\x2f\x66\x61\x76\x69\x63\
-\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\
-\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\
-\x69\x70\x74\x69\x6f\x6e\x3e\x0a\
-\x00\x00\x01\x95\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
-\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
-\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\
-\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
-\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
-\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
-\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x41\x6d\x61\x7a\x6f\x6e\
-\x2e\x63\x6f\x6d\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\
-\x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\
-\x6e\x3e\x41\x6d\x61\x7a\x6f\x6e\x2e\x63\x6f\x6d\x20\x53\x65\x61\
-\x72\x63\x68\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\
-\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\
-\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\
-\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\
-\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x61\x6d\
-\x61\x7a\x6f\x6e\x2e\x63\x6f\x6d\x2f\x65\x78\x65\x63\x2f\x6f\x62\
-\x69\x64\x6f\x73\x2f\x65\x78\x74\x65\x72\x6e\x61\x6c\x2d\x73\x65\
-\x61\x72\x63\x68\x2f\x3f\x66\x69\x65\x6c\x64\x2d\x6b\x65\x79\x77\
-\x6f\x72\x64\x73\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\
-\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\
-\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x61\x6d\x61\x7a\
-\x6f\x6e\x2e\x63\x6f\x6d\x2f\x66\x61\x76\x69\x63\x6f\x6e\x2e\x69\
-\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\
-\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\
-\x6f\x6e\x3e\x0a\
-\x00\x00\x02\x7a\
+\x00\x00\x02\x64\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
@@ -196,40 +89,39 @@
 \x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
 \x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
 \x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
-\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x4c\x45\x4f\x20\x44\x65\
-\x75\x2d\x45\x6e\x67\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\
-\x3e\x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\
-\x6f\x6e\x3e\x44\x65\x75\x74\x73\x63\x68\x2d\x45\x6e\x67\x6c\x69\
-\x73\x63\x68\x20\x57\xc3\xb6\x72\x74\x65\x72\x62\x75\x63\x68\x20\
-\x76\x6f\x6e\x20\x4c\x45\x4f\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\
-\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\
+\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x47\x6f\x6f\x67\x6c\x65\
+\x20\x28\x49\x27\x6d\x20\x46\x65\x65\x6c\x69\x6e\x67\x20\x4c\x75\
+\x63\x6b\x79\x29\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\
+\x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\
+\x6e\x3e\x47\x6f\x6f\x67\x6c\x65\x20\x57\x65\x62\x20\x53\x65\x61\
+\x72\x63\x68\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\
+\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\
+\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\
+\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\
+\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6f\
+\x6f\x67\x6c\x65\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x3f\
+\x62\x74\x6e\x49\x3d\x26\x61\x6d\x70\x3b\x68\x6c\x3d\x7b\x6c\x61\
+\x6e\x67\x75\x61\x67\x65\x7d\x26\x61\x6d\x70\x3b\x6c\x72\x3d\x6c\
+\x61\x6e\x67\x5f\x7b\x6c\x61\x6e\x67\x75\x61\x67\x65\x7d\x26\x61\
+\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\
+\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\
 \x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\
-\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\
-\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x64\x69\
-\x63\x74\x2e\x6c\x65\x6f\x2e\x6f\x72\x67\x2f\x65\x6e\x64\x65\x3f\
-\x6c\x61\x6e\x67\x3d\x64\x65\x26\x61\x6d\x70\x3b\x73\x65\x61\x72\
-\x63\x68\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\
-\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\
-\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\
-\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x78\x2d\x73\x75\
-\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\x6a\x73\x6f\x6e\x22\x20\
-\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\
-\x2f\x64\x69\x63\x74\x2e\x6c\x65\x6f\x2e\x6f\x72\x67\x2f\x64\x69\
-\x63\x74\x51\x75\x65\x72\x79\x2f\x6d\x2d\x71\x75\x65\x72\x79\x2f\
-\x63\x6f\x6e\x66\x2f\x65\x6e\x64\x65\x2f\x71\x75\x65\x72\x79\x2e\
-\x63\x6f\x6e\x66\x2f\x73\x74\x72\x6c\x69\x73\x74\x2e\x6a\x73\x6f\
-\x6e\x3f\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\
-\x7d\x26\x61\x6d\x70\x3b\x73\x6f\x72\x74\x3d\x50\x4c\x61\x26\x61\
-\x6d\x70\x3b\x73\x68\x6f\x72\x74\x51\x75\x65\x72\x79\x26\x61\x6d\
-\x70\x3b\x6e\x6f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x26\
-\x61\x6d\x70\x3b\x6e\x6f\x51\x75\x65\x72\x79\x55\x52\x4c\x73\x22\
-\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\
-\x74\x70\x3a\x2f\x2f\x64\x69\x63\x74\x2e\x6c\x65\x6f\x2e\x6f\x72\
-\x67\x2f\x69\x6d\x67\x2f\x66\x61\x76\x69\x63\x6f\x6e\x73\x2f\x65\
-\x6e\x64\x65\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\
-\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\
-\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\
-\x00\x00\x01\x85\
+\x3d\x22\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x78\x2d\
+\x73\x75\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\x6a\x73\x6f\x6e\
+\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\
+\x3a\x2f\x2f\x73\x75\x67\x67\x65\x73\x74\x71\x75\x65\x72\x69\x65\
+\x73\x2e\x67\x6f\x6f\x67\x6c\x65\x2e\x63\x6f\x6d\x2f\x63\x6f\x6d\
+\x70\x6c\x65\x74\x65\x2f\x73\x65\x61\x72\x63\x68\x3f\x6f\x75\x74\
+\x70\x75\x74\x3d\x66\x69\x72\x65\x66\x6f\x78\x26\x61\x6d\x70\x3b\
+\x68\x6c\x3d\x7b\x6c\x61\x6e\x67\x75\x61\x67\x65\x7d\x26\x61\x6d\
+\x70\x3b\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\
+\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6f\x6f\x67\x6c\
+\x65\x2e\x63\x6f\x6d\x2f\x66\x61\x76\x69\x63\x6f\x6e\x2e\x69\x63\
+\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\
+\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\
+\x6e\x3e\x0a\
+\x00\x00\x01\x6f\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
@@ -238,60 +130,22 @@
 \x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
 \x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
 \x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
-\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x59\x6f\x75\x54\x75\x62\
-\x65\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\
-\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x59\
-\x6f\x75\x54\x75\x62\x65\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\
-\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\
-\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\
-\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\
-\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\
-\x2e\x79\x6f\x75\x74\x75\x62\x65\x2e\x63\x6f\x6d\x2f\x72\x65\x73\
-\x75\x6c\x74\x73\x3f\x73\x65\x61\x72\x63\x68\x5f\x71\x75\x65\x72\
-\x79\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x26\
-\x61\x6d\x70\x3b\x73\x65\x61\x72\x63\x68\x3d\x53\x65\x61\x72\x63\
-\x68\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x79\x6f\x75\x74\x75\
-\x62\x65\x2e\x63\x6f\x6d\x2f\x66\x61\x76\x69\x63\x6f\x6e\x2e\x69\
-\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\
-\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\
-\x6f\x6e\x3e\x0a\
-\x00\x00\x02\x1e\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
-\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
-\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\
-\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
-\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
-\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
-\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x44\x65\x2d\x45\x6e\x20\
-\x42\x65\x6f\x6c\x69\x6e\x67\x75\x73\x3c\x2f\x53\x68\x6f\x72\x74\
-\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\
-\x69\x70\x74\x69\x6f\x6e\x3e\x42\x65\x6f\x6c\x69\x6e\x67\x75\x73\
-\x3a\x20\x47\x65\x72\x6d\x61\x6e\x2d\x45\x6e\x67\x6c\x69\x73\x68\
-\x20\x44\x69\x63\x74\x69\x6f\x6e\x61\x72\x79\x3c\x2f\x44\x65\x73\
-\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\
-\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\
-\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\
-\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\
-\x2f\x2f\x64\x69\x63\x74\x2e\x74\x75\x2d\x63\x68\x65\x6d\x6e\x69\
-\x74\x7a\x2e\x64\x65\x2f\x3f\x71\x75\x65\x72\x79\x3d\x7b\x73\x65\
-\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\
-\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\
-\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x61\x70\x70\x6c\x69\x63\
-\x61\x74\x69\x6f\x6e\x2f\x78\x2d\x73\x75\x67\x67\x65\x73\x74\x69\
-\x6f\x6e\x73\x2b\x6a\x73\x6f\x6e\x22\x20\x74\x65\x6d\x70\x6c\x61\
-\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x64\x69\x63\x74\x2e\
-\x74\x75\x2d\x63\x68\x65\x6d\x6e\x69\x74\x7a\x2e\x64\x65\x2f\x73\
-\x75\x67\x67\x2e\x70\x68\x70\x3f\x6a\x73\x6f\x6e\x3d\x31\x26\x61\
-\x6d\x70\x3b\x73\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\
-\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\
-\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x64\x69\x63\x74\x2e\x74\x75\x2d\
-\x63\x68\x65\x6d\x6e\x69\x74\x7a\x2e\x64\x65\x2f\x70\x69\x63\x73\
-\x2f\x62\x65\x6f\x2d\x64\x65\x2e\x70\x6e\x67\x3c\x2f\x49\x6d\x61\
-\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\
-\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\
+\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x52\x65\x64\x64\x69\x74\
+\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\
+\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x52\x65\
+\x64\x64\x69\x74\x20\x53\x69\x74\x65\x20\x53\x65\x61\x72\x63\x68\
+\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\
+\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\
+\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\
+\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x72\x65\x64\x64\x69\
+\x74\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x3f\x71\x3d\x7b\
+\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\
+\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x72\x65\x64\x64\x69\x74\x2e\x63\x6f\x6d\
+\x2f\x66\x61\x76\x69\x63\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\
+\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
+\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\
 \x00\x00\x06\xfe\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -406,7 +260,87 @@
 \x55\x35\x45\x72\x6b\x4a\x67\x67\x67\x3d\x3d\x3c\x2f\x49\x6d\x61\
 \x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\
 \x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\
-\x00\x00\x02\x64\
+\x00\x00\x01\x95\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
+\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
+\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\
+\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
+\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
+\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
+\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x41\x6d\x61\x7a\x6f\x6e\
+\x2e\x63\x6f\x6d\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\
+\x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\
+\x6e\x3e\x41\x6d\x61\x7a\x6f\x6e\x2e\x63\x6f\x6d\x20\x53\x65\x61\
+\x72\x63\x68\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\
+\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\
+\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\
+\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\
+\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x61\x6d\
+\x61\x7a\x6f\x6e\x2e\x63\x6f\x6d\x2f\x65\x78\x65\x63\x2f\x6f\x62\
+\x69\x64\x6f\x73\x2f\x65\x78\x74\x65\x72\x6e\x61\x6c\x2d\x73\x65\
+\x61\x72\x63\x68\x2f\x3f\x66\x69\x65\x6c\x64\x2d\x6b\x65\x79\x77\
+\x6f\x72\x64\x73\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\
+\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\
+\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x61\x6d\x61\x7a\
+\x6f\x6e\x2e\x63\x6f\x6d\x2f\x66\x61\x76\x69\x63\x6f\x6e\x2e\x69\
+\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\
+\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\
+\x6f\x6e\x3e\x0a\
+\x00\x00\x01\x74\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
+\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
+\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\
+\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
+\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
+\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
+\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x50\x79\x50\x49\x3c\x2f\
+\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\
+\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x53\x65\x61\x72\
+\x63\x68\x20\x50\x79\x50\x49\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\
+\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\
+\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\
+\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\
+\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x73\x3a\x2f\x2f\x70\
+\x79\x70\x69\x2e\x6f\x72\x67\x2f\x73\x65\x61\x72\x63\x68\x2f\x3f\
+\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\
+\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\
+\x74\x70\x73\x3a\x2f\x2f\x70\x79\x70\x69\x2e\x6f\x72\x67\x2f\x73\
+\x74\x61\x74\x69\x63\x2f\x69\x6d\x61\x67\x65\x73\x2f\x66\x61\x76\
+\x69\x63\x6f\x6e\x2e\x36\x61\x37\x36\x32\x37\x35\x64\x2e\x69\x63\
+\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\
+\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\
+\x6e\x3e\x0a\
+\x00\x00\x01\x7e\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
+\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
+\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\
+\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
+\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
+\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
+\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x46\x61\x63\x65\x62\x6f\
+\x6f\x6b\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\
+\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\
+\x53\x65\x61\x72\x63\x68\x20\x46\x61\x63\x65\x62\x6f\x6f\x6b\x3c\
+\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\
+\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\
+\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\
+\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\
+\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x66\x61\x63\x65\x62\x6f\
+\x6f\x6b\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x2f\x3f\x73\
+\x72\x63\x3d\x6f\x73\x26\x61\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\
+\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\
+\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\
+\x77\x77\x2e\x66\x61\x63\x65\x62\x6f\x6f\x6b\x2e\x63\x6f\x6d\x2f\
+\x66\x61\x76\x69\x63\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\
+\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\
+\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\
+\x00\x00\x02\x46\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
@@ -416,38 +350,36 @@
 \x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
 \x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
 \x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x47\x6f\x6f\x67\x6c\x65\
-\x20\x28\x49\x27\x6d\x20\x46\x65\x65\x6c\x69\x6e\x67\x20\x4c\x75\
-\x63\x6b\x79\x29\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\
-\x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\
-\x6e\x3e\x47\x6f\x6f\x67\x6c\x65\x20\x57\x65\x62\x20\x53\x65\x61\
-\x72\x63\x68\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\
-\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\
-\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\
-\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\
-\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6f\
-\x6f\x67\x6c\x65\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x3f\
-\x62\x74\x6e\x49\x3d\x26\x61\x6d\x70\x3b\x68\x6c\x3d\x7b\x6c\x61\
-\x6e\x67\x75\x61\x67\x65\x7d\x26\x61\x6d\x70\x3b\x6c\x72\x3d\x6c\
-\x61\x6e\x67\x5f\x7b\x6c\x61\x6e\x67\x75\x61\x67\x65\x7d\x26\x61\
-\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\
-\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\
-\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\
-\x3d\x22\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x78\x2d\
-\x73\x75\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\x6a\x73\x6f\x6e\
-\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\
-\x3a\x2f\x2f\x73\x75\x67\x67\x65\x73\x74\x71\x75\x65\x72\x69\x65\
-\x73\x2e\x67\x6f\x6f\x67\x6c\x65\x2e\x63\x6f\x6d\x2f\x63\x6f\x6d\
-\x70\x6c\x65\x74\x65\x2f\x73\x65\x61\x72\x63\x68\x3f\x6f\x75\x74\
-\x70\x75\x74\x3d\x66\x69\x72\x65\x66\x6f\x78\x26\x61\x6d\x70\x3b\
-\x68\x6c\x3d\x7b\x6c\x61\x6e\x67\x75\x61\x67\x65\x7d\x26\x61\x6d\
-\x70\x3b\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\
-\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6f\x6f\x67\x6c\
-\x65\x2e\x63\x6f\x6d\x2f\x66\x61\x76\x69\x63\x6f\x6e\x2e\x69\x63\
-\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\
-\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\
-\x6e\x3e\x0a\
-\x00\x00\x02\x46\
+\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\
+\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x47\x6f\
+\x6f\x67\x6c\x65\x20\x57\x65\x62\x20\x53\x65\x61\x72\x63\x68\x3c\
+\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\
+\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\
+\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\
+\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\
+\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6f\x6f\x67\x6c\x65\
+\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x3f\x68\x6c\x3d\x7b\
+\x6c\x61\x6e\x67\x75\x61\x67\x65\x7d\x26\x61\x6d\x70\x3b\x6c\x72\
+\x3d\x6c\x61\x6e\x67\x5f\x7b\x6c\x61\x6e\x67\x75\x61\x67\x65\x7d\
+\x26\x61\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\
+\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\
+\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\
+\x70\x65\x3d\x22\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\
+\x78\x2d\x73\x75\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\x6a\x73\
+\x6f\x6e\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\
+\x74\x70\x3a\x2f\x2f\x73\x75\x67\x67\x65\x73\x74\x71\x75\x65\x72\
+\x69\x65\x73\x2e\x67\x6f\x6f\x67\x6c\x65\x2e\x63\x6f\x6d\x2f\x63\
+\x6f\x6d\x70\x6c\x65\x74\x65\x2f\x73\x65\x61\x72\x63\x68\x3f\x6f\
+\x75\x74\x70\x75\x74\x3d\x66\x69\x72\x65\x66\x6f\x78\x26\x61\x6d\
+\x70\x3b\x68\x6c\x3d\x7b\x6c\x61\x6e\x67\x75\x61\x67\x65\x7d\x26\
+\x61\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\
+\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\
+\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x67\x6f\x6f\
+\x67\x6c\x65\x2e\x63\x6f\x6d\x2f\x66\x61\x76\x69\x63\x6f\x6e\x2e\
+\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\
+\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\
+\x69\x6f\x6e\x3e\x0a\
+\x00\x00\x01\x79\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
 \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
@@ -456,36 +388,23 @@
 \x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
 \x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
 \x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
-\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x57\x69\x6b\x69\x61\x20\
-\x28\x65\x6e\x29\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\
-\x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\
-\x6e\x3e\x57\x69\x6b\x69\x61\x20\x28\x65\x6e\x29\x3c\x2f\x44\x65\
-\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\
-\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\
-\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\
-\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\
-\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x69\x6b\x69\x61\x2e\x63\x6f\x6d\
-\x2f\x69\x6e\x64\x65\x78\x2e\x70\x68\x70\x3f\x74\x69\x74\x6c\x65\
-\x3d\x53\x70\x65\x63\x69\x61\x6c\x3a\x53\x65\x61\x72\x63\x68\x26\
-\x61\x6d\x70\x3b\x73\x65\x61\x72\x63\x68\x3d\x7b\x73\x65\x61\x72\
-\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\
-\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\
-\x22\x20\x74\x79\x70\x65\x3d\x22\x61\x70\x70\x6c\x69\x63\x61\x74\
-\x69\x6f\x6e\x2f\x78\x2d\x73\x75\x67\x67\x65\x73\x74\x69\x6f\x6e\
-\x73\x2b\x6a\x73\x6f\x6e\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\
-\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x69\x6b\
-\x69\x61\x2e\x63\x6f\x6d\x2f\x61\x70\x69\x2e\x70\x68\x70\x3f\x61\
-\x63\x74\x69\x6f\x6e\x3d\x6f\x70\x65\x6e\x73\x65\x61\x72\x63\x68\
-\x26\x61\x6d\x70\x3b\x73\x65\x61\x72\x63\x68\x3d\x7b\x73\x65\x61\
-\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x26\x61\x6d\x70\x3b\x6e\x61\
-\x6d\x65\x73\x70\x61\x63\x65\x3d\x31\x22\x2f\x3e\x0a\x20\x20\x20\
-\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x69\
-\x6d\x61\x67\x65\x73\x2e\x77\x69\x6b\x69\x61\x2e\x63\x6f\x6d\x2f\
-\x77\x69\x6b\x69\x61\x67\x6c\x6f\x62\x61\x6c\x2f\x69\x6d\x61\x67\
-\x65\x73\x2f\x36\x2f\x36\x34\x2f\x46\x61\x76\x69\x63\x6f\x6e\x2e\
-\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\
-\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\
-\x69\x6f\x6e\x3e\x0a\
+\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x42\x69\x6e\x67\x3c\x2f\
+\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\
+\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x42\x69\x6e\x67\
+\x20\x57\x65\x62\x20\x53\x65\x61\x72\x63\x68\x3c\x2f\x44\x65\x73\
+\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\
+\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\
+\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\
+\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x77\x77\x77\x2e\x62\x69\x6e\x67\x2e\x63\x6f\x6d\x2f\x73\
+\x65\x61\x72\x63\x68\x3f\x63\x63\x3d\x7b\x6c\x61\x6e\x67\x75\x61\
+\x67\x65\x7d\x26\x61\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\x72\x63\
+\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\
+\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\
+\x2e\x62\x69\x6e\x67\x2e\x63\x6f\x6d\x2f\x73\x2f\x77\x6c\x66\x6c\
+\x61\x67\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\
+\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\
+\x69\x70\x74\x69\x6f\x6e\x3e\x0a\
 \x00\x00\x02\x5b\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -526,94 +445,6 @@
 \x69\x63\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\
 \x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\
 \x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\
-\x00\x00\x01\x6f\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
-\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
-\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\
-\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
-\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
-\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
-\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x52\x65\x64\x64\x69\x74\
-\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\
-\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x52\x65\
-\x64\x64\x69\x74\x20\x53\x69\x74\x65\x20\x53\x65\x61\x72\x63\x68\
-\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\
-\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\
-\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\
-\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\
-\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x72\x65\x64\x64\x69\
-\x74\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x3f\x71\x3d\x7b\
-\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\
-\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\
-\x2f\x2f\x77\x77\x77\x2e\x72\x65\x64\x64\x69\x74\x2e\x63\x6f\x6d\
-\x2f\x66\x61\x76\x69\x63\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\
-\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
-\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\
-\x00\x00\x02\x27\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
-\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
-\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\
-\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
-\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
-\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
-\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x59\x61\x68\x6f\x6f\x21\
-\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\
-\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x59\x61\
-\x68\x6f\x6f\x20\x57\x65\x62\x20\x53\x65\x61\x72\x63\x68\x3c\x2f\
-\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\
-\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\
-\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\
-\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\
-\x74\x70\x3a\x2f\x2f\x73\x65\x61\x72\x63\x68\x2e\x79\x61\x68\x6f\
-\x6f\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x3f\x65\x69\x3d\
-\x75\x74\x66\x2d\x38\x26\x61\x6d\x70\x3b\x66\x72\x3d\x73\x66\x70\
-\x26\x61\x6d\x70\x3b\x69\x73\x63\x71\x72\x79\x3d\x26\x61\x6d\x70\
-\x3b\x70\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\
-\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\
-\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\
-\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x78\x2d\x73\x75\
-\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\x6a\x73\x6f\x6e\x22\x20\
-\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\
-\x2f\x66\x66\x2e\x73\x65\x61\x72\x63\x68\x2e\x79\x61\x68\x6f\x6f\
-\x2e\x63\x6f\x6d\x2f\x67\x6f\x73\x73\x69\x70\x3f\x6f\x75\x74\x70\
-\x75\x74\x3d\x66\x78\x6a\x73\x6f\x6e\x26\x61\x6d\x70\x3b\x63\x6f\
-\x6d\x6d\x61\x6e\x64\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\
-\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\
-\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x6d\x2e\x77\x77\x77\x2e\x79\
-\x61\x68\x6f\x6f\x2e\x63\x6f\x6d\x2f\x66\x61\x76\x69\x63\x6f\x6e\
-\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\
-\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\
-\x74\x69\x6f\x6e\x3e\x0a\
-\x00\x00\x01\x7e\
-\x3c\
-\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
-\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
-\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
-\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\
-\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
-\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
-\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
-\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x46\x61\x63\x65\x62\x6f\
-\x6f\x6b\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\
-\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\
-\x53\x65\x61\x72\x63\x68\x20\x46\x61\x63\x65\x62\x6f\x6f\x6b\x3c\
-\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\
-\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\
-\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\
-\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\
-\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x66\x61\x63\x65\x62\x6f\
-\x6f\x6b\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x2f\x3f\x73\
-\x72\x63\x3d\x6f\x73\x26\x61\x6d\x70\x3b\x71\x3d\x7b\x73\x65\x61\
-\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\
-\x20\x3c\x49\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\
-\x77\x77\x2e\x66\x61\x63\x65\x62\x6f\x6f\x6b\x2e\x63\x6f\x6d\x2f\
-\x66\x61\x76\x69\x63\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\
-\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\
-\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\
 \x00\x00\x02\x54\
 \x3c\
 \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
@@ -654,37 +485,717 @@
 \x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\
 \x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\
 \x6e\x3e\x0a\
+\x00\x00\x02\x27\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
+\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
+\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\
+\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
+\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
+\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
+\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x59\x61\x68\x6f\x6f\x21\
+\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\
+\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x59\x61\
+\x68\x6f\x6f\x20\x57\x65\x62\x20\x53\x65\x61\x72\x63\x68\x3c\x2f\
+\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\
+\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\
+\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\
+\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\
+\x74\x70\x3a\x2f\x2f\x73\x65\x61\x72\x63\x68\x2e\x79\x61\x68\x6f\
+\x6f\x2e\x63\x6f\x6d\x2f\x73\x65\x61\x72\x63\x68\x3f\x65\x69\x3d\
+\x75\x74\x66\x2d\x38\x26\x61\x6d\x70\x3b\x66\x72\x3d\x73\x66\x70\
+\x26\x61\x6d\x70\x3b\x69\x73\x63\x71\x72\x79\x3d\x26\x61\x6d\x70\
+\x3b\x70\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\
+\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\
+\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\
+\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x2f\x78\x2d\x73\x75\
+\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\x6a\x73\x6f\x6e\x22\x20\
+\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\
+\x2f\x66\x66\x2e\x73\x65\x61\x72\x63\x68\x2e\x79\x61\x68\x6f\x6f\
+\x2e\x63\x6f\x6d\x2f\x67\x6f\x73\x73\x69\x70\x3f\x6f\x75\x74\x70\
+\x75\x74\x3d\x66\x78\x6a\x73\x6f\x6e\x26\x61\x6d\x70\x3b\x63\x6f\
+\x6d\x6d\x61\x6e\x64\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\
+\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\
+\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x6d\x2e\x77\x77\x77\x2e\x79\
+\x61\x68\x6f\x6f\x2e\x63\x6f\x6d\x2f\x66\x61\x76\x69\x63\x6f\x6e\
+\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\
+\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\
+\x74\x69\x6f\x6e\x3e\x0a\
+\x00\x00\x01\xc9\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
+\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
+\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\
+\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
+\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
+\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
+\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x4c\x69\x6e\x75\x78\x2d\
+\x4d\x61\x67\x61\x7a\x69\x6e\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\
+\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\
+\x74\x69\x6f\x6e\x3e\x53\x75\x63\x68\x65\x20\x61\x75\x66\x20\x77\
+\x77\x77\x2e\x6c\x69\x6e\x75\x78\x2d\x6d\x61\x67\x61\x7a\x69\x6e\
+\x2e\x64\x65\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\
+\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\
+\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x74\x65\
+\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\
+\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x6c\x69\
+\x6e\x75\x78\x2d\x6d\x61\x67\x61\x7a\x69\x6e\x2e\x64\x65\x2f\x63\
+\x6f\x6e\x74\x65\x6e\x74\x2f\x73\x65\x61\x72\x63\x68\x3f\x53\x65\
+\x61\x72\x63\x68\x54\x65\x78\x74\x3d\x7b\x73\x65\x61\x72\x63\x68\
+\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\
+\x6d\x61\x67\x65\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\
+\x6c\x69\x6e\x75\x78\x2d\x6d\x61\x67\x61\x7a\x69\x6e\x2e\x64\x65\
+\x2f\x65\x78\x74\x65\x6e\x73\x69\x6f\x6e\x2f\x6c\x6e\x6d\x2f\x64\
+\x65\x73\x69\x67\x6e\x2f\x6c\x69\x6e\x75\x78\x5f\x6d\x61\x67\x61\
+\x7a\x69\x6e\x2f\x69\x6d\x61\x67\x65\x73\x2f\x66\x61\x76\x69\x63\
+\x6f\x6e\x2e\x69\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\
+\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\
+\x69\x70\x74\x69\x6f\x6e\x3e\x0a\
+\x00\x00\x01\x85\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
+\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
+\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\
+\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
+\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
+\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
+\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x59\x6f\x75\x54\x75\x62\
+\x65\x3c\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\
+\x20\x20\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x59\
+\x6f\x75\x54\x75\x62\x65\x3c\x2f\x44\x65\x73\x63\x72\x69\x70\x74\
+\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\
+\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\x70\x65\x3d\
+\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\x65\x6d\x70\
+\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\
+\x2e\x79\x6f\x75\x74\x75\x62\x65\x2e\x63\x6f\x6d\x2f\x72\x65\x73\
+\x75\x6c\x74\x73\x3f\x73\x65\x61\x72\x63\x68\x5f\x71\x75\x65\x72\
+\x79\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x26\
+\x61\x6d\x70\x3b\x73\x65\x61\x72\x63\x68\x3d\x53\x65\x61\x72\x63\
+\x68\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\x3e\
+\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x79\x6f\x75\x74\x75\
+\x62\x65\x2e\x63\x6f\x6d\x2f\x66\x61\x76\x69\x63\x6f\x6e\x2e\x69\
+\x63\x6f\x3c\x2f\x49\x6d\x61\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\
+\x6e\x53\x65\x61\x72\x63\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\
+\x6f\x6e\x3e\x0a\
+\x00\x00\x02\x1e\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
+\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
+\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\
+\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
+\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
+\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
+\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x44\x65\x2d\x45\x6e\x20\
+\x42\x65\x6f\x6c\x69\x6e\x67\x75\x73\x3c\x2f\x53\x68\x6f\x72\x74\
+\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\x3c\x44\x65\x73\x63\x72\
+\x69\x70\x74\x69\x6f\x6e\x3e\x42\x65\x6f\x6c\x69\x6e\x67\x75\x73\
+\x3a\x20\x47\x65\x72\x6d\x61\x6e\x2d\x45\x6e\x67\x6c\x69\x73\x68\
+\x20\x44\x69\x63\x74\x69\x6f\x6e\x61\x72\x79\x3c\x2f\x44\x65\x73\
+\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\
+\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\
+\x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\
+\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\
+\x2f\x2f\x64\x69\x63\x74\x2e\x74\x75\x2d\x63\x68\x65\x6d\x6e\x69\
+\x74\x7a\x2e\x64\x65\x2f\x3f\x71\x75\x65\x72\x79\x3d\x7b\x73\x65\
+\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x22\x2f\x3e\x0a\x20\x20\
+\x20\x20\x3c\x55\x72\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\
+\x65\x74\x22\x20\x74\x79\x70\x65\x3d\x22\x61\x70\x70\x6c\x69\x63\
+\x61\x74\x69\x6f\x6e\x2f\x78\x2d\x73\x75\x67\x67\x65\x73\x74\x69\
+\x6f\x6e\x73\x2b\x6a\x73\x6f\x6e\x22\x20\x74\x65\x6d\x70\x6c\x61\
+\x74\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x64\x69\x63\x74\x2e\
+\x74\x75\x2d\x63\x68\x65\x6d\x6e\x69\x74\x7a\x2e\x64\x65\x2f\x73\
+\x75\x67\x67\x2e\x70\x68\x70\x3f\x6a\x73\x6f\x6e\x3d\x31\x26\x61\
+\x6d\x70\x3b\x73\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\
+\x73\x7d\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x49\x6d\x61\x67\x65\
+\x3e\x68\x74\x74\x70\x3a\x2f\x2f\x64\x69\x63\x74\x2e\x74\x75\x2d\
+\x63\x68\x65\x6d\x6e\x69\x74\x7a\x2e\x64\x65\x2f\x70\x69\x63\x73\
+\x2f\x62\x65\x6f\x2d\x64\x65\x2e\x70\x6e\x67\x3c\x2f\x49\x6d\x61\
+\x67\x65\x3e\x0a\x3c\x2f\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\x68\
+\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x0a\
+\x00\x00\x1b\x4f\
+\x3c\
+\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\
+\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\
+\x2d\x38\x22\x3f\x3e\x0a\x3c\x4f\x70\x65\x6e\x53\x65\x61\x72\x63\
+\x68\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x20\x78\x6d\x6c\
+\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x61\x39\x2e\x63\x6f\
+\x6d\x2f\x2d\x2f\x73\x70\x65\x63\x2f\x6f\x70\x65\x6e\x73\x65\x61\
+\x72\x63\x68\x2f\x31\x2e\x31\x2f\x22\x3e\x0a\x20\x20\x20\x20\x3c\
+\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x51\x77\x61\x6e\x74\x3c\
+\x2f\x53\x68\x6f\x72\x74\x4e\x61\x6d\x65\x3e\x0a\x20\x20\x20\x20\
+\x3c\x44\x65\x73\x63\x72\x69\x70\x74\x69\x6f\x6e\x3e\x51\x77\x61\
+\x6e\x74\x20\x69\x73\x20\x61\x20\x73\x65\x61\x72\x63\x68\x20\x65\
+\x6e\x67\x69\x6e\x65\x20\x74\x68\x61\x74\x20\x72\x65\x73\x70\x65\
+\x63\x74\x73\x20\x79\x6f\x75\x72\x20\x70\x72\x69\x76\x61\x63\x79\
+\x20\x61\x6e\x64\x20\x65\x61\x73\x65\x73\x20\x64\x69\x73\x63\x6f\
+\x76\x65\x72\x69\x6e\x67\x20\x61\x6e\x64\x20\x73\x68\x61\x72\x69\
+\x6e\x67\x20\x76\x69\x61\x20\x61\x20\x73\x6f\x63\x69\x61\x6c\x20\
+\x61\x70\x70\x72\x6f\x61\x63\x68\x2e\x3c\x2f\x44\x65\x73\x63\x72\
+\x69\x70\x74\x69\x6f\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\x6c\
+\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\x79\
+\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x68\x74\x6d\x6c\x22\x20\x74\
+\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\x74\x74\x70\x73\x3a\x2f\
+\x2f\x77\x77\x77\x2e\x71\x77\x61\x6e\x74\x2e\x63\x6f\x6d\x2f\x3f\
+\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\x7d\x26\
+\x61\x6d\x70\x3b\x63\x6c\x69\x65\x6e\x74\x3d\x6f\x70\x65\x6e\x73\
+\x65\x61\x72\x63\x68\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\x55\x72\
+\x6c\x20\x6d\x65\x74\x68\x6f\x64\x3d\x22\x67\x65\x74\x22\x20\x74\
+\x79\x70\x65\x3d\x22\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\
+\x2f\x78\x2d\x73\x75\x67\x67\x65\x73\x74\x69\x6f\x6e\x73\x2b\x6a\
+\x73\x6f\x6e\x22\x20\x74\x65\x6d\x70\x6c\x61\x74\x65\x3d\x22\x68\
+\x74\x74\x70\x73\x3a\x2f\x2f\x61\x70\x69\x2e\x71\x77\x61\x6e\x74\
+\x2e\x63\x6f\x6d\x2f\x61\x70\x69\x2f\x73\x75\x67\x67\x65\x73\x74\
+\x2f\x3f\x71\x3d\x7b\x73\x65\x61\x72\x63\x68\x54\x65\x72\x6d\x73\
+\x7d\x26\x61\x6d\x70\x3b\x63\x6c\x69\x65\x6e\x74\x3d\x6f\x70\x65\
+\x6e\x73\x65\x61\x72\x63\x68\x22\x2f\x3e\x0a\x20\x20\x20\x20\x3c\
+\x49\x6d\x61\x67\x65\x3e\x64\x61\x74\x61\x3a\x69\x6d\x61\x67\x65\
+\x2f\x70\x6e\x67\x3b\x62\x61\x73\x65\x36\x34\x2c\x69\x56\x42\x4f\
+\x52\x77\x30\x4b\x47\x67\x6f\x41\x41\x41\x41\x4e\x53\x55\x68\x45\
+\x55\x67\x41\x41\x41\x47\x41\x41\x41\x41\x42\x67\x43\x41\x49\x41\
+\x41\x41\x42\x74\x2b\x75\x42\x76\x41\x41\x41\x41\x47\x58\x52\x46\
+\x57\x48\x52\x54\x62\x32\x5a\x30\x64\x32\x46\x79\x5a\x51\x42\x42\
+\x5a\x47\x39\x69\x5a\x53\x42\x4a\x62\x57\x46\x6e\x5a\x56\x4a\x6c\
+\x59\x57\x52\x35\x63\x63\x6c\x6c\x50\x41\x41\x41\x45\x6c\x52\x4a\
+\x52\x45\x46\x55\x65\x4e\x72\x63\x6e\x58\x32\x51\x46\x4f\x57\x64\
+\x78\x35\x2f\x6e\x36\x64\x64\x35\x33\x32\x56\x66\x59\x58\x63\x56\
+\x46\x6c\x6c\x63\x59\x45\x47\x52\x5a\x55\x55\x73\x76\x65\x53\x38\
+\x75\x76\x4d\x46\x52\x4b\x2f\x4b\x4f\x30\x33\x51\x57\x48\x66\x6e\
+\x50\x78\x63\x54\x72\x36\x34\x75\x5a\x77\x36\x74\x2b\x38\x4f\x69\
+\x67\x76\x46\x53\x64\x51\x6c\x42\x37\x79\x7a\x72\x4c\x6f\x68\x6c\
+\x47\x61\x39\x45\x55\x53\x39\x4a\x69\x5a\x67\x4b\x4f\x61\x67\x6f\
+\x4a\x43\x6f\x67\x79\x30\x70\x51\x59\x4e\x6c\x6c\x57\x58\x62\x5a\
+\x65\x5a\x39\x2b\x37\x33\x74\x36\x5a\x72\x61\x6e\x70\x2f\x76\x70\
+\x37\x70\x6e\x5a\x42\x57\x5a\x39\x71\x75\x6e\x71\x37\x65\x6d\x5a\
+\x36\x66\x37\x4d\x39\x2f\x66\x39\x2f\x5a\x36\x6e\x58\x34\x43\x4a\
+\x6a\x41\x41\x73\x54\x64\x64\x31\x55\x47\x75\x44\x45\x49\x4b\x36\
+\x61\x62\x55\x64\x69\x50\x4d\x51\x36\x46\x6d\x68\x55\x77\x4d\x61\
+\x61\x4c\x77\x6e\x44\x65\x45\x70\x76\x49\x7a\x77\x48\x47\x62\x4b\
+\x39\x36\x51\x4e\x54\x33\x68\x42\x30\x31\x66\x56\x74\x6d\x2f\x34\
+\x34\x32\x73\x34\x48\x50\x77\x57\x32\x37\x48\x51\x56\x34\x79\x4f\
+\x51\x51\x52\x65\x51\x50\x42\x54\x6a\x41\x4e\x7a\x77\x51\x73\x56\
+\x66\x30\x4d\x34\x4b\x53\x2f\x56\x77\x55\x6f\x4b\x64\x46\x4f\x77\
+\x44\x34\x4a\x51\x68\x54\x74\x63\x4d\x79\x50\x72\x51\x63\x46\x43\
+\x69\x4d\x32\x57\x49\x49\x6b\x62\x49\x4f\x30\x50\x46\x50\x4d\x68\
+\x67\x67\x63\x77\x6f\x4e\x70\x2b\x67\x33\x47\x52\x4b\x2f\x32\x6b\
+\x73\x49\x38\x47\x4e\x39\x4e\x77\x48\x51\x4b\x74\x46\x66\x36\x36\
+\x4d\x7a\x6b\x36\x41\x39\x44\x73\x30\x6a\x48\x58\x49\x2b\x55\x45\
+\x4c\x65\x35\x43\x30\x6a\x34\x41\x55\x6f\x44\x6a\x6a\x59\x6e\x68\
+\x41\x45\x56\x56\x2b\x30\x57\x79\x68\x71\x5a\x6b\x78\x72\x6b\x65\
+\x43\x34\x71\x46\x39\x39\x4c\x77\x5a\x6c\x4e\x54\x48\x69\x78\x71\
+\x50\x6b\x59\x59\x54\x2b\x64\x6d\x69\x34\x36\x35\x6b\x70\x4c\x32\
+\x30\x63\x49\x75\x4a\x42\x38\x43\x2b\x52\x56\x36\x59\x54\x55\x45\
+\x4f\x76\x37\x48\x4d\x49\x42\x68\x49\x52\x63\x41\x4e\x46\x50\x68\
+\x64\x32\x56\x56\x4b\x71\x33\x51\x72\x6e\x73\x43\x51\x67\x79\x38\
+\x41\x35\x4f\x71\x52\x46\x41\x31\x47\x46\x6e\x56\x67\x48\x7a\x51\
+\x79\x49\x65\x59\x39\x44\x61\x6b\x6e\x73\x6a\x6a\x41\x41\x52\x41\
+\x35\x68\x71\x49\x49\x4d\x63\x42\x6d\x6f\x4d\x73\x68\x35\x63\x39\
+\x76\x6a\x45\x68\x4d\x36\x4b\x47\x66\x48\x63\x4d\x59\x2b\x4c\x67\
+\x51\x31\x5a\x4d\x52\x43\x4a\x56\x4d\x36\x6f\x4b\x6b\x4a\x4e\x4f\
+\x79\x63\x7a\x55\x45\x53\x36\x31\x42\x51\x4f\x79\x34\x50\x41\x45\
+\x5a\x48\x6b\x56\x30\x69\x78\x6b\x65\x59\x44\x6e\x46\x45\x46\x57\
+\x6b\x78\x4b\x72\x36\x70\x56\x6d\x53\x52\x35\x39\x67\x77\x45\x62\
+\x72\x55\x48\x6e\x68\x46\x49\x56\x6f\x79\x6f\x41\x32\x65\x68\x59\
+\x2f\x32\x51\x7a\x7a\x7a\x4f\x5a\x48\x51\x34\x63\x6c\x51\x49\x79\
+\x74\x34\x63\x55\x42\x52\x6d\x44\x46\x4b\x4c\x35\x77\x69\x64\x6a\
+\x4e\x42\x68\x51\x56\x62\x38\x35\x41\x6d\x30\x38\x2b\x6a\x74\x73\
+\x35\x4c\x50\x43\x71\x46\x4a\x41\x56\x68\x7a\x57\x5a\x65\x7a\x45\
+\x66\x48\x49\x4c\x6e\x70\x4e\x77\x56\x41\x33\x49\x75\x6b\x61\x6a\
+\x2b\x4a\x7a\x47\x49\x34\x59\x58\x49\x46\x2b\x44\x53\x7a\x4a\x77\
+\x58\x51\x44\x39\x41\x35\x61\x53\x6c\x55\x55\x4e\x6d\x43\x6f\x43\
+\x35\x45\x61\x48\x45\x66\x61\x77\x79\x52\x39\x41\x50\x65\x57\x43\
+\x6f\x32\x70\x41\x47\x52\x6b\x6b\x78\x66\x78\x63\x41\x4b\x4b\x53\
+\x56\x31\x42\x44\x51\x7a\x6a\x49\x52\x78\x6b\x36\x77\x6d\x4a\x31\
+\x77\x57\x71\x6c\x46\x45\x52\x50\x55\x62\x42\x37\x4a\x6f\x7a\x38\
+\x41\x52\x48\x70\x34\x41\x55\x75\x75\x59\x33\x4f\x76\x46\x77\x38\
+\x7a\x6c\x6f\x42\x4b\x52\x70\x49\x53\x67\x61\x52\x68\x47\x68\x4d\
+\x74\x71\x59\x46\x67\x33\x67\x79\x2f\x34\x79\x77\x64\x43\x4f\x4c\
+\x53\x64\x47\x56\x4d\x35\x49\x41\x6b\x77\x48\x2f\x75\x70\x43\x36\
+\x30\x63\x71\x69\x4b\x6b\x59\x2b\x67\x4e\x7a\x6f\x73\x43\x50\x66\
+\x5a\x2b\x47\x65\x6b\x68\x43\x71\x41\x5a\x53\x54\x51\x46\x59\x47\
+\x4b\x63\x46\x41\x49\x36\x68\x41\x67\x38\x58\x4a\x6e\x6d\x35\x6f\
+\x47\x73\x75\x48\x55\x50\x35\x41\x69\x42\x6c\x46\x47\x63\x71\x58\
+\x31\x47\x47\x31\x35\x36\x69\x79\x53\x41\x54\x4d\x72\x55\x7a\x2f\
+\x65\x6d\x61\x4e\x47\x36\x50\x61\x41\x52\x48\x70\x49\x43\x33\x46\
+\x66\x72\x34\x5a\x5a\x51\x65\x70\x56\x6c\x71\x6e\x4b\x77\x4b\x6b\
+\x36\x6b\x44\x41\x67\x53\x50\x41\x74\x41\x42\x79\x4d\x70\x44\x31\
+\x45\x70\x54\x43\x70\x4b\x50\x38\x76\x50\x7a\x62\x4d\x52\x33\x4d\
+\x79\x4d\x74\x6c\x45\x49\x71\x79\x56\x41\x50\x48\x38\x4a\x53\x39\
+\x43\x42\x68\x53\x75\x7a\x43\x64\x6c\x42\x34\x77\x31\x2f\x54\x52\
+\x53\x2b\x39\x69\x76\x31\x34\x44\x49\x31\x64\x41\x72\x6e\x53\x47\
+\x44\x44\x72\x47\x63\x67\x53\x42\x4b\x48\x49\x44\x4a\x49\x6c\x41\
+\x78\x45\x72\x4a\x51\x54\x7a\x48\x6b\x69\x6e\x68\x51\x4e\x4e\x51\
+\x6f\x41\x4d\x54\x64\x41\x30\x75\x48\x7a\x39\x47\x71\x49\x6c\x6e\
+\x6f\x69\x7a\x4e\x49\x44\x69\x71\x4e\x52\x31\x55\x6c\x6b\x2f\x6f\
+\x55\x65\x64\x6d\x4a\x69\x4f\x54\x53\x43\x57\x4d\x79\x49\x42\x63\
+\x66\x65\x65\x7a\x65\x77\x74\x30\x43\x70\x30\x69\x31\x45\x35\x5a\
+\x41\x55\x6c\x5a\x49\x47\x59\x4e\x4c\x6b\x49\x4f\x6d\x77\x75\x30\
+\x45\x62\x46\x44\x51\x58\x59\x36\x5a\x70\x53\x35\x42\x5a\x64\x2f\
+\x45\x55\x53\x68\x44\x2b\x69\x2f\x55\x4f\x6d\x6f\x32\x77\x59\x31\
+\x36\x49\x69\x75\x77\x6e\x65\x2b\x65\x42\x4a\x6c\x42\x69\x31\x39\
+\x4a\x46\x33\x4c\x36\x4c\x49\x4d\x46\x63\x46\x41\x67\x79\x56\x6a\
+\x50\x65\x79\x43\x48\x52\x75\x54\x6e\x70\x2f\x6e\x2f\x79\x7a\x33\
+\x78\x74\x4a\x36\x32\x30\x74\x61\x4f\x46\x78\x62\x6e\x31\x5a\x51\
+\x74\x63\x47\x4c\x52\x39\x74\x61\x62\x34\x78\x78\x5a\x50\x55\x64\
+\x56\x59\x5a\x61\x55\x66\x4d\x61\x65\x71\x58\x5a\x30\x62\x66\x32\
+\x2b\x49\x6d\x39\x66\x37\x6f\x53\x68\x7a\x62\x6f\x6e\x4e\x6c\x4b\
+\x6a\x2b\x2b\x32\x46\x62\x53\x5a\x55\x31\x43\x78\x45\x58\x48\x48\
+\x41\x53\x77\x34\x53\x6c\x42\x30\x45\x49\x6d\x73\x78\x51\x76\x68\
+\x79\x45\x41\x68\x53\x48\x57\x4b\x6b\x68\x6b\x70\x49\x35\x39\x55\
+\x39\x48\x52\x61\x50\x6c\x6b\x74\x6f\x36\x53\x69\x6e\x78\x6f\x65\
+\x76\x4b\x57\x72\x31\x34\x33\x52\x50\x75\x6b\x41\x42\x7a\x67\x73\
+\x4a\x53\x49\x6a\x66\x77\x55\x52\x4f\x78\x50\x55\x70\x66\x66\x70\
+\x30\x5a\x33\x54\x4a\x6a\x50\x64\x63\x6f\x69\x37\x52\x4b\x74\x4e\
+\x43\x6f\x47\x49\x58\x75\x78\x43\x32\x49\x6e\x6b\x74\x36\x44\x6f\
+\x61\x44\x69\x36\x4e\x74\x4a\x34\x42\x78\x2b\x38\x50\x68\x44\x73\
+\x39\x54\x35\x67\x7a\x43\x67\x68\x66\x54\x77\x70\x37\x49\x39\x4c\
+\x48\x31\x63\x43\x61\x46\x54\x47\x5a\x62\x64\x36\x30\x4a\x75\x52\
+\x66\x4b\x41\x4e\x4e\x57\x45\x70\x4f\x64\x45\x51\x31\x6c\x67\x39\
+\x69\x42\x68\x63\x56\x47\x71\x49\x4f\x2f\x46\x4e\x71\x43\x54\x4c\
+\x38\x51\x41\x34\x7a\x49\x45\x34\x48\x56\x38\x6f\x57\x6d\x32\x6c\
+\x33\x48\x72\x74\x4e\x73\x54\x48\x42\x71\x4a\x74\x39\x38\x56\x61\
+\x37\x71\x38\x68\x66\x42\x51\x74\x50\x5a\x62\x37\x33\x35\x48\x30\
+\x36\x34\x4a\x36\x33\x6d\x4f\x7a\x66\x78\x72\x70\x6e\x6e\x5a\x75\
+\x79\x6f\x4d\x52\x70\x76\x4d\x51\x74\x35\x47\x44\x6e\x4b\x38\x5a\
+\x6c\x51\x41\x52\x75\x31\x70\x34\x7a\x6e\x39\x79\x62\x39\x46\x36\
+\x72\x4b\x2b\x72\x45\x48\x31\x6d\x66\x48\x65\x36\x54\x5a\x62\x43\
+\x6d\x6b\x5a\x32\x58\x32\x6a\x79\x59\x68\x73\x48\x47\x71\x39\x35\
+\x50\x42\x42\x62\x4f\x2f\x50\x42\x35\x67\x6c\x68\x2f\x36\x6e\x45\
+\x6a\x39\x30\x77\x6d\x59\x42\x38\x47\x57\x45\x6e\x2b\x6c\x4e\x32\
+\x76\x57\x39\x47\x51\x39\x37\x75\x77\x35\x7a\x64\x6a\x74\x4c\x48\
+\x6a\x5a\x41\x70\x6e\x2b\x42\x45\x73\x64\x76\x4e\x5a\x75\x32\x66\
+\x59\x4e\x69\x51\x58\x6f\x77\x70\x49\x34\x62\x35\x6a\x76\x5a\x56\
+\x72\x79\x7a\x6f\x32\x7a\x55\x72\x64\x48\x42\x72\x35\x6d\x38\x62\
+\x61\x48\x74\x6a\x61\x63\x4e\x54\x4e\x41\x72\x37\x6a\x62\x51\x5a\
+\x73\x5a\x62\x41\x6d\x5a\x56\x59\x52\x69\x70\x48\x7a\x6d\x71\x6a\
+\x56\x69\x6d\x51\x4f\x35\x73\x65\x6f\x7a\x78\x49\x48\x47\x58\x4f\
+\x2f\x43\x52\x50\x52\x43\x2b\x66\x41\x4a\x77\x71\x6d\x68\x65\x62\
+\x6f\x70\x42\x61\x49\x67\x4b\x74\x4e\x71\x54\x72\x30\x59\x57\x50\
+\x4c\x78\x6a\x34\x4e\x54\x39\x4c\x61\x4b\x79\x74\x50\x58\x6a\x58\
+\x51\x4f\x74\x75\x44\x47\x73\x6d\x6a\x48\x34\x68\x66\x69\x44\x71\
+\x6f\x6c\x2b\x48\x7a\x6e\x30\x63\x67\x78\x76\x36\x5a\x36\x64\x32\
+\x69\x6e\x51\x6b\x53\x35\x63\x31\x51\x30\x30\x54\x4d\x61\x73\x69\
+\x67\x4f\x68\x6f\x38\x2b\x70\x58\x4d\x4b\x44\x4c\x64\x32\x49\x48\
+\x4b\x32\x6a\x35\x76\x47\x31\x59\x53\x75\x61\x61\x55\x32\x4b\x67\
+\x4b\x6b\x59\x4a\x50\x58\x56\x59\x4f\x65\x70\x54\x47\x37\x74\x2b\
+\x66\x65\x49\x6a\x46\x50\x2b\x51\x44\x43\x68\x65\x6c\x76\x74\x77\
+\x6c\x4a\x56\x53\x56\x58\x34\x44\x4f\x74\x7a\x62\x4e\x50\x41\x32\
+\x32\x7a\x41\x41\x4c\x6e\x2f\x44\x55\x72\x71\x70\x5a\x61\x64\x33\
+\x75\x48\x6b\x77\x2b\x6a\x2f\x35\x45\x4d\x62\x6b\x63\x66\x59\x42\
+\x75\x63\x6d\x48\x48\x53\x54\x4c\x42\x32\x64\x33\x6b\x43\x6b\x62\
+\x65\x47\x63\x79\x43\x4d\x6d\x6c\x44\x36\x45\x6a\x76\x51\x31\x72\
+\x58\x71\x48\x34\x44\x6e\x43\x6c\x57\x70\x68\x5a\x73\x71\x70\x70\
+\x52\x38\x32\x4d\x44\x73\x69\x48\x50\x45\x52\x45\x56\x68\x41\x7a\
+\x39\x69\x62\x4d\x6a\x51\x41\x4e\x47\x4a\x4e\x4e\x50\x70\x63\x49\
+\x34\x33\x75\x47\x69\x50\x49\x32\x68\x4f\x6c\x45\x2b\x31\x2b\x42\
+\x37\x73\x58\x2b\x5a\x57\x55\x55\x6f\x4e\x75\x39\x47\x66\x33\x6d\
+\x7a\x4c\x48\x68\x35\x49\x53\x7a\x76\x50\x59\x51\x45\x53\x49\x6e\
+\x72\x7a\x39\x75\x4a\x32\x67\x48\x77\x31\x49\x67\x54\x42\x43\x4b\
+\x62\x79\x35\x6c\x61\x41\x72\x78\x48\x65\x47\x31\x56\x34\x47\x4f\
+\x79\x61\x67\x76\x76\x44\x30\x33\x64\x76\x50\x45\x2b\x64\x37\x34\
+\x78\x4b\x4a\x73\x75\x6b\x55\x53\x43\x5a\x72\x36\x65\x4f\x77\x4c\
+\x4a\x79\x4f\x72\x69\x50\x79\x37\x47\x74\x54\x55\x52\x31\x41\x38\
+\x52\x30\x37\x2f\x55\x2b\x52\x7a\x4e\x5a\x51\x49\x47\x53\x33\x47\
+\x72\x48\x37\x68\x61\x74\x45\x70\x74\x42\x57\x4e\x38\x37\x59\x73\
+\x2b\x2f\x50\x76\x48\x50\x78\x74\x6d\x62\x72\x35\x4e\x4d\x33\x6b\
+\x57\x43\x36\x4e\x46\x78\x42\x53\x2b\x4f\x41\x55\x5a\x6f\x54\x58\
+\x64\x30\x57\x62\x4a\x2b\x58\x41\x65\x54\x46\x79\x58\x67\x79\x2f\
+\x4c\x50\x4b\x33\x64\x71\x73\x52\x69\x4a\x79\x39\x4d\x77\x49\x67\
+\x35\x75\x7a\x50\x67\x45\x76\x58\x42\x43\x5a\x64\x54\x32\x59\x46\
+\x72\x76\x32\x75\x46\x75\x30\x46\x56\x37\x76\x39\x39\x65\x49\x6c\
+\x42\x79\x2b\x4d\x76\x58\x61\x71\x31\x49\x6d\x54\x68\x44\x43\x65\
+\x73\x71\x6d\x57\x6b\x69\x67\x59\x59\x65\x79\x73\x77\x43\x2b\x2b\
+\x54\x6d\x4a\x4b\x50\x2b\x66\x75\x78\x4d\x56\x48\x47\x74\x70\x38\
+\x51\x73\x78\x41\x6f\x43\x53\x70\x38\x66\x66\x4a\x79\x51\x76\x54\
+\x6b\x63\x6d\x42\x71\x6e\x58\x30\x61\x33\x32\x62\x51\x58\x32\x30\
+\x5a\x39\x59\x4d\x64\x48\x6d\x4f\x42\x79\x67\x79\x4c\x32\x51\x62\
+\x42\x4c\x48\x73\x78\x2f\x35\x5a\x66\x49\x78\x63\x44\x4e\x6f\x4d\
+\x69\x42\x35\x35\x73\x34\x77\x4c\x73\x41\x42\x4b\x75\x58\x54\x39\
+\x75\x59\x68\x79\x78\x31\x5a\x51\x4e\x79\x33\x47\x73\x74\x74\x76\
+\x75\x63\x31\x33\x4d\x7a\x56\x56\x6c\x74\x46\x47\x5a\x48\x47\x51\
+\x6c\x4f\x50\x73\x43\x71\x4a\x48\x33\x6a\x44\x4c\x35\x62\x4a\x4a\
+\x52\x43\x42\x48\x50\x71\x32\x75\x33\x72\x42\x5a\x6a\x79\x34\x41\
+\x39\x64\x52\x75\x61\x57\x74\x66\x33\x39\x52\x61\x37\x62\x74\x32\
+\x4a\x79\x2b\x36\x64\x6a\x57\x4b\x4c\x38\x68\x4a\x6c\x42\x79\x63\
+\x68\x6c\x4c\x57\x76\x59\x41\x4a\x78\x6c\x55\x2b\x71\x7a\x61\x44\
+\x2b\x6d\x73\x34\x30\x49\x70\x6e\x6a\x6c\x79\x61\x4c\x73\x6d\x32\
+\x4e\x58\x76\x54\x55\x7a\x34\x4b\x6f\x69\x36\x51\x33\x51\x66\x33\
+\x33\x57\x47\x61\x63\x5a\x4d\x50\x5a\x6c\x53\x48\x67\x46\x61\x30\
+\x74\x71\x79\x50\x4e\x68\x73\x6e\x44\x46\x77\x42\x32\x66\x48\x68\
+\x4b\x4d\x4d\x54\x47\x56\x42\x42\x56\x4e\x53\x6b\x53\x39\x38\x69\
+\x36\x58\x72\x79\x74\x7a\x37\x6c\x55\x78\x7a\x36\x57\x44\x63\x41\
+\x45\x34\x49\x72\x49\x45\x56\x31\x72\x6e\x77\x2f\x4d\x2b\x57\x70\
+\x49\x44\x64\x41\x47\x62\x49\x39\x61\x39\x31\x66\x72\x30\x2f\x35\
+\x46\x4a\x32\x6f\x71\x36\x4d\x72\x45\x44\x4a\x4f\x77\x68\x46\x33\
+\x50\x6b\x66\x6f\x78\x33\x2b\x59\x53\x37\x6c\x6e\x4d\x54\x6b\x4a\
+\x4d\x79\x4d\x45\x4f\x6a\x69\x34\x46\x48\x4b\x50\x52\x4f\x33\x64\
+\x42\x4f\x71\x37\x33\x58\x6c\x64\x4e\x30\x79\x4b\x78\x67\x6e\x63\
+\x79\x70\x6f\x7a\x6b\x5a\x57\x4f\x33\x4c\x42\x6e\x34\x4b\x44\x7a\
+\x43\x59\x43\x44\x72\x67\x50\x37\x68\x6f\x4c\x71\x75\x2f\x33\x56\
+\x43\x71\x4e\x32\x64\x51\x73\x30\x70\x34\x69\x77\x42\x79\x55\x31\
+\x6c\x64\x7a\x56\x6f\x43\x35\x2b\x42\x45\x7a\x51\x45\x4d\x41\x6a\
+\x41\x4f\x37\x58\x51\x52\x79\x41\x54\x67\x32\x6b\x64\x4c\x41\x45\
+\x4f\x6f\x74\x44\x55\x50\x63\x4e\x57\x33\x57\x4d\x34\x78\x4b\x69\
+\x43\x4e\x4f\x53\x48\x6e\x59\x34\x71\x55\x70\x51\x31\x67\x6b\x78\
+\x75\x7a\x59\x51\x49\x51\x32\x59\x79\x63\x6d\x69\x61\x6f\x34\x41\
+\x74\x46\x32\x48\x62\x2b\x66\x70\x34\x43\x5a\x6f\x59\x46\x77\x48\
+\x67\x7a\x6f\x6f\x64\x33\x32\x39\x63\x77\x34\x41\x4d\x70\x7a\x6f\
+\x6d\x76\x7a\x41\x53\x31\x6f\x43\x6b\x74\x32\x56\x4e\x5a\x46\x67\
+\x54\x2b\x66\x79\x69\x59\x77\x77\x59\x49\x62\x69\x67\x77\x61\x61\
+\x48\x54\x70\x38\x52\x77\x63\x4a\x79\x7a\x75\x79\x2b\x63\x2b\x39\
+\x70\x49\x4e\x6a\x6d\x70\x58\x52\x6e\x46\x42\x51\x51\x55\x54\x46\
+\x71\x45\x69\x49\x77\x48\x5a\x64\x68\x30\x51\x41\x4e\x4b\x4b\x49\
+\x4c\x68\x37\x30\x71\x67\x37\x66\x4c\x55\x64\x54\x61\x4f\x4b\x30\
+\x44\x6a\x4d\x41\x2f\x46\x34\x44\x30\x78\x64\x38\x36\x35\x47\x4f\
+\x4f\x51\x46\x6f\x65\x55\x75\x4c\x47\x56\x41\x77\x4b\x66\x6c\x75\
+\x6e\x31\x52\x56\x46\x30\x43\x66\x44\x37\x70\x30\x57\x6e\x54\x6a\
+\x67\x6f\x78\x69\x32\x51\x4d\x4d\x48\x56\x33\x4b\x6e\x79\x65\x70\
+\x73\x2b\x36\x46\x61\x39\x65\x4d\x4c\x31\x31\x6a\x62\x56\x78\x63\
+\x59\x69\x6d\x76\x4e\x64\x4a\x31\x43\x53\x66\x4b\x45\x35\x6b\x6c\
+\x7a\x61\x65\x53\x48\x6f\x4e\x78\x6c\x74\x49\x51\x47\x48\x36\x55\
+\x43\x49\x4d\x35\x30\x70\x61\x33\x4e\x70\x64\x31\x70\x78\x79\x42\
+\x35\x74\x31\x51\x52\x56\x74\x6c\x48\x66\x61\x6d\x4c\x5a\x30\x72\
+\x67\x48\x41\x57\x4b\x39\x39\x31\x48\x55\x34\x56\x73\x37\x36\x57\
+\x46\x57\x59\x4a\x6b\x4b\x69\x42\x72\x31\x4c\x44\x36\x53\x78\x66\
+\x58\x75\x75\x71\x4e\x6b\x75\x41\x68\x4b\x38\x57\x49\x42\x78\x6f\
+\x4f\x4f\x76\x6e\x79\x32\x74\x66\x52\x70\x55\x42\x77\x68\x36\x6b\
+\x36\x56\x38\x70\x51\x6a\x6a\x51\x38\x75\x57\x31\x6e\x76\x4d\x35\
+\x73\x31\x72\x78\x46\x61\x4e\x59\x52\x4d\x48\x53\x67\x42\x6b\x36\
+\x66\x57\x4b\x75\x6f\x4d\x42\x6c\x74\x4e\x75\x76\x62\x75\x6a\x49\
+\x30\x6c\x68\x49\x74\x36\x48\x47\x78\x66\x51\x38\x4d\x69\x41\x39\
+\x45\x76\x56\x4b\x5a\x4e\x69\x6e\x4c\x59\x42\x41\x4e\x6a\x56\x58\
+\x41\x48\x30\x32\x50\x75\x48\x36\x57\x6c\x70\x53\x70\x39\x49\x6f\
+\x48\x41\x68\x41\x74\x68\x6e\x46\x35\x71\x47\x49\x56\x34\x68\x70\
+\x50\x5a\x37\x6e\x4a\x47\x52\x37\x69\x4d\x47\x68\x75\x53\x47\x69\
+\x68\x4f\x41\x56\x52\x47\x78\x53\x57\x30\x77\x76\x36\x4b\x45\x37\
+\x54\x54\x6f\x4c\x79\x36\x38\x75\x52\x70\x56\x2b\x6a\x31\x69\x65\
+\x36\x51\x55\x41\x52\x30\x66\x6d\x68\x6f\x49\x75\x58\x6e\x52\x50\
+\x5a\x33\x51\x77\x47\x77\x79\x58\x33\x2b\x6f\x51\x51\x70\x41\x4d\
+\x53\x46\x30\x39\x55\x45\x55\x69\x53\x30\x41\x30\x4e\x44\x51\x6e\
+\x41\x42\x30\x34\x53\x2f\x6f\x68\x64\x61\x6a\x6e\x57\x46\x31\x67\
+\x75\x6c\x62\x32\x32\x46\x35\x70\x6f\x51\x30\x6e\x4d\x63\x38\x64\
+\x49\x71\x73\x48\x56\x56\x45\x75\x5a\x67\x48\x36\x59\x4e\x2b\x63\
+\x41\x48\x52\x77\x32\x48\x47\x57\x57\x49\x4e\x36\x6c\x67\x55\x79\
+\x46\x57\x31\x72\x34\x73\x49\x42\x42\x79\x44\x6b\x6f\x71\x41\x65\
+\x76\x2f\x4f\x69\x5a\x72\x6b\x6f\x35\x30\x4d\x4d\x65\x31\x43\x71\
+\x33\x71\x33\x36\x6c\x79\x65\x2f\x63\x48\x51\x74\x6b\x5a\x37\x68\
+\x38\x42\x77\x76\x7a\x75\x39\x64\x52\x4f\x69\x61\x38\x49\x77\x64\
+\x55\x45\x46\x4f\x32\x68\x49\x2f\x51\x47\x61\x55\x54\x57\x4f\x68\
+\x66\x6c\x33\x76\x49\x76\x72\x6c\x48\x30\x2f\x5a\x54\x4d\x65\x67\
+\x6b\x37\x2b\x61\x47\x57\x74\x6e\x58\x70\x66\x39\x58\x50\x4e\x43\
+\x78\x2f\x30\x66\x5a\x53\x48\x6d\x6c\x38\x67\x30\x30\x34\x43\x4b\
+\x62\x39\x37\x7a\x56\x70\x30\x44\x2b\x70\x57\x70\x6f\x47\x6e\x54\
+\x4d\x56\x39\x79\x75\x67\x39\x75\x69\x7a\x77\x41\x47\x52\x31\x31\
+\x62\x35\x38\x75\x65\x46\x41\x2b\x76\x6f\x70\x76\x50\x6e\x79\x6f\
+\x6e\x6e\x50\x5a\x7a\x34\x38\x4e\x46\x71\x76\x45\x61\x64\x4d\x70\
+\x6c\x58\x38\x73\x30\x39\x68\x46\x75\x46\x52\x68\x47\x63\x39\x34\
+\x41\x56\x4a\x76\x47\x76\x43\x33\x6f\x66\x4a\x68\x66\x2b\x71\x46\
+\x35\x2b\x73\x57\x30\x47\x76\x48\x42\x6d\x32\x6d\x55\x33\x4c\x69\
+\x78\x5a\x32\x59\x6b\x61\x38\x42\x4f\x51\x43\x74\x48\x76\x43\x33\
+\x6f\x56\x52\x5a\x6d\x59\x42\x74\x71\x44\x35\x46\x64\x48\x42\x34\
+\x78\x4d\x68\x66\x46\x74\x4f\x78\x74\x76\x6e\x58\x45\x2b\x77\x5a\
+\x47\x35\x41\x74\x68\x64\x6b\x42\x59\x52\x74\x53\x62\x76\x38\x7a\
+\x72\x79\x35\x65\x53\x74\x62\x69\x35\x52\x56\x6a\x4b\x6c\x57\x66\
+\x49\x6e\x70\x36\x33\x33\x36\x62\x36\x5a\x67\x4e\x65\x37\x4d\x7a\
+\x75\x31\x76\x6c\x51\x37\x69\x51\x33\x46\x7a\x6c\x41\x55\x6a\x4b\
+\x69\x42\x4e\x2f\x4f\x4a\x64\x32\x46\x4b\x62\x55\x32\x32\x2f\x56\
+\x57\x37\x66\x6a\x78\x55\x4f\x66\x48\x6a\x32\x64\x74\x4a\x70\x4f\
+\x6d\x58\x78\x49\x32\x52\x32\x33\x72\x30\x56\x34\x2f\x2b\x45\x4f\
+\x35\x66\x59\x37\x6e\x42\x57\x6a\x70\x6d\x72\x4a\x38\x2f\x48\x4a\
+\x4c\x38\x64\x56\x53\x63\x6c\x4d\x58\x68\x49\x63\x35\x51\x2f\x7a\
+\x39\x4a\x62\x36\x6f\x54\x4d\x63\x54\x7a\x33\x33\x33\x69\x63\x32\
+\x30\x7a\x45\x62\x31\x67\x36\x75\x44\x34\x6e\x78\x74\x5a\x42\x30\
+\x6a\x36\x66\x39\x55\x7a\x41\x64\x74\x56\x78\x45\x68\x6e\x42\x4f\
+\x58\x63\x68\x4d\x6c\x71\x41\x6b\x52\x6b\x5a\x56\x57\x62\x5a\x31\
+\x58\x4f\x6e\x2f\x71\x4a\x64\x41\x65\x2b\x54\x56\x76\x51\x6e\x42\
+\x39\x65\x77\x46\x4d\x62\x76\x6a\x64\x6b\x38\x73\x51\x48\x78\x4d\
+\x41\x77\x47\x7a\x39\x4f\x43\x6a\x54\x75\x47\x55\x43\x30\x71\x64\
+\x4f\x6a\x74\x73\x44\x37\x51\x58\x64\x71\x41\x36\x71\x42\x75\x2f\
+\x73\x2f\x73\x33\x78\x38\x35\x50\x75\x6f\x35\x2b\x75\x57\x52\x33\
+\x33\x45\x48\x74\x44\x33\x4a\x4f\x41\x79\x6f\x76\x46\x4b\x64\x66\
+\x77\x4f\x55\x69\x7a\x76\x64\x4f\x34\x5a\x54\x56\x6a\x49\x4b\x51\
+\x48\x42\x74\x7a\x42\x74\x72\x56\x4e\x53\x4e\x4d\x35\x37\x57\x50\
+\x50\x2f\x66\x59\x41\x4c\x73\x50\x4d\x62\x76\x66\x48\x51\x76\x61\
+\x4f\x76\x46\x65\x77\x78\x32\x59\x56\x4f\x35\x62\x66\x2b\x38\x55\
+\x6a\x71\x30\x52\x7a\x43\x69\x56\x59\x76\x2f\x6d\x57\x31\x65\x4c\
+\x6b\x53\x38\x64\x6f\x2f\x7a\x70\x37\x69\x54\x4b\x35\x2b\x35\x6f\
+\x67\x4d\x6a\x42\x66\x54\x7a\x6f\x35\x76\x58\x55\x62\x62\x66\x37\
+\x6a\x30\x55\x35\x7a\x4f\x68\x71\x4d\x61\x71\x49\x7a\x75\x4a\x4f\
+\x59\x6e\x59\x76\x79\x4d\x66\x74\x72\x6b\x7a\x6b\x5a\x46\x5a\x30\
+\x2b\x79\x31\x50\x2b\x2b\x34\x57\x30\x59\x79\x75\x4d\x43\x50\x73\
+\x78\x7a\x35\x30\x45\x4b\x4f\x7a\x4c\x56\x70\x6b\x65\x66\x53\x36\
+\x48\x6c\x2f\x35\x4f\x47\x39\x41\x68\x4c\x61\x6e\x34\x46\x6c\x76\
+\x35\x42\x55\x65\x2b\x31\x74\x35\x31\x38\x75\x2b\x75\x78\x68\x71\
+\x6d\x68\x64\x74\x4a\x39\x77\x6b\x6f\x54\x79\x7a\x56\x64\x32\x34\
+\x36\x58\x4c\x54\x75\x65\x2b\x2f\x33\x72\x57\x37\x4d\x69\x5a\x43\
+\x4e\x2b\x68\x63\x71\x30\x37\x48\x41\x4e\x4f\x67\x55\x39\x4f\x50\
+\x79\x75\x6b\x4f\x39\x38\x78\x50\x74\x77\x58\x4b\x2b\x6b\x71\x50\
+\x4e\x6f\x55\x4c\x67\x47\x7a\x33\x48\x62\x6f\x43\x41\x70\x59\x37\
+\x38\x50\x52\x45\x50\x4c\x4f\x30\x42\x38\x39\x39\x64\x37\x54\x78\
+\x6d\x69\x34\x2b\x51\x68\x6a\x78\x6c\x72\x39\x32\x70\x2f\x7a\x4d\
+\x56\x69\x72\x43\x58\x5a\x62\x4f\x78\x4a\x66\x6e\x48\x33\x6e\x31\
+\x50\x53\x4f\x6a\x75\x78\x47\x78\x74\x57\x74\x44\x49\x4d\x70\x67\
+\x51\x44\x33\x52\x75\x46\x6e\x37\x2f\x46\x74\x48\x49\x35\x47\x4c\
+\x75\x55\x41\x39\x2b\x53\x39\x62\x33\x4f\x36\x49\x67\x6e\x77\x41\
+\x38\x4c\x79\x36\x39\x7a\x33\x66\x66\x5a\x58\x53\x6d\x55\x41\x73\
+\x68\x68\x7a\x50\x4a\x7a\x74\x33\x75\x6e\x50\x30\x66\x30\x59\x68\
+\x52\x77\x56\x58\x7a\x70\x39\x64\x4f\x69\x2f\x39\x62\x76\x69\x78\
+\x64\x30\x35\x6e\x41\x74\x31\x36\x74\x45\x2b\x4c\x72\x4e\x53\x44\
+\x43\x33\x45\x63\x41\x54\x6f\x4b\x6b\x50\x76\x44\x68\x6e\x67\x4b\
+\x68\x4f\x69\x4d\x77\x69\x52\x6b\x72\x6f\x6b\x58\x73\x4f\x30\x38\
+\x31\x52\x35\x72\x6f\x4a\x42\x48\x66\x4a\x55\x4e\x6d\x42\x45\x62\
+\x2b\x2b\x33\x48\x36\x51\x30\x62\x61\x7a\x4d\x6a\x43\x55\x51\x6d\
+\x51\x59\x2b\x61\x45\x73\x64\x2b\x75\x50\x2f\x7a\x4f\x2f\x38\x37\
+\x2f\x76\x62\x78\x57\x51\x54\x30\x77\x41\x32\x64\x2f\x63\x33\x4c\
+\x41\x6d\x6f\x37\x51\x4b\x46\x4b\x33\x79\x4d\x56\x78\x37\x4d\x53\
+\x45\x6e\x76\x6b\x55\x74\x4e\x43\x4f\x72\x69\x77\x67\x67\x66\x4a\
+\x6b\x4f\x39\x36\x74\x74\x37\x6e\x57\x6e\x6d\x67\x32\x63\x7a\x6f\
+\x44\x50\x67\x54\x44\x4b\x69\x73\x55\x46\x6f\x51\x62\x62\x78\x33\
+\x57\x63\x50\x47\x58\x72\x77\x77\x63\x30\x5a\x4a\x51\x58\x2f\x6f\
+\x35\x66\x6a\x78\x43\x30\x6f\x32\x54\x45\x6c\x63\x42\x61\x64\x6e\
+\x51\x6a\x53\x32\x6f\x56\x4c\x52\x43\x4c\x55\x4e\x72\x62\x6c\x6e\
+\x72\x32\x47\x6a\x53\x41\x66\x75\x44\x38\x2f\x78\x41\x6d\x51\x75\
+\x61\x45\x63\x2b\x7a\x51\x78\x55\x64\x44\x32\x5a\x61\x55\x5a\x59\
+\x50\x73\x66\x41\x67\x36\x35\x69\x58\x39\x6f\x53\x57\x74\x4d\x5a\
+\x36\x75\x2f\x41\x43\x7a\x4f\x42\x56\x57\x41\x30\x4f\x4b\x59\x6f\
+\x44\x4d\x79\x47\x4b\x4a\x58\x32\x66\x41\x49\x54\x42\x63\x47\x79\
+\x6d\x47\x33\x64\x69\x70\x44\x2b\x34\x32\x35\x6c\x65\x56\x44\x33\
+\x42\x2b\x54\x4e\x43\x4b\x63\x7a\x6e\x4e\x52\x38\x39\x78\x6a\x62\
+\x55\x50\x50\x69\x62\x6f\x70\x68\x6e\x50\x4c\x78\x2b\x6d\x6e\x58\
+\x6c\x4f\x71\x33\x39\x75\x2f\x64\x68\x71\x6c\x56\x78\x65\x68\x37\
+\x65\x31\x4a\x37\x68\x34\x79\x52\x51\x7a\x47\x41\x63\x6b\x48\x4b\
+\x36\x34\x46\x77\x66\x59\x52\x6e\x70\x73\x51\x6f\x38\x45\x61\x76\
+\x68\x42\x6b\x52\x33\x63\x61\x31\x44\x72\x4a\x74\x79\x6d\x78\x2b\
+\x47\x45\x38\x56\x6d\x70\x45\x4b\x32\x44\x68\x59\x57\x50\x6c\x42\
+\x5a\x67\x36\x66\x4d\x79\x63\x31\x4b\x65\x72\x56\x4e\x4a\x77\x68\
+\x58\x33\x67\x67\x38\x70\x65\x72\x6a\x4a\x45\x4b\x4c\x71\x66\x46\
+\x4c\x73\x6d\x73\x78\x38\x55\x36\x47\x55\x4c\x66\x49\x4b\x47\x43\
+\x2b\x77\x66\x5a\x58\x30\x30\x68\x6f\x68\x66\x37\x68\x36\x37\x35\
+\x4e\x76\x37\x46\x6c\x79\x70\x68\x68\x4c\x74\x70\x5a\x2b\x4a\x64\
+\x6d\x4e\x47\x56\x72\x4b\x53\x66\x33\x52\x67\x75\x4d\x49\x49\x36\
+\x43\x4b\x58\x55\x53\x45\x4b\x68\x46\x46\x4c\x6d\x63\x62\x6c\x31\
+\x49\x36\x6d\x43\x52\x30\x38\x79\x72\x30\x38\x51\x78\x6f\x39\x6f\
+\x4a\x77\x34\x7a\x75\x4d\x78\x6c\x63\x77\x45\x7a\x4b\x6f\x51\x62\
+\x4f\x55\x75\x41\x36\x42\x52\x59\x50\x41\x35\x75\x42\x50\x48\x57\
+\x78\x70\x42\x43\x4d\x66\x51\x56\x41\x34\x54\x33\x63\x4e\x75\x47\
+\x6b\x41\x37\x30\x33\x5a\x38\x61\x73\x55\x62\x4c\x65\x6a\x53\x75\
+\x45\x43\x4a\x4f\x55\x48\x45\x70\x35\x50\x59\x68\x54\x33\x7a\x4a\
+\x44\x45\x76\x77\x48\x78\x63\x6f\x58\x6f\x42\x71\x59\x4b\x51\x43\
+\x4c\x67\x34\x57\x59\x7a\x52\x34\x50\x71\x31\x6b\x59\x66\x7a\x55\
+\x61\x4c\x67\x70\x47\x6d\x6c\x70\x71\x4f\x46\x51\x61\x33\x34\x75\
+\x38\x62\x4d\x62\x6a\x43\x52\x56\x59\x46\x53\x49\x4f\x46\x62\x51\
+\x79\x6e\x4b\x63\x35\x48\x4f\x35\x31\x49\x39\x47\x36\x47\x45\x52\
+\x2f\x76\x73\x69\x32\x51\x75\x51\x47\x36\x4e\x53\x44\x6e\x72\x78\
+\x4a\x52\x69\x4c\x53\x54\x2f\x64\x6e\x67\x4b\x64\x6b\x32\x41\x5a\
+\x52\x6f\x4d\x5a\x45\x51\x59\x68\x78\x2b\x4f\x35\x5a\x4c\x61\x78\
+\x6f\x35\x6e\x68\x32\x63\x73\x74\x48\x33\x4e\x35\x32\x7a\x32\x68\
+\x33\x6c\x5a\x71\x36\x39\x35\x69\x66\x36\x49\x51\x63\x52\x7a\x47\
+\x56\x4d\x68\x78\x6b\x76\x2b\x6c\x63\x6a\x6a\x51\x4a\x41\x53\x66\
+\x76\x31\x62\x79\x41\x6b\x52\x6b\x5a\x48\x33\x51\x4d\x76\x66\x63\
+\x6a\x35\x49\x72\x37\x78\x39\x36\x62\x49\x2b\x66\x48\x30\x6c\x59\
+\x53\x74\x48\x57\x68\x73\x71\x6c\x70\x41\x4e\x39\x4a\x6b\x39\x46\
+\x78\x2b\x33\x68\x66\x69\x37\x43\x77\x53\x66\x66\x4c\x54\x33\x42\
+\x75\x78\x52\x78\x78\x75\x33\x39\x46\x67\x4f\x47\x41\x4a\x65\x4b\
+\x4e\x41\x56\x6f\x5a\x43\x77\x55\x2f\x73\x54\x7a\x42\x55\x48\x64\
+\x52\x30\x45\x65\x76\x4d\x79\x46\x6c\x73\x33\x72\x2b\x31\x63\x74\
+\x4f\x76\x72\x41\x54\x75\x48\x4d\x6c\x45\x38\x6d\x48\x6f\x39\x6e\
+\x70\x74\x4a\x59\x53\x6c\x79\x49\x76\x39\x77\x4b\x4b\x72\x54\x37\
+\x56\x68\x71\x61\x74\x54\x4b\x61\x6a\x6a\x68\x4a\x5a\x33\x51\x75\
+\x41\x44\x45\x46\x33\x73\x57\x4c\x56\x76\x50\x61\x55\x79\x31\x79\
+\x52\x56\x6e\x4d\x37\x59\x47\x4d\x35\x6b\x4a\x34\x35\x59\x4c\x2b\
+\x44\x35\x39\x6f\x33\x72\x44\x63\x39\x78\x68\x55\x57\x5a\x6b\x34\
+\x50\x5a\x59\x59\x75\x36\x53\x70\x57\x73\x30\x55\x33\x42\x70\x78\
+\x34\x30\x31\x39\x7a\x41\x2f\x75\x73\x54\x38\x35\x79\x49\x69\x34\
+\x4b\x54\x48\x49\x75\x74\x4a\x5a\x77\x75\x72\x62\x32\x75\x51\x71\
+\x30\x72\x77\x48\x6f\x38\x49\x79\x48\x51\x76\x30\x76\x66\x34\x49\
+\x6e\x76\x43\x43\x37\x30\x47\x6d\x4a\x35\x4d\x34\x34\x73\x53\x4d\
+\x55\x41\x4f\x49\x71\x67\x67\x57\x64\x64\x54\x48\x59\x6b\x5a\x52\
+\x76\x73\x78\x41\x78\x65\x4e\x5a\x74\x30\x38\x49\x49\x37\x43\x74\
+\x54\x51\x6f\x6a\x76\x65\x6f\x36\x79\x4b\x32\x41\x4e\x4a\x65\x78\
+\x69\x4e\x59\x4e\x50\x64\x6e\x35\x37\x56\x73\x72\x6c\x4e\x4c\x55\
+\x79\x45\x54\x4e\x55\x6e\x4a\x44\x53\x64\x78\x6d\x30\x77\x70\x6d\
+\x35\x30\x4f\x68\x69\x49\x57\x52\x6c\x6c\x47\x56\x69\x7a\x4b\x52\
+\x7a\x6f\x37\x35\x30\x6e\x78\x61\x72\x37\x70\x51\x4a\x48\x4b\x78\
+\x53\x51\x6b\x33\x72\x4b\x41\x6c\x7a\x32\x31\x63\x64\x2b\x4c\x37\
+\x37\x5a\x76\x58\x2b\x48\x35\x61\x4e\x70\x36\x2b\x63\x50\x4b\x63\
+\x6b\x4d\x71\x36\x75\x6e\x51\x46\x72\x52\x4a\x32\x65\x50\x6e\x36\
+\x56\x6d\x72\x6e\x67\x38\x47\x4f\x57\x4f\x6c\x49\x70\x5a\x4f\x45\
+\x57\x7a\x53\x65\x61\x4a\x4b\x58\x73\x46\x6f\x74\x6c\x62\x52\x48\
+\x75\x44\x6d\x70\x38\x64\x63\x32\x39\x72\x37\x34\x51\x43\x57\x59\
+\x73\x49\x49\x6d\x7a\x34\x37\x6a\x61\x65\x5a\x53\x49\x6e\x4b\x78\
+\x72\x73\x47\x4d\x64\x6a\x38\x61\x77\x76\x4e\x69\x62\x68\x30\x52\
+\x73\x59\x36\x73\x62\x2f\x78\x75\x6b\x33\x4a\x58\x57\x50\x55\x5a\
+\x37\x71\x69\x77\x65\x54\x2b\x79\x76\x53\x79\x61\x6b\x73\x4c\x59\
+\x72\x74\x2b\x66\x33\x33\x55\x34\x66\x57\x54\x55\x73\x33\x2b\x4c\
+\x63\x42\x47\x41\x71\x38\x72\x43\x6e\x31\x33\x2f\x75\x53\x6c\x77\
+\x30\x34\x4b\x61\x66\x7a\x61\x50\x6e\x7a\x4d\x6c\x36\x6f\x2b\x2f\