From 0ca288f5185fd7c9f876291dcc6a724be9b2d910 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Wed, 5 Oct 2016 12:13:42 +0200 Subject: [PATCH 01/61] QmlDesigner: fix a crash when there are missing imports Task-number: QTCREATORBUG-16963 Change-Id: I0d4c2e018b4849b2a32cd77da8c2f979fd3befb3 Reviewed-by: Thomas Hartmann --- .../qml2puppet/instances/quickitemnodeinstance.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp index c84dcc468e1..203798e4bf3 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/quickitemnodeinstance.cpp @@ -165,8 +165,10 @@ void QuickItemNodeInstance::initialize(const ObjectNodeInstance::Pointer &object quickItem()->setParentItem(qobject_cast(nodeInstanceServer()->quickView()->rootObject())); } - if (s_createEffectItem || instanceId() == 0) - designerSupport()->refFromEffectItem(quickItem()); + if (quickItem()->window()) { + if (s_createEffectItem || instanceId() == 0) + designerSupport()->refFromEffectItem(quickItem()); + } ObjectNodeInstance::initialize(objectNodeInstance); quickItem()->update(); @@ -582,8 +584,7 @@ void QuickItemNodeInstance::reparent(const ObjectNodeInstance::Pointer &oldParen if (quickItem()->parentItem()) { refresh(); - if (quickItem()->window()) - DesignerSupport::updateDirtyNode(quickItem()); + DesignerSupport::updateDirtyNode(quickItem()); if (instanceIsValidLayoutable(oldParentInstance, oldParentProperty)) oldParentInstance->refreshLayoutable(); From 69627e494ba539c1463b511fdc898ff95f550b51 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 30 Sep 2016 20:33:34 +0200 Subject: [PATCH 02/61] Add helper code to generate trees of project nodes Add helper code to FolderNode that enables the creation of a tree of File- and FolderNodes from a FolderNode and a list of FileNodes. Change-Id: Iba4b6a768fc3d0501851f141372e7e34913ba518 Reviewed-by: hjk --- .../cmakeprojectmanager/cmakeproject.cpp | 102 +----------------- .../cmakeprojectmanager/cmakeproject.h | 3 - .../cmakeprojectmanager/cmakeprojectnodes.cpp | 4 +- .../cmakeprojectmanager/cmakeprojectnodes.h | 2 +- src/plugins/projectexplorer/projectnodes.cpp | 95 +++++++++++++++- src/plugins/projectexplorer/projectnodes.h | 7 +- 6 files changed, 106 insertions(+), 107 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index dc2e7fbf7ff..1f2d1f42124 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -91,7 +91,7 @@ CMakeProject::CMakeProject(CMakeManager *manager, const FileName &fileName) setProjectManager(manager); setDocument(new Internal::CMakeFile(this, fileName)); - setRootProjectNode(new CMakeProjectNode(fileName)); + setRootProjectNode(new CMakeProjectNode(Utils::FileName::fromString(fileName.toFileInfo().absolutePath()))); setProjectContext(Core::Context(CMakeProjectManager::Constants::PROJECTCONTEXT)); setProjectLanguages(Core::Context(ProjectExplorer::Constants::LANG_CXX)); @@ -244,7 +244,8 @@ void CMakeProject::updateProjectData() m_watchedFiles.insert(cm); } - buildTree(static_cast(rootProjectNode()), bdm->files()); + QList fileNodes = bdm->files(); + rootProjectNode()->buildTree(fileNodes); bdm->clearFiles(); // Some of the FileNodes in files() were deleted! updateApplicationAndDeploymentTargets(); @@ -416,98 +417,6 @@ bool CMakeProject::hasBuildTarget(const QString &title) const return Utils::anyOf(buildTargets(), [title](const CMakeBuildTarget &ct) { return ct.title == title; }); } -void CMakeProject::gatherFileNodes(ProjectExplorer::FolderNode *parent, QList &list) const -{ - foreach (ProjectExplorer::FolderNode *folder, parent->subFolderNodes()) - gatherFileNodes(folder, list); - foreach (ProjectExplorer::FileNode *file, parent->fileNodes()) - list.append(file); -} - -bool sortNodesByPath(Node *a, Node *b) -{ - return a->filePath() < b->filePath(); -} - -void CMakeProject::buildTree(CMakeProjectNode *rootNode, QList newList) -{ - // Gather old list - QList oldList; - gatherFileNodes(rootNode, oldList); - Utils::sort(oldList, sortNodesByPath); - Utils::sort(newList, sortNodesByPath); - - QList added; - QList deleted; - - ProjectExplorer::compareSortedLists(oldList, newList, deleted, added, sortNodesByPath); - - qDeleteAll(ProjectExplorer::subtractSortedList(newList, added, sortNodesByPath)); - - QHash > addedFolderMapping; - QHash > deletedFolderMapping; - - // add added nodes - foreach (ProjectExplorer::FileNode *fn, added) { - // Get relative path to rootNode - QString parentDir = fn->filePath().toFileInfo().absolutePath(); - ProjectExplorer::FolderNode *folder = findOrCreateFolder(rootNode, parentDir); - addedFolderMapping[folder] << fn; - } - - for (auto i = addedFolderMapping.constBegin(); i != addedFolderMapping.constEnd(); ++i) - i.key()->addFileNodes(i.value()); - - // remove old file nodes and check whether folder nodes can be removed - foreach (ProjectExplorer::FileNode *fn, deleted) - deletedFolderMapping[fn->parentFolderNode()] << fn; - - for (auto i = deletedFolderMapping.constBegin(); i != deletedFolderMapping.constEnd(); ++i) { - ProjectExplorer::FolderNode *parent = i.key(); - parent->removeFileNodes(i.value()); - // Check for empty parent - while (parent->subFolderNodes().isEmpty() && parent->fileNodes().isEmpty()) { - ProjectExplorer::FolderNode *grandparent = parent->parentFolderNode(); - grandparent->removeFolderNodes(QList() << parent); - parent = grandparent; - if (parent == rootNode) - break; - } - } -} - -ProjectExplorer::FolderNode *CMakeProject::findOrCreateFolder(CMakeProjectNode *rootNode, QString directory) -{ - FileName path = rootNode->filePath().parentDir(); - QDir rootParentDir(path.toString()); - QString relativePath = rootParentDir.relativeFilePath(directory); - if (relativePath == QLatin1String(".")) - relativePath.clear(); - QStringList parts = relativePath.split(QLatin1Char('/'), QString::SkipEmptyParts); - ProjectExplorer::FolderNode *parent = rootNode; - foreach (const QString &part, parts) { - path.appendPath(part); - // Find folder in subFolders - bool found = false; - foreach (ProjectExplorer::FolderNode *folder, parent->subFolderNodes()) { - if (folder->filePath() == path) { - // yeah found something :) - parent = folder; - found = true; - break; - } - } - if (!found) { - // No FolderNode yet, so create it - auto tmp = new ProjectExplorer::FolderNode(path); - tmp->setDisplayName(part); - parent->addFolderNodes(QList() << tmp); - parent = tmp; - } - } - return parent; -} - QString CMakeProject::displayName() const { return rootProjectNode()->displayName(); @@ -515,9 +424,8 @@ QString CMakeProject::displayName() const QStringList CMakeProject::files(FilesMode fileMode) const { - QList nodes; - gatherFileNodes(rootProjectNode(), nodes); - nodes = Utils::filtered(nodes, [fileMode](const FileNode *fn) { + const QList nodes = Utils::filtered(rootProjectNode()->recursiveFileNodes(), + [fileMode](const FileNode *fn) { const bool isGenerated = fn->isGenerated(); switch (fileMode) { diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index f214592d8fd..334cca4f6c7 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -118,9 +118,6 @@ private: void updateProjectData(); void updateQmlJSCodeModel(); - void buildTree(Internal::CMakeProjectNode *rootNode, QList list); - void gatherFileNodes(ProjectExplorer::FolderNode *parent, QList &list) const; - ProjectExplorer::FolderNode *findOrCreateFolder(Internal::CMakeProjectNode *rootNode, QString directory); void createGeneratedCodeModelSupport(); QStringList filesGeneratedFrom(const QString &sourceFile) const final; void updateTargetRunConfigurations(ProjectExplorer::Target *t); diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp index 73c6378ca9e..f42d08c6278 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp @@ -28,8 +28,8 @@ using namespace CMakeProjectManager; using namespace CMakeProjectManager::Internal; -CMakeProjectNode::CMakeProjectNode(const Utils::FileName &fileName) - : ProjectExplorer::ProjectNode(fileName) +CMakeProjectNode::CMakeProjectNode(const Utils::FileName &dirName) + : ProjectExplorer::ProjectNode(dirName) { } diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h index 9dcb720767f..34a2e73619a 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h @@ -35,7 +35,7 @@ namespace Internal { class CMakeProjectNode : public ProjectExplorer::ProjectNode { public: - CMakeProjectNode(const Utils::FileName &fileName); + CMakeProjectNode(const Utils::FileName &dirName); bool showInSimpleTree() const override; QList supportedActions(Node *node) const override; }; diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index eb110272cc9..9d97dff9413 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -269,11 +269,102 @@ QList FolderNode::fileNodes() const return m_fileNodes; } +QList FolderNode::recursiveFileNodes() const +{ + QList result = fileNodes(); + foreach (ProjectExplorer::FolderNode *folder, subFolderNodes()) + result.append(folder->recursiveFileNodes()); + return result; +} + QList FolderNode::subFolderNodes() const { return m_subFolderNodes; } +FolderNode *FolderNode::findOrCreateSubFolderNode(const QString &directory) +{ + Utils::FileName path = filePath(); + QDir parentDir(path.toString()); + QString relativePath = parentDir.relativeFilePath(directory); + if (relativePath == ".") + relativePath.clear(); + QStringList parts = relativePath.split('/', QString::SkipEmptyParts); + ProjectExplorer::FolderNode *parent = this; + foreach (const QString &part, parts) { + path.appendPath(part); + // Find folder in subFolders + bool found = false; + foreach (ProjectExplorer::FolderNode *folder, parent->subFolderNodes()) { + if (folder->filePath() == path) { + // yeah found something :) + parent = folder; + found = true; + break; + } + } + if (!found) { + // No FolderNode yet, so create it + auto tmp = new ProjectExplorer::FolderNode(path); + tmp->setDisplayName(part); + parent->addFolderNodes(QList({ tmp })); + parent = tmp; + } + } + return parent; +} + +static bool sortNodesByPath(Node *a, Node *b) +{ + return a->filePath() < b->filePath(); +} + +void FolderNode::buildTree(QList &files) +{ + // Gather old list + QList oldFiles = recursiveFileNodes(); + Utils::sort(oldFiles, sortNodesByPath); + Utils::sort(files, sortNodesByPath); + + QList added; + QList deleted; + + ProjectExplorer::compareSortedLists(oldFiles, files, deleted, added, sortNodesByPath); + + qDeleteAll(ProjectExplorer::subtractSortedList(files, added, sortNodesByPath)); + + QHash > addedFolderMapping; + QHash > deletedFolderMapping; + + // add added nodes + foreach (ProjectExplorer::FileNode *fn, added) { + // Get relative path to rootNode + QString parentDir = fn->filePath().toFileInfo().absolutePath(); + ProjectExplorer::FolderNode *folder = findOrCreateSubFolderNode(parentDir); + addedFolderMapping[folder] << fn; + } + + for (auto i = addedFolderMapping.constBegin(); i != addedFolderMapping.constEnd(); ++i) + i.key()->addFileNodes(i.value()); + + // remove old file nodes and check whether folder nodes can be removed + foreach (ProjectExplorer::FileNode *fn, deleted) + deletedFolderMapping[fn->parentFolderNode()] << fn; + + for (auto i = deletedFolderMapping.constBegin(); i != deletedFolderMapping.constEnd(); ++i) { + ProjectExplorer::FolderNode *parent = i.key(); + parent->removeFileNodes(i.value()); + // Check for empty parent + while (parent->subFolderNodes().isEmpty() && parent->fileNodes().isEmpty()) { + ProjectExplorer::FolderNode *grandparent = parent->parentFolderNode(); + grandparent->removeFolderNodes(QList() << parent); + parent = grandparent; + if (parent == this) + break; + } + } +} + void FolderNode::accept(NodesVisitor *visitor) { visitor->visitFolderNode(this); @@ -707,7 +798,7 @@ ProjectNode *ProjectNode::asProjectNode() */ SessionNode::SessionNode() : - FolderNode(Utils::FileName::fromString(QLatin1String("session")), SessionNodeType) + FolderNode(Utils::FileName::fromString("session"), SessionNodeType) { } QList SessionNode::supportedActions(Node *node) const @@ -747,7 +838,7 @@ QList SessionNode::projectNodes() const QString SessionNode::addFileFilter() const { - return QLatin1String("*.c; *.cc; *.cpp; *.cp; *.cxx; *.c++; *.h; *.hh; *.hpp; *.hxx;"); + return QString::fromLatin1("*.c; *.cc; *.cpp; *.cp; *.cxx; *.c++; *.h; *.hh; *.hpp; *.hxx;"); } void SessionNode::addProjectNodes(const QList &projectNodes) diff --git a/src/plugins/projectexplorer/projectnodes.h b/src/plugins/projectexplorer/projectnodes.h index de7bf243898..a4b4ea47654 100644 --- a/src/plugins/projectexplorer/projectnodes.h +++ b/src/plugins/projectexplorer/projectnodes.h @@ -172,8 +172,11 @@ public: QString displayName() const override; QIcon icon() const; - QList fileNodes() const; - QList subFolderNodes() const; + QList fileNodes() const; + QList recursiveFileNodes() const; + QList subFolderNodes() const; + FolderNode *findOrCreateSubFolderNode(const QString &directory); + void buildTree(QList &files); virtual void accept(NodesVisitor *visitor); From 27a2ebb0d7cc8328e1383008e36ad0cc01ff0446 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 30 Sep 2016 21:10:32 +0200 Subject: [PATCH 03/61] Autotools: Use foldernode helpers to construct project tree Change-Id: Id0eaebb4035e8bd2fb29cc4f0317151ab00dcce6 Reviewed-by: hjk --- .../autotoolsproject.cpp | 148 ++---------------- .../autotoolsproject.h | 19 --- .../autotoolsprojectnode.cpp | 4 +- .../autotoolsprojectnode.h | 2 +- 4 files changed, 13 insertions(+), 160 deletions(-) diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp index 3470bf15d60..b66b37c1067 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp @@ -52,6 +52,7 @@ #include #include #include +#include #include #include @@ -74,7 +75,7 @@ AutotoolsProject::AutotoolsProject(AutotoolsManager *manager, const QString &fil setId(Constants::AUTOTOOLS_PROJECT_ID); setProjectManager(manager); setDocument(new AutotoolsProjectFile(fileName)); - setRootProjectNode(new AutotoolsProjectNode(projectFilePath())); + setRootProjectNode(new AutotoolsProjectNode(projectDirectory())); setProjectContext(Core::Context(Constants::PROJECT_CONTEXT)); setProjectLanguages(Core::Context(ProjectExplorer::Constants::LANG_CXX)); @@ -218,7 +219,14 @@ void AutotoolsProject::makefileParsingFinished() m_watchedFiles.append(configureAcFilePath); } - buildFileNodeTree(dir, files); + QList fileNodes = Utils::transform(files, [dir](const QString &f) { + const Utils::FileName path = Utils::FileName::fromString(dir.absoluteFilePath(f)); + return new FileNode(path, + (f == QLatin1String("Makefile.am") || f == QLatin1String("configure.ac")) + ? ProjectFileType : ResourceType, false); + }); + rootProjectNode()->buildTree(fileNodes); + updateCppCodeModel(); m_makefileParserThread->deleteLater(); @@ -239,142 +247,6 @@ QStringList AutotoolsProject::buildTargets() const return targets; } -void AutotoolsProject::buildFileNodeTree(const QDir &directory, - const QStringList &files) -{ - // Get all existing nodes and remember them in a hash table. - // This allows to reuse existing nodes and to remove obsolete - // nodes later. - QHash nodeHash; - foreach (Node *node, nodes(rootProjectNode())) - nodeHash.insert(node->filePath().toString(), node); - - // Add the sources to the filenode project tree. Sources - // inside the same directory are grouped into a folder-node. - const QString baseDir = directory.absolutePath(); - - QList fileNodes; - FolderNode *parentFolder = 0; - FolderNode *oldParentFolder = 0; - - foreach (const QString &file, files) { - if (file.endsWith(QLatin1String(".moc"))) - continue; - - QString subDir = baseDir + QLatin1Char('/') + file; - const int lastSlashPos = subDir.lastIndexOf(QLatin1Char('/')); - if (lastSlashPos != -1) - subDir.truncate(lastSlashPos); - - // Add folder nodes, that are not already available - oldParentFolder = parentFolder; - parentFolder = 0; - if (nodeHash.contains(subDir)) { - QTC_ASSERT(nodeHash[subDir]->nodeType() == FolderNodeType, return); - parentFolder = static_cast(nodeHash[subDir]); - } else { - parentFolder = insertFolderNode(QDir(subDir), nodeHash); - if (parentFolder == 0) { - // No node gets created for the root folder - parentFolder = rootProjectNode(); - } - } - QTC_ASSERT(parentFolder, return); - if (oldParentFolder && (oldParentFolder != parentFolder) && !fileNodes.isEmpty()) { - // AutotoolsProjectNode::addFileNodes() is a very expensive operation. It is - // important to collect as much file nodes of the same parent folder as - // possible before invoking it. - oldParentFolder->addFileNodes(fileNodes); - fileNodes.clear(); - } - - // Add file node - const QString filePath = directory.absoluteFilePath(file); - if (nodeHash.contains(filePath)) { - nodeHash.remove(filePath); - } else if (file == QLatin1String("Makefile.am") || file == QLatin1String("configure.ac")) { - fileNodes.append(new FileNode(Utils::FileName::fromString(filePath), - ProjectFileType, false)); - } else { - fileNodes.append(new FileNode(Utils::FileName::fromString(filePath), - ResourceType, false)); - } - } - - if (parentFolder && !fileNodes.isEmpty()) - parentFolder->addFileNodes(fileNodes); - - // Remove unused file nodes and empty folder nodes - QHash::const_iterator it = nodeHash.constBegin(); - while (it != nodeHash.constEnd()) { - if ((*it)->nodeType() == FileNodeType) { - FileNode *fileNode = static_cast(*it); - FolderNode* parent = fileNode->parentFolderNode(); - parent->removeFileNodes(QList() << fileNode); - - // Remove all empty parent folders - while (parent->subFolderNodes().isEmpty() && parent->fileNodes().isEmpty()) { - FolderNode *grandParent = parent->parentFolderNode(); - grandParent->removeFolderNodes(QList() << parent); - parent = grandParent; - if (parent == rootProjectNode()) - break; - } - } - ++it; - } -} - -FolderNode *AutotoolsProject::insertFolderNode(const QDir &nodeDir, QHash &nodes) -{ - const Utils::FileName nodePath = Utils::FileName::fromString(nodeDir.absolutePath()); - QFileInfo rootInfo = rootProjectNode()->filePath().toFileInfo(); - const Utils::FileName rootPath = Utils::FileName::fromString(rootInfo.absolutePath()); - - // Do not create a folder for the root node - if (rootPath == nodePath) - return 0; - - FolderNode *folder = new FolderNode(nodePath); - QDir dir(nodeDir); - folder->setDisplayName(dir.dirName()); - - // Get parent-folder. If it does not exist, create it recursively. - // Take care that the m_rootNode is considered as top folder. - FolderNode *parentFolder = rootProjectNode(); - if ((rootPath != folder->filePath()) && dir.cdUp()) { - const QString parentDir = dir.absolutePath(); - if (!nodes.contains(parentDir)) { - FolderNode *insertedFolder = insertFolderNode(parentDir, nodes); - if (insertedFolder != 0) - parentFolder = insertedFolder; - } else { - QTC_ASSERT(nodes[parentDir]->nodeType() == FolderNodeType, return 0); - parentFolder = static_cast(nodes[parentDir]); - } - } - - parentFolder->addFolderNodes(QList() << folder); - nodes.insert(nodePath.toString(), folder); - - return folder; -} - -QList AutotoolsProject::nodes(FolderNode *parent) const -{ - QList list; - QTC_ASSERT(parent != 0, return list); - - foreach (FolderNode *folder, parent->subFolderNodes()) { - list.append(nodes(folder)); - list.append(folder); - } - foreach (FileNode *file, parent->fileNodes()) - list.append(file); - - return list; -} - static QStringList filterIncludes(const QString &absSrc, const QString &absBuild, const QStringList &in) { diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.h b/src/plugins/autotoolsprojectmanager/autotoolsproject.h index e43ee163e0c..d98686a81f0 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsproject.h +++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.h @@ -102,25 +102,6 @@ private: */ void onFileChanged(const QString &file); - /** - * Creates folder-nodes and file-nodes for the project tree. - */ - void buildFileNodeTree(const QDir &directory, - const QStringList &files); - - /** - * Helper function for buildFileNodeTree(): Inserts a new folder-node for - * the directory \p nodeDir and inserts it into \p nodes. If no parent - * folder exists, it will be created recursively. - */ - ProjectExplorer::FolderNode *insertFolderNode(const QDir &nodeDir, - QHash &nodes); - - /** - * @return All nodes (including sub-folder- and file-nodes) for the given parent folder. - */ - QList nodes(ProjectExplorer::FolderNode *parent) const; - /** * This function is in charge of the code completion. */ diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp index cd4c613fa32..e98246ed520 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.cpp @@ -34,8 +34,8 @@ using namespace AutotoolsProjectManager; using namespace AutotoolsProjectManager::Internal; using namespace ProjectExplorer; -AutotoolsProjectNode::AutotoolsProjectNode(const Utils::FileName &projectFilePath) : - ProjectNode(projectFilePath) +AutotoolsProjectNode::AutotoolsProjectNode(const Utils::FileName &projectDirectory) : + ProjectNode(projectDirectory) { } bool AutotoolsProjectNode::showInSimpleTree() const diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.h b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.h index f09681d8b44..088e007a4a8 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.h +++ b/src/plugins/autotoolsprojectmanager/autotoolsprojectnode.h @@ -48,7 +48,7 @@ class AutotoolsProject; class AutotoolsProjectNode : public ProjectExplorer::ProjectNode { public: - AutotoolsProjectNode(const Utils::FileName &projectFilePath); + AutotoolsProjectNode(const Utils::FileName &projectDirectory); bool showInSimpleTree() const override; QList supportedActions(Node *node) const override; From e2fef2d37b8ef575e09fa69060ac2eba71f40f63 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 30 Sep 2016 22:52:12 +0200 Subject: [PATCH 04/61] Nim: Use helpers from FolderNode Clean up a bit. Change-Id: Icff71c84ab23dba96b572cad00362bffcbec3270 Reviewed-by: hjk --- .../project/nimbuildconfigurationfactory.cpp | 4 +- src/plugins/nim/project/nimproject.cpp | 123 +++--------------- src/plugins/nim/project/nimproject.h | 14 -- 3 files changed, 22 insertions(+), 119 deletions(-) diff --git a/src/plugins/nim/project/nimbuildconfigurationfactory.cpp b/src/plugins/nim/project/nimbuildconfigurationfactory.cpp index 6e67d602c37..1d2a548d15f 100644 --- a/src/plugins/nim/project/nimbuildconfigurationfactory.cpp +++ b/src/plugins/nim/project/nimbuildconfigurationfactory.cpp @@ -61,7 +61,7 @@ QList NimBuildConfigurationFactory::availableBuilds(const Target *p QTC_ASSERT(project, return {}); // Create the build info - BuildInfo *info = createBuildInfo(parent->kit(), project->projectFilePath(), + BuildInfo *info = createBuildInfo(parent->kit(), project->projectFilePath().toString(), BuildConfiguration::Debug); info->displayName.clear(); // ask for a name @@ -87,7 +87,7 @@ BuildConfiguration *NimBuildConfigurationFactory::create(Target *parent, const B result->setDisplayName(info->displayName); result->setDefaultDisplayName(info->displayName); result->setBuildDirectory(defaultBuildDirectory(parent->kit(), - project->projectFilePath(), + project->projectFilePath().toString(), info->displayName, info->buildType)); diff --git a/src/plugins/nim/project/nimproject.cpp b/src/plugins/nim/project/nimproject.cpp index 7f615b720de..2f57238ef61 100644 --- a/src/plugins/nim/project/nimproject.cpp +++ b/src/plugins/nim/project/nimproject.cpp @@ -36,6 +36,8 @@ #include #include +#include + #include #include @@ -47,16 +49,15 @@ namespace Nim { const int MIN_TIME_BETWEEN_PROJECT_SCANS = 4500; NimProject::NimProject(NimProjectManager *projectManager, const QString &fileName) - : m_projectManager(projectManager) - , m_document(new TextEditor::TextDocument) { - setDocument(m_document); setId(Constants::C_NIMPROJECT_ID); - m_document->setFilePath(FileName::fromString(fileName)); - m_projectFile = QFileInfo(fileName); - m_projectDir = m_projectFile.dir(); - m_rootNode = new NimProjectNode(FileName::fromString(m_projectDir.absolutePath())); - m_rootNode->setDisplayName(m_projectDir.dirName()); + setProjectManager(projectManager); + setDocument(new TextEditor::TextDocument); + document()->setFilePath(FileName::fromString(fileName)); + QFileInfo fi = QFileInfo(fileName); + QDir dir = fi.dir(); + setRootProjectNode(new NimProjectNode(FileName::fromString(dir.absolutePath()))); + rootProjectNode()->setDisplayName(dir.dirName()); m_projectScanTimer.setSingleShot(true); connect(&m_projectScanTimer, &QTimer::timeout, this, &NimProject::populateProject); @@ -68,17 +69,7 @@ NimProject::NimProject(NimProjectManager *projectManager, const QString &fileNam QString NimProject::displayName() const { - return m_projectDir.dirName(); -} - -IProjectManager *NimProject::projectManager() const -{ - return m_projectManager; -} - -ProjectNode *NimProject::rootProjectNode() const -{ - return m_rootNode; + return rootProjectNode()->displayName(); } QStringList NimProject::files(FilesMode) const @@ -91,16 +82,6 @@ bool NimProject::needsConfiguration() const return targets().empty(); } -QString NimProject::projectDirectoryPath() const -{ - return m_projectDir.absolutePath(); -} - -QString NimProject::projectFilePath() const -{ - return m_projectFile.absoluteFilePath(); -} - void NimProject::scheduleProjectScan() { auto elapsedTime = m_lastProjectScan.elapsed(); @@ -118,19 +99,19 @@ void NimProject::populateProject() { m_lastProjectScan.start(); - QSet oldFiles(m_files); + QSet oldFiles = m_files; m_files.clear(); + recursiveScanDirectory(QDir(projectDirectory().toString()), m_files); - recursiveScanDirectory(m_projectDir, m_files); + if (m_files == oldFiles) + return; - QSet removedFiles = oldFiles - m_files; - QSet addedFiles = m_files - oldFiles; + QList fileNodes = Utils::transform(m_files.toList(), [](const QString &f) { + return new FileNode(FileName::fromString(f), SourceType, false); + }); + rootProjectNode()->buildTree(fileNodes); - removeNodes(removedFiles); - addNodes(addedFiles); - - if (removedFiles.size() || addedFiles.size()) - emit fileListChanged(); + emit fileListChanged(); } void NimProject::recursiveScanDirectory(const QDir &dir, QSet &container) @@ -149,70 +130,6 @@ void NimProject::recursiveScanDirectory(const QDir &dir, QSet &containe m_fsWatcher.addPath(dir.absolutePath()); } -void NimProject::addNodes(const QSet &nodes) -{ - QStringList path; - foreach (const QString &node, nodes) { - path = m_projectDir.relativeFilePath(node).split(QDir::separator()); - path.pop_back(); - FolderNode *folder = findFolderFor(path); - auto fileNode = new FileNode(FileName::fromString(node), SourceType, false); - folder->addFileNodes({fileNode}); - } -} - -void NimProject::removeNodes(const QSet &nodes) -{ - QStringList path; - foreach (const QString &node, nodes) { - path = m_projectDir.relativeFilePath(node).split(QDir::separator()); - path.pop_back(); - FolderNode *folder = findFolderFor(path); - - for (FileNode *fileNode : folder->fileNodes()) { - if (fileNode->filePath().toString() == node) { - folder->removeFileNodes({fileNode}); - break; - } - } - } -} - -FolderNode *NimProject::findFolderFor(const QStringList &path) -{ - FolderNode *folder = m_rootNode; - - QString currentPath = m_projectDir.absolutePath(); - - foreach (const QString &part, path) { - // Create relative path - if (!currentPath.isEmpty()) - currentPath += QDir::separator(); - currentPath += part; - - // Find the child with the given name - QList subFolderNodes = folder->subFolderNodes(); - auto predicate = [&part] (const FolderNode * f) { - return f->displayName() == part; - }; - auto it = std::find_if(subFolderNodes.begin(), subFolderNodes.end(), predicate); - - if (it != subFolderNodes.end()) { - folder = *it; - continue; - } - - // Folder not found. Add it - QString newFolderPath = QDir::cleanPath(currentPath + QDir::separator() + part); - auto newFolder = new FolderNode(FileName::fromString(newFolderPath), - FolderNodeType, - part); - folder->addFolderNodes({newFolder}); - folder = newFolder; - } - return folder; -} - bool NimProject::supportsKit(Kit *k, QString *) const { return k->isValid(); @@ -223,7 +140,7 @@ FileNameList NimProject::nimFiles() const FileNameList result; QQueue folders; - folders.enqueue(m_rootNode); + folders.enqueue(rootProjectNode()); while (!folders.isEmpty()) { FolderNode *folder = folders.takeFirst(); diff --git a/src/plugins/nim/project/nimproject.h b/src/plugins/nim/project/nimproject.h index 60688db0627..7c308bc17c1 100644 --- a/src/plugins/nim/project/nimproject.h +++ b/src/plugins/nim/project/nimproject.h @@ -47,12 +47,8 @@ public: NimProject(NimProjectManager *projectManager, const QString &fileName); QString displayName() const override; - ProjectExplorer::IProjectManager *projectManager() const override; - ProjectExplorer::ProjectNode *rootProjectNode() const override; QStringList files(FilesMode) const override; bool needsConfiguration() const override; - QString projectDirectoryPath() const; - QString projectFilePath() const; bool supportsKit(ProjectExplorer::Kit *k, QString *errorMessage) const override; Utils::FileNameList nimFiles() const; @@ -60,17 +56,7 @@ private: void scheduleProjectScan(); void populateProject(); void recursiveScanDirectory(const QDir &dir, QSet &container); - void addNodes(const QSet &nodes); - void removeNodes(const QSet &nodes); - ProjectExplorer::FolderNode *findFolderFor(const QStringList &projectDirectoryPath); - - NimProjectManager *m_projectManager; - TextEditor::TextDocument *m_document; - NimProjectNode *m_rootNode; - - QDir m_projectDir; - QFileInfo m_projectFile; QSet m_files; QFileSystemWatcher m_fsWatcher; From 2e45906b423c157344692a7989a9900198e54b45 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 30 Sep 2016 23:13:45 +0200 Subject: [PATCH 05/61] Python: Use helpers in FolderNode to set up project tree Change-Id: If0f25b4b16e8fbdcb6c769de8c625bd256b4e465 Reviewed-by: hjk --- .../pythoneditor/pythoneditorplugin.cpp | 149 +----------------- 1 file changed, 8 insertions(+), 141 deletions(-) diff --git a/src/plugins/pythoneditor/pythoneditorplugin.cpp b/src/plugins/pythoneditor/pythoneditorplugin.cpp index 84f8a40918f..9a649b420b6 100644 --- a/src/plugins/pythoneditor/pythoneditorplugin.cpp +++ b/src/plugins/pythoneditor/pythoneditorplugin.cpp @@ -50,6 +50,7 @@ #include +#include #include #include #include @@ -179,13 +180,6 @@ public: QString addFileFilter() const override; bool renameFile(const QString &filePath, const QString &newFilePath) override; - void refresh(QSet oldFileList = QSet()); - -private: - typedef QHash FolderByName; - FolderNode *createFolderByName(const QStringList &components, int end); - FolderNode *findFolderByName(const QStringList &components, int end); - void removeEmptySubFolders(FolderNode *gparent, FolderNode *parent); private: PythonProject *m_project; @@ -615,18 +609,16 @@ private: void PythonProject::refresh() { - rootProjectNode()->removeFileNodes(rootProjectNode()->fileNodes()); parseProject(); QDir baseDir(projectDirectory().toString()); - QList fileNodes; - foreach (const QString &file, m_files) { - QString displayName = baseDir.relativeFilePath(file); - fileNodes.append(new PythonFileNode(FileName::fromString(file), displayName)); - } - - rootProjectNode()->addFileNodes(fileNodes); + QList fileNodes + = Utils::transform(m_files, [baseDir](const QString &f) -> ProjectExplorer::FileNode* { + const QString displayName = baseDir.relativeFilePath(f); + return new PythonFileNode(FileName::fromString(f), displayName); + }); + rootProjectNode()->buildTree(fileNodes); } /** @@ -719,7 +711,7 @@ Project::RestoreResult PythonProject::fromMap(const QVariantMap &map, QString *e } PythonProjectNode::PythonProjectNode(PythonProject *project) - : ProjectNode(project->projectFilePath()) + : ProjectNode(project->projectDirectory()) , m_project(project) { setDisplayName(project->projectFilePath().toFileInfo().completeBaseName()); @@ -749,131 +741,6 @@ QHash sortFilesIntoPaths(const QString &base, const QSet oldFileList) -{ - typedef QHash FilesInPathHash; - typedef FilesInPathHash::ConstIterator FilesInPathHashConstIt; - - // Do those separately - oldFileList.remove(m_project->projectFilePath().toString()); - - QSet newFileList = m_project->files().toSet(); - newFileList.remove(m_project->projectFilePath().toString()); - - QSet removed = oldFileList; - removed.subtract(newFileList); - QSet added = newFileList; - added.subtract(oldFileList); - - QString baseDir = filePath().toFileInfo().absolutePath(); - FilesInPathHash filesInPaths = sortFilesIntoPaths(baseDir, added); - - FilesInPathHashConstIt cend = filesInPaths.constEnd(); - for (FilesInPathHashConstIt it = filesInPaths.constBegin(); it != cend; ++it) { - const QString &filePath = it.key(); - QStringList components; - if (!filePath.isEmpty()) - components = filePath.split('/'); - FolderNode *folder = findFolderByName(components, components.size()); - if (!folder) - folder = createFolderByName(components, components.size()); - - QList fileNodes; - foreach (const QString &file, it.value()) { - FileType fileType = SourceType; // ### FIXME - if (file.endsWith(".qrc")) - fileType = ResourceType; - FileNode *fileNode = new FileNode(FileName::fromString(file), - fileType, /*generated = */ false); - fileNodes.append(fileNode); - } - - folder->addFileNodes(fileNodes); - } - - filesInPaths = sortFilesIntoPaths(baseDir, removed); - cend = filesInPaths.constEnd(); - for (FilesInPathHashConstIt it = filesInPaths.constBegin(); it != cend; ++it) { - const QString &filePath = it.key(); - QStringList components; - if (!filePath.isEmpty()) - components = filePath.split('/'); - FolderNode *folder = findFolderByName(components, components.size()); - - QList fileNodes; - foreach (const QString &file, it.value()) { - foreach (FileNode *fn, folder->fileNodes()) { - if (fn->filePath().toString() == file) - fileNodes.append(fn); - } - } - - folder->removeFileNodes(fileNodes); - } - - foreach (FolderNode *fn, subFolderNodes()) - removeEmptySubFolders(this, fn); - -} - -void PythonProjectNode::removeEmptySubFolders(FolderNode *gparent, FolderNode *parent) -{ - foreach (FolderNode *fn, parent->subFolderNodes()) - removeEmptySubFolders(parent, fn); - - if (parent->subFolderNodes().isEmpty() && parent->fileNodes().isEmpty()) - gparent->removeFolderNodes(QList() << parent); -} - -FolderNode *PythonProjectNode::createFolderByName(const QStringList &components, int end) -{ - if (end == 0) - return this; - - QString folderName; - for (int i = 0; i < end; ++i) { - folderName.append(components.at(i)); - folderName += '/'; - } - - const QString component = components.at(end - 1); - - const FileName folderPath = filePath().parentDir().appendPath(folderName); - FolderNode *folder = new FolderNode(folderPath); - folder->setDisplayName(component); - - FolderNode *parent = findFolderByName(components, end - 1); - if (!parent) - parent = createFolderByName(components, end - 1); - parent->addFolderNodes(QList() << folder); - - return folder; -} - -FolderNode *PythonProjectNode::findFolderByName(const QStringList &components, int end) -{ - if (end == 0) - return this; - - QString folderName; - for (int i = 0; i < end; ++i) { - folderName.append(components.at(i)); - folderName += '/'; - } - - FolderNode *parent = findFolderByName(components, end - 1); - - if (!parent) - return 0; - - const QString baseDir = filePath().toFileInfo().path(); - foreach (FolderNode *fn, parent->subFolderNodes()) { - if (fn->filePath().toString() == baseDir + '/' + folderName) - return fn; - } - return 0; -} - bool PythonProjectNode::showInSimpleTree() const { return true; From 7f0b371c1160da9e6b5a3098ffe666a4dc0db25d Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Wed, 5 Oct 2016 08:24:46 +0300 Subject: [PATCH 06/61] Git: Fix initially disabled OK button in Push to Gerrit Change-Id: I7223ef113781eb9adae59dba58036c19a96a11b0 Reviewed-by: Tobias Hunger --- src/plugins/git/gerrit/gerritpushdialog.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/git/gerrit/gerritpushdialog.cpp b/src/plugins/git/gerrit/gerritpushdialog.cpp index 88893d5bdd1..61688746bfc 100644 --- a/src/plugins/git/gerrit/gerritpushdialog.cpp +++ b/src/plugins/git/gerrit/gerritpushdialog.cpp @@ -257,6 +257,7 @@ void GerritPushDialog::setRemoteBranches(bool includeOld) m_ui->targetBranchComboBox->addItem(tr("... Include older branches ..."), 1); setChangeRange(); m_ui->targetBranchComboBox->blockSignals(blocked); + validate(); } void GerritPushDialog::updateCommits(int index) From e9c4d4a56b8266fad336b85ea191840aa38756b6 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 4 Oct 2016 17:05:37 +0200 Subject: [PATCH 07/61] Debugger: Make icons in breakpoint view smaller again Change-Id: I05e68f5ab7004f063ba8577a78bad23a51a06330 Reviewed-by: Alessandro Portale --- src/plugins/debugger/debuggerplugin.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 2e4a0133686..dd557524873 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -1332,7 +1332,8 @@ bool DebuggerPluginPrivate::initialize(const QStringList &arguments, m_logWindow->setObjectName(QLatin1String(DOCKWIDGET_OUTPUT)); m_breakHandler = new BreakHandler; - m_breakView = new BaseTreeView;; + m_breakView = new BaseTreeView; + m_breakView->setIconSize(QSize(10, 10)); m_breakView->setWindowIcon(Icons::BREAKPOINTS.icon()); m_breakView->setSelectionMode(QAbstractItemView::ExtendedSelection); connect(action(UseAddressInBreakpointsView), &QAction::toggled, From b9a8ed31ae2bbd8d7ccb4b796903cb7677724230 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 5 Oct 2016 08:56:22 +0200 Subject: [PATCH 08/61] QMakeProjectManager: Remove BaseQmakeProjectWizardDialog::setupProject() This function was not used anymore. Change-Id: Ia25ac2ba098b0db18fa61c29c79ba30ac9e40725 Reviewed-by: Tobias Hunger --- src/plugins/qmakeprojectmanager/wizards/qtwizard.cpp | 7 ------- src/plugins/qmakeprojectmanager/wizards/qtwizard.h | 1 - 2 files changed, 8 deletions(-) diff --git a/src/plugins/qmakeprojectmanager/wizards/qtwizard.cpp b/src/plugins/qmakeprojectmanager/wizards/qtwizard.cpp index efac0c05b7e..2d11f518084 100644 --- a/src/plugins/qmakeprojectmanager/wizards/qtwizard.cpp +++ b/src/plugins/qmakeprojectmanager/wizards/qtwizard.cpp @@ -266,13 +266,6 @@ bool BaseQmakeProjectWizardDialog::writeUserFile(const QString &proFileName) con return success; } -bool BaseQmakeProjectWizardDialog::setupProject(QmakeProject *project) const -{ - if (!m_targetSetupPage) - return true; - return m_targetSetupPage->setupProject(project); -} - bool BaseQmakeProjectWizardDialog::isQtPlatformSelected(Core::Id platform) const { QList selectedKitList = selectedKits(); diff --git a/src/plugins/qmakeprojectmanager/wizards/qtwizard.h b/src/plugins/qmakeprojectmanager/wizards/qtwizard.h index 57c8a8a3b3a..a6469cf7bc6 100644 --- a/src/plugins/qmakeprojectmanager/wizards/qtwizard.h +++ b/src/plugins/qmakeprojectmanager/wizards/qtwizard.h @@ -124,7 +124,6 @@ public: void setDeselectedModules(const QString &); bool writeUserFile(const QString &proFileName) const; - bool setupProject(QmakeProject *project) const; bool isQtPlatformSelected(Core::Id platform) const; QList selectedKits() const; From 33c732c60c1628a5445084fce433b10a84bffc93 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 5 Oct 2016 08:31:16 +0200 Subject: [PATCH 09/61] ProjectWindow: Fix crash in TargetSetupPage Move ownership of the ProjectImporter to the Project. Task-number: QTCREATORBUG-16744 Change-Id: I7fc217ce8058287c5435b259bdc5300a926f8098 Reviewed-by: Nikolai Kosjar Reviewed-by: Tobias Hunger --- src/plugins/projectexplorer/project.cpp | 2 +- src/plugins/projectexplorer/project.h | 2 +- .../projectexplorer/projectexplorer.cpp | 2 +- .../projectexplorer/targetsettingspanel.cpp | 25 ++++++++++--------- .../projectexplorer/targetsetuppage.cpp | 2 +- .../qmakeprojectmanager/qmakeproject.cpp | 8 ++++-- .../qmakeprojectmanager/qmakeproject.h | 3 ++- 7 files changed, 25 insertions(+), 19 deletions(-) diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index 9805e8c4c1d..b48f8d36dd6 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -714,7 +714,7 @@ Utils::MacroExpander *Project::macroExpander() const return &d->m_macroExpander; } -ProjectImporter *Project::createProjectImporter() const +ProjectImporter *Project::projectImporter() const { return nullptr; } diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index 78e8d9db68d..f7dbc037c75 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -130,7 +130,7 @@ public: virtual void configureAsExampleProject(const QSet &platforms); virtual bool requiresTargetPanel() const; - virtual ProjectImporter *createProjectImporter() const; + virtual ProjectImporter *projectImporter() const; KitMatcher requiredKitMatcher() const; void setRequiredKitMatcher(const KitMatcher &matcher); diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index bb9d466d84f..2820174d616 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -388,6 +388,7 @@ ProjectExplorerPlugin::ProjectExplorerPlugin() ProjectExplorerPlugin::~ProjectExplorerPlugin() { + delete dd->m_proWindow; // Needs access to the kit manager. JsonWizardFactory::destroyAllFactories(); // Force sequence of deletion: @@ -513,7 +514,6 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er JsonWizardFactory::registerGeneratorFactory(new ScannerGeneratorFactory); dd->m_proWindow = new ProjectWindow; - addAutoReleasedObject(dd->m_proWindow); Context projecTreeContext(Constants::C_PROJECT_TREE); diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp index a7e827ed529..0e14218fb79 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.cpp +++ b/src/plugins/projectexplorer/targetsettingspanel.cpp @@ -132,7 +132,6 @@ TargetSetupPageWrapper::TargetSetupPageWrapper(Project *project) : m_project(project) { m_targetSetupPage = new TargetSetupPage(this); - m_targetSetupPage->setProjectImporter(project->createProjectImporter()); m_targetSetupPage->setUseScrollArea(false); m_targetSetupPage->setProjectPath(project->projectFilePath().toString()); m_targetSetupPage->setRequiredKitMatcher(project->requiredKitMatcher()); @@ -209,7 +208,7 @@ class TargetGroupItemPrivate : public QObject public: TargetGroupItemPrivate(TargetGroupItem *q, Project *project); - ~TargetGroupItemPrivate() { /*delete m_importer;*/ } + ~TargetGroupItemPrivate(); void handleRemovedKit(Kit *kit); void handleAddedKit(Kit *kit); @@ -224,8 +223,7 @@ public: TargetGroupItem *q; QString m_displayName; - QPointer m_project; - ProjectImporter *m_importer; + Project *m_project; QPointer m_noKitLabel; QPointer m_configurePage; @@ -281,12 +279,13 @@ void TargetGroupItemPrivate::ensureWidget() void TargetGroupItemPrivate::importTarget(const Utils::FileName &path) { - if (!m_importer) + ProjectImporter *importer = m_project->projectImporter(); + if (!importer) return; Target *target = nullptr; BuildConfiguration *bc = nullptr; - QList toImport = m_importer->import(path, false); + QList toImport = importer->import(path, false); foreach (BuildInfo *info, toImport) { target = m_project->target(info->kitId); if (!target) { @@ -519,7 +518,7 @@ public: bool isEnabled() const { return target() != 0; } public: - Project *m_project; // Not owned. + QPointer m_project; // Not owned. Id m_kitId; int m_currentChild = 1; // Use run page by default. }; @@ -706,13 +705,10 @@ TargetGroupItem::~TargetGroupItem() delete d; } -TargetGroupItemPrivate::TargetGroupItemPrivate(TargetGroupItem *q, - Project *project) +TargetGroupItemPrivate::TargetGroupItemPrivate(TargetGroupItem *q, Project *project) : q(q), m_project(project) { - m_importer = project->createProjectImporter(); - - if (m_importer) { + if (project->projectImporter()) { auto importAction = new QAction(tr("Import existing build..."), 0); QObject::connect(importAction, &QAction::triggered, [this] { QString dir = m_project->projectDirectory().toString(); @@ -730,6 +726,11 @@ TargetGroupItemPrivate::TargetGroupItemPrivate(TargetGroupItem *q, rebuildContents(); } +TargetGroupItemPrivate::~TargetGroupItemPrivate() +{ + disconnect(); +} + QVariant TargetGroupItem::data(int column, int role) const { if (role == Qt::DisplayRole) diff --git a/src/plugins/projectexplorer/targetsetuppage.cpp b/src/plugins/projectexplorer/targetsetuppage.cpp index 9ee60436c57..fb9b5e3fd37 100644 --- a/src/plugins/projectexplorer/targetsetuppage.cpp +++ b/src/plugins/projectexplorer/targetsetuppage.cpp @@ -218,9 +218,9 @@ void TargetSetupPage::setPreferredKitMatcher(const KitMatcher &matcher) TargetSetupPage::~TargetSetupPage() { + disconnect(); reset(); delete m_ui; - delete m_importer; } bool TargetSetupPage::isKitSelected(Core::Id id) const diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index b896fc0a958..530250a05aa 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -298,6 +298,8 @@ QmakeProject::QmakeProject(QmakeManager *manager, const QString &fileName) : QmakeProject::~QmakeProject() { + delete m_projectImporter; + m_projectImporter = nullptr; m_codeModelFuture.cancel(); m_asyncUpdateState = ShuttingDown; @@ -1613,9 +1615,11 @@ void QmakeProject::emitBuildDirectoryInitialized() emit buildDirectoryInitialized(); } -ProjectImporter *QmakeProject::createProjectImporter() const +ProjectImporter *QmakeProject::projectImporter() const { - return new QmakeProjectImporter(projectFilePath().toString()); + if (!m_projectImporter) + m_projectImporter = new QmakeProjectImporter(projectFilePath().toString()); + return m_projectImporter; } QmakeProject::AsyncUpdateState QmakeProject::asyncUpdateState() const diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.h b/src/plugins/qmakeprojectmanager/qmakeproject.h index eb3e4328ec0..2816b6e5714 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.h +++ b/src/plugins/qmakeprojectmanager/qmakeproject.h @@ -129,7 +129,7 @@ public: void emitBuildDirectoryInitialized(); static void proFileParseError(const QString &errorMessage); - ProjectExplorer::ProjectImporter *createProjectImporter() const override; + ProjectExplorer::ProjectImporter *projectImporter() const override; enum AsyncUpdateState { Base, AsyncFullUpdatePending, AsyncPartialUpdatePending, AsyncUpdateInProgress, ShuttingDown }; AsyncUpdateState asyncUpdateState() const; @@ -203,6 +203,7 @@ private: Internal::CentralizedFolderWatcher *m_centralizedFolderWatcher = nullptr; ProjectExplorer::Target *m_activeTarget = nullptr; + mutable ProjectExplorer::ProjectImporter *m_projectImporter = nullptr; friend class Internal::QmakeProjectFile; friend class Internal::QmakeProjectConfigWidget; From d4238ed1c460aec1d2bb1b23ae77e0cb21b390de Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Wed, 5 Oct 2016 17:42:50 +0200 Subject: [PATCH 10/61] ScxmlEditor: Inline the Navigator ui creation Change-Id: I53cee0abd948cb2739815d0d7e13330fe22a900e Reviewed-by: Alessandro Portale --- src/plugins/scxmleditor/common/common.pri | 1 - src/plugins/scxmleditor/common/navigator.cpp | 64 ++++++--- src/plugins/scxmleditor/common/navigator.h | 13 +- src/plugins/scxmleditor/common/navigator.ui | 137 ------------------- src/plugins/scxmleditor/scxmleditor.qbs | 1 - 5 files changed, 58 insertions(+), 158 deletions(-) delete mode 100644 src/plugins/scxmleditor/common/navigator.ui diff --git a/src/plugins/scxmleditor/common/common.pri b/src/plugins/scxmleditor/common/common.pri index ccdb8f96e0d..c7febda9939 100644 --- a/src/plugins/scxmleditor/common/common.pri +++ b/src/plugins/scxmleditor/common/common.pri @@ -61,7 +61,6 @@ FORMS += \ $$PWD/colorsettings.ui \ $$PWD/colorthemedialog.ui \ $$PWD/magnifier.ui \ - $$PWD/navigator.ui \ $$PWD/navigatorslider.ui \ $$PWD/search.ui \ $$PWD/shapegroupwidget.ui \ diff --git a/src/plugins/scxmleditor/common/navigator.cpp b/src/plugins/scxmleditor/common/navigator.cpp index bc48b02a3b8..b907021434e 100644 --- a/src/plugins/scxmleditor/common/navigator.cpp +++ b/src/plugins/scxmleditor/common/navigator.cpp @@ -26,49 +26,51 @@ #include "navigator.h" #include "graphicsscene.h" #include "graphicsview.h" +#include "navigatorgraphicsview.h" +#include "navigatorslider.h" #include "sizegrip.h" #include +#include #include +#include +#include using namespace ScxmlEditor::Common; Navigator::Navigator(QWidget *parent) : MovableFrame(parent) { - m_ui.setupUi(this); - m_ui.m_closeButton->setIcon(Utils::Icons::CLOSE_TOOLBAR.icon()); - connect(m_ui.m_closeButton, &QToolButton::clicked, this, &Navigator::hideFrame); - m_sizeGrip = new SizeGrip(this); - m_sizeGrip->setGeometry(0, 0, 18, 18); + createUi(); + connect(m_closeButton, &QToolButton::clicked, this, &Navigator::hideFrame); } void Navigator::setCurrentView(GraphicsView *view) { if (m_currentView) { - m_currentView->disconnect(m_ui.m_navigatorView); - m_ui.m_navigatorView->disconnect(m_currentView); - m_currentView->disconnect(m_ui.m_navigatorSlider); - m_ui.m_navigatorSlider->disconnect(m_currentView); + m_currentView->disconnect(m_navigatorView); + m_navigatorView->disconnect(m_currentView); + m_currentView->disconnect(m_navigatorSlider); + m_navigatorSlider->disconnect(m_currentView); } m_currentView = view; if (m_currentView) { - connect(m_currentView.data(), &GraphicsView::viewChanged, m_ui.m_navigatorView, &NavigatorGraphicsView::setMainViewPolygon); - connect(m_currentView.data(), &GraphicsView::zoomPercentChanged, m_ui.m_navigatorSlider, &NavigatorSlider::setSliderValue); + connect(m_currentView.data(), &GraphicsView::viewChanged, m_navigatorView, &NavigatorGraphicsView::setMainViewPolygon); + connect(m_currentView.data(), &GraphicsView::zoomPercentChanged, m_navigatorSlider, &NavigatorSlider::setSliderValue); - connect(m_ui.m_navigatorSlider, &NavigatorSlider::valueChanged, m_currentView.data(), &GraphicsView::zoomTo); - connect(m_ui.m_navigatorView, &NavigatorGraphicsView::moveMainViewTo, m_currentView.data(), &GraphicsView::moveToPoint); - connect(m_ui.m_navigatorView, &NavigatorGraphicsView::zoomIn, m_currentView.data(), &GraphicsView::zoomIn); - connect(m_ui.m_navigatorView, &NavigatorGraphicsView::zoomOut, m_currentView.data(), &GraphicsView::zoomOut); + connect(m_navigatorSlider, &NavigatorSlider::valueChanged, m_currentView.data(), &GraphicsView::zoomTo); + connect(m_navigatorView, &NavigatorGraphicsView::moveMainViewTo, m_currentView.data(), &GraphicsView::moveToPoint); + connect(m_navigatorView, &NavigatorGraphicsView::zoomIn, m_currentView.data(), &GraphicsView::zoomIn); + connect(m_navigatorView, &NavigatorGraphicsView::zoomOut, m_currentView.data(), &GraphicsView::zoomOut); } } void Navigator::setCurrentScene(ScxmlEditor::PluginInterface::GraphicsScene *scene) { - m_ui.m_navigatorView->setGraphicsScene(scene); + m_navigatorView->setGraphicsScene(scene); } void Navigator::resizeEvent(QResizeEvent *e) @@ -76,3 +78,33 @@ void Navigator::resizeEvent(QResizeEvent *e) MovableFrame::resizeEvent(e); m_sizeGrip->move(e->size().width() - m_sizeGrip->width(), e->size().height() - m_sizeGrip->height()); } + +void Navigator::createUi() +{ + auto titleLabel = new QLabel(tr("Navigator")); + titleLabel->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); + + m_closeButton = new QToolButton; + m_closeButton->setIcon(Utils::Icons::CLOSE_TOOLBAR.icon()); + + auto titleToolBar = new QToolBar; + titleToolBar->addWidget(titleLabel); + titleToolBar->addWidget(m_closeButton); + + m_navigatorView = new NavigatorGraphicsView; + m_navigatorSlider = new NavigatorSlider; + + setLayout(new QVBoxLayout); + layout()->setSpacing(0); + layout()->setMargin(0); + layout()->addWidget(titleToolBar); + layout()->addWidget(m_navigatorView); + layout()->addWidget(m_navigatorSlider); + + m_sizeGrip = new SizeGrip(this); + m_sizeGrip->setGeometry(0, 0, 18, 18); + + setAutoFillBackground(true); + setMinimumSize(300, 200); + setGeometry(x(), y(), 400, 300); +} diff --git a/src/plugins/scxmleditor/common/navigator.h b/src/plugins/scxmleditor/common/navigator.h index 380847d315f..7407ec36a6f 100644 --- a/src/plugins/scxmleditor/common/navigator.h +++ b/src/plugins/scxmleditor/common/navigator.h @@ -26,15 +26,18 @@ #pragma once #include "movableframe.h" -#include "ui_navigator.h" #include +QT_FORWARD_DECLARE_CLASS(QToolButton) + namespace ScxmlEditor { namespace PluginInterface { class GraphicsScene; } namespace Common { +class NavigatorGraphicsView; +class NavigatorSlider; class SizeGrip; class GraphicsView; @@ -55,9 +58,13 @@ protected: void resizeEvent(QResizeEvent *e) override; private: - SizeGrip *m_sizeGrip; + void createUi(); + QPointer m_currentView; - Ui::Navigator m_ui; + NavigatorGraphicsView *m_navigatorView = nullptr; + NavigatorSlider *m_navigatorSlider = nullptr; + QToolButton *m_closeButton = nullptr; + SizeGrip *m_sizeGrip; }; } // namespace Common diff --git a/src/plugins/scxmleditor/common/navigator.ui b/src/plugins/scxmleditor/common/navigator.ui deleted file mode 100644 index fc0d24cd9b6..00000000000 --- a/src/plugins/scxmleditor/common/navigator.ui +++ /dev/null @@ -1,137 +0,0 @@ - - - ScxmlEditor::Common::Navigator - - - - 0 - 0 - 300 - 230 - - - - Frame - - - - - - QFrame::NoFrame - - - QFrame::Sunken - - - 0 - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - Navigator - - - 5 - - - - - - - - 30 - 30 - - - - true - - - - - - - - - - QFrame::NoFrame - - - QFrame::Plain - - - - - - - QFrame::NoFrame - - - QFrame::Plain - - - - - - - - ScxmlEditor::Common::NavigatorGraphicsView - QGraphicsView -
navigatorgraphicsview.h
-
- - ScxmlEditor::Common::NavigatorSlider - QFrame -
navigatorslider.h
- 1 -
-
- - -
diff --git a/src/plugins/scxmleditor/scxmleditor.qbs b/src/plugins/scxmleditor/scxmleditor.qbs index 1cef03e2c23..58d4db5afe9 100644 --- a/src/plugins/scxmleditor/scxmleditor.qbs +++ b/src/plugins/scxmleditor/scxmleditor.qbs @@ -72,7 +72,6 @@ QtcPlugin { "colorpicker.ui", "colorsettings.ui", "colorthemedialog.ui", - "navigator.ui", "navigatorslider.ui", "search.ui", "shapegroupwidget.ui", From 1fc01ac1c722d79e1c86e7acd0862532fdacf63e Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Wed, 5 Oct 2016 13:55:34 +0200 Subject: [PATCH 11/61] ScxmlEditor: Inline the ShapeGroupWidget ui creation Change-Id: I519716e73a5d2c0c50642d65f8312e671a0e1595 Reviewed-by: Alessandro Portale --- src/plugins/scxmleditor/common/common.pri | 1 - .../scxmleditor/common/shapegroupwidget.cpp | 46 +++-- .../scxmleditor/common/shapegroupwidget.h | 11 +- .../scxmleditor/common/shapegroupwidget.ui | 157 ------------------ src/plugins/scxmleditor/scxmleditor.qbs | 1 - 5 files changed, 41 insertions(+), 175 deletions(-) delete mode 100644 src/plugins/scxmleditor/common/shapegroupwidget.ui diff --git a/src/plugins/scxmleditor/common/common.pri b/src/plugins/scxmleditor/common/common.pri index c7febda9939..f68a64ce37b 100644 --- a/src/plugins/scxmleditor/common/common.pri +++ b/src/plugins/scxmleditor/common/common.pri @@ -63,7 +63,6 @@ FORMS += \ $$PWD/magnifier.ui \ $$PWD/navigatorslider.ui \ $$PWD/search.ui \ - $$PWD/shapegroupwidget.ui \ $$PWD/shapestoolbox.ui \ $$PWD/stateview.ui \ $$PWD/statistics.ui \ diff --git a/src/plugins/scxmleditor/common/shapegroupwidget.cpp b/src/plugins/scxmleditor/common/shapegroupwidget.cpp index b6ebaf00249..17edf2fb873 100644 --- a/src/plugins/scxmleditor/common/shapegroupwidget.cpp +++ b/src/plugins/scxmleditor/common/shapegroupwidget.cpp @@ -30,18 +30,18 @@ #include #include +#include +#include + using namespace ScxmlEditor::PluginInterface; using namespace ScxmlEditor::Common; ShapeGroupWidget::ShapeGroupWidget(ShapeProvider *shapeProvider, int groupIndex, QWidget *parent) : QWidget(parent) { - m_ui.setupUi(this); - m_ui.m_closeButton->setIcon(Utils::Icons::COLLAPSE_TOOLBAR.icon()); - auto layout = new Utils::FlowLayout; - layout->setContentsMargins(0, 0, 0, 0); + createUi(); - m_ui.m_title->setText(shapeProvider->groupTitle(groupIndex)); + m_title->setText(shapeProvider->groupTitle(groupIndex)); for (int i = 0; i < shapeProvider->shapeCount(groupIndex); ++i) { auto button = new DragShapeButton(this); @@ -49,15 +49,35 @@ ShapeGroupWidget::ShapeGroupWidget(ShapeProvider *shapeProvider, int groupIndex, button->setIcon(shapeProvider->shapeIcon(groupIndex, i)); button->setShapeInfo(groupIndex, i); - layout->addWidget(button); + m_content->layout()->addWidget(button); } - connect(m_ui.m_closeButton, &QToolButton::clicked, this, [this]() { - m_ui.m_content->setVisible(!m_ui.m_content->isVisible()); - m_ui.m_closeButton->setIcon(m_ui.m_content->isVisible() - ? Utils::Icons::COLLAPSE_TOOLBAR.icon() - : Utils::Icons::EXPAND_TOOLBAR.icon()); + connect(m_closeButton, &QToolButton::clicked, this, [this]() { + m_content->setVisible(!m_content->isVisible()); + m_closeButton->setIcon(m_content->isVisible() + ? Utils::Icons::COLLAPSE_TOOLBAR.icon() + : Utils::Icons::EXPAND_TOOLBAR.icon()); }); - - m_ui.m_content->setLayout(layout); +} + +void ShapeGroupWidget::createUi() +{ + m_title = new QLabel; + m_title->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); + + m_closeButton = new QToolButton; + m_closeButton->setIcon(Utils::Icons::COLLAPSE_TOOLBAR.icon()); + + auto toolBar = new QToolBar; + toolBar->addWidget(m_title); + toolBar->addWidget(m_closeButton); + + m_content = new QWidget; + m_content->setLayout(new Utils::FlowLayout); + + setLayout(new QVBoxLayout); + layout()->setMargin(0); + layout()->setSpacing(0); + layout()->addWidget(toolBar); + layout()->addWidget(m_content); } diff --git a/src/plugins/scxmleditor/common/shapegroupwidget.h b/src/plugins/scxmleditor/common/shapegroupwidget.h index e8a82149c1f..c6f1fda8b0c 100644 --- a/src/plugins/scxmleditor/common/shapegroupwidget.h +++ b/src/plugins/scxmleditor/common/shapegroupwidget.h @@ -25,10 +25,11 @@ #pragma once -#include "ui_shapegroupwidget.h" - #include +QT_FORWARD_DECLARE_CLASS(QLabel) +QT_FORWARD_DECLARE_CLASS(QToolButton) + namespace ScxmlEditor { namespace PluginInterface { class ShapeProvider; } @@ -43,7 +44,11 @@ public: explicit ShapeGroupWidget(PluginInterface::ShapeProvider *shapeProvider, int groupIndex, QWidget *parent = nullptr); private: - Ui::ShapeGroupWidget m_ui; + void createUi(); + + QLabel *m_title = nullptr; + QToolButton *m_closeButton = nullptr; + QWidget *m_content = nullptr; }; } // namespace Common diff --git a/src/plugins/scxmleditor/common/shapegroupwidget.ui b/src/plugins/scxmleditor/common/shapegroupwidget.ui deleted file mode 100644 index 41a20880ab0..00000000000 --- a/src/plugins/scxmleditor/common/shapegroupwidget.ui +++ /dev/null @@ -1,157 +0,0 @@ - - - ScxmlEditor::Common::ShapeGroupWidget - - - - 0 - 0 - 113 - 184 - - - - Form - - - - 2 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - 0 - 30 - - - - - 16777215 - 16777215 - - - - - 0 - 0 - - - - - 0 - 0 - - - - QFrame::NoFrame - - - QFrame::Plain - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - 0 - 0 - - - - Shape title - - - 5 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - false - - - true - - - Qt::NoArrow - - - - - - - - - - Qt::Vertical - - - - 20 - 0 - - - - - - - - - - - - diff --git a/src/plugins/scxmleditor/scxmleditor.qbs b/src/plugins/scxmleditor/scxmleditor.qbs index 58d4db5afe9..8b98b35556b 100644 --- a/src/plugins/scxmleditor/scxmleditor.qbs +++ b/src/plugins/scxmleditor/scxmleditor.qbs @@ -74,7 +74,6 @@ QtcPlugin { "colorthemedialog.ui", "navigatorslider.ui", "search.ui", - "shapegroupwidget.ui", "shapestoolbox.ui", "stateview.ui", "statistics.ui", From 440112964db182194235b3371de9a46cf95bf7d9 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 5 Oct 2016 17:59:59 +0200 Subject: [PATCH 12/61] PythonEditor: Code cosmetics Namespace, unused members. Change-Id: I5cad3a42843c716c5f06bd481c1a1b7b8a2cf29d Reviewed-by: Christian Stenger --- src/plugins/pythoneditor/pythoneditor.cpp | 2 ++ src/plugins/pythoneditor/pythoneditorplugin.cpp | 12 ++++++------ src/plugins/pythoneditor/pythoneditorplugin.h | 9 --------- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/plugins/pythoneditor/pythoneditor.cpp b/src/plugins/pythoneditor/pythoneditor.cpp index 20acd639184..01845891b03 100644 --- a/src/plugins/pythoneditor/pythoneditor.cpp +++ b/src/plugins/pythoneditor/pythoneditor.cpp @@ -35,6 +35,8 @@ #include +#include + using namespace TextEditor; namespace PythonEditor { diff --git a/src/plugins/pythoneditor/pythoneditorplugin.cpp b/src/plugins/pythoneditor/pythoneditorplugin.cpp index 9a649b420b6..7d5ede86fde 100644 --- a/src/plugins/pythoneditor/pythoneditorplugin.cpp +++ b/src/plugins/pythoneditor/pythoneditorplugin.cpp @@ -199,7 +199,7 @@ private: QLabel *m_scriptLabel; }; -class PythonRunConfiguration : public ProjectExplorer::RunConfiguration +class PythonRunConfiguration : public RunConfiguration { Q_OBJECT @@ -209,7 +209,7 @@ class PythonRunConfiguration : public ProjectExplorer::RunConfiguration Q_PROPERTY(QString arguments READ arguments) public: - PythonRunConfiguration(ProjectExplorer::Target *parent, Core::Id id); + PythonRunConfiguration(Target *parent, Core::Id id); QWidget *createConfigurationWidget() override; QVariantMap toMap() const override; @@ -226,7 +226,7 @@ public: private: friend class PythonRunConfigurationFactory; - PythonRunConfiguration(ProjectExplorer::Target *parent, PythonRunConfiguration *source); + PythonRunConfiguration(Target *parent, PythonRunConfiguration *source); QString defaultDisplayName() const; QString m_interpreter; @@ -594,11 +594,11 @@ void PythonProject::parseProject() /** * @brief Provides displayName relative to project node */ -class PythonFileNode : public ProjectExplorer::FileNode +class PythonFileNode : public FileNode { public: PythonFileNode(const Utils::FileName &filePath, const QString &nodeDisplayName) - : ProjectExplorer::FileNode(filePath, SourceType, false) + : FileNode(filePath, SourceType, false) , m_displayName(nodeDisplayName) {} @@ -614,7 +614,7 @@ void PythonProject::refresh() QDir baseDir(projectDirectory().toString()); QList fileNodes - = Utils::transform(m_files, [baseDir](const QString &f) -> ProjectExplorer::FileNode* { + = Utils::transform(m_files, [baseDir](const QString &f) -> FileNode * { const QString displayName = baseDir.relativeFilePath(f); return new PythonFileNode(FileName::fromString(f), displayName); }); diff --git a/src/plugins/pythoneditor/pythoneditorplugin.h b/src/plugins/pythoneditor/pythoneditorplugin.h index db733f7bd2c..9e5750b7bb6 100644 --- a/src/plugins/pythoneditor/pythoneditorplugin.h +++ b/src/plugins/pythoneditor/pythoneditorplugin.h @@ -26,10 +26,6 @@ #pragma once #include -#include -#include - -#include namespace PythonEditor { namespace Internal { @@ -45,11 +41,6 @@ public: bool initialize(const QStringList &arguments, QString *errorMessage) override; void extensionsInitialized() override {} - -private: - QSet m_keywords; - QSet m_magics; - QSet m_builtins; }; } // namespace Internal From e3f0f7d393c192014e75645018653e78aa5eeab7 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 4 Oct 2016 13:10:53 +0200 Subject: [PATCH 13/61] Doc: update instructions for connecting Bare Metal devices - Bare Metal options were moved to Tools > Options > Devices. - Kits are now selected in a tree in Projects > Build & Run. - Update screenshots. Change-Id: I2adb04522484df47ce1260bf49492b2099744a35 Reviewed-by: hjk --- doc/images/creator-baremetal-device.png | Bin 27982 -> 11278 bytes .../creator-baremetal-kit-for-project.png | Bin 26919 -> 23745 bytes doc/images/creator-baremetal-kits.png | Bin 36424 -> 22696 bytes doc/src/baremetal/creator-baremetal-dev.qdoc | 9 ++++----- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/doc/images/creator-baremetal-device.png b/doc/images/creator-baremetal-device.png index f6f7caebbc2307fd2e2ea979359207a9b7216b39..ade88cc32db275b052c67ae9118e9aa98462e6a7 100644 GIT binary patch literal 11278 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 literal 27982 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 diff --git a/doc/images/creator-baremetal-kit-for-project.png b/doc/images/creator-baremetal-kit-for-project.png index f7457c05863596ed7424a5d28325ec3c28698df6..2651a755e35a206727209b699afeb2fb31f95c57 100644 GIT binary patch literal 23745 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 DKJw&b literal 26919 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 literal 36424 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 \uicontrol Options > + \li Select \uicontrol Tools > \uicontrol Options > \uicontrol Devices > \uicontrol {Bare Metal} > \uicontrol Add > \uicontrol Default, \uicontrol OpenCD, or \uicontrol {ST-LINK Utility} to specify connections to GDB servers or hardware debuggers: @@ -113,10 +113,9 @@ \li Open a project for an application you want to develop for the device. - \li Select \uicontrol Projects > \uicontrol {Build & Run} > - \uicontrol {Add Kit}, and then select the kit for building and - running the application on the bare metal device specified in the - kit. + \li Select \uicontrol Projects > \uicontrol {Build & Run}, and then + select the kit for building and running the application on the bare + metal device specified in the kit. \image creator-baremetal-kit-for-project.png "Adding a bare metal kit for a project" From 99f672dcaecc5489b55cb8c7d2030f374cffd944 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 4 Oct 2016 16:53:05 +0200 Subject: [PATCH 14/61] Doc: update info on enabling kits in the Projects mode The Build and Run buttons and menus have been replaced with a tree structure that lists the configured kits and provides context menu options for managing the kits for the selected project. Change-Id: Id9079cef54d3582c256472c595cf79af67c0bb40 Reviewed-by: Maurice Kalinowski Reviewed-by: hjk Reviewed-by: Alessandro Portale --- doc/images/qtcreator-ios-add-kit.png | Bin 25874 -> 46365 bytes doc/images/qtcreator-project-kits.png | Bin 9487 -> 73599 bytes doc/src/ios/creator-ios-dev.qdoc | 5 +- doc/src/linux-mobile/linuxdev.qdoc | 4 +- .../creator-projects-settings-overview.qdoc | 48 +++++++++--------- doc/src/winrt/creator-winrt.qdoc | 4 +- 6 files changed, 31 insertions(+), 30 deletions(-) diff --git a/doc/images/qtcreator-ios-add-kit.png b/doc/images/qtcreator-ios-add-kit.png index aecad231f00cd7258685c35aac6232386d650e9e..fcde8b8c14ed801d74d854cffc963129a78ce263 100644 GIT binary patch literal 46365 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 literal 25874 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 diff --git a/doc/images/qtcreator-project-kits.png b/doc/images/qtcreator-project-kits.png index 2650290c9cd15abd50b654f83dd57dac32cd5393..bda596db606884e464fc7ba71bfa87b9049f4c94 100644 GIT binary patch literal 73599 zcmeAS@N?(olHy`uVBq!ia0y~yU^>IVz$nGR#=yY98ppVmfq{Xuz$3Dlfr0M`2s2LA z=96Y%U|=ut^mS!_z{SGLDY?jaA0JrAHKN3^v?L?Hh+*ZrGad{K3_K;S5hX6E#mPmP z1tppJc?`mwipmTO3|t^_=lp`oqRjM+5{5PWXRH_)82G@VMX8A(r3xjPxv31M-}yNi z7#KJ~GQs(2CFO}lsSL3N|3S*RL4q!s#mPB|nYpP&4BHQE>1SYI-~b7SCl=*p=A|8z|-FIkxwnHZhg7y9IX|M$<~*aU%~sV#HPfBxWcF8BRTW4`ycpYIim za*OLt@l_LUQjpo55_#-t(cuiY>U;*=XDGH^586aIAGgu+)h0;oiVh{x_c^w25znaJAAkdQB ztaJKCj@gs^@_Q#g^Upc=@q)Ia0L#L3*`h-+k&&IpA3IKaYOf^cXrZVv)yqdsc;du~wz6D) z%O@|NSJid2TYPcQ%8stCqz4BYzr4KMzG8*OtXZ>uJnGiBNPQJDYun$Z+qZn)MTQHC zfW|NU8e#Q+F=$#6|6&CEecY z{Pw$#Y>8mE6mQJO`}~zpmjxSiDe^c9v?O0rthIUm^y$W;r(Ta9JqlQTRDHLCj9&k7 zXYXw7V1K)rM~)nk>vdg!z4-s%@5SdVpKr*xs1&v);^3aj&o8d8m;d|wySlBdZ2RGZ z&*z^zxZ|m?(pRCl?UO%--)Zz(Yx(GLwo|gj(>tdn=e>FU+&q1A)=imrHJMzO<9g4zehpvdGt;T2=8wE+ zzrq}Wl*qKNudcqivvc!t;k1SY3lxfqicXw6_pFIq@4;E~`%f14+Z{^Un6Nd<)7RHE zY}JYjYM0DY%tO8JC&qfPD4+i=?KSn)i9T7e(=WsCALf1RY>-#e8hZbS=FQk%mD3^X z=N?}Czp~jXw?41-PpF?)+o7NRpZaflCmac_`F=!tc^t+(f` znuVs}n-aeUohmKUE8Vg_f9HB`Qa%KJdbzJ6q z_wyDPncehMJEh&7!JPC>*uQ$?O}%?HpJmVad`r9}-T8L<(W(D`2`oM2`t?(}<>N2b znx;o4O`O+pD)jUp_59?I%cAURb5u6z{NKhe898Z!3TNc24CcsxYkj{3>`PVkp1#V% zZnxxm^_EAz-jTn!bz*1T)m)a_%XP2*w{M%4S;1$^$3HW)Rd^&^XWewKe8{JjxYX!`u_Xl@4q~9HZvw%5!|x%n`-i@of;uhbNtk;=DyqTdgk0x>&k!6 zHdo3q=+-_q4%EJLU}F8bi0!qfisMC`3b>}*e_}iTXQ_O=ZJn&S&BxH|(kVU<`!bt% zB)+SP_^+7m`(J<~?L`mwjz_DcfBx3gnpgkGlDzt zd0)-8&ztD^xi2&)kHb-a)e9C!0lwQ8J!i}gGyGj_AO1I)X<6R3+gl46U%$F!QT&Uc zq`f%7QQ)75nKyIv^Sy_j?9*y0eOa?(jYNk2T?v~CgNwDs5j#Gp+sN^Yb+^8}y!`V1 z`u~Tmrs=8mzJB-LJe{8_^}7E0;``3?KmM8flSgvT+)no!{jsyd173f1dgXA8*T=E? zz^jQBdi4)$54r6>_4xcgmpa*o-m~}jx>rWBx}AUe4f! z>K$-R^prJr>Nm(pcyqM;(}|rQchuK*`tOVGUVOIgXxj3Gze2MZjnoY-OYiUIKYVGE z$7Qy_;QhVg?|03~|Cg+!l&$prPOW*Hvc9=EI9U`O(m8EZw|{@};?479RqO85+5cN- z&V1n7mf4?HaqOwHf3!LJ#o1Z2XKQL`ytuL~L`%}Ps)XOQ9yLl47xoE(O5G79`W;PxL8ylJFr(J7nZO!l382|rueg6!D#6ybm{%g6_l*?@< zA9oKDPEEXbd;Uk?qk7YxzfXIVUn(p&zu#;(vw=+5{6orTT-sO`AGrIs>sr>V-kC8q zzjO5V{bfz@*S6nR!hYTEgI=g;t4`ELS#+kn}xt-wZlqBQUn>OFEBKH<+&CkWtqw^}~X4!<~MIQaM)I0L_g4DOO z%LV0^*;XCoY*Luxz^9#D@l^}?VWM<*a`+xq_0+m#EK-Sc~1`C^vF?YlgO5Ai=- z^G8otSzKdb)?KY_*Q`5CcV-mrX0qH>`@CphzT~kvsizsF@878wOSjwGvdWG7-d=Vq z7Ds`W=CTuB0-+ zn?E0Z-m*0A)PahEts;TxC!c?fd@6Bn-ih_|>zy|$w!QJNy~_G}r8mDQzo0->>x>x^ z^Xh(OuG{%c%FEk(=Zi(%J0AC0Z@8J$So-bfvSsaCO|NWv)tnw^A}%=l!aSYbI#;)B z+4*ty@8Ylb*>9uJe{+ubEA-!zr zR-^T{iE@Ra_43k=F||^O&oox#BwT&2zwwp8cUhx1JmwokwTz_GHmCTfD9}dQfZ~oYtqxbK5Xa(O! zdr#qW$w7af>)hSiA+2vUcZmY~ZEmlR|II$--QU@B{N10f{zbR!J?ECXI!LJZpHjV{ z;5MDrQGoBdqWYP-{qp{`jQ4X+KUwAOK5;>iQ!e+U#ci^^i9It7J2@q@W|`HVnHK-g zeO{?l`Fvv`*_uSsYMkiLsoi3lBzvMk{x{-pW=-T7OC+Zzo9!5-^ zFyX+TpPy&iR-2XIEfwc#W$J(az5K_3EH_r4Xq=^VtnFL<@4t0T zk2n9=?=APR@%B1(Qy!7P=Nmr+&nWwRddJ?nN#}PoTTe1CIIZoS7{KM#I_bfReLT|E zg4Hf+3$sjD?Q52_cl0fDv)Q%b;Ggn?{VMnVGH7QhD&<+E&o!NS^!^%!J@s$)-OqR$ zbADQD)Vn?3nX~@Z{n0Qu+W%zXa``9MHWy!5DPr(ZevOXp)a&y5X8nKqJ9GcLivra* zjqjLR&M`PFy60Dk=JtI%M0T_PsgtY?5!-J6lk41u|C_e5{i)-Oyf(q6f=76-myz(H z3mIRR@XkEp!n(xm&$K&I$&$8dGQF?rRAzj2;s3=wzi#>Slgs}fUZ$lxv)N5pTIJ)> zSy~}cyoJmEO`ZK~{qy>-Zx4UD^+eF-=lk@X&$pO3_ME-BtkHX_B zTf6mkb+mPT-Shj)?InNzDykh@z2Ketzn?|6%#*VVkN7^{RCuuF$F-QGV>}BU?9M&2 z1(j^-{fin?9`In8Pb-p?ft#Hcq8jZF2rx-<Iwt1lj!Mn&M|3 z>-fn0^GWN?n7bRpEGqI45z6d4cNSx zrQfn=^6?Zwr{fvD3SaWLS|81jNX%P#_pJVV+tyqAq>D>LuFaaeBU*Zc<(?mhFG-ev zRX(!hZ(P>Ii4zYRpSL;e%x`<7ncwcjkB^UCH~mrnwEI@Xzk`Qs_JlgG@oZkZanhkA z?!e@{=a)P^ZDr>va5$|mJ)wL?Jf^_$K_Yjf{g3^%qN_9VbM_ZTFXX6U-0{5X_m)zY zq8Y_IxDI{vSQzl&^UsW|tXC5S(;}y3u3PzF_wsx-lM~&RcYLy4?d060^|tdTwHIBo zms8iPywf(IcK+$sYoA}%=RI7jdbM#|OYpyg-rMK)-&`T+Dh}$yOmLP; z4AT(#@wd)I%6EB`&y&9AQ5RR{&i}Z1-7Ti>s=6({0{?W_nj4obTPEjeks7&d-IfN? z_qN@huaBm1EnHf}o|mo7x1C?pWa`T6XO--d3#Q-hR@wPH!)ejZKMyTq{uTJUD{(Xx zBv~$LxtU_LG4U{48^8QLJM$F^9PLM6f8A92I&9PC&HQ^l1*)7j@}0U=r~bF6$vibD zCts6rv4>l?KPdS<;ZV@b58oq?q|5z{%5(&c2gJz+9r|;9|G%mIcE36*KR;9Syd*C= zS>a2S*3_;uXMB$JNPb=}8$2y_mR8xPx5nnlm$W(f%mU)~NbW!0dHl7zq;bdO{F*sO z7(ujTP7P<2TQ1yxojp-= zPR-$Dl~n%MF9SeB4-aP)pV*wj(Ns_~F?D8JtaZe{bHN#Z%bJ=@B2JY*D8BijO7+Qw z6t!6MZkLHV-=kh%U!VT@+1VX;*(*$b7`iMC5|o!eADKS)>eElFR%wap$MsyzdMo<< zz={wpC1vHE51P2Y?e?pyv&+7|?&!mUKb;f*7GB9RojG%+&n%P7{jb+VZSC5#$7WC5 z`}yKG+(X5b`O;^O&7XPZgPoz$+xfaliHbuY+JHc=-=vj^8Mjw z?-fa#EuJ1z_mHy*nv(b>D0*8?;^SkzbLxJ*ba8Y0R${?^_G!_^ijPUp&dxty`F!5( z%$axdo_Fsow#*My$YHDISXZtWCI)WuY|37fVw-7Zv?xo3{V6$wEc8DU+rjyCn1{PG4?)i;_uWrn#NpsR_-q!-6dA zcHYg~v}u#U?6Y&z&8?2Dyqa~aNAmEYR_^bSYNw43x+zOaO8)r!FZrF}=XU3%L56vE zEbRXO`K&j+dT-pM$&)+#`|a1o9eN{^j{j7f?`gpWNi*>nV5oekI%5H;$dtmvt%qku$g3FYoiwXJ4Y2rnB4kk`;&K zeWsduDt%WXaB!9KkvQO zRq=FMeDTYy>mOW{puTs?H+sBEd+EkS3@MWH@B0VD)cei+X;E8z>}yHK-A(4B4)MA_hWp>$`FWeUSIP4Evi-&ud;TV`tod8>EWcN2 zcRiP||G7n3-i)h$@NAlN=B;P`Wv_WZ*EcVZ+u8Cr>{(R#h6m5Jq*iScw0XjFZvKR8 z^J=2QKE5f=wfXpJsf%pc7u}qS@1bepQHJcS#ozwlJ*C;KY_Ul4RcxtF?7r@Q$(u5C z^$y6+I(A^o3FX_*^HcVBPugn#>F+0}ISrPovtM3LpCGX5de^riyV`Wa$?JDdxwB*5 zT4~z=Ce72I1bePn-uQJlhO0N(^7WFs7vExncFve?&-1L&eVH)ZgB8!}Q?G!Hv z`t@*sGT)Pg-_-%N-?nW`z1gpGcMCUv)URiLX}69XZ2438^IxLnr0Y9Yrbre)U%!-> zqw~zOFWqSqQhqQu*_=A^;?qY@Py+MT4Aq*nslE7C?)eWl_fB7QF>7Yg;l)dy_1UXU zN^Ovzw%y>(9m6A;p$&~1cjHzr)S6+J`SHacvu*!&wJmsf@ymOU8T@T#bLuklX07fk zdcd$vYv13EQ@!Kta#JL}-&xcm8Y4ql$~>#rn>b;tz~j% zv8t9^f9JbO@%8HopMOhKK5N}$xO>L`-7D?A?dm69eSdc0kIwTu-)~7_kovU$*|g8` z%h#MZFX{hx`jJahUlgBv^5@~fnt#`1rd-@mpvWW3Wwl19`e&M4eZ6#Dsqnflx0wPf z=1i^m{3v+O=TN&-Q$*J7dX*Hm|EpB?Y8jQjpWOd<*-fgyyJy0OA52`^u1&E0Y`pG@ z?t|UB_cuK_WwT{j;-AOUygl@OHn`ur)e@h3aNdvbb(WF-1^Zvdm?%zSeP7q1Eb;IA zM?R&;Z+L#buH{)-*Ia%79!Hs}y6s1)@T{;6ua1lV)O>Fp#O9NB>`So6-M^ardw21* ztIzR{tL~U`mOElcn(fh0UJt?Mo!QswPpqn({5!s^=zsM0Nmq|9*r0Q|VsG3ZFJ{lk zW=T`K$%U3D_k8-IWH#OP@{g<4HJfUz>tea4->tKZJFa(c?|Y+nt3OPv_#}F#WKwtK z>PI`jZacYSd+o8+_A__ZcyXV%`NVqlo>|sYN1Ol0ntMDsY+r=m%P=W=+-qL+`K?nVPko~{+HbUEMEtol39D@*X5a|$0FNp_s$Gj`Q+X1_s?!+uV1=to7m)& zN0R$(-LkT>66Q|t(ML9m5bl= zMT*;Ox}eC^)29Dt9O2KeYd^kurq*8tw;3{P^s*l>`aLgwPpRB?n?JgIH;=4{&VRaS z!P+zT(;od#o9BM|RsYXSZ;|ECwtf7vS^n~it40s*%&z$GUu}VX%bX7hZZp1@pZmM1 zZNz(f7^av z6!TA@zdn$oj5qk-SB+ZkeMuKz>4t2Nd};nCMJM~2P~Fq^JC<7-zt5|m9baZDX#Bw> zZ`W6@O^Zw0YYW$eXdUJFT<8TVG`df2YB_za>)wLn5;+HM-s-t1Q~5^a>^H42y;aB7 zggIR)Fv(pyCDZR&bL;gB+g_zUTmN-qG+S|v+2sF4#>;u_yFVXOV>jbBC>WcN>?m3%vG`alY#%YG%Co8#~t(o-s_wCBZU*kXA%8gjtZdNsI z_UzMZA~#ojx#+(0_q*LQEee&)X6tUSv9Q>2`)#b=^@nFY-()5{O|!O4PU2i{zxrC< zBBd+m7X6X<_w$>uidpU1%k$qno2`HP#GXfva?&dw{oO9!c)0Oyp8c1{f7P_LyVd8{ zOk$U-Xto7IgDPkE+8;ldRJNRX`_dV#@An=$R=`|VtF+wx)s1~cdfwYD zPRJRzZM!6^^QTN#cdb!C~B6kacUeIP$_OOjo5{oNCy`t>I=&I`S(d6$0Y z``ngg1(K?%y<47&3)omp)1MdBPTWzh9!a&9`s)H>-Jlt^I|JO85D@y^Lh9 zscrl7h4X)I1ly!(S2zy`Tv_{UZn(Kn{W*z4Z zRlnc~YQAOP^+|l6OGH-v8Mh4U1Irk8{Rmmqli>BjIVD+=PwCtKO=r8zGgVdwI`}?! z)ytOl`plr@#IRj{xmMSex{WV*s*)~j+Wpf;EPg|TUv9QYC{(p>* zPY2gl#Tgp=rP|N;>-^oeR!4FBwt!V#O6GPPo}0G454YP>)ap4|O;A+SwXE!$-EDav zqf(3GC8i;p@-F-5{Ho;4a#ud(BYK(Lb+N|@H7ysXtO*BSA5HU8F~8WMV#y%+QsYjF zMcy5YxVoQD^?p|y@a;N3sbvkPqN?%S3A4W5_~Y!+V-oOkYUc^LLmTGQWfZ#!N#;Cl zu97uWGd(!5bH?G)j2gw3E4yxp&hoA5@d=2wxM+ITWcK5e1}*{Dw{&%VvYTV(d)(U4 zv**-F#h{fc={++ej$YjFnO|?d=2S+9hflhPy!HJ0g%9S;eiU#$_xSaE2Ib-+4#jrE z$zR^++;OTYvhbQJwD?{_&dn3E49CtW}tM};Em+JdsH3E01sG1(!e^zkq1%agew70iX zc|5uk9ejSzwf(kBc1_$qnfuFBGuF>M_+lIHntK~2eb}Z@cXQ9&JHhOK>ek#SG0J-O z@#Xc-lq-KcCYDzu1g6~ADdB!*@Lrqsy-#NAQ#$phJeA&lG5^tm``4$Z&QZLm;+Fa0?TY1bT?|tj zJC@DWiQFz$I=lbE6Q4~w>pwoLu05IeNAP&+qe zMXc1hbPwzN{a@EC8pLt9ra_r8S-OATt3LROS|O2bfOz1=5p==8MDk0&MgEY)7gC3R3ES5GI{ZzS^UpajGQ)3Jk`m3B8>I1OvZz~{q+v>>ZA?R zI_FF<+BVfU#jB00#4$sK^M9a>!&{BLFJJ9_5T4cHb28z^mc%1J?TNcyahRs^XVaCs#23>iT!|7= zPW3X2p787V;)|IVR)~b?RL|$1-d6n9KK((|M?rZ#&gZw-(;vkB6qMI7D}LL&{QdW| zNB2xbA9cEwo;AI0GiSz(8=-aOnB)dGr_N@h)FW?uKHA8A>naOLmJ%dI~%K?~%BorM&X5kl~80E~-3+N!a#`w{#PLrbz6x)c zl9Lb}sl0OMasxH%sViO_`Sw>rsPohRQ;S4fZz%sV&J5sVZcn?cfAZ8b-lHtbdsUX# z^G)_YsZ#&Zf6A`k#g|JjcU)o>6rAnhvx8AYOX-nNr|Ij9vxFoj%xx-MpEzOFDlHXH zr}ft#7e}qQv2*gKE~zb?i!DF*7`n_{)Y&=h=DtE<>(#G5upgf+^lVv*J7*{#^KzfL zPHFq=ShT%v>{!WBdaA%}NvdI)lf2iqyahWFtY1ro`ph)w(P&&HC!mUte!e5N9Y%Jt_pFTI=wO@ zaPr)_O<@Neze^rS+E`NgI5{#>(rPZ>)?KfQ^-c;oDqcKtyhT9l{`7=&R^3-VYQ7%J zD&9(UX=`N!x=fxZ=3P?4^UzIqlap)3CxM{SpKESLbX~sFANX?Sl4ZvPL`8ioHcVSE zLE}+!Q{W0^3By8*UDJ%ro`?tCd!V4C*tsG>ch-cANx_E#y@h5?(3ljgWc7F5P5*jP zF4nNsqI3P+V`AQA(_XuS|mNm;$rRpHWw})*wR&ejNe{r(kdHX{@uE*CO zef&{CP_VGTyjyn3-PQM>|MU;La4T)W`!C!(KmIXnk#lY%~wvpP{*I##dSwJLb` z*|f)({q3Jl3HDpK_H9B}c_079ixm+!{| zR$rYmWlF)bnd$E~=X`v0w57GR^moDJ$GvWg7cN`YcHu%mQE_p#mCQqdj!8U@FP4gM zv3gCFntQV6c%EyRhsIW`l>PjzI*UV^@8=%pUeR1~+|BoMVcsp-_<~n&8MvmLN`73k zDnv_4TKeVf?fJ{4U-gB&I+9&ccjzjEhKN_+x7)`vOoGD0-2(!y-)|~W32-+P|Gd$8 zZJ7LqD~H~HUmUcu>TI)(iPTv}{YN!+@>P5HUAOUyS{n3qmAd#m50^ta9D5_&h1M8K zeB2$|(Bia~)srbD#7lDj`DUk;E=wEx@cLSKA6ettV= z-TwKnUS%!wnYrn_QL9tq<(EgYwhD=fUCS1FHffSjk6ZHe)1g|Tyu7>&Ev>Srjd|s5 zdfg7sGR@}Ty!rd3<=ZV$x~ZwDJ@WSdR@7Nvnw%23Y}Kl+88c?g<8!re0k`@576vQ` zSrzbtN5T8|&X+DKr}l>W`0%99DP+^t)jfXo#1f~43g+h1pFDX|JMCqORZ(&A&zH;R z2doU)`^ag1a^F*L{k>aGKjq})JaXj7hJ=GmA*+(#A9_=8VpGq>jFeALPR8oVn`8*2 zrly{mYrXyY89hZ$q0Y|ECClE~GA=7vBW!x6sX)eJj#QfCi?dbUn#b<(ec2#(@%iKV zP77a%idU*j86MK%Xi|_V_dBx0`AeigmEZdxea_GoYX1}nu0=bRsCGu|*?l9qwNbsl zw$Im0us67k}LKn1vN`mtFFl^wfg`4Q2Cah{qr-YLKnr& zE5D(9W|PiBpJoxAd zqe<~e^Huw*p4I+h%)Tpm$MAENnq+rH>OC%#LUfo!(rQ=x_bZp-Fx!dm? zm~znXUiF*UZMUnBUv7e0YkypDYD&wIB?T|nZk|#4wi0U+s_LhUs>rh*J^6N+3wwT5dj>Tl9?{Q zwSJcVbvyNX@l2Ct_V1?2)_l5iTIc4*{6jn!@;@!TQ~vyH&)f8tV`jHc`<-VO|4)9_qySpe<@CPX zg|j&KpVzt5L5t;z+5hTSPx$@cs!O0+)qC3dH1|+#p}el^dWpIB{NBWA-=3zEez{L8 zraEogwY7I@A3m*_w7)y7eYU*aOy^4R<3&5)RM=)I`Dm?KTPktcNMh!+p497ZT30?U zIXYwan=^+Zp9@W#a+dpaZOs2y%sy8%SLno?Uu4R9<8NKg*QI}U)d()_^?T*LePhkV zbQ}BMwcDmX-Tdfgc17CCuO5CA!Om?em}9-D<)*~U6F;xtJzo1gzV-Xw>YWc~`mfBf z-69zIde{0HyR}%g{c5sf%^N-4!-0NqIJ9$%gm%9hgun+uFA-|3&vnyUy9`_sKjBFE75H zzEovN>f|H*bFP(Z@SoLn;)j0q1vvp_lKo+hT>df z{hlY&^~(%(bh~W3)ql+^(Oq9Z;m99(^9x)8v(KiA&+$C5?tR7A*=q$%=Wu*||8u{h z&0OyMDu(wLN=$YY`0Ywj>(BaqNx{_k#h;lrNiV#6ub=p^@TSPxNU#4T#)fU&JDB-1 ztz;D=)eGOs8eOyuY_H4$&1yLcwA^#pn08jG^2&-pTiJF6j=K|7I(4JBPc$y^@NZWF zMZ3Dp$0hcT0##GaUv<0qOmt1e#wO9#*8*cMcl|#wTQ)X#>Y06sHd$XY|0Habuc&nt zV0qY5G(%OgNrA)N*>wKDY_apYQC`nJygZV1yP)M+(fPU8CrDlU+PkM-By!S+@~;)_T-}(LPf5Ruo>Oa5vD=u&}ukJ^t@jWqp)2;VE9r4uf*fIxv%ky`jn`Y~C-3xa z1Ea?2?VIz8MK@+PcU;hUc*<~l^2`G5;<_Il2d~aAJlnf{!@f0brQZ7zyLFp>%kL6> zef@Lg%T|8PH9s0xAG_oA_{PkdPlw%~Ts!}GmULcHZmRIl)6+h^b=UuVggrZRYxT!= z-Y0F#??1b(fB$Jy4)=enay5IC4kI2%0hYx7M>sYsaM*e;bXZsrwC|tzyPfar%2NOK z9{1n0A!eK5q7UkE^;yQPda_5qhF*z`YA_Ib%q}!n(tFP#_nDh#F8W`4%;=<--$kW+ z63AXN*z?c((@uW>`bH;D)nil8eGM){(2AYE z!ki$R)rtd*PJQp*7&(P!?=z!gd%x(HG2T+J&G>R8l_&AbixjthxwH417E4O)OI~kV zQLrn@aUpwe-;OW$ukY8g=u%wCXUE)AW$WnZSTU>o^To;LMeoZUZ9X1Z$`YFUr25F= zPLNgaIw$dfV*S5%eq!3LM%VYYC)taqZ@#@sNyVb)-(~&h`hOo~Xr5RuDQgwaogJ>f zY{kXfPwRrz;t#pL|F_0K}e&7aMV2WSMN4$E3`@ zR9H^V$*ZXTQL6M&)2}a*HcOZmsXSKiS2DBc*s*1y&pewc9KEZS`}cy<9giTto?y%4 zhKhntkc+>_1Wr-}<-8^Zj=KV&$N<+^CC(~mzzk5A60~9+q?W_U9Mrmlh$Aar>^}d? z^$Qmqa&zC>y$uWuJo0VR&opS3e;nMeb|!B9^ba2jdfbv1oPAmH=wn5dffi`SU4X^$ zM{K{^8QDK|_HpaQd)8DPsuNsxS2>4QE%MiUiZ|TmRKNs9)jL{Q!b#+xyQ4tUn6wJua$VmA8?d^)IS#7-1 zZGOvN8=1{M>sD81r#HR(!-oQpZ8d*WBbV*kHEYr&A%;hfAA9=y^MBE|x3}Mrmz1Pb z`|FG2(yV%=n7TT<-rn9N%a#er%lmtJa&FwXv8Ao;-S;`1pnxu@u}~9ATYkCoXp*9i zj?RP*xsJmR7wp?7H~+kQNr}n9g9q8S&OMssIB7}V^+2tuUtV5LpIOjw6puSpznWr;m(*HG3)$t6B83#+S=Ik7`~~iskOa$k+COEzqPeB!(>+8 z_Cl+t-@Ud4`RxVk(R8UUNue8+EYpKx%IeGc>2O60Rci**;;Y*2B)7S6c zv15ndTUpM{I;Xd6+ZGfW>KYOf@?eHsfBU9QMr}NjPTASoKY#vw^5n^z$ycJ+hJjq< z>#M4z)fKzDY~u9k?s<87v(59>w6wZfT3Y;SJ9~RoZEg1k&sSDbnqiR0G)W~eAfO>? zEuYNlRjauAk2~k(=~!iD< zPI;+#DrsnRbaZfdd3#S(>HP4aVA0~mnR$6^wb-GV+S-M?@3yqI3W|%nhlYyU&F5bm z)~({1u{BCcTH0{-Sq%{`9Wic2Ma3gWk1__t#`c~~d%dMLI$GLlZr_q6Dhq56>T78^ zt-dNGFW(=ua>=@NeLsHuIB-Jaz`MJHDQ9lnKWasrIU^vaY>0>wr7ux!2Y0>F6*x^ zzWkEut?b8_Uw`>6K5aK&|H60Mlbd?ZKUdb#;n^GK@9N5$w|)2JZJTs1-?`IsGDS&A ziD_w&XHbw3DCm+lCTxr-*nO9Ul~qtuQu4;Sef#7hr+IpNbN3w47U2@%Vx6RN@!B;v zFE1~Jg?X8oiaI(x%?BHt79Mz5ARs2zcK4OIk&N!O}*;6z9v}T7{=H%yJzGH{P_S?Rxsj9lVx)Qx^TH4y0 znwpO5uLsA(_#`JQSM8lQX_C;MIQ^|#w}KL!kdRY!bo7ImlAagawr*v7n<~lH+&FC- z$k>A2cR?BC`)}*7iyu2N-rSXtw%~LlqneyaGij%Xm_0?}uJZvRau?ZqOcJ7=xQQ2Kc zMC3}QePCeV+^qb&dFH#z-X6-@`siZ?ld2LYC+7?wHHJ%GFQ@7ntK{^O4ojg2S& z_))>d&E478ckFE$yW7Uqt5z|YUeKG~{pnNDty{MWtme)=6$Q%82TpD3x&GR9Y0$)} zQ;)XsN;8=k?z)?&;(2R%PE!3_23J?tB}|^UX7>LRT{>Uy#+((z3eR z`o6ZO@3F>IFVONiZtjKIa{cZx5uked_?Bd~L_a^jwAQEUbvd(+&+HTrOw@lm`I9;4 z)iz_Bq@3knqoblW+*$Wc#}Rw0 zN|#rB`?GiT{Jt4N!onv{opM?l1j^a9wYI`)J_(PH^)`OBIu-M#%o~gpx zt9<$F*|RP#E)Tv|fy&SJ_TZqPrlU!UMn*;#?in^oi;B7y7aQ}nH&2@;_NUICmzS4? zoqh70IX*>2Mn{hx-4U~{HZLVaLuAI;w65;%LaVtFy>6>kuV(yK-JH;V?3mk@C|#|o z;2LPcgofL1m#tmf+sMq$q~Iwub?Q`!Ubi=8)_L2d=bvxCn89=BMAd@Fb6&*giJv`t zmc8~ps9IL|(jxa?`|5=Y4M&q06ZY1Mmh)FMRX7Xj?VtQ;8`G&A*WW5(J6}0p1#;#KB{eM1jSM8m5G=t9=kknnI}LBWG< zywVNdu4f!*V2oHBcIxzLW=`EL>K_UV3v+I5(G>7cOG{IDw`h^lpE~=KCr|#Uu>)nw z+i%^br4|(z2d=(4W$IKxSy|uQTwO&)#l~4Fo|81RwUy1yr~mm=la-y_+1(8)y4GKp z-k~7;?R?Tk0XaE6JsnU}KY3Qt*;%HaRs=4tdh)>3)HEa{WWm*}&d$z<^;_p}xbjgp zUF}b+SGA_=wYM=dtCS}vEi1p}H))BV^14kr?5CKl{@uQ~@A-S#Z!zm1fA4!5dzNiu z`J}ziH-7JV>hSxf^}WAGH$S)A{j0YA@5@&fv0LBTKHB@;@=kI6-J^Flo_YOsQ}S`X zq~zqzo}N4JceUTzw|w2X!}AQaM7X-TyRGkj*-?I9N?KY|Ute8QlXLS;nH9$O;$>u0 z#jEFiUw6(k{Q2s~Y$vyD*|K<&iT9)<)7IWTA!+rb<9n&j$~9|L6crcV*5qadZTMXN z^#w<9MutXbXQ#)cmizCYFFBF9WsB*C+ktIYuODl95q#3H|6cm;z5jQ-o0(8L^~RgO z)#0ai%{E)RJGJ`yCb^7L+y1WI{(S%UJJ0{sz0dpYocmg9*}8B0_ve~Q@t!<+ve9VT z-?h~%-d4YQW%Fil@5Kxi8=IQ_zx(_8jy?Z;@y3k~zvapr8ZQ>yWB={_?A!N!uUEY9 z>+BR%2KO2+aDT}-bf>WS>ibC@h4(%8u4Zd>a$IEBns9bss@S28$5V_-BZWSvTg}+H z;ql|g|36r6p6aD~^5n_-7obidi{p>aUn+P%-&1N@)WOkZ^`Q%#<2af=sK2<_a`R!q zgM6ww2Ag%2+o)%?mng+Q({Zbx7xQ(F4z- zYP$~$ll|^97h1@i*i_@O_@b_^?hK!0dGAk6PnB#x+!(Zy=Zq@PTmO>RGtO^Mu3mq= z`)Zc!^2?<^O?EXuEZPa$>!HrDDr6P7{XF;4+lp0*$3NznNz3)Kw>n+Syk)%mZr|mX zE(-$$WMpJ27>@tDW&P{l|2K0hYeb)3J-*+#_`B)vc@tU%m>8LwG&CM`X-AdkUX5B^ zy7F3B?$^?lp}TLbTKoIbuHUON1n&q6P6_>{syJan?f%GjXV2b!KezHfN4bxJ&R5q1 zR`<`R+qLX`UiqvtP0f72W%0b?N0qbBrfs(R9-*_$?u3O*-`;7}ec_2cE=n&-ta8k5 z#}&VEQxY`YzSVDeaPX~@n`~5M=f|x-p0|DV^8@d{ufEDE%g1gvpMS2OdCo&2UI^&@ zukY@{Q*0u&bp87L`IUX`*_)G(^C?Z_5LWlId2opR^|iIhzrMWuedhNn4X(KL;&c7X zkDPn{IWRQz=n~J#As@rS!`<`q^;ub2?|T@yD+!jpyW^=Kpdi*garSKQtSl{2QPEWy zvN~d^k;@h@W?p~YJ1|i2?%lgvwrp7u`n0IH*wf#C`Rdi(*RF+`PIfLTGJ5&)<(F^Y zF5S7aM$E|5&reNRIr#+hfn~n4J$!spzPz}&Dj_d7cj?NNoQ?t>9v%y}Y$@sAd18}K zcD8nIZte^pwWN&_eC^GG%5D!n|Kw;ttfH>I`uMBYuan>2+M1G{p1d(47c)0k{qequ4tJ~b#wJ@Ngz``do zQgZL!yON0 zi&D$s#8i%pAPftx15fgj&@M5ov5~v#%5#izG#Z|X| z{@K~)ljqIrJO23K>#y%7e$!P{Y%F|yjQ8g9>#wiYPMtb+hL76UMh&^oc4=oMUcG+( z^359+eSQAzw|(>T-#hN*H-Ul&9D-*)G70P!=eRk&*599>lao_|hb=}=+|$#u!bT2M za-U35lHf7Qx}s53T)cAKx@8L&Ha>Zh63P?Aek2~Y7GPb(MkYrA4^K}}iGFsr`RaR@ zH*GSKl9FNoO$6QEmRnL@{$BCf?AfymcgD0FPCV8t-L7*w%ieGK&i27 zEWqLt=(7Cs!_Pmz37q-ZK4Z!h5f;Y-NgETk-+uY-UE1w!xmlryD^%_0`nBJGpZ@Sr ztB9y*U`U9`lKmMbUg_!T&D^hBoD?BVyV+-#wUtDy4cim9UTuacBtZGB++8ZyE?J_Y z;;E#l*tpF@IlfA4(}rBTbqT*Wd@Iafc{c5E)>a{|)(^k`GI&fn(!wdMp{coW^XAC` z8ZOz{+LxF6FJG|0;jMF^$fr-AG&D2<4(p_ynbD|odKE`=vu2(8@$s>zhX-iP!e@@fL`mZ`h82HRR8$NKAGvIe_4MS_n-0osUESS=5BF}Y9Dxb4rM8n=GAwYRM1`uW*> zbm_BvCXtn${ry8(d0E+`0t@c92>!H0?0UVml& zxV7YC(Q#psTirL`-8%AXUg)1CFT|J3Y-@A>@we{Pt5+G>(i#PiKL0#%;zWSBfK;#B znlSB+5j_DKEhkeB<(MU#&2HD3*M0lMrk<;y(miqe?M}DFt9(tQj%IC5GLZ1_@maEX zaq>5lj~YGMQJ7yC^Wq#$r0$4t1_?c>jyl=O6d!N0p77g$VC>GV)pG;j8gin8w# z$DKn`BGn{#7F~b+J(4jH5-`q>|DR42KeI5v<80r@nXhfvuxT%zll+onOVHKrtyg2c zEv=tFQp~+|`?jW@UReA?b2GC`SFf7p+$prNQPy)Q|L!2g!zRPWURqk3HN)A_u~F(; z!p4Xz1)S4QZ@pgm;%gOTxI{%o<-*;&zHxE$Uj3Bw2@e-%Yi`Ui={o*cQHJmGy?cHN z0tXTdCQO>-l$)ztw}1Y>fBzIkzdTYD{Fo!FHo5cGt*A+pCv&ney*k`<_~C*@i<;)l zkx4jUJa@{JmctJdUSC`L1y%Q4`T76gbo@P+?CW5JvVeQ(rU%r1|z4Yp1e#Th|*Dip8#SIVp zzc2mYcXzLH?!Eqc>DslvzVo-Ot7lEs6xQ4{J>lwY2FB)$1y?K+J$5G;czAhrX-(i^ zWA0j%u>JPMmn9Z5e5N7?UY4vX+!D50boX7qprA=o>1(dP_Vn`$6PN3gFl3s2wr!Ed zjI(JneC$?p`|jNXZ5Y{j`>pe(OD8w=Tz+{Z!C=CaDK6#Z=70bG&9ZNJb+@m3=eu`# zSF5EtSUkMF7q4E;?GS4q&cSk}?oHWm0Y!=P4-&WE_Vn{xwtxTpd-vjc+>~$LyeZM^ zCL}D}c{J(EmoEZ5Y@S|ThqAWv?Y5tHH@RR&^Ua*Fy(iQrcfNalMF)*wr|~f@$%(n70(_yTdBEz z?chUBR6K*83))}b7}2w3iwO@~^R5H>wzhL4blkGDwKFp_f1j!Q6zdi!Vr6A@(&oU? z757Dd{rYv~emJ;=(W@+)cy(3isRyp1?Lv@!+y)A#w*9*P@%;zxGbeY>aEsUV{a2Nz zxpVr(b06DNYuuH(7G1b`(=$C?T~$@J`fU53+{;(4xM+wh+OVPE#++*#BYIxF$^s1r zpFb}zWM8*o<+^ohGJL^NQM=CnxphA^B{J>uGhH8@`5WpVzZdZJ^-W1n|9?Hs9ORnb z|9pJe9&TPE7__&7H7c46fTQ{(kZBce?_|lBG*|PnHx~bnKsc zA9{3R$(o!y|Ew>9 z4F3^knIo4r|NQpzb9OG$NZJ^|w_82b+4=E>%io@^zEg62{|g~z3AOtt=KH-_x=nN9 zLt&kFo%@$}-g0}+czbor?iF{QDQ?oA{cftwml)el&bbk5Q+IEDtN3TWobZe9KMf^( zJtnoNbha$EikrWG;^p*d6YLge{Fenco@!Rhm>rCXj^2H~2UL1)Og=6*Dg2j|l$5(z z@&6r@weSC#u-W+Unuv!^&m%qZ-)hCx{P9-W<>R;egVv_q;-A0lx$2T+cFNy=`ps0& z5Z&J$t=i=mu7q$dO?`0p;OX;wyo)V5AM07nHasS_t#p~eR+A&@pJQaIf2vg3-|r~A z75GGwy{O@Lb=ik+lj|2;pL^zIcx=ncwQQ<8J1*W-E6Z7@kaopznaSjL+Zs>J+`BdY z(>3Y%N8j?6D;h92$?DAA&-DDvWsUO&@3Ut)UwB(=RMX=^t&a#el2 zbms5hziZ<6$8GiY_D+6sVq(^;Ewg4xMMX!SJasDR$%%>1zj)dYgBmK+rkSbue>#|S zxQ(}BZ``I$n=~{u7VO?V`_-!~9=7JFq}_Y>&VBbT&#hOgRmBrD0D9pE!GmZ}rzLf4uDX&zB!nL-Z=< zwpob_r_XWzzia274<}RJ*;vl*oZP2$ZP(Ov`j7P6Z`z6 z*iWiwO2R&T-){G8UnJ9MyMhU2QKIsC{L1G}EPgzhSH`xI>5b5ths)SXc1{nv@Kuf9 zCht*?jQO@pE?!1LH+EIAPGpJL!m-SUQQdUU7kmFl)*qky=yq(pr|Ps~u77-0v*6-1 z*$oNXBF_A9R+>12$*HAF_N|Yuykpub)~B~^E`suj6#J1x{g_X_9Bj>?iK1!KjGHI=WkdVW^jg41Q7HO=KdwcGj zpN$;9u)5!pWy{#6pEh-QuscRCX`@8h?!ODppMU((py-JQi(|swU8O2&YM{2~ionG$ z-o8ye-Y4rZspa-tH4(0b8qD=UwRZA5ckX=h^eM0OsY}RrefszEg2Q(=YxX|d@M+QY zmA2pApNQ6+n(i$tQ@^qE*H8HilO~^S-L+oZ$LjdpBXc&VO*Yd!(*C^G?{xoX&6~F! zZkGqVw3%=Jr^M`~Y~a10i`Zoz@5ukRn&VPq{a!UyiysC5(sorb-OypJsQ8P?p;H^8P{L{@iD~{{L<0kNc;**(>OR z{@?x ztwL7^(+{htm)a*(cG^4aw|7wyS#tU6xe2%ChH0mTYu|Nzk)OXzS*mqH_tXD%^L6L4 z?|X9L`S;>mJr}o>f8AK-E&SMfv*g6tElVbEDU|^wb$5pQo(E+*T?}UWtePIO{Bokv zOb!;N8E2o_?pb{DGw0r(nFSU-DxNvFxAi(GI7CNFo6Y8(eYQ>Kbk+_}cX#$i z2ZrgVU4w&#%XZ7oKD%t0=j&Im4y70+8qE}N6>L7(a4NA(0e@--!y7;mrBqT(Dhplk;-B&gV3iX@(mMe>J{XKr&)%kJ4#UJnFEnoLs zo>BX3edgSla~_ZL?nS-!Nb`C3lt29J!>--)m)sLoUH(Gj%-i+F2PHTEJT4w9arS3S z-BXEwrC(X+RNj1S;Xl*Svx+Nhe(#z^K1IQkUKro>G>E#u|7u_6N97okYP0ma+b5oW zw`a!XW6L-G*co5+uYcXs#j74%xL)+FbB^i4Htq9s&X)Gqd+DrMp(vSs>tC~sY*)|G z6$RfslV@6(&Aw^uCdk7kc;Uz5TJ2NXw zNlLb2?yIj=g%&a?>FJxRzGi`^)2B~Vb_cEE%*xV=jEr1me)4S@sJRpvI5En|N^eU0 z>BBl4Ox;}s_0lBsaS%cgaE|9&}EM$hHWlUV%rysS%8RO)21-~HTQ!7E;W&1s9dth4S@R7_Wp|$`qC*g)h5>?diiD0Y^7X(`;sLpF?!+;3nVsI-sjG#s;av1vczMOOL4KW zrlzJwms5WJ`w5rMe*OAYf`@HS+=cer~_>Tpqd@wF=Sz`K118@}(}vuDn; zXKCB=@1J{daq-D>=h8kuJG*4*(v@+^`|q#s`rx1dni2pF@~Ejj`u^Kcs&|$9jlAuv z7nND;+P&LQf~UG8cJfJ=`g;2&1%X~SPj7Ef;kj;|UeiGZyZQXH&n`RXEqq$4o!fJH zdih?-{nD&~x4v%fDBP}MWwkf4U*Gg_o?FwB;NO$Vss-F8eB0nY;evGAJLy?_-0ja; z@VzNNo?fd&6%i<5L1~*hQEOVMHm6e$#IBH+Ke95@L@7}@n-u3>|RHrBC zIBYGK-ul=2o4}d0%`@lBky*8BRfpSRk4a0alFp_Xo0^((G&uxbboh6v^!2repMQ3^ zDEZ7VVB8z$@9fNMHk)_-_3ncS2Qo}n{e6FD=VZ;`We_3^ z(`Q)h)_dq-!G^N8Q9f$I!fHMXwr!i%*2cCcPCxtlx}|H@^qe~7b?Bi%lR`jT+`jhk zJv(;HSR1{4kp|b#pFcrUGt;KEoqw(@z%gOYoF1LiE=q#A2j{mPQ#_EgvEa_S*5jbk zRmxrO(5leYQ&t8qm)pj;<8EH*!`ssz_D8<@Jz?`E{Us;kkN55KTBot6G4kc|_ZR&F zMMPW|u3z83YLymf4AaZ&P>PY_X`?2E6>>q5)2{w_+}P^elqLK=dqcRzzsNrl&A+=I z7wvrU;>Cg`OISQ7UHSHLTXX%rz4H(Lm#;bVW8aS%k9g*}@995S+;#g1_rW8%kK{gC zaB^}wzhRfxu6uLuUfir%vov&dWrfZyEUcKAI@5Rdc7u&IhaSqEa#WS$Te|lwsDXdM zVv^;X%%?&^LLrLN1-+JTUp85--nLed|M=3mXO0|6Zp#%HpUuh1DIzL*@!q|@lPN*s zuXxjT*dJ^D{#K4(=6_E7>dV4HLLK1o$2DQEH~f9KcK*Yp3H&YwJoBy>eA|8g_S>?@ zW%aQuuIFv%*KT6(R~O)zFnRLg&Qwq?A z`YX=r>FawpKjX+jxAoU2Pn}xo(f@P)q}j8*^YY%+Us1ER{v9pV+Xey0$|pOk&A7YI z;Iy{&%NM*tcennkeSbv!{nq!lOicdmHjq^5+AQOv;d3DA%KQC|$Ldu#=?HVMaJC+D zc3J}-b>ow7Qb;h7GMMfAO8T#}+Klj!vPlzD(qjVICM`LtomI2H(``|R`S(qWclLi; z^yILuOz&YA9kInrw@yybSdbb68YZxC3J|#<-7C^_;$VslN1$y=)6UiUCw@$nY)MiQ zl>GPU#%7bPTi#x^Q`Vgtf4`(RYL1KZ{9<F?8>@v?*eOsWwD8Bo-T_>cQ%^Gr#*osp5LSo-YjpY#1` zi62ZqoIEZ+vFOcJnW@s}*UBV5pOn7ivA?|0zb(NYSJI2mu&z|GUhBc|Pb%*3+tM@d zPb4hb+-G`-NACA$c}*{-51T9h#qa$6&R^sA%b6b5W|xy^owfD9@3k;h;-UDrpp8j( zyvG(>{Cp9_Q+@eE!~TD@a(h1N`c=H~)bsjd#`4+kUd<27CrZ+~@wE;0XL9e8z`N;Q!>e*@lvTulM{omUQg?N4@%8DK`7&t^M=(x%h>^61K-& zn@;Fk&z|zf*3Yjct>v2HK?Z7Tj?{ht}3rg>Z6He|@3oD+ZV^iy$J@8_RXulzoI zxNq(L?Nj;Z{bVf`&sPm5z|7d`Jd|Fuh;aIzV~?R&uGqLt3)jT&^*{YTKjC&*-0bZQYTwQ6!*-N%_S^1e%HMPTo7cS==KXE&9BWS*u9|lK z@%`>?#T%Hmh`6Rb-Q)ga$*Jx)zb3iQi&@r}xV|N(=F>Nuu&~_$^PldX_VL5x_zO{6 zC%8Xft70~XJ=?aE&lE4R2O->(spl5&@54>35+btH*-_Mv^On~hGCeP5gPGTNnh zxzWB9m9C6s3sSgVJ_`G1`#<>Ezt4)>wzE`zf0$ia8+mx08B<$JOxN1bJH`K0^me{T zU$g3~VDI;tMOMXq+?z8GUbgvmey7FqJ7-QlJ-5DJv$?7Lmg(t;ojKa4PA(5hyYg`5 z-zn_tXPlk-T;@2xpM9_Uy||N;#Ou%f&b}M6=d<;@`k%tr_7uw7+rM|wvrSbp|68di z`|pOs{C82)^lv)`Mq0Xk51Y5=RfM0-Z=SlsD$C8sdLI6g)_X8%vX{lXInp<-T{)EA zAA5A^ao^7D=}@891&-$(kqalDCO+1lq9wU-zCe7pWaz-P_+9~U)a%+l4&|39-c zGwVu8Q5EDa+gN#7Ea}=ui$!m@lxz)-uwt8huj`)1hINbhykBLg$ym>HS?p;0y(>dm zJ@))1^}0iqlf5ev3)K(aUDvukO?I}H_Kg4AU;lXMsTxy!Uwg~1CX(!IFu@n+ZAAD9!%h1cJ!XT6+$HtE`$#XleJ z&A;%7&-wWBI~9+;OBgu$WV`L}w(xW8o?ZF(p#17@)9?PZI{VI`MCZ{l>G&ng4Z45Q z{#=x?%@*677JKaWRNEb~u{mq=7QbDsZc+EdrEk7zcjRWjhqrdeE!y_~!CBi&_fLJB zrMKw!Mq^1=E%WzFmR|SQd64+_j(zbpNp-{QYbAbr|Crb8+baC4{8RsL`RCnpV|Q=O zOMkc4KJC}V%QH-~`M%ripK&m1$G_(L#@W|&($3C0y5v&Ky1KoSWJOC&%HD=&HOZvD zp0vI4`Q?R+!uhrY@7x&vn`}%u=N`r};d-vpPRL zaB21V_nSJ}SDkWex>Y{sSiNAoiHdU=+n!^E-@dYYCr)p#oDsic#-av=1sY6&tSoy4 z1Jx%^G4H&YygvQquG=%eb*EeYmpH!e8(Yz`_~Xo%*Dqe4#>gL6CHuaG6cBdmt z%ZM&*PJDd# zg4MnE)_C6e^?=*wO;wAueC1rz%fgZWKd~LVSEbJRe|Kqu3|GRo$5ULAHa=Yc`a7?$ z!TY%x-)8Rl^k}lk*L9DM^XD$zn8qttFBaT)YU%nq+1t@6T*rG3EP4}V@n-F_r|I{W zUcG%{Rh7EE=gYQCuqe`5da*PoYIkq_zO3h$W-3R1`^Ik4DrE8P&Ss6x+cp-3 z+RlwtTs9}TZ}+0ciO0_!6I+vVmrMU~zyHJ2tf4+T9{7A(d)QC>Mf$~J{|EDntmXgL zDyglXzH63L)8DN%fBaM*>sxgHnKX0G#X@~;EB|9(KHdL$=x4HBWRa5DtsnQT-#y&P zdNgLzwrRSruYWv0T_&dHS;)CJH4~oBU7l3^R=y_hr=q;RC98Grp0D=bKb_gV_($S1 zt8IA^hd=9E?f9`K=8b3i=R1?CC03|QE?i_gwY7BWm)`9KXGH5C&8to~o*;Su^fdna z5AGhxoMV0R)T#by%F|?fH{{xNYgZXYe6sxhDfq>mJu|=U>fQ3XSYr07^wWK6%jOnK z9=z4~H}tJyk=ofbH=Dqo_46v%>m=-sUif6kWsA~J9NToOI$fiy4WG&$_t%#`f3mIY znpw%DTU+|X_ls0~ILbO@`N^EB$ANOct|z(0&3Ada%YOyWj*08{wMHuM|95E8;-!B+ z-DKafpyvFaFF(`o9i3$So~d5h|IUwWo#pcG|JwaGZ(KO}rLu2G?KjT(Yi>Fom~zPQ zxbFeCpPyI4)&ktuEc_!mdBgA7KTP|Ln*Qupw`N2xNdEh%|3{6pu623XWW!`B!*bU1wtwaBTFfXq_j8Jub>z-nUDxu& zll$ytub<*Kl=-TF9 zzrN|U+=yLq`IQIVh`9rnr4akin#k!%}wf zq5dodSJyoHd_LTu{vX#aWh2m>#rxE`HeH_zRhQiMZJrhq_W4k3{Zj3nb3ScyTI1EA zyE<$`l>y7x=d2ooOYP&+O^Wl+x{`%Tgjd9 zCHMJR_4^CU;y<$4O8+b>)=Q7K5M)o-a9eYxg`oR?zI!#Fa*LX%yvxIfmhwnQhKc0%6Q+_LRPT94e zcfQ|B>*3RX|F2Td+gvX>HB>sRyLF4;(kauYPnL~3JXwBS+RN_s8yBAUdoG^;>Cp7t z8^6sy_FuPqws?A6@?QJ7pJKS>ZGTJ6-~NT+Zq2_h?OSec($x1%xqC=;P4rj2_4}gy z!zwKgEqiM6AmNLPadi2X3m5JtXDZUhTMK-&c}z%+`!EteZb(>h5WcPgkvinN%(Usc`i{?zt z<$Zf4zoPy6{V4ZaCyKm2O}cpb%>MUr4Iy!Um5O_QA5zcx^~(8P^d*<5C9|skTTGuJ z^5CSnUBcmG^`CD^$4`v0nD@+7|HHTR`5*7p$|vgSt8ZODd6t~G=gOH!eC~ev(#BzC zntV!IeffXmch!%a?fw_BhOVs@c$@roy7r1yQ3tKLwKy0y%zgg<`TL6C)0+CH?}v&i zwk}TNSaa{f->;pQtSz(7?G(woeehG4{?9*``P`;VPyUwo;IF?Hr&-8DUn&2IOXu#l z|EM-wYx?GtQf9#gi>p+&s2ws$MTR7r0WV`g`H4P3xW>oPAFH+7HJ19Z#*^i0?nze}0yWTa)CAysAHjm;Cqib{m@)yk9*vru@J6oS+nQ=P$v(%4=$^Q>+e5P;nr-1djO_g}+LcLkS$BJS$HnY}S zwCg8}7d&-+9Qo&g?~cBIqL-hPS7c`MegF4VbD78u_FuKXmfPGcIbvJ@?Ga{AGt@kIvq1>-XvW{D;3L*Zz6BNPd%M z)QOAsJNu*c<{kR>bN}Oq(`WB|v2A|foT<)bSyRO8>&#XssTcn|zdpq!$;fiC(2XBA z-rDT9>+L@8mvGT~YRrf4$7iPSUfT3CS8mtmK%M9J&ihWE+gT# zKXcvY46nHFVWSt5SnkfQc-MD3pl?@K)4b_FZz{`{Op5#Y zcj=po$8P@&uAhAW-1ba|vVy0}>u*y})UMtAZnLw0jD9zJg`SA(&Gen$-YZql4mJ@| z+?H+Fyu?_6(`b{Df~QiKOz{1djz@a_du5nUHmGR1EH;|tckAofg#x_p0$POQN`KFC>K7XT1P#d#9#ChZRp1r^w6|YZN#I zI$iefOINk6l65(3v?%XE?)?X%PrGE4S8;R{@ukOVreoc)jgGH+!@zc&`7?Fq$oHbFi!G z#*cF`WiLu3CI(JP{&`Y&X35U}hqGq#{&^MHX@7U}N!$IAhcll$lztD%`|F<|P6KQyp&3wJ>SG8q-B;;$&n(XcC6g_?O3vV9PK54H%|E2oe z^Ea1%IDh=UVy?-a-+EJ~9a<4+@PBd1zb{8rmu%a6_-g%xpQnYzCtdj{X#W4am66*` zP3xEJXJ*c67g+nK|M@=0U;Rur``N5x zTUPJ5p~!!-qxz~#W&*?4t=2a;6bduU-k!5?-NMF=$;VcGJDljH{dm#s|EHGA*PoE) zzwh4rIOg5&tCkWaN+N#GA8Ef&a((TUb*sy>corkGnBt*Xz1%O4ADX%S?%6FHckZat zd-UdtN|4%_hmE^^_v|fT_Fm1Zx96#%pVaIfuYa&zI_39t&V0+4kv}bMml!->H+yE> zlxDm4etAY`QXil4kL;Qos4m}nZr-s%@&D6aEDF6+b;;uMGV6$K3+H*9+BqkDis!Dw z8&=0#FZP?+{CU|=omKM3e_URFWL`+m6b|F_`#Cr2FbCga@!R)Bsz`>*dS6xl+Or0q zHpLfRk_J?)C90eUy9S&@SHG9_!ah9bp?5W|{m;*55h(PHoI>=T04MpV?(Po}QlV)f!S#QuhmI&7PfEvR2jm&!ky=C(g3C*ruk( zp3C^H_Do;$Z0~Y^2M?LUJx}g`&ivfD&x7%Bhogr!vwqD z!d>@2yIyad!YHsH?c{Tlez}t$J@wM!K6vNt`^~jU$KibVoucDjE{+N>UM^HVe3Emb z##%Xf!3DdQGWO5tyl~sieg7d1U*+r?c8e6bXV<4+G1{iVp6_C=Qnq>b^7gi4Y^Dp0 z&CRD@nQ~?Cmrd$xv*RDWY>!X5q(A@h8_m`?%H6jGJ><7$Z&T=z@OPY5`~O+{T)k`i zK4^U27qdM((OYu*-;a7~OV!^jmu=abdnGSlCDq4LQ|xiwTYlEu+u;VeHFlhwoF_gV ztQM8vYAvvkX>p1Q6yoiD&%8+E(yd!wi|_mTJ$I`6csrHD&*Imb{c46oPs(?hE#T$#h9c5c@UcRJNi5LC&pFK(5@pYncMCI+nI`7`P%{T0f|M#rS zPsjJ*_J5*!)y0yr`8BO8P3F$XRN4RU_T4A>vrgaD-`lVAlJlio@!6+4YXrU<%r8(n zcwPR%!`|8{JzE}6*L(6(U0+Eu;>VBHKSg;ROA6$}miOMd^myl+S*tCrRyIC=SKraU z>JG=bl5;liS+wG6d$n9toY^+7`)7GwwEE}g=K8eS^$t~jddmH~I=ttu-tp<@Qx$Hx zRZW*8w){BXbH(P2lsm`n>KXhq6Yj-acXke+q0&CJ`BzwEU`F(Bseb#<{(Gj~yz}9K zY)_fYk$uW_hm4=|he3IDp|4y_QP*Am$+<(9R z!mleAE?5*zRO!5SEo{%GTUzWp&3c|i5HhMt~AT2%5*N$Q0Ne{@^qNS?lhGp&}o8l%VMJ@ z4J9ritG^Bw{%=ohul#;lL;PNq-pWf3x~zNs+8dm7*=i_tpyYv477mX%XtI`Mop7)Wl?;{f}S2UzUDP+!|#l!PBv5 z#jzK!d*b&;PVNz&Q5-AHceLZA%@+Q}nH2|DTtEI_wnOy#OWqf3YcoZ7kJhnlf2<)kF4lS?Ny%PtTsb6aLJy4Zqch2MGZQ-Ten{FyEvpP>2k3(Kisdkxwq}uch=cw zo8rEIjqZOxF`;bpzqzbBtMXjgxR%X7UU}Kg@Q(C?dvmoTH~Jpm5?p-q%QH5v^Y(LX zy#ECAOFz?fH-GDLZ0YQ8IcpXg^5{+PzIQK<;Z2!!W@e_xrGN4EziRAi?Bq2yHCJu- z3KW?&Yu1TVr*36??Kx;RN#){|D=mi~E?B?5|I8VmFTd`7zT9;G{qgtTg*jMGoIL3$ z!1AZg{_NSa3>Gqcmo8s!7iHL_bNTAk*4uC01XzNCf;@bDLhSSN@{Ya#{)dXNE}J@cZtvAy*I&u8yTr%KFAV6oa)mkG=Fj{ucW>V8)aXh{O-(eKnURyD zBEd6h=FHB!dFqfg-%(Lgkd^Ds&di&17GHjO;`Hg;k9V;$F-Ap2F`PJY;y~JFLB95v zFJ369sgrm|^$Q9L;>+-x=+Uxk zmlZ>amF&))I}hKJZ|*#rR8ms%pu}qb$FE&(i+9B6xdf^xDl#rEJb&~+Z*On)-uU+9 z`fqdR&b^Uib|=p~GBWah#+~0zE(cdMv&`-kSuQ&HtocBLCj9UX%a--LZFBGF4XA)}3yP zE#~^^h@EEqFZlIm&6e%kS2qc<9Vv*7y;~=)bu4$*tXUs^|CQijTN9?eNaNCt8y@ND z&jo%b7}b-$y?bTXmuIYe*w)6TBgU;ZxpUR3Rf*3ZeXUx#a^=nUa~?msl3?)W^1Imry>1_W z|BcWQtFe>k<>f6YExia{y=7uza^e1c|I}2~(9lp8CdRF?$;rxo%Y}E}-FH0umxqc| zX{l+G!h-^fkd4p3R$Z+tv67XQmHkn}9Pc)F?%Wn9MH{*E6ZU0gXLGhX&G2FWXCU9{ zl98Q#7`*p7BP;7xzON|A_zJ&US`=)`=q+E{DDiBsoU?Os#T>uouXsa5ShwHq)#!3r9JnS- z+ikJn{`>w05-yWea<(;EFU+on{W2q%{!hWw_`Rh8*|xiSW`IVE-*V^m*M&J)Ca8FR?W)=vmlAm_$87cgLkA8w$E|l4alLvhZS%_O=X1=0 zL2Ci(?Qh<^siLa7G4HOGOJK^MA0O95ZcaNP!|Lb&>a%RPa`$ep&S?u7J|8tX)XiCngRJ%8jhL#f^f9kD|X z4HgD?)NbfZHj(o5_68lWq8q(!!tB}I_usn!!br{-4rXCpKN~_8EKmw@+TFr@hO1o_P5Gzp3r^+!O7Mj!k>Ucg}9j=LBFy8np#>+2OfXCaO;+rf`EdmYU`al zFJP6DLnzT=(qz@4}riQ>IN@rIdSlnQxDr?W}+Q>YNq|#H|k(?KGS1 zE1GaIV@iOAi_eN%Pw8M?Ck2w+S=Nhl9Ivz z+L3i@Yxc|c@55O?Bs3jVur7b6BEuIP64G)oVZpj}eEr9p7ioZYDK@QMzMOsY%{6@o zpMN&YyrgpV^2@JPq54(D#m0KmxmREHGLSfuv~k5k-om_jlO2M} z1`<41u3eind9t&=KY!kK>BSd4^77Wb+F7|Zr>oRTcIM2P zSvL;<`1rWp<^~HBqiK(_0LO~!wo<)(mf;{T)_;6$6QOeKaAs9?HE2`GtA&(g z_=1CioXX41eSLkGEL+AWc&2bq-1=E}6W`w2x@5_c3Dc*$S65rt?T@!TpM0z*@pzwX zN_zU@>#s92G6KYRii(O}ym_bm__O@{Ar+3wJTYp%a;zjNAde*awS zawQI?u+^m}oWrA|rPr=q`zofZyL+NaW=HLxgJ++AzIf|a*WJ8u+s_|=n;07h+fD~9 z-TKdY-}qpT%Jvi);Yq(g)O=w*eM?RL2ImLUkM}-F*zfyqm!|Ue3BUG#1D}I=yuG!_ z8zb6Uv|oI!;^N}E@Umo0?Cxm=7Cjd;jy(RjqUlZ@K+QMclbYoGo!AwWRl!<1#qmtVeg$tf{$ zq1Fu*PbFjH$!E^^%$hwLR5hBKih52e*nL+;P3=*E#fvv@mh9hO?@_Z^#S?tM4rp&| z`(a1WI%hL$89w8pCmsxLJra$JG&H)Jjz3nE;1TL|ySnq#rXCf~RS8>f=1iG3Ehspc z*`ct|@aom86?@~h`Z_u?s!i_Px6khCYN_v2wr|-|@a3XA|Hnn!w`_Uv{kNuu#)7qL zbN9REf2p!v?B1^?)VZPTZB)&^|H<$7FfZ1+X7^{#CfnV!eK)<_D;TBlrEi6Xgy00F zMG+gWckdO~`F`u@J#HlhuZgP~TJKfszij=I^GfaJufKwu)C5G{Ki^yR)aHLmaar2A zIhMue_I*B=e{bdS`}^Of+1J(8si><@o{FE0Y)BgMLpUZ1BM5*D^8_qN%cJabUM=_5yv zF1(nbp{tvEpn|dXGO|xMhn-ubXpFP>}S^uG?>ytys~qV}}J36Vr(kCl>75B{ltYYt&jbOUs+n z@4YRXJbAKnMTLc;qT-V$PZYo>eEt`l+1J!`Xy;+eGy`*QBR93{K_5TIe0y&7a_Of> zpDaG^in$^E#$@aEup_UJDz6GWt>7V~6&S>m)_UJJ+p`UP$zgA^tWF-9m z_xH>D`|}?k@BiJy5IL4OeG2n$Oxn#sY>zkK7yi|Gd2u55Rmq!}cdLuD*XDV8a`Lq|-`iWgx%m0H%ja(2x{yC{!N);c(Z)u` z-roM(o14x#IXYphrwXh41q22*?gW6<4$F0aUXUs7TTXaH-3k(5iML$)xq5HhqQ#3nJv=^~tlP9{(>aNtw?12VCfu^V zcW-OO-g{-|9~SMbIqw-0GbbOk53%SPx1y+sh=|`)8RHqVRVCGZdPR(;te&LfB6M)g z&F+e)TX|FR&mX8sw7&UANn&Eena}6<9h=}{9nGyJ;@NiS{W8}{3$MSv{r6#>VStgb z@y44u`&Pc5HA~9K$f#zbd=!t`R4>)Zqv`zNst*qwCrzGQ zdw=ECtoh*|d`dYvIYGxRJwD#gd^YX`pRAPvN0Yvli;D}3+T@esa}T~POWu6b!^g*E zT58$*d%ih2I;yIwSFT=7+3t%4i0Ni8ky(buYt5jqmRZifyXvZ(oCAl7|!`PRIg zoFxkuFiiCVU4R-H8EG;1oY~iFufN`S`|YyL|kqtXkzKm{p87ui;GRn%!I_n-E(qu7(i!n+1bhUx;f|OzKztEn3{Ss z+Kz`_{GxPgIngnK}D>(r(=FekqrDOh(2#Btjr9TjlS$-7`K{mnrDjbp7!2 zbZK!FxW81nu+UItd71K!HHu0rt*7_MIBuWf;UkqAzUY7Ir_Y~1e*f;i`s%!?jiuWx zV)edM)k-J(Ex-Iz$?-*rRf*MHeU<4NT{C>teAI;977K2TdV6_B*48K;G480fV)ga) zOw7!+FL~LT^93h|t^PXou9LUaT)*d+E7(|A5)342j+a{9m0Z3mHS$=}#s^=kYLAtc zlx)$T)f~0Rx=UntxFLv{BmT zoo7oWd)@y0`Ewy_D+>$Dk5_V1QeAQDzfZj`RCG3L>o1<%sa{XD7k_;&b~e|WW81XW zCx(_CNxVw1Tw!F@&OG!4{x3pf(I(q&*|6IT4pYvw>s3|Ea`DMSK z)>@=HuWa+pH^yDj@20AFK6(07P(a|rYVK=M%ky7)N3ETKOX=h5=bj8KZF;{i-e<99r@-U-vI$Su=q5fb=U(yE zTkXu3{CTU3)bs0VCOp~4`GO(5)^c@tO{?#GpO&A~%YBb-oO&iU)VF=z!#{zKmh@cB z|2S8-Gvu$}yeYbGNt)FrW zR@%&7e{aUQ>es~=m^LQQd+;|?{0EPRee;Q5^S>K@-L&t;Yww!|-&N)2Zf4%PUC_7v ze~yBXKxo=eeUVo)9(_}rph*Fq+V&hEcs?d`ss5ydfT29p1iO;qr*U%S&>t@ z^3BzD58J)jf2&QV7JdlOJ$K(@*`$RU`#GvJEa$Eb>sveb?0&l$?s1XKMFm{ucYbOJ zS4l^HdKzvq+1;QnLuvnv@~vyC|IfGi{Epv(ndwE=|a?^PE0X>HZoR&(m>`7;ZT zy*m^)tMS(+@g17GB%;eS?MIl8W5*Qz=w-+Y(v&HUOUYK!?+veZ7w3KeK{SPG8?R}qm>A?0(Yie9tbHe7awJA|Wgw;77Tj>%_dfyZ+w1`olMBiAsIymnz$4cK&~{ zl{#YHvs)+CtMRorpE~8Gq^x{f_RQSVQ_@m4)LvFI@|$we{@Uq>we}xB9#1>AG~VyI zfv&}>n_n-Nuemw9+i;Wk^uE`A=bDb*sP=!*bRsLPZnJ1^md-{ov?B(W-&%+nJiiv;Tr4x21779=KTgdPTNI%3t&74yj^G&5M~nTh6Cl?Og2{_n%ch zy(IBxzkafycEtZ%llNE@Tl4dtdvN35)S5qyjT@)Op7_ybxyG(gRMx!yr26roA7x*; zSx%anovG-WZg>Bf^7E$!CHKATeg+(Wn*8fg*_TIOL;a0BZodh%-Kamkp;cOAi@T8V zAH}$ea-p-%i`_PDTbD3Tx9N1dYC+Ctw^M(tg|mKl9=+Ywz@WFYPATZ0oe`hB!g@#F z>r-5e%5oJg|E4jm=ATgbgTdYZiolE;-CrjA8Ay3Ye12=R?P-|c%~TEL_V0^|PES8` zKZb)bc4pOCfhv})$mvrZSDMb&e=eJNX>+l}#3Ys1%gAQYX?-be7l5??;lK^u6%hzDcU?oK@T2dW&t$ z*^wKI#6u_bO|fG(*tMW|e~8nPEVG<5swP%bp0p^act!p^7yf2twt|(P>tbz&EUt)c zHO7k0dP}@L80^zzm*qLIEZrTxDd}yZR~KKxX1~T?Is1Ora7LCg$+j;uHdr-new|&< zTBH6C|E52>yS3-mk%>K$R~i@Du8!FFOdu{)m2%ca+MXY}pU+yJ|KQg}%_nPrPch&BvrTW~^(2j$^OxlL9$auU z{MB{OL3a1FniFa5jZYZGjdgCG{iZC%#_#K*VSi#*vlQF+u+3TDg80I(HClFl6n38= zP;e?rxLQv8dYHk7rii{Z_u99mmn+Q`opa*c!h<)D{8}HcqW*i%tsO3oj*gBG|92lu zSWx`@91A=9|97pm_2pf6)&3k_Y>8 z+cp>Z>ec;HO54AuLq1F|IlOoJtHshcH>8Qa_xmsBo2A9LP048Ws*Npf0%B7=_H60z zzi;UhkfrtNZ}bVP%Dnumbz*vVPTcxwJY(xwy7o2am)&`Gbk`M`^qXF$lix`= zb+6xdc!DB}>66Vr?ncV2VB}bIJ>bSB)8^VrIkz|?j(SIiCW)HgqBE|&S$6G7|3w+c zA}^uFHi0TW!5iCjoBvk&we?H*G^j8&^6V;AdRAJ!!pwBLbCH)(BOB+9bIgm~3%@Go z7wuRgSnR;EXlK)=)^ZdtcIF9do{B`GTgUX`HkB^_Oi8q^n_4u77N7@SuPS!ljKYz&8 zwtCu{wE9k;<$V`L-rPJfjrabif2*xO`1`uf-`MZ7+@WNVJ?qq^Q=Z8=_Q?3$Kce7b zqQbYYA#dwek&4hC(aIft{)$!~Lh9@FKL0Ba2P3_C?EErZ3;`KXXme$wQ(!_S#qqpkTV5Wakk_Hzywom&jnY!O($`ZB00;{`sd1X$;oqxp7CopA} z*PM91&FT5e*I7(Avg}%-V1B>GvR(K0wM`{Y1*IC7ZMv)Tx6WAGzG~|G&0ChJu}<8Y ztbbGV>+<^oJ16<(uYKTgvT)n~ABLaHLINgiZnypIm2oQ4ahmni5bv#z62k&O;D>UD zH=ml3M#sL)l`YwuIQd>5d2q0HwyLC@xU2hhgYtV(A=$kTwiN_ksEnz5x|io~p~3c= zIyvt9JG+j(oj)n_O0wy+jdc$Vm&Me}#U4(woOowqpW@$_<{n48j_-T&;ho8)xA@%689cihwE5tuPKuB2IWhvnY|ip(8h+;=wq zh|c>K^6~TS_Zw5L#=Vo3cW*i66XwTwQT)!?&G|kG90Dq$Qd3V{-u`C6^&QofPwuAj z^nLtvdAWDx>(gg%+)Xt(+8%Jvd|G3s@{3C^mc9uPckA?JSE< zo=tiE(dkaFpp5mN&YRtQ3qM|eROtTL-astZ+3dI3oP;;2(~_Txv+EykPTp=%94mPE-OrBW`IUW3gYSySMjuMguXo#i z{hi{{#m7`S6y7?8gp)4$va_xpZkJ6vlKRz)ypX#=Y4QwWL>+Wwo38*Y)=-_KsnyW9yu;A;pMK-qlCy$c&51oUhe4R-Gw-Qri8rCu`Ov zoo(FWpU>nfcWPYU@Z-4;gVOJ~j%N=`Q+TgDzAVehwCK9G^E}>O*89`ZYklX) z*H?!QzMZY{>VAWjjZpC+jdlByR02h-jvijK00cg`2jsH5YfoIUea)|Xv+4c%ONhb}5pC`X;lldlcZPBzX9gD=~M!H>y@Zc<-7#q|O9`al4OV(AR zrhvnpKE}=ZFP!c^Ouizr_W5Q}wz$ZhZAT`p?&{3I{F(!{%3sgyes6hA?=ESCl3p?-VN}uTDQ1)Bhwu|kR)T{|-9>)AX6LW1%J9^J3e*8Dr>hXO1ol zOWty%@OsbBHIbXA@k-x+cBr7fWm=iA>XFHB)nA5KaPbiQ*rM6btZ+iEpNlv$Zlzy%Hqt&gs z-MKc>P_^%w<6MCoz5kYd&9T2Y>4NLU#6*yj%JP4Tc@`#p zwk^AMJ?PnTC6Bd-0t20u17c^mw<bt>qOaE)e){ z`Kdhb;crX!pX;t0ysLl0$mY8LOsskM=MR7V3+gt>pUhIwE1)E$&qFVB@AB`a=&!4|{nER?($V1y5DoQf~Vs#{q-#@o|9w8I|&mpp- zrS3t*t~sRztqOV-AMDC(Yvhx~yI(Y3;C}z?tqXtm{l870&&hjtaUSsTIj&LG&XbsP zFucceeyf=EH9z5sR~tik>aOy5*EMFE`##>sJ}*5*-MDb>;u~TXGd8+@mZ*Q3bLGay zGO6>z{bh$AgdeUvsb6saY6-Ya*g$vy5t zXsCt1-wU6t{))IiHxCsYPg=L9L~mo^!5PU_MtO@4828^fFg?q>W&ZKn@GbK5@7u4k z&zu&%Gx>|ho+AaX(;uIx`X9e%hp}{i08em`&;?GRhk+BH{C}fZe%RedZYP7I?7<`K z@1ED3x0_e_n)BG%sTZOjS?>S3iFf}wADNm4X+3Grb_rY4Qr+EJzbD=@pXQ#P`|!e_ z{D>bDJ0F}dQM*%OeAl}3iJRRid$)d<50@_$A7Qz2^mS#@D;-pHLd$f|IcZ9~JFNeACL1!PVvy!@m&L1)7O`yl zo^J%&9Wxf4eCoRNl7ctW&1kU=PuTS*%kANrytn0O{F#ME>}M)w-u3Y5%%2+9di?2; zw;z=}jIyS31v1$DtSR|g?XvfufV1z}TLO*(6IB@Xg|s3MJS}NdQQk4TV3(tStBa$P z$n48p6$RC-DJv~wZa2-0fB4R#$&mSRfTz|KEym@SyS-E&6Y#_isu6QebEO_te0EbeBJTfw#u4cv9jX*az4-3&E1$aTlpBrCbq3LMVs!uKKi!k zK|!U1K)}kaCz_<&4>zv~RD5*wWd@UHvsadC{70FGPYXX=)PGYh5xVmv|L>gh+tfav z`0E^C8Ka)gt&$RX;IZI@)B+Q$4;O0Iv$}+232r~!={_a!v`|Igr&BvDdFKArh-Kk# z(opOSn!SfZC~N8q?aSBg);*IA-kYb+H(i>Avp1~u_`{5MyPGtEo^= zzQ3o{V&>$(`**&*lc&y?{yBfE#!7+0$61xr{Opo-|3(X_x&$5yoqBj*@=ud#PYmB@ zD3|+5Iv+c=UDI#Z%-QVjzn+-It(TsDxOqvKV#OQ_8>Ls%%mPny#C_lSB#})ZFuU{x z6B7sLMJ02q6F2wGcCu{ScehFN#@1#h!!AF;t#5vRG?>}@G{n?{N3K+K@8bGec70Y> zR@T;HY0pUktFLC5WT^U0R@I@fTYSha1Hx1+#>tG6!K{kVE-+eev0lh}o^ zVW9-CRLNQ{PEVNw36|eeerdGDUzx2hz9wbq*=AL{eYwBN%#J(uBps1uUJ)XB;pHuJ z?+{&a^_S-oc68YFu8c}wlziTfBT?~1>8|*``8rNZFK){{SawKPsqE3F-F*woyfXfj z94Xs9qmDgoL(#>oFBea?NR(tO3C>dD@X+GjW!CDwqPDPgcJGVJ=cgV@EiZTewBq8= zM$>ib&YTX)D=%!(J#)QgR@p0^)zNp|H!@GZJGbq@wFTCyn;xyKj6U^ctH1Yt!K=CJ zTy3_#XW~%g*_FkhzUJTZmbFs?vg>rUHh1`ySJ_{iSzYw;GWs=^7dub7mIj zT#RQa-}8xYdnwI{?f>Ux%1e_FV)*M7a|b5F8b`n2C1&G6z` z<;U-xx+HudqO?VS-j2TZ{kIOB`hGv<*?CEmYtw>egtr~OY<1o*Zq6Sm~j0m=6*@6t^Ck^_{vT08Grxi#+W7X zY`6KxD*3g{?@j#a?*BU)+3lkG@A6)ed2)31@uGW2l|Ag*L7`VT%|fB$&5t?Q1xW!uipK6)pA|Ff;H?>*kJ zUctPyJ-q0<>Ej*0Ub^0}i01ovrNNPBpT*qn_9dV1TyoyO^CYvLwY7NN5%$m90;wcZzEX~A=i~B!6?7x}* zFH{aY-c6YXn)#)Hn5s`Db=M0-8U2=Jne}pz?-uPt9?sYeVS8i4eZ-w-1 z4Q>6UmA#u9N{Y6wQ0RIdrL6gf{lg9>iN7DLb>jC;sE?C6!v6nHS5hv=%W~hxs~nfV zwZ9q1xkEGwbY~FV>ky?8-4TUg!DfcKP$*7b_EAzww{3_gBX3 zs!Ch8U;VW$mZztGes=fy&obH7r>xIybkjb6Ci2W;;pQ7#zA^abzLGq(gvknwd#j!D=BM+;%zqV6XNJih(|xa-{`1XpjenoG z>+Wpm+L}~v_xF)*)yw|PnZFJBsj3A=<-*pV@BG+poAKwcgyjpHZ8>+HLYvvAnhInmSUj|C zj&3c;dUT*~twiv$58srNEq}lD+mq3Ix1#D=kywq{)HV9z1#9L`SeiTG>z6%$)be&N zl0UXNd`?iDkz}u3C-{$=N_Eqls`sLw~OdLF% z%6rmR7!|Kru%IApPO{Xqv=YI+5_5NS)Yoll4Zpm5!rwDI$NnsF+OqnE-LLcO<{r8) z%{YtX2XZ_H2YY_sOV7$y4SgGESMkj^EZtJF=%{Xt{X+HqC$8<0`SnpdYpL9w z>O`r4)88t)PjYYGl>WGEESo*px~~M%(Qg^ zmoKMRKKwUZGrEF(eojuyJK-5$A5@g6fA?FvR%6MwxJBV93R5GqBQ5LgUAO7*UGMOj zWist-x80+Rxie4xuW0*nF7KJ0T`#Nqn-b}A<+)wvLRSAG+1wo8?YgP6^4&4t#fN@= zJ6S!We#N{ir{6z5$oaQ3n2}HRT81|7&ZS3we0O@EuXgbMfpc%F)MARIXYDG#dE?mU zUH#&DdnTG5RxAF!Hn}5X>BZG+EnME+<0|ssbMV+vt-Ojqx@~T^Z)|;IQTW$-9uL2o zppblT`cE;hw{ep$|9U8}&`|55xxq@kd&lN{pSI!PPvKp9vXy_FWbg0!%g4PvHObeu z-}>E-$p+WMp4shhX=X9_xN)|G$fYvl)cq|YlUCI&+Oe-`(@gFg(ZLPA^>XEL(kG7d zpG|PD)SauhbLww3{)H*Gxyq)yPN>TiHwvpe5*@$haIWOJVEMaFGFR7BycD#%8|HO< zqVmQy@dqc(jm-HUZXj=8VLDMvSHSI;>ER0zB^7s!jPm^6{GV5T??+Eg`^?wN?f-ip zmFkN4bkX`ubU910mwn#;-*vlKc57N~=qgXIadMk1f8D?SV@i^EWc2e--zG`r?atL$ z9bYwPzTbffv*Vu~tJ}NrSars$CqHDFxma0Si)R*}Na%a`Y`s0hR4#!Rb*H`06me&y zH2Od9IrNq_P+($;r017UXWZjdL@zw$n)mm|lXTWrd#0_7-76=)VpCr#dHkg5lEjm7 z{lyRN?y=vdu4XTAxUKkaZlTPrJ#*%EU%RBQIjd=r%&xLI$9g*VR(@Le{KcnlZ_hrh zJQeZn*m9ZeUy^Tq)e4ip?-`cJbysPY@_~xIJJ&?rJg}BO&a=Uf^-9pZsg8XYW}fVi z>)sG^bZdF+tyN7?hmsH1{(o9+BjL2jaGOqDfaHc5n>9>qjy!$rHc_IG^YW$1wJ)vX zzDb;Rw{iKoO!7|EW1cnL@6=t{4vIKD7y0q#rg-6Mw!&frxz2;*TZ$I~g^XZk`U)+N_S6o$+bGQD*lB_N_$FzU3?SWRnT0eFCCqd$QWi78Zs&P{i5VE zp8r?;oPK#mQ?=2ikJ6qwb2=CYnu_30Noe?h@N>oY%pRj-rIOMiYbNbO8T zL*2FbwlF<+)8pUY9hkklhq;!$c=OiI(DpjD#jouvp3Vx`SNB1)Wn#Z!w!oRHZ>DML zM=vh7n7*dQ^yyFg4>#G5TmFBS`6FF7_1dTAFP1;-vYpl^U0Wm9G0Ej^tKyWq+b4hg z9_PHH{XFi87qdtJ?YJ_1@nnf4_^} z_p3;8yHC%f=Ii1{5B7bpFgeFRby?d{hsG+U;;lfFWHu0%!(J*A`Y?&h0G9~Y6_ssbl|GV(APt$$&xz+n--2#sGeU>?XDLMJ) zoA-_XMscrBTf1aW?<=KQzwM%qe9E7HWYaU}X)-I0 zrmbG0P;G9Xch7sWRZGHVsmLj_7Yp3j9P#1U^E1(V=Q5@1F4w;;; z+1bx(U)HM>z`(J%`g(@RI<-?-NiT1hGQ=hrG5=nr1 z_5ECZGMotq8kRgO3tk%9L#%hUL4ayu7^J`0usCBW&CFnl%LO zJr-IgvFhn!ez6bLXIocHnU`^j@AKz{Ona_uD!wRVw#xd#vOjyT)XF~amdSIm>-%Yfx2u_V%HEJx39&MDv*&&G3cr8)~Rfe!Q-OdR=mSv_AM`I_t#k*-TcnA zZQHXKubt!jyKHec*Po*jEGEAsW|gp?)LOCR*8{yit6heF`l5GyYMOVXja67is>@Zo z`L5fx<4#L{>MYxEg2Pa4R8(x0Hzn$%p_8WvhZcNR&JM;hTuQ{zby{^a2 zjEemP1G<&0>e;9M{CVT`Yz>R3hRf2enp$Gb8+v=p4rQ3y9=p^0^~UdbC(Wx9)|P3m_^{C1K>4w}pl3&9 z+VgOK!*8#me`eGgJ=TAJ>geAdo$7C8aZ$HDYP=YevX6V}kl6kEXNuI`#=PYG#}D7NSH8Quwj)unh3&-# zx9<+?W*_#|uWP=3`=63#ZbbRJ{rM)p?JHXzI=2^|UnI56woFv)qSJB5!W6ygIqlEn zZD#Ij>VLPZ=gXIpe;;!#*6%HqotVYnyS22XbYG8Rtae33k(K}1+ovb2J}&g8*e9FA zZ_1B1=T3X>e`NXOWPg$C@&LVEg<5yDryJLO(YW;fkNWLR$uI0wCa2G@nYVUU-I8pv zqQ|-U0df)^3;s>NK2y~~E;m8dvNCi<31iD~mc@dZ|BJ5`srm2ga<@OT$UREDhUtWrp4#&chse%N41|c zZ7olHCE6VE>xzinyx@aZ*z*_UN9pTH)F~cr<4L-(V4us(6e%vQlf3*2LD$zY$p{#- zv(w{z z=f7xvx$ySEv`*n4DeI?Q6xLVL*`t0v_V(oU?`E91@o{p*M8)JzuSM1W6=RGy*>m5o znmd2`zN0TV!$1GAVHfA^vv%IC2^j*>;M?5f6g|b_%>MaZbL4-1nmhG|uHYBRa$E5d zgTH0V?3u%5Z|{#jP#!wb#v)T9>T3K&^MF(Q^14qJ?2Wwk;Q9PxFS6SOzGz#{`Nkzy zYu5a$rO-$2-d*vS|Ne(VkMqaZ90}a7c*kI)`rDk71%3;TB!&h2`2Bgg?yuA5&MjNH z@@3EcY!j)Zq$Gjcb2o7>~2;@>N=a0TZ}{oh;{ zg{IwM^bg)VAv&8Q(>}{X+r`uS)rO5Tl!N}&B=4-!*S9lhZVqA!miKb|d)rb(L`39Y z`p?Te&vxyyQc_Yn_oFs3@uB4M4#qoq=B1^jJMQMCL>@~pP}sWtsoH~&6&r59wV3O7 zChc>i^uw)Nw_40quRpUTs>JH<{b5#C+wfxL3j?eFeKM1dIe0CX`@d1@ zubxlrjBm$wSGY=UjavHRH^`mW{;W)VT6gxsZ_~q9-j;zjE@WnEO7*f$KkXV2AP^WB z7!n$)$iejQ-@koEZ_2EHe}8{G!63nC?qB^E|Nj1-m?}BdtM%~11@8TFxjlF9JJ;6Q zzP`SGxqH7{OMCn8SKEr8`=vxK3tu0%d@JapV7Y$w?xUCTs^8q$*!=JB@A;eRcQ-XP z9ja$^bXvTpT0}(ToZvt8xlCod=Wg0$G-=W#4_{wZL&J%C_SoFXGfz!T4GG!O%lx3k zN|2?IPu6PAMebU)Ns}hMxVBc>Z~5o{Ydu9-7-ye-cKP(RD_0&A&8@V*dFqtcsZ*!w zu3laTnkxq35A&ba7d@Wz>Q$DBRPXuj9HW^RUVjx47oR+HW~Ty2#oo9{lO{3T*jo*X zDH;2^IV~+LeR8&5si~@)bU;^e78Dq)4qFS_)iY&E%hjyhV!hpW`)=mAt-l@|7GLEhfpfh$8!Z0foF z_E?6Akf31W*|f!r7B$_t5y9dJ+W5No;)!!}tvh>qj=U@h3J7pm?lA%tIZaJW zhYlSQU}0=tXnAer<(E%ROjLGpad}W;wQ|LZ1+~)KeQhfSgcsR`f%Fjg;%pKW|(+Q;bCpv&so3fU`#;3g=hb{{589!?A6ar@t7In z;~6G*UGeYJu zvE!sAWm^w;dV0<{n^yMbhGS}~YT0ht>8D#yrW|^lc`tLd>iWwsT_&kCHO*pne);v+ z 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 VD5%ynm4ShQ!PC{xWt~$(698VY9uoin literal 9487 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 E000k}RsaA1 diff --git a/doc/src/ios/creator-ios-dev.qdoc b/doc/src/ios/creator-ios-dev.qdoc index 2192fe9682c..03b680783b4 100644 --- a/doc/src/ios/creator-ios-dev.qdoc +++ b/doc/src/ios/creator-ios-dev.qdoc @@ -84,9 +84,8 @@ \li Open a project for an application you want to develop for the device. - \li Select \uicontrol Projects > \uicontrol {Build & Run} > - \uicontrol {Add Kit} to add a kit for building and running - applications on iOS. + \li Select \uicontrol Projects > \uicontrol {Build & Run} to select + the kit for building and running applications on iOS. \image qtcreator-ios-add-kit.png "Build & Run Settings" diff --git a/doc/src/linux-mobile/linuxdev.qdoc b/doc/src/linux-mobile/linuxdev.qdoc index 600c59812a1..ed5973ace28 100644 --- a/doc/src/linux-mobile/linuxdev.qdoc +++ b/doc/src/linux-mobile/linuxdev.qdoc @@ -119,8 +119,8 @@ \li Open a project for an application you want to develop for the device. - \li Select \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol {Add Kit} to - add the kit that you specified above. + \li Select \uicontrol Projects > \uicontrol {Build & Run} to enable + the kit that you specified above. \endlist diff --git a/doc/src/projects/creator-projects-settings-overview.qdoc b/doc/src/projects/creator-projects-settings-overview.qdoc index 24dc57d0818..df2b6a61a5f 100644 --- a/doc/src/projects/creator-projects-settings-overview.qdoc +++ b/doc/src/projects/creator-projects-settings-overview.qdoc @@ -52,30 +52,30 @@ \image qtcreator-project-kits.png - To add kits for the project, select \uicontrol {Add Kit}. The list displays kits - that are configured in \uicontrol Tools > \uicontrol Options > \uicontrol {Build & Run} > - \uicontrol Kits. To add kits to the list, select \uicontrol {Manage Kits}. - For more information about adding kits, see \l{Adding Kits}. + To enable kits for the project, click them in \uicontrol {Build & Run}. The + list displays kits that are configured in \uicontrol Tools > + \uicontrol Options > \uicontrol {Build & Run} > \uicontrol Kits. To modify + kit configuration or to add kits to the list, select + \uicontrol {Manage Kits} in the context menu. For more information about + managing kits, see \l{Adding Kits}. Each kit consists of a set of values that define one environment, such as a device, compiler, and Qt version. For more information, see \l{Adding Qt Versions}, \l{Adding Compilers}, and \l{Adding Debuggers}. To copy the build and run settings for a kit to another kit, select - \uicontrol {Copy to Kit} in the kit menu. + \uicontrol {Copy Steps from Other Kit} in the context menu. - To change the kit, while preserving the build and run settings, select - \uicontrol {Change Kit}. - - To remove a kit, select \uicontrol {Remove Kit}. + To disable a kit for the project, select \uicontrol {Disable Kit for Project} + in the context menu. \section1 Specifying Settings - The project pane consists of the following tabs: + The \uicontrol Projects mode displays one of the following views: \list - \li Build & Run + \li \uicontrol {Build & Run} settings for each configured kit: \list @@ -86,25 +86,27 @@ \endlist \note If you have not configured the project for building, the - \uicontrol {Build & Run} tab is replaced by the \l{Opening Projects} - {Configure Projects} tab. + \uicontrol {Build & Run} view is replaced by the + \l{Opening Projects}{Configure Projects} view. - \li \l{Specifying Editor Settings}{Editor} + \li \uicontrol {Project Settings} for each project: - \li \l{Specifying Code Style Settings}{Code Style} + \list - \li \l{Specifying Dependencies}{Dependencies} + \li \l{Specifying Editor Settings}{Editor} - \li \l{Using Clang Static Analyzer}{Clang Static Analyzer} + \li \l{Specifying Code Style Settings}{Code Style} - \li \l{To-Do Entries}{To-Do} (experimental) + \li \l{Specifying Dependencies}{Dependencies} + \li \l{Using Clang Static Analyzer}{Clang Static Analyzer} + + \li \l{To-Do Entries}{To-Do} (experimental) + + \endlist \endlist - Use the \uicontrol Build and \uicontrol Run buttons to switch between the build and - run settings for the active project. - - If you have multiple projects open in \QC, use the tabs at the top of the - window to navigate between their settings. + If you have multiple projects open in \QC, select the project to configure + in the list of projects. */ diff --git a/doc/src/winrt/creator-winrt.qdoc b/doc/src/winrt/creator-winrt.qdoc index 03914c3a9b4..9342466beb5 100644 --- a/doc/src/winrt/creator-winrt.qdoc +++ b/doc/src/winrt/creator-winrt.qdoc @@ -60,8 +60,8 @@ \li Open a project for an application you want to develop for the device. - \li Select \uicontrol Projects > \uicontrol {Build & Run} > \uicontrol {Add Kit} to - add a kit for building and running applications on Windows + \li Select \uicontrol Projects > \uicontrol {Build & Run} to + enable a kit for building and running applications on Windows Runtime devices (the local computer, for now), Windows Phones, or the Windows Phone emulator. From 834ecc2a6b53f52c851657b9b6032a5d132b11fa Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 4 Oct 2016 17:01:09 +0200 Subject: [PATCH 15/61] Doc: Adding kits for QNX devices Change-Id: I28cc469f8ea5c2dfac030790d9d45eee94363da4 Reviewed-by: James McDonnell Reviewed-by: Tobias Hunger Reviewed-by: Leena Miettinen --- doc/src/qnx/creator-developing-qnx.qdoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/src/qnx/creator-developing-qnx.qdoc b/doc/src/qnx/creator-developing-qnx.qdoc index 44d91b89440..a42ba9932cc 100644 --- a/doc/src/qnx/creator-developing-qnx.qdoc +++ b/doc/src/qnx/creator-developing-qnx.qdoc @@ -44,4 +44,11 @@ Adding a QNX Neutrino device is very similar to \l{Connecting Embedded Linux Devices}, except you need to select \uicontrol {QNX Device} in the \uicontrol {Device Configuration} wizard. + + \section1 Adding Kits for QNX Devices + + To view QNX device settings, select \uicontrol Tools > \uicontrol Options > + \uicontrol Devices > \uicontrol QNX. Select the \uicontrol {Generate kits} + check box to allow \QC to generate kits for QNX development. For more + information about how to create the kits manually, see \l {Adding Kits}. */ From 02f5761c3d03aca64916fd22e9ede619659663b9 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 4 Oct 2016 16:58:17 +0200 Subject: [PATCH 16/61] Doc: Update instructions for specifying settings for Android devices Options have been moved to Tools > Options > Devices > Android. Change-Id: Iaaa9fd8e718609997b34a9b115e116e8a240bf38 Reviewed-by: Francois Ferrand --- doc/images/qtcreator-options-android1.png | Bin 35757 -> 64075 bytes doc/src/android/androiddev.qdoc | 7 ++++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/images/qtcreator-options-android1.png b/doc/images/qtcreator-options-android1.png index b4817e32096a95d24ce0059a84c73d3ce6620e65..1360b49cb61a9847d234069a30d4d78bec44c71b 100644 GIT binary patch literal 64075 zcmeAS@N?(olHy`uVBq!ia0y~yU@~H0V4TUp#=yWZ`Ty;g3=9mM1s;*b3=DinK$vl= zHlH*D0|R@Br>`sf11=VBL5=P?L#Dk?KDFmQpyo%0JSi!#$QN*LDgpRrF7urJsR;fdeEQo>-KZnU~IR zK>Arb%xS^-rA5i93}62@zlJGu&d<$F%`0K}c4pds1_lN;kk*jQlAKhA74I&oGcYJH zc)B=-RLpsEx4c5+>b(OW-+!BSuiD=uW1)wr!3u{L9)XOzZ>)P-rMrHwxk%uVwx))L z1s>Bc%)aEQ$Rfm~xOd{dlWI5jef~EwU@6P`aF*wvZGPL#o@rctZsyFhKi^uWr>Ru! zje8*V>GUpLkEKB>9_z{i|4lfxD(l@m6S0{-Wm~(IggRZ6E}HuD1%$;pMphoZs^>jh zf~VKU=xN@PpqE$mPRVa7xhZvtPtH+kuNm{k{kzwFl%05T-PvMi6`@X-@OLE&kKa6L z*}nbyRlW16qN3Ad-zxpNe(13C1h4ge{bw#FTgq5YI=jR0@PxSZy-wEUZ`Jn&R~t?c z>~vXFFYt4vx!t|EimF|)XE$x>3|hG3mg|r8l~p@pr!G`o8RGTRQ=EZ`sb=HNocc=1 zf8kGxETwvXWr>3=uHSgMv8SOyA%^>M>Oc3?Em9u-CtYNP+;=-%-*)~$rp2jQv3z;5 z*BEo9%>`RlZ(h&pXtDSAx-iLq;Zd)O{$6nhIX<`8PyWx!V{h~S?ppN9^uz7v{vU2E zzrAvQOwjDcFMEGmhLv?rd6s4NZ_k|Ao1*Eb5-m=>TH@0a9;dkcypKiS9tB6@Ae!rk6 z^7AIi|4%gbsMJ3?a!os9%bKMtb!;E@MqiHM6ZxJz!QXb~@h=uRORq>NEIQ55w3W>- zMQ-tyRWp)RP46VEQ!_r?l(71^sSO{0w&hHBZ-a-9)1?=8zQ4=8bG5c_=+2b1sR^sj zEeY({xk$@GhEGNOruw#HT4n$LNCt+pS zy3M|0Wx!Tpqoc`K9t*Y@E#f=C(O&_k4L~e&^Ht%sUs2zufVNntv|) z{hP;)-{n+dYVQdwTG{pZc<&5ZKE04v-Pc?}@o?Sr=gs<<4Tb_TF1&y3@BPX!dDoU> z_xnNgwMzTrZ|_P+{x~a@Rj};z2E&p`PbSB{_B}7HY$%#Ov3gHi!wUwHzO9CwvVB?o`IQXqpMkilwOEy!ddFiqz*MF+Wu33?T(m5d-pUMv>p1gct^=w z|LvC!zwte*ywF`u-|m}mY}x^MlXUSoe>$F9-6p=FJd@kdkZ%8#vgOC;?k z9Nd2ThE1~8?^cPD(8@nqb#pE#vlqO*KY14G{Ehboo97!zH!JTtyENIb43U-v~p0>Yp_nLWAEHD2k`snz`_R)*z+8O%gVjsi!+4&AS9$9evh28h+Z+W-9 zeBEsK%Drj*>?&3DV9$e>LXAC#8N}X)|6X!d&dptaX6ur<2A3_ZT5h~EzqG@=HOqKM+t+9NmfwH&cKZ9pmZkFh z)2>|1y|j4G*IS?OT-z=y6?N&(|1Zfr1-hyEvHo#0zL^Ezm+?5(!z;oZvUKzIZK*$R zpTFDrUo=j&_~NgbuPvjp7XLpWx5Gn~qe=Sid#TRX`*^fibT=-3cUU`Ds@j`@amu=b zJZ}U~p3>jf8uz%P`2Xj&X&U!VEZ*Lqe5UsDgcjEa%PtAZ2>YL(XM6F*_f19VT+!+K zy*H`$tw=DIUcS!#)=qBQ+twSCZjEDBp* zo${v4`s-Km8S+U6NgFvNUcH{k*z4=&Bl>iS++FX$XK7O!6iSYM`Jf_DbmEMqOX;q8 z(#K1mKmSrvWZakVX=kT&{+pg#C6iK5Ki`z%FPJq~$dTjlUVo*oU&%{y_!Sq{*W2*4 zd7n$qd_C2S_i3ffjjc28Ph02aZG3iLtwh`<)~V3~c~K5ak9i6(m`Y8RX+P_fTr7O< zMZkQo%PI{nw~Ri9D_N#Tcxx3qtz;;6w)J(2UjB32w6zQW9r}K7qg003%t90MO9Aos zC#_$~x%q0(k(5P|kDT`B-Mz6dPkHKDDXG`e1=BJDJz2jjQwc$&7I(Rm z&7$>c_ApA#GWgAt@M`sB&TY>=oV5P!@lsW__Mwwm>Xd{HH(pe&who)m=;QIiq2Z;* z=gnplXKj+38q%b2BzS>*lbe4z`KG63!0w1m9+RS(~%!&xHx{cSN;Cr!=h#>jZxp0tzYCa`G7+1>Gdf~-FhSA z9cqhhympFA-K_5{UpIlh?bue6E4@3H?EkB`?&|KJ-~Q@vIRCrlpWgIW4>O{ZLj&iu zdVfD2Y5L!eNk#R{ykDY{mZ=czHcvWeJx}_{=8E56xfVS+Zpd-?cE~d0-CvZPt&DUh+6g^-@3XZ2 zd%~R*UYV#}jEW28MeIZwnrws?cR5R?O*y9ZC7d! z|6i)Vd2Yjj=pRq+?&j$Ds{DWI;gbIbVpEl+9R)u0_o$bjzHamTK+&B;N|L54)Lp&p zp59Yc`|#q(;r^18ub;VBe3-D{ok@$tPgSXiTXxs4>*pDKcd>Z9n)$=iZNKG@D6~fZ zvV6$&;Aa2xc|sjr(-v}_Sawj!pd^Q3;XkiO$y0SRIUeF=_Lp0~{t zcULa1_-v_Eyy`+_U&@kO`%P@0e&)SZ|W~`jdbR zQ&6wD?XG(V?p#qSDqE`@D|ULyJ==-m>6?>7jU2z19RC^gbKAQE-G1-b3OG2H-mds} zP()^tCnX5}Un3}dRH&-n&emk*R;EKSN|B7)twsYGm^?m#&efg!N zBjK9|#fxNujztJ2gt^V*wTn!Xr?TfFtR zJM#Ct-=1aifdbOPWiLN*Gw~J6-VR&;aEVrf-o}kBZfuX2OqjFveYD%|1*JmkFBI8c zI=ZfnDPU#Dl<+GX^6RC(-?g20>eQ)j@rQ4cRVHrhSu;0I&C>k+<!s~P1;+!5bIRYaviDv4l3o?5H|74$n3$LwyZ07lfVfA7~XXFK6^y?oG<=g&9i-QA^~_kBr_W@l%o ziMPyhJ#_BJOU-?H-e z_cTPh_U|jGH)=oZSXpT)ZJwuMW+ql%{{8;an;Qz1Ykz-JRa0Y|`Nrq=_D?swq}KK_ zWIT;JcC^oW@439~lP6C;e9U+DkL$_(vD;*l6h4awX^A8WfTG~KVXM=>-ScJy_qZw7 z{`%smG%;ao)c;45{^tMq`SanUM@1Lq#CM-{+g=vF}zsj{6rB2+Kf9B(-U)c{MXFNBMxqaxE&flwg$By2VvYa&M%*LR< zqVJ-aZ%?Z`zU|E{?em*$TJxW;U%X@I)AN6>lrEX~>#={riJQlcow>!mev9eEnUl_3 zTzpa`_so;?r$beQ{t9z86~ylS=P`GE$={`a&N53H-<+NH@xTq2d4DQcPp9uab>oPO zkg#y&pXT?PtJ?Q4ua4Md$1Pk?aWi`P^yF-X-0O0E)2{t*%*np7rAD>7FLcuMJzeuB zMcMuLPu562dE9^Ej2Rw}=JFfnmw&WeEjm^6%$+JGp5rsVzL_$ur1O7Lp%-KQOOr%z z-strG=XPAHoj2o$gndrLp)Zo2f3~Ib&vXqJJ8|XB%=0}V+KqXu?yuFp^H=t}irSp`=IBa=kEXK)iiVe&kK_# z&4`wJ@>(NYu6BDz(>FPvy1(3Qr2(5?-Y&2BY^*Q$F3h8DW8WUx-9M9hXSv(Y^qIgt zN4C-=RJ_1uxs36uVEVJ*fUx#MmMvwn%oiiFPFhsVQEO+AioeyGwPN*};}=u} zuGzKxYD%7Rb!OnpnvTAYOP8&Y+Wb%@t(RXeNLjR(De}oyu?jo z5lx{dPPRK4)o*V8tHN;Bv{lAFu1%6RFxKjE-uj0(I+>(&jB1=0aeOUyWJ@@ebZyJw zJLa`k`}(;0o|#_OyV5&rl2DJ7wCCsGo&R@-e$kwL`ov1@j^ER{*YBNqh?~29(eAKb zC&lBh`y6Y&{uS!Gdt=@LzS@GwechK9PGn*E`siu@y$ApA-D$sg#U;>DZ|T;wkf{7c zw|)jrkM51m;aF$Ht-g76KzrqdfQmOhv%UrH_#*3eKhu6fnZM30BUWa%*2P;*gDPyM ze_AC} zUquNCCv{xaWL$Cfbi(zEQS;_*@7g4K{=?Nt>-Ly$6n=hw!6wtt&7}uduhF?8q@6TYl#825cORJRWviP0G@|$V%ewJ~Y zyYjkR3vg~e+1XKc?*;cK&FixZKJh5p1UN>{oZ6rudzJNSMpJE|^z00`#ycT?ex9}~ zY%;`!TlQ{iX}T1}(yA?37`WpP=jYzrLIoU64F_`)(r)>bO@Heaz;WZL*_;cE0m@el zO3ntTgmLcuTm8A@`|`k*b^n{cC;fZY*u%2Yr_pPvi`K*jmo}%BPH&}-yg2^f_0(R^ zC#6#-Y_7H3%;)}L{rP$7_x}FzTV_;O_uRNl%K2i*bb%jtZr^!6<; za{PX_=78nLGAHZmO~u!EzTMV-aXpu5r>1p*Md;?guk|gZZcm=roPX@DvXuCJ=POst z1s=-wol2H`Dk{d*JVhha>q(GiS+VlW-{zmQ!(@-`N_+HvX48fT!Y1eIkE*O+Tw{{U z&cCmo-8Fsb%Re8aZEoykp8G3p;>0M9mGPS`mh->AtGb~e&Pq#P^ElU;ma^{*(ZZ3h z!#8}{?)9$nrDWByJBOBEo>lSU?y}E(Te>>_$$CT^bxU$F?{oaPKa=t zKm5|)pQ<$R#rnqu76!A=iu)&QycDpboptl83!x$kx#pA3q{eT0*fH-w2jiVfDbJ@@ z?lxR$Dlzrmol1Z9Yqe9(FWLU+=9ib}E$;u8-xa1BoG~SEUop4)oI4A=4$fGfxAf6+ zU76wtL7%ck?LLWr8WjHZ%y*p5mB!+DAZ@ea=F>a0pXtrY@s)XKkoDcz@^zExjn^_I z3zW-`-|4-hcRXwBww>Y6^5ss%G=;Uh=L+-s3Q2i)TRgkRYCoNO$!fp!^3d|Qd4FXb zS&L`{V49+$i`pTzh#UwKcJ=xbx{ z$ccJSS4zIWc=m@hzx}4Ei-SvAO61ROKHs}guy zuK4`(w#CQC*=r&;G|9RK&HM2~_Lmm_$NA#l6(*Vr-^mp@|L1;gMX>kAvnM*glz4sR zy|MVV;)>=SuUG!|oNLU#@V!c2M%3X`cbwL2VKd@VZ(6*#qyMvOm+?NmN)JEYbywt) z-j$!ud?nR$E~fL}3UNP9)0FqYhP9`?TV~F_xGn5_M$RGI6YS`?}3iY}$BNTZ$QW-BXukX(?Tn%^n_Po}V~5+(LMFX5rKo7hm&c zFxeDN+Z`Mi*s84Y;fusdr=QJ)9ImnBA1q!~=2?!4}mSU0&ku*2oQNZIbcml}I6Hn}|ZE2ywoC&%Yi?7iaCMB$>t z67M9%&NiBM7reJ@>vTSJ)2N=0o$qAFM_mP5WugD;w7$Ku?1^`<6fl#S`@ZbS#SJiq2}guL^8d{O*w1puCu8-%$OuM&rEZCaHjO9*{i;^iQ>|S3f4~i zu{-|J+!c3izTFGj_wT$#&3U=&g%%FWoYYuX#`ImuI;xd1;dIpOeYaBP?XBi>-WPM~ z?3;%t%`Y1=&sZCg^KF`?LKE}ukk%l!pqV@~&o;)cJ9_pq`&ywVS-MgTE1BkQ7W=tW zt$^J{xTuJ&y1yqW#hqV8O}O{$*%x!p-8I{BmscZ5Jn-Gb6W8PIoo0A7I<0*2V%e9= zKe;?6oD}s?RhWEAAS?UCR;`Pfs&nSq6oy$Ehu5Dzbtb?r=9AJ>>17)=?|Uts%${du znI+C&;-@9T=j$Eo7g&99<#%6|Z+zLDVy9M32&k^Q&vvg!{(Rj}mWNprlrG%3a>CYs z+NX;rK3?IQbLe*doxb%vDMpsh+?3NC9oB{j3d%HWG~}Kg+qtDod38|Lr#ovtw)khA zzv7-gNl>~yKS!L6_jN~crDSI4)EhqcUa)dE`bDMqoh$h`b)&9%zhW#?;H@hqJ>7Z+EG|Gd5L@$+jYp|h8N_FgJ#EpTC- z_^ecG4MP`3g$0hwLltl2nn=&Su;}pmY9%{6%aoMq7f))pP4oDnGtJ8HiHWd8(CJ0- zTX<@VS!!*6Klt*cJx3?|iCQIdSUUfbB2gh%Q!(u;Q$;UGT%G>;al!WwEc@jK(2Xb;%za%AFcxOx4PZMOBR3o5Or_f zALhUFUV7cxz`o;qXJUn>gVto_?N@>$F0_Auu@>sHj0BFlB_*5%$?UjN!**|rM%{W|v! zo?N7}r|NFwt{mm;{r|hxto57mde#fOUyL-9j%*Rt~Y%gG|}_U|GlT?cFFq0f09-GZTpd%`;hUm&RY9g$G){KbENzySPHH% z{qWg8euDf`L0OuN z$%eC&j~6r-8_nPMO;GU_SI=8@gSt6$Q@N)Zy}hCKYIO+D3?Zk}&@KD*+;BEG=srlHUTAe@J*kV(8w;ii{UvBzsaV$EN-=%g!pDp;XlvrJGYy0f3 z4SLLy0x>7T*DotP|42PEe0JT#@Be*c{X#tjPMkTjWYMA~L1niElV9%8exp}+;yX$CNWyAN@-p$spKDvdPUGuZaZYmZ_TDkPXhYJ6<%q^NmFJ>Pudp7d=Jf_GQfC@~{nQ z;LNY$f7!Qt?YuQtc(}g$?)c#@wCZZH%67J?-P~DA$bnDd1-=g#!r#X2*?zgunowKi}@?z@(@9m*!x3r%X}mwtWlOunms zv)E!mrCUD(!>fd5&gQp@7M*(bTuWPp!uHu3x_OcBUN6gi$!{E5U~#--v+;`9+6yzg zJ#1(63l{KoDLbV?C*RIgE?@LQ&5Y~v ze>xvJ{%wJ+1?aG@dbs+M;GK=yhVz8_WN&$Q%H8?n{Gsf-y3Q5mU{|}NrBX^seDl?W8iq?Tn*0&3n!T$~{Rp6}o9Hq#n##UGMFlA1-iZA-613=^UHDmZN8<3&ito z{drU7q@Lp=A=mHHiwk#MDPOp(qo`RpG117#{QdGX%T!lIrz_RQ{(CoFuFK`Wg=lD% z&7HY{bIO^o$k+X7to!@x;*A>>AA8r9rYuVh&fdtFcjRk_TU2~^=)<=DcCpUAGZ#HR zuDLGn*irLIWrq7ad`zc2F@G#A+!GS-QMXy!@E{l0B>v#EO^ZHqE-zjp->Y71IWN95 zRO`65#Wacf6Q{Ej6zoLiZta_M`Tf@?DOb1e+3youY9(u3{x0RlhQx}hfB(e)JfB~G zu7y+h#)d@ZsZ*!&$XbaoFf#6SiRSP z&)M1i|6b#nuTS1MEX!r-DqpJ{DtPR~JlP4czv`Tqr|MVFQ{U%xEUo{+y6^GN{_UH1 zLa%u9qWxV7`svU9?`_Gt5^Ylz{9CIoki96{oCI4_Yb0xMF3#Th%|7K=AOp_!~ZUuGT$Irzt+a__Acl^5vJ; z$L~M=%_m0t)TvV|*00~6Q7a@Q6tTa~R%`03P5nj|s`mEsn{WCgB_++i)ZKU{-bHWv zqqi@M&f4lZf=08$pCz6B+99YMu`!8NJA7TvWtE%Rjb2NY3=IX%w{!P59zS+WNK~}+ zXus?P50%`ydy_z;&3>+nlHz+jRD}K-pG+}Q^O;ewwfp0AE7Lz;_LtOt$?XIUKdbz5 z7h(p@g9vrHT-O1wXHlByQF0bZuyE7+_#+Ps5=>@pn6Z}Q(N@rae@W~l50w>DyiBCN zvg(_!Tea#?ic##xP@DSjqMb73<>e-`KFe>qbSQ6oaAaiX*|hB9x&E;mpS*p0cbWF| zBM#5>lQu?Z>REQ)OnH=Fv^W+NWPeYxFosC+PJDP!<6L%2adGj@eYMtkd3m|}w)}YS zBfughCH3Lcr$^JG^L9QEULAb-lEsvHean}p&wfAmae>8(wQH9qFZcWM?&|AJFW3LI zt?ZrPv81B9^5MH@C3o*|c!I+4`KH^lAt5h!UN~!Z>C&Z+{(f~my>(~J+kfxQ&d5l3 zduywSxp}<71W!-Dv=b8)fBgJ8cXQ3Fdn>QZe8o@@y7N=f{psf;;{yW^{^FHB;_&Rf zo7&_~M^Na-9#1jSG`iXP|9rHLn3J>f`q{G|GVa*1W5LxdeXE=&1r{7UJV%l?&e?3U z)Ts5@fobjOtGrEaynSwWO;JICVPWrYPv|_wFYZ|V&&jvE1X}K2jZ~VbVENS~rSnPo z>-8z}fBko{7xAx2{COhU-4$<`IBq%e;V6ns(CK|x5Me^ zOV2-B%s!twcmA00ncr2stm@o9QqT6M%-geQEu)6zlp~W&-PhUNkIdFEjMATfZB=^u zC8@G^F^ALR-#+MnD?8ES%l@)eiTmT?>X)1g-}Nu(mc{2|2l7A1EqTATzxYngPaY|) z&nI=)?M_jizPVh|`&^#SnkpmXPv?KB-#_wAe|~zzeik92st`FkeUadLiC;i#Xw0E1q+$YDk%PooT->0IYGGW381@1{=Mqej?O?mpfc+-yYn85dN1l(8uI?9

UeRa2pXR?(7+%^vSVvdym#Vv!8M`(RQ!Rem(i_vqi3l^K+%5HoZD+8MFGS+x5LF zvPJ@zS592Jf3C}=J#(8Y1uoVzCGXlbd1tZkZGN!{^^Xj0eLI+QdrI53mke(69q-(^ zdG6B9{QwDacQTrvCQ+|H?vpfX+24pc{{TAu;4ZQX`k;clP$R_x+%F< z^XJysAN$weOH0|qee$&ZhI(d7 zbUZlszeg<~%Kz2*?4Mg#2)(}%$HTF0L(OSNmV+~Y90~kVq^(wbU(N5?G~)~xrHc#S zo#3(5ne&-@DqsGuUU|12i#xvb)Oh(lOAcc*$oS&2NW^kYT<{6rBv+~8C--cB|`ZiL<5hm%nqGjwAC240E{QYF~maGX% zcp&>%go6GR^7R4v1M=H^su)J;;+`Yow;+2W9u~iGLM z+jfHavrQH6^rx7MOp1AOr1@OjmxAC8*5>lTYucu)J#AUAh%x>AHy-J`y?eFscN2MT3o;I%&U8|@-+-A zl=9D{p1iYlimAw?m=#a=Z9bIcjVkDPDdV0Ecq0)?dfVgq0WED^=>~-*#79!&%ArH?KtNj+G=C)Tj1v0vsXmr zm+v??{owXeh5FlOL7%^}9QpSASzJ`mq}eYn9-qD@_h!XCiT>!fo>?kUAzN3jxf{)* z7uX|tm)-kZ+_tyYjSIL_FZ@Vk$^Jj**Ou0!X^F}A+`^u$J+QD;;j+iY3r3bZJTIS^ z%s$WIl1^&LkBoOO3;3-{a`l{NSEXc~?%u!=cgOG{o0*F2f`bu9PG#zEI4$72W%4}z z{oYE-#k}0&|GIAJ&l0FN7de&`=3Ctu+g9+$=Jn5~XTv=C%^rz zj{Npad&w>3&OV-FzQy0{Z%f>XsegDg-0oRGr!^<%!t^lBn3tAiHiD5ipKyMC6TfZ7 z+o^&!AJ0@Astf=AxaRvQ^^jMKKCbb5G7LbPbEuT++2kpJ#W2swf)75j74*^ zek7gEQ{gf__wF7GOM9~Zy~EpTe@A@#roALW`NMOT;ORNbRGy|k)4A1lMqBFh#pHCM|nmd$Q)8GneAOZ+v#y@=1iLivHg|`F@k+GdB-?kKT0di^J6= z#-D#`_Q;ub1umZV==fVtoyfvf#}(S=-~Z3+T4Hi>p8C(aYf+P?tx?q?Qu|Ms>;yOl39sN|pd zyYAV|kI9v6YXYbi{J@YS2UMn4xVK8mO zx6R=<;zV7xcnjax^>`EzCdBz_SLPqq5pnVn{N8|*Zjt95s!u~ z4gPhvToSMOZF_U;bQk}e zSbq-P7RDm<_R^6(t=XRTvyL>~d_AGcU0CYD#Yykagx`#M=-yCnENx%WY}?Doa-!?U zm*u`9sc(}$ud`h<>la%!&%d=lSDoAWZ=p@D?doe&AIZx0*2N3GzJBi6@_2tCA-Tr= z?ZQS3*|yg8F`h*;CFgq0NzfDe8++qz*{s>K_5T^oTImyedOfGloE!7!l>W>)$JE4DeEo={i^Qa#`_`%Z`^$P( z>^0x*rmw!#+2G354Qtn_>-)-jwkXa#d;8nmul%>?rcZzSuyc|~TC$JHu3T0Jl3j-PgvbG>!t|Am1S(`VhV_{c8S%e~ zqJ3BHxqSRLf9Cgx->-0el@ZTd_UvRFi%ZFowg1<)gs)%pC4kfVRn><-yOldker$Ta zEp>^FxJQkX(&Id7hjmu-mrSyH^G`WqORmPL?r+B!zNxK=Ypj@af7_4#goly0-H!1; z$SBg{t(2Z&lELbAzG7a@8Cv=oi%kJ(%ITC@GyRQHT&(zlckCw${}c!!usNnLdL@o0UC`u+tHm1p_-uKv8B zdxv@cOZ(0BkCFunj3>X7aGhg1MK*J{rnZ*z-M3|G{`+Q5%2n05pYAGOU_3cb-l_Vx zVBNa6hm!TTE%D!%thw?nvqSu`bGP*Vyl$PiWxIUh^>wix4DWBe+o5~YAU}dTgX2>#uA5vU zWjXCx&*CXx_ck6>&U<*_-`qPEc`V7lb|kJ}<;wIVf8Oz+>+O}Vziw=??k@i2x@bRl z`{Bl$Ir}P@HuFy3@zCb`sSKO1nl)C%@=MKGF0HM%|8-a3z`Co|oiYX;NB;fGc>Zi+ zX@v9gcdT#xdsTOYTkNjC>*-moy{aL=WZBo0_v@2flIrhh*FWt(t36Ss)cM&2;mg}) ztBRl0+XjZIO^!9|J)3qoY2yN?qdzWuT+tPhv+h>U;b;dYj;jV9)-x_HTpYOgSklHn z@3fYAXFALBEXj{`cf2VW_NRiSvcj}Fh!v$rq2oDh~0bdkY#>Qj?e zcHvb<0dZGv-M%>Cvx3tQ1iR$~@hdqm^*_RcuJyBblSijSbsm*W8)aENJlZ>yzhCF5KCb>-u`zJ;%2J z=BmLjO=lgQz5V0su9-dW<+?(YT-CxArZ&ZBCTQp%OKAGl7Nv6UoyM1`A#?X~pYxi( zTfcMhCPke)dz$_KUFDyv(BRYOqvfbIS$VqW`72MqNGiE6E(3d6ED_pQMPKbCUI%8x9SQ_IfqehsO%dZ=oAKS}=4*i~QZg_xbUut1{d8Qw~0p zt@)P16y<2~dFJv@p(i(9e`R=U;kTxr&$d0u&RB5jGN=B^Evc2kvZiPGe12JJ&Eh$6 zw`u05cl~c}Y;6AiPVUJ6zczFKZR4@4s}y7P4dba&Hrw2}YL-`zL&1N~I}))+^k)Ze zxV3J+x2@}!4jshCm+K-QP3a?n2<;K>p;yAlu@1?%Am(DSK_3h!4>y29V>`15Z zlxfrAF1Fl1{Xb;2rNgu@Wy{W1%*#+e5%Jrw``Xf=Y))JC$co+T-u!+k{7%ML`aOgF zE!X*5gQQO~e{cKz`75)DZBsa&PZ3YAD(ybrUr=B^o>iTj6 z=XYFcmd*eFGIh<3|M=24d*as`SnkiVv~P{1PFZou%C1C^5QptYOfZw{G6YADEq`(mY6N! zYAuETB~NaN{Qqp5{!@=Ba(9e=a?ZOV_W5u6><==RjP@Tpdsuw3pX*IkwJU7LzaGuM zSt2L(+qlS=UGD#@I3@G*Ntc!s{_yykB2{Hn;PT<+7rBRXH|o^%v#aSGxqE&3h7S$i zvOiB3zdUy$uDUYyk4B20K-p*8FX2l!mK;^od8fxCCDj^QDHV`+n@PPkNIj@9l02Ki==87H*Jm>UNL!hE0zq_s=x==6%PR?Zb)Ow+2_< zFJHNe(O+EL!LOpkKvKKxVT#PbE$8Fau1WUg{+*LQ{mt?q4*TUR8YkWj_-iw_Gx^zL z@fW@xCnC+$FSQkaf1)w3?uFmJ5{-^s?+cZ#My6yP+M&I1mixQi%?9$4uBLONn=N$j zR=0jW=O#Osd;f!joZcTkd{)!A(f_%BTD^<;7VqW8nP*03iA3{cW&lieC%7w#p3y&T7wPF^KiPV2>rE<*|goUAYl5&p8wS) z#;4rUci9wJ+nLTZv6Q(HC?tJ<-rjiqXEV=+l_=U)d^o2Nlbw8Foz4Mk3zpa|b4r)$ z_4utwx_9~hB>nA5-LDSacoFyF((_N}g!`3BFI`mqSoiK-p!cPw<_eydJ*ySJulZi7 zqU(`eSwC~vmeini3LGM0VnKm{ju{ymTp~RD5`Bx0G%9fPa7Z*dEjp05ee%?)t;?6I z7Zw)g-kU$^sQo$-&{AWerCX9rn!Oe~aNWoiTO(%8w`7H>*ODgL#W(xBRF5YaC2hMk zQFDq$N{|d+z{;r}szL=3nINWXsFSI8o2e~dPcNHJ z8G~e$x^C0aj+05w4oxvD-4=%_-8iE=fAN&Z8)h2LmR(_zl_JF0eYDGEox>}G%Xe}P zHprwSvY zPb-KUnB5M@GCgtr^=qTqYbAWe?!=UG@L8uN8>h`?USbrI#hW#=`Pt^}qOWe+B-`zr z_;;q!Chbqxc01f!oBm2$P$uGxn@^f_&`hb`$y~veVw%Ub1-*=am|UNI^n9Z~Ez_y1gq8cU^qrpvAhusJ}ccGU)cO;cIJ`_{|8%7+FtZzbQipT&$jzPe|%EMe&e76iQ5wl zZx?zjS#iZH#lm1_jz&mPPMWgX>7CD)2d#A}d-W&BBuRY9iY-ziLe^%xMV8*_TX^!$ zrC`;-1=qGM+n)a6-Hod%dKFz6KmMl2sl@LL=~9TXieDYu<@N5sg_K{l`_`7`P z-`*tt`0((>*I(Y-{O8-v4P5NDG4U`P7dQ9I%gfLI%r$H0W!U+}Y5u8wwZA`n{Fr!S zL!wUXt|^_u>T!ktH$T(a(IzLkvZ*cG@#GV)6y9RbCmANC`75@ri?MS2*jf}*%A0H* zd3S-!lNTkcmKiN5yn1m(vh(Ajmp_DCyNZ{0`K)uQ-j^pdW!0~uRH-{9yhdJ6GGgvX zOY8-;O1aGD z_m6qMx4Lu%y}h*J-BQWj5qq_GcPmdw|7Xh4>sI{GWy&f2+{;zZZ+CT{3XlDAGp59@ zLCQS#v2x(5S+|;}h;6q$``FUhLt}%%rSecoQTl;TE%w6favQ57}$Mo&47Jj~b zjcvLA83*0V3yb%beEz>LzMwq+m#6YdpU&0mKANq~e!MZU>zC5hTWZ?s9EW@#l~}F6 z)UD{a^5TL$6Bw72ZvS%r>16HD6R(A@oUPM#T{oraaAUC6@_(vaTiK5OOq%17;$?D+ z`@gk}U%-kd4+L%J+A7 zOWxnxdy-Xbw)FDLoCVhEv@%ofF zkeNPeM}y1X3jg6~QsAi9|NHy9yVAr7GiUzX9%&J@G{`XN2*;hfcW2*u_w?yeVSk&C z%da`I7&R$yG!-;|d42tTTKL0!cb}h{Al*)zRhc9m1y~#fX6Xu^0EskR$mw)&1BtYx zdGmbR>v+aYdS>fXk+3TXuHudlA9^=eb`*_bm~TPIDM=H}?gsO;9WBdbdA#2p18m6o47 zgx8ciDou>BZ3bEL#$t|NP?2_n_y6L@bFOf zs&5x8+x<@gtTeMv`2ub57qiDYBZo zW5J&Edj5+y!u&!zX_ zMZW&Jky)ot+RXHJFZ)N|2Ci`TDN^2RH34coaVVF}jXt8?Y{*L`Mw-T(C3)O_Pf z)keK{xK6izN%zt?cUr|#v9YCv#i)qO;O2sDn_3oKl9F-oExh*g`^vM)2e;dAc=zIF zcGe3wnXpq`-Ubr7y{G;kzHvrm?nwnj#m1H?CR{wv+-7&1`=vg56ns5C@2KFtiht~z zbhn*ezESd|b#&9tgAI>`qtieAoWp!2=5b!o_OnkmpRaq+Dqg2>x~8?(G-;X2dXetK zk>9P1n_F5$Hhtzb(Ne6JJ->HL&!udgPyv>OmX_OpeNC;`2~Al#PeD_&bIB5wPg-Zf z{r-#p*m=u!+sfp9H;&$3uRdYtGP#*=ez^Ymz16hm#|Q3tuf(rjS-YRjbX!nzN!-sJ zSw=VaUOzc^vGvvP1D!`xj%BU4-*L*tZr&HQK1TnK$BtBUXxu(@Wo3G%bU_odWZIvv zLaThZ*lbN&`AkpWoN>Lk^ZRdu>QlE<%BmW|<@dAPHRXjnpMMp3 zvnAPN)_R$e$S%tb=9B+@|KhB=R=Ol-`%J^wVuzsl_fn2$JekF06YVR>zU}P8(>vAd z{(TMI!(DFlygM`{?6$%0ZI6FW|L3`8`?h})Yb1KF3m9-WDVPNJY1{6Ms%ls%oc{2Z zA2{O9Y#@n^TP$oMT6o_zJly*+zFW@s_2*cLMXy{BPRua0jtSA*Zu z#r_HMQ%+^?e-sz3FuAO0Lz%9{yaJ|OuW#-uv}c|9I&$0YhK{=LAKxE8mSkr(yMJGd zduFa)+X45R+lqLno%woXI^WZ$;kP!uYhE8QKX1|d70WCBgh@YTQ}0_s zuN2?jyuKjcL+tmpGm3?0+1Pq&JKiPMS$Ok*coaN;(o>GdjoZ~O9-Vh$m#@2J;VTZ) zTi0xUzGD9paMUpOmf^b@pHy=1=v|++G$(%F>^}be=WoO{daPQlX)G~en%N0yt0|0q zoHFNRU6*gR|M+Ej_6F-cJHF1GzVqy7m27i4<*#27v#tc%{Cw5^CE)nSPc8nIxjL!~ z7jc)%#h%~wwsXncvJX$h{R2P!=1E&`)#HBU@19?7?mVJbZ>$l06Z1iNbGWS9{Q%G1 z)z)zM@{W2AG|7mkgw&+6U8|gh(MssSr_uJ36OAGkx@oARRwDW(a9x^NcbmYOc z6H6Q-W#-pRZ(6I>dE(;a9oEN~=SKCq26a!C5;9j=ENd}Ozn#V4_wjhk%3UmXSI(_5 z$YnjcwQ>rJ&yHi4!v$Ct{@nTK=>3N-;v+k!{9lecE#Bj`>UeOtblW zOrh`Gtdp;lS+~6Vt?*xFY4X)iMepQ#~%t+p{I-4zAm*{CVP{CGRxV+Sm6+{xqH_ zm0~0Kmt~Unw`no2UN!c7RdMHEDfxf>?H?~DJI|52-}+`Rw}sFT4tu}PPiEiDzEPbd zx%>XD6K~_sEm)sps$Uc5`0XBR%GQb*|Mv(SekZ?d;;Ulz`2O<8tK-8q-M5}_*nP>4 zaFxlgj3>#@<4n2e|60GxBKC#(B7W;@=aoH$@9pq2;!WIJbvf(R`8iT5iMRc;J1Txu z+U;9z{7zhcqG_N0y{Pja&Zi5^wd~?->l*043>W-hw*|M_vHXgs$9BuKNad`8kuRb%jGTpD+`Np^W>Cx?J0h|6g z*G1P)xFLA;$z07tB})rqDywf!mpv_Q%M{4CW7nhiuee%QKAEq%=o;Sx*A#aDOP4=M z-bj|vx080vedl;DX6szOy_;{$UiNh9_OyU)FO|jC|C~Dawz$xjCp>Z7z7Ko9_Xp41 zI(_d-y**#Psfcjy-&8Zb_xZB353XD~`R7Nrsi-?|i%a^(s_DI*m(vpLtlHlmO)z~j zc}j58nQ5MPCh2!nz79|0u|AL-pP#sWKlkdgsF@bIY}1m9Z_MJVTozQO6X~(gvaS7> zTR?2Zq&btKLZ%77iQ7Kwc-@@C7p|>4F|{aZ_qQciH|_P<5STpSq0k!FckkRRqPV!X zefW9(wZyNJJZxImKR+^m^s&TI;NQG8VcMalTc`U6#Crd0jI=RHQY_j$>0Q75`I$fN z-^hM(=yLxz)wkax-{^9tA6jC4b5oU~_G9*dJs&mL7p=C8-q!1Ey+~5Qf9ai!l0`llZ3VY{(yN2}|Xx(t~~YySTE^tWo>%nQ>`*FE3o7S$`&{`phwXHbcF(#1EG z_pa^k^VfTxdH>;aYHPu+sWuLbp|LaFn9qYiZ+IX2s zhhIlbHV`YnFL&pfzEmwYr(#@O2G{w79!cN(d{tj|=ABSw`|$SQ+P}9REo>9=RQb!k zWvT0qDQ0dKp#gki;#{xqf4}BkcvVARa>HW&Tz~ibDSXRP9+hNC=Wm&@vMls*dSlt& zUydi^rpdfM@i;cx#4mh`yYH8bU!_+Te}CC{J3acQja84_-`kHKFLqDTO1Z9IJafA_ z|JpqruP*CqPSgs>j48NW`6z3uQ>x{1+q|c}b@y7rwy9=)QkvA>CUASPb?%`rb9lIq zS|4YtbN*3uaDuk^im={mp-gERB0GQbKI~?zJbdfxqZ|KB*PPTyJlhy!@=0lx-}WUL z9rhb-cU@A8IsbA)KuzD20x$C^*MI$5wEm>);t9$Z*)FVe507f!J$Yu{@$Ih#7Ab#S zp&TW&-*RqIr@Wi<-QT&&UsL8?QP5^f{#KWE{$6AE{Ao(_1@~OKEWX#Uh2yDYmR8R5 z%jt73DIDe#Rgc(h+fgY0XR^cArsTrYGxwUZ@4qHjv2B09-A1_#{mcfoH)UsnCP;S~ zy7VSFsN4RsF@G{i`_DvBO_j*N%CEr+J|aJE^{BVniP z?Mgvh!7C!-``$37t&$StxX?r;tQdf3W z*ScT4zFpra<+`ogvsKNt{OfMIt*-ymJdN?K0x~$}}Uy+n) zm}vWSy`>v+qm{Pg{V0<<^`z6;;?LjPIexoWl*PrJ@LTiTMQ+M6_265Zx$nkwd)Uov zKg=kxIda#{6UOniN7?_&IZr76tJAcU%`4ldG}$yJ=A-7FbN5QvLw}}Q-aOTRVp-Kb zug5dK-Qo$-&s@M}v+I)M?&H}c=lp>MgHO3me@>h0_YC)O=dS9$c|owNUU z8^5WR7gw&)_|@}h;cu%%n>}+MhYC3{EtdHHX133~Pg>vmbNag#TUqC?f41guwgtbHQf01_?&6ejvZ`fpJ=u8%eS{@WABwe)?sm1yt8tDx1C+>1jWY}7CJ9kw(Q@= z=Gw=i{h#l3D{}^V9gy<7)y%zu=T*z>C`O?VAFe%qX4&xjeb@7sg3O&SguJ&O;MlWQ zwKOy3-kpy(DlWzSpK|-ztQV$LO0`zj7By#1#x9Qjc+EO^NBTPE{TmMQ1YAG=OZ~FI z1*d+dfU45RH`Cugd=bT4bzE`T|7w}}r?-~uc$*kkmC17L$o&synHSi~p8s?=p7HUo zPgDGS2kE&o{I#)n=T(}uZ$Hkng3t65%t-ed;T;PR(x4h z{v|MO*Ke^e3lCPj`1R=Bv!Lzki+_LZezfxX(>tc`%=S1ppIiR%<0^0An@{6@z5U<9 zsm#8pTjubU%)OCcYn5`7swZv!TYK!D+2j@XoL}4utbVv|Nl0%!w=LJn*6X=R)kSH? zfA{Ro6${+kenBVlwdNxUcqu$+b`R7x% zMnR^RHm|O%`(w1^n}=M@cf&h=vP->mk3S5!nE0T;@1I5cbM-$?5#N7T?1>hb_2`?6 z=6L~`NA0@~_2=$9$nxX#&7Tjg&#Yc`Z1v;0d#;oUM5Y%1d^5A~idO8)n&T}0EDyK^ z=1HpUmfgK|*~{zUmU8Wf>#i=JCd0?Rbm>wNQPGPVligK3UOc|czSX7o^2;Tw%fnUt zILmg=-LuE$OV!`0w_hktV(p%0{a(KKx@o$=KkLw~VLWc!j=#Lq?Q&*K{A*mNrn-f_ z|IRJWnKRt|1y~kFdYoLVaOgVk)89@ecH!c>yT848+V}AA zhimb>?p^xw^0K69mWZ@jj)J}Y{B60n<2LS@GDYOi-@lS(ITGH}^->=l=?wR=&pyXw zsCX}a`m`I?{~G5X3DpVI<7oO|Uifa?#rv*zbr+m2Kk1<&G{;X}Ybw|3tEWCbKE6Kc z*;kt?-lVkq(r!#sq;)f{7MYyN&Mup2*THZgML5|FG?LMrHCc4=(wF~la_yXR>5@^+ zp1mtqW&Yc16tq%gXH478oQFlL-&a&uZ!Uiymz12Gd4Jzu)2XjZtZr`4m%n%K9(0Vw zP4n=5XYZ{?{l2F96*+?1%G}=zT{U-a(cc?;JEQE~J@<+V2`<;q`~O(Y_3P^DDl9K{ zUYu8TYM=G{J(J(w-adKWyt=c@6{*0HMj{t$F+{=wUZi_)9ll57$E(*$^VHtCekkcn-$F}a5 zHS7z4j?O^F2NX=Al_m(XfShb)4Y*1h7BZ=16}|uN|0aEdJ?MLl&n`71x&Q8}y@jW$thu-|YC1&GvWGLkX29*K_$_ zvK_WMaMF3hbBhRuS{0s`>{Yx8ZF|`jw(0MP&r@|be$(ANLvKTsUB<4%clWNV6V$fm zwVu4-y2FR-PE}kdVjjE*(^xm(c*AXv7q5cj>+&y1CcaJk@R~8UdEG+Be>rJ4Io zJ>Xn8(`4$0o7EqFm~`yAwshONBV4b=8@4dtx!u27e?w*~FLz^v#MS>&m;RfdDR>~T z5=D zrK>ymBpBkhCY){xOnz|1>PL~D%_dH*+z&UZ4NkEAuai6%wcz+-gRhAfPB3V%nZv*M zx#NC@f*S|Icz%CB@bs$XF33fOy zw;|b{r+?=KH@Sxe*Cjq|b8fNEiRHX{;Gk=P4SQS#YgA>N$Nt~$6~&4PP3-%a-YajY z)mNF%_+6voujh|vwG&P%yw>5VU{xz^lYD>h7*EFw-t~KUj_yA^g|+nQo&Tyo##v;2F zTMjOJ`Qfh!#|xhPKivCfaOve;c$nB>$^5>Cd8*iqFWI%SIUBOAbXK;dvmJh(fAD40 z3oAakt|s~VrXuAj5)U7KfAH^|g6ZK?l^ZJ6=bT{O?oshn*WxSliTCZl7eDBAUvOFD z#(v3fbJ`jdID8v!zHji>p7BTRMET*_@y!Rh&i`e4b+_P!#gU~A%S3(VG2Lx;OlrS! z|KZBWgsBHF3oF#|`^;p!*ZSd+yMT1C_?Kl*8@(;|d=feHi)DgC8sC?H=6mi)@2lkA zHm@a&`C+g6gXZfFueshHb9@`~qmqBlmIM9gn`e|n3(V5Ls9fA^x%Qgderq1KIbR!j z7|N_;GE+miJ(wR}uKaM1Szx=YT{Y*Q_e~qi9sl@GC|sAmMB-GG<86i$x7as7JJ=Xp zx_vprgr;bb3RTBQ-kdn5%jr&qnlH}X-CpEWDmr8Jf-v^W&knLbesCae#ajPM%f!D( zFl~N*aIT}mYcA=qgA*J)yxLyAcW&QkP{yM3ljD=LOrMg>vXX}P(_%H=+erS{!VoET zW!m9cS1)9-v{YZrXxvn`{m|pW2vHglZnR{WxOV+-HAg7)6(gGr6z&kyw-El82_ zna{dB#2`z=!vFBOTSx6YlgypoK5;^gLLr*>7 zY?*|K*e;fXr&tp#!sB?i>=VDH*RFTqn{z-Q>}wFYi?SijI9S+9qSwbDIeuS{Nl!x5GlUyb){TeHsYvt8RCp$*3lta@r- z#3bZ@b^BDwX@7Z`hOJ2Q0Uw`xF@3?>Z>Um}>_hz5a^4VV54X*+?zA*F~%=n&r;mn&1$hj7P(6L%drzlbqEzF;lOf5iu){ImTJAIO++%Rz`| zpWKCA?03v%&aF>d)Ov)*Y}rmiM&{l+-$P$`KPSJFRx1*A8Zd++_|80+cifI?g`loT^Tf1 zIZE>A-f0lX$Zlp5cDY(F*62{FnW3bx>*&(wGZZ+^&gMwTGuVDR&-vA}vVY~@Cn^WJ zx?lgRG%uYcsPZvGaf5$<%n@4`mwiaEbSObbpc%&_M7G7*rC{QfpLsVz8j z!Yr=)`PClwMO1|EX%BolNRw>m@eN@(q6=%Et2B= zDzRgI%ZG>!lCMt3a4yeljaE94(mW&L#SPJ>80jgCSL;8QF4LO+uyhv!7U{J;+Aa9lK{>KtcRNtjtX*ctmiiRQucwj zwQugiREatAN~x=@k1bg|VL^i#@As$Nx|H1R&C4^3qt@?Gxb^Ei?XVO2 zbByD{rKV;#H_h4g%_fNLpzJ|&i6+s43&L#dSGGGl-o3GEQ}=nscn%xp(`Hw$F8`I+ zvFpyhRSEfOM@pLW<}TdAA`)4kAOp2wM4F;7^= zlEwY)g-xN4f4?xYmbmo5#cs|$w&1w-L)s>d3LN#Zo2uP==StmPclPYMwNI$gRO^ogv=#O<-YxA znf>khU8`4j`D0!+&+I5m@M%$9t#F%T`#sKmp&QDSWh@xh%D1`yYS<}JmfyP9eL<@I zj%tAw3)fli7gJh%;Haq5;a9I0tlhog6yp_vXY8lLu79m5$z=a0m#~VpmV@UN_w2gH zx9ke1neJL$i=D7GZNiQ#Qx|_$y2TwBGWG_-d^pop6Hr!ol_b4zINTCc1jz-GUFgElY1N z^p)RHoAB7Ir;9P%^X}_D+k-Qhw9OmVh9|()mKJ&{ST84uUfj{w?TxB zf|bk@zZJS|wzm`Nxk~nkx|K9b8E@%cTYY4Au1?M@e)dlfuAW@5`FgF`U2ErKauRD|XAWl5xyz-y```)3 z1iR~Y4N>f&GdHXk*wxnT%9fk-+FsvLU{lfZB&((@mEa$&I zt;*4)U=pr0VW(r!rArlgcPx(eN*~`*DEy=9qvEQ6$BjM*ZQERTT~kMVZ+wZ`JlW_= zQY;d!IX_aRkDC2%b(vQ5ZO#1y3wx5*ZE$&7`BU?DqH|<;MxmEm>;q3()6aDX3t$SDND8TY?nb7AGcNEwr zvwgpD(Z+nAw$zf07~2cCR-HU~>iCim)_R*uHV1b zYWB)GEzH#gVXHYlz3uGYI_J?Rsgx{R-KM<(aUt8exxddmVP82dYq{{+rEIg0dOe)U zbINxCe~*j$TDAQfW<+sk-1++B<)Ih%Z#OMn)Fd>yu}h2FE8PE2&7O^6PbS3Yu`TVp zkRU%Lh%-T{_PgCVt7b{F3XO+)PgBxD5}dsgTJ*QAlG0IQHVq4BYWk|dID6-uCCt?u zLRNGH-rOK{`sB$o4yu6Hgd5NFCaqRgue6uGF1pag+2#1R7e;lD7pwlvFkCGA)4-o?$p*#c+>__M zI=u4k=g8tKj@K@V*erfCC2h`ApAXGvW=Nb`#GgJPWbLwLyC!@{Y?gj|Z1?@me=JzT z=C1o4yR<*yPJ;b=_}Pdi9hUN1hG|3ilcpS5^jz?q7S;S9R)|ziDFMHazr^uxHuZk<8*KkY^=$;*Nn(3YVx< zFPm!ClxH$xYgazG`F`K>>80xZ_S?IAj@!&Wq4s>+^8JYuzA*Irbt=DfF=YEMSo7bf@e?ft_=3D#9PIl|p1)+1I>nwY$=SlYJ?zKH{ zA8?xc|Efo8BlCsl8Bb=vf6HaPT#!2n` z@a1>>FCOcUoDfky`((hpW1WYK-u?gT`)l>8!t5Ioc7`_Bx3=kv$t~$skFlA#Dd=_E zqAx1bF7X82t?76n+cBFXiN#UipU@GBnbNK=y+ZnLOZj13{%ak%sGp; zvQ3u~Hsw<5}R4M+QOzpmH*Dka73h8V;_CGgZ_1V6&?+zqR zUr_YjWhp~%RQKjZT~brc z%zMri-}h?TTv)C8srYfxmVYfQ6$(>NUtDFnV#?c!{MRMBB(Ht=vRA%v(XviM9Widc zaQi!^3rY%|BLiDs##oBa-}&|UqmUg7zVjdQ<>e9&k9lp*UMhDqTzmd;tM|V1X6~8B zRQ>qPuRP%$hs&9x`$I2ROzu2%CPyal;Eo?<&rhE0f9Nsm{H*4i7BXh5yu4PfFf`xs zRSh)a=dsBBS=vXAXWLHr?E9I(mzydn(e{1O{B_gh&DNwoTf=i|@??WwWqVa-=Lbkk z6J7oDUHfGTW1*Fqcb8xMHfs&@nj1UjE4!xOyk*>y7^o+6cVp`j;p34zby{|}-SwTp zu5kH*_Ufd!yMCVd<&xwdckFxo{Dnr!^IsgFr&RJdyypAGoTMkqHTQ3|mKCXdvU__< z$oEi?;4ZgQoLp;;KK!zCL-9(X?PB*PRQKpcFHw0W^6>t_#V;SPw>xv@sHjWnmu0UL z*tr(7=*5-ZST8H9YHwIOOXhyl-yi-J6FUB=O=FtA^5ewN%~gN(r?h9!x)bYoi>++! zO4TK?I&))8JbEsyh<01H@b3fb33~sgdQ}Ba+c!Br?dk(B)}5MSdG$30-uv!0hi91Z z^Lsv;92x(3Wku5>Rc?(}wfg6K-YEQ=0m`0CH}@_+=GU8h{aM=e$NBy%rwBfH-8TQ; z(tXlrT2HK-J7L;W<&SxXYn9nAtV-3cvB{Chp1b9p?VNwIw}ga+Ju4=dd+n6U|Ie`K z_Ez-^@tqel)_Pyo+vGSiVYSYJ3$Hw9Puuq*+C}Kq(j_~#bR7tLSh4FB2VZulAMc4P zKU%96mqdK%-8Xfg?4K2;*M#mBvK;<>{L(gW^^~Wq3-Zsdn8?h@`$1j7V2IH7g)RGRo<>~t5sI~I-%fO6M78bTg?`2(P`>ov|c`A_g>$8Q`RRRmX zt7&L3@QbTH|J|CBRpY!T(DF>hmRFwNXBhn18ylEi!qVa*AS~>;`b2=pRkk%n;k)h? z%FF(}TKfCaj>qyM9u3>I*X1>Cd3$Txi4)gaey^BtBIU$W-5r19`!AgfZ@zbb{saa4 zKTeA}N~R`XcE6ye)pFs4K+PS~n8Tk#n-n+>$-g*p(M5$@Ot<`={j+tmW5q!YDuI^Q zMxa4`H^>6QXWmFHCp<&cSH#Ub&ZaG1w(QxemmylBSzCXxUGWeA4dvT|R`I#Iy5`*5 z#G0S~-g}$p(x5qh>Ra8E>;C=w^7iubP9g9(_l_Amww5rrwzLRHiFMvHfAGh@AVNFG z$lmGD?Mo|zm(Pwp`nt@l(0FxNZqmCuz9La?!q0z5*RntKrtb`vQOPB3WPwgMiZ68NU%m~2cOck|x3VQEYu1;TlM}A>} z@Oqy}*PBx>U743yA9L-egQ9hvrM^%i7OB zUoE#-SGQPbh3)BoJI*X?R&SrVW{Yr&XlQ)hS`Ba3+tdG_+m^iZ&JzRB@;uK+*Dm=k z2wOeDYiY%f-A4H@1MkF|y0pgcdG?9*re^yFFBKV2pVSa`dB5f93qSBG9tl3Ra*K}0 zzI#jF+&%W~O35DOQXXE7^w)hUSsah#`M)gtl_Iq>QvKxi6&a$pn%)R|y6{Q*OGk=D zmmd$zC=j}^OS^Vg>x50^*0=qaJeIA|w%y&naM`3OzSb5qqPx-~bYi0|Zd55q?soQm zZP#3oUBJ3#?TJSxW^x@$-mSF$l!EPDw~+4{cSIOMm*m_#cyP071smIfz_taO)q@`2 zYmPGv+V*GPT%p~wuGO+#)b%*|v39nnO>l2_y7w>s*L_bbY}mg)-;mQh&)Vv@@b*N0 z)iTq-z3dmYPl;z9{>r$j=;j_}$@441N;=Ba?Gw-b+_Syq#En`F-r2Y2-(&tQ@br0G zi^6gEsB9V7re-phhi!X~`w3U0@J;oJEmXVZk~GUx9#XGVmU6=@yRE!Ezi^3F;8 z%Cx$@)d@Bmr|BN=W{|CQ<5OMZ8yz5hW2-9va?8#)N-qq)FeaH)zPYh?{vIt!U2FaY z={@#c|3BtC3$Q$_>Xe%)?Xx;Gd86k>>y!}bT$QDw7xp@H%zL-$^b-yBuK}8e&(QgOuxK& zht-R>2hZBq`u|M#;wU9YrHKk_brbJC<5hVUrZ};|MaePA;*|gA?~``q8**<~d+5;R za_Hw@5AR7oYHrHud}A|L?J0e#GH30Rk~>Cq)-eJ5|4nE;Q`;T6MRno2Ik$AgYE5Qd zT^Xh_DQR2Hz8;>{vYEMN-OqCuoycPEWLX*Fb#38OozC;@oE{StriyI-`T42%rStb) z7A|#^Z{IrUulKZ#stVMlbeMGaPI{6ebbj8>3#Sz(F5vid zFgEDWwe|N>&vJ5awPc^UEyH+b`?L>Vw|AddJI$e4bgGtj(MpqD#qU@6<=m~9p_Od5 z-?zFsR8wuqQq3CEY*Wvdvu9e@3Z}1qb<00!cJTaTJuX3quIc|j{7NMF?>@7Ml{MU} zx4lWd8~#7BbQ5Rh-}EapSSBbfk*Z0fzP#aE=dBDN(d zx^Lp`EeaEpN&k6>b;(kn~0oE`q}+_x=CbA&X5R*GbvE3=ELoZx)h ztoXx&w0$+NZTX&gPJH&}!QM#eo7-|MXZJlx(9u`_m>|Ojs=IA2Di=3bzP6pY_lZVS zFIW5F&UQcN_j(UAt|V-XsbW4bZEx>dR^6F5^jcQDl)f?T=9OI$QBh^@+|v8~dO9>x zCly%)$Ja>w-|Qt2(7yeMjjEzyZfB0{G1>BONl#x*mANB(^7H!pt}YGo zMhtg4-rb!y?Y5F+b+okI-C1WZ=i9ohd8@IKU-xl@c7D`%xuebe{70S37GC{)nXlm3 zi_;I*DgLP4KS}wq9Q%B|o~j3lRud0w)U39cJd-o`{nL}_ZGk&Bw;iosbLB@#;uYq_ zFID_gKfNiKSMy)-*6seu|1Jdex&CZcoSwV$;h)!g+h6GTE2^fJH|NWMV#7<_l}9-$ z^mEgnuw{FG80dc5V)NxhQCRP#%U|DZw7GD8vg`Z$!xLL%*0jt!A3LRPO49k;Gryd% z|FA`L^NtlP`_0M?_U)IudM19u6w#oNi6=fqzFx6GBuk=VGXY`d{|;syj*0E|UFno{ z;%EYkcPeYzUhAlxLQ{jbCmk%&$!IcIry)yj;0ZhG8bt z+Cx1HPjy`83{m@Z?}@I>m)C4&dVgAOM^%~2sc3y&;%#p$S-t;Z!NZ7OZrAT;OwcR{ zoUzg-oUh>$ulQD$Cq-B4Hr9MN?N;{Y*71)=bG6BJ69G?_HtP0kZTs0 zU7WPeC?F{M@{YM{&CZ0nt?^O~a+VWy+YlnT;_Eku=PMTO*~2#bs@K*deQt|$wrFjS zS$Zfk+UM;~McX3Ns9vGYkfss^Y%S1&z8Uc`0#qR<{$mz%G^x~fAn4Y&+tAgxN-4y2+vz_*IzG%+P>tr-b`}S zni@N6ht*`>&U-aq9-FYSYAs07eSG}wp;8}%*XetY@=fiTB$a>cAG6J$LmG2_GQR)e zms0TBXPMnEj!9g?%=fA#{~olRK25iLdFqzdrP}`vxA01NW$lqP=CP?ctU2c+<9m#T|Es3D#kssGDtgA>U&3n&HWsehA-W(pWKI5V#+KT>b7n1X6DoM; z+iJbHYWt(Z=k1KMJ?Kki;PGC+pv^>0Le{%+5%>Q5FnOnb%0Q#%#^S@0GB1iVRo)97n=$d;9?OrK&ytSUKB4vvdv9;gp%ZSYyMDU`$$b}m&t`M@!M60u z?-$)CgwA^T_uuY2s@=~gpWpwiGgX2A?YZu`HJ!KX6%T#LzuDW6D*xfp;@cN~X9v8z zbzyJf!(DtXzw3{owdw=Guvepmor%s<%Hq`8#u`PF^hsq7vgw56$S3C*$f5yWzQYeE;q8$!FDO-xI#XAyCC_+aSWIsTAw7UgO2ly1imwRz<9f zW#m@ctF_np#a`hcjusV%D*f3xWs~2&m*e_byndiE^@|G=%>5tVqeD*Yd_|vsaa*YlOKR%zCx!s2& z<=wPXr@Z>)?f?MsnFE0tLG$_y%;9zO8zc{Dzbj!k} zyIogby|g}le|2n+{oL};jXe9Ww+e8uFdh6aedzufrbY(^0giXkP72B(!Nv#sR9TFO z7yQncoGNH(Y5C;IlYqpG8wwY*mMl6{QF{6C{nL5NHaYcQEqrYJyZ*B03g6oYjr;i$ zPb@yaLI1bkr-+Nw#U{?4?CcjPx%Juqg>K7?%yed)zZSeRT>fdkaZq65fi&~Qt1l#P zyzjVI#*C-R)@}0C`}saB zhrXd>q0RrgYUN$_ubj44=0w)d;9C9n`sI6lYbU+c{w8eoKsQYH*E~7J{qtD=N{ZEd z5zOEB(`s`3FaFp5F^~L``d(Y)TnPzJHi+HKUG~-TT8_uDh^dF#^Uo^ZE@78uoOvo@ ze}dd>|7U+nnI&tbvdvWzf9%a-RdFJlsKC+yFzDseD*#X@Y&?9dUw5lo+r0exX}68E!s7$wpDp6!TIc@ah%T>UU0=Un zw)^ZmoG0eJbvm1|GXpn(oMO;qI+|rP6_w-F01){KF2=Z?{VJY${L@1m)6}sAO2k$!&22(H)Zn2)1H0y zM}AIRoFRE(&c3~iS6J+BpDey6B(%{*+`sj@#?a!msa-Tn_#c`i3IZT_W)6`flv?a$ZerX?CYyLQga;^_tJeEg;- z`Ws%*Zq3~MXk~F<%AXh4I%ErqzVn?j=G&mHDF6N$zd_+2i6@cSKeLXhonqL3gLBWf zkn)&!H}C2SaIoy3pYlU_@%>ym;o9}5KmMO~H-?W-pfh#5ja_*#tMI&+ZS#G2EEZ3h zTKvvKcH>`Lk6jl!#N+B_xV_6-A|%mKC?d7Q{6AkA??V6UeeOu2Qi`8#Oz+80Pa_`#0yf^Zy#T%wIO&L^~|^ z*RVbMce!HK+@AO0%N{JZI{)pjm)qVi7PESSca&u`i%sxW6$!a=>C?fDB_I7#|K3t! z^RJZ4d{*;Kti$tvrrMY4*@3Z#3rZ(lFK5>>sn{*`l`9%}D4KCjqNEWAqi+C;6_2Tv#OF8+2y zah0mox3{JrA3QJ!n(Sip>yq-7H#c0{OgidpXHS|tp(9ZD*@ZXxA7y{)C9{<-j_k00 z>U!1Xo0MmDsoHVl*cUepTP8hO`^GNNC+bg)%ijAbKH-wt@sW*1KbpUE1#L)8uIT+^puaac^7y!5LLkxF+`fwdOJqSDCyz=j02= zSiz@nA3eX>*<$}og8zp_;>P)jm#=v}3B7H(B>!~x;GiQ_sT7c zTT7#PY(4~d&v}3Et)2h}OZ|$L%bHI8XZEIS4+)%WAhq+m^9m<*WuepgUW*OFf|HA4 zZl>JI+x#FvqoA>ALR{KAqecAJHAa~~KTR~>DJ^1NT&N^oTd6xwmhHmIT$Z}XiD&N5^GZD-5cfjX zb;d=HC;sgPoczc4>di~G=DVP>OZXjc>Qv1uJ1VOdaq%4Vt!G=$$Nch&8Poqa8bRBa z1_>I?cwW{1c=aB`jL#{T*0{>d`)j${e4f&)j}}j^6;0Z<_R((9#L`+-3>E)VZH;+zMkoWHk zpP&5xVNj5t74t!pi*wa3n)UcsyFTCy2=BRdRya3-<6i0Wyt>0qY=&#fS@tb6Uh?|f zgnb{B*j17iuy%E1*yu)E?5nl+U6lMW|0L zN8K`0IvStNa9N~1y}0+KSI+VbzC69<-oG>a(w8Z1i*Q`0wk1`e(|fYVw)sK*jUaI*ZMr5bM^n@*5L{Q z9RI9ZERDWTSXrTL=4|zBlkAPG;{2J*>Yr4m>DqhpGEBd*FGW8t_SOQ%Ge4icSnvDh za#QEQoont?Pl~$#t)e2klOyMh_k8`tlao|ye!WZhqqlr(!~~O9C$i)H4;q`#Tq|83 zn8vpAlwW0((9$XmowKeoulj$r8FemM$5Z#bR4z*?{dYgN=k?;rug_0zUUBj4b4G)d zxep`KTUPvq1;`L6}P>k9-3yBn!eyEz47{t#HrN=jIQFBG z+Ooryaf^3eK6~(uuTI#JgSnMIPe1>lZ+m=O>g$y+4Eny`mu&dxU~}7VN%GFCA?o4b zbBZo$?)diC=-Gx}-J)|$XS`dW$ja3CV7)s>$~(c;hU~!)wPJ4PJFa@$u(QOP@A%o* zK1uWIC-0afX>((*@!Dvnp5_s=qJaIDJ+}7<1;^ zX-6(IKl+guFOV$Pee}3*FN=f9;j6yAuI2OAAMbxOU;g~TuMZ24Sj6hBm6#gU>!qi- zcT$DM`6rF`+qH$49QJ;^Ux(kth8L7lkbjT6uBTN`dTIhF=<; z?p6IV{nA^lU}Z3O-`>X^)lXE-VoTD0ILO=OWz1(ypObMt?({oJ;mA0NzGdYf>)>kv zGQ^x8J(^MO=Q^QV%G}&ENN@p1`ll<3IW>6(g@uJjY`;l9_daKs{6}Nn-xuyzoR44H zv(R_X;#~@7|IBz;`)J1OReN6AOui>`Xxa1j7)$@KwL2GTPTjF{r9gK|#+@r3M<=cR z`Y9x^vdC7SNBZ;`=k!jQ3+$)Q|4%)#;`zy}mXxOV6P87XO7criK@DU*0g|+G=2+@uSy>Z|#E{s>Ufxi} z*e84MQJlCZDBq?RKhqViN_odRdnHHkOS28vA8iPEwBhO_1JMM%sQTYNuL_RYT@&7V zwB=;d@7H?#VtAvre+5hA=OnG}KY%WK`*$Tn- zrA!RL7qe30_!UaI_NLmcpTS;f^sIi*inY_c_A>X*4*vV0?{M42fNqa>S#6q@>|t=bLL zo)=8~`876edq|?icP&0|RR+FnUbAF1zSVr~OQkkm;a!=X?Xu|CO_kl{@1K2mczDT@ zB@-r1a$37guraUee%-@GXKlW}i`>Q6vof9`RqNUEo8Bj;{ScOY5%zy+%9*Dbi}?JX zd;fXf`_<&#ZN9Z%&RMqlM$&*j6SP8yc@0zpjL5LHd-oAGl|2iBFgq>dc zh5Lo9mkDoi>c5a(F8AuPZ6EHv^+0iVVcGewtGX_oJhA=Z!!TQVU!^VsF% z@>AcmnarFSBKqdxTK{twQv3 z&6WBq_o+00wiLUw_e#VU)s$sV6~2FPDpcpqHJ(_kIN7UPrZ-BFrI6`hyvw1NB8eF< z^NdCF55>(cepwimx^1*M2shzUqra@6DWFHB#MuBF!I#PCq*yobm7${oPruVJ2lLb>1-j75kfASB3PwP2J0n6u+s_44W<5{q_5{>3z+o zA8GEns2eOBCi>`jl_s%rd=<~C;3oX~ZBu`K;>}NwL;muYT5idaX5DU?b;kB+_S0YL~zfZm2J5xS!yOhAmT84s%QyXTVK42-+z{t!dpt7&QXf?0D%~jT&cC+W( z*EIk9xN=7e-}AZhYQmR4Jl|rMYn@+b(mX}SIFR2b;g$E{l{da=zW2HByLB&5^ycd; zwJi>{2k%ci-Wt<&)^U%V^^%1uReXQ8H08b)*4(=7aEQpcMdrUZeUH!;RKEB8_3_0w z4PSHD-KmlaP2i9F`NcQsuV{yCsLbsh!qFb~aW$*NwK}J|Tj@OAx^s8t9sBvoyXziY z`QZ{*^IN-ZTfyT;^Ny~udwQ&8y4)hOOxcgW=SUbFI99)`=A7$fU|A=&9PO9F%tTAA$rf}4Z^$Y z=AC@F^Yl%-B9XOBNt_`vkK-rrQ$79Uq;qh5dPlTTv6$@g1vafk-RA!F2L02-_a{F( zvo=DcxANWI>yr1(wk#BP@Adak{4e=U=kEOKS$1z1eY_fTS$N3@g=N9vY)3SHW?uHw zS-QL8w`_V`Wxl~X)!j3HmFoGMTU_>QCihR%AJ68yU;V}z z5_x;(pGV?LUOp|Udvw32|6JO;CgCX|UX_2EIhWM@mJd^X`61V|X`$@Z3@6bUlj>4l zxzEg zqeFplV#Z6o;EM0gqMyD@l}|ko5#lJkZl9QqV5ioHT{fySk9%JKDR^6N#+t?4k@a`F zzdx_@&-kfyZRxKIYjYWb92OQHK7Muj1p)p^=axTw7k{|xywHq2IlAwAzC8cXXymh# zeMQGF_G0_FE!RSNtqgW0W_UV!bhK<%jh*@PV)K%C?WGs@zhr;+UctKE;h>uNq6HnC#A zV$bfT*L-=UbpU(WvOf=!J}p}8F=H3c@{P_fuit6?q3Zd=?ApXRvPY_o@43y~(sT9p z-OAj5*T1ODopLE_&Q;YlKYp1^p0@Vs(Xy3$tc<1Yk7sf$&r>(CdAA zDTnwk&%EKnn%Mhc${mBYfUWJB>*qY)7XrkWm_KKIEBmTQMll@Uqbt8-e&&VmeC_+s?0;ys+-(oKrfFZ*1b- zQk$Q+dmho4XX_)#fl&Yh3n%AM1UC+$i%JspI&2I zSH^#~Y!p~qEgQ6RF1NVO4R8LyH`cS{?ds+1R|QtMU;Ogv!lavib?^M@B4&E+Ke*Rp z&Ohe9d9|ED4o6%6uDLy{YvH<%&6<%XtiCQ-?a#S-TZnm#_SSz^KVgp$xgdHhP6_*(pU2jDG1-Tm|xQ;HPyVe`kKI%<oOS41v7}Z<-eR6Y-?sdhf(>JC43Y-_QXWsN={SUv+_%tm& z`J|%fVf%l-g?gV^Dodx|Fi~#5c)#ZClWFTboSHvOx%=znU8cqd-v!&Iy>osRWf*t% z)`PW-_45VZh<|=9-<5u`u;i&y-L08kTTeD^mOSI?8X@(4X=lB2S~u%nn<>-I{uTUx z%Ub>i!(8R13(6E779L4jv+SB{+tOuh+c)Tac`er`06k6?MC-e$SPehk8H%NW5zK zX1mndi`&-uZ(eEV8|!Q8)+^)f%RB4BIU5P_KAsH{c@=y2YESoh`$FO)cf6mU-;VGn z1uOr&3g|w%;`pP5j_>Zz@bKrX_>$LmX!4p%9wyewBe($%ZisQO9>%Hfm42l)w>Ex*Yg&_1>?RAyH93E0fRM^V(FRA$zxX%I=dBuS=~gtT1@+Q0~XhO2J!OnEyq6 z=z4ipxu2!*)9wDq!b2hT??Yd%;C}D?+2Mj&*AexfNOzl67Y~x5t?iE_W9iMlsCpTq9&WaqjNR z_IhIc>c(mB9rozSJUz0L>71Wqr2^5b9X%-y0lj4z+iS%0YJ za129wKK~vOuUjRuM;5gIx@f1yz}gVvoin|FFZaHOlb;?d>+&BT?{DUuYrtYZkta2d zFTLB_V21R*Op&~jzKaufma$Hcvh`5TFIRf%dcx_qVa5doHr}@_+n>D3jSQXCsk_6N z+5MQ}u8NL7SqH2ca-VUP$>=Ji-WUAx_qK3Zvh&pClU8P(UGQ)($F^k?1Ctag?>^u2 z=c-hezWtxIZ+K>|3geNw*Da7O^^-4rk0@7E{JP}N4pSN?Z)d;f^>gZV>yno)`sbC` z+@9?0=*al=mz7Hz`z~+ECogzz$npiWd_G|yo>sqoRxvB9h{&7Ncj>o3yt>5Hd)2`+ zQIU0dki{!u*KP+^qgc_KmXRS>ZXGz<%kenw+S^l#wu-G^#1xO5$nQ}4@>Ati>`U7P z=DJRAo}`E->=x?1v7@9&a`Le{7uOK^dGjr%)y+M;^V1!t*`2F4332JAP7aLhJnY+T z@>?mBm35AF*%Y7Crq->eMSgg^_VD+7e5titWxoIJym{SMBE93TsfHwOg=|| ztV?7p{9NywwcIaxKlkyTHImJ8?|e1HPoB_C`+Y|8%GXAMy85U5Skbn8d)N2n&yDxBcFy&lzNzkg+&7u4#&3SA zzZ4T}*}kofSz2tu$~@=p4cmJDx~qTl`QLN(c($Zzrj6meq%%hLi%1{t!8cMaLKzCsQy)TS0Tf}i@pX+^AtmGO>Mlm^305V zJv@aBvWI6~wm2oMzh9uqX6ls?>5D&F1+Em-txzhARy=H1**Y)qV8-0_bDygmvRuGv z%hdJb&E%Ig_QitF=B@wuZbz8LoIRXn_NN!A-VSUjS3I@4Zs~lN)yGziz#GEuFn>gYC*Tv$swG8hq*P2To&o;xjqqga#`^0 zd}Obhz#sdm1y-&Vo7O+zPcbd3xLSUu-~YhkKzp@)HjN$8z4~{Vr)??`TXWaxvfbnt zLRI|gabap7-f!nK_;~rGi{*d*(=S-Jr>%Z^#v7j#3RMix6fK(C^6AGJMi9VqnocZG*=%zds_78 zdcP2%KVo9es;x&=XA~Z^zwuwc_&p~}ll}QQm8V;tUT?CWcIRgEgo6I+*q+%POSw$e z)i=rsbPDCqkM^q+{o`kpu6r=?R&^{-qeH=T&Uzs(7SIgtj(pC>9tQ=`T=4H{0w*{y z1r2U~*VEM0Ogw&W?ujMa^NVKR^$Q6R$-TX0XSb>_Nd1Fy-A%lc(8_ z^H#r;*c7p|#5{Gn`J{`go1QG6eC1Eu>&R7H5r6N7%&UAR88_#b;&1&smGAaEskpZG z_Nh6R(V9Cq%{=QX{@}*DyL0wMoXZW0S?Zl~^3(mWItHHU5k}?ON2lF>$H6jXQ~Ix* zZOcW2*P18o4w7K@%-;8Ce|P`Af4kapuIb$O?YvpFTLct(Ke~mgQr z(yOd5FM8EZm9phb-~O}s#)_-g7nsiy@D9z`BK0K6VUd!F7T3njQ(k%5TJ+4&S#Ygt zvC!4P(6z^Ngck?xR?xRSeXYXw?Qi#sCnEiN*GY9dw|G77iqbo_;CiCT%?UAf`wzRg zR*H(nva)?Poh`?7&B}I{ma^HCjJ+|1Q&Ki0hKtrdv-jE0pdTY;CblVj$>ywhG1aM( zDqr6_h?jF)?Uj7<^=Zkqs)ZMxZ!ABa_-D6?tt`v!iE^96-W|&*TzGatB2S6-^WF0wUz~kl^=X!Wzmw`s zf()<7r5(@9SNmtvBPP|bETFP!y87NWlMQ_P!-OTpW*(azpL;MW*XiQ>$TXhv)PL>9 z7Blh>MufXgmSbjEq3M@;(){zy$+0~yl1Da($EO!a>o0l6RkkLsH&{St&O`@~&rw~M zj6TTh?pPkf|KaDUxe{mew#XUu=v}jwu`g-sPnW7Va=)|G`g>67rpH%b8s7Wu&i&|l z?V(?jmv*?$c4qf zanbYK{@->_AICrV_|G>WN!eaguz0iG5z#YA-!JM|ZS#F7|M;4aMDh|1UE%MA-4%*I zOja%r`+SmJ)TioY>@V|+cXqvHWomTzFkP9&sC;IK(m~Iq4l5@t4mmN=b7_Z*QizuN zn{Cz-w+bXI=GRPv8(hQJX(M?fh8hxX0h^ z;urHfxOJ6~zUUW^S7(p^&pKw_e1CzB4nusjWxH7JgG)~$l$4V>PI)O>n>RD>e(Y&A z>+}t*msPgdo^7r!%sFp(YL@lFE5ANJ+0vg8xot}OexGC69_qJBHh%o_{JcQrTefa+ z?maEcG;_C)n&{%76M-jEPox?x;axpLq)2k>R&y33CBdZGtlewt0*nsT`e|YLR8OH z+cu7P!;qyPP8Q#P`0d7Ko}jr)v%<`(x;fI{J6!S7*f?XO>6@$Bu5Kaw1$*kY2xo0% z5$CthyEFOx&GnXyQ46lImUEWWze?R@Gw0l$iT%oQKXm@f@$#+a-F>r1QK5}f__)Bz zX@;!nYuxLT-suTD&!5xu?un7#)X?CUB5obiC93C&cHb>4%~-ikY__{aoZf;fRgXfZ z^!^jejSUYxv60z+g7bv-7e1q@U&YCy5HXxCWY@%RA_ySO3;K z~V4mSbOj6#l?C*c3BHwJ0xpA zKYqoE(BqwdZ?Dh`zg&`1o^>ScjZpoZ&FP!eF7{5FXPI-qj4gNzk4d7->a7+l^(K@* z4Wb$cG@lU@eX)vc`fJm!H##e9bbNNzd5M_sy(fhB>$aw zQ9k>)%l+3yf8M_QT6OC5X--~FHzm*te}V3!UxjOA`Ba1qw{G2f<;oQS8JRm1ynR!S z8+Zi;X_`tDupIe#r=xF2M9-7wPm>EjF0TGB_~q?wzQe5{UfDbng-a`aIJ^q~_DKKl z5X)HmGetaP(TA=@;q&EO*nSD!Iw8LFQnSJQs7pp&0=vx@xgS4wq%5Pme|G1dKSEB{ zJPWEnXDnLelzDHL^22{zT%WmCnB6S+n(MNmpIhjN#vIch?CnA_GENaI*o`*Ih@V$j z^mnSr^QXyyzc0N#$k_6;Rp>#i*UE#__bIa}pYzYw*eoq;wf*?fIlgtB6Cd#LUs7JC zYWvGf&D@sxPSeYK8@Y8C{SE9o+F%{Hwpnw3MWfYrJ{!|@#!{U;>E`}Yt-nl`FwW-P zbNKdUiyN$+K8@3liI%@lSR~~xAor@#XU&15ciT6t;8>)jD)Qvo1K~>&^5Qr5?(_t; zOFqn2nd9fU<<0V~eTIwM?!Dgh=dGxy=tf;Txv5^Iw@t!UPyO(rAj!IH54>Swl77z! zG{N%m>({3rIfdVq8iLGG_z^8AH$##1rEF`Wc6sNRNniaX)pIOL=8$j-s9wwW)De65 z=1EI;_pX1DiRL>>UJ6z1{g?mQR$=l<4jvwt#XG;sm5Oz@c8lvL8O?mRdgDvh&Zs``6FrZ4Zu$I(2h%x}-q@gP)(D`BKY@7XmjUBUxBkV{cA+em!Ds*r!jQ zPMki!ynKD!{#kJ#TPAw6wC}dgTbHFc0W|BlUvu|ezrvM#JAM}bdvkO1kz>a$tq5Ga z-?zW#WJ=QCUth0Wy?WPZg5~U4r!FjXE-WtIz3$xlH+8K=!IlhBGpDVW`|)a5jqfaz z#J9J$Iw^b(R~GATRRGN^{yX-{{&~Lb-z!NQAH03rdp2$N>7~CuYfSYL;X0bjY}|gh zvAvx=?eo{)51&dE8M0kvSaAMg^7h;7t>3+SS9kp2JOM~6v_SlCY*q5RDTg2axN3F3 z;?MRi7j2`qrW_AgdpIEd;WpQ;vsW6<*m(cl5BVq=V^g-vy6dOb6=)WRtHs@&zDujM z|9-Sn-I@RE6P;lUZW2)XaW={FP`n~_nd-|36#oy$E<$@(=PuELyPr4^x9e-o3 z1aIk$ywCE-(~N`5yQ{CJtzEooQBxO}?X=rZw%%SN@#X53$Q+q?!``FnS_@M6-`8zu zJ$1TMrp%|bbcW8h+3ObicRz1FdfQ;e`ww-yLu1c~=KRj&yzTe&Q+N8$sb!#*VfUZv zf4%+h#+etTQ+em_6qWF~7Jt6Dzy9BJtN;3$dC%{CIdNr~QR;!oJNjlGv!48G@!n8P zF7r=^+{^6#ma)jymsN6^e>~(KX7{)3iSPAQm!}6uCGPpfn!I|c!G4+3?{~!9+gN%g zV#l=2s%|bpx`oMV#;Fn2BD}}1N{1%+3Wr z_dYF*xHxtC;vLPe|EYy~?lJzV;9vibXQJPA{{yRaeG*@`l}?%cc*ds~^EvC~9^QDB zS!4g)hHZ7*4*q*-LDN5Izkite{QH?_ci)#^dcX91=JPj4ZU(=+!usN*{)(MaArW8Z z+^A&;%&<uulP{$2TJv8T&!jrzY)OpOofKXp5MFRh+w^UB-DQBK2W=?}XPikH>4?R&ZT>H0@y zhcm7hS;$<8eC46*?V5j$IUsxQC0mENTl@CjtY!>2ef3Diu{#&DmY#m+sj%4lM$fvJ z0yU@mf+B8mJD*JClkrnFey*doyui)YQt<-;5zWM*8 zc`x#uC2dt2&dy(>^ylKql51&3>F+A5?5{Njd+RNiJoG{_cEhuGX&1kgK4Eyv#&h_- z>Xdh}Qh~E}^>4QFzhhKh{N@0w-A}$_=35QR?+U&tGvC!$JxQZ|=9k8$%0 zT&!eWpFX`&^0l(sPtG$UCH|3Cyz;^)^98QVf1mERaNlav!u2fX`+7E}H`=Etzl=Gx_45brW{ds5+{@;# zJYu^*xc~2BW6#~f8oRgjbIp&4^6s{rko|a~di=7b{?3KAQJ>ED|37@;#)V(+cCSjA zCjKliHn4t&MyBlM=kJy=#UI=MRqO04p_!XgOlMBzvf{7nNxb{(g7^1)KQaELz8|BO zoxR_F^qJFh!~Y9re-nz{HcxH6g><)7%S8XZPKzg%`pn+`-D{ShY^}%r&3*H)$sc{R z>VOj0k@Elidp2F_$p0MIBX213aVhVaS(_(w)kv6s4Ym3e!|T>#sXlXeim0TknUb~b zksIt=*2GWlJiDQNicZCc`SKUnyfIn1{Mv_??WR5dk8_vshsU4HU%ghz+?G4}MeqA$ zvEAa~MlYY6mTb*=^zmf0<{P8d?8%`^*QBR93HB=8ddO7KzWw0uA9Y1vFNTP#8~)zA zSY+yNgKzgI2d=!@;hU-R=b=W~;k-$k7yREm-#}rPrn5-#jmfELOP=w3p1$Tu&BES} zzGjKr*PDB@jW$Y_Pp;woW&c}IS4-H_c4ympyEV@)s>dtoJt~UjQOW<)wm4hGB+I;G zqw*t-dml~hbM|xmFnIP=oa5BKIorEF3diqLTkoLoWAUG?{N}rj?yC*=d^;MkM}OV( zjjfVP<{3E?U~zUayC&$nMw7pgtl+gvg6#n%y994%f=J;|6YGOm!I+G8?$rabJ8#VbiEOq z;}LUIL+X(6=GmS7m+W2EOgGTWlJUJW`_D2Xk2ZUwUw5AwUfjR)!++yy*4z8zeNU{| zcx9gN5vdzISAQ-&b2IMj0(betn%eVhMHRpFZ7ldwqadu#uW;tF=*%5mwf5_jeC2%3 z^C>Qw?{Vy%aBK9*!ZNifffXg}C2xJ-ew&-3#q{#3VM~v&=8e4~GIPF~&Z^TlGFZp^ zXi>7tlZ=e}W*vJbOW&wJIQ3ob5gFU}=Z~CZ?)dQi@a5C1@y+-}OIF?R>Zq4w-yU))FTy|MDd(JXS1%YT^v|3xyX5BKzZ@a4@wv0l_Fc_# zjx3$={&}>daVf{YqzPJ6ckJA)yxQXA_4%?(UV_xE)I1;MF7|NBoYTuapR3I<>i_)t zWYMh3r5m%dEt!w?x&=#~f8_f7rQNr}GwI?*hu%0n>-isarI73Kt`#@7nzl21H(qli z>R3bJ;!e)5N3Obd*B7u{n`0}pQefh?0$Dj`w!kg5rkQfF8JX5c`-I|mZTsS!wpOw7 zwbQ;?cC(kBp1vXBAmb4`wzAyyM=rC+{MC8$>x0Tff1V|K!v#-=#VoOUta8)OS5n}% z$mVr38r0UVJRNzSwKDvcd&PrQUl(s&-S@t4$|b)!hh8!BvDw>kUGG`@XU>WR(eEW{ zq%YOfFPXBgPIXOO`IKwT>KFEwYV104c8SHUPfr$HQ<1f7I(Yify-auMQvruIm0BfL zw+;6`NekT7wM0$ZrPnYudd4%*QtelFNkW*vY0%xBWm@-7rRV$*;{v-J*%zRv{FXh+pct3QrNjD z*U2E8pR?NC$x3pVKW&Hf_sweNUF^}n7hbCndbC>cp^s8grK$J+D6cOw+P*~l@VtEN z9pt3j{Liq7xn8lXlt8lku%~`_}i&BT;& zKGiEmFFGe~$-FWlTtVPZ8e6ig)>NjGyn978H8ok-*@MHw+i&LV``Z7G$^Pu0wx_Sd zHYep8on`yxUYW)kZFIL{L%#GWzjZ0zO)c|mqYK|%2`kA;zw}Jb{o)bFPxH2_c+Ywm zGsz_{%t~5po@&(@XO?Nt0@rChxo{~*>G$zRxn~pdn|hD=+B__Ky5q2X1Gl)IfTU#Q z=}_YlZ!m-}x&iS$t13Y>DNIi*_@2ttt5?dqP3$&irk*Ru^=)slI&LtEpkI z@Z+~*cQ5;eL@@XP^D5?6 zS*DJx`}6wVMm;KADC+&~X~L1&tLCt5duMxQ;hMc31&d!Rr|JA_j@VOtLEpULO5>Hg zqUzGuzqkM7Pr7JYc{sZ4`I&!@UljF!xOLgR;8WJoDVgUV)qYHm`kvw3e=aem=YCWA zn}DkC87Gfk;t*SRh`97(uT?Wm}`lXsm>h@8k`R?D(CEn1JO*{LhQf5zt-&9Bc z&-WCsv~FAO-)|vJD-pGR&>;a3Y(eHohT`AVS0^n+s6w~Wr>Siw%l+!y!Psjt1g z!ozxQpUra{>&s<}_QbSxD4g2VzcJ-ke~Q$c&ezu_o{6vN0s_ntqnYC(?~UwU#o(+lFC z@!xhXbkUgCkp6n3&6VA%ajiF5-maFf<9cN#a`UycrI66EW%Ac1EL^Ry{?^nLYUe6q zJm))Ku(K_iE?{!&*RG0{>vtZsan8KINBOOF)`@$iJ%_wkzOmfV{dBi}!gle%cb6p| zC$G()3(9bbGJNb}r}cUIqjNH%`=8#;Jp6Hu-MRMs_v-7Tm2Z{4a(NuU%RX7erSzT4 z>T7ma=GeLYsuVTcxKqYE!z3hP0Vx(M!pG|hSbS-#G?ro9%mt4N7y?L_a zok@_0NndW~#iWPd?an^)Yir0clMY)gDrv;V!spO8=j+nf8!96i1*UsSu95Y*->~n* zgv6~;`B6u|c)$C!eCkYZPWO#fmdPj99t#i6{(yEZT}UpXH=@nk@@O~r$g z&nt3cqV@cRHGO>#D=!g0`}zFDkjvufz3R2|<{a98e5%oIpQd25nH5C{CQFB zd-uwJcb9YQy2HHQJMG;blPcd|tqWEAubFJsPq^8ZXJfyJ_0cAyOp&6Yj-x_kO%x9yXU-?uKkyE2Qbd&R|T8>>Q1gP-Xy_r0no zH@{3MJ)HO2CXrKL?iTF3`d_@a?SxzI41?FvRzG8EfBu!cyKvo%)c8906CKwp_s=#q zwx3=4`{vuDQ(wF(Q#!ocIM?m_?XaB|sr>EwJ3bz`aE+x*;{2Pfhdm>|i5VAJKgd6m z`u9(;NoA2j;N4@!dv8~)&`$h0=cz}utxH3-N%~I`x3V$^Of8<+rKVW&YiU_o zzBBhz=`;UcGFsXF(R%;2;OTGueSe?sy74CAO!DKV$tH4_|D96Io;#5#P*!eH$u-$; zj}A|r|9HC5T*Km}*Pn}Wu+($4AO3hc{u1BssU~HM8;vH7lHBY|Qs=%)+{cWD=mxcFArma_5YBfi0qSukd^Hu%koqXh9zwE`sj78B$48NUS zo>@}q;aT6Rr^lmL4k!#_`HleYa)%SettcaW4?J`h3$ic zhHdtH|5hnGI(d07iMW`a?Ll;$N$H#lyGal0j3?z09)g zYSYi^3<><7|Nh>Q6KO_IudeshUdg=D`mfwe=cm6izr2!kzta)k>3{q9oXqadsxP(s zs_r!N-@oa3*UHqt1zSvrR zo!8MTAs&Zr*@nzIzg76p&aXdzuZXwq4*dABXHT)(Ypzs_d7IX?mn(>+^RME)HkohI zpBw)e5AE(*(tKF&ot)_TJHB;3RT*sS@5`TCGuvIj{vBhTT};QJhwE!!UtcG_?Qp(9 zWrfXsnMse=hCP0=#I28KYE*BKqI;cF)r5sPmH#bf3iZ16My+*wd8<8h^3^>?8!PYM z`~1)9()Pbcm>)0y_;n%EEk2o!^~@C&Y)RkWIQh7!oxg9@v{Jvm`P>?}M4j}r?)^qu zcJspPCKx{5d3>hfido`$(g&|h7h7Pwk~8!Ed=15k)o#a)Kb~v95nH^*MmM$i_2DhE zP50aiYWu%u@4R2hsiBpZOs~zB{VbnwXiNLe*moUaE8QM1$(gsxYgtZQ*~~`9G zpU?jDZGf%%s(U{z`Op1plHXr5Y5KmquAy~Oo}R2T8hS+63(MP25})iev$R~sZ(7tO zbCtllOB~9QURO67Sqt3Ur|W(yM?_`M`6E9nj_rv(Q9ob4dA?WgC!bX212fC^RwZtG zd1LDXMYVe$8LYi!3oSMGI-lO=V!X;<@%;UA`_tc^PTXTS(`a==(EM|ImM=4|`Q-EI z?;}aWDk<|H>mJ=R{Alx|R4Gm?^z*L0+%s$c|NT?+;mKcxi5`0Wj~!3lj60F(6@6;) z<>kh;&!VdCTF-D`SM{>wSkdwFvUut-Be{M5HHBU)y|}E*G5x`}A1~jsw6F-?@$(K` zYhHKHt!(dqCjWiEBqI-A2|f!24yK(ucTSl)H8!NT=go1|(?@SF z_t`V$vC>Y4w9TT6Pd4qo9a+sdf6>I;&tenrE|V|sd(riXiCydJ(>E!%A9}THlBqM? z`tY{<@x^638ZPSn*I>5Z7vbU-A^%QBwA=agwk5f9j(<9{&gP>>yhNuB_ki<~f(zew${6l~>)BGOuc_diC*3fn(*Vt>4?_>lW1i|M%kS zuhk)&PM^PdbEd3ynL*kai9LJ#m}kcE)<$I-c4Rm9OH4TLcbhZxL6{J9|7b>+3|1b(zm| zqjnvelP@yON6lHpHAG8Pth?2=`r91y^WBnFyqC`G3!ic_=U7hQ!aWDr(|5L&Ef8+d zP>OkQ$6;Try3yv>ocSD&rp^rcU=!nXd;T_EImOrx?uA#UeDwPG@{YW`!;TBhTpC;7 zZFzl#S72w~x<;XsrN?tNCRuu?$F({+CMPRLt(|u4*fH&xO{e|!rY{a!x#4C`y6@tP z85R{E6bcIqj~qJ|7qE}3wQ0(fDaL(GR>GPSb~?$(h-8@fy_kLGfTi_C4;7)#CsNPe zy(+qOA-lmW_tu8w<9t@-?`rPa{IxPR7H)NFjH-R6`Fokq%tNoPuD-dm_&Mu&OXbNY zFJzeb%rtu1bjiE%jOe0(6NOi;=GrfGQJUzn&bzR%(89uE!R413Sy{Vo9o?w|x){YE zfg$ScO!W&TWo6H{-Ol^%ep-RmNT}0AX=04x-Cd=-Z@KPx=Mh})r2-P$ndaHp12Rly zQuZ{F6ChW*DA7ppeAFZll}Yu2fg*w|51Zz@)U2Iw`ss=DAC6=OifoKpd;RXWIM1S; zGE0Lhw{{nX1t};`^icV)6gIne&mN~&ucS8I%njddF}*cv?V;<(+c#WTaM{k=+gn*t zk&&I9J;mr|sK(u`z9Oz7T&$1t_Xyg@-(MX&$9NKxWT%VLPw|P0hmRkh{-P`}e7DB) z6r-6Z&z#!1V2k3xMhTy9#&y#+lxlzc__3wEeg4K{Zbf-!vwNRBNhy1GUw*kMDLDzgIV5@cL`pz#bbs9aj+mDv$4nL}2uMnHo=rQPXJ5QQ z+0uHZk6THJN%Xdyowr;qwKXS9^iUD21L5J^Kb2TX>Y`=X{cg@4ws-0{6PaMhHE?*y;As-hgvh@1>nyqEiVetsx9M;{{qy6|<~?6;P41Dg==kx&@z3+4=TEG%dw4p0=ggIl-#zGV zv0)K>#XYIw`Xn-%qGdy!(gC zjhXd=uI$r4AN}qrk@f9Ey?oA(=-aFfp~t_4p1v_7=E&1mi?q9##ER|g&qw>^?G-#2 zcj%M2eBzM>hBiOHNu7Gjl-hZ};PruuM~~S*-RW=NusvqR*Qb(uKHsVRvt|2&oi@EU zYkppdz4P(m{Ii)Z)~oN$KK6$7^^F-D=4(C9bbrWnNItXles-%(%J;~ zB3rTUr%mq4oK3RcH}(FRe+@gJVgd80%JAD&9 zW~`*ccK?$2?CEP~-$;7p(GzXkU-KjW*l~-EA6H+m`26^4&9_%9CPtDGuP>NpYWPIC z=WS=#@cuDJwmtUc&6I^-PL%OId(9xei~m*U+D&uRVi_%$vc)jpy0A9bWY?RwGAFYA zgsoE;8oSu~RAg25pJVW|D|vfQ^7=BHNqkQdkF?%!v=!7kZTNy~r2*UJz4;=yyzg=f zbw2445?h+wv2*_Y`~9lQro3ynHtv}sa%EyIXG!LR7wepCZdC;rm`v4bp0nVEM9t~o z8#`_1^EER`h`jYqyQG-4manCxOZAYeyPKP2m9y-<+}(*Mtvhr#SlixWd!Ug2=z|}# zb3XraE9040))aAF-kdSXJ$c=kgzJqlYs^#+&P~dE9(R7CZM4R@E015=$(hGmMW*_$ zn9JPxR=Rt-)P`sc?Q_fbENSU#Q!}wkEa~k$7__DR$QdaIZ=d}ZA-q$sTo(&Y{jjLF zUXcA;j-%YlrNt@ci<;(~jNLhR?d}?m*9J|B&en@IzB*ws!zpj6;QI}JC3&k={ubyi zGHu@!)zKsE#=ieqfX@b#iIaCtKeI_~&fi6yZ>}-79-Db*uk^`P+ZY6H)(Xh=&XhT) z!EN5VAD2yH_I%oMr1W5P?YGCt*=wF%@1OT@sr{eGqT2#Gufr!w8cv!o|Nh*e z^>&G$@9FiFls!M_%E`m&|M=`g`AG(Ew0})L`8|Hmfro8Mab#F!~DpJ zm*+ohJE~)+uspU!j!`+XbGC-qR+iE?UOqGU`NRvPbvc-PeSH-qcIGZ&yRfAu$$kCx z#Q_={Zs#_9V)>3!B%%as7?D(Om}ue5)Rr6`Ar@RP-FXJi*nkRdDHI{<*u| z1LK3b&qj0{ROGQQ*6OU@)N$waab8*LM^Eqkxtw{@^TGL34u_s*pIr6IYe}@gw?m~V zp`}OF)74*IQ+T6g9{1}N@2;%ZKi@7k|FK`5x#HzJy%h|bcXGaZbz}A%kNyR5Z*Fd# z^`)e~$G7*1nEK?{JeQX*e4oF|&D23jdr8mT|_^W;R?O*TE7`*X=L*H1CO@9r_P?>{!;P!+l-Z+PT#l`aA42& zcgknxoSRjopJ%H6`E9#*2FDAAuTvwG4y;KAl7Z8UiTs` z*=JooeJN%O^dtRey<(NyeNaB9s!Vt8`8FHNiHusCjKVJee|YnY_-D(aB?4Z?k+IB& zwWn>?^Y{C{qwvR$7Z_MXZge2w$>pFd!G zVd|!ql(aii2i^VudmZPry(seT>F&c(`)cz9q82>MV2ZEZBUQSb_5xk zw5qS@$pyi>8&ggcJ$JU0x&Lj3bkT}+8cPELCWqc>ey~ef=FFu;9erh2 zbE(6#?q~3HF31iSJ)yO7weF)A7iAVTA1Vx6!C<`dHlLuNy}K?bA=m6 z{uGtCJo#ge{oG%&CnL_N`K-IwQ~81KoBh7Idv4zrWSgO@RCh5~!MOj4bC^+=3n3z8rgccvDnDSh1Zj0V`4tC>GiPPQ|3K}oNe`s@m zKgsz$J0*Qq*UZgrfg4J!r^;oy?CtBBWT92I?zo76-*mlmEpAnD0jJ%w<+s&&Huhw! zQq#Qcas1uAmYv5oRv))pZ_UEh1OJBTxEpWE< zY$lKDj2zA_of(U+U#XsPG5qwR^V1iuvpMqI{*OzrkAmMcE0%P1HvW%`pD)n7V`>uh zN=0SjpJuB*xl_q+Z%^9!Jetj~IXunY`OJfbG7&o`zirLtnEyp2uQI;4Vshj3aC=Yp zr9AvHFK?K3?LJ}b%7-6e4IwVT|Wv}Yf@Q}6saQPFk(M%%r# zr6z9~PWd@zXnnrG-v9jNbM=L{KdW|s<6JQ(B_;QcOI9rFOTMzK_wStB?>T1*+qQk& zD5p{re&E~v^1yZ1g@vcOUgrIG_WQpq`A5fko~{c#nDggD?YE^Vmv%4iTe5Y3@XZi6 z-%$2PRn@}QH8S7*UbJ~lcM4g)@XojSCsWq_5EYKH;*~hUdukiA;G7QFT7WYWi7Khl zW-BFqw@6#h-R;h{@y*_T&wKORt+tq#+x#%eT^(+a>&NKZAhw}vs?6P}0~c<~r+i|W z*wV7LVcNdQ%Mw@roN#IO@k{P?6J~l(Q`+{?HOE9K_3gnUiO!X8XMg)q_2(?J`t-*g zGP5r>b#&YfJM_x(^oPAK_2v{^`+PT@JEP>s%wMax-sG<8c>R+}HmdG5lNC?m{p;H| zYJcO6dzYM2xsP+p!=By01Al24|F~akKlyIPo&^raTwnWSWE6M{UyirmS+tXd@eDmDo*~j>gNi$A9*^+TWRngh?dbI7vDU}5lma?@a;eTXf zG*9^~GdtVO_g5t6e%8?(vqU4yhBJ)Etz^Hd3D-5;%yE4vVv4yHv|L=W^n1y# z>hPq0HR`;PyCZhhm^!tH8!Z;xZ^XVQrbfc1ii=tK&ViIeC5-XxTX&USza0~#uvlAD zsq%fk%KF<)o6k7RbuT|Qy+?hUuYOGVo`dUWSw}3K`tj~ZQ=JgG8~$<2J<UKd+b;fbvF**zmI2$k!tGZ+KYEqZMf_a)F?Qb@SMw@%S}F#g2-KWvF=g$utNz)u zFN@S3?J0k?@{(l0si!jMeE?-3lDEzvuAtX`DJ&GFM8p*=UD2%GcCFnR-*d9*WRhzBZ>4FnT?zMgS(@a`IebV*`uOqf zD`X0d)Xg{AVeZw~(s zhURFLKYIAT@3`UaCh28+4@_Qv$FU*#bk{R4FKMZdJ61GWan0G1ut{=*RF6oMRKch3 z2g2r_+w}9a;kO;F)$Q(&S9GNP?Kplg=y+Fa_l5TUMQe8po0vR*^h)~VlHJb(9^Dt_ zKmPV?zEx&n;Az2JCNp(Yshh2LomPct&5^l!<>eWjs5r04rE*Jy4z6f){POZumyeqB zV$07PUJG|#b34VGwaDt|#f8BPd%jrD>~&+=EV}uo)5}KDH8(LS{_zdSwco#;xR$dk)z=l#k5 zm(=ovRp(Z%Q)P-#NRefzruNM#FAn~HrtfxVf5ZE2FISpGZ8+WftcF!EaOJ|!H>!W0 zpFH_PF!Qe*yWchHdB?Y%4sv&!)%PGT(IWcQ37^Y?C9jNP?$@TAD)FoMQZr?Ky5G_H zNn&Sa9$$FIh>h=?%f$y?J~0W!Hi7dGPTE;~YbmC@)w_s%vCoHPdT>0 z`sMrIhWWN1b?oK|TuBw+dhq_<3J;Y@+|&1Eb7x;$@BDJfp+!82mtF|O*obZ^%s<|E z@a>BSDar5G-``jjZTaa%!LAbCMfo&%Wi&rCwzehkPt>2j$JzIP z#g=2dH9x$}jDjt9HzKcla1y zb(|sT&ZeI=?~d;{_2GO?%(^H$_XMl8+kZWtOS=MIDUd7--Qdm=brS>F7BhS<^`c<p~93WAQW0)!D_(-ESS+a=fRbAZPb0{?B)Bv(NZ<*k{pe z{?BheJ`LGdTV4OzXs!K(iGO#b?5y}brL#UewfUe^^TDS1>%~~jUUi+$DEgvu!P~di zQ`Ahnd{3-Mi1@RhfQt>Xta)_{U0QxDvMYNRopn-Il#}zj6Q@GNid8F)9z4pN{L-=O z)q#_DWz&~ROQ{!>d^`}Vym*&t@5(OjW_j%0_Tv8+ z$|SV7PHL|>vZ_R7hp#(R%+!!)D#1Br%Y8RkADy}L#akweUl+_moF{uaH%y<~BxJ3q z=r=|Db>M03$X}1kzs&n6XZ!cf6!EmcfSVngm+QZa(vNv6nj&^Zsl3E#?I)#0z6@Q< zyo!pr11j7XUV0j^@_EIt28M8vXHs>4KN%Z|$V$kFH!hEt5PW#g_Hb4O+(W7{bmBd?Mbv41~){&wW9=MszG2E2T786t8m?U@?qPcB_^uV;3? zg`gwflqokj`aZa2u2g@2!zjTpY+|j3xa|YUYjXNC1rG*#I{V384YPjWwL5QO$JN#+ zqSuoqYk%bGQaTi^qQ6;e{tJ&gew8kul|=V5j$A&>dN6I7j{e+7QN~PnoyzqUnf~Gf$CrbVH)|Tr zUu&;iBQ7v&)yfs-3R+uR+*}{Me^zoYdwtw}k6#ycZf)&7kd*oEMoeUA|McbDT&~6c zigwP~RVAA>m22mv&Ib(ZFMs;^WU~K`r_(&2ESFufA*emJM{c03SG|7BlQ6BWt`%1#1q%<@Dzqfzi$_Hr-C%Y#=jE^m36*x zY-p+OzkPPkc~aE;=lPVDezgz161F(yyV5hgyUq9BoW3AgZnV$;NagY3SPpS<@v`^# z?q)I1e4Uqe|3F;u%#{dj^-e{4HiG8|)G{kyd;5n|^}5c=dA>@Z;p~&9-dy03aixhd zn<3_^2%R*2eQDlSm986ar(5mt2C18r-R-02tk~O>C90=6K~qO7@#_28AHHPlJ-kU} zlD4Y=OUj7}C!^ojaMw@2t7j6wW&M8N$sT&MZl)YNe!Tl*a@+iGk;%!*qN1V^YoE`% z{wzvy^2vg-GBt}IcZ7xGe5c!Ftt?*t?Fj#iV#`xX6Jsvxht{j-(hpeE6_1_Dpp0)+kMF?Zy8a7`OEI?Yni< za`Ef;UD^|4R2OM%`_;bsZ|wEgWu7Ya?I&iQZ(p`d?bWMS683dAetv$}eILx9IrHR0 z=XR*)C%vAj(Pd#}wdi8TtoeGib2)f;RBUbkW{E#u15e1&t0mZvPw-%#wWhqlhUi?5OO{t&-FO@J zMwi`9g!N6C^r4N9)wpiF`S$F+>*e`~0f6^~reC)YRr=sV(S?=@88=YTTrtl;m=Sw_eyMD9v z@^>vguYNwhJF`UYAH&S6+opY=R9SW)`OUhWMYEMN%g#-{8**~a?{=f?hkmo(TnH&^ zv0QKO=roOwA^8^9yPEIrm%g1zcXAPL>ybKrWA-uQ>VsxlU!Og`nXA~DXZlZv8##pr_;84>%O`5K*Z#e`JdySoSS{jsO-_&J%3`E zOrMF!<=*bxclfx`p6>y1ait>Mtu?jBn{{j|-qiR%Ty@8di?cW$ z$lLyZ?{vd<%ge_Gid-L(9`IS*gO?n&7d%jSzu+}jrX+tKLh5m;|?g_pOCW#i8o5xLJbJDzOX zbi4K0XNR(1e;fZj@RteeUF!Xl@6xI23!$(3`kVEC9u=LTENd|(#33g`r>N4-@UZ-o zdHr%nch^a;xBtq#dhwr`W-EA$6q3%I{$sYR(cb=7$6i0@idXj-SBNHTjeT|0&HvJ- z);D4N&tCp!TNL)^YbVc!n{RHsJtVsF@6NiHKR>@Vzp;Ez@Am!ma~af?r%n~U(ObHM zmFL0Q`OhwUZ*O6r|8L@!gXPKMEGcHyr#Eg*wtu)sPv6c*`0We9hkc&mZbg2kdriOU z+>Uqq@}b~B-|G7Md%rU6noVz4CY?F|;$2mb;oWZwcBCpq&7S)@x!}W8_35Vb`JWeQ zZk1?TY<-en%5zB~yJf2KhfnQq_P&moJi#qBl+SnJWkKoUh)-X+in6?KOkSCK!89QI zlmD(S4s5elANjxc_lHHH)1D+5R2qCcmsqo_Nc`&FV-MsmP1Y;j?0IHyYhqhz4&T0s zyYIYFx%7uQbMsCi>%aCTcfT-oRt8JRF`X4RpSXb0_+rZbldt~HH(uG@pwM;WO!Kif4_0&{QJpW2{84pnY3ju*)=bAAr?0+n=go~G;e`T<*;l=7 z{vOTiaok&(d96NE+xuDj_ORjuZ_Yn1{@?s=`}rB$OZXo?Ruj(sl6WV1@&?%-v&7?m z&h#>zcKqJ!gZlGzlh)UW?&SOYVGMJ9~T?uSi2^2&bCjBlq4 zYGmHta1otnr|7`j#8I|eHZ(&-(R8-vWzHL}6Sm4E3kYQRC2#H&S^nn8+UMLmPQASn zDjE>_^2iKp_fKE*f3N7`Kj^HMAkM0jCVcD^6W8yO<-K?Ox;SpMe*P!mea>&;g!!AN zISH`%s0pi0e)-5)eD;m)s?C0X-5*x$n6O0Il4aJXNSpushmPHK>R3P3_NwZdzXh7? zSDYnpUYic60kr5r8G^6kFW?OE=l__bYi$@Pf7{j#=S66aNZ3v4^x z^|Llw%=Z^l*#CK6ZxZAId-`aUY%-%k^t8RYj_rvEEWt%4Y z*Pr~iy!>eCvoja>Z2es?}eS*!6Rcvi#q&Y3qAa5@L$orn+wres13Jt?=;6?As@fopEE3 zI#vGZQIGUYi(+GCcK5kkPX-iyJQw~uar4|u)88`1AN#cUPvMn@nCbq(waPE8`GclK zw`{!|(Z=7ax-3`0D^^sqt*mG6h3*^YWI0NTkJLHUuc&`?^;UMZ-su%fpJi=1J@N8> zM^5Q|vFGCEN0mtW$@tp0d~ajssoWrc@a^Lp``?-`ZYqGrlQIt#~T2?mxdieCS(g!8*=Mo)6b ze%5kx_m&rCEN|8xk9g&=@?@8ptswJ1o>yx!zs5fZbN+UHqebQXnJ4dT?sabGH~7C+ zsAW~jwBfq# zA1ET&o0{{hMsRg*SjtwmJF>I;ODDvO#J%f_*mQ99X~){jkKr^+?vbr!N{^&di#(=f?|< zJ4dQw_JquMs{4CSV87q9F1KWr;;VjJjNd7QhzM$?UoO|au~h45+#8>|Uy3cF)e^R+ zrOW>_?)iB*{fPC_5084T-?;c}@icpN+2h`&`}V4HFf|oy+&Y~}v@-L`?N@;*&mL(^ zo)|vQed}HJjf;5pdOCzhx$M2ve_&UU)+^mDrR$bE-ETOXrlkJS!1Ub0lJ0MdGX6I{ zK7I5zf52NAukCz{^}pHoZ>^8l3s$)N%Y4h#6E_Z|EtjtR^v-by)5gH4GP%2so_~2+ zShgg_7=Cx|i#Ynsb539Ek*H60nKw_jGo(w}y4^j0)^Od4CtNRg z#2MWD$naoE?X{4z>%Lf3_3v+8XvlbC2jlwnc1gv%W_~L?$kSbM$NGe7O=#_#`}Kbp@kI-n)@|6RwT z4lnJ+&mNd@t^O6XuT(j+#Qn>cWA`JMyzcnDV{f;#(ay$P&HCPH!u}O!4t<=+?P1?A z{m4$`#q2jLtIxIn`2Rle)~;74PoF=2l6{WtE#tgrn|ZQ03tTQv?)cWb=ksYbx6&P* zv+So$y!n^Sii`D({@2IL7RH@Du4LV4dPqQSXSu|?hIO0eIj#SxY=3s`*~CIK>21rZ zqv+Vq4%BQ0}k83=iJneJ8uKVx5Z`Ed8 z`&Ya3i=EN+6Cc)GQ_{BW=H$0I)nQl15OIq&An$(9x_ylr{{w#U&vJ{1ke7L?(ACFM zT9|h5vH3=cd^h`#TIYGWo%Q5qhX*yfXRs`Mr^k?SsQvSmGc{S$W)<-ECqHYr|MR}B zzo68;iFFV4EOxR9Ts+qmrPp-2^Yp*7r(fN(`Tox$uCh+6yRq!@{fB=w=dQoDZr8UC zg$|`n!sl9-xiR}{IFhc|3iiG;oO(^kMp{(l^1+# zYH`YyX_5Mc{hy<4YM)yu{r;jDwa{tZyOW#ceV-k@S-yd#W5y>d{W}*ruNL1=nl`y@ z=jG}@TO${h%!`-f`?BkQ^1R4joa^tI^6kCV?07lt;|bp=rKH7$;qxTcoO)UJfA^g) zf1K}BKE5tsGNu2Xyz|?M_7~i?9lm~5Fi_;=*;A=U=59A$U^UEWP=k&_8+a5?p zoMr#s^O(7*;=yD7jNlD@q1S3={kw6p<=x|n^Co=%-qBDo&+mPG{+51a+v9f}{TVLy z#R?v|5}s~af8{ZAo~`QF?dEsNK1r9`I_#fzv@Shr+im~1d&>_-{jSviU3jwS<2Oy= z|JP2jwjND+E_Pvgcz@Xbg+eFoJ=G>BZjG35^6A=L$#<6REZ@BAV^~~eor#?Ijy|V_ z4$Ch;e6+|mF;4j8)bxc0#?sxV`cD+-uWWuCx+uhI!tB}pWqJQH`Fq!_TbFisSLv76 z*ZYqhJGMIH(CPC>kG9_3U2a_Z>dNZaDVKGAJUf2+rn}p&1D^lx_L*MZx~+KOz7+lW zXX<9&eX6k7*1z_$`1HqHtDcwZ`u3F81`A!<=KT4QtBn20r=|NoAIRIjIBd0{1kd#& zGCI#6zk1bmG9~LO|A8q?lATYC1O;c$u8O+3^MTln?wj}5SpPiR{Yx?DWw-0=^-0q_ z*0pS&Yune?$I;{v6eN_Gn0WoDvvPJ;mWQ98nwi+$dE ztmhLqDo;K+VQ!++p6r=1dWUn&%>8HTvl>mRw`_IlJDOwnI6Z3Zw2jHfCrz8?=IVM> zRPUy}v)=T}i{1IFzS-19wOxBOiCJ>0SL^E4r=MzcyA=5fyMElYgV|bm?dH#=yK{w3 z9^F)VQ&Z2jc)_FR&)etEzb~qHasO>qcB5ZzwtRei87Ap7o_Z?%6koY^t?SaDg;%rI zmj&wWo-|45&)>h%rS55+PrOc^*57fFON{n;&P5jiwm2>@|j1hxTN`{GFODjwK+eLGxLYEsBNzU*|aHlFxU!1D0diis0XKee#3niL;V zvbDP??7xS?=H##G5x4yk3##>Jt@?a(>Lj=0I}%xTtz4ki{GLxrQvB+P_4jiZ@dQ+} z7$sdYscM;%$WiXA#yx%AF&U#tnU9lpyl}j?%f#;g2XQSI!J0=Ej}{v4m~VEq$gsX< zs#Cl5F`=r?#V4}4%0Iq-ugWviq|I#KIS1X{;<*P?|F|UC=zYHssvLQ{JaAd>viR!> zBI3e-qQ5T5i9EY2cIJ$bye|@VofB;j2gEvMzUtziu;;#4f8gE^JErukQ(pEf$Smi+ z+wOUfGv2RfedY0|Q1Z30x4?x{oxUQe&;9kY!6 zSG9iC+B0)^H~LDO2WK)ZjXnSE33E!Q1cQd%j%iEQ7-ewbL3eSaAqJ%0RA+e7htkMZPbn;yQtuW9zL z_pPmK>_x?}J)foK=lUE}W4N;M`|qbREBBvp-xV()eA9Z{hQA3XUFVzaw605f*cEf@ zOQ*V?R?n|F&M)*gntWAdzqv=PlkK%?T8XTtZ}jm)JG~>PPiYKgSdo5zQg4LPuM5f- zj!ci&TNv}MVW&a=A}-@q$)Oh|Jw@2QDcap?UHV=xr9M>k>D8*Hsw0oXH_rCoch~9d z)jJ#NXY4bYY9Ib);kzU6C!Lz@clY+=!g<_{w=5^z_)+ob@ng=d@~L+pO09esskE~% z_SxmzUcXk&=bZgf!tUzHl<6iH%x|>weXW{g#4Rb1nD|@nh5ZUyqlE(J7i9e6>rr>P z$QXIhJ;!d2|Mm;(PDHB-G7;!m(6QpSjdSoGDfG&B=?8->ydGg#@elt(@?Y_nxo^S8hBgh+SDPtGZ!s)+@ujAn3MXS2k ziKkuK_CEDNPiKm}pS%4U>3Mw&Qn$WK9r(d_QDj}^)LKzL7S?v*hj02XZ@hKr#lbtW zyf>OW!9KFN`sQ%$#; z+=$`)RD2+7YjAK((*rq&CEJ_6tWkQRx347UK41CPxu=?ZjJQ`77Vs@CKJU?TDTFUA zJh}YSqTt^zp4lg5tC*+Cry4bW=-b$`V|9T|Zc(DN>CQ}(UF8aAf;oQ$^-Vd|+1c;j zI&aPV`w2hpGJgnixOs7I%9QAX%2VnLA8P!cdf(G?wGx-f%d8bE^PLz%q|Ep1xfAFa zf3~}*l36m@ZvXq@^h?sQE8>bKtT|-#%gycL;`Q3MKbB~@9O#_|7l&b=T~$z%&M7GraEC-e24du+%r{I{{Fas zMRfUu2?Z@@d}I&*FP1;|d;j7)N=}3R4uc$)n&fNT%^J}b?UkPAT<+1WO*9{NA?j^uhN(fBfdzqclgu=iGtnL&kTm zzq}!@k$CiWv1d@lgRtsaa?`mWR|Bu(n$&rRH zxp;-|K1p90xH+)QVB)727R%V=^5YdttCbp+(;t?Ls$bUgz3+HvVbQm@!i9f6Rr2hw zJN4&n?-wbfE``^8)ACF&?w#9pW|5Q4t#1bo2OXW*Q{`s=)5yGa`o<@RRi|X!4U}GZ z>AB>iRY5oRnYQ+a4l(pSS(B+qYA@ZBq;X%-Pk#pBMcNoT|EEXNkaOYt#AnQ{Bra6l~~Oq9S-Ty?BS> z7n!%gLMNvxL}>W& zy0^OTWS2Y)2vbwy+H?Ec^M&g9ieIi+>vW55zS|eGR&`Y|N9gMR4?LPXrf=?Av)J9^ zPG!Sl%b)6|tt`8(H`e~v<9mPe_(37-#rgYZAB&a$keVBvcE4OXc52k8Pu?q5XdgSg zncw!%UCYbD8BM?J4ox_4Sm*BTOOB^59oT1oeN)wCw{7q4oLSG=nX&us;e@YTagj66 z>YDdk6|ZewI%`vt+b;iq`j^?ZS~}ZHm@>+;f4p%z|HF?6d!x^*Uf3iE{K`FfrFhDg zMe}^5M5?0hi*G#HBN|ZYdhuAa`=ePZuTBTwm?U$k`Tf2_+QoJYWB-OPNfF&tlxe&D z%*?ae`G4eto60wS&EP%Rp7pZobgj+*JHkBuoKKd#V>i{T*`8q;U7nlz`rlWb`%_BW zY)k&G_WRYmYTePVb7a$ zk1TwYm9vOxdxJz?<%|6`-;Xr!xVm=vi-^<3$!77k#r%ia?w|NvT>jYhqgqUu+5~^g z+5A5W-Y?O!V4gWUTv6I;#J>4+QlwC*KRfK-kx#vxD(`O`+LXF~Vj#0b_l*rXoZaI3>V~^z zVk@Pr%hE1zNJw+v+;80MmTV|J?eCdKN9{L%El`~Hda?Yc!s+YXjzt~36>mOin_BNh zX?ylHA*q=+Kl})BV?AnkF_lwZ_w4fG<(faT7k+37ovn50=H~M*FXsMB=izF&{M+wj z$cm|42N=_PxwWopeq6nnd*Z>OupEDP`wg%yfpn{a`VisY3gBx?0(7jj(=V=H!Aj} zeW8K-zFF=;^IA2P95~F+|I^pMb8q&uE@j(nzX<1b0S$WucgyPRVk@z5{*k-p|5owO z@%tvuZkqq}dF0|iO}~5I=iaSbks9`e*Ue?>oD(zt?U4D`x^#2>lC&c-i~M?}nHP0# zTC4KXK~!;L?u)y7b=!meYGGiXtD|64v{Mxbg zonO*_iDaqy^_wP7S!FM=F@$f1;2X0^%j_6i3|{Z9^m%>Z6Swx|x%>9*YiZ@SJD&Sw z_8AG0wljH;UMzcGX}Z?9JAPJI_v4qVV+?=p|FpkSYu}v@(w+ZnSpyjt96Nhda%T+N z3Qmr1?u)|~mVP_p|FS1$rOWFzZh0G(yP}fZ|4&bUX6vwIGSjNb6_4i4wb}VWJtSLf z2F$UMi7>0>VPWzbf?fYuU zn+K&Oec$}tpINhcVN2llwhQSo)@gUQH+LG}+PbB9_DR1xN7{?M3J>1Rm)0$bU0e41fY*T^N8&dBI{E(k z;{D~{*8hE1^|tbLz1jX{%fE%ZY@EGqmEM&s7f)P1<5{p0fUq!y1 zo8F(g^e+F;WZgJCLFK)twEx~Xe}47VUg`Ol_uv2T zyEpDpV8ZYBFSE_pS)Etk`lZKQHso=a{tI{gnpno|v6q(2`+a-;tGE2_Po}tvbwAx+ zKAEq-``07>ze>yBRQ|ne9d!4b?60Hmo{OHkyF^|7 z^@R1WqW+%Cwce^D`h9uHlM@erPTcqV#}c+ao{ZniZTf8YuL|3D!?^0xLA#$!t+zJi zHW!8WynMQR{wkK~p6KSdZj3nhqdZ{GJE^Vq z``ydm?sCpcce4F`@6!6>uG0JiUoW0{`SsVm$BDdVd@qh^7rwDA(0mlw%l~y{s?CxO zi=(#doDa0Ah!MWHfz8S~b+WhW(U-4YZ$CNxZHUJ0<%@cFENvw}mARYb>R+MsuuI`8^AO?H#^q6Y^yaCLc2eQEVo(X}n=iplHC$0q4$8Z9|?tZ?d;Fs;*i zzVmrry*Oy*>sge}7P9xlkC)F(E=h)*2wfn$&nGfTI4jd)*}TpbMct=ELZg=a2wBg@ zrmLl;J?V8$z4_$3x2hNTcDgv-bJ)5qL?k2YLCdVD-J+j=g-n^hcF`lAuUEdWUQo7m z(Oh1uOZJOP@~3fmP1CfypqlQv_S53ISu&?Xa+msl^}oC3|Jomoa<@yL70O>$|7~J0 zBOox+VVy~4-llk7-&(D8cQxkgF1gmG_SMHnd*a094YgsP)?d&1-XgX8P*m{C>j~A9 z{l560n)rV5{h4bW5@X)WX9e3#Tz7Tr)u@Tj|3=I>leuMe^kMbmSMAMKerXa44WDxA z^@LmX-&V}a(YzY`{jO^JTb-Sz=8M;DTb%WN{*<#**IjzW%avj+BA0dfp|a!IQ>$NP zufJ&2AKJz9`tbL@45N1e3$oUp`Ww0FT;Hn?6VrTKj(>T`e}CfBXVqVh->#KYhi4SHx;+}n&N%U%0nR#Z#!!x_S zG(C+9j$GGs{)Nf+%kS%CFLpNnzH0e6Xx-_RsiC1oJzp~~OB}vhxJ9*L+2J&)t97&oL#&3)7n)biEXjL&atm%ZCPCu>hR5^dr61YEBk=sTby_5 zO|J>P`l)*TrM0a)a@wV(MBhkWc)L5#?(N3_i#3mRb62fg6<|{*xYfpf_2YKF46DU4 zrvF-A-M3ue@-%Jj$ye8-tKGLgy*B%a|8x`U6?^lytxS3y)q1N>V@}|@tMe9o+kWIJ zU-`+Xt-;YnZCju3)yuuR&-dPBS*uG`F?+Z5?n;hc#`osu)Mu;8Uj6!X#=C0&=g);( zx6BW?d+e5X)PJw4Z`Jy0`YAT^Qe-M`EXjYf!~eI~zwdE7|M`FYaQS=2PuI28If-|J zgc+bZ)(Vu z6LTkoU0-v_C%-+-_UI>T_R=-iSKm6-a{J`oTRXE?*Uam-Kh-xO(n*b7>gy@)^_tnoZFl85KR9!Ffq1Lu z-#;_&N^!ioFgO0rqBq)~q<_z;;@`jUe|72nw)DNLcK$1?eK{>F_U-cq0iy#~6*Co+ zJC4d3#i+dsJ`uCc@B6*|dRLQU9G30-kzQZl8h?15!&|@Fy=Biu>tq=i&h<}VWKiJL z*`y)VnU$xfHaj;nXYZD%wNkRu)4%pa|JIRf;bCC#OxS+=Y1!_QHA_QZ#=Xx!?_+ZF z&!0WV{QXue+Vka*zn`EJ8$*LifyJ9u>(*Qd(fD%l>+xv~4in>dTHX||OX^ZlO;MWY zALqlnfTF3#B4*!$C7#`$4Nb?-b1cg`u=x#Q}u^p~5QkG(C^ z7VFj&>sC#cI}j1JI`m^j%)JWt9t??1H-XLYg8E+CZ(k0#Jqhg+jZ<&kgZoxgpOEh zdRkU)Y3M3GQ|rv|X#a3l& z!Y`gry5icUYsA2?#K&p#!W}Vo(>HN_X{ z*PFMwc2l}oX7N)0)z|Z<=r4}hn!3~KrgY#9yHyuFrr(PGJymXQ$iHQ`L&7KNwaR3@ z)4k#wzbd$D)qSt74cVLw4I-y>)?NE*erJJiHkawuDyP53@^3X}$yqJ?`_*yhr)ejj zpP#NQb#>3`fPXUEod2+aLVA^p+n0Cy{${;?aq&q?Najq*qT6pa9e-|ObY<R#|Kg z*>`4b@jLMQ$KFg8wW@rx!!PPuM(9Dq(yd!gOb%bU^&O9@P|z;rw^x46 z6Ux1FXYsX!`A$n&wN`sh4xjYKQfu`^kdYwwow^Ykuq%#r>HG?l-e<$luF5r3kmWAS-wS@A!R`rXqQ7(6DqB)yEe`rZ7|$BI?%7W&&xFfdGD5sNgj zHD3MlWn`sIo^E5co7beOUu;vRO`G=0@LVT2hsNkF=i>fU@*`vNo3h!{oQ@w6<~;iR z@vS|HweYm-;q4t9S~*k8D|~s?lqZ`arliI0abF~0#K54^c{C~V%I?Hzi;m8YU|?Vn zcK|0vK_do+0}-GMZXl+}%)rp&Ix0LGCU_IXw6{g|2Xa&vb#|UiIm5(oV3E10sMlAH zA2UvKNv=P>_~y*Wx3$0brkrJFIIw8@B9#fR1UEd`S6mw|zS!PC{xWt~$(698u+C}02p literal 35757 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

yeYVQ_+B^+5 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 \uicontrol Options > \uicontrol Android to add paths to the - Android NDK and SDK. + \li Select \uicontrol Tools > \uicontrol Options > \uicontrol Devices > + \uicontrol Android to add paths to the Android NDK and SDK. You can use the \inlineimage download.png (\uicontrol Download) buttons to go to the sites where you can download @@ -219,7 +219,8 @@ \section1 Using the Android Emulator To run your application on the Android Emulator, you must create Android - virtual devices (AVD). Select \uicontrol Tools > \uicontrol Options > \uicontrol Android > + virtual devices (AVD). Select \uicontrol Tools > \uicontrol Options > + \uicontrol Devices > \uicontrol Android > \uicontrol Add. If you run an application without a device connected to the development PC and without an AVD specified, \QC asks you to add an AVD. From d4ef385d598bdca5479b5932b3062c47eb500d46 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 6 Oct 2016 00:59:11 +0200 Subject: [PATCH 17/61] Debugger: Improve QJSValue dumper on 32 bit Change-Id: I18937a92d5202a58d9f3d786c6cc37f8176b2692 Reviewed-by: Christian Stenger --- share/qtcreator/debugger/dumper.py | 23 ++++--- share/qtcreator/debugger/qttypes.py | 96 ++++++++++++++++++++++++++--- tests/auto/debugger/tst_dumpers.cpp | 18 +++--- 3 files changed, 112 insertions(+), 25 deletions(-) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index a149916073e..06dbe86b7a1 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -772,7 +772,7 @@ class DumperBase: continue with SubItem(self, field.name): - self.putItem(value[field]) + self.putItem(value.extractField(field)) def putMembersItem(self, value, sortorder = 10): @@ -2449,6 +2449,8 @@ class DumperBase: if typeobj.code == TypeCodeTypedef: strippedType = typeobj.stripTypedefs() self.putItem(value.cast(strippedType)) + if value.lbitsize is not None and value.lbitsize != value.type.size() * 8: + typeName += " : %s" % value.lbitsize self.putBetterType(typeName) return @@ -2478,7 +2480,9 @@ class DumperBase: #warn("INTEGER: %s %s" % (value.name, value)) self.putValue(value.value()) self.putNumChild(0) - self.putType(typeobj.name) + if value.lbitsize is not None and value.lbitsize != value.type.size() * 8: + typeName += " : %s" % value.lbitsize + self.putType(typeName) return if typeobj.code == TypeCodeFloat: @@ -2579,6 +2583,7 @@ class DumperBase: self.laddress = None self.lIsInScope = True self.ldisplay = None + self.lbitsize = None def check(self): if self.laddress is not None and not self.dumper.isInt(self.laddress): @@ -2595,8 +2600,9 @@ class DumperBase: def stringify(self): addr = "None" if self.laddress is None else ("0x%x" % self.laddress) - return "Value(name='%s',type=%s,data=%s,address=%s)" \ - % (self.name, self.type.stringify(), self.dumper.hexencode(self.ldata), addr) + return "Value(name='%s',type=%s,bsize=%s,data=%s,address=%s)" \ + % (self.name, self.type.name, self.lbitsize, + self.dumper.hexencode(self.ldata), addr) def display(self): if self.type.code == TypeCodeEnum: @@ -2686,6 +2692,7 @@ class DumperBase: fieldBitpos = field.bitpos() fieldOffset = fieldBitpos >> 3 fieldBitpos -= fieldOffset * 8 + fieldType = field.fieldType() val = self.dumper.Value(self.dumper) val.name = field.name @@ -2697,7 +2704,7 @@ class DumperBase: else: self.dumper.check(False) - if fieldBitsize is not None and fieldBitsize % 8 != 0: + if fieldBitsize is not None and fieldBitsize != fieldType.size() * 8: data = val.extractInteger(fieldBitsize, True) data = data >> fieldBitpos data = data & ((1 << fieldBitsize) - 1) @@ -2705,7 +2712,6 @@ class DumperBase: val.ldata = bytes(struct.pack('Q', data)) val.type = None - fieldType = field.fieldType() if val.laddress is not None and fieldType is not None: if fieldType.code in (TypeCodePointer, TypeCodeReference): baseType = fieldType.dereference() @@ -2771,6 +2777,7 @@ class DumperBase: self.check() val = self.dumper.Value(self.dumper) val.laddress = self.laddress + val.lbitsize = self.lbitsize val.ldata = self.ldata val.type = self.dumper.createType(typish) return val @@ -2889,8 +2896,8 @@ class DumperBase: #error("Not implemented") def stringify(self): - return "Type(name='%s',bsize=%s,bpos=%s,code=%s,native=%s)" \ - % (self.name, self.lbitsize, self.lbitpos, self.code, self.nativeType is not None) + return "Type(name='%s',bsize=%s,bpos=%s,code=%s,ntype=%s)" \ + % (self.name, self.lbitsize, self.lbitpos, self.code, self.nativeType) def __getitem__(self, index): if self.dumper.isInt(index): diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index 81e851dee00..0b8f36b48e8 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -2063,11 +2063,63 @@ def qdump__QV4_Object(d, value): d.putValue("PTR: 0x%x" % objectPtr) def qdump__QV4__Value(d, value): + if d.ptrSize() == 4: + qdump_32__QV4__Value(d, value) + else: + qdump_64__QV4__Value(d, value) + +def qdump_32__QV4__Value(d, value): + # QV4_Masks_SilentNaNBit = 0x00040000 + # QV4_Masks_NaN_Mask = 0x7ff80000 + # QV4_Masks_NotDouble_Mask = 0x7ffa0000 + # QV4_Masks_Type_Mask = 0xffffc000 + ns = d.qtNamespace() + v = value.split('Q')[0] + tag = v >> 32 + val = v & 0xffffffff + if (tag & 0x7fff2000) == 0x7fff2000: # Int + d.putValue(val) + d.putBetterType("%sQV4::Value (int32)" % ns) + elif (tag & 0x7fff4000) == 0x7fff4000: # Bool + d.putValue(val) + d.putBetterType("%sQV4::Value (bool)" % ns) + elif (tag & 0x7fff0000) == 0x7fff0000: # Null + d.putValue(val) + d.putBetterType("%sQV4::Value (null)" % ns) + elif (tag & 0x7ffa0000) != 0x7ffa0000: # Double + d.putValue(value.split('d')[0]) + d.putBetterType("%sQV4::Value (double)" % ns) + elif tag == 0x7ffa0000: + if val == 0: + d.putValue("(undefined)") + d.putBetterType("%sQV4::Value (undefined)" % ns) + else: + managed = d.createValue(val, ns + "QV4::Heap::Base") + qdump__QV4__Heap__Base(d, managed) + #d.putValue("[0x%x]" % v) + #d.putPlainChildren(value) + if d.isExpanded(): + with Children(d): + with SubItem(d, "[raw]"): + d.putValue("[0x%x]" % v) + d.putType(" "); + d.putNumChild(0) + with SubItem(d, "[val]"): + d.putValue("[0x%x]" % val) + d.putType(" "); + d.putNumChild(0) + with SubItem(d, "[tag]"): + d.putValue("[0x%x]" % tag) + d.putType(" "); + d.putNumChild(0) + #with SubItem(d, "[vtable]"): + # d.putItem(d.createValue(vtable, ns + "QV4::VTable")) + # d.putType(" "); + # d.putNumChild(0) + d.putFields(value) + +def qdump_64__QV4__Value(d, value): v = value.split('Q')[0] - if d.ptrSize() == 4: - d.putValue("[0x%x]" % v) - d.putPlainChildren(value) - return tag = v >> QV4_Masks_Tag_Shift vtable = v & QV4_PointerMask ns = d.qtNamespace() @@ -2158,15 +2210,45 @@ def qdump__QV4__ScopedString(d, value): def qdump__QJSValue(d, value): + if d.ptrSize() == 4: + qdump_32__QJSValue(d, value) + else: + qdump_64__QJSValue(d, value) + +def qdump_32__QJSValue(d, value): ns = d.qtNamespace() - dd = value.split('Q')[0] - if dd & 1: + dd = value.split('I')[0] + d.putValue("[0x%x]" % dd) + if dd == 0: + d.putValue("(null)") + d.putType(value.type.name + " (null)") + elif dd & 1: variant = d.createValue(dd & ~3, ns + "QVariant") qdump__QVariant(d, variant) d.putBetterType(d.currentType.value.replace('QVariant', 'QJSValue', 1)) - elif dd == 0: + elif dd & 3 == 0: + v4value = d.createValue(dd, ns + "QV4::Value") + qdump_32__QV4__Value(d, v4value) + d.putBetterType(d.currentType.value.replace('QV4::Value', 'QJSValue', 1)) + return + if d.isExpanded(): + with Children(d): + with SubItem(d, "[raw]"): + d.putValue("[0x%x]" % dd) + d.putType(" "); + d.putNumChild(0) + d.putFields(value) + +def qdump_64__QJSValue(d, value): + ns = d.qtNamespace() + dd = value.split('Q')[0] + if dd == 0: d.putValue("(null)") d.putType(value.type.name + " (null)") + elif dd & 1: + variant = d.createValue(dd & ~3, ns + "QVariant") + qdump__QVariant(d, variant) + d.putBetterType(d.currentType.value.replace('QVariant', 'QJSValue', 1)) else: d.putEmptyValue() #qdump__QV4__Value(d, d.createValue(dd, ns + 'QV4::Value')) diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 3db53bb09d8..3f44fb4c095 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -5022,13 +5022,13 @@ void tst_Dumpers::dumper_data() + Check("s", "", "S") + Check("s.b", "0", "bool") - + Check("s.c", "1", "bool") + + Check("s.c", "1", "bool : 1") + Check("s.f", FloatValue("5"), "float") + Check("s.d", FloatValue("6"), "double") + Check("s.i", "7", "int") - + Check("s.x", "2", "unsigned int") - + Check("s.y", "3", "unsigned int") - + Check("s.z", "39", "unsigned int"); + + Check("s.x", "2", "unsigned int : 3") + + Check("s.y", "3", "unsigned int : 4") + + Check("s.z", "39", "unsigned int : 18"); QTest::newRow("Function") @@ -6170,9 +6170,9 @@ void tst_Dumpers::dumper_data() "#include \n", "QGuiApplication app(argc, argv);\n" "QJSEngine eng;\n\n" - "QV4::Value q0; unused(&q0);\n\n" - "QV4::Value q1; unused(&q1);\n" - "q1.setInt_32(1);\n\n" + "//QV4::Value q0; unused(&q0); // Uninitialized data.\n\n" + "//QV4::Value q1; unused(&q1); // Upper 32 bit uninitialized.\n" + "//q1.setInt_32(1);\n\n" "QV4::Value q2; unused(&q2);\n" "q2.setDouble(2.5);\n\n" "QJSValue v10; unused(&v10);\n" @@ -6181,7 +6181,7 @@ void tst_Dumpers::dumper_data() "QJSValue v13 = QJSValue(2.5); unused(&v13);\n" "QJSValue v14 = QJSValue(QLatin1String(\"latin1\")); unused(&v14);\n" "QJSValue v15 = QJSValue(QString(\"utf16\")); unused(&v15);\n" - "QJSValue v16 = QJSValue(bool(true)); unused(&v12);\n" + "QJSValue v16 = QJSValue(bool(true)); unused(&v16);\n" "QJSValue v17 = eng.newArray(100); unused(&v17);\n" "QJSValue v18 = eng.newObject(); unused(&v18);\n\n" "v18.setProperty(\"PropA\", 1);\n" @@ -6198,8 +6198,6 @@ void tst_Dumpers::dumper_data() ) + QmlPrivateProfile() + QtVersion(0x50000) - //+ Check("q0", "(null)", "@QV4::Value (null)") # Works in GUI. Why? - + Check("q1", "1", "@QV4::Value (int32)") + Check("q2", FloatValue("2.5"), "@QV4::Value (double)") //+ Check("v10", "(null)", "@QJSValue (null)") # Works in GUI. Why? + Check("v11", "true", "@QJSValue (bool)") From 655496bc4a1ee3569a6cda6972b047423ee4cd0d Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Thu, 6 Oct 2016 11:31:00 +0200 Subject: [PATCH 18/61] GenericProject: Use helpers from FolderNode to generate project tree Change-Id: Ie9b3c9381cc59c7e1c1b32d9c63c46db0aaa7984 Reviewed-by: Tim Jenssen --- .../genericprojectmanager/genericproject.cpp | 15 +- .../genericprojectnodes.cpp | 135 +----------------- .../genericprojectnodes.h | 8 -- 3 files changed, 13 insertions(+), 145 deletions(-) diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp index 60fbcb9c2eb..8ccd1793377 100644 --- a/src/plugins/genericprojectmanager/genericproject.cpp +++ b/src/plugins/genericprojectmanager/genericproject.cpp @@ -273,14 +273,17 @@ void GenericProject::parseProject(RefreshOptions options) void GenericProject::refresh(RefreshOptions options) { - QSet oldFileList; - if (options & Files) - oldFileList = m_files.toSet(); - parseProject(options); - if (options & Files) - static_cast(rootProjectNode())->refresh(oldFileList); + if (options & Files) { + QList fileNodes = Utils::transform(files(), [](const QString &f) { + FileType fileType = SourceType; // ### FIXME + if (f.endsWith(QLatin1String(".qrc"))) + fileType = ResourceType; + return new FileNode(Utils::FileName::fromString(f), fileType, false); + }); + rootProjectNode()->buildTree(fileNodes); + } refreshCppCodeModel(); } diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.cpp b/src/plugins/genericprojectmanager/genericprojectnodes.cpp index 4e7649c1b0d..a84909c6764 100644 --- a/src/plugins/genericprojectmanager/genericprojectnodes.cpp +++ b/src/plugins/genericprojectmanager/genericprojectnodes.cpp @@ -26,10 +26,12 @@ #include "genericprojectnodes.h" #include "genericproject.h" -#include #include #include +#include +#include + #include using namespace ProjectExplorer; @@ -38,7 +40,7 @@ namespace GenericProjectManager { namespace Internal { GenericProjectNode::GenericProjectNode(GenericProject *project) : - ProjectNode(project->projectFilePath()), + ProjectNode(project->projectDirectory()), m_project(project) { setDisplayName(project->projectFilePath().toFileInfo().completeBaseName()); @@ -71,135 +73,6 @@ QHash sortFilesIntoPaths(const QString &base, const QSet oldFileList) -{ - typedef QHash FilesInPathHash; - typedef FilesInPathHash::ConstIterator FilesInPathHashConstIt; - - // Do those separately - oldFileList.remove(m_project->filesFileName()); - oldFileList.remove(m_project->includesFileName()); - oldFileList.remove(m_project->configFileName()); - - QSet newFileList = m_project->files().toSet(); - newFileList.remove(m_project->filesFileName()); - newFileList.remove(m_project->includesFileName()); - newFileList.remove(m_project->configFileName()); - - QSet removed = oldFileList; - removed.subtract(newFileList); - QSet added = newFileList; - added.subtract(oldFileList); - - QString baseDir = filePath().toFileInfo().absolutePath(); - FilesInPathHash filesInPaths = sortFilesIntoPaths(baseDir, added); - - FilesInPathHashConstIt cend = filesInPaths.constEnd(); - for (FilesInPathHashConstIt it = filesInPaths.constBegin(); it != cend; ++it) { - const QString &filePath = it.key(); - QStringList components; - if (!filePath.isEmpty()) - components = filePath.split(QLatin1Char('/')); - FolderNode *folder = findFolderByName(components, components.size()); - if (!folder) - folder = createFolderByName(components, components.size()); - - QList fileNodes; - foreach (const QString &file, it.value()) { - FileType fileType = SourceType; // ### FIXME - if (file.endsWith(QLatin1String(".qrc"))) - fileType = ResourceType; - FileNode *fileNode = new FileNode(Utils::FileName::fromString(file), - fileType, /*generated = */ false); - fileNodes.append(fileNode); - } - - folder->addFileNodes(fileNodes); - } - - filesInPaths = sortFilesIntoPaths(baseDir, removed); - cend = filesInPaths.constEnd(); - for (FilesInPathHashConstIt it = filesInPaths.constBegin(); it != cend; ++it) { - const QString &filePath = it.key(); - QStringList components; - if (!filePath.isEmpty()) - components = filePath.split(QLatin1Char('/')); - FolderNode *folder = findFolderByName(components, components.size()); - - QList fileNodes; - foreach (const QString &file, it.value()) { - foreach (FileNode *fn, folder->fileNodes()) { - if (fn->filePath().toString() == file) - fileNodes.append(fn); - } - } - - folder->removeFileNodes(fileNodes); - } - - foreach (FolderNode *fn, subFolderNodes()) - removeEmptySubFolders(this, fn); - -} - -void GenericProjectNode::removeEmptySubFolders(FolderNode *gparent, FolderNode *parent) -{ - foreach (FolderNode *fn, parent->subFolderNodes()) - removeEmptySubFolders(parent, fn); - - if (parent->subFolderNodes().isEmpty() && parent->fileNodes().isEmpty()) - gparent->removeFolderNodes(QList() << parent); -} - -FolderNode *GenericProjectNode::createFolderByName(const QStringList &components, int end) -{ - if (end == 0) - return this; - - QString folderName; - for (int i = 0; i < end; ++i) { - folderName.append(components.at(i)); - folderName += QLatin1Char('/'); - } - - const QString component = components.at(end - 1); - - const Utils::FileName folderPath = filePath().parentDir().appendPath(folderName); - FolderNode *folder = new FolderNode(folderPath); - folder->setDisplayName(component); - - FolderNode *parent = findFolderByName(components, end - 1); - if (!parent) - parent = createFolderByName(components, end - 1); - parent->addFolderNodes(QList() << folder); - - return folder; -} - -FolderNode *GenericProjectNode::findFolderByName(const QStringList &components, int end) -{ - if (end == 0) - return this; - - QString folderName; - for (int i = 0; i < end; ++i) { - folderName.append(components.at(i)); - folderName += QLatin1Char('/'); - } - - FolderNode *parent = findFolderByName(components, end - 1); - - if (!parent) - return 0; - - const QString baseDir = filePath().toFileInfo().path(); - foreach (FolderNode *fn, parent->subFolderNodes()) { - if (fn->filePath().toString() == baseDir + QLatin1Char('/') + folderName) - return fn; - } - return 0; -} - bool GenericProjectNode::showInSimpleTree() const { return true; diff --git a/src/plugins/genericprojectmanager/genericprojectnodes.h b/src/plugins/genericprojectmanager/genericprojectnodes.h index 529a62c5c75..3c51d75fa4c 100644 --- a/src/plugins/genericprojectmanager/genericprojectnodes.h +++ b/src/plugins/genericprojectmanager/genericprojectnodes.h @@ -51,14 +51,6 @@ public: bool removeFiles(const QStringList &filePaths, QStringList *notRemoved = 0) override; bool renameFile(const QString &filePath, const QString &newFilePath) override; - void refresh(QSet oldFileList = QSet()); - -private: - typedef QHash FolderByName; - FolderNode *createFolderByName(const QStringList &components, int end); - FolderNode *findFolderByName(const QStringList &components, int end); - void removeEmptySubFolders(FolderNode *gparent, FolderNode *parent); - private: GenericProject *const m_project; }; From 414b816b0c08db8347dbd475b814e5dc1762748b Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Thu, 6 Oct 2016 11:31:06 +0200 Subject: [PATCH 19/61] QmlProject: Use helpers in FolderNode to create project tree Change-Id: I28301e16ce15b06e86cfa909174921b03f9208b5 Reviewed-by: Tim Jenssen --- .../qmlprojectmanager/qmlprojectnodes.cpp | 99 ++----------------- .../qmlprojectmanager/qmlprojectnodes.h | 5 - 2 files changed, 9 insertions(+), 95 deletions(-) diff --git a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp index 3c4235e844e..c470c92f904 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectnodes.cpp @@ -30,6 +30,8 @@ #include #include +#include + #include #include @@ -37,7 +39,7 @@ namespace QmlProjectManager { namespace Internal { QmlProjectNode::QmlProjectNode(QmlProject *project) - : ProjectExplorer::ProjectNode(project->projectFilePath()), + : ProjectExplorer::ProjectNode(project->projectDirectory()), m_project(project) { setDisplayName(project->projectFilePath().toFileInfo().completeBaseName()); @@ -57,12 +59,6 @@ void QmlProjectNode::refresh() { using namespace ProjectExplorer; - // remove the existing nodes. - removeFileNodes(fileNodes()); - removeFolderNodes(subFolderNodes()); - - //ProjectExplorerPlugin::instance()->setCurrentNode(0); // ### remove me - FileNode *projectFilesNode = new FileNode(m_project->filesFileName(), ProjectFileType, /* generated = */ false); @@ -70,91 +66,14 @@ void QmlProjectNode::refresh() QStringList files = m_project->files(); files.removeAll(m_project->filesFileName().toString()); - addFileNodes(QList() - << projectFilesNode); + QList fileNodes = Utils::transform(files, [](const QString &f) { + FileType fileType = SourceType; // ### FIXME + return new FileNode(Utils::FileName::fromString(f), fileType, false); - QHash filesInDirectory; + }); + fileNodes.append(projectFilesNode); - foreach (const QString &fileName, files) { - QFileInfo fileInfo(fileName); - - QString absoluteFilePath; - QString relativeDirectory; - - if (fileInfo.isAbsolute()) { - // plain old file format - absoluteFilePath = fileInfo.filePath(); - relativeDirectory = m_project->projectDir().relativeFilePath(fileInfo.path()); - if (relativeDirectory == QLatin1String(".")) - relativeDirectory.clear(); - } else { - absoluteFilePath = m_project->projectDir().absoluteFilePath(fileInfo.filePath()); - relativeDirectory = fileInfo.path(); - if (relativeDirectory == QLatin1String(".")) - relativeDirectory.clear(); - } - - filesInDirectory[relativeDirectory].append(absoluteFilePath); - } - - const QHash::ConstIterator cend = filesInDirectory.constEnd(); - for (QHash::ConstIterator it = filesInDirectory.constBegin(); it != cend; ++it) { - FolderNode *folder = findOrCreateFolderByName(it.key()); - - QList fileNodes; - foreach (const QString &file, it.value()) { - FileType fileType = SourceType; // ### FIXME - FileNode *fileNode = new FileNode(Utils::FileName::fromString(file), - fileType, /*generated = */ false); - fileNodes.append(fileNode); - } - - folder->addFileNodes(fileNodes); - } - - m_folderByName.clear(); -} - -ProjectExplorer::FolderNode *QmlProjectNode::findOrCreateFolderByName(const QStringList &components, int end) -{ - if (! end) - return 0; - - Utils::FileName folderPath = filePath().parentDir(); - - QString folderName; - for (int i = 0; i < end; ++i) { - folderName.append(components.at(i)); - folderName += QLatin1Char('/'); // ### FIXME - } - - const QString component = components.at(end - 1); - - if (component.isEmpty()) - return this; - - else if (FolderNode *folder = m_folderByName.value(folderName)) - return folder; - - folderPath.appendPath(folderName); - FolderNode *folder = new FolderNode(folderPath); - folder->setDisplayName(component); - - m_folderByName.insert(folderName, folder); - - FolderNode *parent = findOrCreateFolderByName(components, end - 1); - if (! parent) - parent = this; - - parent->addFolderNodes(QList() << folder); - - return folder; -} - -ProjectExplorer::FolderNode *QmlProjectNode::findOrCreateFolderByName(const QString &filePath) -{ - QStringList components = filePath.split(QLatin1Char('/')); - return findOrCreateFolderByName(components, components.length()); + buildTree(fileNodes); } bool QmlProjectNode::showInSimpleTree() const diff --git a/src/plugins/qmlprojectmanager/qmlprojectnodes.h b/src/plugins/qmlprojectmanager/qmlprojectnodes.h index 6198cd10ea5..c422e06baba 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectnodes.h +++ b/src/plugins/qmlprojectmanager/qmlprojectnodes.h @@ -54,13 +54,8 @@ public: void refresh(); -private: - FolderNode *findOrCreateFolderByName(const QString &filePath); - FolderNode *findOrCreateFolderByName(const QStringList &components, int end); - private: QmlProject *m_project; - QHash m_folderByName; }; } // namespace Internal From 9b40c1fc048bbd92d53fcd64c991fe45b4cbbe81 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Thu, 6 Oct 2016 11:31:15 +0200 Subject: [PATCH 20/61] CMake: Move code from CMakeProject into BuildDirManager This is in preparation for having support for cmake's server mode. Change-Id: I6cc04fe7c5132c491c3f3c0f46560b8ad88808e8 Reviewed-by: Tim Jenssen --- .../cmakeprojectmanager/builddirmanager.cpp | 95 ++++++++++++------- .../cmakeprojectmanager/builddirmanager.h | 31 +++--- .../cmakebuildconfiguration.cpp | 5 - .../cmakebuildconfiguration.h | 2 - src/plugins/cmakeprojectmanager/cmakefile.cpp | 7 +- src/plugins/cmakeprojectmanager/cmakefile.h | 8 +- .../cmakeprojectmanager/cmakeproject.cpp | 44 +-------- .../cmakeprojectmanager/cmakeproject.h | 4 - 8 files changed, 90 insertions(+), 106 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index 182c6fc2e93..34011b5118a 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.cpp +++ b/src/plugins/cmakeprojectmanager/builddirmanager.cpp @@ -28,9 +28,11 @@ #include "cmakekitinformation.h" #include "cmakeparser.h" #include "cmakeprojectmanager.h" +#include "cmakeprojectnodes.h" #include "cmaketool.h" #include +#include #include #include #include @@ -54,6 +56,8 @@ #include #include +using namespace ProjectExplorer; + // -------------------------------------------------------------------- // Helper: // -------------------------------------------------------------------- @@ -61,7 +65,7 @@ namespace CMakeProjectManager { namespace Internal { -static QStringList toArguments(const CMakeConfig &config, const ProjectExplorer::Kit *k) { +static QStringList toArguments(const CMakeConfig &config, const Kit *k) { return Utils::transform(config, [k](const CMakeConfigItem &i) -> QString { QString a = QString::fromLatin1("-D"); a.append(QString::fromUtf8(i.key)); @@ -110,10 +114,11 @@ BuildDirManager::~BuildDirManager() { stopProcess(); resetData(); + qDeleteAll(m_watchedFiles); delete m_tempDir; } -const ProjectExplorer::Kit *BuildDirManager::kit() const +const Kit *BuildDirManager::kit() const { return m_buildConfiguration->target()->kit(); } @@ -202,6 +207,38 @@ bool BuildDirManager::persistCMakeState() return true; } +void BuildDirManager::generateProjectTree(CMakeProjectNode *root) +{ + root->setDisplayName(m_projectName); + + // Delete no longer necessary file watcher: + const QSet currentWatched + = Utils::transform(m_watchedFiles, [](CMakeFile *cmf) { return cmf->filePath(); }); + const QSet toWatch = m_cmakeFiles; + QSet toDelete = currentWatched; + toDelete.subtract(toWatch); + m_watchedFiles = Utils::filtered(m_watchedFiles, [&toDelete](Internal::CMakeFile *cmf) { + if (toDelete.contains(cmf->filePath())) { + delete cmf; + return false; + } + return true; + }); + + // Add new file watchers: + QSet toAdd = toWatch; + toAdd.subtract(currentWatched); + foreach (const Utils::FileName &fn, toAdd) { + CMakeFile *cm = new CMakeFile(this, fn); + Core::DocumentManager::addDocument(cm); + m_watchedFiles.insert(cm); + } + + QList fileNodes = m_files; + root->buildTree(fileNodes); + m_files.clear(); // Some of the FileNodes in files() were deleted! +} + void BuildDirManager::parse() { checkConfiguration(); @@ -247,31 +284,11 @@ void BuildDirManager::clearCache() forceReparse(); } -QString BuildDirManager::projectName() const -{ - return m_projectName; -} - QList BuildDirManager::buildTargets() const { return m_buildTargets; } -QList BuildDirManager::files() -{ - return m_files; -} - -QSet BuildDirManager::cmakeFiles() -{ - return m_cmakeFiles; -} - -void BuildDirManager::clearFiles() -{ - m_files.clear(); -} - CMakeConfig BuildDirManager::parsedConfiguration() const { if (m_cmakeCache.isEmpty()) { @@ -350,7 +367,7 @@ void BuildDirManager::extractData() resetData(); m_projectName = sourceDirectory().fileName(); - m_files.append(new ProjectExplorer::FileNode(topCMake, ProjectExplorer::ProjectFileType, false)); + m_files.append(new FileNode(topCMake, ProjectFileType, false)); // Do not insert topCMake into m_cmakeFiles: The project already watches that! // Find cbp file @@ -376,13 +393,13 @@ void BuildDirManager::extractData() m_files = cbpparser.fileList(); if (cbpparser.hasCMakeFiles()) { m_files.append(cbpparser.cmakeFileList()); - foreach (const ProjectExplorer::FileNode *node, cbpparser.cmakeFileList()) + foreach (const FileNode *node, cbpparser.cmakeFileList()) m_cmakeFiles.insert(node->filePath()); } // Make sure the top cmakelists.txt file is always listed: - if (!Utils::contains(m_files, [topCMake](ProjectExplorer::FileNode *fn) { return fn->filePath() == topCMake; })) { - m_files.append(new ProjectExplorer::FileNode(topCMake, ProjectExplorer::ProjectFileType, false)); + if (!Utils::contains(m_files, [topCMake](FileNode *fn) { return fn->filePath() == topCMake; })) { + m_files.append(new FileNode(topCMake, ProjectFileType, false)); } m_buildTargets = cbpparser.buildTargets(); @@ -409,14 +426,14 @@ void BuildDirManager::startCMake(CMakeTool *tool, const QStringList &generatorAr m_parser = new CMakeParser; QDir source = QDir(sourceDirectory().toString()); - connect(m_parser, &ProjectExplorer::IOutputParser::addTask, m_parser, - [source](const ProjectExplorer::Task &task) { + connect(m_parser, &IOutputParser::addTask, m_parser, + [source](const Task &task) { if (task.file.isEmpty() || task.file.toFileInfo().isAbsolute()) { - ProjectExplorer::TaskHub::addTask(task); + TaskHub::addTask(task); } else { - ProjectExplorer::Task t = task; + Task t = task; t.file = Utils::FileName::fromString(source.absoluteFilePath(task.file.toString())); - ProjectExplorer::TaskHub::addTask(t); + TaskHub::addTask(t); } }); @@ -440,7 +457,7 @@ void BuildDirManager::startCMake(CMakeTool *tool, const QStringList &generatorAr Utils::QtcProcess::addArgs(&args, generatorArgs); Utils::QtcProcess::addArgs(&args, toArguments(config, kit())); - ProjectExplorer::TaskHub::clearTasks(ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM); + TaskHub::clearTasks(ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM); Core::MessageManager::write(tr("Running \"%1 %2\" in %3.") .arg(tool->cmakeExecutable().toUserOutput()) @@ -478,8 +495,7 @@ void BuildDirManager::cmakeFinished(int code, QProcess::ExitStatus status) if (!msg.isEmpty()) { Core::MessageManager::write(msg); - ProjectExplorer::TaskHub::addTask(ProjectExplorer::Task::Error, msg, - ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM); + TaskHub::addTask(Task::Error, msg, ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM); m_future->reportCanceled(); } else { m_future->setProgressValue(1); @@ -526,7 +542,7 @@ void BuildDirManager::checkConfiguration() if (m_tempDir) // always throw away changes in the tmpdir! return; - ProjectExplorer::Kit *k = m_buildConfiguration->target()->kit(); + Kit *k = m_buildConfiguration->target()->kit(); const CMakeConfig cache = parsedConfiguration(); if (cache.isEmpty()) return; // No cache file yet. @@ -664,6 +680,15 @@ CMakeConfig BuildDirManager::parseConfiguration(const Utils::FileName &cacheFile return result; } +void BuildDirManager::handleCmakeFileChange() +{ + Target *t = m_buildConfiguration->target()->project()->activeTarget(); + BuildConfiguration *bc = t ? t->activeBuildConfiguration() : nullptr; + + if (m_buildConfiguration->target() == t && m_buildConfiguration == bc) + cmakeFilesChanged(); +} + void BuildDirManager::maybeForceReparse() { checkConfiguration(); diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.h b/src/plugins/cmakeprojectmanager/builddirmanager.h index 0e860f03ce3..cadb88a9e2e 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.h +++ b/src/plugins/cmakeprojectmanager/builddirmanager.h @@ -27,6 +27,7 @@ #include "cmakecbpparser.h" #include "cmakeconfigitem.h" +#include "cmakefile.h" #include @@ -66,15 +67,8 @@ public: BuildDirManager(CMakeBuildConfiguration *bc); ~BuildDirManager() override; - const ProjectExplorer::Kit *kit() const; - const Utils::FileName buildDirectory() const; - const Utils::FileName workDirectory() const; - const Utils::FileName sourceDirectory() const; - const CMakeConfig intendedConfiguration() const; bool isParsing() const; - void cmakeFilesChanged(); - void parse(); void clearCache(); void forceReparse(); @@ -82,24 +76,33 @@ public: void resetData(); bool persistCMakeState(); - QString projectName() const; + void generateProjectTree(CMakeProjectNode *root); + QList buildTargets() const; - QList files(); - QSet cmakeFiles(); - void clearFiles(); CMakeConfig parsedConfiguration() const; void checkConfiguration(); - static CMakeConfig parseConfiguration(const Utils::FileName &cacheFile, - QString *errorMessage); + void handleCmakeFileChange(); signals: void configurationStarted() const; void dataAvailable() const; void errorOccured(const QString &err) const; +protected: + static CMakeConfig parseConfiguration(const Utils::FileName &cacheFile, + QString *errorMessage); + + const ProjectExplorer::Kit *kit() const; + const Utils::FileName buildDirectory() const; + const Utils::FileName workDirectory() const; + const Utils::FileName sourceDirectory() const; + const CMakeConfig intendedConfiguration() const; + private: + void cmakeFilesChanged(); + void stopProcess(); void cleanUpProcess(); void extractData(); @@ -127,6 +130,8 @@ private: QFutureInterface *m_future = nullptr; QTimer m_reparseTimer; + + QSet m_watchedFiles; }; } // namespace Internal diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 441c03abb15..79d3ed6d747 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -71,11 +71,6 @@ CMakeBuildConfiguration::~CMakeBuildConfiguration() m_buildDirManager->deleteLater(); // Do not block while waiting for cmake... } -void CMakeBuildConfiguration::cmakeFilesChanged() -{ - m_buildDirManager->cmakeFilesChanged(); -} - bool CMakeBuildConfiguration::isEnabled() const { return m_error.isEmpty(); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h index d56965ffb6c..37ec1aa4275 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h @@ -52,8 +52,6 @@ public: CMakeBuildConfiguration(ProjectExplorer::Target *parent); ~CMakeBuildConfiguration(); - void cmakeFilesChanged(); - bool isEnabled() const override; QString disabledReason() const override; diff --git a/src/plugins/cmakeprojectmanager/cmakefile.cpp b/src/plugins/cmakeprojectmanager/cmakefile.cpp index 30a1db0e153..612e48ec8d1 100644 --- a/src/plugins/cmakeprojectmanager/cmakefile.cpp +++ b/src/plugins/cmakeprojectmanager/cmakefile.cpp @@ -24,7 +24,8 @@ ****************************************************************************/ #include "cmakefile.h" -#include "cmakeproject.h" + +#include "builddirmanager.h" #include "cmakeprojectconstants.h" #include @@ -36,7 +37,7 @@ using namespace Utils; namespace CMakeProjectManager { namespace Internal { -CMakeFile::CMakeFile(CMakeProject *project, const FileName &fileName) : m_project(project) +CMakeFile::CMakeFile(BuildDirManager *bdm, const FileName &fileName) : m_buildDirManager(bdm) { setId("Cmake.ProjectFile"); setMimeType(QLatin1String(Constants::CMAKEPROJECTMIMETYPE)); @@ -56,7 +57,7 @@ bool CMakeFile::reload(QString *errorString, Core::IDocument::ReloadFlag flag, C Q_UNUSED(flag); if (type != TypePermissions) - m_project->handleCmakeFileChanged(); + m_buildDirManager->handleCmakeFileChange(); return true; } diff --git a/src/plugins/cmakeprojectmanager/cmakefile.h b/src/plugins/cmakeprojectmanager/cmakefile.h index 606012ea244..4f3376b640c 100644 --- a/src/plugins/cmakeprojectmanager/cmakefile.h +++ b/src/plugins/cmakeprojectmanager/cmakefile.h @@ -28,20 +28,20 @@ #include namespace CMakeProjectManager { -class CMakeProject; - namespace Internal { +class BuildDirManager; + class CMakeFile : public Core::IDocument { public: - CMakeFile(CMakeProject *project, const Utils::FileName &fileName); + CMakeFile(BuildDirManager *bdm, const Utils::FileName &fileName); ReloadBehavior reloadBehavior(ChangeTrigger state, ChangeType type) const override; bool reload(QString *errorString, ReloadFlag flag, ChangeType type) override; private: - CMakeProject *m_project; + BuildDirManager *m_buildDirManager; }; } // namespace Internal diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 1f2d1f42124..9e6555d64b1 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -53,6 +53,7 @@ #include #include #include +#include #include #include @@ -89,13 +90,13 @@ CMakeProject::CMakeProject(CMakeManager *manager, const FileName &fileName) { setId(Constants::CMAKEPROJECT_ID); setProjectManager(manager); - setDocument(new Internal::CMakeFile(this, fileName)); + setDocument(new TextEditor::TextDocument); + document()->setFilePath(fileName); setRootProjectNode(new CMakeProjectNode(Utils::FileName::fromString(fileName.toFileInfo().absolutePath()))); setProjectContext(Core::Context(CMakeProjectManager::Constants::PROJECTCONTEXT)); setProjectLanguages(Core::Context(ProjectExplorer::Constants::LANG_CXX)); - Core::DocumentManager::addDocument(document()); rootProjectNode()->setDisplayName(fileName.parentDir().fileName()); connect(this, &CMakeProject::activeTargetChanged, this, &CMakeProject::handleActiveTargetChanged); @@ -105,7 +106,6 @@ CMakeProject::~CMakeProject() { setRootProjectNode(nullptr); m_codeModelFuture.cancel(); - qDeleteAll(m_watchedFiles); qDeleteAll(m_extraCompilers); } @@ -219,34 +219,7 @@ void CMakeProject::updateProjectData() BuildDirManager *bdm = cmakeBc->buildDirManager(); QTC_ASSERT(bdm, return); - rootProjectNode()->setDisplayName(bdm->projectName()); - - // Delete no longer necessary file watcher: - const QSet currentWatched - = Utils::transform(m_watchedFiles, [](CMakeFile *cmf) { return cmf->filePath(); }); - const QSet toWatch = bdm->cmakeFiles(); - QSet toDelete = currentWatched; - toDelete.subtract(toWatch); - m_watchedFiles = Utils::filtered(m_watchedFiles, [&toDelete](Internal::CMakeFile *cmf) { - if (toDelete.contains(cmf->filePath())) { - delete cmf; - return false; - } - return true; - }); - - // Add new file watchers: - QSet toAdd = toWatch; - toAdd.subtract(currentWatched); - foreach (const Utils::FileName &fn, toAdd) { - CMakeFile *cm = new CMakeFile(this, fn); - Core::DocumentManager::addDocument(cm); - m_watchedFiles.insert(cm); - } - - QList fileNodes = bdm->files(); - rootProjectNode()->buildTree(fileNodes); - bdm->clearFiles(); // Some of the FileNodes in files() were deleted! + bdm->generateProjectTree(static_cast(rootProjectNode())); updateApplicationAndDeploymentTargets(); updateTargetRunConfigurations(t); @@ -459,15 +432,6 @@ bool CMakeProject::setupTarget(Target *t) return true; } -void CMakeProject::handleCmakeFileChanged() -{ - if (Target *t = activeTarget()) { - if (auto bc = qobject_cast(t->activeBuildConfiguration())) { - bc->cmakeFilesChanged(); - } - } -} - void CMakeProject::handleActiveTargetChanged() { if (m_connectedTarget) { diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index 334cca4f6c7..5e9fa7e159e 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -110,8 +110,6 @@ protected: bool setupTarget(ProjectExplorer::Target *t) final; private: - void handleCmakeFileChanged(); - void handleActiveTargetChanged(); void handleActiveBuildConfigurationChanged(); void handleParsingStarted(); @@ -133,8 +131,6 @@ private: QFuture m_codeModelFuture; QList m_extraCompilers; - QSet m_watchedFiles; - friend class Internal::CMakeBuildConfiguration; friend class Internal::CMakeFile; }; From d41e10a595a503ac618d876c7fc4d88cf8e432be Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Thu, 6 Oct 2016 11:31:19 +0200 Subject: [PATCH 21/61] CMake: Keep buildTargets private Nobody needs those, so do not export them. Change-Id: Ia8866ea2a514855c029974645d9b3f3dbcaa14ed Reviewed-by: Tim Jenssen --- src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp | 6 +++--- src/plugins/cmakeprojectmanager/cmakeproject.h | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp index be57d155979..39b892d9660 100644 --- a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp @@ -64,9 +64,9 @@ void CMakeLocatorFilter::prepareSearch(const QString &entry) CMakeProject *cmakeProject = qobject_cast(p); if (!cmakeProject) continue; - foreach (const CMakeBuildTarget &ct, cmakeProject->buildTargets()) { - if (ct.title.contains(entry)) { - Core::LocatorFilterEntry entry(this, ct.title, cmakeProject->projectFilePath().toString()); + foreach (const QString &title, cmakeProject->buildTargetTitles()) { + if (title.contains(entry)) { + Core::LocatorFilterEntry entry(this, title, cmakeProject->projectFilePath().toString()); entry.extraInfo = FileUtils::shortNativePath(cmakeProject->projectFilePath()); m_result.append(entry); } diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index 5e9fa7e159e..5deb30ebf07 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -88,7 +88,6 @@ public: QStringList files(FilesMode fileMode) const final; QStringList buildTargetTitles(bool runnable = false) const; - QList buildTargets() const; bool hasBuildTarget(const QString &title) const; CMakeBuildTarget buildTargetForTitle(const QString &title); @@ -110,6 +109,8 @@ protected: bool setupTarget(ProjectExplorer::Target *t) final; private: + QList buildTargets() const; + void handleActiveTargetChanged(); void handleActiveBuildConfigurationChanged(); void handleParsingStarted(); From 01149ad95529e3e90be7936a7d1a881b9b492c8a Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Thu, 6 Oct 2016 11:31:21 +0200 Subject: [PATCH 22/61] CMake: Remove unnecessary members from CMakeTargets Change-Id: I6428496f4eab0d42f44525477c716f74714f8824 Reviewed-by: Tim Jenssen --- src/plugins/cmakeprojectmanager/cmakecbpparser.cpp | 7 ------- src/plugins/cmakeprojectmanager/cmakeproject.cpp | 1 - src/plugins/cmakeprojectmanager/cmakeproject.h | 1 - 3 files changed, 9 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakecbpparser.cpp b/src/plugins/cmakeprojectmanager/cmakecbpparser.cpp index 0c17a3fcc5e..9b8a5179bab 100644 --- a/src/plugins/cmakeprojectmanager/cmakecbpparser.cpp +++ b/src/plugins/cmakeprojectmanager/cmakecbpparser.cpp @@ -372,13 +372,6 @@ void CMakeCbpParser::parseBuildTargetBuild() void CMakeCbpParser::parseBuildTargetClean() { - if (attributes().hasAttribute(QLatin1String("command"))) { - m_buildTarget.makeCleanCommand = attributes().value(QLatin1String("command")).toString(); - - CMakeTool *tool = CMakeKitInformation::cmakeTool(m_kit); - if (tool) - m_buildTarget.makeCleanCommand = tool->mapAllPaths(m_kit, m_buildTarget.makeCleanCommand); - } while (!atEnd()) { readNext(); if (isEndElement()) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 9e6555d64b1..740563240f6 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -642,7 +642,6 @@ void CMakeBuildTarget::clear() { executable.clear(); makeCommand.clear(); - makeCleanCommand.clear(); workingDirectory.clear(); sourceDirectory.clear(); title.clear(); diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index 5deb30ebf07..90435ff66bd 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -64,7 +64,6 @@ public: QString workingDirectory; QString sourceDirectory; QString makeCommand; - QString makeCleanCommand; // code model QStringList includeFiles; From 653f60ae33bb3cb71b5a74486c8f5d36faf73d56 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Thu, 6 Oct 2016 11:31:23 +0200 Subject: [PATCH 23/61] CMake: De-noise CMakeProject Change-Id: I9d5df01d0d4699df30c1f01c0cfe7f3da310457a Reviewed-by: Tim Jenssen --- .../cmakeprojectmanager/cmakeproject.cpp | 123 ++++++++---------- 1 file changed, 54 insertions(+), 69 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 740563240f6..f994e592427 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -27,49 +27,35 @@ #include "builddirmanager.h" #include "cmakebuildconfiguration.h" -#include "cmakebuildstep.h" #include "cmakekitinformation.h" #include "cmakeprojectconstants.h" #include "cmakeprojectnodes.h" #include "cmakerunconfiguration.h" -#include "cmakefile.h" #include "cmakeprojectmanager.h" -#include -#include #include +#include #include #include -#include #include -#include -#include #include #include #include -#include #include #include #include #include #include #include - -#include -#include -#include -#include #include -#include + #include #include #include #include #include -#include #include -#include using namespace ProjectExplorer; using namespace Utils; @@ -88,12 +74,12 @@ using namespace Internal; */ CMakeProject::CMakeProject(CMakeManager *manager, const FileName &fileName) { - setId(Constants::CMAKEPROJECT_ID); + setId(CMakeProjectManager::Constants::CMAKEPROJECT_ID); setProjectManager(manager); setDocument(new TextEditor::TextDocument); document()->setFilePath(fileName); - setRootProjectNode(new CMakeProjectNode(Utils::FileName::fromString(fileName.toFileInfo().absolutePath()))); + setRootProjectNode(new CMakeProjectNode(FileName::fromString(fileName.toFileInfo().absolutePath()))); setProjectContext(Core::Context(CMakeProjectManager::Constants::PROJECTCONTEXT)); setProjectLanguages(Core::Context(ProjectExplorer::Constants::LANG_CXX)); @@ -131,25 +117,24 @@ bool CMakeProject::extractCXXFlagsFromMake(const CMakeBuildTarget &buildTarget, QHash &cache) { QString makeCommand = QDir::fromNativeSeparators(buildTarget.makeCommand); - int startIndex = makeCommand.indexOf(QLatin1Char('\"')); - int endIndex = makeCommand.indexOf(QLatin1Char('\"'), startIndex + 1); + int startIndex = makeCommand.indexOf('\"'); + int endIndex = makeCommand.indexOf('\"', startIndex + 1); if (startIndex != -1 && endIndex != -1) { startIndex += 1; QString makefile = makeCommand.mid(startIndex, endIndex - startIndex); - int slashIndex = makefile.lastIndexOf(QLatin1Char('/')); + int slashIndex = makefile.lastIndexOf('/'); makefile.truncate(slashIndex); - makefile.append(QLatin1String("/CMakeFiles/") + buildTarget.title + QLatin1String(".dir/flags.make")); + makefile.append("/CMakeFiles/" + buildTarget.title + ".dir/flags.make"); QFile file(makefile); if (file.exists()) { file.open(QIODevice::ReadOnly | QIODevice::Text); QTextStream stream(&file); while (!stream.atEnd()) { QString line = stream.readLine().trimmed(); - if (line.startsWith(QLatin1String("CXX_FLAGS ="))) { + if (line.startsWith("CXX_FLAGS =")) { // Skip past = cache.insert(buildTarget.title, - line.mid(11).trimmed().split(QLatin1Char(' '), - QString::SkipEmptyParts)); + line.mid(11).trimmed().split(' ', QString::SkipEmptyParts)); return true; } } @@ -170,7 +155,7 @@ bool CMakeProject::extractCXXFlagsFromNinja(const CMakeBuildTarget &buildTarget, // Get "all" target's working directory QByteArray ninjaFile; QString buildNinjaFile = QDir::fromNativeSeparators(buildTargets().at(0).workingDirectory); - buildNinjaFile += QLatin1String("/build.ninja"); + buildNinjaFile += "/build.ninja"; QFile buildNinja(buildNinjaFile); if (buildNinja.exists()) { buildNinja.open(QIODevice::ReadOnly | QIODevice::Text); @@ -183,7 +168,7 @@ bool CMakeProject::extractCXXFlagsFromNinja(const CMakeBuildTarget &buildTarget, QTextStream stream(ninjaFile); bool cxxFound = false; - const QString targetSignature = QLatin1String("# Object build statements for "); + const QString targetSignature = "# Object build statements for "; QString currentTarget; while (!stream.atEnd()) { @@ -191,16 +176,16 @@ bool CMakeProject::extractCXXFlagsFromNinja(const CMakeBuildTarget &buildTarget, // 2. Look for a build rule which invokes CXX_COMPILER // 3. Return the FLAGS definition QString line = stream.readLine().trimmed(); - if (line.startsWith(QLatin1Char('#'))) { + if (line.startsWith('#')) { if (line.startsWith(targetSignature)) { - int pos = line.lastIndexOf(QLatin1Char(' ')); + int pos = line.lastIndexOf(' '); currentTarget = line.mid(pos + 1); } - } else if (!currentTarget.isEmpty() && line.startsWith(QLatin1String("build"))) { - cxxFound = line.indexOf(QLatin1String("CXX_COMPILER")) != -1; - } else if (cxxFound && line.startsWith(QLatin1String("FLAGS ="))) { + } else if (!currentTarget.isEmpty() && line.startsWith("build")) { + cxxFound = line.indexOf("CXX_COMPILER") != -1; + } else if (cxxFound && line.startsWith("FLAGS =")) { // Skip past = - cache.insert(currentTarget, line.mid(7).trimmed().split(QLatin1Char(' '), QString::SkipEmptyParts)); + cache.insert(currentTarget, line.mid(7).trimmed().split(' ', QString::SkipEmptyParts)); } } return !cache.isEmpty(); @@ -226,7 +211,7 @@ void CMakeProject::updateProjectData() createGeneratedCodeModelSupport(); - ToolChain *tc = ProjectExplorer::ToolChainKitInformation::toolChain(k, ToolChain::Language::Cxx); + ToolChain *tc = ToolChainKitInformation::toolChain(k, ToolChain::Language::Cxx); if (!tc) { emit fileListChanged(); return; @@ -244,7 +229,7 @@ void CMakeProject::updateProjectData() activeQtVersion = CppTools::ProjectPart::Qt5; } - const Utils::FileName sysroot = ProjectExplorer::SysRootKitInformation::sysRoot(k); + const FileName sysroot = SysRootKitInformation::sysRoot(k); ppBuilder.setQtVersion(activeQtVersion); @@ -377,17 +362,17 @@ QList CMakeProject::buildTargets() const QStringList CMakeProject::buildTargetTitles(bool runnable) const { const QList targets - = runnable ? Utils::filtered(buildTargets(), - [](const CMakeBuildTarget &ct) { - return !ct.executable.isEmpty() && ct.targetType == ExecutableType; - }) + = runnable ? filtered(buildTargets(), + [](const CMakeBuildTarget &ct) { + return !ct.executable.isEmpty() && ct.targetType == ExecutableType; + }) : buildTargets(); - return Utils::transform(targets, [](const CMakeBuildTarget &ct) { return ct.title; }); + return transform(targets, [](const CMakeBuildTarget &ct) { return ct.title; }); } bool CMakeProject::hasBuildTarget(const QString &title) const { - return Utils::anyOf(buildTargets(), [title](const CMakeBuildTarget &ct) { return ct.title == title; }); + return anyOf(buildTargets(), [title](const CMakeBuildTarget &ct) { return ct.title == title; }); } QString CMakeProject::displayName() const @@ -397,21 +382,21 @@ QString CMakeProject::displayName() const QStringList CMakeProject::files(FilesMode fileMode) const { - const QList nodes = Utils::filtered(rootProjectNode()->recursiveFileNodes(), - [fileMode](const FileNode *fn) { + const QList nodes = filtered(rootProjectNode()->recursiveFileNodes(), + [fileMode](const FileNode *fn) { const bool isGenerated = fn->isGenerated(); switch (fileMode) { - case ProjectExplorer::Project::SourceFiles: + case Project::SourceFiles: return !isGenerated; - case ProjectExplorer::Project::GeneratedFiles: + case Project::GeneratedFiles: return isGenerated; - case ProjectExplorer::Project::AllFiles: + case Project::AllFiles: default: return true; } }); - return Utils::transform(nodes, [fileMode](const FileNode* fn) { return fn->filePath().toString(); }); + return transform(nodes, [fileMode](const FileNode* fn) { return fn->filePath().toString(); }); } Project::RestoreResult CMakeProject::fromMap(const QVariantMap &map, QString *errorMessage) @@ -495,7 +480,7 @@ QStringList CMakeProject::filesGeneratedFrom(const QString &sourceFile) const while (baseDirectory.isChildOf(project)) { FileName cmakeListsTxt = baseDirectory; - cmakeListsTxt.appendPath(QLatin1String("CMakeLists.txt")); + cmakeListsTxt.appendPath("CMakeLists.txt"); if (cmakeListsTxt.exists()) break; QDir dir(baseDirectory.toString()); @@ -508,16 +493,16 @@ QStringList CMakeProject::filesGeneratedFrom(const QString &sourceFile) const QDir buildDir = QDir(activeTarget()->activeBuildConfiguration()->buildDirectory().toString()); QString generatedFilePath = buildDir.absoluteFilePath(relativePath); - if (fi.suffix() == QLatin1String("ui")) { - generatedFilePath += QLatin1String("/ui_"); + if (fi.suffix() == "ui") { + generatedFilePath += "/ui_"; generatedFilePath += fi.completeBaseName(); - generatedFilePath += QLatin1String(".h"); + generatedFilePath += ".h"; return QStringList(QDir::cleanPath(generatedFilePath)); - } else if (fi.suffix() == QLatin1String("scxml")) { - generatedFilePath += QLatin1String("/"); + } else if (fi.suffix() == "scxml") { + generatedFilePath += "/"; generatedFilePath += QDir::cleanPath(fi.completeBaseName()); - return QStringList({generatedFilePath + QLatin1String(".h"), - generatedFilePath + QLatin1String(".cpp")}); + return QStringList({ generatedFilePath + ".h", + generatedFilePath + ".cpp" }); } else { // TODO: Other types will be added when adapters for their compilers become available. return QStringList(); @@ -566,15 +551,15 @@ void CMakeProject::updateApplicationAndDeploymentTargets() QDir sourceDir(t->project()->projectDirectory().toString()); QDir buildDir(t->activeBuildConfiguration()->buildDirectory().toString()); - deploymentFile.setFileName(sourceDir.filePath(QLatin1String("QtCreatorDeployment.txt"))); + deploymentFile.setFileName(sourceDir.filePath("QtCreatorDeployment.txt")); // If we don't have a global QtCreatorDeployment.txt check for one created by the active build configuration if (!deploymentFile.exists()) - deploymentFile.setFileName(buildDir.filePath(QLatin1String("QtCreatorDeployment.txt"))); + deploymentFile.setFileName(buildDir.filePath("QtCreatorDeployment.txt")); if (deploymentFile.open(QFile::ReadOnly | QFile::Text)) { deploymentStream.setDevice(&deploymentFile); deploymentPrefix = deploymentStream.readLine(); - if (!deploymentPrefix.endsWith(QLatin1Char('/'))) - deploymentPrefix.append(QLatin1Char('/')); + if (!deploymentPrefix.endsWith('/')) + deploymentPrefix.append('/'); } BuildTargetInfoList appTargetList; @@ -595,14 +580,14 @@ void CMakeProject::updateApplicationAndDeploymentTargets() } QString absoluteSourcePath = sourceDir.absolutePath(); - if (!absoluteSourcePath.endsWith(QLatin1Char('/'))) - absoluteSourcePath.append(QLatin1Char('/')); + if (!absoluteSourcePath.endsWith('/')) + absoluteSourcePath.append('/'); if (deploymentStream.device()) { while (!deploymentStream.atEnd()) { QString line = deploymentStream.readLine(); - if (!line.contains(QLatin1Char(':'))) + if (!line.contains(':')) continue; - QStringList file = line.split(QLatin1Char(':')); + QStringList file = line.split(':'); deploymentData.addFile(absoluteSourcePath + file.at(0), deploymentPrefix + file.at(1)); } } @@ -615,17 +600,17 @@ void CMakeProject::createGeneratedCodeModelSupport() { qDeleteAll(m_extraCompilers); m_extraCompilers.clear(); - QList factories = - ProjectExplorer::ExtraCompilerFactory::extraCompilerFactories(); + QList factories = + ExtraCompilerFactory::extraCompilerFactories(); // Find all files generated by any of the extra compilers, in a rather crude way. foreach (const QString &file, files(SourceFiles)) { - foreach (ProjectExplorer::ExtraCompilerFactory *factory, factories) { - if (file.endsWith(QLatin1Char('.') + factory->sourceTag())) { + foreach (ExtraCompilerFactory *factory, factories) { + if (file.endsWith('.' + factory->sourceTag())) { QStringList generated = filesGeneratedFrom(file); if (!generated.isEmpty()) { - const FileNameList fileNames = Utils::transform(generated, - [](const QString &s) { + const FileNameList fileNames = transform(generated, + [](const QString &s) { return FileName::fromString(s); }); m_extraCompilers.append(factory->create(this, FileName::fromString(file), From 5481ca6edb7fe4812df7b04748e203f3a20a04de Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Thu, 6 Oct 2016 11:31:25 +0200 Subject: [PATCH 24/61] CMake: Properly split QML_IMPORT_PATH Change-Id: I0626da3a08e0e190757900a2df312ab0cee948d0 Reviewed-by: Tim Jenssen --- src/plugins/cmakeprojectmanager/cmakeproject.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index f994e592427..4e4e1cd8539 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -301,9 +301,8 @@ void CMakeProject::updateQmlJSCodeModel() } } - foreach (const QString &cmakeImport, cmakeImports.split(QLatin1Char(';'))) { + foreach (const QString &cmakeImport, CMakeConfigItem::cmakeSplitValue(cmakeImports)) projectInfo.importPaths.maybeInsert(FileName::fromString(cmakeImport),QmlJS::Dialect::Qml); - } modelManager->updateProjectInfo(projectInfo, this); } From 683b965297c5fcd3c487ac4a700d2c4d0780dcce Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Thu, 6 Oct 2016 11:31:27 +0200 Subject: [PATCH 25/61] CMake: Encapsulate BuildDirManager in CMakeBC This will make it easier to introduce a new type of BuildDirManager to accommodate cmake server-mode. Change-Id: I989aab9df44dff1cfdff226ef97bb30bb092ffdd Reviewed-by: Tim Jenssen --- .../cmakebuildconfiguration.cpp | 40 +++++++++++++++---- .../cmakebuildconfiguration.h | 8 +++- .../cmakeprojectmanager/cmakeproject.cpp | 27 ++++--------- .../cmakeprojectmanager.cpp | 2 +- 4 files changed, 48 insertions(+), 29 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 79d3ed6d747..8d16cee12c0 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -159,11 +159,6 @@ void CMakeBuildConfiguration::maybeForceReparse() m_buildDirManager->maybeForceReparse(); } -BuildDirManager *CMakeBuildConfiguration::buildDirManager() const -{ - return m_buildDirManager; -} - bool CMakeBuildConfiguration::isParsing() const { return m_buildDirManager && m_buildDirManager->isParsing(); @@ -179,6 +174,37 @@ bool CMakeBuildConfiguration::persistCMakeState() return m_buildDirManager->persistCMakeState(); } +void CMakeBuildConfiguration::runCMake() +{ + if (!m_buildDirManager || m_buildDirManager->isParsing()) + return; + + m_buildDirManager->checkConfiguration(); + m_buildDirManager->forceReparse(); +} + +void CMakeBuildConfiguration::clearCache() +{ + if (m_buildDirManager) + m_buildDirManager->clearCache(); +} + +QList CMakeBuildConfiguration::buildTargets() const +{ + if (!m_buildDirManager || m_buildDirManager->isParsing()) + return QList(); + + return m_buildDirManager->buildTargets(); +} + +void CMakeBuildConfiguration::generateProjectTree(CMakeProjectNode *root) const +{ + if (!m_buildDirManager || m_buildDirManager->isParsing()) + return; + + return m_buildDirManager->generateProjectTree(root); +} + FileName CMakeBuildConfiguration::shadowBuildDirectory(const FileName &projectFilePath, const Kit *k, const QString &bcName, @@ -196,7 +222,7 @@ FileName CMakeBuildConfiguration::shadowBuildDirectory(const FileName &projectFi QList CMakeBuildConfiguration::completeCMakeConfiguration() const { - if (!m_buildDirManager && m_buildDirManager->isParsing()) + if (!m_buildDirManager || m_buildDirManager->isParsing()) return QList(); if (m_completeConfigurationCache.isEmpty()) @@ -234,7 +260,7 @@ QList CMakeBuildConfiguration::completeCMakeConfiguration void CMakeBuildConfiguration::setCurrentCMakeConfiguration(const QList &items) { - if (m_buildDirManager->isParsing()) + if (!m_buildDirManager || m_buildDirManager->isParsing()) return; const CMakeConfig newConfig = Utils::transform(items, [](const ConfigModel::DataItem &i) { diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h index 37ec1aa4275..a4798cc1992 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h @@ -26,6 +26,7 @@ #pragma once #include "cmakeconfigitem.h" +#include "cmakeproject.h" #include "configmodel.h" #include @@ -70,13 +71,16 @@ public: QString error() const; QString warning() const; - BuildDirManager *buildDirManager() const; - bool isParsing() const; void maybeForceReparse(); void resetData(); bool persistCMakeState(); + void runCMake(); + void clearCache(); + + QList buildTargets() const; + void generateProjectTree(CMakeProjectNode *root) const; static Utils::FileName shadowBuildDirectory(const Utils::FileName &projectFilePath, const ProjectExplorer::Kit *k, diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 4e4e1cd8539..0737666457a 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -25,7 +25,6 @@ #include "cmakeproject.h" -#include "builddirmanager.h" #include "cmakebuildconfiguration.h" #include "cmakekitinformation.h" #include "cmakeprojectconstants.h" @@ -201,10 +200,7 @@ void CMakeProject::updateProjectData() return; Kit *k = t->kit(); - BuildDirManager *bdm = cmakeBc->buildDirManager(); - QTC_ASSERT(bdm, return); - - bdm->generateProjectTree(static_cast(rootProjectNode())); + cmakeBc->generateProjectTree(static_cast(rootProjectNode())); updateApplicationAndDeploymentTargets(); updateTargetRunConfigurations(t); @@ -338,24 +334,17 @@ void CMakeProject::runCMake() if (activeTarget()) bc = qobject_cast(activeTarget()->activeBuildConfiguration()); - if (!bc) - return; - - BuildDirManager *bdm = bc->buildDirManager(); - if (bdm && !bdm->isParsing()) { - bdm->checkConfiguration(); - bdm->forceReparse(); - } + if (bc) + bc->runCMake(); } QList CMakeProject::buildTargets() const { - BuildDirManager *bdm = nullptr; - if (activeTarget() && activeTarget()->activeBuildConfiguration()) - bdm = static_cast(activeTarget()->activeBuildConfiguration())->buildDirManager(); - if (!bdm) - return QList(); - return bdm->buildTargets(); + CMakeBuildConfiguration *bc = nullptr; + if (activeTarget()) + bc = qobject_cast(activeTarget()->activeBuildConfiguration()); + + return bc ? bc->buildTargets() : QList(); } QStringList CMakeProject::buildTargetTitles(bool runnable) const diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp index 7181db157bc..41f811736af 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp @@ -117,7 +117,7 @@ void CMakeManager::clearCMakeCache(Project *project) if (!bc) return; - bc->buildDirManager()->clearCache(); + bc->clearCache(); } void CMakeManager::runCMake(Project *project) From 10ca871681e7c4ca501af72c1675697f1b9878b6 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Thu, 6 Oct 2016 15:09:40 +0200 Subject: [PATCH 26/61] QmlDesigner: Read hints for item handling This patch allows an arbitrary hints section section for each item in the .metainfo file. Change-Id: I85d7171d1aaacd96a327df3e350978b859913d00 Reviewed-by: Tim Jenssen --- .../designercore/include/itemlibraryinfo.h | 2 ++ .../designercore/include/metainforeader.h | 3 +++ .../designercore/metainfo/itemlibraryinfo.cpp | 14 ++++++++++++++ .../designercore/metainfo/metainforeader.cpp | 14 ++++++++++++++ 4 files changed, 33 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h b/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h index 7965c207cf8..6233b315788 100644 --- a/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h +++ b/src/plugins/qmldesigner/designercore/include/itemlibraryinfo.h @@ -74,6 +74,7 @@ public: typedef QmlDesigner::PropertyContainer Property; QList properties() const; + QHash hints() const; void setType(const TypeName &typeName, int majorVersion = -1, int minorVersion = -1); void setName(const QString &name); @@ -84,6 +85,7 @@ public: void setCategory(const QString &category); void setQmlPath(const QString &qml); void setRequiredImport(const QString &requiredImport); + void addHints(const QHash &hints); private: QExplicitlySharedDataPointer m_data; diff --git a/src/plugins/qmldesigner/designercore/include/metainforeader.h b/src/plugins/qmldesigner/designercore/include/metainforeader.h index 1aa5ed534f6..de8e2206983 100644 --- a/src/plugins/qmldesigner/designercore/include/metainforeader.h +++ b/src/plugins/qmldesigner/designercore/include/metainforeader.h @@ -67,6 +67,7 @@ private: ParsingMetaInfo, ParsingType, ParsingItemLibrary, + ParsingHints, ParsingProperty, ParsingQmlSource }; @@ -83,6 +84,7 @@ private: void readItemLibraryEntryProperty(const QString &name, const QVariant &value); void readPropertyProperty(const QString &name, const QVariant &value); void readQmlSourceProperty(const QString &name, const QVariant &value); + void readHint(const QString &name, const QVariant &value); void setVersion(const QString &versionNumber); @@ -103,6 +105,7 @@ private: TypeName m_currentClassName; QString m_currentIcon; + QHash m_currentHints; QString m_currentSource; ItemLibraryEntry m_currentEntry; QList m_bufferedEntries; diff --git a/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp b/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp index 46f3901e19e..d18f252c884 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/itemlibraryinfo.cpp @@ -50,6 +50,7 @@ public: QString qml; QString qmlSource; QString requiredImport; + QHash hints; }; } // namespace Internal @@ -86,6 +87,11 @@ QList ItemLibraryEntry::properties() const return m_data->properties; } +QHash ItemLibraryEntry::hints() const +{ + return m_data->hints; +} + ItemLibraryEntry::ItemLibraryEntry() : m_data(new Internal::ItemLibraryEntryData) { m_data->name.clear(); @@ -189,6 +195,11 @@ void ItemLibraryEntry::setRequiredImport(const QString &requiredImport) m_data->requiredImport = requiredImport; } +void ItemLibraryEntry::addHints(const QHash &hints) +{ + m_data->hints.unite(hints); +} + void ItemLibraryEntry::addProperty(PropertyName &name, QString &type, QVariant &value) { Property property; @@ -206,6 +217,7 @@ QDataStream& operator<<(QDataStream& stream, const ItemLibraryEntry &itemLibrary stream << itemLibraryEntry.libraryEntryIconPath(); stream << itemLibraryEntry.category(); stream << itemLibraryEntry.requiredImport(); + stream << itemLibraryEntry.hints(); stream << itemLibraryEntry.m_data->properties; stream << itemLibraryEntry.m_data->qml; @@ -224,6 +236,7 @@ QDataStream& operator>>(QDataStream& stream, ItemLibraryEntry &itemLibraryEntry) stream >> itemLibraryEntry.m_data->libraryEntryIconPath; stream >> itemLibraryEntry.m_data->category; stream >> itemLibraryEntry.m_data->requiredImport; + stream >> itemLibraryEntry.m_data->hints; stream >> itemLibraryEntry.m_data->properties; stream >> itemLibraryEntry.m_data->qml; @@ -242,6 +255,7 @@ QDebug operator<<(QDebug debug, const ItemLibraryEntry &itemLibraryEntry) debug << itemLibraryEntry.m_data->libraryEntryIconPath; debug << itemLibraryEntry.m_data->category; debug << itemLibraryEntry.m_data->requiredImport; + debug << itemLibraryEntry.m_data->hints; debug << itemLibraryEntry.m_data->properties; debug << itemLibraryEntry.m_data->qml; diff --git a/src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp b/src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp index 33a21f2325b..20d21d7ef27 100644 --- a/src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp +++ b/src/plugins/qmldesigner/designercore/metainfo/metainforeader.cpp @@ -41,6 +41,7 @@ enum { const QString rootElementName = QStringLiteral("MetaInfo"); const QString typeElementName = QStringLiteral("Type"); const QString ItemLibraryEntryElementName = QStringLiteral("ItemLibraryEntry"); +const QString HintsElementName = QStringLiteral("Hints"); const QString QmlSourceElementName = QStringLiteral("QmlSource"); const QString PropertyElementName = QStringLiteral("Property"); @@ -91,6 +92,7 @@ void MetaInfoReader::elementStart(const QString &name) case ParsingItemLibrary: setParserState(readItemLibraryEntryElement(name)); break; case ParsingProperty: setParserState(readPropertyElement(name)); break; case ParsingQmlSource: setParserState(readQmlSourceElement(name)); break; + case ParsingHints: case Finished: case Undefined: setParserState(Error); addError(tr("Illegal state while parsing"), currentSourceLocation()); @@ -105,6 +107,7 @@ void MetaInfoReader::elementEnd() case ParsingMetaInfo: setParserState(Finished); break; case ParsingType: setParserState(ParsingMetaInfo); break; case ParsingItemLibrary: keepCurrentItemLibraryEntry(); setParserState((ParsingType)); break; + case ParsingHints: setParserState(ParsingType); break; case ParsingProperty: insertProperty(); setParserState(ParsingItemLibrary); break; case ParsingQmlSource: setParserState(ParsingItemLibrary); break; case ParsingDocument: @@ -125,6 +128,7 @@ void MetaInfoReader::propertyDefinition(const QString &name, const QVariant &val case ParsingQmlSource: readQmlSourceProperty(name, value); break; case ParsingMetaInfo: addError(tr("No property definition allowed"), currentSourceLocation()); break; case ParsingDocument: + case ParsingHints: readHint(name, value); break; case Finished: case Undefined: setParserState(Error); addError(tr("Illegal state while parsing"), currentSourceLocation()); @@ -163,7 +167,12 @@ MetaInfoReader::ParserSate MetaInfoReader::readTypeElement(const QString &name) m_currentEntry = ItemLibraryEntry(); m_currentEntry.setType(m_currentClassName); m_currentEntry.setTypeIcon(QIcon(m_currentIcon)); + + m_currentEntry.addHints(m_currentHints); + return ParsingItemLibrary; + } else if (name == HintsElementName) { + return ParsingHints; } else { addErrorInvalidType(name); return Error; @@ -253,6 +262,11 @@ void MetaInfoReader::readQmlSourceProperty(const QString &name, const QVariant & } } +void MetaInfoReader::readHint(const QString &name, const QVariant &value) +{ + m_currentHints.insert(name, value.toString()); +} + void MetaInfoReader::setVersion(const QString &versionNumber) { const TypeName typeName = m_currentEntry.typeName(); From 21ba1f7b7a4122ffdf3cb393cb6a4a13875c8f32 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 4 Oct 2016 11:33:32 +0200 Subject: [PATCH 27/61] Debugger: Allow explicit padding in patterns Change-Id: I6f2302649cdbcbb9052a6898841c21301dace9e6 Reviewed-by: Christian Stenger --- share/qtcreator/debugger/dumper.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 06dbe86b7a1..cf08c1305f3 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -3341,8 +3341,20 @@ class DumperBase: elif c == '{': readingTypeName = True typeName = "" - elif c == '@': # Automatic padding. - builder.autoPadNext = True + elif c == '@': + if n is None: + # Automatic padding depending on next item + builder.autoPadNext = True + else: + # Explicit padding. + builder.currentBitsize = 8 * ((builder.currentBitsize + 7) >> 3) + padding = (int(n) - (builder.currentBitsize >> 3)) % int(n) + field = self.Field(self) + field.code = None + builder.pattern += "%ds" % padding + builder.currentBitsize += padding * 8 + builder.fields.append(field) + n = None else: error("UNKNOWN STRUCT CODE: %s" % c) pp = builder.pattern From e234bbd88b654965e28d84c5becf07d557726fb4 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 4 Apr 2016 21:51:31 +0200 Subject: [PATCH 28/61] Debugger: Add dumper for Nim's string and sequence types ... and make the auto test infrastructure able to handle a test. To pass the test, some Nim compiler must be accessible. Change-Id: I707aa72c0f3a2ea35c7131cba490cafb41617f6c Reviewed-by: Christian Stenger --- share/qtcreator/debugger/dumper.py | 3 +- share/qtcreator/debugger/misctypes.py | 19 +++ tests/auto/debugger/tst_dumpers.cpp | 163 ++++++++++++++++++-------- 3 files changed, 138 insertions(+), 47 deletions(-) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index cf08c1305f3..5608113e0af 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -1015,7 +1015,8 @@ class DumperBase: if arrayByteSize == 0: # This should not happen. But it does, see QTCREATORBUG-14755. # GDB/GCC produce sizeof == 0 for QProcess arr[3] - s = str(value.type) + # And in the Nim string dumper. + s = value.type.name itemCount = s[s.find('[')+1:s.find(']')] if not itemCount: itemCount = '100' diff --git a/share/qtcreator/debugger/misctypes.py b/share/qtcreator/debugger/misctypes.py index e62c1cbc53b..be40d32fe40 100644 --- a/share/qtcreator/debugger/misctypes.py +++ b/share/qtcreator/debugger/misctypes.py @@ -161,6 +161,25 @@ def qdump__Eigen__Matrix(d, value): s = s + 1 +####################################################################### +# +# Nim +# +####################################################################### + +def qdump__NimStringDesc(d, value): + size, reserved = value.split('pp') + data = value.address() + 2 * d.ptrSize() + d.putCharArrayHelper(data, size, d.createType('char'), 'utf8') + +def qdump__NimGenericSequence__(d, value, regex = "^TY[\d]+$"): + size, reserved = d.split('pp', value) + data = value.address() + 2 * d.ptrSize() + typeobj = value["data"].type.dereference() + d.putItemCount(size) + d.putArrayData(data, size, typeobj) + d.putBetterType("%s (%s[%s])" % (value.type.name, typeobj.name, size)) + ####################################################################### # # D diff --git a/tests/auto/debugger/tst_dumpers.cpp b/tests/auto/debugger/tst_dumpers.cpp index 3f44fb4c095..ee4e556094a 100644 --- a/tests/auto/debugger/tst_dumpers.cpp +++ b/tests/auto/debugger/tst_dumpers.cpp @@ -646,33 +646,11 @@ struct NetworkProfile {}; struct QmlProfile {}; struct QmlPrivateProfile {}; +struct NimProfile {}; + struct BigArrayProfile {}; -struct DataBase -{ - DataBase() - : useQt(false), useQHash(false), - forceC(false), engines(AllEngines), - glibcxxDebug(false), useDebugImage(false), - bigArray(false) - {} - - mutable bool useQt; - mutable bool useQHash; - mutable bool forceC; - mutable int engines; - mutable bool glibcxxDebug; - mutable bool useDebugImage; - mutable bool bigArray; - mutable GdbVersion neededGdbVersion; // DEC. 70600 - mutable LldbVersion neededLldbVersion; - mutable QtVersion neededQtVersion; // HEX! 0x50300 - mutable GccVersion neededGccVersion; // DEC. 40702 for 4.7.2 - mutable ClangVersion neededClangVersion; // DEC. - mutable BoostVersion neededBoostVersion; // DEC. 105400 for 1.54.0 -}; - -class Data : public DataBase +class Data { public: Data() {} @@ -854,14 +832,37 @@ public: const Data &operator+(const ForceC &) const { - forceC = true; + mainFile = "main.c"; return *this; } public: + mutable bool useQt = false; + mutable bool useQHash = false; + mutable int engines = AllEngines; + mutable int skipLevels = 0; // Levels to go 'up' before dumping variables. + mutable bool glibcxxDebug = false; + mutable bool useDebugImage = false; + mutable bool bigArray = false; + mutable GdbVersion neededGdbVersion; // DEC. 70600 + mutable LldbVersion neededLldbVersion; + mutable QtVersion neededQtVersion; // HEX! 0x50300 + mutable GccVersion neededGccVersion; // DEC. 40702 for 4.7.2 + mutable ClangVersion neededClangVersion; // DEC. + mutable BoostVersion neededBoostVersion; // DEC. 105400 for 1.54.0 + + mutable QString configTest; + + mutable QString allProfile; // Overrides anything below if not empty. + mutable QString allCode; // Overrides anything below if not empty. + + mutable QString mainFile = "main.cpp"; + mutable QString projectFile = "doit.pro"; + mutable QString profileExtra; mutable QString includes; mutable QString code; + mutable QList checks; }; @@ -1150,28 +1151,42 @@ void tst_Dumpers::dumper() + QByteArray::number(data.neededGccVersion.max)); } - const char *mainFile = data.forceC ? "main.c" : "main.cpp"; + if (!data.configTest.isEmpty()) { + QProcess configTest; + configTest.start(data.configTest); + QVERIFY(configTest.waitForFinished()); + output = configTest.readAllStandardOutput(); + error = configTest.readAllStandardError(); + if (configTest.exitCode()) { + MSKIP_SINGLE("Configure test failed: '" + + data.configTest.toUtf8() + "' " + output + ' ' + error); + } + } - QFile proFile(t->buildPath + QLatin1String("/doit.pro")); + QFile proFile(t->buildPath + '/' + data.projectFile); QVERIFY(proFile.open(QIODevice::ReadWrite)); - proFile.write("SOURCES = "); - proFile.write(mainFile); - proFile.write("\nTARGET = doit\n"); - proFile.write("\nCONFIG -= app_bundle\n"); - proFile.write("\nCONFIG -= release\n"); - proFile.write("\nCONFIG += debug\n"); - if (data.useQt) - proFile.write("QT -= widgets gui\n"); - else - proFile.write("CONFIG -= QT\n"); - if (m_useGLibCxxDebug) - proFile.write("DEFINES += _GLIBCXX_DEBUG\n"); - if (m_debuggerEngine == GdbEngine && m_debuggerVersion < 70500) - proFile.write("QMAKE_CXXFLAGS += -gdwarf-3\n"); - proFile.write(data.profileExtra.toUtf8()); + if (data.allProfile.isEmpty()) { + proFile.write("SOURCES = "); + proFile.write(data.mainFile.toUtf8()); + proFile.write("\nTARGET = doit\n"); + proFile.write("\nCONFIG -= app_bundle\n"); + proFile.write("\nCONFIG -= release\n"); + proFile.write("\nCONFIG += debug\n"); + if (data.useQt) + proFile.write("QT -= widgets gui\n"); + else + proFile.write("CONFIG -= QT\n"); + if (m_useGLibCxxDebug) + proFile.write("DEFINES += _GLIBCXX_DEBUG\n"); + if (m_debuggerEngine == GdbEngine && m_debuggerVersion < 70500) + proFile.write("QMAKE_CXXFLAGS += -gdwarf-3\n"); + proFile.write(data.profileExtra.toUtf8()); + } else { + proFile.write(data.allProfile.toUtf8()); + } proFile.close(); - QFile source(t->buildPath + QLatin1Char('/') + QLatin1String(mainFile)); + QFile source(t->buildPath + QLatin1Char('/') + data.mainFile); QVERIFY(source.open(QIODevice::ReadWrite)); QString fullCode = QString() + "\n\n#if defined(_MSC_VER)" + (data.useQt ? @@ -1234,6 +1249,8 @@ void tst_Dumpers::dumper() "\n BREAK;" "\n return 0;" "\n}\n"; + if (!data.allCode.isEmpty()) + fullCode = data.allCode; source.write(fullCode.toUtf8()); source.close(); @@ -1251,7 +1268,12 @@ void tst_Dumpers::dumper() output = qmake.readAllStandardOutput(); error = qmake.readAllStandardError(); //qDebug() << "stdout: " << output; - if (!error.isEmpty()) { qDebug() << error; QVERIFY(false); } + + if (data.allProfile.isEmpty()) { // Nim... + if (!error.isEmpty()) { + qDebug() << error; QVERIFY(false); + } + } QProcess make; make.setWorkingDirectory(t->buildPath); @@ -1267,7 +1289,7 @@ void tst_Dumpers::dumper() qDebug() << "\n------------------ CODE --------------------"; qDebug() << fullCode; qDebug() << "\n------------------ CODE --------------------"; - qDebug() << ".pro: " << qPrintable(proFile.fileName()); + qDebug() << "Project file: " << qPrintable(proFile.fileName()); } QByteArray dumperDir = DUMPERDIR; @@ -1321,6 +1343,7 @@ void tst_Dumpers::dumper() "python from gdbbridge import *\n" "python theDumper.setupDumpers()\n" "run " + nograb + "\n" + "up " + QString::number(data.skipLevels) + "\n" "python theDumper.fetchVariables({" "'token':2,'fancy':1,'forcens':1," "'autoderef':1,'dyntype':1,'passexceptions':1," @@ -6207,6 +6230,54 @@ void tst_Dumpers::dumper_data() + Check("v14.2", "[2]", "116", "@QChar") + Check("v15", "\"utf16\"", "@QJSValue (QString)") + Check("v15.1", "[1]", "116", "@QChar"); + +#ifdef Q_OS_LINUX + // Hint: To open a failing test in Creator, do: + // touch qt_tst_dumpers_Nim_.../dummy.nimproject + // qtcreator qt_tst_dumpers_Nim_*/dummy.nimproject + Data nimData; + nimData.configTest = "which nim"; + nimData.allProfile = + "CONFIG -= qt\n" + "# Prevents linking\n" + "TARGET=\n" + "# Overwrites qmake-generated 'all' target.\n" + "all.commands = nim c --debugInfo --lineDir:on --out:doit main.nim\n" + "all.depends = main.nim\n" + "all.CONFIG = phony\n\n" + "QMAKE_EXTRA_TARGETS += all\n"; + nimData.allCode = + "type Mirror = ref object\n" + " tag:int\n" + " other:array[0..1, Mirror]\n\n" + "proc mainProc =\n" + " var name: string = \"Hello World\"\n" + " var i: int = 43\n" + " var x: seq[int]\n" + " x = @[1, 2, 3, 4, 5, 6]\n\n" + " # Crash it.\n" + " var m1 = Mirror(tag:1)\n" + " var m2 = Mirror(tag:2)\n" + " var m3 = Mirror(tag:3)\n\n" + " m1.other[0] = m2; m1.other[1] = m3\n" + " m2.other[0] = m1; m2.other[1] = m3\n" + " m3.other[0] = m1; m3.other[1] = m2\n\n" + " for i in 1..30000:\n" + //" echo i\n" + " var mx : Mirror; mx.deepCopy(m1)\n" + " m1 = mx\n\n" + "if isMainModule:\n" + " mainProc()\n"; + nimData.mainFile = "main.nim"; + nimData.skipLevels = 15; + + QTest::newRow("Nim") + << nimData + + GdbEngine + + Check("name", "\"Hello World\"", "NimStringDesc") + + Check("x", "<6 items>", Pattern("TY.*NI.6..")) // Something like "TY95019 (NI[6])" + + Check("x.2", "[2]", "3", "NI"); +#endif } int main(int argc, char *argv[]) From d2e99f9e55d20ca27a04592d144a472f8c97fa2f Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 30 Sep 2016 12:46:20 +0200 Subject: [PATCH 29/61] Doc: Add docs for SCXML Editor Change-Id: I563a2a06b101e3954c3365baba4a596ef29517ab Reviewed-by: Ulf Hermann --- doc/config/qtcreator-project.qdocconf | 1 + doc/images/qtcreator-scxml-editor.png | Bin 0 -> 35919 bytes doc/src/editors/creator-coding.qdoc | 9 + doc/src/editors/creator-modeling.qdoc | 2 +- doc/src/editors/creator-scxml.qdoc | 297 ++++++++++++++++++ .../creator-projects-building-running.qdoc | 2 +- doc/src/qtcreator.qdoc | 3 + 7 files changed, 312 insertions(+), 2 deletions(-) create mode 100644 doc/images/qtcreator-scxml-editor.png create mode 100644 doc/src/editors/creator-scxml.qdoc diff --git a/doc/config/qtcreator-project.qdocconf b/doc/config/qtcreator-project.qdocconf index 9eb4f835219..947a500950d 100644 --- a/doc/config/qtcreator-project.qdocconf +++ b/doc/config/qtcreator-project.qdocconf @@ -18,6 +18,7 @@ imagedirs = $SRCDIR/images \ $SRCDIR/../src/plugins/projectexplorer/images \ $SRCDIR/../src/plugins/qmldesigner/components/formeditor \ $SRCDIR/../src/plugins/qmldesigner/components/navigator \ + $SRCDIR/../src/plugins/scxmleditor/common/images \ $SRCDIR/../src/plugins/texteditor/images outputdir = $OUTDIR diff --git a/doc/images/qtcreator-scxml-editor.png b/doc/images/qtcreator-scxml-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..2598cfead8d317f8db264e6e318da2ba0f6180c2 GIT binary patch literal 35919 zcmeAS@N?(olHy`uVBq!ia0y~yU^>IVz{JbJ%)r1PyZfdk0|PTdfKQ0)hYuhA|NsBy z&D*bEzdd>K;={{>n>TM>vSi7wUAs=6Jh^`T`t94dA3Jv9&$lZ-KVR6lZ{OiH*s_Uzf?=H~k3>AP27{`U7zSiXG4m1n=^ub4i6 z{`{LS|L)kgW$CH~4tDnU-u$_7Bal6TMw+>xMx{zZr-jf^MZpz_U(KB z{^jX=XBK3nryrPAckIx@E9bX#b#!=pdqqY@9lf&M=D2r!V#3ZN>kl7(SJk@V$G0~t z)=jIhNZPh@(dnCeC-1$!accR7voB^vr^F^rxcK(kiFLiNudUv^`TfpAs~)`nyyMJ; zo;3$fUA?;X&iDPZl2cQE%lORTxNcl!E$$0H)j%c9ylN^_+prIsDL*|70y^|WRA zwM!;Us#>^XSEgTM*0h}|g>z?Br8J~RKD&4E)}^zh-BZ-mwa(vra%p4L^>6<^zI)2V z#I)_%`DEa=V2uY33W*1C@Dc>A=e z1%448c4h}%XKy?mnO~ie5pwDIySBFc>*o)q)^z&D=dNoE=#6x{_2cf^<&!qgZSxFm z?O42F;R{Wqw6vvZ`_L%P+4yJoB@QExESr+{v|mu06hO-Qx1PMQbXpQ)f+{)79yhlrit@`6CCLn&t)> z8f3>ge7ifrw{cU$R0BWb0CQ>mhVCGPUAD&I9 zPZ!6Kid%1H#pc|0kvVX>EPDMFyOaLYjy_SJbEB_AUMN8As#4QF2QQUL>pnTJT(D;0 z3Jx_5j<$g2Ra5<%+ZHuk<6%i^YK+=om@}9E6(P@59d?G$B`gZs5 zTFwnhH&`}UE!p<%+c(4G0yC~YZtO^uD0{5f^{$~)tKn8fBkQG_OIqtKPcGk_Ew|O; z)kg0<=hYwHE{WezB%NK??6dXXtc}j1c^1zYwyU0xn0nm8N<%r}As?IU1DzOq}`B^7okmvwTwQ;3FdSyUh>S%q2|1pf>F0z$Ld-3Zc4^HE&|F`Hc4Nd zcLzNxIW4PYT=Ty7x74k7FK+%fUC_~d)RFa;Cx2y(Ub%Cyv#GVTTlkN4>#h~VFL!#^ zu|(+j{F#$VE>7FI^X4z58Ai@41N`<+KAT!0_0;&Oj~M$mOE>*gucbY2J<~P2=bt?4 z=4}|WXr^SO1IP6)&c8_q9tY06WqevO_KV%;btkUwxOP4KaA9Q2i(Bk@0w+&&p2^8E zva|e|r{uBNspyc$(fpV7uU0OXF*^No>eFfm*`(8FP6%A$m)6-Vlyhh6YEG*ZJL{a@ zk1PJ!M7ZC+u$tk^18K7bxsO6Oi0aH-Xx&z=aa<)jO;>cLSAx=#*GWfoe18V%74OTP z8DIVM=*DJ$ojd#*$=uD&R_a|sn#vPXZ{FRls6C;seES>I5W5>!1^YtgUAZ)M#+%H_MQ=W;41+O$jSr$?*UMxS$Xc(5gB*BtNk+AG@wuBFDM zBt_aEm~dvzE<-85Ss8DQ4(n?_6AfTKVOZo66lYhy$L-Za>%PkC?is=j63>jSeU*{`%LYCMCtpF7;Qy)Sb^)yXa^p~%D$e*?_1xQ=x7DR+O zWX-s8IA)!BDr@(B&Fw61|M~m^3-0}$#F%-qU!PI9 zpNC&(_MH^b&NCB_Xo?;3NIK`c$f-zgs?N-eYU}&ME4SaP-LU)n+`TV9JV`SyUbFo=!-8FD-`bpn4hYN)%qmMU zo5`h7F1wkBdrMnvjY=b{e`NB)>}T^>g>N4=2QBq0=Lkp<|DO`EOjY95H0`OWEvb4_ zi++FK&(5e|^jlb6+i3NILj^@Fw{4=GpE=c4HnNtoO}%+`wo$M|nR?0lO{samKV`-p znfdd`#HGb=o%`*tU;TOVMf&$WrZp;cV(xsZ3Abnd`*!%T@cxI%?`oc3+I+rwoBq77 zZ|pw{G%WwE7H9wYOz}x;f4QW z-FW8yyid|6BdcdVoM0(FA(iina7fy`!c#p*)Lyu`g=Bq+Nd58k%g-N&_P$M5lmD}V z{q&qmTQ429b!Oh!A!+#NnbG3hjG99>e)8A0GIrQsUVgscu4npn^?m<0<|ZXr)d|G2 z&SsuzyU?h+tu0)NA^9XvbXr>4vmg%b%P*NFuKJi=Fz-Ly7TI{J=283lx&uc1mrOsO zZ9cmFzk$eqyUxXDH*8u}k;0HWGn&!P1qAx zf5CbUX9BOmF{SI1s}EK!Q2m^+amF)71*2|Fo2|wt^Pe}TbZt1J-kVXBvSfe#-ZM{~ zcGj4$P|r$F(=lG|DqZe2yK?oNv={D=*!krx*4UT7TNba*&-?O{@U%1C?O)C9qh?&l z-<)b!kme=5`uZo1ENXBsxQ=PluU^FThozJTSSjGfj*j%hb_-(<8XP2IVAYpMU4>vwPMy3WqA zM=vYt$l1I-rscJY^UsTK++(AXs2vcadG8csQ&!ru+6iKpf9kx`4e72tp2zn5n-J5E z7c9S0eYZ~daaG*Jmw%g!Q=olZ5PNv%x~!=08^v_LJn>faEp9gbz`pKy<<1Z1R?MB* z`25P9GiUysoLM=4k~u9U$4X>&)xQ;Wo6BV6FXk@1usb)ne-7W$INL&% zCBNs@C%yXdIG+DYMul_=_k_DV>sdYqmIlw1^fVV_sFh_so4-i(iU31MTEU}sdvUR2 zZ_AY)9b#|alcqcMRzpavpg{j-g`J)kHA6L7;-1Y~a3WX7SfpmLonm*f@mdWwck#P* zIh$EHDhwy-D>!(rf3n%4gSY&YjwZ{>wlk*X3od&5Ejr-X{@F`AqWy>ZvK)P5gPzq# z^>^O;U$}3RwYiOba%1njEvaIKUgw^iPD`tky&^0+Q!<5#(e=pf_10H2Oqf&)HZIsL zDKO#jwR;SQHn%TR3*ksJR+I&+-@?N99I0?teJ_SjuS*Py&6z_FLq zZV$om*~eDKxi=&>H0$>D?hLSbqrxQf#cF-Y^%)vrVy;Ff->iDh9>RB}Wvza7_{P8C z#kXVJa!&6#o9f&=`~EZgho`s?T{mw!5WmRe1MlrW>M;?|+IFR>XWVf-Uv3f;6{9k< zJm%ehvk5=%%l&toyzA@Bd($c>$E=$CMSS-&@mVf1>>uv`HG21IPCzd$Y0=E-VmSBkJm6 z_+n*Tm%^`~mrJj2^I92Q{_FRjCu-Jn4D9ND{M!BddTQIMDG#r!d(I4Hz4rH)^UVJb zXQizR-f*nmeB#Ux`%m{=mr-AKK8$zG2_8iiqsa#0({zd#oT=9^Ua|Ge#aQS3D%AVYBJYujR8o{bP@mg+ppwMl*jf28f1GYsc+jWfzDa$Y1hZaTx?=b%>kJgIKS zbv>6ehc?OC-7j8sLHF&h`U8^tWu82aZg}O;=g6+C-Y@y`oJ^IH+tSipU%} z&h2mZUXJV7(!J03D42bCbEN8vqR+OJd$Sf#S8FT(6?ezxuji_5XVjEW&+_4oN;?wX z^-JhN=*)*aGiOJc->{YYU-Z-ba!|{CStm!n_NMe}hYK=Zp7eh9@cBpGjV{*14iGgzyES-|GV7P|Eb2z{CzLJPg~v{p{V{%-MV(~FeO_eRvBc=-<-cZUYVe3{oj==tW&-0G|J{<0k~wRt@|Gq0Ji{LqxiuV^ zQ@nRi)Zd)TS6s|rWXRO`>Yo^7S7ND^%Yq?0s=B^UOIDezi5F zD{!crsp`G&ix*egm?7%ire)M@x4qhE?n7tq_~LDSwPiJX9%-FD6TaugL?QMI6XxtO zt~xzeT{IvASYGrl7w{Xu#@ z^WSkJ|B6zESEVM?xUwfI=67kGHf7*U=yc}NH5M{(jx|cW$+_ZsVyap8r{e*!e5dYw z_1NQjblT1my+GE&EqA{B-ZJ}d`}4r#Wjue&N^3r!m5OIPnIj-6*Zd=-+30!vvz~A- zo#IU0uFpp6_l55*`@Hhhv&iW6a#24%R^48HxY~|KQ)cGThVHLA1{%g1#@sR8i_5r= zd`!9A_b9w`qrjGj!rKa7Gv@K?NX&HIv}QfW74sG+#s4YBzxy0!UX4pT`(oCthXzy9 z9HUE)uG@HFqV4k)hbBih>^pYOphf&RXWPeXvm9oI#y`vX_E`S$VZF!V{_k(?DJooe zIwtDjQcmkxZC@_=^x8e=2}s*I)lzzG*lD|^^KUl(n7_Bb?ZHqa(l55YT6?3RHJHIO|FghGL!?Vf7^+2a!f!KmG3(o90V^-es>8IZYXVn~~ zGiHfqv;VEQt!6Db({yI&$p`8D-gME7N*-AW-dn!9e~;dHlDnl(-xe0oN2Aa=4mpe$*9?=JScI!-}{+!HD}ho2@u@Qan!Sace=od82<&2 z9<<24W0(^8HnmN=U{BBVotw|B6X||`)a+i@*^W8igmx#L^!_gAZoV&W-{+&By^pXz zw~_fPQM&U^QBT0LpK&2F*3AbZ8;n-(I`cuL#7=)R_vwi{YoG4gc0D@H@27;h-B+91 z-CB~j-pxLCN+$NxiwAN3za_)cmUq|wdHwWP_Dsi_p|NST9SSEtZ8@`V%9+wP0fOmW zH@3ZgpTGZR-Jif4H?K|USy$z?r_}HE&UL2u)^E*J74>$T`{@Bw>N%z#m>x&es_*(Gr2TQ-9w%0uW#p(Dz3*FaZ+jGW-qRs`tkGO%Fw+fryn+(AKECL z_*8c+#8HmFFE5iO;Xao+BIgK z`O_0Tr+7}?$?dDLW;ofh<;*jI-sk_myH~p_ff7=E`j zpk!@rvMu`BwiowJw@1u6K4nXElECkzE1No=+NfCXIpbCrB(avU?OR%jT4CEd`6Ke4 zyc)(Dn?<;tjbDq|-um`5DYtof;nBa@Ct7d4uALu$=XVv4it(N^YZl(zHp|`of=T0K zl}=%k-t!wiwOgGJ^qRReUq}1?iXCTuuTQ+?x?6tUzNGtme>@2L zSuS1?SzEZkPb6K-at{9ks#$oqs2!<3)#QzEVZW|v%CD3q6b&sL$*Y4^iR z-KpwoI($*76f~5AE;eZ_y0K`HOc95eNZ>q;Q2U`|KOF zWw+ zxnXze;=E^D%sqOfTcb~HzQ3>h>T7=eofp3! zGO;_eO7Zy_m&HF{=T71e%6;ZokT&!D<5Qb28oYkOp}DhJr~m#Bm+N=GhL-;5@_qNy zyngE~+qJ9mqC@X099okm)WYz&%lGi}b-8>0?cKWGt|;{#bG62dt8HZPM-Yb%)Zr26osDsur$7K`-9W# zVu6x9FIV39l`+Yp_`i(nqi@FfvrRIkO^kzbpFJ*nCa}3zXLjIXrp%tIRW_>nKSF;$ zQGI;ue4*^V)u~gn4?j`8t)?%jGvlz!;Wyb^&&J$;5FL4clWYQ?wYuWDo=@8jy)w`E zv|41}f6w|_&8umBYtPCo`ZLpY##&zCRoh=Wn%%vq92}o~l z_&ape8jTl!@zY$q*E!;k=7Q}@)6O3K;-aiMSHa!u4_DZw!Ucc+6c!4yrzNW1nYps( z)EC#*d#{WZPt)K`56H4BPI_+4zq=+xrnIuhAX}&N!&b(=nVA=h|<4$Wjio_oJf=Out-@h#u?}5@32YQ%VEIJIB|N|v)AW~eAkM) z27hNzTWq}giIKA30h^?V?=sV0uiE@8OPfzjCwgnh) zNB6GY{$_V&YO(j@C7ox*zu0cxy>aEkRWb_#*4PwzSQvZdwOwyH{N~!HSy$P#m1Qo< z^_p^IB_%ZrrSh)`SlVbip(t(RoXE+%I>H9ex0L9-swusG1*HTudNNw(Hx|ye=ZEVFkLr~>wO`4%Q17jMaZgq-?gGLGWhuDwR9w#cvD7y6c#UOx@~%AT-lELYt_YnM zbO_1_OS3q0)u<);Y>u(=?Hp4fgWEbnPE}HArI8EebX5|}(zShqXQ_%AA9$mqQ^ge$ z_QJ=q*d_f~Qh3zC6%z|DuV8A36lU(}+Od}TL{+y{#AW`}@Og97Emh9&ZH`&j%dk1I zVkVa0wq-RB8{tecgR7KwaZaY!&fy{$Hoclxug zZLDSQwxpd*Q&SU{GoHC{EWpTM^;@eK_GU9n8Hy)H=5M{xE2jRF zRp8v@Q=4?3h&xmUuDd;V_EOdv!GF&b7CgIPw0?W6ql^E)64U6rUzc6477v!l?@6?( zcS&bkIP2k7y?TQepQg|L!0}C{K3$Eed41bu{pZEc8PDDkv}a0dj$9Y=NaT#s*uHa zIr8jtn3?_0ng2L7?(rD#`*bBASfg9=b4|yctSz&@YPGJq_0+f}w(p3AF~|0h@L$G% zw?4h{KjG7-Gchs`BQ{@qw`A&4r(8d`n>%#6JKsuOIVQ46#^N{EZmxUIYj_@o7j1Mp zdMYMFS;j&5%^6+C@5%0FXQlog(C(jed3)Kjg|_DB<4kr{b#7Yzb!wmI2bW2;@Ml5l3i(d}s`n6AxnNRQj`_mzN+YVx0$^U>$d3JZR zc&XW$eZ@~dsmJHA&#<1tTdFJTtGl`U>)H6q>o50;t~+e*RLF2nhh_67qw^}KdDDzO zRhxeD3b**!S(x@Op6e=0v)L5Q9@eM)66+2YoZh(L(uP|HfAtq0v2PHYJYU7DU;O?| z(Z&65)~`Bje{T=ZwK-XAGxUFa(Q<8Qm6YRfK5VnG^0@Nc`PUYEELf~*U@*fuX2wq8 zTgA3!GtDP!&yRZj{p2reho(7_PyG*Eugcz(!m;wvZ%6aiy&AvTb2?W1`R(}q$jO-( zllN&}dGeoi{uA*Ip(kff?|FZAmdu=M0Waq<8kB$C_uIug_2;x*!Ozyr`+34j>e)r> z_#2+XVvNErCrz0Of$Wdw^(o=!@8F(>#Mb%n0}t!oBbf; z`DXujruH5C(&lAJ9Isj59aWPaw(D=kG<##8tEXQ1@Xk^>*R#p>*YSYY+aK|qsh=t~ zeZhBy?+U^!O-WW7jSP(ptqDxBQ{1HQl$abi++3|OW1*V7l%2V3IfHy{4yPaMQ9&k= zrW5-=uy8%oXi>{y5va1MO0L$?*l*748rX71Ve9=BtIqI*8$?geba6a0)AP|8o^!We z%~FzFKC^LAMN+8Op&s=JjzcEKi?S-zb67U~W-O1r{IQTHDIqQO+?5-~KR;>J#?4`r zo1$~>%!M^)Ry8tC`7_&LDaR@^>&-%ItS;P+>=Z5WJSDJ&W!=deFZ2!TugRFD9698( zFzT&a?aZ2=Pa_>APibV%nR)N9V9SHFf6>d*h~(T|Sn@a+74v`Mir<^)ybxVPfd3g7&aULb@xRg}<7L zW!r7mxt+xnxw+7Dj_AEJD@;}yDW6<(_R1m|)n4OZMKAsZcP_s&lTc|fu-a@LrxH;3 zr@bQ8sAsL(xAU!!dNRY7NX}S#x#Zz< zpURAhE-{>kW3sQg<)lfNntHxDv*qXtU;Q06Q@uD}?07Tn?4jqMGMjzc7vE3&U+~6r z&-TtuYGv8mGQGS%wdz}>T-}f%$;y>UIA*D}X3Es`PodiSYolV;4R74TeqB4i{+Lq zDM<_P>^#%t^(g6#&V`zb2HaY9$9N2;`<-yVpwVmTmhRTM^zxb%4g+KFl4I4k)_UPE~ zx-s&wQ>bkBhKu?KLXL-;mWn6cIMk>8%&e|tg(UY6`OF6A%k%mE%-C+p9(`-_^za{t zB))w;W41~vPNk${s;_dv(aLK*$F9wuxa`_%UM{O`M&8RU7q}d%DSWTfsbY{EVlyZ5 z;h=zn`=hKYvQhNU-;L)vs;93L|1LVGa>-lC zoL>)3ZF5EEZ9D9HelhH-+Xn2QmWy^qf6z@z0ciwd8>VW!P) zc;{z^tUa}AL-x)|>FNuO7jwKlV{&#vtJ1cn{r2A^6W>oVt9^aKA@1m7%l+?ne!DP_ z`|>J2#_QZ^PaTXOPny*n#Pw|L*Td&5Hs$|ns^Yo5v9n>O=bdulHHq4bY>%W|n%NqC z=8daZDvQC{C7YW{)O>{eKPIx>)b4t+^KXV;_)FV3-})Jougp{rI4856r9`f3*{a3q z_jf7(F4w7GJ6tAzqu-akVPk79H(&ojjTzrX6U4v2tN!@Gg6-K3)x>nSm%P_!C|i7< zASj=3zJ*&oO$%S^Hv7*xpPT@uXBC%fo;4nSevT{U-oq@u_R6;ld0E{P z<8JNdFB3Uaxb&u*UzbS58`JVQ`{na1SNNH5HAlYvy2Dqidh2>Ki8VUB_A|o9_qb1{9w2j7o1?b?K6Y^=1~G9fg4z zuD1^+E}Ul;9(Vh^FVC5?{@-$PpC7nWl#v~Guj$9(Iq^DI&fi&o@{fGQB0*=34zAF) zS2q5s3y(h2DBf*jXB*Nwck-HZJ_mY|8@%V#IXvGR-k;bQ8lD)j;^5<#609=jOlNep zk0*G?+t`RdnrGEed6X^3Yu@t$<^w(+Leq6SWK0CB4g}peF!q z?bj7JWSY^$;eRq=qS*17p;a+23aem6f^d#TzQP68fH<+T_vw=uFmZ z*N(J`2Mr-P8x69RRiY;Lt1dNOd}IOV(=$DWyzl0P>mzmyN%5?wcUH(Q=UDWx|xie04 ziqaS_9w-P*>o@GwRB@P8U;6Cdv7WA{XS8NUu2pcZFbh1eef9df@26t-u1-I6DYJa5 z$vkfV=EkE}q_&%G@n&E0f1r6k-cr@+NjL398?;HowJ}%LtGkM)i z|5{Z<1wNNaduj5yx$&kl^X8TA(yd`@=I?jYTE>vJHS578wUx$;SKL{lntjvf-HV7T zRjW?C+j;!v5iw80^&R16t61NgIR5^*DdO)Lsm*gZ6JKsIe|=7Ey5H-Yi|ePgR9@Qt zHR0SPhi6rS(ULl6W-+Ga8d({8@yt5W-Lq{<#8gQy?++j9(#)RN&I*}gX1vZusx9iy z{Qft;=AC$KUuJJ}{@#_${8={t_q})bvVML~Rd&L^^m8#$TIQ=iOo@=ZdSn5oR>m2h z)yn7mO}J|AsfY%OoSD_AtvOfH$S`A4RR&x5o4IO#*o^;gTJ%wxktcL(-^4CWwlqrGEosuJ^UX?b_k7FT6EF5ZIg=8~^{imVVfi~fMN0otQ|DB6_%W)^ znR#|WrQ7n$>oyxb(3@>I)#})@C8f`1=Xo8x#VK2oer#H(_%?p!MHlWF{`nPgw0-8%@4bh5@9#9L zF}r@X%9&+GsOPIQ!a?U`)Y_%ySax09@3`kO%kAGrhhJRk7x!FtCL*bRcZ0^#v)M`K zlU^l@aBrS9nc*3;sHnaDE4vMqpT4cE?tZpTH6g56_`sZ=b3INSlMI$G6`E_nZkciD zbz+~%FZZKL*2Nj~Jnfbz^XSaJ*0Rz>{@c~^?`F*RCrvn6veU)xo#)zz`(!+~zvQeG zkK})D((2R3wB~ZioMk~XuX(VDv>LDWOwTLW?iYKl>Ui~5)79-0jQeG07dx!>NkZx)|x{^x0~cGUB-HM@UnWxd=Yo}N?r znroBXxylU(!z1h8`g}hYTbsTA#&l&tA^B$ojAyb+oBJDnUhMlF$1W{d=qi z{fbr41aU2_|M_CYqr1j1FH@BzZUNC?XTtbUaLEuLxXFE{T+@k`(EC)_?U?(`b~QCr8XkyIU%QIiCWt}UY(bs*fjxiDOg$Tv^wQzw(ffM)f835p z5W9AvAZ?1I31_+b&U0~ZdV898-zQ0i z&zJ7;W=GZB3xB=s>zcWd(;W}n)IGnYo3ESo@ofFpcWd&e>%YxhyN-X)^V;7}6q!CR zIG4`%J@xQX_4&m?Hl^?8UROQK`-`vCWcqZ*n40u=W_A%Do=gode?NECq;uL6dg=;f z%+AlK-MQp+(oUJ#*RRC(IL=G2SzIU>XwTJLylYeM`K0xcav|rm6}m2RCzxd6E=RdcJjL5C93T!)>+0i&n(~GdEoO*_SnqNK6`(+d-g?loJ*R1 z@@Z7wqOK#;rcImQ#nZ7t==m82<71weUi+Qu*#GXzQq?`3jw%h7TES_DT6!4D4qnP+ zRocV9X!7%EyfKI8o_bQ8wqn+S^0YsjdRSh_EH=^Abg?vE-)@=Hsp;oq{rSS243XR7 zwIYJ9kM3t4Do(pvyzybhH&=D1KGA2vdPgq{y*uTyh|Twh-vKtBYm3gNAA7naAaf6^ z!SNMOiqlRcAOAEbvbfsEWSRectIS{5N{=%a2X#o9I4XTNC~n{4I{W;ZO)u6c>+^!F7>%Fwe9qfnoApameC=tAx7SJ~m*1(pcA+?J z&y@0F5n=ZY&m!hZPFxt$Fl)xr%Q=6~zu2{Vo&;CtnuR={AKc9p(mwO@!O?d0RF=9q zyEbh5H1+E4j2Y`|KYk52^X0C%Wh|z*;(Wx8+QKRSljjtzG}6^{;hpv2xp3inZSi{% zx6dr|vSl{@J6rp|z5)NEnrAm|pV`g7CEe$K@!Q6;>hmt{e(1vWY~JC?46pP1-uS;? zS(_4jeqP3HSx*+@>(h4H36v$yRNiR0S?z`4WrOIcAr1#+vLcQ0{yg^&S(_E(exN6O zEti@8o>i}Z@7^{2iMOlRqRFYe{f=%jg3gcbX9`I^`%>?_;LCmUIkhRb=0`8TTbKXd zj_a9qe~yLWnV{xtc)qx+OKD5X$^2aat+v>VG)pwtNUTe=)Ty^Z7^X&4RUn%EbgzH6KooDDWH}b%&i~srr zyNyqGEWMm#a>gp{r3rf^-`W}9YJMMDU!!m1almG$pj^R{>JvZzIG^_y-g(l|cAmFj z^Q4lzV=Xu4N|wA`#r*qnd4<^Ky^`wR-&qYGZG9RoM3LYjWF@A03uqj_p#3WfyQ& zJ}^ga?YUPsx$a8rUtjm;8@oq(+n>XYU(MxjZr1zzeQoe%@olm`{Xr*LjEk3Zmfz{; zwUk~VHN&|5#M(vmOAn=mOfpDs6P*2n@7ZpyOz>GYXQq!qMv=|AKm66{Om|%b zk9~ZrmMK)6k)*szOBnY)w&)Kln3lQZdg+?E%yNp>jG9`My)wyh#R8cihYkKV z3l=%U9TAmTWW%YXj&>R&Z-_v7aJrp+!pyzHjd|CxDd>bIvXv;SXrbLP)w z4{~y6Uyr%^a?Z~Gxrb)X*eH4S%=9CYy{ppX=B*Ab=_#1uSsXwAc>KPa&9feOZ#$=B zkdY*D+s?doby`*5R?kf9y_Rlz2I@i0YBOY$uQgPC>~Z7L2ncMHTJyu(+sXepM{{I( za$f5FFBbM+*Pb~Wa{B(vg`1kyxI#2$s0uRelub$qJF!4TitT0QbOOId1^C^kBjp5G=zP>dgAEJi#2IE(*(EOaQSuhrq*s>Y2Hg| z5sMFL%cO0--j%H;p$3Clx#`lHg8NY5id1|I+;`XN#mYkct(DlAZ?)43y`-GU+ zM@=nl&Pv@@uxj1KlKm2jGd$O+{Vvh+Ik5Rw^5@&vgZs|;yw4PRHbe5t&7`z~X9qka zy-%wax+w=6U1Zuk_3!$qT)sV7uiiZWxpG%tuanc?87>yZn&EwS7n^nEHmOVVg^X>h@}-Y5aMQV~R$DK5 zHH-CTuiLZjOJ1E?{oP^Jx?YXYaDy41^Crzr*)qYSTP8^uYeqT*{M(P5W zv|c9n&-=jjP&4*n^6xn|QXn<A9eXMV9&dB&i*|>9dzbBvqfO=+!zut!8rkD!mssO@CLen(ujas?X9_n-+$| zCM9gMyvn7x@~&srB=!0k*X3<0T*S`tG^<&hneOgjRFqa`R~&upjGg9R4u#nt{jbi; zo*5F$?RqD1n%pzP`ahL+pU(Mw=R9=h<24=Y^kZvgeyM+M;aZjF_G0C(sOHGm@wZwe zOX9@N)$FgC6S;Ci>xBiJ`xtHHj3&>mm3LS?OMQ0ma?weA3C}p&BiYXRI8C0yc_#KL zv$2#(B7en^o?oi-&)=DNb63O+&uuL2GjlYHN}uh1zmH|}{2h+MEk;srgiRz)em`fX zdff2lE|ac;*ZZHG31Gip#+kP7!U9gGoAyb^_CzM7t37(76~#7NX^)e^RCtE}iM~P)%y%xjUaf9Q!Nmcg26! zo)e!Od{6HB9&b^2Y4^u-lO&ll-p4+#t+{$K)&5Pf%!~c2&h7qkl&Rt8<5?>UZmu%d zk(+3cUa@w`1fF{`^)pf}viY>kGZsDda!I^)YQci&;s~d-T?vwx2lk}U}iqB82X|9>ep zR3?30)hS(;ui!ObGvdRIBh&kWr@vjNdZbN~t>4-I(Ismewwu<*C3p43)8FYDr@LL_ zac^AHd7?+P@EMQx_uP~@^A;@Kc=36r_3F>p0uB1-hb(?kS+ZhLS6k)BhdT>&8lS{& z{(ZrK`NMgQgEPe)tky^TGP0=MW^3>|uyeCT5sy^8WRZ;6=6Ur~W9H6OiJl{w)opyd zyd*Jk+JY?4t$sZx8p1uEyw4OmVQ9yr(QBOT6SZz-@8*}j3bjR6zbBpx{8;)`Fz3+Sp0~nM-o^LpZE_!Rt3O|3WtpDReE7S=y?>0orB_u8Zk}kn zlY92?Q48Y}Z#2JK{e7zYeTJ{vO>5(jybCVfT#wHj5MTTw&iPlX>*J)|EeB_EW?wtI zXiDn0{|7TJv>dT`cJ_*U`lWm6$2ONTp39C4*y7!reg9(8+@v{@O1($sv@objeOc!B z@XVV9ozt{W%(Se|tNL;A_Tk0t@_nxV`6qCtMF;1+Uzb$!bVp*=KYzDoHI59OYaH*+ zOj@<-%A{_)>Clg{e|*8WJ8`ofiQfyLXrUFu-+vy4pF6^cSx=UW951i3B>_kLN{(8Rgh zN%``hGhY^TUh`)tuIV;4uboo$_p7q}y{`{4DyBqzI8SAf>SjtTmIkeIX7z_x4XFZ4&&3t*JT{H99WaVs3iCDVBYok`R3~n zz5d!Ov|#7&b#-skZ9*61)SAo_J#gla^r{CM{|U4A~J!Q)q@oBQ~U?@#!t z*28*U@mxAzGLzm%1L-f1QYWo6zTB*)tD(JuU2CzR_^EG|0!@vTaoj5&Ee`RqeVwOg z`C4nf|JL-h1pzEpvKMY{+hu#=ug;S*T;Bq(WQx|RTux?<*lSaEXQSTY<8s}Zzf#W6 zKJ>E0^i8&7YTjAS`@wGfCzcc!`)gqasj2wNI2EE@LEK-x9*rSWH4 z_w$uLdg#p)hCf={cP2bK@X>pDb=hybxq{69b|pvOJ$`!rKdtXq`ub;{Ti5XCytloT zWx@8(pBo?RPHW7bFZPdP=PZ6>wU!*|Q`}%o(+Zo~Wd%rWaNKWTo;k~iV zIPKcZK$o6g)?fL|iic*37J6+t9{QdFJD==>vQnB&*{@ovxe{6Zc_Ji z`rF2t#W5j{E4EJ!W-(Lb*<3C4;m+2CYfn~gW=ZVRytY6*J2JB=_wuR!MMsaH>Dt#C znbYlkV5#w8N!H@6r88Fr?$@c>SbEbmIQ{yI>=iXJp=yi2?$YRNJ)9$=zY`Q(i(Fqk zILBjXe75MR`^wCKj2VyjM-}UAjlTQm@zzoRs4#l=jL=QFxK znWbzbyHn;&S()OlNv)O7kF`af_R^M4KAo7fq-kGEvBC&e=b)P<+s=RCIMy8D2?@yHK#O}+BJ^E*6 zx@_Ox)5XQ}@&OmaA~60l~*&wW|&4@R0`1MI1~HJ zcVEquj>gaK{5t2l#9JyQ?9-mH`FiYkUF$Tlts|zm%g39wDRSk~r4Q#+=3V8RQR}#8 zqf*tW%c|*S_a^Q#zFwFpa%R(vD`6)JPtKfp;$QRaCdn(gM_$EN-d#A6i`B$PckS;J z6O~`C-!ktC<35KA_M48c(0up)g&)_yd3QqZzRW+))wENbZ*#>8#%C2V(~oao$S~t- zv)~?&A8VAIT-I4$di&MNv_v@JS=q)Xn@;l9N+!ewem!P={oI}CqGyL>SI$3wQELUu zw$0WoX|~~x-es2E^JM-$N-nW}>Dd;yH-74JP+FlOcR(~jj!+6=$ zbEnqnzBHKeb5@Z?_35se)fqFkU%M{Vx@7utbwRg3@p z4Ps^2j(V-cO7l%V!w`?DV+$=O?OmU%=v1Tw9Y(PO-xd3)}J zjMukTt=$&BF4M#T{YjAa7HI= zZ~Maey>n)^C>=4eFMIc=*qCXKq{*&-H|4*ZnC7gmwwFzqch$V!?!X!Iv`Q=EE5HBF znJLh)vs!BLyEBR@rQ#L|2F6;YIx%+Jk0)N=rN2dfPpG~6`gdpUtTvx}+dTc}wzSLp zYM)E_|M_#YWcuUl^Y5Roec#P5mNhYB#_kS12IF6UFM0_dlvVJ^(G`7tX0D0tbVY~V z-=F7HCS1AB%x`-A@2t4}x%U@7>rrQ3KXJA3WR(Lx1($-@?Ps``@UQ=2AUtPV-;Mt# z4}J9Sx3``?qiR83(6x7)^LuZUC{TpWhQU>ql_UqO>EM3-0y!DKpOSHwk$+KP_U*+I5#cKiwk8Tm3yW>>ckOw`riB zq|;%ZWk*CCBzH!;A6}!XF|{h|^Q-*As%O3mVRLitJ+I9Dck+7P&4Q}PgOhjHPAwO^ zQXN;lr*O~n1Cw0mEfxOsOyI?Qzr#BBW-+Ecb6t^awCxhh?EZc?rpj}FCbQC`b8A{J?Q**|UH(ST*SIal-#?Y7ZMnqaKd+I;vgX{K;{UQqdi&ReCQkQa z*=!iuc8+JNoJpeW#Ke`0=kE00ADq0~z#v&6`I6>U7QH8D79Q@IGjsnXmx2iCi?VX* z*CyTSYreV4JmN1`husHx=B|@!{^@ciD}2-6iS1)D;E((poGQ%y+12}f-G=Px5*t+y z%w!Im^`V(dZp$Uh&yVD1nXlKW{`jDC_GvSo_&xg7hgQX#%|CI|V2^Wx-@ZWgxL-A^ z|IC^Bj_c7Gku!G>oiKWFcfQQ$W8av2&-QG-rMYy;495*NmbSLG+T7QYRn*mQYp4dE zI&tE}!l?|qCWfhL%n!Q1PxSoLZ@Vkf-QEkHpY^dLQY&5WXVp>nuV+iIT7O>?XZ-MM z`*U0FN`tbxKV93L6VxXEO6v}*v-0#%dKo_J!MUD)XZ|ug+rU}yF7U^d;B_%kt!J8< zgDp=uojkpwDNt2gUYURCo#$Ndy9L+V)t&1Jo0Z^b>=fmct~YaUzDa2Anpn%(O_eX|C7*3rYqC?m-SW@5 zo-J0}b}ZU6<6rz<7Q@X}JLAtBJ05B_=h^Yfp#5{qsLC0$K&BjAb7~T+`0d86Qvn zU=-Y(@_A;j*<`jQ=PxYS7m)C8u3ad@*|+VMCs(Mtc+Xbdy;G9qXMD@fa1Noev|S$- z9#cwNR=V+=%-p1)i$Q8evZtgUT)45{t2p;`=G6z;w;LqC9Dl!G-f~gLFF%Q5dUT!ZU++TWbH=r$=g z;wsOXEaN#FIr~DEYJZB`v+(H__ASwq@7F&2eBaeKPM`1D{}$uP7bO0iP%giHtKiw{ z!{K_jW-j-caBt??=DOXpZ(m_?mg=5yG9dX`iMI^9@$QfD3}>#pEWDiXDF4{@e|wBx zITxOjN!YvOl7xoppRiBmX?Yh|atr#bKVN-#_0_#tiC9j9$&Os|x;I)&&KvDAt<`9s zV01rrT7B|OTg44`*b|=JW5~O}vha2Kkr{^Vug+YI?7QQ#E%UkAzsCt>^KS+R?^={l zcKvy@j?r+zz&5QTs%&VO9xR&qNvN3;^^8QRf zw5&;Iq8Iz&JIkc%HM7m${`+*$Ggdt;|L*lWA!T9-X-iIPd=j<$ddGpw&ydy9xc&mm z=?iDJeeAH@vRm?^+4}2^3D+)VoxJun?D4HEsb`Cw``6F3x%m0%+Tew;zFXVNtnXNz zVSniJ(b`2)@$i}waj~Vd|A>Y^DbnVg_v9rgo&GL%y*BeU&y4V0pXYv__U?1-;~8Hf zVvA!_Ki^uY5$E@5ntizCHh&JL8G`E#GK#j>&yYDX!+Gy{pI=JC1l&)dgCSbS+-{^>Ytpb{P1)_V%YQDZ!Us{MK6|x$8S9|cjmqg z_4P~7x~zY&#CnC4VfwOvl8)Mzn|<2feaWR_d5%pI-`Sa=A*b9$xi{Z*xMZYObgt(28*za%!r9_yAKtPS z>x*hX+|#m5vXy1?#o6nHg7#g%AvtGeRA$nnjXX#1&#Z0LGsk8^1Jh{uD|;G zn~z=Pf^{eUUd~Q$zvM4vtgZFwtC{yE-IN)e?|2=weGP;U^hD13eWs14n2X~;Qo_H~ zt?ABRu4O7u=KJ^I&uRNBe~R4Wighm6?VG(j9&)^;^E4^_kzpGvDvaUzxev?oVKULDs#Mk9OPi&G+NYoNxSlBG0AimNk-UaqHhb zt9I%z%DXs$@f=U?k_X3RKK8hYPtQ8w@rfnT%|v_k(KT0R&Drq9NYQFmiTXsFlb2?$ zWR|=#Gdbz7XYs)m8)K7`s`w>;1h0F4Q2OhM(%ZovbN8Nj*nRnD{q$R5cTDnP>;<3h z+qk`9^XIvee1Agg?kp}iBJ;DyP3Z8Njj1Ur6B#z!T173q`1&gg+vb?LKi}sfZAq)Up^f92HP_RtitnDRGQBy? zq;Ou$_R!-$Su_`3Sio7eyh(bq%DJ2kx4%R!TNyhiNj`4tkr|sJFJ|~k-q~>^>wSE| zmZ zoV!%H*>mQTEj!NUr15eVJmZ&WoV3x_mqj`4i)yQ}^p{yY%9r0<4A`0Jx_+_r`MR=# zuJhYBJbB&w`kvJPv&X;7-rezy`{<|Q!=jH=<c9QSxD5g_^+RMOyJJQYH@r@(#~XElS&~dH9G)x}Vg9@cK6|ypLa( zvG&Pbu8MiL7u8PV*|}bV@D}6Ih!pUiYqxI3zTC|ERudqpOK+v?NjVbhulu343jy!drq{hope84 z?c}s&W!c9jn}#l5x$D*RIqLD-`P+9D?R!?zn^f3*L&JHGvGAIpQ@LuBcOH6Llq&3U zWX{h`VXc2yJ5`>F8Y{1ydhJb-d*B>T-}x7dZA>p5ThjKbzAkW+B$4gk|**ZZ1R%10^wifBy;F2YZ z`xhw%uRq2)tt;t^kXe~>h0YCuz8TheEE}>;O=lJf>S~NU9NZS{x#3cvTvPJnj=}NE2izsyqs~?b zbpL)7-XO{5JHdFfsQEL6&oe{kx`}{B=4+(BL^ttFHIU*+Y&$mjz**J2pZV=txm5m) zr3WiHZaPc~^KNS~*nWRT^Fg0SuhrOiCl$|N+_H2^rFJoorCqoF<#o+`XBt`$ z=FE3gHr-ZobA_XD&VePN$?x7+Z~1jFNALY=xA`k3emecQV8-G8;(!?&?FH>J7EKd9 zlcj8ZJb10=$u$KPLZwVM%sw^qtVn997e3(A&{AY%%zD@|=iHx9{N;yg{!EqTnzjD1 zpQ zD;`M%I(42+ytL5BGDp?z`)Ub};st9Zx5@qf@b~xo{~z)@ zjHelPpYz$Iw1att_?gGEm)#eZu$|F<$VX|>l-hX$>)*nZIPb=TIY~I&D+K*m-{TZ#t zJIQy4G4rh6NWEfBtfL{TJi6dHL;0;jhA%P|zI8KZ#$A%E=HBhn7SB*S z_v{bhFD-u*H8{+Irk|R@=~R*?s4DVo277vZk!wQ9Nzv{1jWhQwG2Z;WBC6M9?-TCZ z8=rfGn22VYPZv`QIMJ{0-{n=&;p07=`>*ExExGi<@LpC)aLeugvsxB$GG27mZj^gA zGqpML&5Xj@56VvFGum$kpT2dv>4{KFWIs>l!s}nI&)j?7tXNR6VQSzvqWNgZT{8PSyKY-drr5mup|9yff>ZV)FCIf;ARX zOJ9^unyz;@GKwi}-a=&=fmPL8hD%kPP-OW*g)rIq3H zE%EoeudkK%`MfN<`N`xh#;=#Q^_=7R__@xE`P=+|(ua8dH%|B#BR8kA=JFQrJ(oN0 zrp^w!@u1mxaqD!ws+8@C!4~rFq1R%YUVmdo+&8D~?SKKfHH|M(wdVmyD`ee3gFM&7EkTc4n;}vvzjRb%Xx1S3k=;G$@MrZa90H zEo)xo?{$aQ9cQgNeOgPd$$)u-_By^#!CXaY!Jg{-w>`oyy*7fgW8FKxj$X+=4uM>+MOQ0?CJIE zOP`dV@6+0~Sn5Dew%d&gN2W78)&0x!PA*h;lwS8|n*Xw(-{0>22;aDN*^O%-U(PzV zH80cDH+4!x%uCJ-Avfh)_82~#FJ&>c=$g#F^J&@J=HD(pZh3oN|Go_}ns;-fyHyn) zUY7i!SaY%Ez_zV28!FRG8Li4!>T?IhAA7e-%p@yhLq%0&L5EKzTTA5WA9{Ov&iPbK z&EK)PM&ZSQ@(4?5o-MZGug++k+3s~fX6xzFy!=w{Ym?fhO}ebBs~a!>bL;9)3Khyr zKUR2u*4KU=9d)WcVg1Ur(&3TYx9mH5vue*#1O0pSIkoNKt3KHjEuX7TZJf(i5Nq%zX37OR(S(UHG?;ZD}S zwDa4K9-n7j`02olIIjJjiq%(wO%w%^pS6d~Gu)!xz|3uYZuRpR=ER@17RKyzC0l2; zORmbFv4733|EH&3Wk3FQ(_6iDhVSpyy!ofUI_mYbclmwyDh+o1dc5jdv#^$Z+WMQR zhB;i>e~#r?R|y2ny(E5Smc{hMB&OMxdx};GZ+X~t`&UZLxoIscrPH5WIeQ}V?~`Ev zJk@G%dHdr5&mQdS=(?QAa7Mg&%FLqypJY}qyD{B0Jb%`m%8E}ps+D;_>G2jP@GV39XUOFDo`1D@R|dG@Z>D@sIJQm-ip9Ewh#owQ%i+kWv`BKzIQTq^4%TETRyJcQ1iixy_n1D zPU1OleG`dGUu%TUYsH&lJ6&T{zMH*?#yOtMx7L>%_AYO>I2g+q!g4QXPky@JL6f}w zrPuFWyVET-ckR~Qv$CVL5A9#0VRb1gUi99JHF`f&Q?(m*Htb~!*t_}Xbhhf;y_>Iw zPFGqeH{Bf=FWFz@6h7^}_GV|BPOw};@xsGTi|VQvkH0)BZ&^NHr=q^3WN-2L zX5MqQ(R?DgA5YD^xYJTYiQ&6(u$!M$>4Vn8Yd*&cr0q1~&75OHPbFsoWL5gudKWrt{+sIL{gXR-M&(V$+qJxQ4eMr%!)=)UJW!3`?iq ziE6WFb=I4;f^Jy#8hx#MEm_O4Lvz0344;o8b8MezZ~A9l9DQeP>6_0ht!~bpc_28Q zf3xHcg%cjtdi@6CXJ*KH)b27^wsPwkQ%fE(-#;Q#pK9sq>aU&quAOUB3#VX&iQ`(y zw-wWfttgx+8YjXbnbbGhu#YgR{w;g#@na{l2_vd0>@zF5Z zE8AAx`l@~4v(kqS%gukjOZ?n+i6wrfWolRY4Dl`g+zW1V zwRDwSK4D>go7Tx3Pmu&aF`cM}%HOru^Y`bUUGsR_;q0`1 z;dznLN3Z_to6Wyovue-FyHB0|ci>zR8y_7uSs357PhZx`ZanL6FpY`Tv%_hqG84u{ptNZx(^`q$3&+cyu5lb(-zKD0?vE28%@kKmKPIa#e z3xCI8u=|zLq{igk@yA$F%$Voj{J>+(GQUCFw;;W*k;#BP=xwE8)2Ane&srbWag?TQ zw4Hur?~|68&u0`>d?zb11+I*05>9?}?mg4*#kIN@et*r*Un9?-Shr`BwogZQ-~Mgu zoy%r0ZrLoohIc>njQa(V=NZ%QZO&d_8oYFk!QnYKlHZix=Q)3l$2?fxVn%8~+Wy2o z!TJdmGcGQ&_bO3%HdA=h&$X8?_57*aS9*TV+S_5Px2?Tbacke>wzu~C|IIGg)moRl zQ$W~z4&R5@iS;dqYqCr$W=x#APqlpOw=<_B3zu!Vb2Xi7GhgFn#?rL>S;c}8!d3w$ zk|pW$O!7a>kvw#!TWqeRdD@XVsc+A(xx^Xtds(gYpZP^?2EP|HmZ$YAZOE14yff2q z#$u+jE&6k!vkP0e48BK)_+7qHXJOnc;>)oz&duT98ROIIZ{Oc4QyqI(|0nNez03o1 zW_~c3kbQKj8c**E@iT#ef#R&s7^-%D`}6Z;Id`jjxi zHAjg`+{d*tvj&--F~-X`k=$ALKu%zx>eT4Ix~ z)-qL%=R5z+;sk?ukrj^@aq60yZZq;r^PYJyK|?t8o$BfT9DB1qKRfH2Tr19QtjV+E z5=(BG?yz;Ku=|0}9#8rB#IBjFbq1lrv5)9b=9!KeJQ`Q&X5M`jQJ1^ADEh|e! z`@yc0Cpp*jtl8r5$YlAJhKv&pC1Rk*z5;=gT&U)H6CrfhrfWxPt{ z#hEwr)S8SBPZTJavGCUHtkb8KAOB=&tg9(x_lc47z7w0kRI~Cm^#+Ieg}c;Px(pxI zDb?TS`O5I0#bL(ZDN1u^&YtBw!(oo4*#(2=N6ofg>oSYAF zS7tu+63)!#bGXmrCcU2X+2IG_TXuOjYwrEFaKY|*SMC*wAAOP6S@*tbYTWr4xsvN4 z@nKuEMAIziN^X_rdG;jEpr89egRAhBnHTRc`5HW!EphhWp&n~vyXHoTt#@jTCAv%k zYb35d$f^9DRQP(!_U;4MGX2l|dX{ppy1J}ZuH@0`hYZCEb0Y6tZgJfBg7xzb2d+lR zc421ed5s$jkM))?%$3ZW`_?jh+R>Ssx0XCSEG+8(JpBIud)$HR_wB#GNjhh4*Sy}--EF`5Ezj?D5alXnC`z+a+EAIs^Q_^g5mPbauUrF>|9d`a@?KxkeecJoq*=j_ z&A0K2d=Gn?BqdsU`Oe2Wjh@y>k#G~o>;EcG%}OmwOSTcb!uvK62!I?F3+udJ}YwCS^p5d zyqMcRI{%%Fx1V3RY4hjKrO&VBMQ=}WKm04cJGc6JrndOv`<82WX6E(CJI$4Rm&tTJ zwfe*?_H|4@PEC5A`ZnYA_gSBrk51rWy*FENor&Wc-u6nT2W)J{ClCH{d;RMa@9uAN zk`vdRxO?@@k4F(-XX~7?f1CRvYLngnyGFm~d{GWle|P5JVVzSgIV|_fuh}Gs9(WL% z{&a4xSR&s+_9tOkEh!r3XZ~EEpFU5(!_(53v*_8EwYfKaU%otj&StA&b#}C0Rm`1f zqQ|zal~#VNwY%r^i<>tKEl>MBy<)4n*m$x@lu4uC8_R65xs@IFGM4<756IvZFcg_1 zId7w@uxzhJ5<_C0v8I(=yLJH!Ie)X z)2#NLnX@>Mot>SPysIHsTVlQq%ppNY@RxeNlwcVDuYVH&2*nc=71r#|7d z$jdX}!MlJJp2l5^n3un+uDUUqHEovWjMvtu6InS;LX>t1+U)wpe}2}}^0b24cTO4H z`0;e_-s~%lg740xOzTZj^sB#i@ZcGd{Iv7Vr{-P>C`il8@@wvBwhWU<G^0=BM8YX^W{D5e5Hu{kk5|J!lyk+ zp+DBltxii!n=i~G*)n^|i!+bBgdGImnhB({ndraJAoEwltnUsTlBkCtJZ3J)^0T zq9!{IC6=Xi7)(FD`P5CF13pug474xIJUUfvhjI1dhp*2p$WY2Xvm*CHd;B>ci&F>l zoQgvno3&-0sR*W7e_x|3mT*n`-prp<)edt%`*(V6hLb~vVRqZ6b2FQp6Md!?)P6mq zs`XFzmDanT>&~2RNDrRgRrr84QLSVO+xy>NZ)nDad+%;opiUbSq}`_d7DI7HV2q|+@U7Dp5Ys-@lt=K9}~7nRZP9P z)8_Hf-(u&p4CJHteA)PG*8BP&Zbo;B zDxAeH9Qc+VL;_UvpTwHL# zC(_$fG+>dU`%$m>L-(gVG|2GOXtmt@+eV5uI5I*7uXHy>UNxX2yvG!)sG!?7Yddyvw@Pp#Sg3Un_P`U%O_tyvGc| zRMFWRs^hn|73mfUimtawe-=Kg$HG`?VMbFGbDFw9S$?{4h}L%DQ*l{lyWdFtdvo-D z-i>WK6}LCtzPxVM)vy1~^RL}BFZJ<)1KjPA&yC!LWaQo`t1r7F)EKwKC7tbj(#4jh zWP`aggAP3CQtR-4P@T@*|F7I6NHRFMw>i$Z(ZE@Cy7=)xmMLn7a{R8mp8Ebw%taT; zb28gLNFB8>)|ln+-=U@A#D*J}TiRznWEWSn$T_FdrDAdMB%gPs*5da&Jr073PDkCs z3khL8#>#JZa%}&_aqRPj`?*?y>PlQk+ILw@KN~8sP%$%k+vTKlUIODW_=U1aYy9hsVw^ zOqil@Z{|YQiu!lj(8Uh}Ol+?!+mUP^hXz{hhu7hTsf z=ri+uoinpgob97PL0W~^1er5ZDFMgkd^yRy(&-(0)&*mpyaV52c32ARC>2mXw?+U| z&;;!G^2Y29vzZ1frQB8?OXE$KR06$wIl5-gI$T}knd@L9 z^K54149SN->J3jU1l8YyGi)t4d%WK;H~rh8nUbm2n}2&v7M!6vNAllYzVDT3EYHlJ ztufy!dVWmE+qqe=hdW~26mf!l@_3QmUf-2jPlx;$%PFAIg zZ2ju##w6w&P=7$WpTE5_t-LVPE!REv@@~=nC1uj0^erJdu6n_XjGGxm zd~f{h@lZCt;Zga{Mq%rU&Xw|D_pIA z-`&2oW6JY0cM6RI)Er&a(vI_P^2*LScZ_%2rpa5hlDK|Y&(!+)ded%0;lmea_PVV# zJ2-EnEuTjYb5kqMqVOC!R0`alA`uwtg;S`|J0` zddCC%CRJ{3e~_j)Vqq$=Y(p|NV}}Je`RFj3%i8R`Zv72Cp%` z&lY}}KT06*+sTXmR$dwUdVFunm6u7*uuk~P){(f8Eg*Wvl!u!yUHZyZoc2xgGvfly zRR^!vznNPb5}Yb?{QWzL+fBI%Gb5cM1Xa{G+lZ|YVVxW2;NUK!sbt>KQTixi53ip` zp;H`F3xl8`pFX3gexp98OA2Sir=X-oEz@3ZoXqaL+P=zi`Q^>K&$hQ$o3rJ-dH1bm ze)@O2^4)#6@3#Bzx0RlKq`dw>|L?zVI9|8cFwU8*{$OV73T1v44)HW&j+NIpSsuSU zGhyP)bUT}C@0Tn-e^=#Xg+W2?L%-^?vsR|HF;C*2Kilz)agMPu7avb%FXKar0`pD0 z?HM|i3tm_*Jk5AiQYYuXaBs)YR^PO1`G*vKM`1Nzw`5b}=CliE79<)c8%s+!tZV$q)_gGST8p;9fBiE#5@|VUzB`zV+0XWL zREEviIJ44b-GMWK#=>f|XC6s=R>+#xH$!sWa}Hw;Gvn}tXH#ZgY|i<}e>BZZGp2E- za@w`^S~0HGHuKkf_*C+xWUKX_GncOxhkkHtmri)}`0>V>>22Bu#V5}sT>bmAB`9>( zRr%{HVnE%K-x_Ev{LM@_=UJ;(z~nW)cNyQ-tB5Y+kF$>d z_3~b~Fzemw|9UMS%6vXuku}Roi{>)>e2DFe(Q3QZCv4SsncRBr@!jF4|9pQH<{9h? zd;Wi@tUq>p)y!Ot8)vvpjbB(huZ|8qzUf!6eelX}(^qrtUA^e=Y3_unAJyOg(3kyq zDes#yI zJrMEWv^MrLJjH)J?{&sAoY{Y4)6CW-ybOJ3bEbteTP*NLS+ndkYt5Hy7Dm31+}(3D>sVUcj+rl87Nj1FzhCqD ztjhU!`nOFtyC_|{kn?00K4bEaK=&3XEH!Qn54)(QXOXG%VhxxcWIDPyQv|MkY1XJ*DdDtD$Uzn^va@|&%9 z%)=zjW6wk`jTdG4d#(P-_J0RfJnR3}Hs!is@7`Gxzh#A0JfH4$b>njPkd^HmpO;x_ zdWmk|sk>oGsllo(-@A>E+Xb&WbxBY2_IcL?z z$FJJ^_;SPaee*nQO=6}sp6xlCvufr+o3>Nxmx8%6?^W7a{HadYJ=5@T-_us!*qj8!+cJ|Gf&u2UyFPho9nrXY1 za_w~e&mvBqlk}WlvS-^JkW9H;UMK=i=jiSCxX!Pt6t${CjvI z*Z(%I|8v+D9eTYbK6dJdE%Fk_r&#>@b@lDcPuU7*<{qxAvyPhPDj-^ZJ+yIoP+Xe!(Od1tnQ1F#dY+p(Q=xUuGKurX(OG8B z`DuqYS{mQ>*f3MqV78-Fi=^Dj+?hAcn$G4l-sDNwY`A%Ds!7R@8)tSEFs0?qp1H^U zrRcleuJ0TqI#jdM(oB<$l@F$w-96J+_~}E${Lovz&;0gx8XR`8S4oWDF!N{{x8k;p z9cgJ7A`{Y@3i$6!>$U&6Fs;DhH-G#A2BXeDD%WZj3C>TySn#IUIO6ku*TgH<)v*uN zcw>M0rtzETXWL!uSZok|Yh2a)4W};_1o06x}<#d*t=)0=dneSYYi8;Y?v9Dly>&Oxx0=Bk{w%C%ib)I zVVc;UF-v8E8qfSZ?pcv%HfQ{pV`MCm5h3>A#bIHK>IG8`H}fQD8nGMO|9E@gZ_|r2 zzt3_PS3PCk^Cjrjzw>n&!UoYuy%Kz)TW5Z6%~i+GqKArE((NQvncR5N#3WAb zy)Vb%>#-_U*}$|#)B5f$@ud5+R!G`bJk>oIqx7t0=EG&H#gA@E*l4|D&bgiO43C4p zA26|xTHD;(uADMME$!FzEtk&bU;gy{&n*SFzzF2XoW7+n{S>_Tq z;uW@-D_(utdi$4CbJ=m#d(}(Rv@8>~c4}&_`^NbD=HacCY5xAYw%z^#P9}>qT<EkQ;s{5hwjNk81nKWZst$)s@XYq7`y89=y@i)~zi;=+<@EfK_;s4hzP$CWaZTK;#x@Hx6t-Tt zRAS70;Kv`+6G!Lq7v280{SyD2mAtpszFKb?eSgWz&ZmD@oeTKaQ=hnAmZRm$RX3~B z?c1NPwH3O!qUW^j!q%M|OdYPyJTu?)j*+qF!8OOT1y?RSGsk2{>WYBEl}75i)wwB) zl=9aYn=IU|vvSSz%fa$b+X8;;8l6j6+AO(pmY}#ptHhl2YXWV%g55P5EEQirzw~0U zUheh8Jl*aG%>glo?p}X!X3g$P3CqPe@BW>=>b_jS9`1y9dUwo%B<9XqXwPz1cCF!t zXUk@;6=e9l+U1(w(cS#!Q~6aI4*m?5Y`VCu>98`Z=4?5imEsZF3~66#7CSXgke-wN zO!`!ArQ)BiyUhCk$}BfL^QjfS8e7I5<7c+SkG*=IX5bP#m3ueuZ4Iscw)V^PxGe8G z-wF>rWlG^Ud_3#Pq?w$TW*N9&?^;}L`pov$l=v9}yb15PL}PB;UYfJcYh}HC>f{4i zj0TIJPmME{o}bRPMk0gl@E&W{%{N+(iIlJ}+iH7~)A+FO>O(QHaa{Aht8SSV*u3RR zd%o;Sag$YR`HhQKNpz-}JN#yq%Ks9G_LDU2>fK^%rZzt6diZb_ej5 zEi|sOy_&(jxIAl1_l}gbNllXNH_v?Ol1#kzA%4~bGhx3Ol6Knh&vcJCKGs`Uf80Du zGuZhL@7gs+o73KIJSxk6)=l5#j8B4c*0K9@&+-{hZnddjDJl_wbrM1u8 zYP#8$Pb!~NDUEHz#ml{C&&<2YQ!Qh4=7rCl9`lq1pU>Pl^Txo~F=@uk1hY>c-3pf6 zK9Hss5okR5#u=ZF6C?zT8E3Xu8(cfn6>ffD|L=&1OTX_mOTVAL^0}^xPUFo++D+vbOsg81s_tp3Gsf8M-F38_(Kw&s5yEVrK7o zW9?t>Bs}kZZ;wpax5Zxf>$80BeA$~KW+9Voj z#+?P+dmG!1q@_)s>HDYK^W*;|FSF7P+szECdhp$N^YJscW>tP`5BK4CF0^s#N%3>4 zEN{P0X_CCe6&`Xyw9bC>*Rwq4z6~==_P!VVzw?P;x%KLgJ{@=dJ}cXB-osA<%#ys(@rrHMjlXK@>dRI2?SJo@J^5r|^%=o?&y&nvYUlYC zp9{XnkhpIj^NfkBnAqaj{VnFCA2ZmTVCI}-Gl~De;k|xx;!C??A3a&dCSCrbB68Ca z1Nm~hG*Q#Z{cB5{oMboVEd8iFtucP@>xc2?#wE<3-5ZmPH=jFmy7#eT#r}6swip$) zs!30e@pxOfYp;cRPCJi*L6}PMuCE*A(oBC(PSQS-_}RyhfBIL8yQ=kO?#mj>-gKOK z%WNw9Z2H9e85ZZyXt3Mf{v~K;Y<zG2@{&Q)q3NJBWpL^l(o)Xg*$RywwW_5AVn+4~)WW$-8^uM1dS$MEV>}7T^+Tk%-mIBQjg}&3gso=G-)*qsp1H<($=kQ$CfqZXyShg1 ztepLVbFXAHCC)B8xaUWs0ka~%x%?TKUYYZu?_YDt=yPYU-+3Wa=6d<$8l%<0b3-hH zjAz*jr!gHmvnFjy;iZDJcOs@AWY7F*^rgW0>-*oPDfg?l%{#xV;Lw@N*=ZXDg2j(b zc*pQ;`eKb4%JZ30kF|PB%_ugN_&sM*V`|{}h=l30_>2=<7Z|X=E11~d>=WT0t4X>B5R!PpZ77!VpYoBlIEAOcBxEnV%(IQJPey7?!SoT z-hBI+#e>wVR@=FEPL5pO_0>SUbb4E$LHN6KduDmJ-`w)Z;eN*}b<^0%)4m@0^NNR~ z_+83(My_Yflh;lyl0Ea-eU~<~<_vW=uXWEB8FYVDXF70ZMOv+Mev*lCh5cvI&<~c8 zr<9+6pY|;+tVXKlBJbfn9BJ3=yUxsQirn^PYUf(v*D0GWHW$t<-&3ZP_F3FkFFV;Q z?Ad;%X?cdKT%p#X#=A46S&jDuKc1U4i)X%an|Hkhi`#FmgI__zHENA znRV^fs|)7q?F(s6jBA-S(?DwB@8Bq_cM)2~b84@L$&^k$xZ~{BGYtmzo(K0d7#;4- z+N}EeR#(v5e0f&m&O<%7nlfie-eWo2b70Tkwb9$Jzevc-nJ00`AiBmZxopP!>ax3U zDu3;KZs)LmW`UZI?@@Qfi>mRgQ{M9MTU316e16d{_HVpX)P+8GmL$pcymbFF$C_)i zTvVE=@=-PuW92hnJ$J8)%3gdr>6XD69fQwz|D8XlzOirF;XkPvVRtv$9^L!Ai7)QY zitkBPsn@R0eDWuuZ|?Pjc18SW&zP7VHVZz>lg76y+Uje;<&di(9yh|7mltb&vc4YX z+xjU|+;4_t-pqis9cR^xHH@|XCBMJpl-}{k!tVF&lQT=xmK`%)s%a8&%5H%`pv{Ee zYehKu-&Gc#RNb!fJ-eveM&RVr#8!`Y->ZZ62s~}wQ=zPyUcTn>jJY@GZayaW`nzTN zbNl6U_gkL*|M>OuH*fxx>qHe-%&vUYerEmj-00%MXn9|@;w@KFs>`@e@CaT!!<|*b z8ZbAdP2R{kVtruRidFJaKel~8mtCzNFIV#W&$`po-}CI=R&sFG>_4}YODbpnd|5NI z`QjPtdZ`chc#ckz)KV)xy`xusvyH;^GrFo#3NsZ0Ou4JLPha3vExsIZ$#g;6nUhz~ z2yjl`xs-=lc7-7CqvXD6vvej)TG&sL+_Bp!q{Cil-WiR}OsgdYN^5kDvg=k~QI5L0 z_sWyhXX>d&#Zy@uPv2kDe{xNTk-CcUj=6t3dfy4I{dLZ4?%G+CX3h_ZNZ0%A9d&d$ z^T|6;`~~!iC)>L_s~F3dzGIshkU8@!V{Uc8g$MeMzy02=@ILL+@Ho;&k)^SDzWuxh zyEh+B^}E_2m7n38W2zjLb}}WetmfH`lghiIpT!@MHO_c;!E*B~PoMHI@xV02YSzZ1 zU6B>60;&JlCso#M{!ubxOXcThj(h(bHQ(@T-!^$hUO<|F_Ok~{#`Ri1Q|8S*|2+MC zp2AGw)iZZHrdWD$8Ex;mIcux+`8~7D9=yL)%V+(v@0-wNUeC0RS2X0$E>N9!=I8nI z({w8Tm6Sa`G3P{f0j7s@(^6B_N)Jq%_EX$OJHqhu-h``ja*X!-FSoOc{`97JUt@}&-b_xB=$m|| zCwUBS={M9&p7OIoyzbVbGcorP42oC&KV|j#cL-PZvsKy8H0n7FX5K!nF#XH{1)&cq z(`LQ-=wLK`^^D59bACKG?l!8g`Bmci%5h&|ieH{-v&*9N>Qg6kCRym*PMdIi{aL$K zbAQ2e@snr%(=%=fIdgE8<%*{$iM1DgN+^Z<<@i zQ68r~D*I-AG~D{+@9*a;P1K4@&aMeCs-I<(f7kc@(;K|m<+^*XwHv(BG;X;UrozUp zvj3dT?`W;1`iWcJm`~2Rk>#d;sAI~`xjcob_wMH&x;5K;-Ja;GZ->`1?~4jD^7b`T zDE`?sv;PO<$+gCxTc4G5?ffGeZmgxcS>KrVwdqM8&(gd4#&2XHKlV*$WTqh{<`X8gKvkclz@8pLvOYQnl(kpPxUp|DoNGc<|5bB-wlC*8~||K2g8(tIp(|v3H)Gj!7+juw99TLBn~| zsRX0bKG&wtoHA?v89~v_5@##yH#?actC}o&9r-dvZObk_lYPn;vpv)7TAR*HZJKG% zKjTc6im^y)--pG^j236Hd+$8+y(4D&^vLBh^Uf?3HU2*_!D#i=GZSCjTl385OZkp@ z6QlnJo_aFB?sV?i#-Pcz_dNewipCi`|4a~Dr*`ekDV5D^qLXKqMd~d+KH;5PDPNoG z=ALs?EdI88_-s3R#H>cm$!Pk2e`EFn)5ZTzo@t+JeKBLrMO~FYGhV;k!Y2{i=Y6K^ zM8@o*I+fxKgX{y=|K8xdGYjN*dX6%KvABCSEoAu^n=i=yK#=7eTc-?mSR=4TR80l#7lTl4ulAKuV?}<&0T$pk#vsI1Nca^IB z-8G_uXAXX1o*dbmqIc~KXXQ*0Pygxa#vF`_d_P%_q+An;I(uQFQ7T);#FJ;T1=h^` zzcS_D{S#5CcJ1C0T+<~DW{R$wIkDl4LQC_0K|Pao#@f@*G#It3Z;p^ZoG&g_FgNmK zirEIv-jg~fH0$UDj~p z5btMtY)X?hGcziM$T00V7xO*knX+~I6o{gkFXt_ z=3BBKIjSn`xn6tsdwRI)%=-D^QRz&-7o54u6!`JX)Shkg>bcETDyH-^&5UiAWYJgR zIDA0C*I06jCEKEvNgHK+CSF*ZVX9scvT$XA`lJb`>Oao8_}=7aX@Ji&A(qs2K30?U zCTMPpXFIg-zm9U&>Hbq6zTFO7qZr6x-^bH9Kfx%xG4D^)Je%B2mMT2wuhu(hvc44$ zcy@|o*~KFlZFQSl7EILn%gCs^c;OjC%~e~ z^8Whj^|p6aRynNHFP`oAHy|x?=It-@uC<9Yv^;Q{tYawSYQUCKUAnz$MxWM8xSrWyeQaCE!L7A3cl%{En{KW-d*`UH z$;?U<u1rl(bX&e>#;6~Lp+o!!+ec#rxtTk$n)6)0QJFN=$*e0tHQ_`4nx!;>$Po4#CpRD58@r>y^C{~L5$nf=~JF|y7y zevq7E{fzC4lEA5r#sNybM*o?wct1;(4%;;?`BqzI@a0mC+qYk@yS6@Od)a#Xz1gRh zK5W_en?rK@$2+sSyRYS%>s-Ic-5$Lz(K6?D`^#AcqX6h}iP$cg3dr>Fy5PEtYuwoBfNKks3{1uZ(=pwjY1L$JlOtoZTL) z4@Pbd<}>G4-U+RHeeFuvpIcp~#km5rrmnGdOnJTi^vfX2t&V|L&Q_~B_{3e&aJ>)zS#3ze_Gy1bT4_gcpO+X{E-hTM4T}RKgx?82*d@c5*nLX>&oZS~BK2Fo@ zy}RrTn}hjGcAq86&kRN8Z%_TZ_s-06Z};zM$Mx^7c2xE1SQh-*ME7&Mc$!s^o=&f> zxY1UZW#2R|Ypjq=61_jUzx$haZ_4WPjvqy5e6DF;Ci?%yWufElmp_J|FM4^;vVPOn z1CB=*c}%So-+Q+1yyERT{cFcwynO2V>q)fQ?E5l_YH5A;0<*X$uGBM*Tw+=_%Sf7G zZwlWwOO?-?17@sGxOn|pinV=$W7^dey|0Xlktu>sx+`~tb;wVA7k5U)D@N&@szaLT z^5dfSR|LPAcP-`F;u-NS9uxBvSgt1r3U$|Y?LT$p)%kP3S$5;vXsJ?Hi7jvsg1 z_m=e-HU(GCzft?? \uicontrol {About Plugins} > + \uicontrol Modeling > \uicontrol ScxmlEditor and restart \QC to + enable the plugin. + + \li Select \uicontrol File > \uicontrol {New File or Project} > + \uicontrol {Files and Classes} > \uicontrol Modeling > + \uicontrol {State Chart} > \uicontrol Choose to create an empty + state chart and to open it in the SCXML editor. + + \li Drag and drop a state from the \uicontrol {Common States} view to + the state editor. + + \li Drag and drop child states to the initial state to create a + \e {compound state} or use the tool buttons to create a transition + from the selected state and its target state. + + \li Select a state to edit its attributes in the \uicontrol Attributes + view. + + \li Select the transition line to add edge points to it. + + \li To raise or send events, for example, use the context menu commands + to add executable content to the \c and \c + elements of states or to transitions. + + \endlist + + The following sections describe how to manage states, transitions, and + executable content. + + \section1 Managing States + + When the state machine enters a state in response to an event, the state + that it entered becomes the \e {active state}. + + State charts are hierarchical, and therefore states can be nested inside + other states, to create compound states. + + In addition to basic states, you can create the following types of states: + + \list + + \li \e Initial state is the state the state machine enters when it + starts. + + \li \e {Parallel state} contains child states that execute in parallel + and are all active simultaneously. Events are processed + independently by each child state and may trigger different + transitions for each child. + + \li \e {Final state} enables a state machine to finish. When the state + machine enters a top-level final state, it emits the finished signal + and halts. You can create final states in compound states to hide + the internal details of a compound state. The outside world can only + enter the state and get a notification when the state has finished. + A parallel state finishes when all its child states reach final + states. + + \li \e {History state} is a pseudo-state that represents the child state + the parent state was in the last time the parent state was exited. + + Create a history state as a child of the state for which you want to + record the current child state. When the state machine detects the + presence of such a state at runtime, it automatically records the + current (real) child state when the parent state is exited. A + transition to the history state is in fact a transition to the child + state that the state machine previously saved. The state machine + automatically forwards the transition to the real child state. + + \endlist + + You can add new states to the state chart in the following ways: + + \list + + \li Drag and drop states from the \uicontrol {Common States} view to the + state editor. + + \li Select a state in the state editor, and then select the + \uicontrol State tool button to create a transition and its target + state. + + \li Copy and paste states within the SCXML editor or between the SCXML + editor and the \uicontrol Edit mode. + + \endlist + + You can drag states on top of other states to create compound states, or + you can drag child states out of their parent state. To move child states + within their parent, press down the \key Ctrl key while moving them. + + You can use toolbar buttons to align states in the state editor, to adjust + their size, and to change the default color scheme. Overlapping states are + marked in red color. + + To expand or collapse the state tree structure in the \uicontrol Structure + view, double-click a state. + + To view a child state of a nested state in more detail in the state editor, + select \uicontrol {Zoom to State}. + + To ensure that the state ids are unique within a compound state machine, + select \inlineimage fullnamespace.png + (\uicontrol {Toggle Full Namespace}). The name of the parent state is + added to the names of the child states, separated by two colons (::). + For example: + + \badcode + + ... + + ... + + + ... + + + \endcode + + \section1 Managing Transitions + + Transitions define how a state reacts to \e events that are generated either + by the state machine or external entities. When events occur, the state + machine checks for a matching transition defined in the active state and + moves to its target state. + + To create a transition from the selected state to a new state, drag and + release the mouse at the location where you want to add the target state. + When you draw a transition to the center of another state, it points to the + center of the state, but you can also draw a transition to the edge of the + state. + + To add edge points to transitions, select a transition line. Only two edge + points are permitted for each line, and unnecessary edge points are removed + automatically. To remove the selected edge point, select + \uicontrol {Remove Point} in the context menu. + + To add new edge points with a mouse click, select the \uicontrol Transition + tool button. + + A transition label is automatically center-aligned, but you can drag it to + another position. + + To remove the selected transition, select \uicontrol Remove in the context + menu. + + \section1 Adding Executable Content + + You can add \e {executable content} to a state chart to enable the state + machine to modify its data model and to interact with external entities. + + Use the context menu commands to add executable content to the \c + and \c elements or to transitions: + + \list + \li \c to raise events + \li \c to communicate with external entities + \li \c