+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4" />
\ No newline at end of file
+++ /dev/null
-<component name="ProjectDictionaryState">
- <dictionary name="jetbrains">
- <words>
- <w>darcula</w>
- <w>karashevich</w>
- <w>multicaster</w>
- <w>xroot</w>
- </words>
- </dictionary>
-</component>
\ No newline at end of file
+++ /dev/null
-<?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
+++ /dev/null
-<?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" />
- <excludeFolder url="file://$MODULE_DIR$/../../out" />
- </content>
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- </component>
-</module>
\ No newline at end of file
+++ /dev/null
-<?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="3" platform="JVM 1.6" useProjectSettings="false">
- <compilerSettings />
- <compilerArguments>
- <option name="destination" value="$MODULE_DIR$/../../build/kotlin-classes/main" />
- <option name="noStdlib" value="true" />
- <option name="noReflect" value="true" />
- <option name="moduleName" value="training_main" />
- <option name="addCompilerBuiltIns" value="true" />
- <option name="languageVersion" value="1.1" />
- <option name="apiVersion" value="1.1" />
- <option name="pluginOptions">
- <array />
- </option>
- <option name="pluginClasspaths">
- <array />
- </option>
- </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" />
- </content>
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.4-3" level="project" />
- <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-reflect:1.1.4-3" level="project" />
- <orderEntry type="module-library" scope="RUNTIME">
- <library>
- <CLASSES>
- <root url="jar://C:/Program Files/Java/jbsdk8u152b1211_x64/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-3" level="project" />
- <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.1.4-3" level="project" />
- <orderEntry type="module-library" scope="PROVIDED">
- <library name="Gradle: com.jetbrains:ideaIU:182.3458.5">
- <CLASSES>
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/aether-api-1.1.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/aether-connector-basic-1.1.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/aether-dependency-resolver.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/aether-impl-1.1.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/aether-spi-1.1.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/aether-transport-file-1.1.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/aether-transport-http-1.1.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/aether-util-1.1.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/annotations.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/asm-5.0.3.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/asm-all.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/asm-analysis-5.0.3.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/asm-tree-5.0.3.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/automaton-1.12-1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/baksmali-2.2.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/batik-all-1.10.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/bcprov-jdk15on-1.59.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/bootstrap.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/cglib-nodep-3.2.4.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/cli-parser-1.1.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/cloud-config-client.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/common-image-3.3.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/common-io-3.3.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/common-lang-3.3.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-codec-1.10.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-collections-3.2.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-compress-1.16.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-httpclient-3.1-patched.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-imaging-1.0-RC-1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-io-2.6.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-lang-2.4.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-lang3-3.4.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-logging-1.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-net-3.6.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/constraint-layout.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/delight-rhino-sandbox-0.0.6.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/dexlib2-2.2.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/ecj-4.7.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/eddsa-0.2.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/extensions.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/external-system-rt.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/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/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/fest-reflect-2.0-SNAPSHOT.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/fest-swing-1.4.6.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/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/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/fluent-hc-4.5.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/forms-1.1-preview.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/forms_rt.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/fst-2.57.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/groovy-all-2.4.15.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/gson-2.8.4.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/guava-23.6-jre.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/hamcrest-core-1.3.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/httpclient-4.5.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/httpcore-4.4.9.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/httpmime-4.5.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/icons.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/idea-jsp-openapi.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/idea.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/ideax.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/idea_rt.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/imageio-core-3.3.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/imageio-metadata-3.3.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/imageio-tiff-3.3.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/imgscalr-lib-4.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/ini4j-0.5.5-2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/intellij-coverage-agent-1.0.470.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/intellij-test-discovery-agent-1.0.470.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/isorelax-20030108.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jackson-annotations-2.9.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jackson-core-2.9.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jackson-databind-2.9.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jasper21_rt.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jasper2_rt.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/java-api.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/java-impl.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/javac2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/javahelp-2.0.02.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/javassist-3.22.0-GA.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/javax.inject-1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/java_resources_en.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jaxen-1.1.6.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jayatana-1.2.4.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jbcrypt-1.0.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jcip-annotations-1.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jdkAnnotations.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jdom.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jediterm-pty-2.9.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jetCheck.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jettison-1.4.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jgoodies-common-1.4.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jing.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jna-platform.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jna.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jps-builders-6.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jps-builders.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jps-launcher.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jps-model.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsch-0.1.54.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsch.agentproxy.connector-factory.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsch.agentproxy.core.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsch.agentproxy.jsch.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsch.agentproxy.pageant.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsch.agentproxy.sshagent.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsch.agentproxy.usocket-jna.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsch.agentproxy.usocket-nc.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jshell-frontend.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jshell-protocol.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsp-api.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsr305.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/junit-4.12.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/junit.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jzlib-1.1.3.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/kotlin-test.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/kotlinx-coroutines-core-0.22.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/kotlinx-coroutines-jdk8-0.22.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/log4j-1.2.17.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/log4j.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/lz4-1.3.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/markdown4j-2.2-cj-1.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/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/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/maven-aether-provider-3.3.9.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/maven-artifact-3.3.9.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/maven-builder-support-3.3.9.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/maven-model-3.3.9.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/maven-model-builder-3.3.9.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/maven-repository-metadata-3.3.9.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/microba.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/miglayout-core-5.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/miglayout-swing-5.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/MultithreadedTC-1.01.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/nanoxml-2.2.3.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/nekohtml-1.9.22.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/netty-buffer-4.1.25.Final.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/netty-codec-4.1.25.Final.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/netty-codec-http-4.1.25.Final.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/netty-common-4.1.25.Final.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/netty-handler-4.1.25.Final.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/netty-resolver-4.1.25.Final.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/netty-transport-4.1.25.Final.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/objenesis-2.6.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/openapi.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/optimizedFileManager.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/oro-2.0.8.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/picocontainer-1.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/platform-api.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/platform-impl.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/plexus-component-annotations-1.6.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/plexus-interpolation-1.21.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/plexus-utils-3.0.22.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/protobuf-java-3.4.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/proxy-vole-1.0.4.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/pty4j-0.7.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/purejavacomm.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/resources.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/resources_en.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/rhino-1.7.10.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/rngom-20051226-patched.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/serviceMessages.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/servlet-api.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/slf4j-api-1.7.25.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/slf4j-log4j12-1.7.25.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/snakeyaml-1.21.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/sqlite-jdbc-3.21.0.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/stax-api-1.0.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/streamex-0.6.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/swingx-core-1.6.2-2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/trang-core.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/trilead-ssh2-build-217-jenkins-11.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/trove4j.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/util-2.2.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/util.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/velocity-1.7.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/wadl-core.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/winp-1.26.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xercesImpl-2.11.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xml-apis-ext-1.3.04.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xml-resolver-1.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xmlbeans-2.6.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xmlgraphics-commons-2.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xmlpull-1.1.3.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xmlrpc-2.0.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xpp3_min-1.1.4c.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xstream-1.4.10.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xz-1.8.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/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/182.3458.5/3d83bd9e0cdd139fdedc8c7e9dff4b8dfcfb5903/ideaIC-182.3458.5-sources.jar!/" />
- </SOURCES>
- </library>
- </orderEntry>
- <orderEntry type="module-library" scope="PROVIDED">
- <library name="Gradle: org.jetbrains.plugins:Pythonid:2018.2.182.3341.29">
- <CLASSES>
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/Pythonid-2018.2.182.3341.29/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-2018.2.182.3341.29/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-2018.2.182.3341.29/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-2018.2.182.3341.29/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-2018.2.182.3341.29/python/lib/libthrift-0.11.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/Pythonid-2018.2.182.3341.29/python/lib/python.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
- </orderEntry>
- <orderEntry type="module-library" scope="PROVIDED">
- <library name="Gradle: org.jetbrains.plugins:org.jetbrains.plugins.go:182.3458.6.790">
- <CLASSES>
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-182.3458.6.790/intellij-go/lib/go-template-182.3458.6.790.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-182.3458.6.790/intellij-go/lib/go-utils-182.3458.6.790.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-182.3458.6.790/intellij-go/lib/intellij-go-182.3458.6.790.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-182.3458.6.790/intellij-go/lib/plan9-182.3458.6.790.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-182.3458.6.790/intellij-go/lib/toml4j-0.7.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-182.3458.6.790/intellij-go/lib/vgo-182.3458.6.790.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
- </orderEntry>
- </component>
-</module>
\ No newline at end of file
+++ /dev/null
-<?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="3" platform="JVM 1.6" useProjectSettings="false">
- <compilerSettings />
- <compilerArguments>
- <option name="destination" value="$MODULE_DIR$/../../build/kotlin-classes/test" />
- <option name="noStdlib" value="true" />
- <option name="noReflect" value="true" />
- <option name="moduleName" value="training_main" />
- <option name="addCompilerBuiltIns" value="true" />
- <option name="languageVersion" value="1.1" />
- <option name="apiVersion" value="1.1" />
- <option name="pluginOptions">
- <array />
- </option>
- <option name="pluginClasspaths">
- <array />
- </option>
- </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" />
- <content url="file://$MODULE_DIR$/../../tests" />
- <content url="file://$MODULE_DIR$/../../testsData" />
- <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-3" level="project" />
- <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-reflect:1.1.4-3" level="project" />
- <orderEntry type="module-library" scope="RUNTIME">
- <library>
- <JAVADOC />
- <SOURCES />
- </library>
- </orderEntry>
- <orderEntry type="module-library">
- <library name="Gradle: com.jetbrains:ideaIU:182.3458.5">
- <CLASSES>
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/aether-api-1.1.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/aether-connector-basic-1.1.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/aether-dependency-resolver.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/aether-impl-1.1.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/aether-spi-1.1.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/aether-transport-file-1.1.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/aether-transport-http-1.1.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/aether-util-1.1.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/annotations.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/asm-5.0.3.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/asm-all.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/asm-analysis-5.0.3.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/asm-tree-5.0.3.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/automaton-1.12-1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/baksmali-2.2.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/batik-all-1.10.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/bcprov-jdk15on-1.59.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/bootstrap.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/cglib-nodep-3.2.4.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/cli-parser-1.1.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/cloud-config-client.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/common-image-3.3.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/common-io-3.3.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/common-lang-3.3.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-codec-1.10.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-collections-3.2.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-compress-1.16.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-httpclient-3.1-patched.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-imaging-1.0-RC-1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-io-2.6.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-lang-2.4.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-lang3-3.4.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-logging-1.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/commons-net-3.6.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/constraint-layout.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/delight-rhino-sandbox-0.0.6.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/dexlib2-2.2.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/ecj-4.7.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/eddsa-0.2.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/extensions.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/external-system-rt.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/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/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/fest-reflect-2.0-SNAPSHOT.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/fest-swing-1.4.6.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/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/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/fluent-hc-4.5.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/forms-1.1-preview.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/forms_rt.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/fst-2.57.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/groovy-all-2.4.15.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/gson-2.8.4.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/guava-23.6-jre.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/hamcrest-core-1.3.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/httpclient-4.5.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/httpcore-4.4.9.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/httpmime-4.5.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/icons.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/idea-jsp-openapi.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/idea.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/ideax.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/idea_rt.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/imageio-core-3.3.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/imageio-metadata-3.3.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/imageio-tiff-3.3.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/imgscalr-lib-4.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/ini4j-0.5.5-2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/intellij-coverage-agent-1.0.470.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/intellij-test-discovery-agent-1.0.470.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/isorelax-20030108.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jackson-annotations-2.9.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jackson-core-2.9.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jackson-databind-2.9.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jasper21_rt.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jasper2_rt.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/java-api.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/java-impl.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/javac2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/javahelp-2.0.02.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/javassist-3.22.0-GA.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/javax.inject-1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/java_resources_en.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jaxen-1.1.6.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jayatana-1.2.4.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jbcrypt-1.0.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jcip-annotations-1.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jdkAnnotations.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jdom.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jediterm-pty-2.9.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jetCheck.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jettison-1.4.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jgoodies-common-1.4.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jing.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jna-platform.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jna.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jps-builders-6.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jps-builders.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jps-launcher.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jps-model.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsch-0.1.54.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsch.agentproxy.connector-factory.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsch.agentproxy.core.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsch.agentproxy.jsch.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsch.agentproxy.pageant.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsch.agentproxy.sshagent.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsch.agentproxy.usocket-jna.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsch.agentproxy.usocket-nc.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jshell-frontend.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jshell-protocol.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsp-api.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jsr305.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/junit-4.12.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/junit.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/jzlib-1.1.3.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/kotlin-test.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/kotlinx-coroutines-core-0.22.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/kotlinx-coroutines-jdk8-0.22.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/log4j-1.2.17.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/log4j.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/lz4-1.3.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/markdown4j-2.2-cj-1.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/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/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/maven-aether-provider-3.3.9.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/maven-artifact-3.3.9.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/maven-builder-support-3.3.9.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/maven-model-3.3.9.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/maven-model-builder-3.3.9.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/maven-repository-metadata-3.3.9.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/microba.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/miglayout-core-5.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/miglayout-swing-5.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/MultithreadedTC-1.01.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/nanoxml-2.2.3.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/nekohtml-1.9.22.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/netty-buffer-4.1.25.Final.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/netty-codec-4.1.25.Final.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/netty-codec-http-4.1.25.Final.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/netty-common-4.1.25.Final.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/netty-handler-4.1.25.Final.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/netty-resolver-4.1.25.Final.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/netty-transport-4.1.25.Final.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/objenesis-2.6.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/openapi.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/optimizedFileManager.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/oro-2.0.8.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/picocontainer-1.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/platform-api.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/platform-impl.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/plexus-component-annotations-1.6.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/plexus-interpolation-1.21.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/plexus-utils-3.0.22.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/protobuf-java-3.4.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/proxy-vole-1.0.4.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/pty4j-0.7.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/purejavacomm.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/resources.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/resources_en.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/rhino-1.7.10.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/rngom-20051226-patched.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/serviceMessages.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/servlet-api.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/slf4j-api-1.7.25.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/slf4j-log4j12-1.7.25.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/snakeyaml-1.21.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/sqlite-jdbc-3.21.0.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/stax-api-1.0.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/streamex-0.6.5.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/swingx-core-1.6.2-2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/trang-core.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/trilead-ssh2-build-217-jenkins-11.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/trove4j.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/util-2.2.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/util.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/velocity-1.7.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/wadl-core.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/winp-1.26.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xercesImpl-2.11.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xml-apis-ext-1.3.04.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xml-resolver-1.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xmlbeans-2.6.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xmlgraphics-commons-2.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xmlpull-1.1.3.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xmlrpc-2.0.1.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xpp3_min-1.1.4c.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xstream-1.4.10.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/lib/xz-1.8.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/ideaIU/182.3458.5/6cb5a148ead623686894fdcda42690d0dc2d58da/ideaIU-182.3458.5/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/182.3458.5/3d83bd9e0cdd139fdedc8c7e9dff4b8dfcfb5903/ideaIC-182.3458.5-sources.jar!/" />
- </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-3" level="project" />
- <orderEntry type="library" name="Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.1.4-3" level="project" />
- <orderEntry type="library" name="Gradle: junit:junit:4.12" level="project" />
- <orderEntry type="module-library">
- <library name="Gradle: org.jetbrains.plugins:org.jetbrains.plugins.go:182.3458.6.790">
- <CLASSES>
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-182.3458.6.790/intellij-go/lib/go-template-182.3458.6.790.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-182.3458.6.790/intellij-go/lib/go-utils-182.3458.6.790.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-182.3458.6.790/intellij-go/lib/intellij-go-182.3458.6.790.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-182.3458.6.790/intellij-go/lib/plan9-182.3458.6.790.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-182.3458.6.790/intellij-go/lib/toml4j-0.7.2.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/org.jetbrains.plugins.go-182.3458.6.790/intellij-go/lib/vgo-182.3458.6.790.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
- </orderEntry>
- <orderEntry type="module-library">
- <library name="Gradle: org.jetbrains.plugins:Pythonid:2018.2.182.3341.29">
- <CLASSES>
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/Pythonid-2018.2.182.3341.29/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-2018.2.182.3341.29/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-2018.2.182.3341.29/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-2018.2.182.3341.29/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-2018.2.182.3341.29/python/lib/libthrift-0.11.0.jar!/" />
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.jetbrains.intellij.idea/plugins.jetbrains.com/Pythonid-2018.2.182.3341.29/python/lib/python.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
- </orderEntry>
- </component>
- <component name="TestModuleProperties" production-module="training_main" />
-</module>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="Palette2">
- <group name="Swing">
- <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
- </item>
- <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
- </item>
- <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
- </item>
- <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
- <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
- </item>
- <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
- <initial-values>
- <property name="text" value="Button" />
- </initial-values>
- </item>
- <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
- <initial-values>
- <property name="text" value="RadioButton" />
- </initial-values>
- </item>
- <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
- <initial-values>
- <property name="text" value="CheckBox" />
- </initial-values>
- </item>
- <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
- <initial-values>
- <property name="text" value="Label" />
- </initial-values>
- </item>
- <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
- <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
- <preferred-size width="150" height="-1" />
- </default-constraints>
- </item>
- <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
- <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
- <preferred-size width="150" height="-1" />
- </default-constraints>
- </item>
- <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
- <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
- <preferred-size width="150" height="-1" />
- </default-constraints>
- </item>
- <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
- <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
- <preferred-size width="150" height="50" />
- </default-constraints>
- </item>
- <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
- <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
- <preferred-size width="150" height="50" />
- </default-constraints>
- </item>
- <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
- <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
- <preferred-size width="150" height="50" />
- </default-constraints>
- </item>
- <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
- <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
- </item>
- <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
- <preferred-size width="150" height="50" />
- </default-constraints>
- </item>
- <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
- <preferred-size width="150" height="50" />
- </default-constraints>
- </item>
- <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
- <preferred-size width="150" height="50" />
- </default-constraints>
- </item>
- <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
- <preferred-size width="200" height="200" />
- </default-constraints>
- </item>
- <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
- <preferred-size width="200" height="200" />
- </default-constraints>
- </item>
- <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
- <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
- </item>
- <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
- </item>
- <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
- </item>
- <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
- </item>
- <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
- <preferred-size width="-1" height="20" />
- </default-constraints>
- </item>
- <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
- </item>
- <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
- </item>
- </group>
- </component>
-</project>
\ No newline at end of file
-buildscript {
- ext.kotlin_version = '1.1.4-3'
- repositories {
- mavenLocal()
- mavenCentral()
- maven { url "http://repository.jetbrains.com/repo/"}
- }
- dependencies {
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}"
- }
-}
-
-
plugins {
- id "org.jetbrains.intellij" version "0.3.4"
+ id "org.jetbrains.intellij" version "0.3.11"
+ id 'org.jetbrains.kotlin.jvm' version '1.2.61'
}
repositories {
mavenLocal()
mavenCentral()
jcenter()
- maven { url "http://repository.jetbrains.com/repo/"}
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
- compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
- compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
+ compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
+ compile "org.jetbrains.kotlin:kotlin-reflect"
}
group 'org.sk'
version "$version.$buildNumber"
-apply plugin: 'java'
-apply plugin: "kotlin"
-
sourceCompatibility = 1.8
+targetCompatibility = 1.8
intellij {
- version 'IU-182.3458.5'
+ version 'IU-182.5107.41'
//to check compatibility for Python and Go
- plugins = ['Pythonid:2018.2.182.3341.29', 'org.jetbrains.plugins.go:182.3458.6.790']
-// publish {
-// username repoUser
-// password repoPassword
-// }
+ plugins = ['Pythonid:2018.2.182.5107.16', 'org.jetbrains.plugins.go:182.4505.32.913']
intellij.updateSinceUntilBuild = false
}
java.srcDir 'testsData'
}
}
-
-task printVersion << {
- println version
-}
\ No newline at end of file
+kotlin {
+ experimental {
+ coroutines "enable"
+ }
+}
--- /dev/null
+version=0.8
+buildNumber=75
\ No newline at end of file
}
}]]></CopyText>
<MoveCaret position="8:16"/>
- <Try triggers="com.intellij.codeInsight.navigation.actions.GotoDeclarationAction">Use <action>GotoDeclaration</action> to jump to the declaration of a class or interface.</Try>
+ <Try triggers="GotoDeclaration">Use <action>GotoDeclaration</action> to jump to the declaration of a class or interface.</Try>
<MoveCaret position="26:17"/>
<Try triggers="GotoImplementation">To see implementations of a class/interface, use <action>GotoImplementation</action>.</Try>
<Win/>
import training.lang.LangSupport
import training.learn.CourseManager
import training.learn.LearnBundle
-import training.learn.Module
import training.learn.NewLearnProjectUtil
import training.learn.dialogs.AskToSwitchToLearnProjectBackDialog
import training.learn.dialogs.SdkModuleProblemDialog
import training.learn.exceptons.*
-import training.learn.lesson.Lesson
+import training.learn.interfaces.Lesson
+import training.learn.interfaces.ModuleType
+import training.learn.lesson.LessonManager
import training.learn.lesson.LessonProcessor
+import training.learn.lesson.XmlLesson
+import training.learn.lesson.kimpl.KLesson
+import training.learn.lesson.kimpl.LessonContext
import training.learn.lesson.listeners.NextLessonListener
import training.learn.lesson.listeners.StatisticLessonListener
import training.ui.LearnToolWindowFactory
import java.awt.FontFormatException
import java.io.IOException
import java.util.concurrent.ExecutionException
+import kotlin.concurrent.thread
/**
* @author Sergey Karashevich
LOG.debug("${projectWhereToStartLesson.name}: trying to find LearnProject in opened projects ${learnProject != null}")
if (learnProject != null) CourseManager.instance.learnProject = learnProject
- if (lesson.module == null || lesson.module!!.moduleType == Module.ModuleType.SCRATCH) {
+ if (lesson.module == null || lesson.module.moduleType == ModuleType.SCRATCH) {
LOG.debug("${projectWhereToStartLesson.name}: scratch based lesson")
CourseManager.instance.checkEnvironment(projectWhereToStartLesson)
vf = getScratchFile(projectWhereToStartLesson, lesson, scratchFileName)
}
LOG.debug("${projectWhereToStartLesson.name}: VirtualFile for lesson has been created/found")
- val currentProject = if (lesson.module != null && lesson.module!!.moduleType != Module.ModuleType.SCRATCH) CourseManager.instance.learnProject!! else projectWhereToStartLesson
+ val currentProject = if (lesson.module != null && lesson.module.moduleType != ModuleType.SCRATCH) CourseManager.instance.learnProject!! else projectWhereToStartLesson
if (vf == null) return //if user aborts opening lesson in LearnProject or Virtual File couldn't be computed
LOG.debug("${projectWhereToStartLesson.name}: Add listeners to lesson")
//open next lesson if current is passed
LOG.debug("${projectWhereToStartLesson.name}: Set lesson view")
UiManager.setLessonView()
- LOG.debug("${projectWhereToStartLesson.name}: Lesson onStart()")
+ LOG.debug("${projectWhereToStartLesson.name}: XmlLesson onStart()")
lesson.onStart()
//to start any lesson we need to do 4 steps:
//4. Process lesson
LOG.debug("${projectWhereToStartLesson.name}: 4. Process lesson")
- LessonProcessor.process(projectWhereToStartLesson, lesson, textEditor.editor)
+ when (lesson) {
+ is XmlLesson -> LessonProcessor.process(projectWhereToStartLesson, lesson, textEditor.editor)
+ is KLesson -> {
+ LessonManager.getInstance(lesson).initLesson(textEditor.editor)
+ thread(name = "IdeFeaturesTrainer") {
+ lesson.lessonContent(LessonContext(lesson, textEditor!!.editor, project))
+ }
+ }
+ }
} catch (noSdkException: NoSdkException) {
Messages.showMessageDialog(projectWhereToStartLesson, LearnBundle.message("dialog.noSdk.message", LangManager.getInstance().getLanguageDisplayName()), LearnBundle.message("dialog.noSdk.title"), Messages.getErrorIcon())
val languageByID = findLanguageByID(myLanguage)
val extensionFile = languageByID!!.associatedFileType!!.defaultExtension
- var fileName = "Test." + extensionFile
+ var fileName = "Test.$extensionFile"
if (lesson.module != null) {
fileName = lesson.module!!.sanitizedName + "." + extensionFile
}
}
- if (lesson.module != null) CourseManager.instance.registerVirtualFile(lesson.module!!, lessonVirtualFile!!)
+ CourseManager.instance.registerVirtualFile(lesson.module, lessonVirtualFile!!)
return lessonVirtualFile!!
}
}
import com.intellij.openapi.fileEditor.FileEditorManager
import com.intellij.openapi.project.Project
import org.jdom.Element
-import training.learn.lesson.Lesson
+import training.learn.interfaces.Lesson
import java.util.*
/**
package training.commands
+import com.intellij.openapi.application.ApplicationManager
import training.check.Check
import training.keymap.KeymapUtil
import training.learn.ActionsRecorder
import training.learn.lesson.LessonManager
import training.ui.Message
+import java.util.concurrent.CompletableFuture
+import kotlin.concurrent.thread
/**
* Created by karashevich on 30/01/15.
val lesson = executionList.lesson
val editor = executionList.editor
- LessonManager.getInstance(lesson)?.addMessages(Message.convert(element))
+ var checkFuture: CompletableFuture<Boolean>? = null
+ var triggerFuture: CompletableFuture<Boolean>? = null
+
+ LessonManager.getInstance(lesson).addMessages(Message.convert(element))
val recorder = ActionsRecorder(editor.project!!, editor.document)
LessonManager.getInstance(lesson).registerActionsRecorder(recorder)
check = myCheck.newInstance() as Check
check.set(executionList.project, editor)
check.before()
- }
- catch (e: Exception) {
+ checkFuture = recorder.futureCheck { check.check() }
+ } catch (e: Exception) {
e.printStackTrace()
}
}
- if (element.getAttribute("trigger") != null) {
- val actionId = element.getAttribute("trigger")!!.value
- startRecord(executionList, recorder, actionId, check)
- }
- else if (element.getAttribute("triggers") != null) {
- val actionIds = element.getAttribute("triggers")!!.value
- val actionIdArray = actionIds.split(";".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
- startRecord(executionList, recorder, actionIdArray, check)
+ when {
+ element.getAttribute("trigger") != null -> {
+ val actionId = element.getAttribute("trigger")!!.value
+ triggerFuture = recorder.futureAction(actionId)
+ }
+ element.getAttribute("triggers") != null -> {
+ val actionIds = element.getAttribute("triggers")!!.value
+ val listOfActionIds = actionIds.split(";".toRegex()).dropLastWhile { it.isEmpty() }
+ triggerFuture = recorder.futureListActions(listOfActionIds)
+ }
}
- else {
- startRecord(executionList, recorder, check)
+ thread(name = "IdeFeaturesTrainer Result") {
+ checkFuture?.get()
+ triggerFuture?.get()
+ LessonManager.getInstance(lesson).passExercise()
+ ApplicationManager.getApplication().invokeLater { startNextCommand(executionList) }
}
-
- }
-
- @Throws(Exception::class)
- private fun startRecord(executionList: ExecutionList, recorder: ActionsRecorder, check: Check?) {
- recorder.startRecording(getDoWhenDone(executionList), null as Array<String>?, check)
- }
-
- @Throws(Exception::class)
- private fun startRecord(executionList: ExecutionList, recorder: ActionsRecorder, actionId: String, check: Check?) {
- recorder.startRecording(getDoWhenDone(executionList), actionId, check)
- }
-
- @Throws(Exception::class)
- private fun startRecord(executionList: ExecutionList, recorder: ActionsRecorder, actionIdArray: Array<String>, check: Check?) {
- recorder.startRecording(getDoWhenDone(executionList), actionIdArray, check)
-
}
- private fun getDoWhenDone(executionList: ExecutionList): Runnable
- = Runnable { pass(executionList) }
-
- private fun pass(executionList: ExecutionList) {
- val lesson = executionList.lesson
- LessonManager.getInstance(lesson).passExercise()
- val lessonLog = lesson.lessonLog
- lesson.passItem()
- startNextCommand(executionList)
- }
-
-
private fun resolveShortcut(text: String, actionId: String): String {
val shortcutByActionId = KeymapUtil.getShortcutByActionId(actionId)
val shortcutText = KeymapUtil.getKeyStrokeText(shortcutByActionId)
companion object {
fun substitution(text: String, shortcutString: String): String {
- if (text.contains(ActionCommand.SHORTCUT)) {
- return text.replace(ActionCommand.SHORTCUT, shortcutString)
- }
- else {
- return text
+ return if (text.contains(ActionCommand.SHORTCUT)) {
+ text.replace(ActionCommand.SHORTCUT, shortcutString)
+ } else {
+ text
}
}
}
--- /dev/null
+package training.commands.kotlin
+
+import com.intellij.find.FindManager
+import com.intellij.find.FindResult
+import com.intellij.openapi.application.ApplicationManager
+import com.intellij.openapi.application.ModalityState
+import com.intellij.openapi.command.CommandProcessor
+import com.intellij.openapi.command.undo.BasicUndoableAction
+import com.intellij.openapi.command.undo.DocumentReferenceManager
+import com.intellij.openapi.command.undo.UndoManager
+import com.intellij.openapi.editor.Editor
+import com.intellij.openapi.editor.LogicalPosition
+import com.intellij.openapi.editor.ex.EditorGutterComponentEx
+import com.intellij.openapi.project.Project
+import com.intellij.psi.PsiDocumentManager
+import com.intellij.util.DocumentUtil
+import org.jdom.input.SAXBuilder
+import training.learn.ActionsRecorder
+import training.learn.lesson.LessonManager
+import training.ui.Message
+
+/**
+ * Write a text to the learn panel (panel with a learning tasks).
+ */
+fun TaskContext.text(text: String) {
+ val wrappedText = "<root><text>$text</text></root>"
+ val textAsElement = SAXBuilder().build(wrappedText.byteInputStream()).rootElement.getChild("text")
+ LessonManager.getInstance(this.lesson).addMessages(Message.convert(textAsElement)) //support old format
+}
+
+fun TaskContext.copyCode(code: String) {
+ ApplicationManager.getApplication().invokeAndWait {
+ val document = editor.document
+ DocumentUtil.writeInRunUndoTransparentAction {
+ val documentReference = DocumentReferenceManager.getInstance().create(document)
+ UndoManager.getInstance(project).nonundoableActionPerformed(documentReference, false)
+ document.insertString(0, code)
+ }
+ PsiDocumentManager.getInstance(project).commitDocument(document)
+ doUndoableAction(project)
+ updateGutter(editor)
+ }
+}
+
+fun TaskContext.caret(offset: Int) {
+ runInEdt { editor.caretModel.moveToOffset(offset) }
+}
+
+fun TaskContext.caret(line: Int, column: Int) {
+ runInEdt { editor.caretModel.moveToLogicalPosition(LogicalPosition(line - 1, column - 1)) }
+}
+
+fun TaskContext.caret(text: String) {
+ runInEdt {
+ val start = getStartOffsetForText(text, editor, project)
+ editor.caretModel.moveToOffset(start.startOffset)
+ }
+}
+
+fun TaskContext.trigger(actionId: String) {
+ val recorder = ActionsRecorder(project, editor.document)
+ LessonManager.getInstance(lesson).registerActionsRecorder(recorder)
+ this.triggerFutures.add(recorder.futureAction(actionId))
+}
+
+fun TaskContext.triggers(vararg actionIds: String) {
+ val recorder = ActionsRecorder(project, editor.document)
+ LessonManager.getInstance(lesson).registerActionsRecorder(recorder)
+ this.triggerFutures.add(recorder.futureListActions(actionIds.toList()))
+}
+
+
+private fun getStartOffsetForText(text: String, editor: Editor, project: Project): FindResult {
+ val document = editor.document
+
+ val findManager = FindManager.getInstance(project)
+ val model = findManager.findInFileModel.clone()
+ model.isGlobal = false
+ model.isReplaceState = false
+ model.stringToFind = text
+ return FindManager.getInstance(project).findString(document.charsSequence, 0, model)
+}
+
+private fun doUndoableAction(project: Project) {
+ CommandProcessor.getInstance().executeCommand(project, {
+ UndoManager.getInstance(project).undoableActionPerformed(object : BasicUndoableAction() {
+ override fun undo() {}
+ override fun redo() {}
+ })
+ }, null, null)
+}
+
+private fun updateGutter(editor: Editor) {
+ val editorGutterComponentEx = editor.gutter as EditorGutterComponentEx
+ editorGutterComponentEx.revalidateMarkup()
+}
+
+inline fun runInEdt(crossinline runnable: () -> Unit) {
+ val app = ApplicationManager.getApplication()
+ if (app.isDispatchThread) {
+ runnable()
+ } else {
+ app.invokeLater({ runnable() }, ModalityState.defaultModalityState())
+ }
+}
+
+fun action(id: String): String {
+ return "<action>$id</action>"
+}
--- /dev/null
+package training.commands.kotlin
+
+import com.intellij.openapi.editor.Editor
+import com.intellij.openapi.project.Project
+import training.learn.lesson.LessonManager
+import training.learn.lesson.kimpl.KLesson
+import training.learn.lesson.kimpl.LessonContext
+import java.util.concurrent.CompletableFuture
+import kotlin.test.assertTrue
+
+class TaskContext(val taskName: String?, val lesson: KLesson, val editor: Editor, val project: Project) {
+ val checkFutures: MutableList<CompletableFuture<Boolean>> = mutableListOf()
+ val triggerFutures: MutableList<CompletableFuture<Boolean>> = mutableListOf()
+}
+
+/**
+ * Start a new task in a lesson context. Task may have an optional name.
+ */
+fun LessonContext.task(taskName: String? = null, taskContent: TaskContext.() -> Unit) {
+ val taskContext = TaskContext(taskName, this.first, this.second, this.third)
+ taskContext.apply(taskContent)
+ taskContext.checkFutures.forEach { assertTrue(it.get()) }
+ taskContext.triggerFutures.forEach { assertTrue(it.get()) }
+ LessonManager.getInstance(this.first).passExercise()
+}
\ No newline at end of file
import com.intellij.openapi.editor.Document
import com.intellij.openapi.editor.event.DocumentEvent
import com.intellij.openapi.editor.event.DocumentListener
-import com.intellij.openapi.fileEditor.FileEditorManagerEvent
-import com.intellij.openapi.fileEditor.FileEditorManagerListener
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Disposer
-import com.intellij.openapi.util.text.StringUtil
import com.intellij.psi.PsiDocumentManager
import com.intellij.util.messages.MessageBusConnection
-import training.check.Check
import java.awt.event.KeyEvent
-import java.util.*
+import java.util.concurrent.CompletableFuture
/**
* Created by karashevich on 18/12/14.
*/
class ActionsRecorder(private val project: Project,
private val document: Document) : Disposable {
- private var triggerActivated: Boolean = false
- private var triggerQueue: Queue<String>? = null
- private var myDocumentListener: DocumentListener? = null
- private var myAnActionListener: AnActionListener? = null
+ private val documentListeners: MutableList<DocumentListener> = mutableListOf()
+ private val actionListeners: MutableList<AnActionListener> = mutableListOf()
+ private val eventDispatchers: MutableList<IdeEventQueue.EventDispatcher> = mutableListOf()
private var disposed = false
- private var doWhenDone: Runnable? = null
- private var check: Check? = null
init {
- this.doWhenDone = null
-
Disposer.register(project, this)
}
Disposer.dispose(this)
}
- fun startRecording(doWhenDone: Runnable) {
- if (disposed) return
- this.doWhenDone = doWhenDone
-
- }
-
- fun startRecording(doWhenDone: Runnable, actionId: String?, check: Check?) {
- val stringArray = arrayOf<String>(actionId!!)
- startRecording(doWhenDone, stringArray, check)
+ fun futureAction(actionId: String): CompletableFuture<Boolean> {
+ val future: CompletableFuture<Boolean> = CompletableFuture()
+ val listener = createActionListener { caughtActionId, _ -> if (actionId == caughtActionId) future.complete(true) }
+ ActionManager.getInstance().addAnActionListener(listener, this)
+ return future
}
- fun startRecording(doWhenDone: Runnable, actionIdArray: Array<String>?, check: Check?) {
- if (check != null) this.check = check
- if (disposed) return
- this.doWhenDone = doWhenDone
-
- // triggerMap = new HashMap<String, Boolean>(actionIdArray.length);
- triggerQueue = LinkedList<String>()
- //set triggerMap
- if (actionIdArray != null) {
- Collections.addAll(triggerQueue!!, *actionIdArray)
+ fun futureListActions(listOfActions: List<String>): CompletableFuture<Boolean> {
+ val future: CompletableFuture<Boolean> = CompletableFuture()
+ val mutableListOfActions = listOfActions.toMutableList()
+ val listener = createActionListener { caughtActionId, _ ->
+ if (mutableListOfActions.isNotEmpty() && mutableListOfActions.first() == caughtActionId) mutableListOfActions.removeAt(0)
+ if (mutableListOfActions.isEmpty()) future.complete(true)
}
- addActionAndDocumentListeners()
- }
-
- private fun isTaskSolved(current: Document): Boolean {
- if (disposed) return false
- return if (triggerQueue != null)
- (triggerQueue!!.size == 1 || triggerQueue!!.size == 0) && (check == null || check!!.check())
- else
- triggerActivated && (check == null || check!!.check())
+ ActionManager.getInstance().addAnActionListener(listener, this)
+ return future
}
- private fun computeTrimmedLines(s: String): List<String> {
- val ls = ArrayList<String>()
-
- for (it in StringUtil.splitByLines(s)) {
- val splitted = it.split("[ ]+".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
- for (element in splitted)
- if (element != "") {
- ls.add(element)
- }
+ fun futureCheck(checkFunction: () -> Boolean): CompletableFuture<Boolean> {
+ val future: CompletableFuture<Boolean> = CompletableFuture()
+ val listener = createDocumentListener {
+ if (!future.isDone && !future.isCancelled && checkFunction())
+ future.complete(true)
+ }
+ addKeyEventListener {
+ if (!future.isDone && !future.isCancelled && checkFunction()) {
+ future.complete(true)
+ }
}
- return ls
+ document.addDocumentListener(listener)
+ return future
}
private val myMessageBusConnection: MessageBusConnection
- get() { return project.messageBus.connect() }
+ get() {
+ return project.messageBus.connect()
+ }
/**
* method adds action and document listeners to monitor user activity and check task
*/
private fun addActionAndDocumentListeners() {
- val actionManager = ActionManager.getInstance() ?: throw Exception("Unable to get instance for ActionManager")
-
- myAnActionListener = object : AnActionListener {
-
- private var projectAvailable: Boolean = false
-
- override fun beforeActionPerformed(action: AnAction, dataContext: DataContext, event: AnActionEvent) {
- projectAvailable = event.project != null
- }
-
- override fun afterActionPerformed(action: AnAction, dataContext: DataContext, event: AnActionEvent?) {
- val actionId = ActionManager.getInstance().getId(action)
- val actionClassName = action.javaClass.name
- val resultId = actionId ?: actionClassName
- doProcessAction(resultId, projectAvailable)
- }
+// myAnActionListener = createActionListener {
+// actionId, _ -> doProcessAction(actionId, true)
+// }
+// myDocumentListener = createDocumentListener {
+// doWhenTriggerIsEmptyAndTaskSolved(ActionManager.getInstance(), completableFuture)
+// }
+//
+// val myEventDispatcher = IdeEventQueue.EventDispatcher { e ->
+// if (e is KeyEvent) {
+// doWhenTriggerIsEmptyAndTaskSolved(ActionManager.getInstance(), completableFuture)
+// }
+// false
+// }
+//
+// myMessageBusConnection.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, object : FileEditorManagerListener {
+// override fun selectionChanged(event: FileEditorManagerEvent) {
+// event.newFile?.name?.let { doProcessAction(it, true, completableFuture) }
+// }
+// })
+//
+// if (check != null && check!!.listenAllKeys()) IdeEventQueue.getInstance().addDispatcher(myEventDispatcher, this)
+// document.addDocumentListener(myDocumentListener!!)
+// ActionManager.getInstance().addAnActionListener(myAnActionListener)
+ }
- override fun beforeEditorTyping(c: Char, dataContext: DataContext) {}
+ private fun addKeyEventListener(onKeyEvent: () -> Unit) {
+ val myEventDispatcher: IdeEventQueue.EventDispatcher = IdeEventQueue.EventDispatcher { e ->
+ if (e is KeyEvent) onKeyEvent()
+ false
}
- myDocumentListener = object : DocumentListener {
+ eventDispatchers.add(myEventDispatcher)
+ IdeEventQueue.getInstance().addDispatcher(myEventDispatcher, this)
+ }
+ private fun createDocumentListener(onDocumentChange: () -> Unit): DocumentListener {
+ val documentListener = object : DocumentListener {
override fun beforeDocumentChange(event: DocumentEvent) {}
ApplicationManager.getApplication().invokeLater {
if (!disposed && !project.isDisposed) {
- PsiDocumentManager.getInstance(project).commitAndRunReadAction { doWhenTriggerIsEmptyAndTaskSolved(actionManager) }
+ PsiDocumentManager.getInstance(project).commitAndRunReadAction { onDocumentChange() }
}
}
}
}
}
+ documentListeners.add(documentListener)
+ return documentListener
+ }
- val myEventDispatcher = IdeEventQueue.EventDispatcher { e ->
- if (e is KeyEvent) {
- doWhenTriggerIsEmptyAndTaskSolved(actionManager)
- }
- false
- }
-
- myMessageBusConnection.subscribe(FileEditorManagerListener.FILE_EDITOR_MANAGER, object : FileEditorManagerListener {
- override fun selectionChanged(event: FileEditorManagerEvent) {
- event.newFile?.name?.let { doProcessAction(it, true) }
- }
- })
-
+ private fun createActionListener(processAction: (actionId: String, project: Project) -> Unit): AnActionListener {
+ val actionListener = object : AnActionListener {
- if (check != null && check!!.listenAllKeys()) IdeEventQueue.getInstance().addDispatcher(myEventDispatcher, this)
- document.addDocumentListener(myDocumentListener!!)
- actionManager.addAnActionListener(myAnActionListener)
- }
- /**
- * @param action - caught action by AnActionListener (see [.addActionAndDocumentListeners] addActionAndDocumentListeners()} method.) or by the project
- * message bus - see FileEditorManagerListener
- * @param actionString - could be an actionId, action class name or the file name opened after some action
- */
+ private var projectAvailable: Boolean = false
- private fun doProcessAction(action: String, projectAvailable: Boolean){
- //if action called not from project or current editor is different from editor
- if (!projectAvailable) return
-
- if (triggerQueue!!.size == 0) {
- if (isTaskSolved(document)) {
- // actionManager.removeAnActionListener(this);
- removeListeners(document, ActionManager.getInstance())
- if (doWhenDone != null) {
- dispose()
- doWhenDone!!.run()
- }
- }
- }
- if (equalStr(action, triggerQueue!!.peek())) {
- if (triggerQueue!!.size > 1) {
- triggerQueue!!.poll()
- } else if (triggerQueue!!.size == 1) {
- if (isTaskSolved(document)) {
- // actionManager.removeAnActionListener(this);
- removeListeners(document, ActionManager.getInstance())
- if (doWhenDone != null) {
- dispose()
- doWhenDone!!.run()
- }
- } else {
- triggerQueue!!.poll()
- }
+ override fun beforeActionPerformed(action: AnAction, dataContext: DataContext, event: AnActionEvent) {
+ projectAvailable = event.project != null
}
- }
- }
- private fun doWhenTriggerIsEmptyAndTaskSolved(actionManager: ActionManager) {
- if (triggerQueue!!.isEmpty()) {
- if (isTaskSolved(document)) {
- removeListeners(document, actionManager)
- if (doWhenDone != null)
- dispose()
- assert(doWhenDone != null)
- doWhenDone!!.run()
+ override fun afterActionPerformed(action: AnAction, dataContext: DataContext, event: AnActionEvent?) {
+ val actionId = ActionManager.getInstance().getId(action)
+ val actionClassName = action.javaClass.name
+ val resultId = actionId ?: actionClassName
+ processAction(resultId, project)
}
+
+ override fun beforeEditorTyping(c: Char, dataContext: DataContext) {}
}
+ actionListeners.add(actionListener)
+ return actionListener
}
+
private fun removeListeners(document: Document, actionManager: ActionManager) {
- if (myAnActionListener != null) actionManager.removeAnActionListener(myAnActionListener)
- if (myDocumentListener != null) document.removeDocumentListener(myDocumentListener!!)
+ if (actionListeners.isNotEmpty()) actionListeners.forEach { actionManager.removeAnActionListener(it) }
+ if (documentListeners.isNotEmpty()) documentListeners.forEach { document.removeDocumentListener(it) }
+ if (eventDispatchers.isNotEmpty()) eventDispatchers.forEach { IdeEventQueue.getInstance().removeDispatcher(it) }
myMessageBusConnection.disconnect()
- myAnActionListener = null
- myDocumentListener = null
+ actionListeners.clear()
+ documentListeners.clear()
+ eventDispatchers.clear()
}
- private fun equalStr(str1: String?, str2: String?): Boolean {
- return !(str1 == null || str2 == null) && str1.toUpperCase() == str2.toUpperCase()
- }
}
import training.learn.exceptons.NoJavaModuleException
import training.learn.exceptons.NoSdkException
import training.learn.exceptons.OldJdkException
-import training.learn.lesson.Lesson
+import training.learn.interfaces.Lesson
+import training.learn.interfaces.Module
+import training.lessons.java.EditorBasicsModule
import training.util.GenModuleXml
import java.util.*
import kotlin.collections.HashMap
var learnProject: Project? = null
var learnProjectPath: String? = null
var mapModuleVirtualFile = HashMap<Module, VirtualFile>()
- var modules: MutableList<Module> = ArrayList<Module>()
- val modulesId2modules: MutableMap<String, Module> = mutableMapOf()
+ var modules: MutableList<Module> = ArrayList()
val currentProject: Project?
get() {
val lastFocusedFrame = IdeFocusManager.getGlobalInstance().lastFocusedFrame ?: return null
return lastFocusedFrame.project
}
+ private val modulesId2modules: MutableMap<String, Module> = mutableMapOf()
init {
- initModules()
+ initXmlModules()
+ initKotlinModules()
}
fun clearModules() {
modules.clear()
}
- fun initModules() {
- val modulesRoot = Module.getRootFromPath(GenModuleXml.MODULE_ALLMODULE_FILENAME)
+ fun initXmlModules() {
+ val modulesRoot = XmlModule.getRootFromPath(GenModuleXml.MODULE_ALLMODULE_FILENAME)
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) ?: throw Exception("Unable to init module (is null) from file: $moduleFilename")
+ val module = XmlModule.initModule(moduleFilename) ?: throw Exception("Unable to init module (is null) from file: $moduleFilename")
modules.add(module)
}
}
mergeModules()
}
+ private fun initKotlinModules() {
+ modules.add(EditorBasicsModule())
+ }
+
private fun mergeModules() {
- // leave only uniques Module id
+ // leave only uniques XmlModule 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)
return modules.firstOrNull { it.id?.toUpperCase() == id.toUpperCase() }
}
+
+ //TODO: remove this method or convert XmlModule to a Module
fun registerVirtualFile(module: Module, virtualFile: VirtualFile) {
mapModuleVirtualFile.put(module, virtualFile)
}
}
}
- fun unregisterModule(module: Module) {
+ fun unregisterModule(module: XmlModule) {
mapModuleVirtualFile.remove(module)
}
val size = modules.size
if (size == 1) return null
- for (i in 0..size - 1) {
+ for (i in 0 until size) {
if (modules[i] == module) {
if (i + 1 < size) nextModule = modules[i + 1]
break
import training.lang.LangSupport
import training.learn.exceptons.BadLessonException
import training.learn.exceptons.BadModuleException
-import training.learn.lesson.Lesson
+import training.learn.interfaces.Lesson
+import training.learn.interfaces.Module
+import training.learn.interfaces.ModuleType
import training.learn.lesson.Scenario
+import training.learn.lesson.XmlLesson
import training.util.DataLoader
import training.util.GenModuleXml
import training.util.GenModuleXml.*
/**
* @author Sergey Karashevich
*/
-class Module(val name: String, moduleXmlPath: String, private val root: Element) {
+class XmlModule(override val name: String, moduleXmlPath: String, private val root: Element): Module {
- val description: String?
-
- enum class ModuleType {
- SCRATCH, PROJECT
- }
+ override val description: String?
//used for lessons filtered by LangManger chosen lang
- var lessons: MutableList<Lesson> = ArrayList<Lesson>()
+ override var lessons: MutableList<Lesson> = ArrayList<Lesson>()
+ override val sanitizedName: String
+ get() = name.replace("[^\\dA-Za-z ]".toRegex(), "").replace("\\s+".toRegex(), "")
+ override var id: String? = null
+ override lateinit var moduleType: ModuleType
+
private val allLessons = ArrayList<Lesson>()
private val moduleUpdateListeners = ArrayList<ModuleUpdateListener>()
val answersPath: String?
- var id: String?
- var moduleType: ModuleType
var sdkType: ModuleSdkType?
enum class ModuleSdkType {
initLessons(modulePath)
}
- private fun initLessons(modulePath: String) {
-
- if (root.getAttribute(MODULE_LESSONS_PATH_ATTR) != null) {
-
- //retrieve list of xml files inside lessonsPath directory
- val lessonsPath = modulePath + root.getAttribute(MODULE_LESSONS_PATH_ATTR).value
-
- for (lessonElement in root.children) {
- if (lessonElement.name != MODULE_LESSON_ELEMENT)
- throw BadModuleException("Module file is corrupted or cannot be read properly")
-
- val lessonFilename = lessonElement.getAttributeValue(MODULE_LESSON_FILENAME_ATTR)
- val lessonPath = lessonsPath + lessonFilename
- try {
- val scenario = Scenario(lessonPath)
- val lesson = Lesson(scenario = scenario, lang = scenario.lang, module = this)
- allLessons.add(lesson)
- } catch (e: JDOMException) {
- //Lesson file is corrupted
- throw BadLessonException("Probably lesson file is corrupted: $lessonPath JDOMException:$e")
- } catch (e: IOException) {
- //Lesson file cannot be read
- throw BadLessonException("Probably lesson file cannot be read: " + lessonPath)
- }
- }
- }
- lessons = filterLessonsByCurrentLang()
- }
-
fun setMySdkType(mySdkType: ModuleSdkType?) {
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(): MutableList<Lesson> {
val langManager = LangManager.getInstance()
if (langManager.isLangUndefined()) return allLessons
return filterLessonByLang(langManager.getLangSupport())
}
- fun filterLessonByLang(langSupport: LangSupport): MutableList<Lesson> {
+ override fun filterLessonByLang(langSupport: LangSupport): MutableList<Lesson> {
return allLessons.filter { langSupport.acceptLang(it.lang) }.toMutableList()
}
- fun giveNotPassedLesson(): Lesson? {
+ override fun giveNotPassedLesson(): Lesson? {
return lessons.firstOrNull { !it.passed }
}
- fun giveNotPassedAndNotOpenedLesson(): Lesson? {
+ override fun giveNotPassedAndNotOpenedLesson(): Lesson? {
return lessons.firstOrNull { !it.passed && !it.isOpen }
}
- fun hasNotPassedLesson(): Boolean {
+ override fun hasNotPassedLesson(): Boolean {
return lessons.any { !it.passed }
}
- val sanitizedName: String
- get() = name.replace("[^\\dA-Za-z ]".toRegex(), "").replace("\\s+".toRegex(), "")
-
- fun update() {
+ override fun update() {
lessons = filterLessonsByCurrentLang()
moduleUpdateListeners.forEach(Consumer<ModuleUpdateListener> { it.onUpdate() })
}
+ private fun initLessons(modulePath: String) {
+
+ if (root.getAttribute(MODULE_LESSONS_PATH_ATTR) != null) {
+
+ //retrieve list of xml files inside lessonsPath directory
+ val lessonsPath = modulePath + root.getAttribute(MODULE_LESSONS_PATH_ATTR).value
+
+ for (lessonElement in root.children) {
+ if (lessonElement.name != MODULE_LESSON_ELEMENT)
+ throw BadModuleException("XmlModule file is corrupted or cannot be read properly")
+
+ val lessonFilename = lessonElement.getAttributeValue(MODULE_LESSON_FILENAME_ATTR)
+ val lessonPath = lessonsPath + lessonFilename
+ try {
+ val scenario = Scenario(lessonPath)
+ val lesson = XmlLesson(scenario = scenario, lang = scenario.lang, module = this)
+ allLessons.add(lesson)
+ } catch (e: JDOMException) {
+ //XmlLesson file is corrupted
+ throw BadLessonException("Probably lesson file is corrupted: $lessonPath JDOMException:$e")
+ } catch (e: IOException) {
+ //XmlLesson file cannot be read
+ throw BadLessonException("Probably lesson file cannot be read: " + lessonPath)
+ }
+ }
+ }
+ lessons = filterLessonsByCurrentLang()
+ }
+
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
- other as Module
+ other as XmlModule
if (name != other.name) return false
if (id != other.id) return false
companion object {
@Throws(BadModuleException::class, BadLessonException::class, JDOMException::class, IOException::class, URISyntaxException::class)
- fun initModule(modulePath: String): Module? {
+ fun initModule(modulePath: String): XmlModule? {
//load xml with lessons
- //Check DOM with Module
+ //Check DOM with XmlModule
val root = getRootFromPath(modulePath)
if (root.getAttribute(GenModuleXml.MODULE_NAME_ATTR) == null) return null
val name = root.getAttribute(GenModuleXml.MODULE_NAME_ATTR).value
- return Module(name, modulePath, root)
+ return XmlModule(name, modulePath, root)
}
--- /dev/null
+package training.learn.interfaces
+
+import training.learn.lesson.LessonListener
+import training.learn.lesson.LessonStateManager
+
+interface Lesson {
+
+ val name: String
+
+ val id: String
+
+ var module: Module
+
+ var passed: Boolean
+
+ var isOpen: Boolean
+
+ val lang: String
+
+ val lessonListeners: MutableList<LessonListener>
+
+ fun addLessonListener(lessonListener: LessonListener) {
+ lessonListeners.add(lessonListener)
+ }
+
+ fun onStart() {
+ lessonListeners.forEach { it.lessonStarted(this) }
+ }
+
+ fun onClose() {
+ lessonListeners.clear()
+ }
+
+ fun onPass() {
+ lessonListeners.forEach { it.lessonPassed(this) }
+ }
+
+ fun pass() {
+ passed = true
+ LessonStateManager.setPassed(this)
+ onPass()
+ }
+
+}
--- /dev/null
+package training.learn.interfaces
+
+import training.lang.LangSupport
+
+interface Module {
+
+ var lessons: MutableList<Lesson>
+
+ val sanitizedName: String
+
+ var id: String?
+
+ val name: String
+
+ val moduleType: ModuleType
+
+ val description: String?
+
+ fun filterLessonByLang(langSupport: LangSupport): MutableList<Lesson>
+
+ fun giveNotPassedLesson(): Lesson?
+
+ fun giveNotPassedAndNotOpenedLesson(): Lesson?
+
+ fun hasNotPassedLesson(): Boolean
+
+ fun update()
+
+ 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)
+ }
+
+}
\ No newline at end of file
--- /dev/null
+package training.learn.interfaces
+
+enum class ModuleType {
+ SCRATCH, PROJECT
+}
\ No newline at end of file
import training.learn.exceptons.BadLessonException
import training.learn.exceptons.BadModuleException
import training.learn.exceptons.LessonIsOpenedException
+import training.learn.interfaces.Lesson
import java.awt.FontFormatException
import java.io.IOException
import java.util.*
import training.learn.exceptons.BadLessonException
import training.learn.exceptons.BadModuleException
import training.learn.exceptons.LessonIsOpenedException
+import training.learn.interfaces.Lesson
import java.awt.FontFormatException
import java.io.IOException
import java.util.concurrent.ExecutionException
import training.learn.ActionsRecorder
import training.learn.CourseManager
import training.learn.LearnBundle
-import training.ui.*
+import training.learn.interfaces.Lesson
+import training.ui.Message
+import training.ui.UiManager
import training.util.createBalloon
import training.util.editorPointForBalloon
import java.util.*
var currentExecutionList: training.commands.ExecutionList? = null
private set
- fun process(project: Project, lesson: Lesson, editor: Editor) {
+ fun process(project: Project, lesson: XmlLesson, editor: Editor) {
val myEditorParameters = LessonProcessor.getEditorParameters(lesson.scenario.root)
val myQueueOfElements = LessonProcessor.createQueueOfCommands(lesson.scenario.root)
private fun getEditorParameters(root: Element): HashMap<String, String> {
val editorParameters = HashMap<String, String>()
- if (root.getAttribute(Lesson.EditorParameters.PROJECT_TREE) != null) {
- editorParameters.put(Lesson.EditorParameters.PROJECT_TREE, root.getAttributeValue(Lesson.EditorParameters.PROJECT_TREE))
+ if (root.getAttribute(XmlLesson.EditorParameters.PROJECT_TREE) != null) {
+ editorParameters.put(XmlLesson.EditorParameters.PROJECT_TREE, root.getAttributeValue(XmlLesson.EditorParameters.PROJECT_TREE))
}
return editorParameters
}
private fun prepareEnvironment(editor: Editor, project: Project, editorParameters: HashMap<String, String>) {
- if (editorParameters.containsKey(Lesson.EditorParameters.PROJECT_TREE)) {
+ if (editorParameters.containsKey(XmlLesson.EditorParameters.PROJECT_TREE)) {
if (ActionManager.getInstance().getAction(HideProjectTreeAction.Companion.myActionId) == null) {
val hideAction = HideProjectTreeAction()
ActionManager.getInstance().registerAction(hideAction.actionId, hideAction)
import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.components.State
import com.intellij.openapi.components.Storage
+import training.learn.interfaces.Lesson
import training.migration.MigrationManager
import java.util.*
import com.intellij.openapi.project.Project
import training.learn.CourseManager
-import training.learn.Module
import training.learn.exceptons.BadLessonException
import training.learn.exceptons.BadModuleException
import training.learn.exceptons.LessonIsOpenedException
import training.learn.exceptons.NoProjectException
+import training.learn.interfaces.Lesson
+import training.learn.interfaces.Module
import training.learn.log.LessonLog
import java.awt.Dimension
import java.awt.FontFormatException
/**
* Created by karashevich on 29/01/15.
*/
-data class Lesson(val scenario: Scenario, val lang: String, var module: Module?) {
+data class XmlLesson(val scenario: Scenario, override val lang: String, override var module: Module): Lesson {
- var lessonListeners: ArrayList<LessonListener> = ArrayList<LessonListener>()
+ override var lessonListeners: MutableList<LessonListener> = ArrayList()
private set
- var passed: Boolean = false
- var isOpen: Boolean = false
- private set
- val name: String = scenario.name
- val id: String = scenario.id
+ override var passed: Boolean = false
+ override var isOpen: Boolean = false
+ override val name: String = scenario.name
+ override val id: String = scenario.id
/*Log lesson metrics*/
- val lessonLog: LessonLog = LessonLog(this)
+ private val lessonLog: LessonLog = LessonLog(this)
init {
- lessonListeners = ArrayList<LessonListener>()
passed = LessonStateManager.getStateFromBase(id) == LessonState.PASSED
}
@Deprecated("")
@Throws(IOException::class, FontFormatException::class, LessonIsOpenedException::class)
fun open(infoPanelDimension: Dimension) {
- //init infoPanel, check that Lesson has not opened yet
+ //init infoPanel, check that XmlLesson has not opened yet
if (isOpen) throw LessonIsOpenedException(this.name + "is opened")
onStart()
isOpen = true
CourseManager.instance.openLesson(projectWhereToOpenLesson, this)
}
- fun close() {
- isOpen = false
- onClose()
- }
-
- //Listeners
- fun addLessonListener(lessonListener: LessonListener) {
- lessonListeners.add(lessonListener)
- }
-
- fun removeLessonListener(lessonListener: LessonListener) {
- if (lessonListeners.contains(lessonListener)) lessonListeners.remove(lessonListener)
-
- }
-
- fun onStart() {
- lessonLog.log("Lesson started")
+ override fun onStart() {
+ super.onStart()
+ lessonLog.log("XmlLesson started")
lessonLog.resetCounter()
- lessonListeners.forEach { it.lessonStarted(this) }
}
private fun onItemPassed() {
}
- private fun onClose() {
- lessonListeners.clear()
-
- }
-
//call onPass handlers in lessonListeners
- private fun onPass() {
- lessonLog.log("Lesson passed")
- lessonListeners.forEach { it.lessonPassed(this) }
-
+ override fun onPass() {
+ super.onPass()
+ lessonLog.log("XmlLesson passed")
}
@Throws(BadLessonException::class, ExecutionException::class, IOException::class, FontFormatException::class, InterruptedException::class, BadModuleException::class, LessonIsOpenedException::class)
lessonListeners.forEach { it.lessonNext(this) }
}
- fun pass() {
- passed = true
- LessonStateManager.setPassed(this)
- onPass()
- }
-
fun passItem() {
onItemPassed()
}
}
override fun equals(other: Any?): Boolean {
- return other != null && other is Lesson && other.name == this.name
+ return other != null && other is XmlLesson && other.name == this.name
}
override fun hashCode(): Int {
--- /dev/null
+package training.learn.lesson.kimpl
+
+import com.intellij.openapi.editor.Editor
+import com.intellij.openapi.project.Project
+import training.learn.interfaces.Lesson
+import training.learn.interfaces.Module
+import training.learn.lesson.LessonListener
+import training.learn.lesson.LessonManager
+
+typealias LessonContext = Triple<KLesson, Editor, Project>
+
+class KLesson(override val name: String, override var module: Module, override val lang: String, val lessonContent: Triple<KLesson, Editor, Project>.() -> Unit) : Lesson {
+
+ override val id: String = name
+ override var passed = false
+ override var isOpen = false
+ override val lessonListeners: MutableList<LessonListener> = mutableListOf()
+}
+
+fun KModule.lesson(lessonName: String, lang: String, lessonContent: LessonContext.() -> Unit): KLesson {
+ return KLesson(lessonName, this, lang, lessonContent)
+}
+
+fun LessonContext.complete(text: String? = null) {
+ val (lesson, editor, project) = this
+ lesson.pass()
+ LessonManager.getInstance(lesson).passLesson(project, editor)
+}
\ No newline at end of file
--- /dev/null
+package training.learn.lesson.kimpl
+
+import training.lang.LangSupport
+import training.learn.interfaces.Lesson
+import training.learn.interfaces.Module
+import training.learn.interfaces.ModuleType
+import kotlin.reflect.KVisibility
+import kotlin.reflect.full.declaredFunctions
+
+open class KModule(override val name: String, override val moduleType: ModuleType ): Module {
+
+
+ private val myLessons by lazy {
+ return@lazy this::class.declaredFunctions.filter { it.visibility == KVisibility.PUBLIC }.map { it.call(this)
+ as KLesson}
+ }
+
+ override var lessons: MutableList<Lesson>
+ get() {
+ return myLessons.toMutableList()
+ }
+ set(value) {
+
+ }
+
+
+ override val sanitizedName: String
+ get() = name
+
+ override var id: String?
+ get() = name
+ set(value) {}
+
+ override val description: String = "Empty description of Kotlin Module"
+
+ override fun filterLessonByLang(langSupport: LangSupport): MutableList<Lesson> {
+ return lessons.asSequence().filter { langSupport.acceptLang(it.lang) }.toMutableList()
+ }
+
+ override fun giveNotPassedLesson(): Lesson? {
+ return lessons.asSequence().filter { !it.passed }.firstOrNull()
+ }
+
+ override fun giveNotPassedAndNotOpenedLesson(): Lesson? {
+ return lessons.asSequence().filter { !it.passed && !it.isOpen }.firstOrNull()
+ }
+
+ override fun hasNotPassedLesson(): Boolean {
+ return lessons.asSequence().any { !it.passed }
+ }
+
+ override fun update() {
+ //do nothing here
+ }
+
+}
\ No newline at end of file
import training.learn.exceptons.BadLessonException
import training.learn.exceptons.BadModuleException
import training.learn.exceptons.LessonIsOpenedException
-import training.learn.lesson.Lesson
+import training.learn.interfaces.Lesson
import training.learn.lesson.LessonListenerAdapter
import java.awt.FontFormatException
import java.io.IOException
package training.learn.lesson.listeners
import com.intellij.openapi.project.Project
-import training.learn.lesson.Lesson
+import training.learn.interfaces.Lesson
import training.learn.lesson.LessonListenerAdapter
import training.statistic.StatisticBase
+++ /dev/null
-package training.learn.log;
-
-import com.intellij.util.SmartList;
-import com.intellij.util.xmlb.annotations.Tag;
-import training.learn.lesson.Lesson;
-
-import java.util.HashMap;
-
-/**
- * Created by karashevich on 13/10/15.
- */
-@Tag("GlobalLessonLog")
-public class GlobalLessonLog {
-
- public HashMap<String, SmartList<LessonLog>> globalLessonLogMap; //map lesson -> lessonLog
-
- public GlobalLessonLog() {
- globalLessonLogMap = new HashMap<String, SmartList<LessonLog>>();
- }
-
- public void commitSession(Lesson lesson) {
-
- if (lesson.getName() == null) return;
-
- if (globalLessonLogMap.containsKey(lesson.getName())) {
- final SmartList<LessonLog> sessions = globalLessonLogMap.get(lesson.getName());
- if (sessions.size() > 0) {
- final int lastIndex = sessions.size() - 1;
- final LessonLog lastSession = sessions.get(lastIndex);
- if (lastSession.getFirstDate().equals(lesson.getLessonLog().getFirstDate())) {
- //concatenate session
- sessions.set(lastIndex, lesson.getLessonLog());
- } else {
- globalLessonLogMap.get(lesson.getName()).add(lesson.getLessonLog());
- }
- } else {
- globalLessonLogMap.get(lesson.getName()).add(lesson.getLessonLog());
- }
- } else {
- final SmartList<LessonLog> sessions = new SmartList<LessonLog>();
- sessions.add(lesson.getLessonLog());
- globalLessonLogMap.put(lesson.getName(), sessions);
- }
- }
-}
package training.learn.log
-import training.learn.lesson.Lesson
+import training.learn.interfaces.Lesson
import java.util.*
/**
}
init {
- log("Log is created. Lesson:" + lesson.name)
+ log("Log is created. XmlLesson:" + lesson.name)
}
}
--- /dev/null
+package training.lessons.java
+
+import training.commands.kotlin.*
+import training.learn.interfaces.ModuleType
+import training.learn.lesson.kimpl.KModule
+import training.learn.lesson.kimpl.lesson
+
+class EditorBasicsModule : KModule("Editor Basics Kotlin", ModuleType.SCRATCH) {
+
+ fun selectLesson() = lesson("Select", "JAVA") {
+ task {
+ copyCode("""class SelectionDemo {
+
+ public int fib(int n) {
+ int a = 1;
+ int b = 1;
+
+ int tmp;
+
+ if (n < 2) return 1;
+
+ for (int i = 0; i < (n - 1); i++) {
+ tmp = b;
+ b = a;
+ a = a + tmp;
+ }
+
+ return a;
+ }
+}""")
+ text("Place the caret before any word. Press ${action("EditorNextWordWithSelection")} to move the caret to the next word and select everything in between.")
+ caret(line = 9, column = 9)
+ trigger("EditorNextWordWithSelection")
+ }
+ task {
+ text("Press ${action("EditorSelectWord")} to extend the selection to the next code block.")
+ trigger("EditorSelectWord")
+ }
+ task {
+ text("Try increasing your selection with <action>EditorSelectWord</action> until your whole file is selected.")
+ trigger("EditorSelectWord")
+ }
+ task {
+ text("${action("EditorUnSelectWord")} shrinks selection. Try pressing it.")
+ trigger("EditorUnSelectWord")
+ }
+ task {
+ text("Now select the whole file instantly with ${action("\$SelectAll")}.")
+ trigger("\$SelectAll")
+ }
+ task {
+ text("Awesome! Click the button below to start the next lesson, or use ${action("learn.next.lesson")}.")
+ trigger("learn.next.lesson")
+ }
+// complete()
+ }
+
+}
\ No newline at end of file
package training.statistic
-import com.intellij.internal.statistic.UsagesCollector
-import com.intellij.internal.statistic.beans.GroupDescriptor
-import com.intellij.internal.statistic.beans.UsageDescriptor
import com.intellij.openapi.components.PersistentStateComponent
import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.components.State
import com.intellij.openapi.components.Storage
import com.intellij.util.xmlb.annotations.Transient
-import training.learn.lesson.Lesson
+import training.learn.interfaces.Lesson
@State(name = "StatisticBase", storages = arrayOf(Storage(value = "ide-features-trainer.xml")))
class StatisticBase : PersistentStateComponent<StatisticBase> {
sessionLessonId2State.add(Pair(lesson.id, statisticData))
}
}
-}
-
-class StatisticCollector: UsagesCollector() {
-
- override fun getGroupId(): GroupDescriptor {
- return GroupDescriptor.create("plugin.IdeFeaturesTrainer")
- }
-
- /**
- * returns a set of lesson states in a next format:
- * - for a started lesson: UsageDescriptor(${lesson.id}#STARTED, 1)
- * - for a passed lesson UsageDescriptor(${lesson.id}#PASSED, delta_in_seconds )
- */
- override fun getUsages(): MutableSet<UsageDescriptor> {
- return StatisticBase.instance.sessionLessonId2State
- .map {
- val (lessonId, statisticData) = it
- val key = "$lessonId#${statisticData.state}"
- val count: Int = if (statisticData.state == StatisticBase.StatisticState.STARTED) 1 else (statisticData.timestamp!! / 1000).toInt()
- UsageDescriptor(key, count)
- }
- .toMutableSet()
- }
}
\ No newline at end of file
--- /dev/null
+package training.ui
+
+object MessageUtils {
+
+ fun List<Message>.extractTag(tagName: String, messageType: Message.MessageType): List<Message> {
+ val groupedRegex = Regex("<$tagName>(.*?)</$tagName>")
+ val regex = Regex("<$tagName>.*?</$tagName>")
+ return this.map { message ->
+ if (message.isText && groupedRegex.find(message.text) != null) {
+ val splitByTag = regex.split(message.text)
+ val groups = regex.findAll(message.text).map { it.groups }.flatten().toList()
+ val result = ArrayList<Message>()
+ groups.forEachIndexed { i, _ -> result.add(Message(splitByTag[i], message.type))
+ val textInTag = groupedRegex.find(groups[i]!!.value)!!.groups[1]!!.value
+ result.add(Message(textInTag, messageType))
+ }
+ result.add(Message(splitByTag.last(), message.type))
+ result
+ } else listOf(message)
+ }.flatten().toList()
+ }
+
+}
\ No newline at end of file
import javax.swing.border.Border
import javax.swing.border.EmptyBorder
import kotlin.reflect.KProperty
-import kotlin.reflect.jvm.javaField
/**
* Created by jetbrains on 12/08/16.
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.project.Project
import com.intellij.openapi.wm.ToolWindowManager
-import training.learn.lesson.Lesson
+import training.learn.interfaces.Lesson
import training.ui.views.LearnPanel
import training.ui.views.ModulesPanel
import com.intellij.util.ui.UIUtil
import training.learn.CourseManager
import training.learn.LearnBundle
-import training.learn.lesson.Lesson
+import training.learn.interfaces.Lesson
import training.ui.*
import java.awt.*
import java.awt.event.ActionEvent
private val boxLayout: BoxLayout
- //Lesson panel items
+ //XmlLesson panel items
private var lessonPanel: JPanel? = null
private var moduleNameLabel: JLabel? = null
private var allTopicsLabel: LinkLabel<Any>? = null
private var button: JButton? = null
- //Module panel stuff
+ //XmlModule panel stuff
var modulePanel: ModulePanel? = null
private set
private var moduleNamePanel: JPanel? = null //contains moduleNameLabel and allTopicsLabel
val module = lesson.module
val myLessons = module!!.lessons
- //if module contains one lesson only
- if (myLessons.size == 1) return
-
//create ModuleLessons region
val moduleLessons = JLabel()
moduleLessons.name = "moduleLessons"
moduleNamePanel!!.add(Box.createHorizontalGlue())
moduleNamePanel!!.add(allTopicsLabel)
- moduleLessons.text = lesson.module!!.name
+ moduleLessons.text = lesson.module.name
moduleLessons.font = UISettings.instance.boldFont
moduleLessons.isFocusable = false
import com.intellij.openapi.project.DumbService
import com.intellij.openapi.project.guessCurrentProject
-import com.intellij.openapi.ui.popup.JBPopupFactory
import com.intellij.openapi.util.SystemInfo
import com.intellij.ui.JBColor
import com.intellij.ui.components.JBLabel
import com.intellij.util.ui.UIUtil
import training.learn.CourseManager
import training.learn.LearnBundle
-import training.learn.Module
+import training.learn.interfaces.Module
import training.ui.LearnIcons
import training.ui.UISettings
import training.util.DataLoader
val modules = CourseManager.instance.modules
if(DataLoader.liveMode) {
CourseManager.instance.clearModules()
- CourseManager.instance.initModules()
+ CourseManager.instance.initXmlModules()
module2linklabel!!.clear()
}
for (module in modules) {
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
-import training.learn.Module;
+import training.learn.XmlModule;
import java.io.File;
import java.io.FileWriter;
genModules();
}
- public static Module.ModuleSdkType getSdkTypeFromString(String string) {
+ public static XmlModule.ModuleSdkType getSdkTypeFromString(String string) {
if (string == null) return null;
- for (Module.ModuleSdkType moduleSdkType : Module.ModuleSdkType.values()) {
+ for (XmlModule.ModuleSdkType moduleSdkType : XmlModule.ModuleSdkType.values()) {
if(moduleSdkType.toString().equals(string)) return moduleSdkType;
}
return null;
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="PLUGIN_MODULE" version="4">
- <component name="DevKit.ModuleBuildProperties" url="file://$MODULE_DIR$/META-INF/plugin.xml" />
- <component name="NewModuleRootManager" inherit-compiler-output="false">
- <output url="file://$MODULE_DIR$/out/production/training" />
- <output-test url="file://$MODULE_DIR$/out/test/training" />
- <exclude-output />
- <content url="file://$MODULE_DIR$">
- <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/res" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/testsData" type="java-test-resource" />
- <excludeFolder url="file://$MODULE_DIR$/../training-util/src/sandbox" />
- </content>
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- <orderEntry type="module-library">
- <library>
- <CLASSES>
- <root url="jar://$MODULE_DIR$/lib/shortcutter.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
- </orderEntry>
- <orderEntry type="module-library" scope="TEST">
- <library name="JUnit4">
- <CLASSES>
- <root url="jar://$APPLICATION_HOME_DIR$/lib/junit-4.12.jar!/" />
- <root url="jar://$APPLICATION_HOME_DIR$/lib/hamcrest-core-1.3.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
- </orderEntry>
- </component>
-</module>
\ No newline at end of file