add Go support
authorSergey Karashevich <sergey.karashevich@jetbrains.com>
Wed, 25 Oct 2017 23:04:31 +0000 (02:04 +0300)
committerintellij-monorepo-bot <intellij-monorepo-bot-no-reply@jetbrains.com>
Thu, 14 Nov 2019 22:34:47 +0000 (22:34 +0000)
GitOrigin-RevId: f03d42f56447968eb43833839642d3623a10776f

59 files changed:
ide-features-trainer/.idea/libraries/jdom_jdom_1_1.xml [new file with mode: 0644]
ide-features-trainer/.idea/modules.xml [new file with mode: 0644]
ide-features-trainer/.idea/modules/training.iml [new file with mode: 0644]
ide-features-trainer/.idea/modules/training_main.iml [new file with mode: 0644]
ide-features-trainer/.idea/modules/training_test.iml [new file with mode: 0644]
ide-features-trainer/build.gradle
ide-features-trainer/res/META-INF/go-deps.xml [new file with mode: 0644]
ide-features-trainer/res/data/modules.xml
ide-features-trainer/res/data/modules/go/EditorBasics.xml [new file with mode: 0644]
ide-features-trainer/res/data/modules/go/EditorBasics/02.Comment.xml [new file with mode: 0644]
ide-features-trainer/res/data/modules/java/CodeAssistance.xml [moved from ide-features-trainer/res/data/modules/CodeAssistance.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/CodeAssistance/01.Folding.xml [moved from ide-features-trainer/res/data/modules/CodeAssistance/01.Folding.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/CodeAssistance/02.CodeFormat.xml [moved from ide-features-trainer/res/data/modules/CodeAssistance/02.CodeFormat.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/CodeAssistance/03.ParameterInfo.xml [moved from ide-features-trainer/res/data/modules/CodeAssistance/03.ParameterInfo.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/CodeAssistance/04.QuickPopups.xml [moved from ide-features-trainer/res/data/modules/CodeAssistance/04.QuickPopups.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/CodeAssistance/05.EditorCodingAssistance.xml [moved from ide-features-trainer/res/data/modules/CodeAssistance/05.EditorCodingAssistance.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Completions.xml [moved from ide-features-trainer/res/data/modules/Completions.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Completions/01.Basic Completion.xml [moved from ide-features-trainer/res/data/modules/Completions/01.Basic Completion.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Completions/02.Smart Type Completion.xml [moved from ide-features-trainer/res/data/modules/Completions/02.Smart Type Completion.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Completions/03.Postfix Completion.xml [moved from ide-features-trainer/res/data/modules/Completions/03.Postfix Completion.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Completions/04.StatementCompletion.xml [moved from ide-features-trainer/res/data/modules/Completions/04.StatementCompletion.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Completions/05.CompletionWithTab.xml [moved from ide-features-trainer/res/data/modules/Completions/05.CompletionWithTab.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/EditorBasics.xml [moved from ide-features-trainer/res/data/modules/EditorBasics.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/EditorBasics/01.Select.xml [moved from ide-features-trainer/res/data/modules/EditorBasics/01.Select.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/EditorBasics/02.Comment.xml [moved from ide-features-trainer/res/data/modules/EditorBasics/02.Comment.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/EditorBasics/03.Delete.xml [moved from ide-features-trainer/res/data/modules/EditorBasics/03.Delete.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/EditorBasics/04.Duplicate.xml [moved from ide-features-trainer/res/data/modules/EditorBasics/04.Duplicate.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/EditorBasics/05.Move.xml [moved from ide-features-trainer/res/data/modules/EditorBasics/05.Move.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/EditorBasics/06.Collapse.xml [moved from ide-features-trainer/res/data/modules/EditorBasics/06.Collapse.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/EditorBasics/07.MultipleSelections.xml [moved from ide-features-trainer/res/data/modules/EditorBasics/07.MultipleSelections.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/EditorBasics/Python/01.Select.xml [moved from ide-features-trainer/res/data/modules/EditorBasics/Python/01.Select.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Loops.xml [moved from ide-features-trainer/res/data/modules/Loops.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Loops/01.For.xml [moved from ide-features-trainer/res/data/modules/Loops/01.For.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Navigation.xml [moved from ide-features-trainer/res/data/modules/Navigation.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Navigation/01.JumpToSource.xml [moved from ide-features-trainer/res/data/modules/Navigation/01.JumpToSource.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Navigation/02.Declaration.xml [moved from ide-features-trainer/res/data/modules/Navigation/02.Declaration.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Navigation/03.FileStructure.xml [moved from ide-features-trainer/res/data/modules/Navigation/03.FileStructure.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Navigation/04.Occurrences.xml [moved from ide-features-trainer/res/data/modules/Navigation/04.Occurrences.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Refactorings.xml [moved from ide-features-trainer/res/data/modules/Refactorings.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Refactorings/01.Rename.xml [moved from ide-features-trainer/res/data/modules/Refactorings/01.Rename.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Refactorings/02.Extract Variable.xml [moved from ide-features-trainer/res/data/modules/Refactorings/02.Extract Variable.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Refactorings/03.Extract Method.xml [moved from ide-features-trainer/res/data/modules/Refactorings/03.Extract Method.xml with 100% similarity]
ide-features-trainer/res/data/modules/java/Refactorings/04.RefactoringBasics.xml [moved from ide-features-trainer/res/data/modules/Refactorings/04.RefactoringBasics.xml with 100% similarity]
ide-features-trainer/res/learnProjects/go/LearnProject/.idea/LearnProject.iml [new file with mode: 0644]
ide-features-trainer/res/learnProjects/go/LearnProject/.idea/modules.xml [new file with mode: 0644]
ide-features-trainer/res/learnProjects/go/LearnProject/Main.go [new file with mode: 0644]
ide-features-trainer/src/training/actions/OpenLessonAction.kt
ide-features-trainer/src/training/check/CheckCountGoCommentedLine.java [new file with mode: 0644]
ide-features-trainer/src/training/check/CheckCountGoCommentedLines.java [new file with mode: 0644]
ide-features-trainer/src/training/lang/AbstractLangSupport.kt
ide-features-trainer/src/training/lang/GoLangSupport.kt [new file with mode: 0644]
ide-features-trainer/src/training/lang/PythonLangSupport.kt
ide-features-trainer/src/training/learn/CourseManager.kt
ide-features-trainer/src/training/learn/Module.kt
ide-features-trainer/src/training/learn/NewLearnProjectUtil.kt
ide-features-trainer/src/training/learn/lesson/Lesson.kt
ide-features-trainer/src/training/learn/lesson/LessonManager.kt
ide-features-trainer/src/training/migration/MigrationAgent074.kt
ide-features-trainer/src/training/util/GenModuleXml.java

diff --git a/ide-features-trainer/.idea/libraries/jdom_jdom_1_1.xml b/ide-features-trainer/.idea/libraries/jdom_jdom_1_1.xml
new file mode 100644 (file)
index 0000000..c0114ae
--- /dev/null
@@ -0,0 +1,10 @@
+<component name="libraryTable">
+  <library name="jdom:jdom:1.1" type="repository">
+    <properties maven-id="jdom:jdom:1.1" />
+    <CLASSES>
+      <root url="jar://$MAVEN_REPOSITORY$/org/jdom/jdom/1.1/jdom-1.1.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
diff --git a/ide-features-trainer/.idea/modules.xml b/ide-features-trainer/.idea/modules.xml
new file mode 100644 (file)
index 0000000..022668e
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/training.iml" filepath="$PROJECT_DIR$/.idea/modules/training.iml" />
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/training_main.iml" filepath="$PROJECT_DIR$/.idea/modules/training_main.iml" group="training" />
+      <module fileurl="file://$PROJECT_DIR$/.idea/modules/training_test.iml" filepath="$PROJECT_DIR$/.idea/modules/training_test.iml" group="training" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/ide-features-trainer/.idea/modules/training.iml b/ide-features-trainer/.idea/modules/training.iml
new file mode 100644 (file)
index 0000000..d14275d
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id="training" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="org.sk" external.system.module.version="0.8.SNAPSHOT" type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$/../..">
+      <excludeFolder url="file://$MODULE_DIR$/../../.gradle" />
+      <excludeFolder url="file://$MODULE_DIR$/../../build" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/ide-features-trainer/.idea/modules/training_main.iml b/ide-features-trainer/.idea/modules/training_main.iml
new file mode 100644 (file)
index 0000000..a765651
--- /dev/null
@@ -0,0 +1,234 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id="training:main" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="org.sk" external.system.module.type="sourceSet" external.system.module.version="0.8.SNAPSHOT" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="kotlin-language" name="Kotlin">
+      <configuration version="2" platform="JVM 1.6" useProjectSettings="false">
+        <compilerSettings />
+        <compilerArguments>
+          <option name="languageVersion" value="1.0" />
+          <option name="apiVersion" value="1.0" />
+          <option name="pluginOptions">
+            <array />
+          </option>
+          <option name="pluginClasspaths">
+            <array />
+          </option>
+          <option name="version" value="true" />
+          <option name="coroutinesWarn" value="true" />
+        </compilerArguments>
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
+    <output url="file://$MODULE_DIR$/../../out/production/classes" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$/../../res">
+      <sourceFolder url="file://$MODULE_DIR$/../../res" type="java-resource" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../src">
+      <sourceFolder url="file://$MODULE_DIR$/../../src" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/../../src/main/java" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/../../src/main/kotlin" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/../../src/main/resources" type="java-resource" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.4" level="project" />
+    <orderEntry type="module-library" scope="RUNTIME">
+      <library>
+        <CLASSES>
+          <root url="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_112.jbsdk/Contents/Home/lib/tools.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="library" name="Gradle: org.jetbrains:annotations:13.0" level="project" />
+    <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.4" level="project" />
+    <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.1.4" level="project" />
+    <orderEntry type="module-library" scope="PROVIDED">
+      <library name="Gradle: com.jetbrains:ideaIU:173.2941.3">
+        <CLASSES>
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/aether-1.1.0-all.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/aether-dependency-resolver.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/alloy.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/annotations.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/asm-5.0.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/asm-all.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/asm-analysis-5.0.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/asm-tree-5.0.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/automaton.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/batik-all.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/bcprov-jdk15on-155.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/boot.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/bootstrap.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/cglib-nodep-3.2.4.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/cli-parser-1.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/clojure-1.8.0.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/clojure-jsr223-1.5.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/cloud-config-client.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/common-image-3.2.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/common-io-3.2.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/common-lang-3.2.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/commons-codec-1.9.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/commons-compress-1.10.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/commons-httpclient-3.1-patched.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/commons-imaging-1.0-SNAPSHOT.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/commons-logging-1.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/commons-net-3.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/constraint-layout.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/coverage-agent.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/coverage-instrumenter.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/coverage-util.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/ecj-4.6.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/extensions.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/external-system-rt.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/fest-assert-1.5.0-SNAPSHOT.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/fest-reflect-2.0-SNAPSHOT.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/fest-swing-1.4.1-SNAPSHOT.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/fest-util-1.3.0-SNAPSHOT.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/fluent-hc-4.5.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/forms_rt.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/google-analytics-library.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/groovy-all-2.4.12.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/gson-2.8.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/guava-21.0.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/hamcrest-core-1.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/httpclient-4.5.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/httpcore-4.4.5.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/httpmime-4.5.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/icons.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/idea-jsp-openapi.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/idea.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/idea_rt.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/ideax.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/imageio-core-3.2.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/imageio-metadata-3.2.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/imageio-tiff-3.2.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/imgscalr-lib-4.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/ini4j-0.5.2-patched.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/isorelax.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jasper21_rt.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jasper2_rt.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/javac2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jaxen-1.1.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jayatana-1.2.4.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jcip-annotations.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jdkAnnotations.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jdom.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jediterm-pty-2.5.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jettison-1.3.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jgoodies-common-1.2.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jgoodies-forms.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jgoodies-looks-2.4.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jh.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jimfs-1.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jing.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jna-platform.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jna.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jps-builders-6.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jps-builders.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jps-launcher.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jps-model.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsch-0.1.54.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsch.agentproxy.connector-factory.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsch.agentproxy.core.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsch.agentproxy.jsch.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsch.agentproxy.pageant.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsch.agentproxy.sshagent.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsch.agentproxy.usocket-jna.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsch.agentproxy.usocket-nc.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jshell-frontend.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jshell-protocol.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsp-api.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsr173_1.0_api.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsr305.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/junit-4.12.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/junit.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jzlib-1.1.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/log4j.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/lz4-java-1.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/markdown4j-2.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/markdownj-core-0.4.2-SNAPSHOT.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/maven-aether-provider-3.3.9-all.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/microba.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/miglayout-core-5.0.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/miglayout-swing-5.0.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/MultithreadedTC-1.01.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/nanoxml-2.2.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/nekohtml-1.9.14.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/netty-all-4.1.13.Final.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/openapi.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/optimizedFileManager.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/oromatcher.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/picocontainer.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/protobuf-2.5.0.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/proxy-vole-1.0.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/pty4j-0.7.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/purejavacomm.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/resolver.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/resources.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/resources_en.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/rhino-js-1_7R4.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/rngom-20051226-patched.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/serviceMessages.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/servlet-api.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/slf4j-api-1.7.10.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/slf4j-log4j12-1.7.10.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/snakeyaml-1.17.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/snappy-in-java-0.5.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/sqlite-jdbc-3.16.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/streamex-0.6.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/studio-profiler-grpc-1.0-jarjar.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/swingx-core-1.6.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/trang-core.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/trilead-ssh2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/trove4j.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/util.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/velocity.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/wadl-core.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/winp-1.23.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/xbean.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/xercesImpl.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/xml-apis-ext.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/xmlgraphics-commons-1.5.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/xmlrpc-2.0.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/xpp3-1.1.4-min.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/xstream-1.4.8.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/xz-1.5.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/yjp-controller-api-redist.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES>
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIC/173.2941.3/75e511420d9e31ff3e773bb09d3d75c950ea9b9/ideaIC-173.2941.3-sources.jar!/" />
+        </SOURCES>
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library" scope="PROVIDED">
+      <library name="Gradle: org.jetbrains.plugins:org.jetbrains.plugins.go:173.2941.3.439">
+        <CLASSES>
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-master-173.2941.3.439/intellij-go/lib/google-app-engine.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-master-173.2941.3.439/intellij-go/lib/intellij-go-173.2941.3.439.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-master-173.2941.3.439/intellij-go/lib/plan9.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-master-173.2941.3.439/intellij-go/lib/utils.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library" scope="PROVIDED">
+      <library name="Gradle: org.jetbrains.plugins:Pythonid:2017.3.173.2941.9">
+        <CLASSES>
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/Pythonid-master-2017.3.173.2941.9/python/lib/commons-io-2.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/Pythonid-master-2017.3.173.2941.9/python/lib/commons-lang-2.6.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/Pythonid-master-2017.3.173.2941.9/python/lib/java_websocket.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/Pythonid-master-2017.3.173.2941.9/python/lib/jsoup-1.10.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/Pythonid-master-2017.3.173.2941.9/python/lib/libthrift-0.9.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/Pythonid-master-2017.3.173.2941.9/python/lib/python.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+  </component>
+</module>
\ No newline at end of file
diff --git a/ide-features-trainer/.idea/modules/training_test.iml b/ide-features-trainer/.idea/modules/training_test.iml
new file mode 100644 (file)
index 0000000..aa6ae7b
--- /dev/null
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.id="training:test" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="org.sk" external.system.module.type="sourceSet" external.system.module.version="0.8.SNAPSHOT" type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="kotlin-language" name="Kotlin">
+      <configuration version="2" platform="JVM 1.6" useProjectSettings="false">
+        <compilerSettings />
+        <compilerArguments>
+          <option name="languageVersion" value="1.0" />
+          <option name="apiVersion" value="1.0" />
+          <option name="pluginOptions">
+            <array />
+          </option>
+          <option name="pluginClasspaths">
+            <array />
+          </option>
+          <option name="coroutinesWarn" value="true" />
+        </compilerArguments>
+      </configuration>
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
+    <output-test url="file://$MODULE_DIR$/../../out/test/classes" />
+    <exclude-output />
+    <content url="file://$MODULE_DIR$/../../src/test">
+      <sourceFolder url="file://$MODULE_DIR$/../../src/test/java" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/../../src/test/kotlin" isTestSource="true" />
+      <sourceFolder url="file://$MODULE_DIR$/../../src/test/resources" type="java-test-resource" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../tests">
+      <sourceFolder url="file://$MODULE_DIR$/../../tests" isTestSource="true" />
+    </content>
+    <content url="file://$MODULE_DIR$/../../testsData">
+      <sourceFolder url="file://$MODULE_DIR$/../../testsData" isTestSource="true" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module" module-name="training_main" />
+    <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.4" level="project" />
+    <orderEntry type="module-library">
+      <library name="Gradle: com.jetbrains:ideaIU:173.2941.3">
+        <CLASSES>
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/aether-1.1.0-all.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/aether-dependency-resolver.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/alloy.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/annotations.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/asm-5.0.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/asm-all.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/asm-analysis-5.0.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/asm-tree-5.0.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/automaton.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/batik-all.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/bcprov-jdk15on-155.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/boot.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/bootstrap.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/cglib-nodep-3.2.4.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/cli-parser-1.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/clojure-1.8.0.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/clojure-jsr223-1.5.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/cloud-config-client.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/common-image-3.2.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/common-io-3.2.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/common-lang-3.2.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/commons-codec-1.9.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/commons-compress-1.10.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/commons-httpclient-3.1-patched.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/commons-imaging-1.0-SNAPSHOT.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/commons-logging-1.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/commons-net-3.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/constraint-layout.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/coverage-agent.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/coverage-instrumenter.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/coverage-util.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/ecj-4.6.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/extensions.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/external-system-rt.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/fest-assert-1.5.0-SNAPSHOT.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/fest-reflect-2.0-SNAPSHOT.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/fest-swing-1.4.1-SNAPSHOT.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/fest-util-1.3.0-SNAPSHOT.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/fluent-hc-4.5.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/forms_rt.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/google-analytics-library.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/groovy-all-2.4.12.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/gson-2.8.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/guava-21.0.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/hamcrest-core-1.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/httpclient-4.5.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/httpcore-4.4.5.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/httpmime-4.5.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/icons.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/idea-jsp-openapi.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/idea.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/idea_rt.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/ideax.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/imageio-core-3.2.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/imageio-metadata-3.2.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/imageio-tiff-3.2.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/imgscalr-lib-4.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/ini4j-0.5.2-patched.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/isorelax.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jasper21_rt.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jasper2_rt.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/javac2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jaxen-1.1.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jayatana-1.2.4.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jcip-annotations.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jdkAnnotations.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jdom.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jediterm-pty-2.5.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jettison-1.3.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jgoodies-common-1.2.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jgoodies-forms.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jgoodies-looks-2.4.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jh.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jimfs-1.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jing.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jna-platform.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jna.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jps-builders-6.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jps-builders.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jps-launcher.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jps-model.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsch-0.1.54.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsch.agentproxy.connector-factory.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsch.agentproxy.core.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsch.agentproxy.jsch.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsch.agentproxy.pageant.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsch.agentproxy.sshagent.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsch.agentproxy.usocket-jna.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsch.agentproxy.usocket-nc.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jshell-frontend.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jshell-protocol.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsp-api.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsr173_1.0_api.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jsr305.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/junit-4.12.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/junit.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/jzlib-1.1.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/log4j.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/lz4-java-1.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/markdown4j-2.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/markdownj-core-0.4.2-SNAPSHOT.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/maven-aether-provider-3.3.9-all.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/microba.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/miglayout-core-5.0.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/miglayout-swing-5.0.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/MultithreadedTC-1.01.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/nanoxml-2.2.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/nekohtml-1.9.14.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/netty-all-4.1.13.Final.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/openapi.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/optimizedFileManager.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/oromatcher.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/picocontainer.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/protobuf-2.5.0.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/proxy-vole-1.0.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/pty4j-0.7.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/purejavacomm.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/resolver.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/resources.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/resources_en.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/rhino-js-1_7R4.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/rngom-20051226-patched.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/serviceMessages.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/servlet-api.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/slf4j-api-1.7.10.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/slf4j-log4j12-1.7.10.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/snakeyaml-1.17.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/snappy-in-java-0.5.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/sqlite-jdbc-3.16.1.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/streamex-0.6.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/studio-profiler-grpc-1.0-jarjar.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/swingx-core-1.6.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/trang-core.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/trilead-ssh2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/trove4j.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/util.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/velocity.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/wadl-core.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/winp-1.23.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/xbean.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/xercesImpl.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/xml-apis-ext.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/xmlgraphics-commons-1.5.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/xmlrpc-2.0.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/xpp3-1.1.4-min.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/xstream-1.4.8.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/xz-1.5.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/173.2941.3/de81805301e5321fa90b8364c54d2982808d1467/ideaIU-173.2941.3/lib/yjp-controller-api-redist.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES>
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIC/173.2941.3/75e511420d9e31ff3e773bb09d3d75c950ea9b9/ideaIC-173.2941.3-sources.jar!/" />
+        </SOURCES>
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library" scope="RUNTIME">
+      <library>
+        <CLASSES>
+          <root url="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_112.jbsdk/Contents/Home/lib/tools.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="library" name="Gradle: org.jetbrains:annotations:13.0" level="project" />
+    <orderEntry type="library" name="Gradle: org.hamcrest:hamcrest-core:1.3" level="project" />
+    <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.4" level="project" />
+    <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.1.4" level="project" />
+    <orderEntry type="library" name="Gradle: junit:junit:4.11" level="project" />
+    <orderEntry type="module-library">
+      <library name="Gradle: org.jetbrains.plugins:org.jetbrains.plugins.go:173.2941.3.439">
+        <CLASSES>
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-master-173.2941.3.439/intellij-go/lib/google-app-engine.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-master-173.2941.3.439/intellij-go/lib/intellij-go-173.2941.3.439.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-master-173.2941.3.439/intellij-go/lib/plan9.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-master-173.2941.3.439/intellij-go/lib/utils.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+    <orderEntry type="module-library">
+      <library name="Gradle: org.jetbrains.plugins:Pythonid:2017.3.173.2941.9">
+        <CLASSES>
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/Pythonid-master-2017.3.173.2941.9/python/lib/commons-io-2.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/Pythonid-master-2017.3.173.2941.9/python/lib/commons-lang-2.6.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/Pythonid-master-2017.3.173.2941.9/python/lib/java_websocket.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/Pythonid-master-2017.3.173.2941.9/python/lib/jsoup-1.10.3.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/Pythonid-master-2017.3.173.2941.9/python/lib/libthrift-0.9.2.jar!/" />
+          <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/Pythonid-master-2017.3.173.2941.9/python/lib/python.jar!/" />
+        </CLASSES>
+        <JAVADOC />
+        <SOURCES />
+      </library>
+    </orderEntry>
+  </component>
+  <component name="TestModuleProperties" production-module="training_main" />
+</module>
\ No newline at end of file
index da7ef480957b53a4962162c9ae8e4eea2b25026b..da2d77136a0b3eb0871467d26c0e3438e9aaae0e 100644 (file)
@@ -13,7 +13,7 @@ buildscript {
 
 
 plugins {
-    id "org.jetbrains.intellij" version "0.2.13"
+    id "org.jetbrains.intellij" version "0.2.17"
 }
 
 repositories {
@@ -21,13 +21,11 @@ repositories {
     mavenCentral()
     jcenter()
     maven { url "http://repository.jetbrains.com/repo/"}
-//    maven { url "http://dl.bintray.com/jonnyzzz/maven" }
 }
 
 dependencies {
     testCompile group: 'junit', name: 'junit', version: '4.11'
     compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
-//    compile "org.jonnyzzz.kotlin.xml.bind:jdom:0.1.9"
 }
 
 group 'org.sk'
@@ -39,17 +37,13 @@ apply plugin: "kotlin"
 sourceCompatibility = 1.8
 
 intellij {
-    localPath '/Users/jetbrains/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-1/171.4694.23/IntelliJ IDEA.app'
-    plugins = ['Pythonid:2017.1.171.4694.26']
-//    localPath '/Users/jetbrains/Library/Application Support/JetBrains/Toolbox/apps/PyCharm-C/ch-0/171.4694.38/PyCharm CE.app'
-//    plugins = ['Pythonid']
-//    plugins = ['Pythonid:2017.1.171.3691.19']
-//    updateSinceUntilBuild = false
+    version 'IU-173.2941.3'
+    plugins = ['Pythonid:2017.3.173.2941.9', 'org.jetbrains.plugins.go:173.2941.3.439']
 //    publish {
 //        username repoUser
 //        password repoPassword
 //    }
-    intellij.updateSinceUntilBuild = false
+//    intellij.updateSinceUntilBuild = false
 }
 
 sourceSets {
diff --git a/ide-features-trainer/res/META-INF/go-deps.xml b/ide-features-trainer/res/META-INF/go-deps.xml
new file mode 100644 (file)
index 0000000..949fd35
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+
+<idea-plugin>
+    <extensions defaultExtensionNs="training">
+        <TrainingLangExtension language="go" implementationClass="training.lang.GoLangSupport"/>
+    </extensions>
+</idea-plugin>
index 7b28808e2a30e714110e877e5d6df3843af4ee2e..70b511044acc10e215bee7bd9aabee0c34771e74 100644 (file)
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <modules>
-    <module name="modules/EditorBasics.xml"/>
-    <module name="modules/Completions.xml"/>
-    <module name="modules/Refactorings.xml"/>
-    <module name="modules/CodeAssistance.xml"/>
-    <module name="modules/Navigation.xml"/>
+    <module name="modules/java/EditorBasics.xml"/>
+    <module name="modules/go/EditorBasics.xml"/>
+    <module name="modules/java/Completions.xml"/>
+    <module name="modules/java/Refactorings.xml"/>
+    <module name="modules/java/CodeAssistance.xml"/>
+    <module name="modules/java/Navigation.xml"/>
     <!--<module name="modules/Loops.xml"/>-->
 </modules>
 
diff --git a/ide-features-trainer/res/data/modules/go/EditorBasics.xml b/ide-features-trainer/res/data/modules/go/EditorBasics.xml
new file mode 100644 (file)
index 0000000..50a823e
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module name="Editor Basics" lessonsPath="EditorBasics/" version="0.3" id="basics" fileType="SCRATCH"  description="Learn how to select, comment, delete, duplicate and move lines. And also how to move and collapse blocks of code">
+  <lesson filename="02.Comment.xml" lang="GO"/>
+  <!--<lesson filename="ObjC/01.Select.xml" lang="OCLanguage"/> -->
+</module>
\ No newline at end of file
diff --git a/ide-features-trainer/res/data/modules/go/EditorBasics/02.Comment.xml b/ide-features-trainer/res/data/modules/go/EditorBasics/02.Comment.xml
new file mode 100644 (file)
index 0000000..8b2a292
--- /dev/null
@@ -0,0 +1,16 @@
+<xml type="Scenario" name="Comment Line" id="EditorBasics.CommentLine" subtype="aimless" projectTree="hide" lang="go">
+    <MouseBlock>
+        <CopyText><![CDATA[package main
+
+import "fmt"
+
+func main() {
+       fmt.Println("hello world")
+}]]></CopyText>
+    </MouseBlock>
+    <MoveCaret position="3:1"/>
+    <Try action="CommentByLineComment" trigger="CommentByLineComment">Comment out any line with <action>CommentByLineComment</action></Try>
+    <Try check="training.check.CheckCountGoCommentedLine" action="CommentByLineComment" trigger="CommentByLineComment">Uncomment the commented line with the same shortcut <action>CommentByLineComment</action></Try>
+    <Try check="training.check.CheckCountGoCommentedLines" action="CommentByLineComment" triggers="EditorDownWithSelection;CommentByLineComment">Select several lines with <action>EditorDownWithSelection</action> and comment with <action>CommentByLineComment</action></Try>
+    <Win/>
+</xml>
\ No newline at end of file
diff --git a/ide-features-trainer/res/learnProjects/go/LearnProject/.idea/LearnProject.iml b/ide-features-trainer/res/learnProjects/go/LearnProject/.idea/LearnProject.iml
new file mode 100644 (file)
index 0000000..5e764c4
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="WEB_MODULE" version="4">
+  <component name="Go" enabled="true" />
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/ide-features-trainer/res/learnProjects/go/LearnProject/.idea/modules.xml b/ide-features-trainer/res/learnProjects/go/LearnProject/.idea/modules.xml
new file mode 100644 (file)
index 0000000..6e7efa6
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/LearnProject.iml" filepath="$PROJECT_DIR$/.idea/LearnProject.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/ide-features-trainer/res/learnProjects/go/LearnProject/Main.go b/ide-features-trainer/res/learnProjects/go/LearnProject/Main.go
new file mode 100644 (file)
index 0000000..da29a2c
--- /dev/null
@@ -0,0 +1,4 @@
+package main
+
+func main() {
+}
index 2a8548afe728c28c3b33e4a70cd0ec2e33cb6c13..fe8a0d627750720d2825a2060d834e653122e3ae 100644 (file)
@@ -1,6 +1,5 @@
 package training.actions
 
-import com.intellij.ide.RecentProjectsManager
 import com.intellij.ide.scratch.ScratchFileService
 import com.intellij.ide.scratch.ScratchRootType
 import com.intellij.openapi.actionSystem.AnAction
@@ -71,7 +70,7 @@ class OpenLessonAction : AnAction() {
       val scratchFileName = "Learning"
       val vf: VirtualFile?
       val learnProject = CourseManager.instance.learnProject
-      if (lesson.module.moduleType == Module.ModuleType.SCRATCH) {
+      if (lesson.module == null || lesson.module!!.moduleType == Module.ModuleType.SCRATCH) {
         CourseManager.instance.checkEnvironment(project)
         vf = getScratchFile(myProject, lesson, scratchFileName)
       } else {
@@ -102,7 +101,7 @@ class OpenLessonAction : AnAction() {
         }
       }
 
-      val currentProject = if (lesson.module.moduleType != Module.ModuleType.SCRATCH) CourseManager.instance.learnProject!! else project
+      val currentProject = if (lesson.module != null && lesson.module!!.moduleType != Module.ModuleType.SCRATCH) CourseManager.instance.learnProject!! else project
       if (vf == null) return  //if user aborts opening lesson in LearnProject or Virtual File couldn't be computed
 
       //open next lesson if current is passed
@@ -114,8 +113,8 @@ class OpenLessonAction : AnAction() {
         override fun lessonNext(lesson: Lesson) {
           if (lesson.module == null) return
 
-          if (lesson.module.hasNotPassedLesson()) {
-            val nextLesson = lesson.module.giveNotPassedAndNotOpenedLesson() ?: throw BadLessonException("Unable to obtain not passed and not opened lessons")
+          if (lesson.module != null && lesson.module!!.hasNotPassedLesson()) {
+            val nextLesson = lesson.module!!.giveNotPassedAndNotOpenedLesson() ?: throw BadLessonException("Unable to obtain not passed and not opened lessons")
             openLesson(currentProject, nextLesson)
           }
         }
@@ -241,7 +240,7 @@ class OpenLessonAction : AnAction() {
         vf = ScratchRootType.getInstance().createScratchFile(project, filename, languageByID, "")
         assert(vf != null)
       }
-      if (lesson.module != null) CourseManager.instance.registerVirtualFile(lesson.module, vf!!)
+      if (lesson.module != null) CourseManager.instance.registerVirtualFile(lesson.module!!, vf!!)
     }
     return vf
   }
@@ -261,6 +260,7 @@ class OpenLessonAction : AnAction() {
   @Throws(IOException::class)
   private fun getFileInLearnProject(lesson: Lesson): VirtualFile {
 
+    if (lesson.module == null) throw Exception("Error: cannot create learning file in project for a lesson (${lesson.name}) without module (or module is null)")
     val function = object : Computable<VirtualFile> {
 
       override fun compute(): VirtualFile {
@@ -272,7 +272,7 @@ class OpenLessonAction : AnAction() {
 
         var fileName = "Test." + extensionFile
         if (lesson.module != null) {
-          fileName = lesson.module.nameWithoutWhitespaces + "." + extensionFile
+          fileName = lesson.module!!.nameWithoutWhitespaces + "." + extensionFile
         }
 
         var lessonVirtualFile: VirtualFile? = null
@@ -296,7 +296,7 @@ class OpenLessonAction : AnAction() {
 
         }
 
-        if (lesson.module != null) CourseManager.instance.registerVirtualFile(lesson.module, lessonVirtualFile!!)
+        if (lesson.module != null) CourseManager.instance.registerVirtualFile(lesson.module!!, lessonVirtualFile!!)
         return lessonVirtualFile!!
       }
     }
@@ -347,13 +347,8 @@ class OpenLessonAction : AnAction() {
     CourseManager.instance.learnProject = myLearnProject
 
     assert(CourseManager.instance.learnProject != null)
-    assert(CourseManager.instance.learnProject!!.projectFile != null)
-    assert(CourseManager.instance.learnProject!!.projectFile!!.parent != null)
-    assert(CourseManager.instance.learnProject!!.projectFile!!.parent.parent != null)
 
     CourseManager.instance.learnProjectPath = CourseManager.instance.learnProject!!.basePath
-    //Hide LearnProject from Recent projects
-    RecentProjectsManager.getInstance().removePath(CourseManager.instance.learnProject!!.presentableUrl)
 
     return myLearnProject
 
diff --git a/ide-features-trainer/src/training/check/CheckCountGoCommentedLine.java b/ide-features-trainer/src/training/check/CheckCountGoCommentedLine.java
new file mode 100644 (file)
index 0000000..c5dab16
--- /dev/null
@@ -0,0 +1,62 @@
+package training.check;
+
+import com.goide.GoParserDefinition;
+import com.intellij.lang.ASTNode;
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.project.Project;
+import com.intellij.psi.PsiDocumentManager;
+import com.intellij.psi.PsiElement;
+
+/**
+ * Created by karashevich on 21/08/15.
+ */
+public class CheckCountGoCommentedLine implements Check{
+
+    Project project;
+    Editor editor;
+    int countComments;
+
+    @Override
+    public void set(Project project, Editor editor) {
+        this.project = project;
+        this.editor = editor;
+    }
+
+    @Override
+    public void before() {
+        countComments = countCommentedLines();
+    }
+
+    @Override
+    public boolean check() {
+        return (countCommentedLines() == 0);
+    }
+
+    @Override
+    public boolean listenAllKeys() {
+        return false;
+    }
+
+    public int countCommentedLines(){
+
+        final PsiElement psiElement = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
+        ASTNode astNode = psiElement.getNode();
+        while (astNode.getTreeParent() != null) {
+            astNode = astNode.getTreeParent();
+        }
+        return calc(astNode.getPsi());
+    }
+
+    private int calc(PsiElement psiElement){
+
+        if (psiElement.getNode().getElementType() == GoParserDefinition.LINE_COMMENT) return 1;
+        else if(psiElement.getChildren().length == 0) return 0;
+        else {
+            int result = 0;
+            for (PsiElement psiChild : psiElement.getChildren()) {
+                result += calc(psiChild);
+            }
+            return result;
+        }
+    }
+}
diff --git a/ide-features-trainer/src/training/check/CheckCountGoCommentedLines.java b/ide-features-trainer/src/training/check/CheckCountGoCommentedLines.java
new file mode 100644 (file)
index 0000000..209aa6a
--- /dev/null
@@ -0,0 +1,62 @@
+package training.check;
+
+import com.goide.GoParserDefinition;
+import com.intellij.lang.ASTNode;
+import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.project.Project;
+import com.intellij.psi.PsiDocumentManager;
+import com.intellij.psi.PsiElement;
+
+/**
+ * Created by karashevich on 21/08/15.
+ */
+public class CheckCountGoCommentedLines implements Check{
+
+    Project project;
+    Editor editor;
+    int countComments;
+
+    @Override
+    public void set(Project project, Editor editor) {
+        this.project = project;
+        this.editor = editor;
+    }
+
+    @Override
+    public void before() {
+        countComments = countCommentedLines();
+    }
+
+    @Override
+    public boolean check() {
+        return countCommentedLines() >= countComments + 2;
+    }
+
+    @Override
+    public boolean listenAllKeys() {
+        return false;
+    }
+
+    public int countCommentedLines(){
+
+        final PsiElement psiElement = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
+        ASTNode astNode = psiElement.getNode();
+        while (astNode.getTreeParent() != null) {
+            astNode = astNode.getTreeParent();
+        }
+        return calc(astNode.getPsi());
+    }
+
+    private int calc(PsiElement psiElement){
+
+        if (psiElement.getNode().getElementType() == GoParserDefinition.LINE_COMMENT) return 1;
+        else if(psiElement.getChildren().length == 0) return 0;
+        else {
+            int result = 0;
+            for (PsiElement psiChild : psiElement.getChildren()) {
+                result += calc(psiChild);
+            }
+            return result;
+        }
+    }
+}
index 4f740088aae6e082cd1d1c97cd6f04ac67738b1b..72fc4afb77a4a41e5060ddb9dd5bc501e8d23bc3 100644 (file)
@@ -44,5 +44,4 @@ abstract class AbstractLangSupport : LangSupport {
     return ToolWindowAnchor.LEFT
   }
 
-
 }
\ No newline at end of file
diff --git a/ide-features-trainer/src/training/lang/GoLangSupport.kt b/ide-features-trainer/src/training/lang/GoLangSupport.kt
new file mode 100644 (file)
index 0000000..5b3b030
--- /dev/null
@@ -0,0 +1,45 @@
+package training.lang
+
+import com.intellij.ide.util.projectWizard.ModuleBuilder
+import com.intellij.openapi.module.ModuleManager
+import com.intellij.openapi.project.Project
+import com.intellij.openapi.projectRoots.Sdk
+import com.intellij.openapi.projectRoots.SdkTypeId
+import training.learn.exceptons.NoJavaModuleException
+import training.project.ProjectUtils
+
+/**
+ * @author Sergey Karashevich
+ */
+class GoLangSupport : AbstractLangSupport() {
+
+  override fun getModuleBuilder(): ModuleBuilder? {
+    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+  }
+
+  override fun importLearnProject(): Project? {
+    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+  }
+
+  private val acceptableLanguages = setOf("go", "html")
+  override fun acceptLang(ext: String) = acceptableLanguages.contains(ext.toLowerCase())
+
+  override val FILE_EXTENSION: String
+    get() = "go"
+
+  override fun applyProjectSdk(project: Project): Unit { }
+
+  override fun applyToProjectAfterConfigure(): (Project) -> Unit = {}
+
+  override fun checkSdkCompatibility(sdk: Sdk, sdkTypeId: SdkTypeId) {}
+
+  @Throws(NoJavaModuleException::class)
+  private fun checkJavaModule(project: Project) = { if (ModuleManager.getInstance(project).modules.isEmpty()) throw NoJavaModuleException() }
+
+  override fun createProject(projectName: String, projectToClose: Project?): Project? {
+    return ProjectUtils.importOrOpenProject("/learnProjects/go/LearnProject", "LearnProject")
+  }
+
+  override fun needToCheckSDK() = false
+
+}
\ No newline at end of file
index 1f2b882b171b3e78b45521dc6d2b352c5ae875a1..934792f4232091cd4cdc5d8f60fbc5a1a8180b77 100644 (file)
@@ -50,13 +50,13 @@ class PythonLangSupport : AbstractLangSupport() {
 
   private fun findOrCreatePySdk(): Sdk {
     //find registered python SDKs
-    var pySdk = ProjectJdkTable.getInstance().allJdks.find { sdk -> sdk.sdkType is PythonSdkType && isNoOlderThan27(sdk)}
+    var pySdk: Sdk? = ProjectJdkTable.getInstance().allJdks.find { sdk -> sdk.sdkType is PythonSdkType && isNoOlderThan27(sdk)}
 
     //register first detected SDK
     if (pySdk == null) {
-      val sdkList = detectPySdks()
+      val sdkList: List<Sdk> = detectPySdks()
       pySdk = sdkList.firstOrNull() ?: throw NoSdkException("Python")
-      ApplicationManager.getApplication().runWriteAction { ProjectJdkTable.getInstance().addJdk(pySdk) }
+      ApplicationManager.getApplication().runWriteAction { ProjectJdkTable.getInstance().addJdk(pySdk!!) }
     }
     return pySdk
   }
index 8e04a8c97eb3a4c36a23ca9d0f04c3a93b9af1da..72281f1664f781658df5d8d0be3170c21a083887 100644 (file)
@@ -20,7 +20,6 @@ import training.learn.exceptons.NoSdkException
 import training.learn.exceptons.OldJdkException
 import training.learn.lesson.Lesson
 import training.util.GenModuleXml
-import training.util.GenModuleXml.MODULE_MODULES_PATH
 import java.util.*
 
 class CourseManager internal constructor() {
@@ -28,7 +27,8 @@ class CourseManager internal constructor() {
   var learnProject: Project? = null
   var learnProjectPath: String? = null
   var mapModuleVirtualFile = HashMap<Module, VirtualFile>()
-  val modules: MutableList<Module> = ArrayList<Module>()
+  var modules: MutableList<Module> = ArrayList<Module>()
+  val modulesId2modules: MutableMap<String, Module> = mutableMapOf()
   val currentProject: Project?
     get() {
       val lastFocusedFrame = IdeFocusManager.getGlobalInstance().lastFocusedFrame ?: return null
@@ -45,10 +45,21 @@ class CourseManager internal constructor() {
     for (element in modulesRoot.children) {
       if (element.name == GenModuleXml.MODULE_TYPE_ATTR) {
         val moduleFilename = element.getAttribute(GenModuleXml.MODULE_NAME_ATTR).value
-        val module = Module.initModule(moduleFilename, MODULE_MODULES_PATH) ?: throw Exception("Unable to init module (is null) from file: $moduleFilename")
+        val module = Module.initModule(moduleFilename) ?: throw Exception("Unable to init module (is null) from file: $moduleFilename")
         modules.add(module)
       }
     }
+    mergeModules()
+  }
+
+  private fun mergeModules() {
+    // leave only uniques Module id
+    modules.forEach { if (it.id != null && !modulesId2modules.keys.contains(it.id!!)) modulesId2modules.put(it.id!!, it) }
+    modules.forEach {
+      val mergedModule = modulesId2modules.get(it.id)
+      it.lessons.forEach { lesson ->  mergedModule!!.addLesson(lesson) }
+    }
+    modules = modulesId2modules.values.toCollection(arrayListOf())
   }
 
   fun getModuleById(id: String): Module? {
index 4b1f2cab7ae01fb70b15a99699a7eed9746c690e..c0eaf3f7ce4426a0dcf2b712aa01c96d8abe6002 100644 (file)
@@ -19,7 +19,7 @@ import java.util.function.Consumer
 /**
  * @author Sergey Karashevich
  */
-class Module(val name: String, val moduleXmlPath: String, val modulesPath: String, private val root: Element) {
+class Module(val name: String, moduleXmlPath: String, private val root: Element) {
 
   val description: String?
 
@@ -28,7 +28,7 @@ class Module(val name: String, val moduleXmlPath: String, val modulesPath: Strin
   }
 
   //used for lessons filtered by LangManger chosen lang
-  var lessons: List<Lesson> = ArrayList<Lesson>()
+  var lessons: MutableList<Lesson> = ArrayList<Lesson>()
   private val allLessons = ArrayList<Lesson>()
   private val moduleUpdateListeners = ArrayList<ModuleUpdateListener>()
 
@@ -53,15 +53,18 @@ class Module(val name: String, val moduleXmlPath: String, val modulesPath: Strin
       fileTypeAttr.toUpperCase() == ModuleType.PROJECT.toString().toUpperCase() -> ModuleType.PROJECT
       else -> throw BadModuleException("Unable to recognise ModuleType (should be SCRATCH or PROJECT)")
     }
-    initLessons()
+    //path where module.xml is located and containing lesson dir
+    val find = Regex("/[^/]*.xml").find(moduleXmlPath) ?: throw BadLessonException("Unable to parse a modules xml from '$moduleXmlPath'")
+    val modulePath = moduleXmlPath.substring(0, find.range.start) + "/"
+    initLessons(modulePath)
   }
 
-  private fun initLessons() {
+  private fun initLessons(modulePath: String) {
 
     if (root.getAttribute(MODULE_LESSONS_PATH_ATTR) != null) {
 
       //retrieve list of xml files inside lessonsPath directory
-      val lessonsPath = modulesPath + root.getAttribute(MODULE_LESSONS_PATH_ATTR).value
+      val lessonsPath = modulePath + root.getAttribute(MODULE_LESSONS_PATH_ATTR).value
 
       for (lessonElement in root.children) {
         if (lessonElement.name != MODULE_LESSON_ELEMENT)
@@ -89,15 +92,20 @@ class Module(val name: String, val moduleXmlPath: String, val modulesPath: Strin
     this.sdkType = mySdkType
   }
 
+  fun addLesson(lesson: Lesson) {
+    if (lessons.any { it.id == lesson.id && it.hashCode() == lesson.hashCode()}) return // do not add lesson twice
+    lesson.module = this
+    lessons.add(lesson)
+  }
 
-  private fun filterLessonsByCurrentLang(): List<Lesson> {
+  private fun filterLessonsByCurrentLang(): MutableList<Lesson> {
     val langManager = LangManager.getInstance()
     if (langManager.isLangUndefined()) return allLessons
     return filterLessonByLang(langManager.getLangSupport())
   }
 
-  fun filterLessonByLang(langSupport: LangSupport): List<Lesson> {
-    return allLessons.filter { langSupport.acceptLang(it.lang) }
+  fun filterLessonByLang(langSupport: LangSupport): MutableList<Lesson> {
+    return allLessons.filter { langSupport.acceptLang(it.lang) }.toMutableList()
   }
 
   fun giveNotPassedLesson(): Lesson? {
@@ -149,7 +157,7 @@ class Module(val name: String, val moduleXmlPath: String, val modulesPath: Strin
   companion object {
 
     @Throws(BadModuleException::class, BadLessonException::class, JDOMException::class, IOException::class, URISyntaxException::class)
-    fun initModule(modulePath: String, modulesHomePath: String): Module? {
+    fun initModule(modulePath: String): Module? {
       //load xml with lessons
 
       //Check DOM with Module
@@ -157,7 +165,7 @@ class Module(val name: String, val moduleXmlPath: String, val modulesPath: Strin
       if (root.getAttribute(GenModuleXml.MODULE_NAME_ATTR) == null) return null
       val name = root.getAttribute(GenModuleXml.MODULE_NAME_ATTR).value
 
-      return Module(name, modulePath, modulesHomePath, root)
+      return Module(name, modulePath, root)
 
     }
 
index a3da7c00229a7167975e902d2990463f63f82d99..a4e502a9b3315e2cdafcf8f7c839655aec6b666d 100644 (file)
@@ -5,7 +5,6 @@ import com.intellij.ide.impl.ProjectUtil
 import com.intellij.openapi.application.ApplicationManager
 import com.intellij.openapi.project.Project
 import com.intellij.openapi.project.ex.ProjectManagerEx
-import com.intellij.openapi.util.io.FileUtil
 import com.intellij.openapi.wm.IdeFocusManager
 import com.intellij.openapi.wm.WindowManager
 import com.intellij.openapi.wm.ex.IdeFrameEx
@@ -27,11 +26,10 @@ object NewLearnProjectUtil {
     val allProjectsDir = ProjectUtil.getBaseDir()
     val projectName = langSupport.defaultProjectName
     val projectFilePath = allProjectsDir / projectName
-    val projectDir = File(projectFilePath).parentFile
-
-    FileUtil.ensureExists(projectDir)
-    val ideaDir = File(projectFilePath, Project.DIRECTORY_STORE_FOLDER)
-    FileUtil.ensureExists(ideaDir)
+//    val projectDir = File(projectFilePath).parentFile
+//    FileUtil.ensureExists(projectDir)
+//    val ideaDir = File(projectFilePath, Project.DIRECTORY_STORE_FOLDER)
+//    FileUtil.ensureExists(ideaDir)
 
     val newProject: Project =
         langSupport.createProject(projectName, projectToClose) ?: return projectToClose
@@ -72,5 +70,5 @@ object NewLearnProjectUtil {
 
 //overload div operator as a path separator
 private operator fun String.div(path: String): String? {
-  return this + File.pathSeparator + path
+  return this + File.separatorChar + path
 }
index a5e7b0416c3ef9467fd91297328e84629459e12b..e9457a506748afb9eb6188c86c06b05c01f93bc2 100644 (file)
@@ -17,7 +17,7 @@ import java.util.concurrent.ExecutionException
 /**
  * Created by karashevich on 29/01/15.
  */
-data class Lesson(val scenario: Scenario, val lang: String, val module: Module?) {
+data class Lesson(val scenario: Scenario, val lang: String, var module: Module?) {
 
   var lessonListeners: ArrayList<LessonListener> = ArrayList<LessonListener>()
     private set
index 9ec893e9ca0efa7c4aa6f7a987f29a73bf0daba5..b40ab437c8f65649ac3d126b59ddd68cb8a4971e 100644 (file)
@@ -124,8 +124,8 @@ class LessonManager {
     val learnPanel = UiManager.learnPanel ?: throw Exception("Learn panel is null")
     learnPanel.setLessonPassed()
     val cLesson = myCurrentLesson ?: throw Exception("Current lesson is not defined (is null)")
-    if (cLesson.module != null && cLesson.module.hasNotPassedLesson()) {
-      val notPassedLesson = cLesson.module.giveNotPassedLesson()
+    if (cLesson.module != null && cLesson.module!!.hasNotPassedLesson()) {
+      val notPassedLesson = cLesson.module!!.giveNotPassedLesson()
       learnPanel.setButtonNextAction({
         try {
           CourseManager.instance.openLesson(project, notPassedLesson)
index c8b8cf3c78ed85b06c5c9f3062b4de2dace68324..f63980797e7c1aaac224628df2046887af3ee21a 100644 (file)
@@ -26,6 +26,7 @@ class MigrationAgent074: MigrationManager.MigrationAgent() {
   private fun getFileRoot(): Element? {
     try {
       val xmlFile = getFileForVersion074()
+      if (!xmlFile.exists()) return null
       val inputStream = FileInputStream(xmlFile)
       val builder = SAXBuilder()
       return builder.build(inputStream).document.rootElement ?: throw Exception("Unable to build document from file input stream or root is null")
index a96681cffa2f9f88df75a8161bf14f8b33d42f1b..9100bd513136e50d7c4e310df5f8e701729497f8 100644 (file)
@@ -35,6 +35,7 @@ public class GenModuleXml {
     public final static String MODULE_LESSON_FILENAME_ATTR = "filename";
     public final static String MODULE_LESSON_SOLUTION = "solution";
 
+    @Deprecated
     public static void gen(String moduleName, String id, String path) throws URISyntaxException {
         try {