Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.gmt.tcs-feature/.project17
-rw-r--r--plugins/org.eclipse.gmt.tcs-feature/about.html28
-rw-r--r--plugins/org.eclipse.gmt.tcs-feature/build.properties16
-rw-r--r--plugins/org.eclipse.gmt.tcs-feature/epl-v10.html304
-rw-r--r--plugins/org.eclipse.gmt.tcs-feature/feature.properties145
-rw-r--r--plugins/org.eclipse.gmt.tcs-feature/feature.xml315
-rw-r--r--plugins/org.eclipse.gmt.tcs-feature/license.html319
-rw-r--r--plugins/org.eclipse.gmt.tcs-feature/license.txt87
-rw-r--r--plugins/org.eclipse.gmt.tcs-feature/modeling32.pngbin0 -> 2414 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs-feature/rootfiles/epl-v10.html304
-rw-r--r--plugins/org.eclipse.gmt.tcs-feature/rootfiles/notice.html79
-rw-r--r--plugins/org.eclipse.gmt.tcs-feature/tcs32.pngbin0 -> 808 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.actions/.classpath7
-rw-r--r--plugins/org.eclipse.gmt.tcs.actions/.project28
-rw-r--r--plugins/org.eclipse.gmt.tcs.actions/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--plugins/org.eclipse.gmt.tcs.actions/META-INF/MANIFEST.MF15
-rw-r--r--plugins/org.eclipse.gmt.tcs.actions/about.html28
-rw-r--r--plugins/org.eclipse.gmt.tcs.actions/bin/org/eclipse/gmt/tcs/actions/Activator.classbin0 -> 914 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.actions/bin/org/eclipse/gmt/tcs/actions/ExtractAction.classbin0 -> 2096 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.actions/bin/org/eclipse/gmt/tcs/actions/InjectAction.classbin0 -> 1710 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.actions/bin/org/eclipse/gmt/tcs/actions/StartUp.classbin0 -> 405 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.actions/build.properties12
-rw-r--r--plugins/org.eclipse.gmt.tcs.actions/plugin.properties3
-rw-r--r--plugins/org.eclipse.gmt.tcs.actions/plugin.xml31
-rw-r--r--plugins/org.eclipse.gmt.tcs.actions/src/org/eclipse/gmt/tcs/actions/Activator.java63
-rw-r--r--plugins/org.eclipse.gmt.tcs.actions/src/org/eclipse/gmt/tcs/actions/ExtractAction.java114
-rw-r--r--plugins/org.eclipse.gmt.tcs.actions/src/org/eclipse/gmt/tcs/actions/InjectAction.java78
-rw-r--r--plugins/org.eclipse.gmt.tcs.actions/src/org/eclipse/gmt/tcs/actions/StartUp.java31
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/.classpath7
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/.project28
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/.settings/org.eclipse.jdt.core.prefs12
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/META-INF/MANIFEST.MF23
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/about.html28
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/build.properties14
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/plugin.properties3
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/plugin.xml14
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/resources/templates/MANIFEST.MF6
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/resources/templates/annotations.ann21
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/resources/templates/build.properties5
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/resources/templates/extractor.xml56
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/resources/templates/injector.xml38
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/resources/templates/metamodel.km332
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/resources/templates/plugin.xml17
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/resources/templates/syntax.tcs209
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/schema/parserGenerator.exsd109
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/Activator.java64
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ParserGenerator.java23
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ParserGeneratorErrorListener.java27
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ProblemReporter.java26
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/TCSBuilder.java556
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/TCSBuilderCT.java306
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/CompositeTransformation.java46
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/Metamodel.java74
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/Origin.java26
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/ResourceLocator.java28
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ACGTransformation.java131
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ATLRefinedTargetDefinition.java32
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ATLSourceDefinition.java41
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ATLTargetDefinition.java41
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ATLTransformation.java120
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/CompositeTransformationSourceDefinition.java41
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/CompositeTransformationTargetDefinition.java42
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ModelSourceDefinition.java35
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ModelTargetDefinition.java34
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/SourceDefinition.java28
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/TCSExtraction.java74
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/TCSInjection.java114
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/TargetDefinition.java28
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/Transformation.java47
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/usage/Source.java36
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/usage/Target.java47
-rw-r--r--plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/usage/TransformationUsage.java35
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/.classpath10
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/.project28
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/META-INF/MANIFEST.MF19
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/about.html28
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/build.properties18
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/copy.binaries.from_ammacore.xml27
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/org.eclipse.gmt.tcs.dsls copy.binaries.from_ammacore.xml.launch17
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/plugin.properties3
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/plugin.xml30
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/ANTLR/Metamodel/ANTLR.ecore116
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/ANTLR/Syntax/ANTLR-TCS.xmi638
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/Annotation/Compiler/ApplyAnnotations2Ecore.asm1411
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/Annotation/Metamodel/Annotation.ecore61
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/Editor/Compiler/TCS2Editor.asm1585
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/Editor/Metamodel/Editor.ecore59
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Compiler/KM32Ecore.asm1866
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Editor/KM3-Editor.xmi94
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Helpers/KM3Helpers.asm214
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Metamodel/KM3.ecore64
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Outline/KM3-Outline.xmi70
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Syntax/KM3-TCS.xmi345
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/WFR/KM32Problem.asm3930
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/Outline/Compiler/KM32Outline.asm975
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/Outline/Metamodel/Outline.ecore36
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/Problem/Metamodel/Problem.ecore18
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Compiler/TCS2ANTLR.asm22984
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Compiler/TCS2ANTLRv3Actions.asm335
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Editor/TCS-Editor.xmi140
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Metamodel/TCS.ecore300
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Outline/TCS-Outline.xmi336
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Syntax/TCS-TCS.xmi1376
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/WFR/TCS2Problem.asm3155
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/contents.list34
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/resources/libs/strings.asm2403
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/src/org/eclipse/gmt/tcs/dsls/Activator.java64
-rw-r--r--plugins/org.eclipse.gmt.tcs.dsls/src/org/eclipse/gmt/tcs/dsls/DSLResourceProvider.java33
-rw-r--r--plugins/org.eclipse.gmt.tcs.emfresource/.classpath7
-rw-r--r--plugins/org.eclipse.gmt.tcs.emfresource/.project28
-rw-r--r--plugins/org.eclipse.gmt.tcs.emfresource/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--plugins/org.eclipse.gmt.tcs.emfresource/META-INF/MANIFEST.MF15
-rw-r--r--plugins/org.eclipse.gmt.tcs.emfresource/about.html28
-rw-r--r--plugins/org.eclipse.gmt.tcs.emfresource/bin/org/eclipse/gmt/tcs/emfresource/Activator.classbin0 -> 923 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.emfresource/bin/org/eclipse/gmt/tcs/emfresource/LanguageRegistryListener.classbin0 -> 1522 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.emfresource/bin/org/eclipse/gmt/tcs/emfresource/TCSResource.classbin0 -> 2277 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.emfresource/bin/org/eclipse/gmt/tcs/emfresource/TCSResourceFactoryImpl.classbin0 -> 967 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.emfresource/build.properties7
-rw-r--r--plugins/org.eclipse.gmt.tcs.emfresource/plugin.properties3
-rw-r--r--plugins/org.eclipse.gmt.tcs.emfresource/plugin.xml10
-rw-r--r--plugins/org.eclipse.gmt.tcs.emfresource/src/org/eclipse/gmt/tcs/emfresource/Activator.java65
-rw-r--r--plugins/org.eclipse.gmt.tcs.emfresource/src/org/eclipse/gmt/tcs/emfresource/LanguageRegistryListener.java34
-rw-r--r--plugins/org.eclipse.gmt.tcs.emfresource/src/org/eclipse/gmt/tcs/emfresource/TCSResource.java131
-rw-r--r--plugins/org.eclipse.gmt.tcs.emfresource/src/org/eclipse/gmt/tcs/emfresource/TCSResourceFactoryImpl.java34
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/.classpath7
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/.project28
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/.settings/org.eclipse.jdt.core.prefs12
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/META-INF/MANIFEST.MF10
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/about.html28
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/ASMModelAdapter.classbin0 -> 5095 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/ModelAdapter.classbin0 -> 1011 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/PrettyPrinter.classbin0 -> 24303 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/TCSExtractionException.classbin0 -> 549 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/TCSExtractor.classbin0 -> 2299 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/TCSExtractorPrintStream.classbin0 -> 2087 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/TCSExtractorStream.classbin0 -> 566 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/build.properties13
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/plugin.properties3
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/ASMModelAdapter.java133
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/ModelAdapter.java53
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/PrettyPrinter.java962
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/TCSExtractionException.java27
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/TCSExtractor.java63
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/TCSExtractorPrintStream.java83
-rw-r--r--plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/TCSExtractorStream.java46
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/.classpath7
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/.project28
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/.settings/org.eclipse.jdt.core.prefs12
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/META-INF/MANIFEST.MF13
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/about.html28
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ASMModelAdapter.classbin0 -> 7640 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/CompletionInformation.classbin0 -> 309 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ElementTrace.classbin0 -> 1588 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ModelAdapter.classbin0 -> 734 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ParserLauncher$1.classbin0 -> 1010 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ParserLauncher.classbin0 -> 4352 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ReferenceLocation.classbin0 -> 678 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSClassLoader.classbin0 -> 815 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSInjector.classbin0 -> 2221 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSRuntime$Context.classbin0 -> 4360 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSRuntime$RefSetting.classbin0 -> 7512 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSRuntime.classbin0 -> 9747 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/wrappers/ParserWrapper.classbin0 -> 1268 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/wrappers/antlr3/ANTLR3LocationToken.classbin0 -> 1022 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/wrappers/antlr3/ParserWrapper.classbin0 -> 9648 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/build.properties13
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/plugin.properties3
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ASMModelAdapter.java146
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/CompletionInformation.java28
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ElementTrace.java66
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ModelAdapter.java41
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ParserLauncher.java114
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ReferenceLocation.java40
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/TCSClassLoader.java37
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/TCSInjector.java78
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/TCSRuntime.java710
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/wrappers/ParserWrapper.java51
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/wrappers/antlr3/ANTLR3LocationToken.java49
-rw-r--r--plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/wrappers/antlr3/ParserWrapper.java252
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/.classpath7
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/.project28
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/META-INF/MANIFEST.MF18
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/about.html28
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/ASMModelFactory.classbin0 -> 2654 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/Activator.classbin0 -> 911 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/Language.classbin0 -> 1070 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/LanguageRegistry.classbin0 -> 807 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/LanguageRegistryListener.classbin0 -> 224 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/LanguageSource.classbin0 -> 558 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/ModelFactory.classbin0 -> 396 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/RegularVMLauncher.classbin0 -> 790 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/Utils$1.classbin0 -> 1596 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/Utils.classbin0 -> 3073 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/VMLauncher.classbin0 -> 218 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/AdHocLanguageRegistry.classbin0 -> 7651 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/ModelCache.classbin0 -> 1396 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/PluginLanguage$ModelCacheFromURL.classbin0 -> 1323 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/PluginLanguage.classbin0 -> 2771 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/Startup.classbin0 -> 657 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/TCSInjection.classbin0 -> 988 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage$ModelCacheFromIFile.classbin0 -> 2044 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage.classbin0 -> 5020 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/build.properties14
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/plugin.properties3
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/plugin.xml12
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/schema/language.exsd151
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/schema/registryListener.exsd97
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/ASMModelFactory.java59
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/Activator.java63
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/Language.java62
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/LanguageRegistry.java48
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/LanguageRegistryListener.java22
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/LanguageSource.java46
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/ModelFactory.java36
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/RegularVMLauncher.java39
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/Utils.java95
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/VMLauncher.java24
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/AdHocLanguageRegistry.java174
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/ModelCache.java61
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/PluginLanguage.java129
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/Startup.java34
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/TCSInjection.java60
-rw-r--r--plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage.java330
-rw-r--r--plugins/org.eclipse.gmt.tcs.wizard/.classpath7
-rw-r--r--plugins/org.eclipse.gmt.tcs.wizard/.project28
-rw-r--r--plugins/org.eclipse.gmt.tcs.wizard/.settings/org.eclipse.jdt.core.prefs12
-rw-r--r--plugins/org.eclipse.gmt.tcs.wizard/META-INF/MANIFEST.MF15
-rw-r--r--plugins/org.eclipse.gmt.tcs.wizard/about.html28
-rw-r--r--plugins/org.eclipse.gmt.tcs.wizard/build.properties8
-rw-r--r--plugins/org.eclipse.gmt.tcs.wizard/plugin.properties2
-rw-r--r--plugins/org.eclipse.gmt.tcs.wizard/plugin.xml22
-rw-r--r--plugins/org.eclipse.gmt.tcs.wizard/resources/tcsicon.pngbin0 -> 808 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs.wizard/src/org/eclipse/gmt/tcs/wizard/Activator.java64
-rw-r--r--plugins/org.eclipse.gmt.tcs.wizard/src/org/eclipse/gmt/tcs/wizard/TCSProjectWizard.java188
-rw-r--r--plugins/org.eclipse.gmt.tcs.wizard/src/org/eclipse/gmt/tcs/wizard/TCSProjectWizardPage.java121
-rw-r--r--plugins/org.eclipse.gmt.tcs/.project22
-rw-r--r--plugins/org.eclipse.gmt.tcs/META-INF/MANIFEST.MF7
-rw-r--r--plugins/org.eclipse.gmt.tcs/about.html28
-rw-r--r--plugins/org.eclipse.gmt.tcs/about.ini17
-rw-r--r--plugins/org.eclipse.gmt.tcs/about.mappings6
-rw-r--r--plugins/org.eclipse.gmt.tcs/about.properties22
-rw-r--r--plugins/org.eclipse.gmt.tcs/build.properties8
-rw-r--r--plugins/org.eclipse.gmt.tcs/modeling32.pngbin0 -> 2414 bytes
-rw-r--r--plugins/org.eclipse.gmt.tcs/plugin.properties3
-rw-r--r--plugins/org.eclipse.gmt.tcs/tcs32.pngbin0 -> 808 bytes
246 files changed, 53385 insertions, 0 deletions
diff --git a/plugins/org.eclipse.gmt.tcs-feature/.project b/plugins/org.eclipse.gmt.tcs-feature/.project
new file mode 100644
index 0000000..a931114
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs-feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.gmt.tcs-feature</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.FeatureBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.FeatureNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.gmt.tcs-feature/about.html b/plugins/org.eclipse.gmt.tcs-feature/about.html
new file mode 100644
index 0000000..7cc291c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs-feature/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>January 21, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs-feature/build.properties b/plugins/org.eclipse.gmt.tcs-feature/build.properties
new file mode 100644
index 0000000..b4df6b8
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs-feature/build.properties
@@ -0,0 +1,16 @@
+bin.includes = feature.xml,\
+ epl-v10.html,\
+ feature.properties,\
+ license.html,\
+ license.txt,\
+ modeling32.png,\
+ about.html,\
+ tcs32.png
+src.includes = about.html,\
+ epl-v10.html,\
+ feature.properties,\
+ feature.xml,\
+ license.html,\
+ license.txt,\
+ modeling32.png,\
+ tcs32.png
diff --git a/plugins/org.eclipse.gmt.tcs-feature/epl-v10.html b/plugins/org.eclipse.gmt.tcs-feature/epl-v10.html
new file mode 100644
index 0000000..b15cf1a
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs-feature/epl-v10.html
@@ -0,0 +1,304 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<link rel=File-List
+href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
+<title>Eclipse Public License - Version 1.0</title>
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+ {
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:0;
+ mso-font-pitch:variable;
+ mso-font-signature:553679495 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ }
+p
+ {margin-right:0in;
+ mso-margin-top-alt:auto;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ }
+p.BalloonText, li.BalloonText, div.BalloonText
+ {mso-style-name:"Balloon Text";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:8.0pt;
+
+ }
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+-->
+</style>
+</head>
+
+<body lang="EN-US" style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
+</p>
+
+<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
+THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
+REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
+OF THIS AGREEMENT.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and<br clear=left>
+b) in the case of each subsequent Contributor:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+changes to the Program, and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+additions to the Program;</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
+such changes and/or additions to the Program originate from and are distributed
+by that particular Contributor. A Contribution 'originates' from a Contributor
+if it was added to the Program by such Contributor itself or anyone acting on
+such Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii) are not derivative
+works of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
+entity that distributes the Program.</span> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
+claims licensable by a Contributor which are necessarily infringed by the use
+or sale of its Contribution alone or when combined with the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
+distributed in accordance with this Agreement.</span> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
+receives the Program under this Agreement, including all Contributors.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+a non-exclusive, worldwide, royalty-free copyright license to<span
+style='color:red'> </span>reproduce, prepare derivative works of, publicly
+display, publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and object code
+form.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
+patent license under Licensed Patents to make, use, sell, offer to sell, import
+and otherwise transfer the Contribution of such Contributor, if any, in source
+code and object code form. This patent license shall apply to the combination
+of the Contribution and the Program if, at the time the Contribution is added
+by the Contributor, such addition of the Contribution causes such combination
+to be covered by the Licensed Patents. The patent license shall not apply to
+any other combinations which include the Contribution. No hardware per se is
+licensed hereunder. </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
+Recipient understands that although each Contributor grants the licenses to its
+Contributions set forth herein, no assurances are provided by any Contributor
+that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement of intellectual
+property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For example,
+if a third party patent license is required to allow Recipient to distribute
+the Program, it is Recipient's responsibility to acquire that license before
+distributing the Program.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
+Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement. </span></p>
+
+<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
+Program in object code form under its own license agreement, provided that:</span>
+</p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it complies with the terms and conditions of this Agreement; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+its license agreement:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages, such
+as lost profits; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
+states that any provisions which differ from this Agreement are offered by that
+Contributor alone and not by any other party; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
+states that source code for the Program is available from such Contributor, and
+informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
+
+<p><span style='font-size:10.0pt'>When the Program is made available in source
+code form:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it must be made available under this Agreement; and </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
+copy of this Agreement must be included with each copy of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
+copyright notices contained within the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
+originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution. </span></p>
+
+<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
+
+<p><span style='font-size:10.0pt'>Commercial distributors of software may
+accept certain responsibilities with respect to end users, business partners
+and the like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the
+Program in a commercial product offering, such Contributor (&quot;Commercial
+Contributor&quot;) hereby agrees to defend and indemnify every other
+Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
+costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified Contributor to
+the extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense and
+any related settlement negotiations. The Indemnified Contributor may participate
+in any such claim at its own expense.</span> </p>
+
+<p><span style='font-size:10.0pt'>For example, a Contributor might include the
+Program in a commercial product offering, Product X. That Contributor is then a
+Commercial Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under this
+section, the Commercial Contributor would have to defend claims against the
+other Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and distributing the
+Program and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations. </span></p>
+
+<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
+THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
+
+<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
+or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.</span> </p>
+
+<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with
+other software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed. </span></p>
+
+<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
+shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive. </span></p>
+
+<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
+copies of this Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the initial
+Agreement Steward. The Eclipse Foundation may assign the responsibility to
+serve as the Agreement Steward to a suitable separate entity. Each new version
+of the Agreement will be given a distinguishing version number. The Program
+(including Contributions) may always be distributed subject to the version of
+the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.</span> </p>
+
+<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
+State of New York and the intellectual property laws of the United States of
+America. No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.</span> </p>
+
+<p class=MsoNormal></p>
+
+</div>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs-feature/feature.properties b/plugins/org.eclipse.gmt.tcs-feature/feature.properties
new file mode 100644
index 0000000..dd75cbc
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs-feature/feature.properties
@@ -0,0 +1,145 @@
+# /**
+# * <copyright>
+# *
+# * Copyright (c) 2007-2008 INRIA.
+# * All rights reserved. This program and the accompanying materials
+# * are made available under the terms of the Eclipse Public License v1.0
+# * which accompanies this distribution, and is available at
+# * http://www.eclipse.org/legal/epl-v10.html
+# *
+# * Contributors:
+# * INRIA
+# *
+# * </copyright>
+# *
+# */
+
+# NLS_MESSAGEFORMAT_VAR
+
+# ==============================================================================
+# Do not change the properties between this line and the last line containing:
+# %%% END OF TRANSLATED PROPERTIES %%%
+# Instead, either redefine an existing property, or create a new property,
+# append it to the end of the file, and change the code to use the new name.
+# ==============================================================================
+
+# This file contains externalized strings for feature.xml
+# "%foo" in feature.xml corresponds to the key "foo" in this file
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file should be translated.
+
+# "featureName" property - name of the feature
+featureName=TCS Feature
+
+# "providerName" property - name of the company that provides the feature
+providerName=Eclipse.org
+
+# "description" property - description of the feature
+description=TCS Feature
+
+# "licenseURL" property - URL of the "Feature License"
+# do not translate value - just change to point to a locale-specific HTML page
+licenseURL=license.html
+
+# ==============================================================================
+# %%% END OF TRANSLATED PROPERTIES %%%
+# The above properties have been shipped for translation.
+# ==============================================================================
+
+# "license" property - text of the "Feature Update License"
+# should be plain text version of license agreement pointed to be "licenseURL"
+license=\
+ECLIPSE FOUNDATION SOFTWARE USER AGREEMENT\n\
+January 28, 2004\n\
+\n\
+Usage Of Content\n\
+\n\
+THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
+OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
+USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
+AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
+NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU\n\
+AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
+AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
+OR NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE\n\
+TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
+OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
+BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
+\n\
+Applicable Licenses\n\
+\n\
+Unless otherwise indicated, all Content made available by the Eclipse Foundation\n\
+is provided to you under the terms and conditions of the Eclipse Public\n\
+License Version 1.0 ("EPL"). A copy of the EPL is provided with this\n\
+Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
+For purposes of the EPL, "Program" will mean the Content.\n\
+\n\
+Content includes, but is not limited to, source code, object code,\n\
+documentation and other files maintained in the Eclipse.org CVS\n\
+repository ("Repository") in CVS modules ("Modules") and made available\n\
+as downloadable archives ("Downloads").\n\
+\n\
+Content may be apportioned into plug-ins ("Plug-ins"), plug-in fragments\n\
+("Fragments"), and features ("Features"). A Feature is a bundle of one or\n\
+more Plug-ins and/or Fragments and associated material. Files named\n\
+"feature.xml" may contain a list of the names and version numbers of the\n\
+Plug-ins and/or Fragments associated with a Feature. Plug-ins and Fragments\n\
+are located in directories named "plugins" and Features are located in\n\
+directories named "features".\n\
+\n\
+Features may also include other Features ("Included Features"). Files named\n\
+"feature.xml" may contain a list of the names and version numbers of\n\
+Included Features.\n\
+\n\
+The terms and conditions governing Plug-ins and Fragments should be\n\
+contained in files named "about.html" ("Abouts"). The terms and\n\
+conditions governing Features and Included Features should be contained\n\
+in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
+Licenses may be located in any directory of a Download or Module\n\
+including, but not limited to the following locations:\n\
+\n\
+ - The top-level (root) directory\n\
+ - Plug-in and Fragment directories\n\
+ - Subdirectories of the directory named "src" of certain Plug-ins\n\
+ - Feature directories\n\
+\n\
+Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
+Eclipse Update Manager, you must agree to a license ("Feature Update\n\
+License") during the installation process. If the Feature contains\n\
+Included Features, the Feature Update License should either provide you\n\
+with the terms and conditions governing the Included Features or inform\n\
+you where you can locate them. Feature Update Licenses may be found in\n\
+the "license" property of files named "feature.properties". Such Abouts,\n\
+Feature Licenses and Feature Update Licenses contain the terms and\n\
+conditions (or references to such terms and conditions) that govern your\n\
+use of the associated Content in that directory.\n\
+\n\
+THE ABOUTS, FEATURE LICENSES AND FEATURE UPDATE LICENSES MAY REFER\n\
+TO THE CPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
+\n\
+ - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
+ - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
+ - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
+ - IBM Public License 1.0 (available at http://oss.software.ibm.com/developerworks/opensource/license10.html)\n\
+ - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
+ - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
+\n\
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
+TO USE OF THE CONTENT. If no About, Feature License or Feature Update License\n\
+is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
+govern that particular Content.\n\
+\n\
+Cryptography\n\
+\n\
+Content may contain encryption software. The country in which you are\n\
+currently may have restrictions on the import, possession, and use,\n\
+and/or re-export to another country, of encryption software. BEFORE\n\
+using any encryption software, please check the country's laws,\n\
+regulations and policies concerning the import, possession, or use,\n\
+and re-export of encryption software, to see if this is permitted.\n
+########### end of license property ##########################################
+
+
+# "updateSiteName" property - label for the update site
+updateSiteName=TCS Updates \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs-feature/feature.xml b/plugins/org.eclipse.gmt.tcs-feature/feature.xml
new file mode 100644
index 0000000..da92bc5
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs-feature/feature.xml
@@ -0,0 +1,315 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+ id="org.eclipse.gmt.tcs_feature"
+ label="TCS Feature"
+ version="0.0.1"
+ provider-name="Eclipse.org"
+ plugin="org.eclipse.gmt.tcs">
+
+ <description>
+ TCS Feature
+ </description>
+
+ <copyright url="http://www.eclipse.org/legal/epl-v10.html">
+ /*
+* Copyright (c) 2008, INRIA.
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License
+v1.0
+* which accompanies this distribution, and is available at
+* http://www.eclipse.org/legal/epl-v10.html
+*
+*/
+ </copyright>
+
+ <license url="http://www.eclipse.org/legal/epl-v10.html">
+ Eclipse Public License - v 1.0
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS
+ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE, REPRODUCTION OR
+DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT&apos;S ACCEPTANCE
+OF THIS AGREEMENT.
+1. DEFINITIONS
+&quot;Contribution&quot; means:
+a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i) changes to the Program, and
+ii) additions to the Program;
+where such changes and/or additions to the Program originate
+from and are distributed by that particular Contributor. A Contribution
+&apos;originates&apos; from a Contributor if it was added to the Program
+by such Contributor itself or anyone acting on such Contributor&apos;s
+behalf. Contributions do not include additions to the Program
+which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii)
+are not derivative works of the Program.
+&quot;Contributor&quot; means any person or entity that distributes the
+Program.
+&quot;Licensed Patents &quot; mean patent claims licensable by a Contributor
+which are necessarily infringed by the use or sale of its Contribution
+alone or when combined with the Program.
+&quot;Program&quot; means the Contributions distributed in accordance with
+this Agreement.
+&quot;Recipient&quot; means anyone who receives the Program under this
+Agreement, including all Contributors.
+2. GRANT OF RIGHTS
+a) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free copyright
+license to reproduce, prepare derivative works of, publicly display,
+publicly perform, distribute and sublicense the Contribution
+of such Contributor, if any, and such derivative works, in source
+code and object code form.
+b) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free patent
+license under Licensed Patents to make, use, sell, offer to sell,
+import and otherwise transfer the Contribution of such Contributor,
+if any, in source code and object code form. This patent license
+shall apply to the combination of the Contribution and the Program
+if, at the time the Contribution is added by the Contributor,
+such addition of the Contribution causes such combination to
+be covered by the Licensed Patents. The patent license shall
+not apply to any other combinations which include the Contribution.
+No hardware per se is licensed hereunder.
+c) Recipient understands that although each Contributor grants
+the licenses to its Contributions set forth herein, no assurances
+are provided by any Contributor that the Program does not infringe
+the patent or other intellectual property rights of any other
+entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement
+of intellectual property rights or otherwise. As a condition
+to exercising the rights and licenses granted hereunder, each
+Recipient hereby assumes sole responsibility to secure any other
+intellectual property rights needed, if any. For example, if
+a third party patent license is required to allow Recipient to
+distribute the Program, it is Recipient&apos;s responsibility to acquire
+that license before distributing the Program.
+d) Each Contributor represents that to its knowledge it has sufficient
+copyright rights in its Contribution, if any, to grant the copyright
+license set forth in this Agreement.
+3. REQUIREMENTS
+A Contributor may choose to distribute the Program in object
+code form under its own license agreement, provided that:
+a) it complies with the terms and conditions of this Agreement;
+and
+b) its license agreement:
+i) effectively disclaims on behalf of all Contributors all warranties
+and conditions, express and implied, including warranties or
+conditions of title and non-infringement, and implied warranties
+or conditions of merchantability and fitness for a particular
+purpose;
+ii) effectively excludes on behalf of all Contributors all liability
+for damages, including direct, indirect, special, incidental
+and consequential damages, such as lost profits;
+iii) states that any provisions which differ from this Agreement
+are offered by that Contributor alone and not by any other party;
+and
+iv) states that source code for the Program is available from
+such Contributor, and informs licensees how to obtain it in a
+reasonable manner on or through a medium customarily used for
+software exchange.
+When the Program is made available in source code form:
+a) it must be made available under this Agreement; and
+b) a copy of this Agreement must be included with each copy of
+the Program.
+Contributors may not remove or alter any copyright notices contained
+within the Program.
+Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.
+4. COMMERCIAL DISTRIBUTION
+Commercial distributors of software may accept certain responsibilities
+with respect to end users, business partners and the like. While
+this license is intended to facilitate the commercial use of
+the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create
+potential liability for other Contributors. Therefore, if a Contributor
+includes the Program in a commercial product offering, such Contributor
+(&quot;Commercial Contributor&quot;) hereby agrees to defend and indemnify
+every other Contributor (&quot;Indemnified Contributor&quot;) against any
+losses, damages and costs (collectively &quot;Losses&quot;) arising from
+claims, lawsuits and other legal actions brought by a third party
+against the Indemnified Contributor to the extent caused by the
+acts or omissions of such Commercial Contributor in connection
+with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any
+claims or Losses relating to any actual or alleged intellectual
+property infringement. In order to qualify, an Indemnified Contributor
+must: a) promptly notify the Commercial Contributor in writing
+of such claim, and b) allow the Commercial Contributor to control,
+and cooperate with the Commercial Contributor in, the defense
+and any related settlement negotiations. The Indemnified Contributor
+may participate in any such claim at its own expense.
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor&apos;s responsibility
+alone. Under this section, the Commercial Contributor would have
+to defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any
+other Contributor to pay any damages as a result, the Commercial
+Contributor must pay those damages.
+5. NO WARRANTY
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM
+IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS
+OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
+ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with
+its exercise of rights under this Agreement , including but not
+limited to the risks and costs of program errors, compliance
+with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations.
+6. DISCLAIMER OF LIABILITY
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
+NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE
+OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGES.
+7. GENERAL
+If any provision of this Agreement is invalid or unenforceable
+under applicable law, it shall not affect the validity or enforceability
+of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be
+reformed to the minimum extent necessary to make such provision
+valid and enforceable.
+If Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging
+that the Program itself (excluding combinations of the Program
+with other software or hardware) infringes such Recipient&apos;s patent(s),
+then such Recipient&apos;s rights granted under Section 2(b) shall
+terminate as of the date such litigation is filed.
+All Recipient&apos;s rights under this Agreement shall terminate if
+it fails to comply with any of the material terms or conditions
+of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If
+all Recipient&apos;s rights under this Agreement terminate, Recipient
+agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient&apos;s obligations under
+this Agreement and any licenses granted by Recipient relating
+to the Program shall continue and survive.
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted
+and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including
+revisions) of this Agreement from time to time. No one other
+than the Agreement Steward has the right to modify this Agreement.
+The Eclipse Foundation is the initial Agreement Steward. The
+Eclipse Foundation may assign the responsibility to serve as
+the Agreement Steward to a suitable separate entity. Each new
+version of the Agreement will be given a distinguishing version
+number. The Program (including Contributions) may always be distributed
+subject to the version of the Agreement under which it was received.
+In addition, after a new version of the Agreement is published,
+Contributor may elect to distribute the Program (including its
+Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights
+or licenses to the intellectual property of any Contributor under
+this Agreement, whether expressly, by implication, estoppel or
+otherwise. All rights in the Program not expressly granted under
+this Agreement are reserved.
+This Agreement is governed by the laws of the State of New York
+and the intellectual property laws of the United States of America.
+No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose.
+Each party waives its rights to a jury trial in any resulting
+litigation.
+ </license>
+
+ <requires>
+ <import plugin="org.eclipse.core.runtime"/>
+ <import plugin="org.eclipse.m2m.atl.engine"/>
+ <import plugin="org.eclipse.core.resources"/>
+ <import plugin="org.eclipse.jdt.core"/>
+ <import plugin="org.eclipse.jdt.core.manipulation"/>
+ <import plugin="org.eclipse.emf.common"/>
+ <import plugin="org.eclipse.ui"/>
+ <import plugin="org.eclipse.m2m.atl.dsls"/>
+ <import plugin="org.eclipse.emf.ecore"/>
+ <import plugin="org.eclipse.emf.ecore.xmi"/>
+ <import plugin="org.eclipse.m2m.atl.engine.vm"/>
+ <import plugin="org.eclipse.m2m.atl.dsls" version="0.0.1" match="greaterOrEqual"/>
+ <import plugin="org.eclipse.jface.text"/>
+ <import plugin="org.eclipse.ui.editors"/>
+ <import plugin="org.eclipse.ui.workbench.texteditor"/>
+ <import plugin="org.eclipse.ui.ide"/>
+ <import plugin="org.eclipse.emf.edit.ui"/>
+ <import plugin="org.eclipse.m2m.atl.ocl.core"/>
+ </requires>
+
+ <plugin
+ id="org.eclipse.gmt.tcs.builder"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.gmt.tcs.wizard"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.gmt.tcs"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.gmt.tcs.actions"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.gmt.tcs.dsls"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.gmt.tcs.emfresource"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.gmt.tcs.metadata"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.gmt.tcs.extractor"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.gmt.tcs.injector"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+ <plugin
+ id="org.eclipse.am3.tools.tge"
+ download-size="0"
+ install-size="0"
+ version="0.0.0"
+ unpack="false"/>
+
+</feature>
diff --git a/plugins/org.eclipse.gmt.tcs-feature/license.html b/plugins/org.eclipse.gmt.tcs-feature/license.html
new file mode 100644
index 0000000..be33262
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs-feature/license.html
@@ -0,0 +1,319 @@
+<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"><head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
+<meta name="ProgId" content="Word.Document">
+<meta name="Generator" content="Microsoft Word 9">
+<meta name="Originator" content="Microsoft Word 9">
+<link rel="File-List" href="http://www.eclipse.org/legal/Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml"><title>Eclipse Public License - Version 1.0</title><!--[if gte mso 9]><xml>
+ <o:DocumentProperties>
+ <o:Revision>2</o:Revision>
+ <o:TotalTime>3</o:TotalTime>
+ <o:Created>2004-03-05T23:03:00Z</o:Created>
+ <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
+ <o:Pages>4</o:Pages>
+ <o:Words>1626</o:Words>
+ <o:Characters>9270</o:Characters>
+ <o:Lines>77</o:Lines>
+ <o:Paragraphs>18</o:Paragraphs>
+ <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
+ <o:Version>9.4402</o:Version>
+ </o:DocumentProperties>
+</xml><![endif]--><!--[if gte mso 9]><xml>
+ <w:WordDocument>
+ <w:TrackRevisions/>
+ </w:WordDocument>
+</xml><![endif]-->
+
+
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+ {font-family:Tahoma;
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:0;
+ mso-generic-font-family:swiss;
+ mso-font-pitch:variable;
+ mso-font-signature:553679495 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+p
+ {margin-right:0in;
+ mso-margin-top-alt:auto;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ font-family:"Times New Roman";
+ mso-fareast-font-family:"Times New Roman";}
+p.BalloonText, li.BalloonText, div.BalloonText
+ {mso-style-name:"Balloon Text";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:8.0pt;
+ font-family:Tahoma;
+ mso-fareast-font-family:"Times New Roman";}
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+-->
+</style></head><body style="" lang="EN-US">
+
+<div class="Section1">
+
+<p style="text-align: center;" align="center"><b>Eclipse Public License - v 1.0</b>
+</p>
+
+<p><span style="font-size: 10pt;">THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
+THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE,
+REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
+OF THIS AGREEMENT.</span> </p>
+
+<p><b><span style="font-size: 10pt;">1. DEFINITIONS</span></b> </p>
+
+<p><span style="font-size: 10pt;">"Contribution" means:</span> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and<br clear="left">
+b) in the case of each subsequent Contributor:</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">i)
+changes to the Program, and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">ii)
+additions to the Program;</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">where
+such changes and/or additions to the Program originate from and are distributed
+by that particular Contributor. A Contribution 'originates' from a Contributor
+if it was added to the Program by such Contributor itself or anyone acting on
+such Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii) are not derivative
+works of the Program. </span></p>
+
+<p><span style="font-size: 10pt;">"Contributor" means any person or
+entity that distributes the Program.</span> </p>
+
+<p><span style="font-size: 10pt;">"Licensed Patents " mean patent
+claims licensable by a Contributor which are necessarily infringed by the use
+or sale of its Contribution alone or when combined with the Program. </span></p>
+
+<p><span style="font-size: 10pt;">"Program" means the Contributions
+distributed in accordance with this Agreement.</span> </p>
+
+<p><span style="font-size: 10pt;">"Recipient" means anyone who
+receives the Program under this Agreement, including all Contributors.</span> </p>
+
+<p><b><span style="font-size: 10pt;">2. GRANT OF RIGHTS</span></b> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+a non-exclusive, worldwide, royalty-free copyright license to<span style="color: red;"> </span>reproduce, prepare derivative works of, publicly
+display, publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and object code
+form.</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b)
+Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide,<span style="color: green;"> </span>royalty-free
+patent license under Licensed Patents to make, use, sell, offer to sell, import
+and otherwise transfer the Contribution of such Contributor, if any, in source
+code and object code form. This patent license shall apply to the combination
+of the Contribution and the Program if, at the time the Contribution is added
+by the Contributor, such addition of the Contribution causes such combination
+to be covered by the Licensed Patents. The patent license shall not apply to
+any other combinations which include the Contribution. No hardware per se is
+licensed hereunder. </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">c)
+Recipient understands that although each Contributor grants the licenses to its
+Contributions set forth herein, no assurances are provided by any Contributor
+that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement of intellectual
+property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For example,
+if a third party patent license is required to allow Recipient to distribute
+the Program, it is Recipient's responsibility to acquire that license before
+distributing the Program.</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">d)
+Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement. </span></p>
+
+<p><b><span style="font-size: 10pt;">3. REQUIREMENTS</span></b> </p>
+
+<p><span style="font-size: 10pt;">A Contributor may choose to distribute the
+Program in object code form under its own license agreement, provided that:</span>
+</p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+it complies with the terms and conditions of this Agreement; and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b)
+its license agreement:</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">i)
+effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose; </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">ii)
+effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages, such
+as lost profits; </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">iii)
+states that any provisions which differ from this Agreement are offered by that
+Contributor alone and not by any other party; and</span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">iv)
+states that source code for the Program is available from such Contributor, and
+informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.<span style="color: blue;"> </span></span></p>
+
+<p><span style="font-size: 10pt;">When the Program is made available in source
+code form:</span> </p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">a)
+it must be made available under this Agreement; and </span></p>
+
+<p class="MsoNormal" style="margin-left: 0.5in;"><span style="font-size: 10pt;">b) a
+copy of this Agreement must be included with each copy of the Program. </span></p>
+
+<p><span style="font-size: 10pt;">Contributors may not remove or alter any
+copyright notices contained within the Program. </span></p>
+
+<p><span style="font-size: 10pt;">Each Contributor must identify itself as the
+originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution. </span></p>
+
+<p><b><span style="font-size: 10pt;">4. COMMERCIAL DISTRIBUTION</span></b> </p>
+
+<p><span style="font-size: 10pt;">Commercial distributors of software may
+accept certain responsibilities with respect to end users, business partners
+and the like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the
+Program in a commercial product offering, such Contributor ("Commercial
+Contributor") hereby agrees to defend and indemnify every other
+Contributor ("Indemnified Contributor") against any losses, damages and
+costs (collectively "Losses") arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified Contributor to
+the extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense and
+any related settlement negotiations. The Indemnified Contributor may participate
+in any such claim at its own expense.</span> </p>
+
+<p><span style="font-size: 10pt;">For example, a Contributor might include the
+Program in a commercial product offering, Product X. That Contributor is then a
+Commercial Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under this
+section, the Commercial Contributor would have to defend claims against the
+other Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.</span> </p>
+
+<p><b><span style="font-size: 10pt;">5. NO WARRANTY</span></b> </p>
+
+<p><span style="font-size: 10pt;">EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and distributing the
+Program and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations. </span></p>
+
+<p><b><span style="font-size: 10pt;">6. DISCLAIMER OF LIABILITY</span></b> </p>
+
+<p><span style="font-size: 10pt;">EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
+THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
+
+<p><b><span style="font-size: 10pt;">7. GENERAL</span></b> </p>
+
+<p><span style="font-size: 10pt;">If any provision of this Agreement is invalid
+or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.</span> </p>
+
+<p><span style="font-size: 10pt;">If Recipient institutes patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with
+other software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed. </span></p>
+
+<p><span style="font-size: 10pt;">All Recipient's rights under this Agreement
+shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive. </span></p>
+
+<p><span style="font-size: 10pt;">Everyone is permitted to copy and distribute
+copies of this Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the initial
+Agreement Steward. The Eclipse Foundation may assign the responsibility to
+serve as the Agreement Steward to a suitable separate entity. Each new version
+of the Agreement will be given a distinguishing version number. The Program
+(including Contributions) may always be distributed subject to the version of
+the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.</span> </p>
+
+<p><span style="font-size: 10pt;">This Agreement is governed by the laws of the
+State of New York and the intellectual property laws of the United States of
+America. No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.</span> </p>
+
+<p class="MsoNormal"><o:p></o:p></p>
+
+</div>
+
+</body></html> \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs-feature/license.txt b/plugins/org.eclipse.gmt.tcs-feature/license.txt
new file mode 100644
index 0000000..bc1ccc7
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs-feature/license.txt
@@ -0,0 +1,87 @@
+Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
+
diff --git a/plugins/org.eclipse.gmt.tcs-feature/modeling32.png b/plugins/org.eclipse.gmt.tcs-feature/modeling32.png
new file mode 100644
index 0000000..6b08de2
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs-feature/modeling32.png
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs-feature/rootfiles/epl-v10.html b/plugins/org.eclipse.gmt.tcs-feature/rootfiles/epl-v10.html
new file mode 100644
index 0000000..b15cf1a
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs-feature/rootfiles/epl-v10.html
@@ -0,0 +1,304 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<link rel=File-List
+href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
+<title>Eclipse Public License - Version 1.0</title>
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+ {
+ panose-1:2 11 6 4 3 5 4 4 2 4;
+ mso-font-charset:0;
+ mso-font-pitch:variable;
+ mso-font-signature:553679495 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+ {mso-style-parent:"";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ }
+p
+ {margin-right:0in;
+ mso-margin-top-alt:auto;
+ mso-margin-bottom-alt:auto;
+ margin-left:0in;
+ mso-pagination:widow-orphan;
+ font-size:12.0pt;
+ }
+p.BalloonText, li.BalloonText, div.BalloonText
+ {mso-style-name:"Balloon Text";
+ margin:0in;
+ margin-bottom:.0001pt;
+ mso-pagination:widow-orphan;
+ font-size:8.0pt;
+
+ }
+@page Section1
+ {size:8.5in 11.0in;
+ margin:1.0in 1.25in 1.0in 1.25in;
+ mso-header-margin:.5in;
+ mso-footer-margin:.5in;
+ mso-paper-source:0;}
+div.Section1
+ {page:Section1;}
+-->
+</style>
+</head>
+
+<body lang="EN-US" style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
+</p>
+
+<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
+THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
+REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
+OF THIS AGREEMENT.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and<br clear=left>
+b) in the case of each subsequent Contributor:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+changes to the Program, and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+additions to the Program;</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
+such changes and/or additions to the Program originate from and are distributed
+by that particular Contributor. A Contribution 'originates' from a Contributor
+if it was added to the Program by such Contributor itself or anyone acting on
+such Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii) are not derivative
+works of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
+entity that distributes the Program.</span> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
+claims licensable by a Contributor which are necessarily infringed by the use
+or sale of its Contribution alone or when combined with the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
+distributed in accordance with this Agreement.</span> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
+receives the Program under this Agreement, including all Contributors.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+a non-exclusive, worldwide, royalty-free copyright license to<span
+style='color:red'> </span>reproduce, prepare derivative works of, publicly
+display, publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and object code
+form.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
+patent license under Licensed Patents to make, use, sell, offer to sell, import
+and otherwise transfer the Contribution of such Contributor, if any, in source
+code and object code form. This patent license shall apply to the combination
+of the Contribution and the Program if, at the time the Contribution is added
+by the Contributor, such addition of the Contribution causes such combination
+to be covered by the Licensed Patents. The patent license shall not apply to
+any other combinations which include the Contribution. No hardware per se is
+licensed hereunder. </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
+Recipient understands that although each Contributor grants the licenses to its
+Contributions set forth herein, no assurances are provided by any Contributor
+that the Program does not infringe the patent or other intellectual property
+rights of any other entity. Each Contributor disclaims any liability to Recipient
+for claims brought by any other entity based on infringement of intellectual
+property rights or otherwise. As a condition to exercising the rights and
+licenses granted hereunder, each Recipient hereby assumes sole responsibility
+to secure any other intellectual property rights needed, if any. For example,
+if a third party patent license is required to allow Recipient to distribute
+the Program, it is Recipient's responsibility to acquire that license before
+distributing the Program.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
+Each Contributor represents that to its knowledge it has sufficient copyright
+rights in its Contribution, if any, to grant the copyright license set forth in
+this Agreement. </span></p>
+
+<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
+Program in object code form under its own license agreement, provided that:</span>
+</p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it complies with the terms and conditions of this Agreement; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+its license agreement:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title
+and non-infringement, and implied warranties or conditions of merchantability
+and fitness for a particular purpose; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages, such
+as lost profits; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
+states that any provisions which differ from this Agreement are offered by that
+Contributor alone and not by any other party; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
+states that source code for the Program is available from such Contributor, and
+informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
+
+<p><span style='font-size:10.0pt'>When the Program is made available in source
+code form:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it must be made available under this Agreement; and </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
+copy of this Agreement must be included with each copy of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
+copyright notices contained within the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
+originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution. </span></p>
+
+<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
+
+<p><span style='font-size:10.0pt'>Commercial distributors of software may
+accept certain responsibilities with respect to end users, business partners
+and the like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a commercial
+product offering should do so in a manner which does not create potential
+liability for other Contributors. Therefore, if a Contributor includes the
+Program in a commercial product offering, such Contributor (&quot;Commercial
+Contributor&quot;) hereby agrees to defend and indemnify every other
+Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
+costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified Contributor to
+the extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor
+to control, and cooperate with the Commercial Contributor in, the defense and
+any related settlement negotiations. The Indemnified Contributor may participate
+in any such claim at its own expense.</span> </p>
+
+<p><span style='font-size:10.0pt'>For example, a Contributor might include the
+Program in a commercial product offering, Product X. That Contributor is then a
+Commercial Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance claims and
+warranties are such Commercial Contributor's responsibility alone. Under this
+section, the Commercial Contributor would have to defend claims against the
+other Contributors related to those performance claims and warranties, and if a
+court requires any other Contributor to pay any damages as a result, the
+Commercial Contributor must pay those damages.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
+MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and distributing the
+Program and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program errors,
+compliance with applicable laws, damage to or loss of data, programs or
+equipment, and unavailability or interruption of operations. </span></p>
+
+<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
+THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
+
+<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
+or unenforceable under applicable law, it shall not affect the validity or
+enforceability of the remainder of the terms of this Agreement, and without
+further action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.</span> </p>
+
+<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
+against any entity (including a cross-claim or counterclaim in a lawsuit)
+alleging that the Program itself (excluding combinations of the Program with
+other software or hardware) infringes such Recipient's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed. </span></p>
+
+<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
+shall terminate if it fails to comply with any of the material terms or
+conditions of this Agreement and does not cure such failure in a reasonable
+period of time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive. </span></p>
+
+<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
+copies of this Agreement, but in order to avoid inconsistency the Agreement is
+copyrighted and may only be modified in the following manner. The Agreement
+Steward reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the initial
+Agreement Steward. The Eclipse Foundation may assign the responsibility to
+serve as the Agreement Steward to a suitable separate entity. Each new version
+of the Agreement will be given a distinguishing version number. The Program
+(including Contributions) may always be distributed subject to the version of
+the Agreement under which it was received. In addition, after a new version of
+the Agreement is published, Contributor may elect to distribute the Program
+(including its Contributions) under the new version. Except as expressly stated
+in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
+the intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.</span> </p>
+
+<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
+State of New York and the intellectual property laws of the United States of
+America. No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.</span> </p>
+
+<p class=MsoNormal></p>
+
+</div>
+
+</body>
+
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs-feature/rootfiles/notice.html b/plugins/org.eclipse.gmt.tcs-feature/rootfiles/notice.html
new file mode 100644
index 0000000..901c1c0
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs-feature/rootfiles/notice.html
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html>
+<head>
+<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
+<title>Eclipse.org Software User Agreement</title>
+</head>
+
+<body lang="EN-US" link=blue vlink=purple>
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>March 17, 2005</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+ (COLLECTIVELY &quot;CONTENT&quot;). USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+ CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW. BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+ OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+ NOTICES INDICATED OR REFERENCED BELOW. IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+ CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+ (&quot;EPL&quot;). A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+ For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse.org CVS repository (&quot;Repository&quot;) in CVS
+ modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+ <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content. Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+ <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java<sup>TM</sup> ARchive) in a directory named &quot;plugins&quot;.</li>
+ <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material. Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;. Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+ and/or Fragments associated with that Feature.</li>
+ <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;). Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+ <li>The top-level (root) directory</li>
+ <li>Plug-in and Fragment directories</li>
+ <li>Inside Plug-ins and Fragments packaged as JARs</li>
+ <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+ <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Eclipse Update Manager, you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process. If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them. Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS. SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+ <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+ <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+ <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+ <li>IBM Public License 1.0 (available at <a href="http://oss.software.ibm.com/developerworks/opensource/license10.html">http://oss.software.ibm.com/developerworks/opensource/license10.html</a>)</li>
+ <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
+ <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+<h3>Cryptography</h3>
+
+<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+ another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
+ possession, or use, and re-export of encryption software, to see if this is permitted.</p>
+
+<small>Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.</small>
+</body>
+</html>
diff --git a/plugins/org.eclipse.gmt.tcs-feature/tcs32.png b/plugins/org.eclipse.gmt.tcs-feature/tcs32.png
new file mode 100644
index 0000000..33c9015
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs-feature/tcs32.png
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.actions/.classpath b/plugins/org.eclipse.gmt.tcs.actions/.classpath
new file mode 100644
index 0000000..f1b3ad8
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.actions/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.gmt.tcs.actions/.project b/plugins/org.eclipse.gmt.tcs.actions/.project
new file mode 100644
index 0000000..67a92b1
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.actions/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.gmt.tcs.actions</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.gmt.tcs.actions/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.gmt.tcs.actions/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..f1bc370
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.actions/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Sun Mar 30 23:05:33 CEST 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/plugins/org.eclipse.gmt.tcs.actions/META-INF/MANIFEST.MF b/plugins/org.eclipse.gmt.tcs.actions/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..01ccc1f
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.actions/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.gmt.tcs.actions;singleton:=true
+Bundle-Version: 0.8.0
+Bundle-Activator: org.eclipse.gmt.tcs.actions.Activator
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.gmt.tcs.metadata,
+ org.eclipse.m2m.atl.engine
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.gmt.tcs.actions/about.html b/plugins/org.eclipse.gmt.tcs.actions/about.html
new file mode 100644
index 0000000..7cc291c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.actions/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>January 21, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.actions/bin/org/eclipse/gmt/tcs/actions/Activator.class b/plugins/org.eclipse.gmt.tcs.actions/bin/org/eclipse/gmt/tcs/actions/Activator.class
new file mode 100644
index 0000000..be216bb
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.actions/bin/org/eclipse/gmt/tcs/actions/Activator.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.actions/bin/org/eclipse/gmt/tcs/actions/ExtractAction.class b/plugins/org.eclipse.gmt.tcs.actions/bin/org/eclipse/gmt/tcs/actions/ExtractAction.class
new file mode 100644
index 0000000..de4d2f5
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.actions/bin/org/eclipse/gmt/tcs/actions/ExtractAction.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.actions/bin/org/eclipse/gmt/tcs/actions/InjectAction.class b/plugins/org.eclipse.gmt.tcs.actions/bin/org/eclipse/gmt/tcs/actions/InjectAction.class
new file mode 100644
index 0000000..1c10581
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.actions/bin/org/eclipse/gmt/tcs/actions/InjectAction.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.actions/bin/org/eclipse/gmt/tcs/actions/StartUp.class b/plugins/org.eclipse.gmt.tcs.actions/bin/org/eclipse/gmt/tcs/actions/StartUp.class
new file mode 100644
index 0000000..18442f3
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.actions/bin/org/eclipse/gmt/tcs/actions/StartUp.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.actions/build.properties b/plugins/org.eclipse.gmt.tcs.actions/build.properties
new file mode 100644
index 0000000..3f16b02
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.actions/build.properties
@@ -0,0 +1,12 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties
+src.includes = src/,\
+ .classpath,\
+ .settings/,\
+ .project,\
+ build.properties,\
+ about.html
diff --git a/plugins/org.eclipse.gmt.tcs.actions/plugin.properties b/plugins/org.eclipse.gmt.tcs.actions/plugin.properties
new file mode 100644
index 0000000..0a23f59
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.actions/plugin.properties
@@ -0,0 +1,3 @@
+# NLS_MESSAGEFORMAT_VAR
+pluginName=TCS Actions (Incubation)
+providerName=Eclipse.org
diff --git a/plugins/org.eclipse.gmt.tcs.actions/plugin.xml b/plugins/org.eclipse.gmt.tcs.actions/plugin.xml
new file mode 100644
index 0000000..d6a4df9
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.actions/plugin.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.ui.popupMenus">
+ <objectContribution
+ adaptable="false"
+ id="org.eclipse.gmt.tcs.actions.Projections"
+ nameFilter="*"
+ objectClass="org.eclipse.core.resources.IFile">
+ <action
+ class="org.eclipse.gmt.tcs.actions.InjectAction"
+ enablesFor="1"
+ id="org.eclipse.gmt.tcs.actions.Injection"
+ label="Inject to EMF model">
+ </action>
+ <action
+ class="org.eclipse.gmt.tcs.actions.ExtractAction"
+ enablesFor="1"
+ id="org.eclipse.gmt.tcs.actions.Extraction"
+ label="Extract EMF model to file">
+ </action>
+ </objectContribution>
+ </extension>
+ <extension
+ point="org.eclipse.ui.startup">
+ <startup
+ class="org.eclipse.gmt.tcs.actions.StartUp">
+ </startup>
+ </extension>
+</plugin>
diff --git a/plugins/org.eclipse.gmt.tcs.actions/src/org/eclipse/gmt/tcs/actions/Activator.java b/plugins/org.eclipse.gmt.tcs.actions/src/org/eclipse/gmt/tcs/actions/Activator.java
new file mode 100644
index 0000000..ba28899
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.actions/src/org/eclipse/gmt/tcs/actions/Activator.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $$Id: Activator.java,v 1.1 2008/04/01 18:31:03 fjouault Exp $$
+ */
+package org.eclipse.gmt.tcs.actions;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ * @author Frédéric Jouault
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.gmt.tcs.actions";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.actions/src/org/eclipse/gmt/tcs/actions/ExtractAction.java b/plugins/org.eclipse.gmt.tcs.actions/src/org/eclipse/gmt/tcs/actions/ExtractAction.java
new file mode 100644
index 0000000..ab70dfa
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.actions/src/org/eclipse/gmt/tcs/actions/ExtractAction.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $$Id: ExtractAction.java,v 1.3 2008/04/08 15:11:57 fjouault Exp $$
+ */
+package org.eclipse.gmt.tcs.actions;
+
+import java.io.BufferedInputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.gmt.tcs.metadata.ASMModelFactory;
+import org.eclipse.gmt.tcs.metadata.Language;
+import org.eclipse.gmt.tcs.metadata.LanguageRegistry;
+import org.eclipse.gmt.tcs.metadata.ModelFactory;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.m2m.atl.engine.AtlEMFModelHandler;
+import org.eclipse.m2m.atl.engine.AtlModelHandler;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class ExtractAction implements IObjectActionDelegate {
+
+ private IStructuredSelection selection;
+
+ public ExtractAction() {
+ // TODO Auto-generated constructor stub
+ }
+
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void run(IAction action) {
+ IFile file = getSelectedElement();
+ Language language = getLanguage();
+ AtlEMFModelHandler amh = (AtlEMFModelHandler)AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
+ ModelFactory factory = ASMModelFactory.getDefault();
+ ASMModel metamodel = (ASMModel)language.getMetamodel(factory);
+ try {
+ BufferedInputStream in = new BufferedInputStream(file.getContents());
+ ASMModel model = amh.loadModel("model.xmi", metamodel, in);
+ in.close();
+ Map params = new HashMap();
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ language.extract(factory, model, out, params);
+ IFile outFile = file.getParent().getFile(new Path(file.getName() + "." + language.getExtension()));
+ if(outFile.exists()) {
+ outFile.setContents(new ByteArrayInputStream(out.toByteArray()), IFile.FORCE + IFile.DERIVED, null);
+ } else {
+ outFile.create(new ByteArrayInputStream(out.toByteArray()), IFile.FORCE + IFile.DERIVED, null);
+ }
+ } catch(IOException e) {
+ throw new RuntimeException("Error extracting " + file.toString(), e);
+ } catch (CoreException e) {
+ throw new RuntimeException("Error extracting " + file.toString(), e);
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void selectionChanged(IAction action, ISelection selection) {
+ this.selection = (IStructuredSelection)selection;
+ Language language = getLanguage();
+ if(language != null) {
+ action.setText("Extract " + language.getName() + " model to " + language.getName() + " file (." + language.getExtension() + ")");
+ action.setEnabled(true);
+ } else {
+ action.setEnabled(false);
+ action.setText("Cannot extract");
+ }
+ }
+
+ private Language getLanguage() {
+ IFile file = getSelectedElement();
+ if(file != null) {
+ String fileNameParts[] = getSelectedElement().getName().split("\\.");
+ if(fileNameParts.length > 2) {
+ int last = fileNameParts.length - 1;
+ if("ecore".equals(fileNameParts[last]) || "xmi".equals(fileNameParts[last])) {
+ String formatExtension = fileNameParts[last - 1];
+ Language language = LanguageRegistry.getDefault().getLanguage(formatExtension);
+ return language;
+ }
+ }
+ }
+ return null;
+ }
+ private IFile getSelectedElement() {
+ return (IFile)selection.getFirstElement();
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.actions/src/org/eclipse/gmt/tcs/actions/InjectAction.java b/plugins/org.eclipse.gmt.tcs.actions/src/org/eclipse/gmt/tcs/actions/InjectAction.java
new file mode 100644
index 0000000..3aa323a
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.actions/src/org/eclipse/gmt/tcs/actions/InjectAction.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $$Id: InjectAction.java,v 1.3 2008/04/08 15:11:57 fjouault Exp $$
+ */
+package org.eclipse.gmt.tcs.actions;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.gmt.tcs.metadata.ASMModelFactory;
+import org.eclipse.gmt.tcs.metadata.Language;
+import org.eclipse.gmt.tcs.metadata.LanguageRegistry;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.m2m.atl.dsls.textsource.IFileTextSource;
+import org.eclipse.m2m.atl.engine.AtlModelHandler;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+import org.eclipse.ui.IObjectActionDelegate;
+import org.eclipse.ui.IWorkbenchPart;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class InjectAction implements IObjectActionDelegate {
+
+ private IStructuredSelection selection;
+
+ public InjectAction() {
+ // TODO Auto-generated constructor stub
+ }
+
+ public void setActivePart(IAction action, IWorkbenchPart targetPart) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void run(IAction action) {
+ IFile file = getSelectedElement();
+ Language language = LanguageRegistry.getDefault().getLanguage(getSelectedElement().getFileExtension());
+ AtlModelHandler amh = AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
+ Map params = new HashMap();
+ ASMModel model = (ASMModel)language.inject(ASMModelFactory.getDefault(), null, new IFileTextSource(file), params);
+ amh.saveModel(model, file.getProjectRelativePath().toString() + ".xmi", file.getProject());
+ }
+
+ public void selectionChanged(IAction action, ISelection selection) {
+ this.selection = (IStructuredSelection)selection;
+ IFile file = getSelectedElement();
+ if(file != null) {
+ Language language = LanguageRegistry.getDefault().getLanguage(file.getFileExtension());
+ if(language != null) {
+ action.setText("Inject " + language.getName() + " file to " + language.getName() + " model");
+ action.setEnabled(true);
+ } else {
+ action.setEnabled(false);
+ action.setText("Cannot inject");
+ }
+ } else {
+ action.setEnabled(false);
+ }
+ }
+
+ private IFile getSelectedElement() {
+ return (IFile)selection.getFirstElement();
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.actions/src/org/eclipse/gmt/tcs/actions/StartUp.java b/plugins/org.eclipse.gmt.tcs.actions/src/org/eclipse/gmt/tcs/actions/StartUp.java
new file mode 100644
index 0000000..4b6f903
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.actions/src/org/eclipse/gmt/tcs/actions/StartUp.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: StartUp.java,v 1.1 2008/04/02 02:08:29 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.actions;
+
+import org.eclipse.ui.IStartup;
+
+/**
+ * @author Frédéric Jouault
+ *
+ */
+public class StartUp implements IStartup {
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.IStartup#earlyStartup()
+ */
+ public void earlyStartup() {
+ // We only need startup to make sure this plugin
+ // is activated, so that the actions can disable themselves.
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/.classpath b/plugins/org.eclipse.gmt.tcs.builder/.classpath
new file mode 100644
index 0000000..731ea5f
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.gmt.tcs.builder/.project b/plugins/org.eclipse.gmt.tcs.builder/.project
new file mode 100644
index 0000000..7b79c57
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.gmt.tcs.builder</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.gmt.tcs.builder/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.gmt.tcs.builder/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..2d82a4b
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Thu Mar 27 22:18:25 CET 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/plugins/org.eclipse.gmt.tcs.builder/META-INF/MANIFEST.MF b/plugins/org.eclipse.gmt.tcs.builder/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..eabf0b6
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/META-INF/MANIFEST.MF
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.gmt.tcs.builder;singleton:=true
+Bundle-Version: 0.8.0
+Bundle-Activator: org.eclipse.gmt.tcs.builder.Activator
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.m2m.atl.engine,
+ org.eclipse.core.resources,
+ org.eclipse.jdt.core,
+ org.eclipse.jdt.core.manipulation,
+ org.eclipse.emf.common,
+ org.eclipse.ui,
+ org.eclipse.gmt.tcs.dsls,
+ org.eclipse.gmt.tcs.metadata
+Export-Package: org.eclipse.gmt.tcs.builder,
+ org.eclipse.gmt.tcs.builder.ct,
+ org.eclipse.gmt.tcs.builder.ct.definition,
+ org.eclipse.gmt.tcs.builder.ct.usage
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.gmt.tcs.builder/about.html b/plugins/org.eclipse.gmt.tcs.builder/about.html
new file mode 100644
index 0000000..7cc291c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>January 21, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.builder/build.properties b/plugins/org.eclipse.gmt.tcs.builder/build.properties
new file mode 100644
index 0000000..10a7ede
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/build.properties
@@ -0,0 +1,14 @@
+source.. = src/
+output.. = bin/
+bin.includes = .,\
+ META-INF/,\
+ plugin.xml,\
+ resources/templates/,\
+ plugin.properties
+src.includes = src/,\
+ build.properties,\
+ .project,\
+ .classpath,\
+ .settings/,\
+ schema/,\
+ about.html
diff --git a/plugins/org.eclipse.gmt.tcs.builder/plugin.properties b/plugins/org.eclipse.gmt.tcs.builder/plugin.properties
new file mode 100644
index 0000000..d11b84f
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/plugin.properties
@@ -0,0 +1,3 @@
+# NLS_MESSAGEFORMAT_VAR
+pluginName=TCS Builder (Incubation)
+providerName=Eclipse.org
diff --git a/plugins/org.eclipse.gmt.tcs.builder/plugin.xml b/plugins/org.eclipse.gmt.tcs.builder/plugin.xml
new file mode 100644
index 0000000..e81b0c6
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/plugin.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension-point id="parserGenerator" name="Parser generator" schema="schema/parserGenerator.exsd"/>
+ <extension
+ id="Builder"
+ name="TCS builder"
+ point="org.eclipse.core.resources.builders">
+ <builder>
+ <run class="org.eclipse.gmt.tcs.builder.TCSBuilder"/>
+ </builder>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.gmt.tcs.builder/resources/templates/MANIFEST.MF b/plugins/org.eclipse.gmt.tcs.builder/resources/templates/MANIFEST.MF
new file mode 100644
index 0000000..66ec980
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/resources/templates/MANIFEST.MF
@@ -0,0 +1,6 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: ${dsl.name} Language Support Plug-in
+Bundle-SymbolicName: org.eclipse.gmt.tcs.language.${dsl.name};singleton:=true
+Bundle-Version: 1.0.0
+Require-Bundle: org.eclipse.gmt.tcs.metadata;bundle-version="1.0.0"
diff --git a/plugins/org.eclipse.gmt.tcs.builder/resources/templates/annotations.ann b/plugins/org.eclipse.gmt.tcs.builder/resources/templates/annotations.ann
new file mode 100644
index 0000000..4cd8ae0
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/resources/templates/annotations.ann
@@ -0,0 +1,21 @@
+annotate ${dsl.name} {
+ annotate ${dsl.name} with
+ nsURI='${dsl.name}',
+ nsPrefix='${dsl.name}';
+
+ annotate PrimitiveTypes with
+ nsURI='${dsl.name}-PrimitiveTypes',
+ nsPrefix='pt';
+
+ annotate "PrimitiveTypes::Boolean" with
+ instanceClassName='boolean';
+
+ annotate "PrimitiveTypes::Double" with
+ instanceClassName='double';
+
+ annotate "PrimitiveTypes::Integer" with
+ instanceClassName='int';
+
+ annotate "PrimitiveTypes::String" with
+ instanceClassName='java.lang.String';
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.builder/resources/templates/build.properties b/plugins/org.eclipse.gmt.tcs.builder/resources/templates/build.properties
new file mode 100644
index 0000000..4130129
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/resources/templates/build.properties
@@ -0,0 +1,5 @@
+dsl.name=${dsl.name}
+dsl.ext=${dsl.ext}
+syntax.jar.source.remove=true
+plugin.create=true
+scripts.ant.create=true \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.builder/resources/templates/extractor.xml b/plugins/org.eclipse.gmt.tcs.builder/resources/templates/extractor.xml
new file mode 100644
index 0000000..e0c84de
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/resources/templates/extractor.xml
@@ -0,0 +1,56 @@
+<!--
+ Auto-generated ant script that extracts a <file>.${dsl.ext}.xmi into <file>.${dsl.ext}.xmi.${dsl.ext}
+ It may be used in different ways:
+ - As an example to write your own ant scripts that do further processing
+ (e.g., injections, ATL transformations).
+ - Called from another script
+ - From the "AM3 Resource Navigator" view, and if the corresponding megamodel
+ (megamodel.xmi) has been registered (via right-click action "Add megamodel"):
+ by right-click action "Extract ${dsl.name} Model to ${dsl.name} File" on files
+ with extension "${dsl.ext}.xmi".
+
+ Notes:
+ - Property "MUri" is initialized by AM3 when invoked as a right-click injection
+ action. In any other case (e.g., calling the ant script, copy-paste-modify), property
+ "MUri" has to be defined explicitely.
+ - This script creates uses extension "${dsl.ext}.xmi.${dsl.ext}" instead of
+ simply "${dsl.ext}" so that inadvertendly erasing a source file is less likely.
+ - You may want to change some of the default options of the extractor (e.g., "indentString").
+-->
+<project name="${dsl.name}Extractor" default="extraction">
+ <property name="MUri" value="/${dsl.name}/Samples/Test1.${dsl.ext}.xmi"/>
+
+ <target name="extraction">
+ <!-- Loading ${dsl.name} metamodel -->
+ <am3.loadModel modelHandler="EMF" name="${dsl.name}" metamodel="MOF" path="${mm.location}"/>
+
+ <!-- Loading ${dsl.name} model -->
+ <am3.loadModel modelHandler="EMF" name="my${dsl.name}" metamodel="${dsl.name}" path="${MUri}"/>
+
+ <!-- Loading TCS metamodel -->
+ <am3.loadModel modelHandler="EMF" name="TCS" metamodel="MOF" path="/AMMACore/TCS/Metamodel/TCS.ecore"/>
+
+ <!-- Loading ${dsl.name}.tcs model -->
+ <am3.loadModel modelHandler="EMF" name="${dsl.name}.tcs" metamodel="TCS" path="${syntax.path}/${syntax.tcs.filename}">
+ <injector name="ebnf">
+ <param name="name" value="TCS"/>
+ <param name="parserGenerator" value="antlr3"/>
+ </injector>
+ </am3.loadModel>
+
+ <!-- Saving ${dsl.name} model -->
+ <am3.saveModel model="my${dsl.name}" path="${MUri}.${dsl.ext}">
+ <extractor name="ebnf">
+ <param name="format" value="${dsl.name}.tcs"/>
+
+ <param name="indentString" value="&#9;"/>
+ <param name="identEsc" value="&quot;"/>
+ <param name="stringDelim" value="&apos;"/>
+ <param name="decimalFormat" value="0.##############"/>
+
+ <param name="serializeComments" value="true"/>
+ </extractor>
+ </am3.saveModel>
+ </target>
+
+</project>
diff --git a/plugins/org.eclipse.gmt.tcs.builder/resources/templates/injector.xml b/plugins/org.eclipse.gmt.tcs.builder/resources/templates/injector.xml
new file mode 100644
index 0000000..e2c544f
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/resources/templates/injector.xml
@@ -0,0 +1,38 @@
+<!--
+ Auto-generated ant script that injects a <file>.${dsl.ext} into <file>.${dsl.ext}.xmi
+ It may be used in different ways:
+ - As an example to write your own ant scripts that do further processing
+ (e.g., ATL transformations, extractions).
+ - Called from another script
+ - From the "AM3 Resource Navigator" view, and if the corresponding megamodel
+ (megamodel.xmi) has been registered (via right-click action "Add megamodel"):
+ by right-click action "Inject ${dsl.name} File to ${dsl.name} Model" on files
+ with extension "${dsl.ext}".
+
+ Note that property "MUri" is initialized by AM3 when invoked as a right-click injection
+ action. In any other case (e.g., calling the ant script, copy-paste-modify), property
+ "MUri" has to be defined explicitely.
+-->
+<project name="${dsl.name}Injector" default="injection">
+ <property name="MUri" value="/${dsl.name}/Samples/Test1.${dsl.ext}"/>
+
+ <target name="injection">
+ <!-- Loading ${dsl.name} metamodel -->
+ <am3.loadModel modelHandler="EMF" name="${dsl.name}" metamodel="MOF" path="${mm.location}"/>
+
+ <!-- Loading ${dsl.name} model -->
+ <am3.loadModel modelHandler="EMF" name="my${dsl.name}" metamodel="${dsl.name}" path="${MUri}">
+ <injector name="ebnf">
+ <param name="name" value="${dsl.name}"/>
+ <param name="parserGenerator" value="antlr3"/>
+ <classpath>
+ <pathelement location="Syntax/${syntax.jar.filename}"/>
+ </classpath>
+ </injector>
+ </am3.loadModel>
+
+ <!-- Saving ${dsl.name} model -->
+ <am3.saveModel model="my${dsl.name}" path="${MUri}.xmi"/>
+ </target>
+
+</project>
diff --git a/plugins/org.eclipse.gmt.tcs.builder/resources/templates/metamodel.km3 b/plugins/org.eclipse.gmt.tcs.builder/resources/templates/metamodel.km3
new file mode 100644
index 0000000..b690a74
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/resources/templates/metamodel.km3
@@ -0,0 +1,32 @@
+-- @name ${dsl.name}
+-- @version 1.0
+-- @authors ${author}
+-- @date ${date}
+-- @description ${description}
+package ${dsl.name} {
+
+ -- Every class should extend LocatedElement, directly or indirectly.
+ -- This is a technical constraint to support text-to-model traceability.
+ abstract class LocatedElement {
+ attribute location[0-1] : String;
+ attribute commentsBefore[*] ordered : String;
+ attribute commentsAfter[*] ordered : String;
+ }
+
+-- BEGIN Language-specific classes (replace sample contents)
+ class Root extends LocatedElement {
+ reference elements[*] ordered container : Element;
+ }
+
+ class Element extends LocatedElement {
+ attribute name : String;
+ }
+-- END Language-specific classes
+}
+
+package PrimitiveTypes {
+ datatype Boolean;
+ datatype Double;
+ datatype Integer;
+ datatype String;
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/resources/templates/plugin.xml b/plugins/org.eclipse.gmt.tcs.builder/resources/templates/plugin.xml
new file mode 100644
index 0000000..67e10fa
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/resources/templates/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.gmt.tcs.metadata.language">
+ <language
+ editor="resources/${dsl.name}-Editor.xmi"
+ extension="${dsl.ext}"
+ metamodel="resources/${dsl.name}.ecore"
+ name="${dsl.name}"
+ outline="resources/${dsl.name}-Outline.xmi"
+ syntax="resources/${dsl.name}-TCS.xmi"
+ parser="resources/${dsl.name}-parser.jar">
+ </language>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.gmt.tcs.builder/resources/templates/syntax.tcs b/plugins/org.eclipse.gmt.tcs.builder/resources/templates/syntax.tcs
new file mode 100644
index 0000000..0c3a43b
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/resources/templates/syntax.tcs
@@ -0,0 +1,209 @@
+-- @name ${dsl.name}
+-- @version 1.0
+-- @authors ${author}
+-- @date ${date}
+-- @description ${description}
+
+-- The different sections of a TCS model have been enclosed between BEGIN and END
+-- comments below. Additional information is provided below each BEGIN comment.
+-- The main sections of interest are "Class templates", and
+-- "Operator table" (the latter only for DSLs using operators).
+syntax ${dsl.name} {
+
+-- BEGIN Primitive templates
+-- Specifies representation of primitive types.
+-- Only needs modification when default lexer is not satisfactory.
+-- Generally modified along with the lexer.
+ primitiveTemplate identifier for String default using NAME:
+ value = "%token%";
+
+ primitiveTemplate stringSymbol for String using STRING:
+ value = "ei.unescapeString(%token%, 1)",
+ serializer="'\'' + %value%.toCString() + '\''";
+
+ primitiveTemplate integerSymbol for Integer default using INT:
+ value = "Integer.valueOf(%token%)";
+
+ primitiveTemplate floatSymbol for Double default using FLOAT:
+ value = "Double.valueOf(%token%)";
+-- END Primitive templates
+
+-- BEGIN Class templates
+-- Specifies representation of classes.
+-- This is the main section to work on.
+ template Root main
+ : "{" elements{separator = ","} "}"
+ ;
+
+ template Element
+ : name
+ ;
+-- END Class templates
+
+-- BEGIN Special symbols
+-- Possible modifications:
+-- - Addition of new symbols.
+-- - Modification of spaces information.
+-- - Removal of unused symbols so that using these symbols results in lexical
+-- error rather than parsing error.
+ symbols {
+ lsquare = "[";
+ rsquare = "]" : rightSpace;
+ excl = "!";
+ coma = "," : leftNone, rightSpace;
+ lparen = "(";
+ rparen = ")" : leftNone, rightSpace;
+ lcurly = "{" : leftSpace;
+ rcurly = "}" : leftNone, rightSpace;
+ semi = ";" : leftNone, rightSpace;
+ colon = ":" : leftSpace, rightSpace;
+ pipe = "|" : leftSpace, rightSpace;
+ sharp = "#" : leftSpace;
+ qmark = "?";
+ coloncolon = "::" : leftNone, rightNone;
+
+ -- operator symbols
+ point = "." : leftNone;
+ rarrow = "->" : leftNone;
+ minus = "-" : leftSpace, rightSpace;
+ star = "*" : leftSpace, rightSpace;
+ slash = "/" : leftSpace, rightSpace;
+ plus = "+" : leftSpace, rightSpace;
+ eq = "=" : leftSpace, rightSpace;
+ gt = ">" : leftSpace, rightSpace;
+ lt = "<" : leftSpace, rightSpace;
+ ge = ">=" : leftSpace, rightSpace;
+ le = "<=" : leftSpace, rightSpace;
+ ne = "<>" : leftSpace, rightSpace;
+ larrow = "<-" : leftSpace, rightSpace;
+ }
+-- END Special symbols
+
+-- BEGIN Operator table
+-- Defines all operators with their priority, arity, and associativity.
+-- All defined operators must be used in operator templates.
+
+-- Specify operator table(s) here if necessary.
+
+-- END Operator table
+
+
+-- BEGIN Lexer
+-- Specifies the lexical entities.
+-- Only needs modification when default lexer is not satisfactory.
+-- Generally modified along with Primitive templates.
+ token COMMENT : endOfLine(start = "--");
+ token STRING : multiLine(start = "\'", end = "\'", esc = "\\");
+
+ lexer = "
+%options testLiterals = false;
+
+NL
+ : ( '\\r' '\\n'
+ | '\\n' '\\r' //Improbable
+ | '\\r'
+ | '\\n'
+ )
+ {newline();}
+ ;
+
+WS
+ : ( ' '
+ | '\\t'
+ )
+ ;
+
+%protected
+DIGIT
+ : '0'..'9'
+ ;
+
+%protected
+ALPHA
+ : 'a'..'z'
+ | 'A'..'Z'
+ | '_'
+ //For Unicode compatibility (from 0000 to 00ff)
+ | '\\u00C0' .. '\\u00D6'
+ | '\\u00D8' .. '\\u00F6'
+ | '\\u00F8' .. '\\u00FF'
+ ;
+
+%protected
+SNAME
+%v2 options {
+%v2 testLiterals = true;
+%v2 }
+ : (ALPHA) (ALPHA | DIGIT)*
+;
+
+NAME
+ : (
+%v3 SNAME
+%v2 s:SNAME {if(s.getType() != SNAME) $setType(s.getType());}
+ | '\"'!
+ ( ESC
+ | '\\n' {newline();}
+ | ~('\\\\'|'\\\"'|'\\n')
+ )*
+ '\"'!
+%v3 {setText(ei.unescapeString(getText(), 1));}
+ )
+ ;
+
+INT
+ : (DIGIT)+
+%v2 (('.' DIGIT)=> '.' (DIGIT)+ {$setType(FLOAT);})?
+ ;
+
+%v3 FLOAT : DIGIT+ '.' DIGIT* ;
+
+%protected
+ESC
+ : '\\\\'!
+ ( 'n' %v2{%setText(\"\\n\");}
+ | 'r' %v2{%setText(\"\\r\");}
+ | 't' %v2{%setText(\"\\t\");}
+ | 'b' %v2{%setText(\"\\b\");}
+ | 'f' %v2{%setText(\"\\f\");}
+ | '\"' %v2{%setText(\"\\\"\");}
+ | '\\'' %v2{%setText(\"\\'\");}
+ | '\\\\' %v2{%setText(\"\\\\\");}
+ | (
+ ('0'..'3')
+ (
+%v2 options {
+%v2 warnWhenFollowAmbig = false;
+%v2 }
+ : ('0'..'7')
+ (
+%v2 options {
+%v2 warnWhenFollowAmbig = false;
+%v2 }
+ : '0'..'7'
+ )?
+ )?
+ | ('4'..'7')
+ (
+%v2 options {
+%v2 warnWhenFollowAmbig = false;
+%v2 }
+ : ('0'..'7')
+ )?
+ )
+ {
+%v2 String s = %getText;
+%v2 int i;
+%v2 int ret = 0;
+%v2 String ans;
+%v2 for (i=0; i<s.length(); ++i)
+%v2 ret = ret*8 + s.charAt(i) - '0';
+%v2 ans = String.valueOf((char) ret);
+%v2 %setText(ans);
+ }
+ )
+ ;
+ ";
+-- END Lexer
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/schema/parserGenerator.exsd b/plugins/org.eclipse.gmt.tcs.builder/schema/parserGenerator.exsd
new file mode 100644
index 0000000..9962b39
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/schema/parserGenerator.exsd
@@ -0,0 +1,109 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.gmt.tcs.builder" xmlns="http://www.w3.org/2001/XMLSchema">
+ <annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.gmt.tcs.builder" id="parserGenerator" name="Parser generator"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="parserGenerator"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="parserGenerator">
+ <complexType>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.gmt.tcs.builder.ParserGenerator"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiinfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/Activator.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/Activator.java
new file mode 100644
index 0000000..a77ae46
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/Activator.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2007 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: Activator.java,v 1.2 2008/06/25 13:02:47 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ * @author Frédéric Jouault
+ *
+ */
+public class Activator extends Plugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.gmt.tcs.builder";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ParserGenerator.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ParserGenerator.java
new file mode 100644
index 0000000..7f87d76
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ParserGenerator.java
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ParserGenerator.java,v 1.1 2008/06/28 17:15:27 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public interface ParserGenerator {
+
+ public void generate(String antlrFile, String javaFilesPath, ParserGeneratorErrorListener errorListener);
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ParserGeneratorErrorListener.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ParserGeneratorErrorListener.java
new file mode 100644
index 0000000..541ddd0
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ParserGeneratorErrorListener.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ParserGeneratorErrorListener.java,v 1.1 2008/06/28 17:15:27 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public interface ParserGeneratorErrorListener {
+
+ public void addError(String message, int lineNumber, int charStart, int charEnd);
+
+ public void addInfo(String message, int lineNumber, int charStart, int charEnd);
+
+ public void addWarning(String message, int lineNumber, int charStart, int charEnd);
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ProblemReporter.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ProblemReporter.java
new file mode 100644
index 0000000..8280cb3
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ProblemReporter.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2007, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ProblemReporter.java,v 1.3 2008/06/25 13:03:20 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder;
+
+import org.eclipse.m2m.atl.dsls.textsource.TextSource;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public interface ProblemReporter {
+
+ public boolean reportProblem(TextSource textSource, ASMModel problemModel);
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/TCSBuilder.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/TCSBuilder.java
new file mode 100644
index 0000000..eebc4f5
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/TCSBuilder.java
@@ -0,0 +1,556 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TCSBuilder.java,v 1.17 2008/07/03 14:38:28 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.lang.ref.SoftReference;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.jar.JarOutputStream;
+import java.util.jar.Manifest;
+import java.util.zip.ZipEntry;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IncrementalProjectBuilder;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmt.tcs.builder.ct.ResourceLocator;
+import org.eclipse.gmt.tcs.metadata.Language;
+import org.eclipse.gmt.tcs.metadata.LanguageRegistry;
+import org.eclipse.gmt.tcs.metadata.LanguageSource;
+import org.eclipse.jdt.core.compiler.CategorizedProblem;
+import org.eclipse.jdt.internal.compiler.ClassFile;
+import org.eclipse.jdt.internal.compiler.CompilationResult;
+import org.eclipse.jdt.internal.compiler.Compiler;
+import org.eclipse.jdt.internal.compiler.DefaultErrorHandlingPolicies;
+import org.eclipse.jdt.internal.compiler.ICompilerRequestor;
+import org.eclipse.jdt.internal.compiler.batch.FileSystem;
+import org.eclipse.jdt.internal.compiler.env.ICompilationUnit;
+import org.eclipse.jdt.internal.compiler.env.INameEnvironment;
+import org.eclipse.jdt.internal.compiler.impl.CompilerOptions;
+import org.eclipse.jdt.internal.core.builder.ProblemFactory;
+import org.eclipse.jdt.internal.core.util.ResourceCompilationUnit;
+import org.eclipse.m2m.atl.dsls.DSLResourceProvider;
+import org.eclipse.m2m.atl.dsls.Resource;
+import org.eclipse.m2m.atl.dsls.textsource.IFileTextSource;
+import org.eclipse.m2m.atl.dsls.textsource.TextSource;
+import org.eclipse.m2m.atl.engine.AtlModelHandler;
+import org.eclipse.m2m.atl.engine.MarkerMaker;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+import org.osgi.framework.Bundle;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class TCSBuilder extends IncrementalProjectBuilder {
+
+ public static final String ID = "org.eclipse.gmt.tcs.builder.Builder";
+
+ private Map parserGenerators = new HashMap();;
+
+ public TCSBuilder() throws Exception {
+ }
+
+ private ResourceLocator rl;
+ // soft reference: to prevent from being retained, which causes a leak
+ // TODO: is the SoftReference itself leaked now?
+ private SoftReference ct = null;
+
+ private TCSBuilderCT getTCSBuilderCT() throws CoreException {
+ TCSBuilderCT ret = (ct == null) ? null : (TCSBuilderCT)ct.get();
+ final IProject ammaCore = ResourcesPlugin.getWorkspace().getRoot().getProject("AMMACore");
+ if((ret != null) && (ammaCore.exists())) {
+ IFile noChangeFile = ammaCore.getFile("NO_CHANGE.txt");
+ if(!noChangeFile.exists()) {
+ ret = null; // force reload of all models
+ noChangeFile.create(new ByteArrayInputStream("Remove this file to force the TCS builder to purge its cache and reload the AMMACore models (e.g., after updating from CVS, or changing a model).".getBytes()), true, null);
+ noChangeFile.setDerived(true);
+ }
+ }
+ if(ret == null) {
+ boolean canUseAMMACore = false;
+ if(ammaCore.exists()) {
+ IFile doNotUseFile = ammaCore.getFile("DO_NOT_USE.txt");
+ if(!doNotUseFile.exists()) {
+ canUseAMMACore = true;
+ }
+ }
+ final boolean useAMMACore = canUseAMMACore;
+ rl = new ResourceLocator() {
+ public Resource getResource(final String id) throws IOException {
+ if(useAMMACore) {
+ // Get resources from AMMACore project in workspace
+ return new Resource() {
+ public TextSource asTextSource() {
+ return new IFileTextSource(ammaCore.getFile(id));
+ }
+
+ public URI asEMFURI() {
+ return URI.createPlatformResourceURI(ammaCore.getFile(id).getFullPath().toString(), true);
+ }
+ public URL asURL() {
+ throw new RuntimeException("Conversion to URL unsupported");
+ }
+ };
+ } else {
+ return DSLResourceProvider.getDefault().getResource(id);
+ }
+ }
+ };
+ try {
+ ret = new TCSBuilderCT(rl);
+ ct = new SoftReference(ret);
+ } catch(IOException ioe) {
+ // setting exception (ie., last argument) to non-null value (i.e., ioe) prevents the error pop-up from opening
+ throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.OK, "error loading resources from AMMACore project", ioe));
+ }
+ }
+ return ret;
+ }
+
+
+ // TODO: add 'if(monitor.isCanceled()) return null;' where appropriate
+ protected IProject[] build(int kind, Map args, IProgressMonitor monitor) throws CoreException {
+ TCSBuilderCT ct = getTCSBuilderCT();
+ final IProject p = getProject();
+ Language ts = LanguageRegistry.getDefault().getLanguageFromSource(p);
+ if(ts == null) {
+ return null; // not a valid TCS project
+ }
+ LanguageSource tss = ts.getSource();
+ final String name = ts.getName();
+ IFile km3File = tss.getKM3SourceFile();
+ IFile tcsFile = tss.getTCSSourceFile();
+ IFile outlineFile = tss.getOutlineFile();
+ IFile editorFile = tss.getEditorFile();
+ IFile ecoreFile = tss.getMetamodelFile();
+ final IFile grammarFile = tss.getGrammarFile();
+ final IFile jarFile = tss.getParserFile();
+ IFile compilerSourceFile = tss.getACGSourceFile();
+ IFile compilerBinaryFile = tss.getCompilerFile();
+ try {
+ String ext = ts.getExtension();
+ boolean removeParserJavaSource = !"false".equals(tss.getProperty("syntax.jar.source.remove"));
+ boolean rebuildPlugin = false;
+ boolean isJavaProject = false;
+
+ AtlModelHandler amh = AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
+ Map models = new HashMap();
+ models.put(ct.srckm3, new IFileTextSource(km3File));
+ models.put(ct.srctcs, new IFileTextSource(tcsFile));
+ models.put("problemReporter", new ProblemReporter() {
+ public boolean reportProblem(TextSource textSource, ASMModel problemModel) {
+ int nbErrors = 0;
+ try {
+ IFile file = ((IFileTextSource)textSource).file;
+ nbErrors = new MarkerMaker().applyMarkers(file, problemModel);
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ return nbErrors == 0;
+ }
+ });
+
+ if(tcsFile.getLocalTimeStamp() > editorFile.getLocalTimeStamp()) {
+ monitor.subTask("creating Editor model " + editorFile.getName());
+ ASMModel editorModel = (ASMModel)ct.getTarget(ct.tgteditor, models);
+ amh.saveModel(editorModel, editorFile.getProjectRelativePath().toString(), p);
+ p.getFolder("TGE").setDerived(true);
+ rebuildPlugin = true;
+ }
+
+ if(km3File.getLocalTimeStamp() > outlineFile.getLocalTimeStamp()) {
+ monitor.subTask("creating Outline model " + outlineFile.getName());
+ ASMModel outlineModel = (ASMModel)ct.getTarget(ct.tgtoutline, models);
+ amh.saveModel(outlineModel, outlineFile.getProjectRelativePath().toString(), p);
+ p.getFolder("TGE").setDerived(true);
+ rebuildPlugin = true;
+ }
+
+ if(km3File.getLocalTimeStamp() > ecoreFile.getLocalTimeStamp()) {
+ monitor.subTask("creating Ecore metamodel " + ecoreFile.getName());
+ ASMModel ecoreModel = (ASMModel)ct.getTarget(ct.tgtecore, models);
+
+ IFile annotationFile = tss.getAnnotationSourceFile();
+ if(annotationFile.exists()) {
+ models.put(ct.srcannotation, new IFileTextSource(annotationFile));
+ ecoreModel = (ASMModel)ct.getTarget(ct.tgtecorePlusAnnotations, models);
+ }
+
+ amh.saveModel(ecoreModel, ecoreFile.getProjectRelativePath().toString(), p);
+ rebuildPlugin = true;
+ }
+
+ if(compilerSourceFile.exists()) {
+ if(compilerSourceFile.getLocalTimeStamp() > compilerBinaryFile.getLocalTimeStamp()) {
+ monitor.subTask("compiling compiler to " + compilerBinaryFile.getName());
+ models.put(ct.srcacg, new IFileTextSource(compilerSourceFile));
+// ASMModel acgProblemModel = (ASMModel)ct.getTarget(ct.tgtacgproblem, models);
+// int nbACGErrors = new MarkerMaker().applyMarkers(compilerSourceFile, acgProblemModel);
+ int nbACGErrors = 0;
+ if(nbACGErrors == 0) {
+ TextSource asmFile = (TextSource)ct.getTarget(ct.tgtasm, models);
+ if (compilerBinaryFile.exists()) {
+ compilerBinaryFile.setContents(asmFile.openStream(), IFile.DERIVED, monitor);
+ } else {
+ compilerBinaryFile.create(asmFile.openStream(), IFile.DERIVED, monitor);
+ }
+ }
+ }
+ }
+
+ // TODO: improve TCS2Problem so that it is automatically invoked after injection (e.g., for TCS2Editor too)
+ // TODO: keep injection errors as well
+ // => possible solution to both problems: add a problem model to each getTarget request
+ // (possibly using a special id in the models Map)
+ if(
+ (km3File.getLocalTimeStamp() > grammarFile.getLocalTimeStamp()) ||
+ (tcsFile.getLocalTimeStamp() > grammarFile.getLocalTimeStamp())) {
+ monitor.subTask("creating grammar " + grammarFile.getName());
+ ASMModel tcsProblemModel = (ASMModel)ct.getTarget(ct.tgttcsproblem, models);
+ int nbTCSErrors = new MarkerMaker().applyMarkers(tcsFile, tcsProblemModel);
+ ASMModel km3ProblemModel = (ASMModel)ct.getTarget(ct.tgtkm3problem, models);
+ int nbKM3Errors = new MarkerMaker().applyMarkers(km3File, km3ProblemModel);
+ if((nbTCSErrors == 0) && (nbKM3Errors == 0)) {
+ TextSource grammarModel = (TextSource)ct.getTarget(ct.tgtgrammar, models);
+ if (grammarFile.exists()) {
+ grammarFile.setContents(grammarModel.openStream(), IFile.DERIVED, monitor);
+ } else {
+ grammarFile.create(grammarModel.openStream(), IFile.DERIVED, monitor);
+ }
+ }
+ }
+
+ String parserSourceFolderPathName = "Syntax/parser_src/";
+ if(grammarFile.getLocalTimeStamp() > jarFile.getLocalTimeStamp()) {
+ monitor.subTask("compiling grammar to jar " + jarFile.getName());
+ IFolder javaFilesPath = p.getFolder(parserSourceFolderPathName + "org/eclipse/gmt/tcs/injector/");
+ grammarFile.deleteMarkers(IMarker.PROBLEM, true, IResource.DEPTH_INFINITE);
+ ParserGenerator parserGenerator = getParserGenerator(tss);
+ if(parserGenerator == null) {
+ throw new RuntimeException("Missing parser generator: " + tss.getParserGenerator() + " see http://wiki.eclipse.org/TCS/Language_Project#Installing_the_Required_Features");
+ }
+ parserGenerator.generate(
+ grammarFile.getRawLocation().toOSString(),
+ javaFilesPath.getRawLocation().toOSString(),
+ new ParserGeneratorErrorListener() {
+ public void addError(String message, int lineNumber,
+ int charStart, int charEnd) {
+ addMarker(grammarFile, IMarker.SEVERITY_ERROR, message, lineNumber, charStart, charEnd);
+ }
+
+ public void addInfo(String message, int lineNumber,
+ int charStart, int charEnd) {
+ addMarker(grammarFile, IMarker.SEVERITY_INFO, message, lineNumber, charStart, charEnd);
+ }
+
+ public void addWarning(String message, int lineNumber,
+ int charStart, int charEnd) {
+ addMarker(grammarFile, IMarker.SEVERITY_WARNING, message, lineNumber, charStart, charEnd);
+ }
+ });
+ IFolder syntaxFolder = p.getFolder("Syntax/");
+ syntaxFolder.refreshLocal(IFolder.DEPTH_INFINITE, null);
+
+ if(!isJavaProject) {
+ monitor.subTask("compiling parser and lexer to jar " + jarFile.getName());
+ try {
+ if(jarFile.exists())
+ jarFile.delete(true, monitor);
+ } catch(CoreException ce) {
+ // We tried to delete the jarFile, but it may be in use (e.g., by TGE).
+ // In this case, we can still overwrite it.
+ }
+ Manifest man = new Manifest();
+ man.getMainAttributes().putValue("Manifest-Version", "1.0");
+ final JarOutputStream out = new JarOutputStream(new FileOutputStream(jarFile.getLocation().toFile()), man);
+ final List errors = new ArrayList();
+
+
+ List classpath = new ArrayList();
+ populateClassPath(p, classpath);
+ INameEnvironment ne = new FileSystem((String[])classpath.toArray(new String[] {}), new String[0], "UTF-8");
+ CompilerOptions co = new CompilerOptions();
+ Map options = new HashMap();
+ options.put(CompilerOptions.OPTION_LocalVariableAttribute, CompilerOptions.GENERATE);
+ // Java code generated by the parser generator may contain unused imports that are not worth reporting
+ options.put(CompilerOptions.OPTION_ReportUnusedImport, CompilerOptions.IGNORE);
+ co.set(options);
+ ICompilerRequestor cr = new ICompilerRequestor() {
+ public void acceptResult(CompilationResult result) {
+ try {
+ // TODO: report errors
+ CategorizedProblem pbs[] = result.getProblems();
+ boolean hasError = false;
+ IFile javaFile = p.getParent().getFile(new Path(new String(result.getFileName())));
+ javaFile.deleteMarkers(IMarker.PROBLEM, true, IResource.DEPTH_INFINITE);
+ if(pbs != null) {
+ for(int i = 0 ; i < pbs.length ; i++) {
+ CategorizedProblem pb = pbs[i];
+ System.out.println(pb);
+ if(pb.isError()) {
+ hasError |= true;
+ errors.add(pb);
+ addMarker(javaFile, IMarker.SEVERITY_ERROR, pb.getMessage(), pb.getSourceLineNumber(), pb.getSourceStart(), pb.getSourceEnd() + 1);
+ } else if(pb.isWarning()) {
+ addMarker(javaFile, IMarker.SEVERITY_WARNING, pb.getMessage(), pb.getSourceLineNumber(), pb.getSourceStart(), pb.getSourceEnd() + 1);
+ }
+ }
+ }
+ if(!hasError) {
+ ClassFile cfs[] = result.getClassFiles();
+ for(int i = 0 ; i < cfs.length ; i++) {
+ out.putNextEntry(new ZipEntry(new String(cfs[i].fileName()) + ".class"));
+ out.write(cfs[i].getBytes());
+ out.closeEntry();
+ }
+ }
+ } catch(IOException ioe) {
+ ioe.printStackTrace(System.out);
+ } catch (CoreException e) {
+ e.printStackTrace(System.out);
+ }
+ }
+ };
+ Compiler compiler = new Compiler(ne, DefaultErrorHandlingPolicies.proceedWithAllProblems(), co, cr, ProblemFactory.getProblemFactory(Locale.getDefault()));
+ syntaxFolder.refreshLocal(IFolder.DEPTH_INFINITE, null);
+ compiler.compile(new ICompilationUnit[] {
+ new ResourceCompilationUnit(javaFilesPath.getFile(name + "_ANTLR3Lexer.java"), null),
+ new ResourceCompilationUnit(javaFilesPath.getFile(name + "_ANTLR3Parser.java"), null),
+ });
+ syntaxFolder.refreshLocal(IFolder.DEPTH_INFINITE, null);
+ out.close();
+
+ IFolder parserSourceFolder = p.getFolder(parserSourceFolderPathName);
+ if(parserSourceFolder.exists()) {
+ parserSourceFolder.setDerived(true);
+ }
+ if(errors.isEmpty()) {
+ if(removeParserJavaSource) {
+ parserSourceFolder.delete(false, null);
+ }
+ } else {
+ jarFile.delete(true, null);
+ }
+ if(jarFile.exists()) {
+ jarFile.refreshLocal(IResource.DEPTH_ZERO, monitor);
+ jarFile.setDerived(true);
+ rebuildPlugin = true;
+ }
+ }
+ }
+
+ Map subst = new HashMap();
+// subst.put("ammacore.path", "/AMMACore");
+// subst.put("ammacore.metamodel.dir.name", "Metamodel");
+ subst.put("dsl.name", name);
+ subst.put("syntax.path", "/" + name + "/Syntax");
+ subst.put("syntax.tcs.filename", name + ".tcs");
+ subst.put("syntax.jar.filename", name + "-parser.jar");
+ subst.put("dsl.ext", ext);
+// subst.put("tge.path", "/" + name + "/TGE");
+ subst.put("mm.location", "/" + name + "/Metamodel/" + name + ".ecore");
+// subst.put("injector.path", "/" + name + "/injector.xml");
+// subst.put("extractor.path", "/" + name + "/extractor.xml");
+
+ if("true".equals(tss.getProperty("scripts.ant.create"))) {
+ IFile injectorFile = p.getFile("injector.xml");
+ if(!injectorFile.exists()) {
+ injectorFile.create(new ByteArrayInputStream(getTemplate("templates/injector.xml", subst).getBytes()), true, null);
+ injectorFile.setDerived(true);
+ }
+ IFile extractorFile = p.getFile("extractor.xml");
+ if(!extractorFile.exists()) {
+ extractorFile.create(new ByteArrayInputStream(getTemplate("templates/extractor.xml", subst).getBytes()), true, null);
+ extractorFile.setDerived(true);
+ }
+ }
+
+
+ if(!isJavaProject) {
+ IFile pluginFile = p.getFile("plugin/org.eclipse.gmt.tcs.language." + name + ".jar");
+ if(!pluginFile.exists()) {
+ rebuildPlugin = true;
+ }
+ if("true".equals(tss.getProperty("plugin.create")) && rebuildPlugin) {
+ IFolder pluginFolder = p.getFolder("plugin");
+ if(!pluginFolder.exists()) {
+ pluginFolder.create(IFolder.DERIVED + IFolder.FORCE, true, monitor);
+ }
+ BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(pluginFile.getRawLocation().toString()));
+ JarOutputStream jout = new JarOutputStream(out);
+
+ jout.putNextEntry(new ZipEntry("plugin.xml"));
+ jout.write(getTemplate("templates/plugin.xml", subst).getBytes());
+
+ jout.putNextEntry(new ZipEntry("META-INF/MANIFEST.MF"));
+ jout.write(getTemplate("templates/MANIFEST.MF", subst).getBytes());
+
+ jout.putNextEntry(new ZipEntry("resources/" + name + ".ecore"));
+ ASMModel ecoreModel = (ASMModel)ct.getTarget(ct.tgtecore, models);
+ amh.saveModel(ecoreModel, jout);
+
+ jout.putNextEntry(new ZipEntry("resources/" + name + "-Editor.xmi"));
+ ASMModel editorModel = (ASMModel)ct.getTarget(ct.tgteditor, models);
+ amh.saveModel(editorModel, jout);
+
+ jout.putNextEntry(new ZipEntry("resources/" + name + "-Outline.xmi"));
+ ASMModel outlineModel = (ASMModel)ct.getTarget(ct.tgtoutline, models);
+ amh.saveModel(outlineModel, jout);
+
+ jout.putNextEntry(new ZipEntry("resources/" + name + "-TCS.xmi"));
+ ASMModel tcsModel = (ASMModel)ct.getTarget(ct.tgttcs, models);
+ amh.saveModel(tcsModel, jout);
+
+ jout.putNextEntry(new ZipEntry("resources/" + name + "-parser.jar"));
+ BufferedInputStream in = new BufferedInputStream(jarFile.getContents());
+ int size;
+ byte buffer[] = new byte[1024];
+ while((size = in.read(buffer)) > 0) {
+ jout.write(buffer, 0, size);
+ }
+ in.close();
+
+ jout.close();
+ if(!pluginFile.exists()) {
+ pluginFile.refreshLocal(IResource.DEPTH_ZERO, monitor);
+ pluginFile.setDerived(true);
+ }
+ }
+ }
+ } catch(IOException ioe) {
+ ioe.printStackTrace(System.out);
+ }
+ rl=null;ct=null;
+ return null;
+ }
+
+ private ParserGenerator getParserGenerator(LanguageSource tss) {
+ String parserGeneratorName = tss.getParserGenerator();
+ ParserGenerator ret = (ParserGenerator)parserGenerators.get(parserGeneratorName);
+
+ if(ret == null) {
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ if (registry == null) {
+ throw new RuntimeException("Extension registry not found");
+ }
+
+ IExtensionPoint point = registry.getExtensionPoint("org.eclipse.gmt.tcs.builder.parserGenerator");//$NON-NLS-1$
+
+ IExtension[] extensions = point.getExtensions();
+ extensions: for(int i = 0 ; i < extensions.length ; i++) {
+ IConfigurationElement[] elements = extensions[i].getConfigurationElements();
+ for(int j = 0 ; j < elements.length ; j++) {
+ try {
+ if(elements[j].getAttribute("name").equals(parserGeneratorName)) {//$NON-NLS-1$
+ ret = (ParserGenerator)elements[j].createExecutableExtension("class");
+ break extensions;
+ }
+ } catch (CoreException e){
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ synchronized(parserGenerators) {
+ parserGenerators.put(parserGeneratorName, ret);
+ }
+ }
+
+ return ret;
+ }
+
+ private static void addMarker(IResource res, int severity, String description, int lineNumber, int charStart, int charEnd) {
+ try {
+ IMarker pbmMarker = res.createMarker(IMarker.PROBLEM);
+ pbmMarker.setAttribute(IMarker.SEVERITY, severity);
+ pbmMarker.setAttribute(IMarker.MESSAGE, description);
+ pbmMarker.setAttribute(IMarker.LINE_NUMBER, (lineNumber == -1) ? 1 : lineNumber);
+ pbmMarker.setAttribute(IMarker.CHAR_START, charStart);
+ pbmMarker.setAttribute(IMarker.CHAR_END, charEnd);
+ } catch(CoreException ce) {
+ ce.printStackTrace(System.err);
+ }
+ }
+
+ public static String getTemplate(String path, Map substitutions) throws IOException {
+ Bundle bundle = Activator.getDefault().getBundle();
+ URL templateURL = bundle.getResource("resources/" + path); //FileLocator.find(bundle, new Path("resources/" + path), Collections.EMPTY_MAP);
+ BufferedInputStream in = new BufferedInputStream(templateURL.openStream());
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ int size;
+ byte buffer[] = new byte[1000];
+ while((size = in.read(buffer)) > 0) {
+ out.write(buffer, 0, size);
+ }
+ String ret = out.toString();
+ for(Iterator i = substitutions.keySet().iterator() ; i.hasNext() ; ) {
+ String key = (String)i.next();
+ String value = (String)substitutions.get(key);
+ ret = ret.replaceAll("\\$\\{" + key + "}", value);
+ }
+ return ret;
+ }
+
+// private void createIfMissing(IFolder f, IProgressMonitor monitor) throws CoreException {
+// if(!f.exists()) {
+// createIfMissing((IFolder)f.getParent(), monitor);
+// f.create(0,false, monitor);
+// }
+// }
+
+ private void populateClassPath(IProject project, List classpath) throws IOException {
+ // property: sun.boot.class.path
+ // According to JDT help: If no bootclasspath is specified, the compiler will infer it using the following system properties sun.boot.class.path, vm.boot.class.path or org.apache.harmony.boot.class.path in this order respectively.
+ // see example in org.eclipse.jdt.internal.compiler.batch.Main.handleBootclasspath([...])
+ classpath.add(System.getProperty("java.home") + "/lib/rt.jar");
+
+ Bundle bundle = org.eclipse.m2m.atl.dsls.Activator.getDefault().getBundle();
+ URL urlPlatform = bundle.getEntry("/");
+ URL localFileInPluginURL;
+ localFileInPluginURL = FileLocator.toFileURL(urlPlatform);
+ String atlEnginePath = localFileInPluginURL.getPath().toString();
+
+ classpath.add(atlEnginePath + "libraries/org.eclipse.gmt.tcs.injector.jar");
+
+ urlPlatform = Platform.getBundle("org.antlr.runtime").getEntry("/");
+ localFileInPluginURL = FileLocator.toFileURL(urlPlatform);
+ classpath.add(localFileInPluginURL.getPath().toString());
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/TCSBuilderCT.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/TCSBuilderCT.java
new file mode 100644
index 0000000..62f99b0
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/TCSBuilderCT.java
@@ -0,0 +1,306 @@
+/**
+ * Copyright (c) 2007, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TCSBuilderCT.java,v 1.7 2008/06/25 13:02:47 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder;
+
+import java.io.IOException;
+import java.util.Map;
+
+import org.eclipse.gmt.tcs.builder.ct.CompositeTransformation;
+import org.eclipse.gmt.tcs.builder.ct.Metamodel;
+import org.eclipse.gmt.tcs.builder.ct.ResourceLocator;
+import org.eclipse.gmt.tcs.builder.ct.definition.ACGTransformation;
+import org.eclipse.gmt.tcs.builder.ct.definition.ATLRefinedTargetDefinition;
+import org.eclipse.gmt.tcs.builder.ct.definition.ATLSourceDefinition;
+import org.eclipse.gmt.tcs.builder.ct.definition.ATLTargetDefinition;
+import org.eclipse.gmt.tcs.builder.ct.definition.ATLTransformation;
+import org.eclipse.gmt.tcs.builder.ct.definition.CompositeTransformationSourceDefinition;
+import org.eclipse.gmt.tcs.builder.ct.definition.CompositeTransformationTargetDefinition;
+import org.eclipse.gmt.tcs.builder.ct.definition.ModelSourceDefinition;
+import org.eclipse.gmt.tcs.builder.ct.definition.ModelTargetDefinition;
+import org.eclipse.gmt.tcs.builder.ct.definition.SourceDefinition;
+import org.eclipse.gmt.tcs.builder.ct.definition.TCSExtraction;
+import org.eclipse.gmt.tcs.builder.ct.definition.TCSInjection;
+import org.eclipse.gmt.tcs.builder.ct.definition.TargetDefinition;
+import org.eclipse.gmt.tcs.builder.ct.definition.Transformation;
+import org.eclipse.gmt.tcs.builder.ct.usage.Source;
+import org.eclipse.gmt.tcs.builder.ct.usage.Target;
+import org.eclipse.gmt.tcs.builder.ct.usage.TransformationUsage;
+import org.eclipse.m2m.atl.engine.AtlModelHandler;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class TCSBuilderCT {
+
+ public Object getTarget(CompositeTransformationTargetDefinition target, Map models) throws IOException {
+ return ct.getTarget(target, models);
+ }
+
+ public CompositeTransformation ct;
+ public CompositeTransformationSourceDefinition srckm3;
+ public CompositeTransformationSourceDefinition srcannotation;
+ public CompositeTransformationSourceDefinition srctcs;
+ public CompositeTransformationSourceDefinition srcacg;
+ public CompositeTransformationTargetDefinition tgttcsproblem;
+// public CompositeTransformationTargetDefinition tgttcssyntaxproblem;
+ public CompositeTransformationTargetDefinition tgtkm3problem;
+ public CompositeTransformationTargetDefinition tgtacgproblem;
+ public CompositeTransformationTargetDefinition tgtasm;
+ public CompositeTransformationTargetDefinition tgttcs;
+// public CompositeTransformationTargetDefinition tgtkm3syntaxproblem;
+ public CompositeTransformationTargetDefinition tgteditor;
+ public CompositeTransformationTargetDefinition tgtoutline;
+ public CompositeTransformationTargetDefinition tgtgrammar;
+ public CompositeTransformationTargetDefinition tgtecore;
+ public CompositeTransformationTargetDefinition tgtecorePlusAnnotations;
+
+ public TCSBuilderCT(ResourceLocator rl) throws IOException {
+ AtlModelHandler amh = AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
+
+ this.rl = rl;
+ Metamodel km3mm = getMetamodel("KM3", "-2005");
+ Metamodel tcsmm = getMetamodel("TCS");
+ Metamodel annotationmm = getMetamodel("Annotation");
+ Metamodel refiningTracemm = new Metamodel("RefiningTrace", rl.getResource("ATL/RuntimeSupport/RefiningTrace.ecore"));
+
+ Metamodel editormm = getMetamodel("Editor");
+ Metamodel outlinemm = getMetamodel("Outline");
+
+ Metamodel problemmm = getMetamodel("Problem");
+ Metamodel antlrmm = getMetamodel("ANTLR");
+
+ Metamodel acgmm = getMetamodel("ACG");
+
+ Metamodel ecoremm = new Metamodel("Ecore", amh.getMof());
+
+ // TCS Injection
+ Transformation tcsinjection = new TCSInjection(problemmm);
+ SourceDefinition tcsinjectionSrc = new SourceDefinition(tcsinjection);
+ TargetDefinition tcsinjectionTgt = new ModelTargetDefinition(tcsinjection, tcsmm);
+// TargetDefinition tcsinjectionProblemTgt = new ModelTargetDefinition(tcsinjection, problemmm);
+
+ // TCS2Problem
+ ATLTransformation tcs2problem = new ATLTransformation(rl.getResource("TCS/WFR/TCS2Problem.asm").asTextSource());
+ tcs2problem.addLibrary("KM3Helpers", rl.getResource("KM3-2005/Helpers/KM3Helpers.asm").asTextSource());
+ SourceDefinition tcs2problemTCSSrc = new ATLSourceDefinition(tcs2problem, "IN", "TCS", tcsmm);
+ SourceDefinition tcs2problemKM3Src = new ATLSourceDefinition(tcs2problem, "MM", "KM3", km3mm);
+ TargetDefinition tcs2problemTgt = new ATLTargetDefinition(tcs2problem, "OUT", "Problem", problemmm);
+
+ // TCS2Editor
+ Transformation tcs2editor = new ATLTransformation(rl.getResource("Editor/Compiler/TCS2Editor.asm").asTextSource());
+ SourceDefinition tcs2editorSrc = new ATLSourceDefinition(tcs2editor, "IN", "TCS", tcsmm);
+ TargetDefinition tcs2editorTgt = new ATLTargetDefinition(tcs2editor, "OUT", "Editor", editormm);
+
+ // KM3 Injection
+ Transformation km3injection = new TCSInjection(problemmm);
+ SourceDefinition km3injectionSrc = new SourceDefinition(km3injection);
+ TargetDefinition km3injectionTgt = new ModelTargetDefinition(km3injection, km3mm);
+// TargetDefinition km3injectionProblemTgt = new ModelTargetDefinition(km3injection, problemmm);
+
+ // KM32Problem
+ ATLTransformation km32problem = new ATLTransformation(rl.getResource("KM3-2005/WFR/KM32Problem.asm").asTextSource());
+ SourceDefinition km32problemSrc = new ATLSourceDefinition(km32problem, "IN", "KM3", km3mm);
+ TargetDefinition km32problemTgt = new ATLTargetDefinition(km32problem, "OUT", "Problem", problemmm);
+
+ // KM32Outline
+ ATLTransformation km32outline = new ATLTransformation(rl.getResource("Outline/Compiler/KM32Outline.asm").asTextSource());
+ km32outline.addLibrary("KM3Helpers", rl.getResource("KM3-2005/Helpers/KM3Helpers.asm").asTextSource());
+ SourceDefinition km32outlineSrc = new ATLSourceDefinition(km32outline, "IN", "KM3", km3mm);
+ TargetDefinition km32outlineTgt = new ATLTargetDefinition(km32outline, "OUT", "Outline", outlinemm);
+
+ // ACG Injection
+ Transformation acginjection = new TCSInjection(problemmm);
+ SourceDefinition acginjectionSrc = new SourceDefinition(acginjection);
+ TargetDefinition acginjectionTgt = new ModelTargetDefinition(acginjection, acgmm);
+// TargetDefinition acginjectionProblemTgt = new ModelTargetDefinition(acginjection, problemmm);
+
+ // ACGCompilation
+ ACGTransformation acgCompilation = new ACGTransformation(rl.getResource("ACG/Compiler/ACG.asm").asTextSource());
+ SourceDefinition acgCompilationSrc = new ATLSourceDefinition(acgCompilation, "IN", "ACG", acgmm);
+ TargetDefinition acgCompilationTgt = new TargetDefinition(acgCompilation);
+
+ // KM32Ecore
+ ATLTransformation km32ecore = new ATLTransformation(rl.getResource("KM3-2005/Compiler/KM32Ecore.asm").asTextSource());
+// km32ecore.addLibrary("KM3Helpers", rl.getResource("KM3-2005/Helpers/KM3Helpers.asm"));
+ SourceDefinition km32ecoreSrc = new ATLSourceDefinition(km32ecore, "IN", "KM3", km3mm);
+ TargetDefinition km32ecoreTgt = new ATLTargetDefinition(km32ecore, "OUT", "Ecore", ecoremm);
+
+ // Annotation Injection
+ Transformation annotationinjection = new TCSInjection(problemmm);
+ SourceDefinition annotationinjectionSrc = new SourceDefinition(annotationinjection);
+ TargetDefinition annotationinjectionTgt = new ModelTargetDefinition(annotationinjection, annotationmm);
+// TargetDefinition annotationinjectionProblemTgt = new ModelTargetDefinition(annotationinjection, problemmm);
+
+ // ApplyAnnotations2Ecore
+ ATLTransformation applyAnnotations2ecore = new ATLTransformation(rl.getResource("Annotation/Compiler/ApplyAnnotations2Ecore.asm").asTextSource());
+ SourceDefinition applyAnnotations2ecoreSrc = new ATLSourceDefinition(applyAnnotations2ecore, "IN", "Ecore", ecoremm);
+ SourceDefinition applyAnnotations2ecoreAnnotationSrc = new ATLSourceDefinition(applyAnnotations2ecore, "annotations", "Annotation", annotationmm);
+ TargetDefinition applyAnnotations2ecoreTgt = new ATLRefinedTargetDefinition(applyAnnotations2ecore, applyAnnotations2ecoreSrc);
+ TargetDefinition applyAnnotations2ecoreRefiningTraceTgt = new ATLTargetDefinition(applyAnnotations2ecore, "refiningTrace", "RefiningTrace", refiningTracemm);
+
+ // TCS2ANTLR
+ ATLTransformation tcs2antlr = new ATLTransformation(rl.getResource("TCS/Compiler/TCS2ANTLR.asm").asTextSource());
+ tcs2antlr.addLibrary("TCS2ANTLRActions", rl.getResource("TCS/Compiler/TCS2ANTLRv3Actions.asm").asTextSource());
+ tcs2antlr.addLibrary("KM3Helpers", rl.getResource("KM3-2005/Helpers/KM3Helpers.asm").asTextSource());
+ tcs2antlr.addLibrary("strings", rl.getResource("libs/strings.asm").asTextSource());
+ SourceDefinition tcs2antlrTCSSrc = new ATLSourceDefinition(tcs2antlr, "IN", "TCS", tcsmm);
+ SourceDefinition tcs2antlrKM3Src = new ATLSourceDefinition(tcs2antlr, "MM", "KM3", km3mm);
+ TargetDefinition tcs2antlrTgt = new ATLTargetDefinition(tcs2antlr, "OUT", "ANTLR", antlrmm);
+
+ // ANTLR Extraction
+ // not asEMFURI() because then this model is somehow not disposed off before its metamodel is
+ Transformation antlrextraction = new TCSExtraction(tcsmm, rl.getResource("ANTLR/Syntax/ANTLR-TCS.xmi").asURL());
+ SourceDefinition antlrextractionSrc = new ModelSourceDefinition(antlrextraction, antlrmm);
+ TargetDefinition antlrextractionTgt = new TargetDefinition(antlrextraction);
+ antlrextraction.setOption("identEsc", "");
+
+
+ ct = new CompositeTransformation();
+ srckm3 = new CompositeTransformationSourceDefinition(ct, km3mm);
+ srcannotation = new CompositeTransformationSourceDefinition(ct, annotationmm);
+ srctcs = new CompositeTransformationSourceDefinition(ct, tcsmm);
+ srcacg = new CompositeTransformationSourceDefinition(ct, acgmm);
+ tgttcsproblem = new CompositeTransformationTargetDefinition(ct, problemmm);
+ tgtkm3problem = new CompositeTransformationTargetDefinition(ct, problemmm);
+ tgtacgproblem = new CompositeTransformationTargetDefinition(ct, problemmm);
+ tgtasm = new CompositeTransformationTargetDefinition(ct, null);
+ tgteditor = new CompositeTransformationTargetDefinition(ct, editormm);
+ tgtoutline = new CompositeTransformationTargetDefinition(ct, outlinemm);
+ tgtgrammar = new CompositeTransformationTargetDefinition(ct, antlrmm);
+ tgtecore = new CompositeTransformationTargetDefinition(ct, ecoremm);
+ tgtecorePlusAnnotations = new CompositeTransformationTargetDefinition(ct, ecoremm);
+ tgttcs = new CompositeTransformationTargetDefinition(ct, tcsmm);
+
+ // TCS Injection Usage
+ TransformationUsage tcsinjectionUsage = new TransformationUsage(tcsinjection);
+// Source tcsinjectionUsageSrc =
+ new Source(tcsinjectionUsage, tcsinjectionSrc, srctcs);
+ Target tcsinjectionUsageTgt = new Target(tcsinjectionUsage, tcsinjectionTgt);
+// Target tcsinjectionUsageProblemTgt = new Target(tcsinjectionUsage, tcsinjectionProblemTgt);
+
+ tgttcs.setSource(tcsinjectionUsageTgt);
+
+// tgttcssyntaxproblem.setSource(tcsinjectionUsageProblemTgt);
+
+ // TCS2Editor Usage
+ TransformationUsage tcs2editorUsage = new TransformationUsage(tcs2editor);
+// Source tcs2editorUsageSrc =
+ new Source(tcs2editorUsage, tcs2editorSrc, tcsinjectionUsageTgt);
+ Target tcs2editorUsageTgt = new Target(tcs2editorUsage, tcs2editorTgt);
+
+ tgteditor.setSource(tcs2editorUsageTgt);
+
+ // KM3 Injection Usage
+ TransformationUsage km3injectionUsage = new TransformationUsage(km3injection);
+// Source km3injectionUsageSrc =
+ new Source(km3injectionUsage, km3injectionSrc, srckm3);
+ Target km3injectionUsageTgt = new Target(km3injectionUsage, km3injectionTgt);
+// Target km3injectionUsageProblemTgt = new Target(km3injectionUsage, km3injectionProblemTgt);
+
+// tgtkm3syntaxproblem.setSource(km3injectionUsageProblemTgt);
+
+ // Annotation Injection Usage
+ TransformationUsage annotationinjectionUsage = new TransformationUsage(annotationinjection);
+// Source annotation =
+ new Source(annotationinjectionUsage, annotationinjectionSrc, srcannotation);
+ Target annotationinjectionUsageTgt = new Target(annotationinjectionUsage, annotationinjectionTgt);
+
+ // TCS2Problem Usage
+ TransformationUsage tcs2problemUsage = new TransformationUsage(tcs2problem);
+// Source tcs2problemUsageTCSSrc =
+ new Source(tcs2problemUsage, tcs2problemTCSSrc, tcsinjectionUsageTgt);
+// Source tcs2problemUsageKM3Src =
+ new Source(tcs2problemUsage, tcs2problemKM3Src, km3injectionUsageTgt);
+ Target tcs2problemUsageTgt = new Target(tcs2problemUsage, tcs2problemTgt);
+
+ tgttcsproblem.setSource(tcs2problemUsageTgt);
+
+ // KM32Problem Usage
+ TransformationUsage km32problemUsage = new TransformationUsage(km32problem);
+// Source km32problemUsageSrc =
+ new Source(km32problemUsage, km32problemSrc, km3injectionUsageTgt);
+ Target km32problemUsageTgt = new Target(km32problemUsage, km32problemTgt);
+
+ tgtkm3problem.setSource(km32problemUsageTgt);
+
+ // KM32Outline Usage
+ TransformationUsage km32outlineUsage = new TransformationUsage(km32outline);
+// Source km32outlineUsageSrc =
+ new Source(km32outlineUsage, km32outlineSrc, km3injectionUsageTgt);
+ Target km32outlineUsageTgt = new Target(km32outlineUsage, km32outlineTgt);
+
+ tgtoutline.setSource(km32outlineUsageTgt);
+
+ // ACG Injection Usage
+ TransformationUsage acginjectionUsage = new TransformationUsage(acginjection);
+// Source acginjectionUsageSrc =
+ new Source(acginjectionUsage, acginjectionSrc, srcacg);
+ Target acginjectionUsageTgt = new Target(acginjectionUsage, acginjectionTgt);
+
+ // ACG Compilation Usage
+ TransformationUsage acgCompilationUsage = new TransformationUsage(acgCompilation);
+// Source acgCompilationUsageSrc =
+ new Source(acgCompilationUsage, acgCompilationSrc, acginjectionUsageTgt);
+ Target acgCompilationUsageTgt = new Target(acgCompilationUsage, acgCompilationTgt);
+
+ tgtasm.setSource(acgCompilationUsageTgt);
+
+ // KM32Ecore Usage
+ TransformationUsage km32ecoreUsage = new TransformationUsage(km32ecore);
+// Source km32ecoreUsageSrc =
+ new Source(km32ecoreUsage, km32ecoreSrc, km3injectionUsageTgt);
+ Target km32ecoreUsageTgt = new Target(km32ecoreUsage, km32ecoreTgt);
+
+ tgtecore.setSource(km32ecoreUsageTgt);
+
+ // ApplyAnnotations2Ecore Usage
+ TransformationUsage applyAnnotations2ecoreUsage = new TransformationUsage(applyAnnotations2ecore);
+// Source applyAnnotations2ecoreUsageSrc =
+ new Source(applyAnnotations2ecoreUsage, applyAnnotations2ecoreSrc, km32ecoreUsageTgt);
+// Source applyAnnotations2ecoreUsageAnnotationSrc =
+ new Source(applyAnnotations2ecoreUsage, applyAnnotations2ecoreAnnotationSrc, annotationinjectionUsageTgt);
+ Target applyAnnotations2ecoreUsageTgt = new Target(applyAnnotations2ecoreUsage, applyAnnotations2ecoreTgt);
+// Target applyAnnotations2ecoreUsageRefiningTraceTgt =
+ new Target(applyAnnotations2ecoreUsage, applyAnnotations2ecoreRefiningTraceTgt);
+
+ tgtecorePlusAnnotations.setSource(applyAnnotations2ecoreUsageTgt);
+
+ // TCS2ANTLR Usage
+ TransformationUsage tcs2antlrUsage = new TransformationUsage(tcs2antlr);
+// Source tcs2antlrUsageTCSSrc =
+ new Source(tcs2antlrUsage, tcs2antlrTCSSrc, tcsinjectionUsageTgt);
+// Source tcs2antlrUsageKM3Src =
+ new Source(tcs2antlrUsage, tcs2antlrKM3Src, km3injectionUsageTgt);
+ Target tcs2antlrUsageTgt = new Target(tcs2antlrUsage, tcs2antlrTgt);
+
+ // ANTLR Extraction Usage
+ TransformationUsage antlrextractionUsage = new TransformationUsage(antlrextraction);
+// Source antlrextractionUsageSrc =
+ new Source(antlrextractionUsage, antlrextractionSrc, tcs2antlrUsageTgt);
+ Target antlrextractionUsageTgt = new Target(antlrextractionUsage, antlrextractionTgt);
+
+ tgtgrammar.setSource(antlrextractionUsageTgt);
+ }
+
+ private ResourceLocator rl;
+
+ protected Metamodel getMetamodel(String name) throws IOException {
+ return getMetamodel(name, "");
+ }
+
+ protected Metamodel getMetamodel(String name, String folderSuffix) throws IOException {
+ return new Metamodel(name, rl.getResource(name + folderSuffix + "/Metamodel/" + name + ".ecore"));
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/CompositeTransformation.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/CompositeTransformation.java
new file mode 100644
index 0000000..7b63c9d
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/CompositeTransformation.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2007 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: CompositeTransformation.java,v 1.2 2008/06/25 13:01:57 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct;
+
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.gmt.tcs.builder.ct.definition.CompositeTransformationTargetDefinition;
+import org.eclipse.gmt.tcs.builder.ct.definition.Transformation;
+import org.eclipse.gmt.tcs.builder.ct.usage.Target;
+import org.eclipse.gmt.tcs.builder.ct.usage.TransformationUsage;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class CompositeTransformation extends Transformation {
+
+ public Object getTarget(CompositeTransformationTargetDefinition target, Map models) throws IOException {
+ return target.get(models);
+ }
+
+ /**
+ * Populates the models Map with all targets. Note that each target may also be retrieved separately
+ * by directly calling its get method.
+ * @throws IOException
+ */
+ public void execute(TransformationUsage usage, Map models) throws IOException {
+ for(Iterator i = usage.targets.iterator() ; i.hasNext() ; ) {
+ Target target = (Target)i.next();
+ models.put(target, target.get(models));
+ }
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/Metamodel.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/Metamodel.java
new file mode 100644
index 0000000..7c77dd8
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/Metamodel.java
@@ -0,0 +1,74 @@
+/**
+ * Copyright (c) 2007, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: Metamodel.java,v 1.5 2008/06/25 13:01:57 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct;
+
+import java.io.IOException;
+
+import org.eclipse.gmt.tcs.builder.ct.definition.ATLTransformation;
+import org.eclipse.m2m.atl.dsls.Resource;
+import org.eclipse.m2m.atl.dsls.textsource.TextSource;
+import org.eclipse.m2m.atl.engine.AtlEMFModelHandler;
+import org.eclipse.m2m.atl.engine.AtlModelHandler;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class Metamodel {
+
+ public String name;
+ public ASMModel metamodel;
+ public ATLTransformation checker = null;
+ public TextSource source = null;
+
+ public Metamodel(String name, String nsURI) throws IOException {
+ this.name = name;
+
+ AtlEMFModelHandler amh = (AtlEMFModelHandler)AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
+
+ metamodel = amh.loadModel(name, amh.getMof(), "uri:" + nsURI);
+ }
+
+ public Metamodel(String name, ASMModel metamodel) throws IOException {
+ this.name = name;
+ this.metamodel = metamodel;
+ }
+
+ public Metamodel(String name, TextSource metamodelTS) throws IOException {
+ this.name = name;
+
+ AtlModelHandler amh = AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
+
+ metamodel = amh.loadModel(name, amh.getMof(), metamodelTS.openStream());
+ source = metamodelTS;
+ }
+
+ public Metamodel(String name, Resource metamodelResource) throws IOException {
+ this.name = name;
+
+ AtlEMFModelHandler amh = (AtlEMFModelHandler)AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
+
+ metamodel = amh.loadModel(name, amh.getMof(), metamodelResource.asEMFURI());
+ source = metamodelResource.asTextSource();
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public ASMModel getMetamodel() {
+ return metamodel;
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/Origin.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/Origin.java
new file mode 100644
index 0000000..effac3a
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/Origin.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2007 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: Origin.java,v 1.2 2008/06/25 13:01:57 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct;
+
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public interface Origin {
+
+ public Object get(Map models) throws IOException;
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/ResourceLocator.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/ResourceLocator.java
new file mode 100644
index 0000000..106d575
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/ResourceLocator.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2007, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ResourceLocator.java,v 1.4 2008/06/25 13:01:57 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct;
+
+import java.io.IOException;
+
+import org.eclipse.m2m.atl.dsls.Resource;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public interface ResourceLocator {
+
+ public Resource getResource(String path) throws IOException;
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ACGTransformation.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ACGTransformation.java
new file mode 100644
index 0000000..7f2e390
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ACGTransformation.java
@@ -0,0 +1,131 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ACGTransformation.java,v 1.2 2008/06/25 13:01:57 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.definition;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.gmt.tcs.builder.ct.usage.Source;
+import org.eclipse.gmt.tcs.builder.ct.usage.Target;
+import org.eclipse.gmt.tcs.builder.ct.usage.TransformationUsage;
+import org.eclipse.m2m.atl.dsls.textsource.ByteArrayTextSource;
+import org.eclipse.m2m.atl.dsls.textsource.TextSource;
+import org.eclipse.m2m.atl.engine.ASMRetriever;
+import org.eclipse.m2m.atl.engine.AtlLauncher;
+import org.eclipse.m2m.atl.engine.AtlModelHandler;
+import org.eclipse.m2m.atl.engine.vm.ASM;
+import org.eclipse.m2m.atl.engine.vm.ASMXMLReader;
+import org.eclipse.m2m.atl.engine.vm.ASMXMLWriter;
+import org.eclipse.m2m.atl.engine.vm.Debugger;
+import org.eclipse.m2m.atl.engine.vm.SimpleDebugger;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class ACGTransformation extends Transformation {
+
+ public void execute(TransformationUsage usage, Map contextualModels) throws IOException {
+ Map libraries = new HashMap(this.libraries);
+ AtlModelHandler amh = AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
+
+ Map models = new HashMap();
+ models.put("MOF", amh.getMof());
+ for(Iterator i = usage.sources.iterator() ; i.hasNext() ; ) {
+ Source source = (Source)i.next();
+ ATLSourceDefinition sourceDef = (ATLSourceDefinition)source.definition;
+ ASMModel sourceModel = (ASMModel)source.origin.get(contextualModels);
+ ASMModel sourceMetamodel = sourceDef.getMetamodel().getMetamodel();
+ sourceModel.setIsTarget(false);
+ models.put(sourceDef.getMetamodelName(), sourceMetamodel);
+ models.put(sourceDef.getModelName(), sourceModel);
+ }
+/* for(Iterator i = usage.targets.iterator() ; i.hasNext() ; ) {
+ Target target = (Target)i.next();
+ ATLTargetDefinition targetDef = (ATLTargetDefinition)target.definition;
+ ASMModel targetMetamodel = targetDef.getMetamodel().getMetamodel();
+ models.put(targetDef.getMetamodelName(), targetMetamodel);
+ ASMModel targetModel = amh.newModel(targetDef.getModelName(), "myTarget.xmi", targetMetamodel);
+ models.put(targetDef.getModelName(), targetModel);
+
+ contextualModels.put(target, targetModel);
+ }
+*/
+ IFile file = ASMRetriever.getFile();
+ List superimpose = Collections.EMPTY_LIST;
+
+ Map options = Collections.EMPTY_MAP;
+
+ Debugger debugger = new SimpleDebugger(
+ /* step = */ "true".equals(options.get("step")),
+ /* stepops = */ new ArrayList(),
+ /* deepstepops = */ new ArrayList(),
+ /* nostepops = */ new ArrayList(),
+ /* deepnostepops = */ new ArrayList(),
+ /* showStackTrace = */ true,
+ "true".equals(options.get("showSummary")),
+ "true".equals(options.get("profile")),
+ "true".equals(options.get("continueAfterError"))
+ );
+// debugger = new NetworkDebugger(6060, true);
+
+ Map asmParams = new HashMap();
+ asmParams.put("debug", "false");//$NON-NLS-1$//$NON-NLS-2$
+ asmParams.put("WriteTo", file.getLocation().toString());//$NON-NLS-1$
+ AtlLauncher.getDefault().launch(asm, libraries, models, asmParams, superimpose, options, debugger);
+ ASM asm = ASMRetriever.getASM(file);
+ Target target = (Target)usage.targets.get(0);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ Map params = new HashMap();
+ params.putAll(options);
+ PrintWriter pw = new PrintWriter(baos);
+ new ASMXMLWriter(pw, false).print(asm);
+ pw.close();
+ contextualModels.put(target, new ByteArrayTextSource(baos.toByteArray()));
+ }
+
+ private ASM asm;
+ public Map libraries;
+
+ public ACGTransformation(TextSource transformationTS) throws IOException {
+ this(transformationTS, Collections.EMPTY_MAP);
+ }
+
+ public ACGTransformation(TextSource transformationTS, Map libraries) throws IOException {
+ asm = new ASMXMLReader().read(transformationTS.openStream());
+
+ this.libraries = new HashMap();
+ for(Iterator i = libraries.keySet().iterator() ; i.hasNext() ; ) {
+ Object key = i.next();
+ addLibrary(key, (TextSource)libraries.get(key));
+ }
+ }
+
+ public void addLibrary(Object name, TextSource ts) throws IOException {
+ this.libraries.put(name, new ASMXMLReader().read(ts.openStream()));
+ }
+
+ public ASM getASM() {
+ return asm;
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ATLRefinedTargetDefinition.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ATLRefinedTargetDefinition.java
new file mode 100644
index 0000000..6fc646f
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ATLRefinedTargetDefinition.java
@@ -0,0 +1,32 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ATLRefinedTargetDefinition.java,v 1.2 2008/06/25 13:01:56 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.definition;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class ATLRefinedTargetDefinition extends ModelTargetDefinition {
+
+ private ATLSourceDefinition source;
+
+ public ATLRefinedTargetDefinition(Transformation transformation, SourceDefinition source) {
+ super(transformation, ((ATLSourceDefinition)source).getMetamodel());
+ this.source = (ATLSourceDefinition)source;
+ }
+
+ public ATLSourceDefinition getSourceDefinition() {
+ return source;
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ATLSourceDefinition.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ATLSourceDefinition.java
new file mode 100644
index 0000000..1ea532d
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ATLSourceDefinition.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2007 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ATLSourceDefinition.java,v 1.2 2008/06/25 13:01:56 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.definition;
+
+import org.eclipse.gmt.tcs.builder.ct.Metamodel;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class ATLSourceDefinition extends ModelSourceDefinition {
+
+ private String modelName;
+ private String metamodelName;
+
+ public ATLSourceDefinition(Transformation transformation, String modelName, String metamodelName, Metamodel metamodel) {
+ super(transformation, metamodel);
+ this.modelName = modelName;
+ this.metamodelName = metamodelName;
+ }
+
+ public String getModelName() {
+ return modelName;
+ }
+
+ public String getMetamodelName() {
+ return metamodelName;
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ATLTargetDefinition.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ATLTargetDefinition.java
new file mode 100644
index 0000000..4384555
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ATLTargetDefinition.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2007 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ATLTargetDefinition.java,v 1.2 2008/06/25 13:01:57 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.definition;
+
+import org.eclipse.gmt.tcs.builder.ct.Metamodel;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class ATLTargetDefinition extends ModelTargetDefinition {
+
+ private String modelName;
+ private String metamodelName;
+
+ public ATLTargetDefinition(Transformation transformation, String modelName, String metamodelName, Metamodel metamodel) {
+ super(transformation, metamodel);
+ this.modelName = modelName;
+ this.metamodelName = metamodelName;
+ }
+
+ public String getModelName() {
+ return modelName;
+ }
+
+ public String getMetamodelName() {
+ return metamodelName;
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ATLTransformation.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ATLTransformation.java
new file mode 100644
index 0000000..7dae3e7
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ATLTransformation.java
@@ -0,0 +1,120 @@
+/**
+ * Copyright (c) 2007, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ATLTransformation.java,v 1.4 2008/06/25 13:01:57 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.definition;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.gmt.tcs.builder.ct.usage.Source;
+import org.eclipse.gmt.tcs.builder.ct.usage.Target;
+import org.eclipse.gmt.tcs.builder.ct.usage.TransformationUsage;
+import org.eclipse.m2m.atl.dsls.textsource.TextSource;
+import org.eclipse.m2m.atl.engine.AtlLauncher;
+import org.eclipse.m2m.atl.engine.AtlModelHandler;
+import org.eclipse.m2m.atl.engine.vm.ASM;
+import org.eclipse.m2m.atl.engine.vm.ASMXMLReader;
+import org.eclipse.m2m.atl.engine.vm.Debugger;
+import org.eclipse.m2m.atl.engine.vm.SimpleDebugger;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class ATLTransformation extends Transformation {
+
+ public void execute(TransformationUsage usage, Map contextualModels) throws IOException {
+ Map libraries = new HashMap(this.libraries);
+ AtlModelHandler amh = AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
+
+ Map models = new HashMap();
+ models.put("MOF", amh.getMof());
+ Map sourceModelBySourceDef = new HashMap();
+ for(Iterator i = usage.sources.iterator() ; i.hasNext() ; ) {
+ Source source = (Source)i.next();
+ ATLSourceDefinition sourceDef = (ATLSourceDefinition)source.definition;
+ ASMModel sourceModel = (ASMModel)source.origin.get(contextualModels);
+ ASMModel sourceMetamodel = sourceDef.getMetamodel().getMetamodel();
+ sourceModel.setIsTarget(false);
+ models.put(sourceDef.getMetamodelName(), sourceMetamodel);
+ models.put(sourceDef.getModelName(), sourceModel);
+ sourceModelBySourceDef.put(sourceDef, sourceModel);
+ }
+ for(Iterator i = usage.targets.iterator() ; i.hasNext() ; ) {
+ Target target = (Target)i.next();
+ ASMModel targetModel = null;
+ if(target.definition instanceof ATLTargetDefinition) {
+ ATLTargetDefinition targetDef = (ATLTargetDefinition)target.definition;
+ ASMModel targetMetamodel = targetDef.getMetamodel().getMetamodel();
+ models.put(targetDef.getMetamodelName(), targetMetamodel);
+ targetModel = amh.newModel(targetDef.getModelName(), "myTarget.xmi", targetMetamodel);
+ models.put(targetDef.getModelName(), targetModel);
+
+ } else {
+ ATLRefinedTargetDefinition targetDef = (ATLRefinedTargetDefinition)target.definition;
+ targetModel = (ASMModel)sourceModelBySourceDef.get(targetDef.getSourceDefinition());
+ }
+ contextualModels.put(target, targetModel);
+ }
+
+ List superimpose = Collections.EMPTY_LIST;
+
+ Map options = Collections.EMPTY_MAP;
+
+ Debugger debugger = new SimpleDebugger(
+ /* step = */ "true".equals(options.get("step")),
+ /* stepops = */ new ArrayList(),
+ /* deepstepops = */ new ArrayList(),
+ /* nostepops = */ new ArrayList(),
+ /* deepnostepops = */ new ArrayList(),
+ /* showStackTrace = */ true,
+ "true".equals(options.get("showSummary")),
+ "true".equals(options.get("profile")),
+ "true".equals(options.get("continueAfterError"))
+ );
+// debugger = new NetworkDebugger(6060, true);
+
+ AtlLauncher.getDefault().launch(asm, libraries, models, Collections.EMPTY_MAP, superimpose, options, debugger);
+ }
+
+ private ASM asm;
+ public Map libraries;
+
+ public ATLTransformation(TextSource transformationTS) throws IOException {
+ this(transformationTS, Collections.EMPTY_MAP);
+ }
+
+ public ATLTransformation(TextSource transformationTS, Map libraries) throws IOException {
+ asm = new ASMXMLReader().read(transformationTS.openStream());
+
+ this.libraries = new HashMap();
+ for(Iterator i = libraries.keySet().iterator() ; i.hasNext() ; ) {
+ Object key = i.next();
+ addLibrary(key, (TextSource)libraries.get(key));
+ }
+ }
+
+ public void addLibrary(Object name, TextSource ts) throws IOException {
+ this.libraries.put(name, new ASMXMLReader().read(ts.openStream()));
+ }
+
+ public ASM getASM() {
+ return asm;
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/CompositeTransformationSourceDefinition.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/CompositeTransformationSourceDefinition.java
new file mode 100644
index 0000000..2a6e09a
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/CompositeTransformationSourceDefinition.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2007 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: CompositeTransformationSourceDefinition.java,v 1.2 2008/06/25 13:01:57 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.definition;
+
+import java.util.Map;
+
+import org.eclipse.gmt.tcs.builder.ct.CompositeTransformation;
+import org.eclipse.gmt.tcs.builder.ct.Metamodel;
+import org.eclipse.gmt.tcs.builder.ct.Origin;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class CompositeTransformationSourceDefinition extends ModelSourceDefinition implements Origin {
+
+ public CompositeTransformationSourceDefinition(CompositeTransformation transformation, Metamodel metamodel) {
+ super(transformation, metamodel);
+ }
+
+ public Object get(Map models) {
+ Object ret = models.get(this);
+
+ if(ret == null)
+ throw new RuntimeException("source of composite transformation missing");
+
+ return ret;
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/CompositeTransformationTargetDefinition.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/CompositeTransformationTargetDefinition.java
new file mode 100644
index 0000000..c4e2a23
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/CompositeTransformationTargetDefinition.java
@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) 2007 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: CompositeTransformationTargetDefinition.java,v 1.2 2008/06/25 13:01:57 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.definition;
+
+import java.io.IOException;
+import java.util.Map;
+
+import org.eclipse.gmt.tcs.builder.ct.Metamodel;
+import org.eclipse.gmt.tcs.builder.ct.usage.Target;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class CompositeTransformationTargetDefinition extends ModelTargetDefinition {
+
+ private Target source;
+
+ public CompositeTransformationTargetDefinition(Transformation transformation, Metamodel metamodel) {
+ super(transformation, metamodel);
+ }
+
+ public void setSource(Target source) {
+ this.source = source;
+ }
+
+ public Object get(Map models) throws IOException {
+ return source.get(models);
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ModelSourceDefinition.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ModelSourceDefinition.java
new file mode 100644
index 0000000..92f6b96
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ModelSourceDefinition.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2007 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ModelSourceDefinition.java,v 1.2 2008/06/25 13:01:57 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.definition;
+
+import org.eclipse.gmt.tcs.builder.ct.Metamodel;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class ModelSourceDefinition extends SourceDefinition {
+
+ private Metamodel metamodel;
+
+ public ModelSourceDefinition(Transformation transformation, Metamodel metamodel) {
+ super(transformation);
+ this.metamodel = metamodel;
+ }
+
+ public Metamodel getMetamodel() {
+ return metamodel;
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ModelTargetDefinition.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ModelTargetDefinition.java
new file mode 100644
index 0000000..53b8331
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/ModelTargetDefinition.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2007 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ModelTargetDefinition.java,v 1.2 2008/06/25 13:01:56 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.definition;
+
+import org.eclipse.gmt.tcs.builder.ct.Metamodel;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class ModelTargetDefinition extends TargetDefinition {
+
+ private Metamodel metamodel;
+
+ public ModelTargetDefinition(Transformation transformation, Metamodel metamodel) {
+ super(transformation);
+ this.metamodel = metamodel;
+ }
+
+ public Metamodel getMetamodel() {
+ return metamodel;
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/SourceDefinition.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/SourceDefinition.java
new file mode 100644
index 0000000..10165d1
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/SourceDefinition.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2007 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: SourceDefinition.java,v 1.2 2008/06/25 13:01:56 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.definition;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class SourceDefinition {
+
+ public Transformation transformation;
+
+ public SourceDefinition(Transformation transformation) {
+ this.transformation = transformation;
+ transformation.sources.add(this);
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/TCSExtraction.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/TCSExtraction.java
new file mode 100644
index 0000000..ddaac6b
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/TCSExtraction.java
@@ -0,0 +1,74 @@
+/**
+ * Copyright (c) 2007, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TCSExtraction.java,v 1.5 2008/06/25 13:01:57 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.definition;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmt.tcs.builder.ct.Metamodel;
+import org.eclipse.gmt.tcs.builder.ct.usage.Source;
+import org.eclipse.gmt.tcs.builder.ct.usage.Target;
+import org.eclipse.gmt.tcs.builder.ct.usage.TransformationUsage;
+import org.eclipse.gmt.tcs.extractor.TCSExtractor;
+import org.eclipse.m2m.atl.dsls.textsource.ByteArrayTextSource;
+import org.eclipse.m2m.atl.engine.AtlEMFModelHandler;
+import org.eclipse.m2m.atl.engine.AtlModelHandler;
+import org.eclipse.m2m.atl.engine.extractors.Extractor;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class TCSExtraction extends Transformation {
+
+ public void execute(TransformationUsage usage, Map models) throws IOException {
+ Source source = (Source)usage.sources.get(0);
+ ASMModel sourceModel = (ASMModel)source.origin.get(models);
+ Extractor ext = new TCSExtractor();
+ Map params = new HashMap();
+ params.put("indentString", " ");
+ params.put("format", syntax);
+ params.put("serializeComments", "true");
+ Target target = (Target)usage.targets.get(0);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ params.putAll(options);
+ ext.extract(sourceModel, baos, params);
+ models.put(target, new ByteArrayTextSource(baos.toByteArray()));
+ }
+
+ private ASMModel syntax;
+
+ public TCSExtraction(Metamodel tcsmm, URI syntaxURI) throws IOException {
+ AtlEMFModelHandler amh = (AtlEMFModelHandler)AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
+
+ ASMModel tcsMetamodel = tcsmm.getMetamodel();
+ syntax = amh.loadModel(tcsMetamodel.getName() + "-TCS.xmi", tcsMetamodel, syntaxURI);
+ }
+
+ public TCSExtraction(Metamodel tcsmm, URL syntaxURL) throws IOException {
+ AtlEMFModelHandler amh = (AtlEMFModelHandler)AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
+
+ ASMModel tcsMetamodel = tcsmm.getMetamodel();
+ InputStream in = syntaxURL.openStream();
+ syntax = amh.loadModel(tcsMetamodel.getName() + "-TCS.xmi", tcsMetamodel, in);
+ in.close();
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/TCSInjection.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/TCSInjection.java
new file mode 100644
index 0000000..7a06ed8
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/TCSInjection.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2007, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TCSInjection.java,v 1.6 2008/06/25 13:01:56 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.definition;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.gmt.tcs.builder.ProblemReporter;
+import org.eclipse.gmt.tcs.builder.ct.Metamodel;
+import org.eclipse.gmt.tcs.builder.ct.usage.Source;
+import org.eclipse.gmt.tcs.builder.ct.usage.Target;
+import org.eclipse.gmt.tcs.builder.ct.usage.TransformationUsage;
+import org.eclipse.gmt.tcs.injector.TCSInjector;
+import org.eclipse.m2m.atl.dsls.textsource.TextSource;
+import org.eclipse.m2m.atl.engine.AtlModelHandler;
+import org.eclipse.m2m.atl.engine.injectors.Injector;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class TCSInjection extends Transformation {
+
+ public void execute(TransformationUsage usage, Map models) throws IOException {
+ AtlModelHandler amh = AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
+
+ Target target = null;
+ ModelTargetDefinition targetDef = null;
+ Target problem = null;
+ ModelTargetDefinition problemDef = null;
+ for(Iterator i = usage.targets.iterator() ; i.hasNext() ; ) {
+ Target tgt = (Target)i.next();
+ ModelTargetDefinition tgtDef = (ModelTargetDefinition)tgt.definition;
+ if("Problem".equals(tgtDef.getMetamodel().name)) {
+ problem = tgt;
+ problemDef = tgtDef;
+ } else {
+ target = tgt;
+ targetDef = tgtDef;
+ }
+ }
+
+
+ Injector inj = new TCSInjector();
+ Map params = new HashMap();
+ String name = targetDef.getMetamodel().getName();
+ params.put("name", name);
+ params.put("parserGenerator", parserGenerator);
+ try {
+ params.put("lexerClass", getClass().getClassLoader().loadClass("org.eclipse.gmt.tcs.injector." + name + "_ANTLR3Lexer"));
+ params.put("parserClass", getClass().getClassLoader().loadClass("org.eclipse.gmt.tcs.injector." + name + "_ANTLR3Parser"));
+ } catch (ClassNotFoundException e) {
+ IOException ioe = new IOException("problem loading lexer and/or parser class");
+ ioe.initCause(e);
+ throw ioe;
+ }
+ params.put("tabSize", "1");
+ ASMModel problemModel = null;
+ ProblemReporter problemReporter = null;
+ if(problemMetamodel != null)
+ problemReporter = (ProblemReporter)models.get("problemReporter");
+ if(problemDef != null) {
+ problemModel = amh.newModel("pbs", "pbs.xmi", problemDef.getMetamodel().getMetamodel());
+ params.put("problems", problemModel);
+ } else if(problemReporter != null) {
+ problemModel = amh.newModel("pbs", "pbs.xmi", problemMetamodel.getMetamodel());
+ params.put("problems", problemModel);
+ }
+ ASMModel targetModel = amh.newModel("myTarget", "myTarget.xmi", targetDef.getMetamodel().getMetamodel());
+ TextSource textSource = (TextSource)((Source)usage.sources.get(0)).origin.get(models);
+ InputStream stream = textSource.openStream();
+ inj.inject(targetModel, stream, params);
+ stream.close();
+ models.put(target, targetModel);
+ if(problemDef != null) {
+ models.put(problem, problemModel);
+ } else if(problemReporter != null) {
+ if(!problemReporter.reportProblem(textSource, problemModel)) {
+ models.remove(target);
+ }
+ }
+ }
+
+ private String parserGenerator;
+ private Metamodel problemMetamodel;
+
+ public TCSInjection() throws IOException {
+ this(null);
+ }
+
+ public TCSInjection(Metamodel problemMetamodel) throws IOException {
+ this(problemMetamodel, "antlr3");
+ }
+
+ public TCSInjection(Metamodel problemMetamodel, String parserGenerator) throws IOException {
+ this.parserGenerator = parserGenerator;
+ this.problemMetamodel = problemMetamodel;
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/TargetDefinition.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/TargetDefinition.java
new file mode 100644
index 0000000..4c9a152
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/TargetDefinition.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2007 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TargetDefinition.java,v 1.2 2008/06/25 13:01:57 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.definition;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class TargetDefinition {
+
+ public Transformation transformation;
+
+ public TargetDefinition(Transformation transformation) {
+ this.transformation = transformation;
+ transformation.targets.add(this);
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/Transformation.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/Transformation.java
new file mode 100644
index 0000000..d9e4fed
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/definition/Transformation.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2007 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: Transformation.java,v 1.2 2008/06/25 13:01:57 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.definition;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.gmt.tcs.builder.ct.usage.TransformationUsage;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public abstract class Transformation {
+
+ protected Map options = new HashMap();
+ public List sources = new ArrayList();
+ public List targets = new ArrayList();
+
+ public void addSource(SourceDefinition source) {
+ sources.add(source);
+ }
+
+ public void addTarget(TargetDefinition target) {
+ targets.add(target);
+ }
+
+ public abstract void execute(TransformationUsage usage, Map models) throws IOException;
+
+ public void setOption(String name, String value) {
+ options.put(name, value);
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/usage/Source.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/usage/Source.java
new file mode 100644
index 0000000..9215670
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/usage/Source.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2007, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: Source.java,v 1.3 2008/06/25 13:01:57 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.usage;
+
+import org.eclipse.gmt.tcs.builder.ct.Origin;
+import org.eclipse.gmt.tcs.builder.ct.definition.SourceDefinition;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class Source {
+
+// private TransformationUsage usage;
+ public SourceDefinition definition;
+ public Origin origin;
+
+ public Source(TransformationUsage usage, SourceDefinition definition, Origin origin) {
+// this.usage = usage;
+ this.definition = definition;
+ this.origin = origin;
+
+ usage.sources.add(this);
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/usage/Target.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/usage/Target.java
new file mode 100644
index 0000000..f667914
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/usage/Target.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2007, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: Target.java,v 1.3 2008/06/25 13:01:57 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.usage;
+
+import java.io.IOException;
+import java.util.Map;
+
+import org.eclipse.gmt.tcs.builder.ct.Origin;
+import org.eclipse.gmt.tcs.builder.ct.definition.TargetDefinition;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class Target implements Origin {
+
+ private TransformationUsage usage;
+ public TargetDefinition definition;
+
+ public Target(TransformationUsage usage, TargetDefinition definition) {
+ this.usage = usage;
+ this.definition = definition;
+
+ usage.targets.add(this);
+ }
+
+ public Object get(Map models) throws IOException {
+ Object ret = models.get(this);
+
+ if(ret == null) {
+ definition.transformation.execute(usage, models);
+ }
+
+ return models.get(this);
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/usage/TransformationUsage.java b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/usage/TransformationUsage.java
new file mode 100644
index 0000000..734a5ff
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.builder/src/org/eclipse/gmt/tcs/builder/ct/usage/TransformationUsage.java
@@ -0,0 +1,35 @@
+/**
+ * Copyright (c) 2007, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TransformationUsage.java,v 1.3 2008/06/25 13:01:57 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.builder.ct.usage;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.gmt.tcs.builder.ct.definition.Transformation;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class TransformationUsage {
+
+// private Transformation transformation;
+ public List sources = new ArrayList();
+ public List targets = new ArrayList();
+
+ public TransformationUsage(Transformation transformation) {
+// this.transformation = transformation;
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/.classpath b/plugins/org.eclipse.gmt.tcs.dsls/.classpath
new file mode 100644
index 0000000..c119047
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/.classpath
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry exported="true" kind="lib" path="resources/Annotation/Syntax/Annotation-parser.jar"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="lib" path="resources/KM3-2005/Syntax/KM3-parser.jar"/>
+ <classpathentry kind="lib" path="resources/TCS/Syntax/TCS-parser.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/.project b/plugins/org.eclipse.gmt.tcs.dsls/.project
new file mode 100644
index 0000000..70e285c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.gmt.tcs.dsls</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/META-INF/MANIFEST.MF b/plugins/org.eclipse.gmt.tcs.dsls/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..01465cd
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.gmt.tcs.dsls;singleton:=true
+Bundle-Version: 0.8.0
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-ClassPath: resources/KM3-2005/Syntax/KM3-parser.jar,
+ resources/TCS/Syntax/TCS-parser.jar,
+ resources/Annotation/Syntax/Annotation-parser.jar,
+ .
+Export-Package: org.eclipse.gmt.tcs.dsls,
+ org.eclipse.gmt.tcs.injector
+Require-Bundle: org.eclipse.m2m.atl.dsls;visibility:=reexport,
+ org.eclipse.core.runtime,
+ org.eclipse.gmt.tcs.metadata
+Eclipse-LazyStart: true
+Bundle-Activator: org.eclipse.gmt.tcs.dsls.Activator
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/about.html b/plugins/org.eclipse.gmt.tcs.dsls/about.html
new file mode 100644
index 0000000..7cc291c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>January 21, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/build.properties b/plugins/org.eclipse.gmt.tcs.dsls/build.properties
new file mode 100644
index 0000000..ba52230
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/build.properties
@@ -0,0 +1,18 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ resources/,\
+ plugin.xml,\
+ resources/Annotation/Syntax/Annotation-parser.jar,\
+ plugin.properties
+src.includes = src/,\
+ org.eclipse.gmt.tcs.dsls copy.binaries.from_ammacore.xml.launch,\
+ copy.binaries.from_ammacore.xml,\
+ build.properties,\
+ .project,\
+ .classpath,\
+ META-INF/,\
+ plugin.xml,\
+ resources/,\
+ about.html
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/copy.binaries.from_ammacore.xml b/plugins/org.eclipse.gmt.tcs.dsls/copy.binaries.from_ammacore.xml
new file mode 100644
index 0000000..65d79b8
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/copy.binaries.from_ammacore.xml
@@ -0,0 +1,27 @@
+<project name="copy.binaries.from.ammacore" default="all">
+ <property name="ammacore.path" value="/AMMACore"/>
+ <property name="copy.to.path" value="/org.eclipse.gmt.tcs.dsls/resources"/>
+
+ <eclipse.convertPath property="ammacore.absolute.path" resourcepath="${ammacore.path}"/>
+ <eclipse.convertPath property="copy.to.absolute.path" resourcepath="${copy.to.path}"/>
+
+ <target name="all">
+ <loadfile property="files" srcfile="${copy.to.absolute.path}/contents.list">
+ <filterchain>
+ <prefixlines prefix=","/>
+ <striplinebreaks/>
+ </filterchain>
+ </loadfile>
+
+ <delete>
+ <fileset dir="${copy.to.absolute.path}" includes="${files}"/>
+ </delete>
+
+ <copy todir="${copy.to.absolute.path}">
+ <fileset dir="${ammacore.absolute.path}" includes="${files}"/>
+ </copy>
+
+ <eclipse.refreshLocal resource="${copy.to.path}" depth="infinite"/>
+ </target>
+
+</project> \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/org.eclipse.gmt.tcs.dsls copy.binaries.from_ammacore.xml.launch b/plugins/org.eclipse.gmt.tcs.dsls/org.eclipse.gmt.tcs.dsls copy.binaries.from_ammacore.xml.launch
new file mode 100644
index 0000000..0a76f87
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/org.eclipse.gmt.tcs.dsls copy.binaries.from_ammacore.xml.launch
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntLaunchConfigurationType">
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<booleanAttribute key="org.eclipse.ant.uiSET_INPUTHANDLER" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.gmt.tcs.dsls/copy.binaries.from_ammacore.xml"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.gmt.tcs.dsls"/>
+<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/org.eclipse.gmt.tcs.dsls/copy.binaries.from_ammacore.xml}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/plugin.properties b/plugins/org.eclipse.gmt.tcs.dsls/plugin.properties
new file mode 100644
index 0000000..e2cf858
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/plugin.properties
@@ -0,0 +1,3 @@
+# NLS_MESSAGEFORMAT_VAR
+pluginName=Textual Concrete Syntax (TCS) DSLs (Incubation)
+providerName=Eclipse.org
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/plugin.xml b/plugins/org.eclipse.gmt.tcs.dsls/plugin.xml
new file mode 100644
index 0000000..ad9d84d
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/plugin.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.m2m.atl.dsls.dslresourceprovider">
+ <dsl.resourceprovider class="org.eclipse.gmt.tcs.dsls.DSLResourceProvider"/>
+ </extension>
+ <extension
+ point="org.eclipse.gmt.tcs.metadata.language">
+ <language
+ editor="resources/KM3-2005/Editor/KM3-Editor.xmi"
+ extension="km3"
+ metamodel="resources/KM3-2005/Metamodel/KM3.ecore"
+ name="KM3"
+ outline="resources/KM3-2005/Outline/KM3-Outline.xmi"
+ parser="resources/KM3-2005/Syntax/KM3-parser.jar"
+ syntax="resources/KM3-2005/Syntax/KM3-TCS.xmi">
+ </language>
+ <language
+ editor="resources/TCS/Editor/TCS-Editor.xmi"
+ extension="tcs"
+ metamodel="resources/TCS/Metamodel/TCS.ecore"
+ name="TCS"
+ outline="resources/TCS/Outline/TCS-Outline.xmi"
+ parser="resources/TCS/Syntax/TCS-parser.jar"
+ syntax="resources/TCS/Syntax/TCS-TCS.xmi">
+ </language>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/ANTLR/Metamodel/ANTLR.ecore b/plugins/org.eclipse.gmt.tcs.dsls/resources/ANTLR/Metamodel/ANTLR.ecore
new file mode 100644
index 0000000..75ef3bc
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/ANTLR/Metamodel/ANTLR.ecore
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore">
+ <ecore:EPackage name="Core" nsURI="http://www.eclipse.org/gmt/tcs/2007/ANTLR-Core" nsPrefix="antlrcore">
+ <eClassifiers xsi:type="ecore:EClass" name="LocatedElement" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="location" ordered="false" unique="false" lowerBound="1" eType="/3/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" ordered="false" unique="false" lowerBound="1" eType="/3/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false" lowerBound="1" eType="/3/String"/>
+ </eClassifiers>
+ </ecore:EPackage>
+ <ecore:EPackage name="ANTLR" nsURI="http://www.eclipse.org/gmt/tcs/2007/ANTLR" nsPrefix="antlr">
+ <eClassifiers xsi:type="ecore:EClass" name="Grammar" eSuperTypes="/0/NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="package" unique="false" lowerBound="1" eType="/3/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="actions" upperBound="-1" eType="/2/SemanticAction" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rules" upperBound="-1" eType="/1/ProductionRule" containment="true" eOpposite="/1/ProductionRule/grammar"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="options" unique="false" lowerBound="1" eType="/3/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lexer" unique="false" lowerBound="1" eType="/3/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="lexerRules" upperBound="-1" eType="/1/ProductionRule" containment="true" eOpposite="/1/ProductionRule/grammarAsLexer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ProductionRule" eSuperTypes="/0/NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="grammar" ordered="false" eType="/1/Grammar" eOpposite="/1/Grammar/rules"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="grammarAsLexer" ordered="false" eType="/1/Grammar" eOpposite="/1/Grammar/lexerRules"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="actions" upperBound="-1" eType="/2/SemanticAction" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="returns" ordered="false" eType="/2/VariableDeclaration" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="declarations" upperBound="-1" eType="/2/VariableDeclaration" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="needReturnDeclaration" ordered="false" unique="false" lowerBound="1" eType="/3/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="labelDeclarations" upperBound="-1" eType="/2/VariableDeclaration" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1" eType="/2/Parameter" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false" lowerBound="1" eType="/1/Expression" containment="true" eOpposite="/1/Expression/rule"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="options" unique="false" upperBound="-1" eType="/3/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Expression" abstract="true" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="sequence" ordered="false" eType="/1/Sequence_" eOpposite="/1/Sequence_/expression"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rule" ordered="false" eType="/1/ProductionRule" eOpposite="/1/ProductionRule/expression"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="prevAction" ordered="false" eType="/2/SemanticAction" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="action" ordered="false" eType="/2/SemanticAction" containment="true" eOpposite="/2/SemanticAction/expression"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="storeTo" ordered="false" eType="/2/Variable" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="concatenation" ordered="false" eType="/1/Concatenation" eOpposite="/1/Concatenation/expressions"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="alternative" ordered="false" eType="/1/Alternative" eOpposite="/1/Alternative/expressions"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="syntacticPredicate" ordered="false" unique="false" eType="/3/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="options" unique="false" upperBound="-1" eType="/3/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Sequence_" eSuperTypes="/1/Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false" lowerBound="1" eType="/1/Expression" containment="true" eOpposite="/1/Expression/sequence"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lower" ordered="false" unique="false" lowerBound="1" eType="/3/Integer"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="upper" ordered="false" unique="false" lowerBound="1" eType="/3/Integer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Concatenation" eSuperTypes="/1/Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expressions" lowerBound="1" upperBound="-1" eType="/1/Expression" containment="true" eOpposite="/1/Expression/concatenation"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Alternative" eSuperTypes="/1/Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expressions" lowerBound="1" upperBound="-1" eType="/1/Expression" containment="true" eOpposite="/1/Expression/alternative"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RuleCall" eSuperTypes="/1/Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="calledRule" ordered="false" lowerBound="1" eType="/1/ProductionRule"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="arguments" ordered="false" upperBound="-1" eType="/2/ActionExpression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TokenCall" eSuperTypes="/1/Expression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" unique="false" lowerBound="1" eType="/3/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="storeASTTo" unique="false" eType="/3/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Terminal" eSuperTypes="/1/Expression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/3/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CharTerminal" eSuperTypes="/1/Expression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/3/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Negation" eSuperTypes="/1/Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false" lowerBound="1" eType="/1/Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Drop" eSuperTypes="/1/Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false" lowerBound="1" eType="/1/Expression" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Interval" eSuperTypes="/1/Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="start" ordered="false" lowerBound="1" eType="/1/CharTerminal" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" lowerBound="1" eType="/1/CharTerminal" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LiteralExpression" eSuperTypes="/1/Expression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/3/String"/>
+ </eClassifiers>
+ </ecore:EPackage>
+ <ecore:EPackage name="Actions" nsURI="http://www.eclipse.org/gmt/tcs/2007/ANTLR-Actions" nsPrefix="antlractions">
+ <eClassifiers xsi:type="ecore:EClass" name="Type" eSuperTypes="/0/NamedElement"/>
+ <eClassifiers xsi:type="ecore:EClass" name="VariableDeclaration" eSuperTypes="/0/NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="variable" ordered="false" upperBound="-1" eType="/2/Variable" eOpposite="/2/Variable/declaration"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" ordered="false" unique="false" lowerBound="1" eType="/3/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="initialValue" ordered="false" unique="false" lowerBound="1" eType="/3/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="/2/VariableDeclaration"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Variable" eSuperTypes="/2/ActionExpression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="declaration" ordered="false" lowerBound="1" eType="/2/VariableDeclaration" eOpposite="/2/VariableDeclaration/variable"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SemanticAction" abstract="true" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="block" ordered="false" eType="/2/SemanticActionBlock" eOpposite="/2/SemanticActionBlock/actions"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expression" ordered="false" lowerBound="1" eType="/1/Expression" eOpposite="/1/Expression/action"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SimpleSemanticAction" eSuperTypes="/2/SemanticAction">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/3/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SemanticActionBlock" eSuperTypes="/2/SemanticAction">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="actions" ordered="false" upperBound="-1" eType="/2/SemanticAction" containment="true" eOpposite="/2/SemanticAction/block"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ActionExpression" abstract="true" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" ordered="false" unique="false" lowerBound="1" eType="/3/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TextualExpression" eSuperTypes="/2/ActionExpression">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/3/String"/>
+ </eClassifiers>
+ </ecore:EPackage>
+ <ecore:EPackage name="PrimitiveTypes" nsURI="http://www.eclipse.org/gmt/tcs/2007/ANTLR-PrimitiveTypes" nsPrefix="pt">
+ <eClassifiers xsi:type="ecore:EDataType" name="Boolean" instanceClassName="boolean"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="Integer" instanceClassName="int"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String"/>
+ </ecore:EPackage>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/ANTLR/Syntax/ANTLR-TCS.xmi b/plugins/org.eclipse.gmt.tcs.dsls/resources/ANTLR/Syntax/ANTLR-TCS.xmi
new file mode 100644
index 0000000..b96ea64
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/ANTLR/Syntax/ANTLR-TCS.xmi
@@ -0,0 +1,638 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tcs="http://www.eclipse.org/gmt/tcs/2007/TCS">
+ <tcs:ConcreteSyntax location="7:1-313:2" name="ANTLR" lexer="&#xD;&#xA;&#x9;&#x9;// no need for lexer for a serialization-only TCS model&#xD;&#xA;&#x9;">
+ <commentsBefore>-- @date&#x9;&#x9;2007/09/19</commentsBefore>
+ <commentsBefore>-- @description&#x9;This TCS model defines the syntax of the ANTLRv3 language.</commentsBefore>
+ <commentsBefore>-- REMARK: this model can only be used for serialization so far.</commentsBefore>
+ <commentsBefore>-- NOT TO BE USED as a typical example of TCS model.</commentsBefore>
+ <templates xsi:type="tcs:PrimitiveTemplate" location="9:2-10:21" name="identifier" typeName="String" isDefault="true" tokenName="NAME" value="%token%"/>
+ <templates xsi:type="tcs:PrimitiveTemplate" location="12:2-14:50" name="stringSymbol" typeName="String" tokenName="STRING" value="%token%" serializer="''' + %value%.toCString() + '''"/>
+ <templates xsi:type="tcs:PrimitiveTemplate" location="16:2-17:38" name="integerSymbol" typeName="Integer" isDefault="true" tokenName="INT" value="Integer.valueOf(%token%)"/>
+ <templates xsi:type="tcs:PrimitiveTemplate" location="19:2-20:38" name="booleanSymbol" typeName="Boolean" isDefault="true" tokenName="BOOLEAN" value="Boolean.valueOf(%token%)"/>
+ <templates xsi:type="tcs:ClassTemplate" location="22:2-86:4" name="Grammar" isMain="true">
+ <templateSequence location="24:4-85:5">
+ <elements xsi:type="tcs:LiteralRef" location="24:4-24:13" referredLiteral="/1"/>
+ <elements xsi:type="tcs:Property" location="24:14-24:18" name="name"/>
+ <elements xsi:type="tcs:CustomSeparator" location="24:19-24:29" name="no_space"/>
+ <elements xsi:type="tcs:LiteralRef" location="24:30-24:39" referredLiteral="/2"/>
+ <elements xsi:type="tcs:LiteralRef" location="24:40-24:43" referredLiteral="/0/@symbols.8"/>
+ <elements xsi:type="tcs:ConditionalElement" location="25:4-29:5">
+ <condition xsi:type="tcs:AndExp" location="25:5-25:23">
+ <expressions xsi:type="tcs:IsDefinedExp" location="25:5-25:23" propertyName="options"/>
+ </condition>
+ <thenSequence location="26:5-28:10">
+ <elements xsi:type="tcs:LiteralRef" location="26:5-26:14" referredLiteral="/3"/>
+ <elements xsi:type="tcs:LiteralRef" location="26:15-26:18" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Block" location="26:19-28:6">
+ <blockSequence location="27:6-27:13">
+ <elements xsi:type="tcs:Property" location="27:6-27:13" name="options"/>
+ </blockSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="28:7-28:10" referredLiteral="/0/@symbols.7"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="30:4-62:5">
+ <condition xsi:type="tcs:AndExp" location="30:5-30:23">
+ <expressions xsi:type="tcs:IsDefinedExp" location="30:5-30:23" propertyName="package"/>
+ </condition>
+ <thenSequence location="31:5-61:3">
+ <elements xsi:type="tcs:LiteralRef" location="31:5-31:14" referredLiteral="/4"/>
+ <elements xsi:type="tcs:LiteralRef" location="31:15-31:18" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:LiteralRef" location="32:6-32:15" referredLiteral="/5"/>
+ <elements xsi:type="tcs:Property" location="32:16-32:23" name="package"/>
+ <elements xsi:type="tcs:LiteralRef" location="32:24-32:27" referredLiteral="/0/@symbols.8"/>
+ <elements xsi:type="tcs:LiteralRef" location="33:5-33:8" referredLiteral="/0/@symbols.7"/>
+ <elements xsi:type="tcs:LiteralRef" location="34:5-34:21" referredLiteral="/6"/>
+ <elements xsi:type="tcs:LiteralRef" location="34:22-34:25" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:LiteralRef" location="35:6-35:15" referredLiteral="/5"/>
+ <elements xsi:type="tcs:Property" location="35:16-35:23" name="package"/>
+ <elements xsi:type="tcs:LiteralRef" location="35:24-35:27" referredLiteral="/0/@symbols.8"/>
+ <elements xsi:type="tcs:LiteralRef" location="36:5-36:8" referredLiteral="/0/@symbols.7"/>
+ <elements xsi:type="tcs:LiteralRef" location="37:1-61:3" referredLiteral="/7"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="63:4-78:5">
+ <condition xsi:type="tcs:AndExp" location="63:5-63:23">
+ <expressions xsi:type="tcs:IsDefinedExp" location="63:5-63:23" propertyName="actions"/>
+ </condition>
+ <thenSequence location="64:5-77:10">
+ <elements xsi:type="tcs:LiteralRef" location="64:5-64:15" referredLiteral="/8"/>
+ <elements xsi:type="tcs:LiteralRef" location="64:16-64:19" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Block" location="64:20-77:6">
+ <blockSequence location="65:6-76:8">
+ <elements xsi:type="tcs:Property" location="65:6-65:13" name="actions"/>
+ <elements xsi:type="tcs:LiteralRef" location="66:6-67:56" referredLiteral="/9"/>
+ <elements xsi:type="tcs:Property" location="68:7-68:11" name="name"/>
+ <elements xsi:type="tcs:CustomSeparator" location="68:12-68:22" name="no_space"/>
+ <elements xsi:type="tcs:LiteralRef" location="68:23-68:48" referredLiteral="/10"/>
+ <elements xsi:type="tcs:Property" location="68:49-68:53" name="name"/>
+ <elements xsi:type="tcs:CustomSeparator" location="68:54-68:64" name="no_space"/>
+ <elements xsi:type="tcs:LiteralRef" location="68:65-73:8" referredLiteral="/11"/>
+ <elements xsi:type="tcs:Property" location="74:7-74:11" name="name"/>
+ <elements xsi:type="tcs:CustomSeparator" location="74:12-74:22" name="no_space"/>
+ <elements xsi:type="tcs:LiteralRef" location="74:23-74:52" referredLiteral="/12"/>
+ <elements xsi:type="tcs:Property" location="74:53-74:57" name="name"/>
+ <elements xsi:type="tcs:CustomSeparator" location="74:58-74:68" name="no_space"/>
+ <elements xsi:type="tcs:LiteralRef" location="74:69-76:8" referredLiteral="/13"/>
+ </blockSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="77:7-77:10" referredLiteral="/0/@symbols.7"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:Block" location="79:4-81:32">
+ <blockSequence location="80:5-80:10">
+ <elements xsi:type="tcs:Property" location="80:5-80:10" name="rules"/>
+ </blockSequence>
+ <blockArgs xsi:type="tcs:IndentIncrBArg" location="81:7-81:21" value="0"/>
+ <blockArgs xsi:type="tcs:NbNLBArg" location="81:23-81:31" value="2"/>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="82:4-85:5">
+ <condition xsi:type="tcs:AndExp" location="82:5-82:23">
+ <expressions xsi:type="tcs:IsDefinedExp" location="82:5-82:23" propertyName="lexer"/>
+ </condition>
+ <thenSequence location="83:5-84:46">
+ <elements xsi:type="tcs:Property" location="83:5-83:12" name="lexer"/>
+ <elements xsi:type="tcs:Block" location="84:5-84:46">
+ <blockSequence location="84:7-84:17">
+ <elements xsi:type="tcs:Property" location="84:7-84:17" name="lexerRules"/>
+ </blockSequence>
+ <blockArgs xsi:type="tcs:IndentIncrBArg" location="84:21-84:35" value="0"/>
+ <blockArgs xsi:type="tcs:NbNLBArg" location="84:37-84:45" value="2"/>
+ </elements>
+ </thenSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="88:2-120:4" name="ProductionRule">
+ <templateSequence location="89:5-119:23">
+ <elements xsi:type="tcs:Property" location="89:5-89:9" name="name"/>
+ <elements xsi:type="tcs:ConditionalElement" location="90:4-92:5">
+ <condition xsi:type="tcs:AndExp" location="90:5-90:26">
+ <expressions xsi:type="tcs:IsDefinedExp" location="90:5-90:26" propertyName="parameters"/>
+ </condition>
+ <thenSequence location="91:5-91:40">
+ <elements xsi:type="tcs:LiteralRef" location="91:5-91:8" referredLiteral="/0/@symbols.0"/>
+ <elements xsi:type="tcs:Property" location="91:9-91:36" name="parameters">
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="91:20-91:35">
+ <separatorSequence location="91:32-91:35">
+ <elements xsi:type="tcs:LiteralRef" location="91:32-91:35" referredLiteral="/0/@symbols.3"/>
+ </separatorSequence>
+ </propertyArgs>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="91:37-91:40" referredLiteral="/0/@symbols.1"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="93:4-97:5">
+ <condition xsi:type="tcs:AndExp" location="93:5-93:23">
+ <expressions xsi:type="tcs:IsDefinedExp" location="93:5-93:23" propertyName="returns"/>
+ </condition>
+ <thenSequence location="94:5-96:8">
+ <elements xsi:type="tcs:LiteralRef" location="94:5-94:14" referredLiteral="/14"/>
+ <elements xsi:type="tcs:LiteralRef" location="94:15-94:18" referredLiteral="/0/@symbols.0"/>
+ <elements xsi:type="tcs:LiteralRef" location="95:6-95:14" referredLiteral="/15"/>
+ <elements xsi:type="tcs:LiteralRef" location="95:15-95:21" referredLiteral="/16"/>
+ <elements xsi:type="tcs:LiteralRef" location="96:5-96:8" referredLiteral="/0/@symbols.1"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="98:4-98:11" referredLiteral="/17"/>
+ <elements xsi:type="tcs:LiteralRef" location="98:12-98:15" referredLiteral="/0/@symbols.6">
+ <commentsAfter>-- if not needReturnDeclaration, then it is a label, which is automatically created by ANTLRv3, or it is not needed for some other reason</commentsAfter>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="100:5-102:6">
+ <commentsBefore>-- if not needReturnDeclaration, then it is a label, which is automatically created by ANTLRv3, or it is not needed for some other reason</commentsBefore>
+ <condition xsi:type="tcs:AndExp" location="100:6-100:50">
+ <expressions xsi:type="tcs:IsDefinedExp" location="100:6-100:24" propertyName="returns"/>
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="100:29-100:50" propertyName="needReturnDeclaration"/>
+ </condition>
+ <thenSequence location="101:6-101:13">
+ <elements xsi:type="tcs:Property" location="101:6-101:13" name="returns"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="103:5-105:6">
+ <condition xsi:type="tcs:AndExp" location="103:6-103:29">
+ <expressions xsi:type="tcs:IsDefinedExp" location="103:6-103:29" propertyName="declarations"/>
+ </condition>
+ <thenSequence location="104:6-104:18">
+ <elements xsi:type="tcs:Property" location="104:6-104:18" name="declarations"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="106:4-106:7" referredLiteral="/0/@symbols.7"/>
+ <elements xsi:type="tcs:CustomSeparator" location="107:4-107:13" name="newline"/>
+ <elements xsi:type="tcs:CustomSeparator" location="107:14-107:19" name="tab"/>
+ <elements xsi:type="tcs:LiteralRef" location="107:20-107:23" referredLiteral="/0/@symbols.9"/>
+ <elements xsi:type="tcs:ConditionalElement" location="108:5-110:6">
+ <condition xsi:type="tcs:AndExp" location="108:6-108:27">
+ <expressions xsi:type="tcs:IsDefinedExp" location="108:6-108:27" propertyName="expression"/>
+ </condition>
+ <thenSequence location="109:6-109:22">
+ <elements xsi:type="tcs:CustomSeparator" location="109:6-109:11" name="tab"/>
+ <elements xsi:type="tcs:Property" location="109:12-109:22" name="expression"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:Block" location="111:6-118:30">
+ <blockSequence location="111:8-118:11">
+ <elements xsi:type="tcs:LiteralRef" location="111:8-111:11" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Block" location="111:12-118:7">
+ <blockSequence location="112:5-117:7">
+ <elements xsi:type="tcs:ConditionalElement" location="112:5-114:6">
+ <condition xsi:type="tcs:AndExp" location="112:6-112:24">
+ <expressions xsi:type="tcs:IsDefinedExp" location="112:6-112:24" propertyName="actions"/>
+ </condition>
+ <thenSequence location="113:7-113:14">
+ <elements xsi:type="tcs:Property" location="113:7-113:14" name="actions"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="115:5-117:7">
+ <condition xsi:type="tcs:AndExp" location="115:6-115:24">
+ <expressions xsi:type="tcs:IsDefinedExp" location="115:6-115:24" propertyName="returns"/>
+ </condition>
+ <thenSequence location="116:7-116:27">
+ <elements xsi:type="tcs:LiteralRef" location="116:7-116:13" referredLiteral="/16"/>
+ <elements xsi:type="tcs:LiteralRef" location="116:14-116:17" referredLiteral="/0/@symbols.20"/>
+ <elements xsi:type="tcs:LiteralRef" location="116:18-116:23" referredLiteral="/18"/>
+ <elements xsi:type="tcs:LiteralRef" location="116:24-116:27" referredLiteral="/0/@symbols.8"/>
+ </thenSequence>
+ </elements>
+ </blockSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="118:8-118:11" referredLiteral="/0/@symbols.7"/>
+ </blockSequence>
+ <blockArgs xsi:type="tcs:IndentIncrBArg" location="118:15-118:29" value="2"/>
+ </elements>
+ <elements xsi:type="tcs:CustomSeparator" location="119:4-119:13" name="newline"/>
+ <elements xsi:type="tcs:CustomSeparator" location="119:14-119:19" name="tab"/>
+ <elements xsi:type="tcs:LiteralRef" location="119:20-119:23" referredLiteral="/0/@symbols.8"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="122:2-128:4" name="VariableDeclaration">
+ <templateSequence location="123:5-127:7">
+ <elements xsi:type="tcs:Property" location="123:5-123:9" name="type"/>
+ <elements xsi:type="tcs:Property" location="123:10-123:14" name="name"/>
+ <elements xsi:type="tcs:ConditionalElement" location="124:4-126:5">
+ <condition xsi:type="tcs:AndExp" location="124:5-124:28">
+ <expressions xsi:type="tcs:IsDefinedExp" location="124:5-124:28" propertyName="initialValue"/>
+ </condition>
+ <thenSequence location="125:5-125:21">
+ <elements xsi:type="tcs:LiteralRef" location="125:5-125:8" referredLiteral="/0/@symbols.20"/>
+ <elements xsi:type="tcs:Property" location="125:9-125:21" name="initialValue"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="127:4-127:7" referredLiteral="/0/@symbols.8"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="130:2-132:4" name="Parameter">
+ <templateSequence location="131:5-131:14">
+ <elements xsi:type="tcs:Property" location="131:5-131:9" name="type"/>
+ <elements xsi:type="tcs:Property" location="131:10-131:14" name="name"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="134:2-136:4" name="Variable">
+ <templateSequence location="135:5-135:33">
+ <elements xsi:type="tcs:Property" location="135:5-135:33" name="declaration">
+ <propertyArgs xsi:type="tcs:RefersToPArg" location="135:17-135:32" propertyName="name"/>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="138:2-138:31" name="Expression" isAbstract="true"/>
+ <templates xsi:type="tcs:ClassTemplate" location="140:2-156:4" name="Alternative">
+ <templateSequence location="141:5-155:5">
+ <elements xsi:type="tcs:ConditionalElement" location="141:5-143:5">
+ <condition xsi:type="tcs:AndExp" location="141:6-141:27">
+ <expressions xsi:type="tcs:IsDefinedExp" location="141:6-141:27" propertyName="prevAction"/>
+ </condition>
+ <thenSequence location="142:5-142:23">
+ <elements xsi:type="tcs:LiteralRef" location="142:5-142:8" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="142:9-142:19" name="prevAction"/>
+ <elements xsi:type="tcs:LiteralRef" location="142:20-142:23" referredLiteral="/0/@symbols.7"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="144:4-155:5">
+ <condition xsi:type="tcs:AndExp" location="144:5-144:21">
+ <expressions xsi:type="tcs:OneExp" location="144:5-144:21" propertyName="expressions"/>
+ </condition>
+ <thenSequence location="145:6-145:17">
+ <elements xsi:type="tcs:Property" location="145:6-145:17" name="expressions"/>
+ </thenSequence>
+ <elseSequence location="147:4-154:7">
+ <elements xsi:type="tcs:LiteralRef" location="147:4-147:7" referredLiteral="/0/@symbols.4"/>
+ <elements xsi:type="tcs:ConditionalElement" location="148:5-152:6">
+ <condition xsi:type="tcs:AndExp" location="148:6-148:24">
+ <expressions xsi:type="tcs:IsDefinedExp" location="148:6-148:24" propertyName="options"/>
+ </condition>
+ <thenSequence location="149:6-151:13">
+ <elements xsi:type="tcs:LiteralRef" location="149:6-149:15" referredLiteral="/3"/>
+ <elements xsi:type="tcs:LiteralRef" location="149:16-149:19" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="150:7-150:14" name="options"/>
+ <elements xsi:type="tcs:LiteralRef" location="151:6-151:9" referredLiteral="/0/@symbols.7"/>
+ <elements xsi:type="tcs:LiteralRef" location="151:10-151:13" referredLiteral="/0/@symbols.9"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:Property" location="153:5-153:33" name="expressions">
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="153:17-153:32">
+ <separatorSequence location="153:29-153:32">
+ <elements xsi:type="tcs:LiteralRef" location="153:29-153:32" referredLiteral="/0/@symbols.11"/>
+ </separatorSequence>
+ </propertyArgs>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="154:4-154:7" referredLiteral="/0/@symbols.5"/>
+ </elseSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="158:2-173:4" name="Concatenation">
+ <templateSequence location="159:5-172:5">
+ <elements xsi:type="tcs:ConditionalElement" location="159:5-161:5">
+ <condition xsi:type="tcs:AndExp" location="159:6-159:35">
+ <expressions xsi:type="tcs:IsDefinedExp" location="159:6-159:35" propertyName="syntacticPredicate"/>
+ </condition>
+ <thenSequence location="160:5-160:36">
+ <elements xsi:type="tcs:LiteralRef" location="160:5-160:8" referredLiteral="/0/@symbols.4"/>
+ <elements xsi:type="tcs:Property" location="160:9-160:27" name="syntacticPredicate"/>
+ <elements xsi:type="tcs:LiteralRef" location="160:28-160:31" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:LiteralRef" location="160:32-160:36" referredLiteral="/19"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="162:4-162:7" referredLiteral="/0/@symbols.4"/>
+ <elements xsi:type="tcs:ConditionalElement" location="163:5-167:6">
+ <condition xsi:type="tcs:AndExp" location="163:6-163:24">
+ <expressions xsi:type="tcs:IsDefinedExp" location="163:6-163:24" propertyName="options"/>
+ </condition>
+ <thenSequence location="164:6-166:13">
+ <elements xsi:type="tcs:LiteralRef" location="164:6-164:15" referredLiteral="/3"/>
+ <elements xsi:type="tcs:LiteralRef" location="164:16-164:19" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="165:7-165:14" name="options"/>
+ <elements xsi:type="tcs:LiteralRef" location="166:6-166:9" referredLiteral="/0/@symbols.7"/>
+ <elements xsi:type="tcs:LiteralRef" location="166:10-166:13" referredLiteral="/0/@symbols.9"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:Property" location="168:5-168:16" name="expressions"/>
+ <elements xsi:type="tcs:LiteralRef" location="169:4-169:7" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:ConditionalElement" location="170:4-172:5">
+ <condition xsi:type="tcs:AndExp" location="170:5-170:22">
+ <expressions xsi:type="tcs:IsDefinedExp" location="170:5-170:22" propertyName="action"/>
+ </condition>
+ <thenSequence location="171:5-171:19">
+ <elements xsi:type="tcs:LiteralRef" location="171:5-171:8" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="171:9-171:15" name="action"/>
+ <elements xsi:type="tcs:LiteralRef" location="171:16-171:19" referredLiteral="/0/@symbols.7"/>
+ </thenSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="175:2-180:4" name="Terminal">
+ <commentsAfter>-- @begin ForLexer</commentsAfter>
+ <templateSequence location="176:5-179:5">
+ <elements xsi:type="tcs:LiteralRef" location="176:5-176:9" referredLiteral="/20"/>
+ <elements xsi:type="tcs:CustomSeparator" location="176:10-176:20" name="no_space"/>
+ <elements xsi:type="tcs:Property" location="176:21-176:28" name="value"/>
+ <elements xsi:type="tcs:CustomSeparator" location="176:29-176:39" name="no_space"/>
+ <elements xsi:type="tcs:LiteralRef" location="176:40-176:44" referredLiteral="/20"/>
+ <elements xsi:type="tcs:ConditionalElement" location="177:4-179:5">
+ <condition xsi:type="tcs:AndExp" location="177:5-177:22">
+ <expressions xsi:type="tcs:IsDefinedExp" location="177:5-177:22" propertyName="action"/>
+ </condition>
+ <thenSequence location="178:5-178:19">
+ <elements xsi:type="tcs:LiteralRef" location="178:5-178:8" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="178:9-178:15" name="action"/>
+ <elements xsi:type="tcs:LiteralRef" location="178:16-178:19" referredLiteral="/0/@symbols.7"/>
+ </thenSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="183:2-185:4" name="CharTerminal">
+ <commentsBefore>-- @begin ForLexer</commentsBefore>
+ <templateSequence location="184:5-184:42">
+ <elements xsi:type="tcs:LiteralRef" location="184:5-184:9" referredLiteral="/20"/>
+ <elements xsi:type="tcs:CustomSeparator" location="184:10-184:20" name="no_space"/>
+ <elements xsi:type="tcs:Property" location="184:21-184:26" name="value"/>
+ <elements xsi:type="tcs:CustomSeparator" location="184:27-184:37" name="no_space"/>
+ <elements xsi:type="tcs:LiteralRef" location="184:38-184:42" referredLiteral="/20"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="187:2-189:4" name="Negation">
+ <templateSequence location="188:5-188:19">
+ <elements xsi:type="tcs:LiteralRef" location="188:5-188:8" referredLiteral="/21"/>
+ <elements xsi:type="tcs:Property" location="188:9-188:19" name="expression"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="191:2-193:4" name="Drop">
+ <templateSequence location="192:5-192:19">
+ <elements xsi:type="tcs:Property" location="192:5-192:15" name="expression"/>
+ <elements xsi:type="tcs:LiteralRef" location="192:16-192:19" referredLiteral="/0/@symbols.2"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="195:2-197:4" name="Interval">
+ <commentsAfter>-- @end ForLexer</commentsAfter>
+ <templateSequence location="196:5-196:19">
+ <elements xsi:type="tcs:Property" location="196:5-196:10" name="start"/>
+ <elements xsi:type="tcs:LiteralRef" location="196:11-196:15" referredLiteral="/22"/>
+ <elements xsi:type="tcs:Property" location="196:16-196:19" name="end"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="200:2-217:4" name="RuleCall">
+ <commentsBefore>-- @end ForLexer</commentsBefore>
+ <templateSequence location="201:5-216:5">
+ <elements xsi:type="tcs:ConditionalElement" location="201:5-203:5">
+ <condition xsi:type="tcs:AndExp" location="201:6-201:27">
+ <expressions xsi:type="tcs:IsDefinedExp" location="201:6-201:27" propertyName="prevAction"/>
+ </condition>
+ <thenSequence location="202:5-202:23">
+ <elements xsi:type="tcs:LiteralRef" location="202:5-202:8" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="202:9-202:19" name="prevAction"/>
+ <elements xsi:type="tcs:LiteralRef" location="202:20-202:23" referredLiteral="/0/@symbols.7"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="204:4-206:5">
+ <condition xsi:type="tcs:AndExp" location="204:5-204:34">
+ <expressions xsi:type="tcs:IsDefinedExp" location="204:5-204:34" propertyName="syntacticPredicate"/>
+ </condition>
+ <thenSequence location="206:4-204:36">
+ <commentsBefore>--&#x9;&#x9;&#x9;&#x9;&quot;(&quot; syntacticPredicate &quot;)&quot; &quot;=>&quot;</commentsBefore>
+ <commentsAfter>--&#x9;&#x9;&#x9;&#x9;&quot;(&quot; syntacticPredicate &quot;)&quot; &quot;=>&quot;</commentsAfter>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="207:4-209:5">
+ <condition xsi:type="tcs:AndExp" location="207:5-207:23">
+ <expressions xsi:type="tcs:IsDefinedExp" location="207:5-207:23" propertyName="storeTo"/>
+ </condition>
+ <thenSequence location="208:5-208:16">
+ <elements xsi:type="tcs:Property" location="208:5-208:12" name="storeTo"/>
+ <elements xsi:type="tcs:LiteralRef" location="208:13-208:16" referredLiteral="/0/@symbols.20"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:Property" location="210:4-210:31" name="calledRule">
+ <propertyArgs xsi:type="tcs:RefersToPArg" location="210:15-210:30" propertyName="name"/>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="211:4-213:5">
+ <condition xsi:type="tcs:AndExp" location="211:5-211:25">
+ <expressions xsi:type="tcs:IsDefinedExp" location="211:5-211:25" propertyName="arguments"/>
+ </condition>
+ <thenSequence location="212:5-212:39">
+ <elements xsi:type="tcs:LiteralRef" location="212:5-212:8" referredLiteral="/0/@symbols.0"/>
+ <elements xsi:type="tcs:Property" location="212:9-212:35" name="arguments">
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="212:19-212:34">
+ <separatorSequence location="212:31-212:34">
+ <elements xsi:type="tcs:LiteralRef" location="212:31-212:34" referredLiteral="/0/@symbols.3"/>
+ </separatorSequence>
+ </propertyArgs>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="212:36-212:39" referredLiteral="/0/@symbols.1"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="214:4-216:5">
+ <condition xsi:type="tcs:AndExp" location="214:5-214:22">
+ <expressions xsi:type="tcs:IsDefinedExp" location="214:5-214:22" propertyName="action"/>
+ </condition>
+ <thenSequence location="215:5-215:19">
+ <elements xsi:type="tcs:LiteralRef" location="215:5-215:8" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="215:9-215:15" name="action"/>
+ <elements xsi:type="tcs:LiteralRef" location="215:16-215:19" referredLiteral="/0/@symbols.7"/>
+ </thenSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="219:2-230:4" name="TokenCall">
+ <templateSequence location="220:5-229:5">
+ <elements xsi:type="tcs:ConditionalElement" location="220:5-222:5">
+ <condition xsi:type="tcs:AndExp" location="220:6-220:27">
+ <expressions xsi:type="tcs:IsDefinedExp" location="220:6-220:27" propertyName="prevAction"/>
+ </condition>
+ <thenSequence location="221:5-221:23">
+ <elements xsi:type="tcs:LiteralRef" location="221:5-221:8" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="221:9-221:19" name="prevAction"/>
+ <elements xsi:type="tcs:LiteralRef" location="221:20-221:23" referredLiteral="/0/@symbols.7"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="223:4-225:5">
+ <condition xsi:type="tcs:AndExp" location="223:5-223:26">
+ <expressions xsi:type="tcs:IsDefinedExp" location="223:5-223:26" propertyName="storeASTTo"/>
+ </condition>
+ <thenSequence location="224:5-224:19">
+ <elements xsi:type="tcs:Property" location="224:5-224:15" name="storeASTTo"/>
+ <elements xsi:type="tcs:LiteralRef" location="224:16-224:19" referredLiteral="/0/@symbols.20"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:Property" location="226:4-226:8" name="name"/>
+ <elements xsi:type="tcs:ConditionalElement" location="227:4-229:5">
+ <condition xsi:type="tcs:AndExp" location="227:5-227:22">
+ <expressions xsi:type="tcs:IsDefinedExp" location="227:5-227:22" propertyName="action"/>
+ </condition>
+ <thenSequence location="228:5-228:19">
+ <elements xsi:type="tcs:LiteralRef" location="228:5-228:8" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="228:9-228:15" name="action"/>
+ <elements xsi:type="tcs:LiteralRef" location="228:16-228:19" referredLiteral="/0/@symbols.7"/>
+ </thenSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="232:2-232:35" name="SemanticAction" isAbstract="true"/>
+ <templates xsi:type="tcs:ClassTemplate" location="234:2-236:4" name="SimpleSemanticAction">
+ <templateSequence location="235:5-235:12">
+ <elements xsi:type="tcs:Property" location="235:5-235:12" name="value"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="238:2-240:4" name="SemanticActionBlock">
+ <templateSequence location="239:5-239:12">
+ <elements xsi:type="tcs:Property" location="239:5-239:12" name="actions"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="242:2-242:37" name="ActionExpression" isAbstract="true"/>
+ <templates xsi:type="tcs:ClassTemplate" location="244:2-246:4" name="TextualExpression">
+ <templateSequence location="245:5-245:12">
+ <elements xsi:type="tcs:Property" location="245:5-245:12" name="value"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="248:2-250:4" name="LiteralExpression">
+ <templateSequence location="249:5-249:12">
+ <elements xsi:type="tcs:Property" location="249:5-249:12" name="value"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="252:2-275:4" name="Sequence_">
+ <templateSequence location="253:5-273:5">
+ <elements xsi:type="tcs:ConditionalElement" location="253:5-255:5">
+ <condition xsi:type="tcs:AndExp" location="253:6-253:27">
+ <expressions xsi:type="tcs:IsDefinedExp" location="253:6-253:27" propertyName="prevAction"/>
+ </condition>
+ <thenSequence location="254:5-254:23">
+ <elements xsi:type="tcs:LiteralRef" location="254:5-254:8" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="254:9-254:19" name="prevAction"/>
+ <elements xsi:type="tcs:LiteralRef" location="254:20-254:23" referredLiteral="/0/@symbols.7"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="256:4-256:7" referredLiteral="/0/@symbols.4"/>
+ <elements xsi:type="tcs:ConditionalElement" location="257:5-261:6">
+ <condition xsi:type="tcs:AndExp" location="257:6-257:24">
+ <expressions xsi:type="tcs:IsDefinedExp" location="257:6-257:24" propertyName="options"/>
+ </condition>
+ <thenSequence location="258:6-260:13">
+ <elements xsi:type="tcs:LiteralRef" location="258:6-258:15" referredLiteral="/3"/>
+ <elements xsi:type="tcs:LiteralRef" location="258:16-258:19" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="259:7-259:14" name="options"/>
+ <elements xsi:type="tcs:LiteralRef" location="260:6-260:9" referredLiteral="/0/@symbols.7"/>
+ <elements xsi:type="tcs:LiteralRef" location="260:10-260:13" referredLiteral="/0/@symbols.9"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:Property" location="262:5-262:15" name="expression"/>
+ <elements xsi:type="tcs:LiteralRef" location="263:4-263:7" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:ConditionalElement" location="264:4-267:5">
+ <condition xsi:type="tcs:AndExp" location="264:5-264:14">
+ <expressions xsi:type="tcs:EqualsExp" location="264:5-264:14" propertyName="lower">
+ <value xsi:type="tcs:IntegerVal" location="264:13-264:14" symbol="0"/>
+ </expressions>
+ </condition>
+ <thenSequence location="265:5-266:23">
+ <elements xsi:type="tcs:ConditionalElement" location="265:5-265:22">
+ <condition xsi:type="tcs:AndExp" location="265:6-265:15">
+ <expressions xsi:type="tcs:EqualsExp" location="265:6-265:15" propertyName="upper">
+ <value xsi:type="tcs:IntegerVal" location="265:14-265:15" symbol="1"/>
+ </expressions>
+ </condition>
+ <thenSequence location="265:18-265:21">
+ <elements xsi:type="tcs:LiteralRef" location="265:18-265:21" referredLiteral="/0/@symbols.13"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="266:5-266:23">
+ <condition xsi:type="tcs:AndExp" location="266:6-266:16">
+ <expressions xsi:type="tcs:EqualsExp" location="266:6-266:16" propertyName="upper">
+ <value xsi:type="tcs:NegativeIntegerVal" location="266:14-266:16" symbol="1"/>
+ </expressions>
+ </condition>
+ <thenSequence location="266:19-266:22">
+ <elements xsi:type="tcs:LiteralRef" location="266:19-266:22" referredLiteral="/0/@symbols.17"/>
+ </thenSequence>
+ </elements>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="268:4-270:5">
+ <condition xsi:type="tcs:AndExp" location="268:5-268:14">
+ <expressions xsi:type="tcs:EqualsExp" location="268:5-268:14" propertyName="lower">
+ <value xsi:type="tcs:IntegerVal" location="268:13-268:14" symbol="1"/>
+ </expressions>
+ </condition>
+ <thenSequence location="269:5-269:23">
+ <elements xsi:type="tcs:ConditionalElement" location="269:5-269:23">
+ <condition xsi:type="tcs:AndExp" location="269:6-269:16">
+ <expressions xsi:type="tcs:EqualsExp" location="269:6-269:16" propertyName="upper">
+ <value xsi:type="tcs:NegativeIntegerVal" location="269:14-269:16" symbol="1"/>
+ </expressions>
+ </condition>
+ <thenSequence location="269:19-269:22">
+ <elements xsi:type="tcs:LiteralRef" location="269:19-269:22" referredLiteral="/0/@symbols.19"/>
+ </thenSequence>
+ </elements>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="271:4-273:5">
+ <condition xsi:type="tcs:AndExp" location="271:5-271:22">
+ <expressions xsi:type="tcs:IsDefinedExp" location="271:5-271:22" propertyName="action"/>
+ </condition>
+ <thenSequence location="272:5-272:19">
+ <elements xsi:type="tcs:LiteralRef" location="272:5-272:8" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="272:9-272:15" name="action"/>
+ <elements xsi:type="tcs:LiteralRef" location="272:16-272:19" referredLiteral="/0/@symbols.7"/>
+ </thenSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <symbols location="278:3-278:18" name="lsquare" literalRefs="/0/@templates.5/@templateSequence/@elements.1/@thenSequence/@elements.0 /0/@templates.5/@templateSequence/@elements.2/@thenSequence/@elements.1 /0/@templates.17/@templateSequence/@elements.4/@thenSequence/@elements.0" value="["/>
+ <symbols location="279:3-279:31" name="rsquare" literalRefs="/0/@templates.5/@templateSequence/@elements.1/@thenSequence/@elements.2 /0/@templates.5/@templateSequence/@elements.2/@thenSequence/@elements.4 /0/@templates.17/@templateSequence/@elements.4/@thenSequence/@elements.2" value="]">
+ <spaces>rightSpace</spaces>
+ </symbols>
+ <symbols location="280:3-280:15" name="excl" literalRefs="/0/@templates.15/@templateSequence/@elements.1" value="!"/>
+ <symbols location="281:3-281:15" name="coma" literalRefs="/0/@templates.5/@templateSequence/@elements.1/@thenSequence/@elements.1/@propertyArgs.0/@separatorSequence/@elements.0 /0/@templates.17/@templateSequence/@elements.4/@thenSequence/@elements.1/@propertyArgs.0/@separatorSequence/@elements.0" value=","/>
+ <symbols location="282:3-282:17" name="lparen" literalRefs="/0/@templates.10/@templateSequence/@elements.1/@elseSequence/@elements.0 /0/@templates.11/@templateSequence/@elements.0/@thenSequence/@elements.0 /0/@templates.11/@templateSequence/@elements.1 /0/@templates.25/@templateSequence/@elements.1" value="("/>
+ <symbols location="283:3-283:17" name="rparen" literalRefs="/0/@templates.10/@templateSequence/@elements.1/@elseSequence/@elements.3 /0/@templates.11/@templateSequence/@elements.0/@thenSequence/@elements.2 /0/@templates.11/@templateSequence/@elements.4 /0/@templates.25/@templateSequence/@elements.4" value=")"/>
+ <symbols location="284:3-284:29" name="lcurly" literalRefs="/0/@templates.4/@templateSequence/@elements.5/@thenSequence/@elements.1 /0/@templates.4/@templateSequence/@elements.6/@thenSequence/@elements.1 /0/@templates.4/@templateSequence/@elements.6/@thenSequence/@elements.7 /0/@templates.4/@templateSequence/@elements.7/@thenSequence/@elements.1 /0/@templates.5/@templateSequence/@elements.4 /0/@templates.5/@templateSequence/@elements.12/@blockSequence/@elements.0 /0/@templates.10/@templateSequence/@elements.0/@thenSequence/@elements.0 /0/@templates.10/@templateSequence/@elements.1/@elseSequence/@elements.1/@thenSequence/@elements.1 /0/@templates.11/@templateSequence/@elements.2/@thenSequence/@elements.1 /0/@templates.11/@templateSequence/@elements.5/@thenSequence/@elements.0 /0/@templates.12/@templateSequence/@elements.5/@thenSequence/@elements.0 /0/@templates.17/@templateSequence/@elements.0/@thenSequence/@elements.0 /0/@templates.17/@templateSequence/@elements.5/@thenSequence/@elements.0 /0/@templates.18/@templateSequence/@elements.0/@thenSequence/@elements.0 /0/@templates.18/@templateSequence/@elements.3/@thenSequence/@elements.0 /0/@templates.25/@templateSequence/@elements.0/@thenSequence/@elements.0 /0/@templates.25/@templateSequence/@elements.2/@thenSequence/@elements.1 /0/@templates.25/@templateSequence/@elements.7/@thenSequence/@elements.0" value="{">
+ <spaces>leftSpace</spaces>
+ </symbols>
+ <symbols location="285:3-285:17" name="rcurly" literalRefs="/0/@templates.4/@templateSequence/@elements.5/@thenSequence/@elements.3 /0/@templates.4/@templateSequence/@elements.6/@thenSequence/@elements.5 /0/@templates.4/@templateSequence/@elements.6/@thenSequence/@elements.11 /0/@templates.4/@templateSequence/@elements.7/@thenSequence/@elements.3 /0/@templates.5/@templateSequence/@elements.7 /0/@templates.5/@templateSequence/@elements.12/@blockSequence/@elements.2 /0/@templates.10/@templateSequence/@elements.0/@thenSequence/@elements.2 /0/@templates.10/@templateSequence/@elements.1/@elseSequence/@elements.1/@thenSequence/@elements.3 /0/@templates.11/@templateSequence/@elements.2/@thenSequence/@elements.3 /0/@templates.11/@templateSequence/@elements.5/@thenSequence/@elements.2 /0/@templates.12/@templateSequence/@elements.5/@thenSequence/@elements.2 /0/@templates.17/@templateSequence/@elements.0/@thenSequence/@elements.2 /0/@templates.17/@templateSequence/@elements.5/@thenSequence/@elements.2 /0/@templates.18/@templateSequence/@elements.0/@thenSequence/@elements.2 /0/@templates.18/@templateSequence/@elements.3/@thenSequence/@elements.2 /0/@templates.25/@templateSequence/@elements.0/@thenSequence/@elements.2 /0/@templates.25/@templateSequence/@elements.2/@thenSequence/@elements.3 /0/@templates.25/@templateSequence/@elements.7/@thenSequence/@elements.2" value="}"/>
+ <symbols location="286:3-286:15" name="semi" literalRefs="/0/@templates.4/@templateSequence/@elements.4 /0/@templates.4/@templateSequence/@elements.6/@thenSequence/@elements.4 /0/@templates.4/@templateSequence/@elements.6/@thenSequence/@elements.10 /0/@templates.5/@templateSequence/@elements.12/@blockSequence/@elements.1/@blockSequence/@elements.1/@thenSequence/@elements.3 /0/@templates.5/@templateSequence/@elements.15 /0/@templates.6/@templateSequence/@elements.3" value=";"/>
+ <symbols location="287:3-287:40" name="colon" literalRefs="/0/@templates.5/@templateSequence/@elements.10 /0/@templates.10/@templateSequence/@elements.1/@elseSequence/@elements.1/@thenSequence/@elements.4 /0/@templates.11/@templateSequence/@elements.2/@thenSequence/@elements.4 /0/@templates.25/@templateSequence/@elements.2/@thenSequence/@elements.4" value=":">
+ <spaces>leftSpace</spaces>
+ <spaces>rightSpace</spaces>
+ </symbols>
+ <symbols location="288:3-288:18" name="colons" value="::"/>
+ <symbols location="289:3-289:15" name="pipe" literalRefs="/0/@templates.10/@templateSequence/@elements.1/@elseSequence/@elements.2/@propertyArgs.0/@separatorSequence/@elements.0" value="|"/>
+ <symbols location="290:3-290:16" name="sharp" value="#"/>
+ <symbols location="291:3-291:16" name="qmark" literalRefs="/0/@templates.25/@templateSequence/@elements.5/@thenSequence/@elements.0/@thenSequence/@elements.0" value="?">
+ <commentsAfter>-- operator symbols</commentsAfter>
+ </symbols>
+ <symbols location="294:3-294:16" name="point" value=".">
+ <commentsBefore>-- operator symbols</commentsBefore>
+ </symbols>
+ <symbols location="295:3-295:18" name="rarrow" value="->"/>
+ <symbols location="296:3-296:16" name="minus" value="-"/>
+ <symbols location="297:3-297:15" name="star" literalRefs="/0/@templates.25/@templateSequence/@elements.5/@thenSequence/@elements.1/@thenSequence/@elements.0" value="*"/>
+ <symbols location="298:3-298:16" name="slash" value="/"/>
+ <symbols location="299:3-299:15" name="plus" literalRefs="/0/@templates.25/@templateSequence/@elements.6/@thenSequence/@elements.0/@thenSequence/@elements.0" value="+"/>
+ <symbols location="300:3-300:13" name="eq" literalRefs="/0/@templates.5/@templateSequence/@elements.12/@blockSequence/@elements.1/@blockSequence/@elements.1/@thenSequence/@elements.1 /0/@templates.6/@templateSequence/@elements.2/@thenSequence/@elements.0 /0/@templates.17/@templateSequence/@elements.2/@thenSequence/@elements.1 /0/@templates.18/@templateSequence/@elements.1/@thenSequence/@elements.1" value="="/>
+ <symbols location="301:3-301:13" name="gt" value=">"/>
+ <symbols location="302:3-302:13" name="lt" value="&lt;"/>
+ <symbols location="303:3-303:14" name="ge" value=">="/>
+ <symbols location="304:3-304:14" name="le" value="&lt;="/>
+ <symbols location="305:3-305:14" name="ne" value="&lt;>"/>
+ <symbols location="306:3-306:18" name="larrow" value="&lt;-"/>
+ </tcs:ConcreteSyntax>
+ <tcs:Keyword location="24:4-24:13" literalRefs="/0/@templates.4/@templateSequence/@elements.0" value="grammar"/>
+ <tcs:Keyword location="24:30-24:39" literalRefs="/0/@templates.4/@templateSequence/@elements.3" value="_ANTLR3"/>
+ <tcs:Keyword location="26:5-26:14" literalRefs="/0/@templates.4/@templateSequence/@elements.5/@thenSequence/@elements.0 /0/@templates.10/@templateSequence/@elements.1/@elseSequence/@elements.1/@thenSequence/@elements.0 /0/@templates.11/@templateSequence/@elements.2/@thenSequence/@elements.0 /0/@templates.25/@templateSequence/@elements.2/@thenSequence/@elements.0" value="options"/>
+ <tcs:Keyword location="31:5-31:14" literalRefs="/0/@templates.4/@templateSequence/@elements.6/@thenSequence/@elements.0" value="@header"/>
+ <tcs:Keyword location="32:6-32:15" literalRefs="/0/@templates.4/@templateSequence/@elements.6/@thenSequence/@elements.2 /0/@templates.4/@templateSequence/@elements.6/@thenSequence/@elements.8" value="package"/>
+ <tcs:Keyword location="34:5-34:21" literalRefs="/0/@templates.4/@templateSequence/@elements.6/@thenSequence/@elements.6" value="@lexer::header"/>
+ <tcs:Keyword location="37:1-61:3" literalRefs="/0/@templates.4/@templateSequence/@elements.6/@thenSequence/@elements.12" value="@lexer::members {&#xD;&#xA;&#xD;&#xA;&#x9;private void newline() {}&#xD;&#xA;&#xD;&#xA;&#x9;public org.eclipse.gmt.tcs.injector.TCSRuntime ei = null;&#xD;&#xA;&#xD;&#xA;&#x9;public void displayRecognitionError(String[] tokenNames, RecognitionException e) {&#xD;&#xA;&#x9;&#x9;ei.reportError((Exception)e);&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;&#x9;public Token emit() {&#xD;&#xA;&#x9;&#x9;org.eclipse.gmt.tcs.injector.wrappers.antlr3.ANTLR3LocationToken ret = null;&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;ret = new org.eclipse.gmt.tcs.injector.wrappers.antlr3.ANTLR3LocationToken(input, type, channel, tokenStartCharIndex, getCharIndex()-1);&#xD;&#xA;&#x9;&#x9;ret.setLine(tokenStartLine);&#xD;&#xA;&#x9;&#x9;ret.setText(text);&#xD;&#xA;&#x9; &#x9;ret.setCharPositionInLine(tokenStartCharPositionInLine);&#xD;&#xA;&#x9;&#x9;ret.setEndLine(getLine());&#xD;&#xA;&#x9;&#x9;ret.setEndColumn(getCharPositionInLine());&#xD;&#xA;&#x9;&#x9;emit(ret);&#xD;&#xA;&#xD;&#xA;&#x9;&#x9;return ret;&#xD;&#xA;&#x9;}&#xD;&#xA;&#xD;&#xA;}"/>
+ <tcs:Keyword location="64:5-64:15" literalRefs="/0/@templates.4/@templateSequence/@elements.7/@thenSequence/@elements.0" value="@members"/>
+ <tcs:Keyword location="66:6-67:56" literalRefs="/0/@templates.4/@templateSequence/@elements.7/@thenSequence/@elements.2/@blockSequence/@elements.1" value="public static void main(String[] args) throws Exception {&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;CharStream input = new ANTLRFileStream(args[0]);"/>
+ <tcs:Keyword location="68:23-68:48" literalRefs="/0/@templates.4/@templateSequence/@elements.7/@thenSequence/@elements.2/@blockSequence/@elements.4" value="_ANTLR3Lexer lex = new "/>
+ <tcs:Keyword location="68:65-73:8" literalRefs="/0/@templates.4/@templateSequence/@elements.7/@thenSequence/@elements.2/@blockSequence/@elements.7" value="_ANTLR3Lexer(input);&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;CommonTokenStream tokens = new CommonTokenStream(lex);&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;tokens.discardTokenType(WS);&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;tokens.discardTokenType(COMMENT);&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;tokens.discardTokenType(NL);&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;"/>
+ <tcs:Keyword location="74:23-74:52" literalRefs="/0/@templates.4/@templateSequence/@elements.7/@thenSequence/@elements.2/@blockSequence/@elements.10" value="_ANTLR3Parser parser = new "/>
+ <tcs:Keyword location="74:69-76:8" literalRefs="/0/@templates.4/@templateSequence/@elements.7/@thenSequence/@elements.2/@blockSequence/@elements.13" value="_ANTLR3Parser(tokens);&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;parser.main();&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;}"/>
+ <tcs:Keyword location="94:5-94:14" literalRefs="/0/@templates.5/@templateSequence/@elements.2/@thenSequence/@elements.0" value="returns"/>
+ <tcs:Keyword location="95:6-95:14" literalRefs="/0/@templates.5/@templateSequence/@elements.2/@thenSequence/@elements.2" value="Object"/>
+ <tcs:Keyword location="95:15-95:21" literalRefs="/0/@templates.5/@templateSequence/@elements.2/@thenSequence/@elements.3 /0/@templates.5/@templateSequence/@elements.12/@blockSequence/@elements.1/@blockSequence/@elements.1/@thenSequence/@elements.0" value="ret2"/>
+ <tcs:Keyword location="98:4-98:11" literalRefs="/0/@templates.5/@templateSequence/@elements.3" value="@init"/>
+ <tcs:Keyword location="116:18-116:23" literalRefs="/0/@templates.5/@templateSequence/@elements.12/@blockSequence/@elements.1/@blockSequence/@elements.1/@thenSequence/@elements.2" value="ret"/>
+ <tcs:Keyword location="160:32-160:36" literalRefs="/0/@templates.11/@templateSequence/@elements.0/@thenSequence/@elements.3" value="=>"/>
+ <tcs:Keyword location="176:5-176:9" literalRefs="/0/@templates.12/@templateSequence/@elements.0 /0/@templates.12/@templateSequence/@elements.4 /0/@templates.13/@templateSequence/@elements.0 /0/@templates.13/@templateSequence/@elements.4" value="'"/>
+ <tcs:Keyword location="188:5-188:8" literalRefs="/0/@templates.14/@templateSequence/@elements.0" value="~"/>
+ <tcs:Keyword location="196:11-196:15" literalRefs="/0/@templates.16/@templateSequence/@elements.1" value=".."/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/Annotation/Compiler/ApplyAnnotations2Ecore.asm b/plugins/org.eclipse.gmt.tcs.dsls/resources/Annotation/Compiler/ApplyAnnotations2Ecore.asm
new file mode 100644
index 0000000..7aeab5d
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/Annotation/Compiler/ApplyAnnotations2Ecore.asm
@@ -0,0 +1,1411 @@
+<?xml version = '1.0' encoding = 'ISO-8859-1' ?>
+<asm name="0">
+ <cp>
+ <constant value="ApplyAnnotations2Ecore"/>
+ <constant value="links"/>
+ <constant value="NTransientLinkSet;"/>
+ <constant value="col"/>
+ <constant value="J"/>
+ <constant value="enumLiteralType"/>
+ <constant value="main"/>
+ <constant value="A"/>
+ <constant value="OclParametrizedType"/>
+ <constant value="#native"/>
+ <constant value="Collection"/>
+ <constant value="J.setName(S):V"/>
+ <constant value="OclSimpleType"/>
+ <constant value="OclAny"/>
+ <constant value="J.setElementType(J):V"/>
+ <constant value="EnumLiteral"/>
+ <constant value="J.oclType():J"/>
+ <constant value="Element"/>
+ <constant value="RefiningTrace"/>
+ <constant value="sourceElement"/>
+ <constant value="persistedSourceElement"/>
+ <constant value="J.registerWeavingHelper(SS):V"/>
+ <constant value="EModelElement"/>
+ <constant value="Ecore"/>
+ <constant value="FQN"/>
+ <constant value="__initFQN"/>
+ <constant value="J.registerHelperAttribute(SS):V"/>
+ <constant value="annotations"/>
+ <constant value="__initannotations"/>
+ <constant value="properties"/>
+ <constant value="__initproperties"/>
+ <constant value="TransientLinkSet"/>
+ <constant value="A.__matcher__():V"/>
+ <constant value="A.__exec__():V"/>
+ <constant value="A.__applyRefiningTrace__():V"/>
+ <constant value="6:16-6:35"/>
+ <constant value="13:16-13:35"/>
+ <constant value="18:16-18:35"/>
+ <constant value="self"/>
+ <constant value="__resolve__"/>
+ <constant value="1"/>
+ <constant value="J.oclIsKindOf(J):B"/>
+ <constant value="18"/>
+ <constant value="NTransientLinkSet;.getLinkBySourceElement(S):QNTransientLink;"/>
+ <constant value="J.oclIsUndefined():B"/>
+ <constant value="15"/>
+ <constant value="NTransientLink;.getTargetFromSource(J):J"/>
+ <constant value="17"/>
+ <constant value="30"/>
+ <constant value="Sequence"/>
+ <constant value="2"/>
+ <constant value="A.__resolve__(J):J"/>
+ <constant value="QJ.including(J):QJ"/>
+ <constant value="QJ.flatten():QJ"/>
+ <constant value="e"/>
+ <constant value="value"/>
+ <constant value="resolveTemp"/>
+ <constant value="S"/>
+ <constant value="NTransientLink;.getNamedTargetFromSource(JS):J"/>
+ <constant value="name"/>
+ <constant value="__matcher__"/>
+ <constant value="A.__matchPackageAnnotations():V"/>
+ <constant value="A.__matchDataTypeAnnotations():V"/>
+ <constant value="A.__matchEnumLiteralAnnotations():V"/>
+ <constant value="__exec__"/>
+ <constant value="PackageAnnotations"/>
+ <constant value="NTransientLinkSet;.getLinksByRule(S):QNTransientLink;"/>
+ <constant value="A.__applyPackageAnnotations(NTransientLink;):V"/>
+ <constant value="DataTypeAnnotations"/>
+ <constant value="A.__applyDataTypeAnnotations(NTransientLink;):V"/>
+ <constant value="EnumLiteralAnnotations"/>
+ <constant value="A.__applyEnumLiteralAnnotations(NTransientLink;):V"/>
+ <constant value="setProperty"/>
+ <constant value="MRefiningTrace!Element;"/>
+ <constant value="0"/>
+ <constant value="Slot"/>
+ <constant value="16"/>
+ <constant value="J.__toValue():J"/>
+ <constant value="20"/>
+ <constant value="QJ.first():J"/>
+ <constant value="slots"/>
+ <constant value="propertyName"/>
+ <constant value="__applyRefiningTrace__"/>
+ <constant value="refiningTrace"/>
+ <constant value="MMOF!Classifier;.allInstancesFrom(S):QJ"/>
+ <constant value="B.not():B"/>
+ <constant value="94"/>
+ <constant value="type"/>
+ <constant value="metamodel"/>
+ <constant value="95"/>
+ <constant value="J.__fromValue():J"/>
+ <constant value="J.refSetValue(SJ):J"/>
+ <constant value="21"/>
+ <constant value="57"/>
+ <constant value="58"/>
+ <constant value="__toValue"/>
+ <constant value="B"/>
+ <constant value="BooleanVal"/>
+ <constant value="I"/>
+ <constant value="IntegerVal"/>
+ <constant value="D"/>
+ <constant value="RealVal"/>
+ <constant value="StringVal"/>
+ <constant value="ElementVal"/>
+ <constant value="J.=(J):B"/>
+ <constant value="J.__asElement():J"/>
+ <constant value="28"/>
+ <constant value="NullVal"/>
+ <constant value="EnumLiteralVal"/>
+ <constant value="J.toString():S"/>
+ <constant value="__asElement"/>
+ <constant value="__fromValue"/>
+ <constant value="MRefiningTrace!BooleanVal;"/>
+ <constant value="MRefiningTrace!IntegerVal;"/>
+ <constant value="MRefiningTrace!RealVal;"/>
+ <constant value="MRefiningTrace!StringVal;"/>
+ <constant value="MRefiningTrace!NullVal;"/>
+ <constant value="MRefiningTrace!ElementVal;"/>
+ <constant value="MRefiningTrace!EnumLiteralVal;"/>
+ <constant value="MEcore!EModelElement;"/>
+ <constant value="J.refImmediateComposite():J"/>
+ <constant value="J.oclIsUndefined():J"/>
+ <constant value="13"/>
+ <constant value="::"/>
+ <constant value="J.+(J):J"/>
+ <constant value="7:5-7:9"/>
+ <constant value="7:5-7:33"/>
+ <constant value="7:5-7:50"/>
+ <constant value="10:3-10:7"/>
+ <constant value="10:3-10:31"/>
+ <constant value="10:3-10:35"/>
+ <constant value="10:38-10:42"/>
+ <constant value="10:3-10:42"/>
+ <constant value="10:45-10:49"/>
+ <constant value="10:45-10:54"/>
+ <constant value="10:3-10:54"/>
+ <constant value="8:3-8:7"/>
+ <constant value="8:3-8:12"/>
+ <constant value="7:2-11:7"/>
+ <constant value="Annotation"/>
+ <constant value="J.allInstances():J"/>
+ <constant value="annotatedModelElement"/>
+ <constant value="element"/>
+ <constant value="ref"/>
+ <constant value="J.=(J):J"/>
+ <constant value="CJ.including(J):CJ"/>
+ <constant value="14:2-14:23"/>
+ <constant value="14:2-14:38"/>
+ <constant value="15:9-15:10"/>
+ <constant value="15:9-15:32"/>
+ <constant value="15:9-15:40"/>
+ <constant value="15:9-15:44"/>
+ <constant value="15:47-15:51"/>
+ <constant value="15:47-15:55"/>
+ <constant value="15:9-15:55"/>
+ <constant value="14:2-16:6"/>
+ <constant value="J.flatten():J"/>
+ <constant value="19:2-19:6"/>
+ <constant value="19:2-19:18"/>
+ <constant value="19:32-19:33"/>
+ <constant value="19:32-19:44"/>
+ <constant value="19:2-19:45"/>
+ <constant value="19:2-19:56"/>
+ <constant value="getAnnotation"/>
+ <constant value="key"/>
+ <constant value="CJ.asSequence():QJ"/>
+ <constant value="25"/>
+ <constant value="29"/>
+ <constant value="22:39-22:43"/>
+ <constant value="22:39-22:54"/>
+ <constant value="22:64-22:65"/>
+ <constant value="22:64-22:69"/>
+ <constant value="22:72-22:75"/>
+ <constant value="22:64-22:75"/>
+ <constant value="22:39-22:76"/>
+ <constant value="23:5-23:13"/>
+ <constant value="23:5-23:30"/>
+ <constant value="26:3-26:11"/>
+ <constant value="26:3-26:17"/>
+ <constant value="24:3-24:15"/>
+ <constant value="23:2-27:7"/>
+ <constant value="22:2-27:7"/>
+ <constant value="property"/>
+ <constant value="__matchPackageAnnotations"/>
+ <constant value="EPackage"/>
+ <constant value="IN"/>
+ <constant value="TransientLink"/>
+ <constant value="NTransientLink;.setRule(MATL!Rule;):V"/>
+ <constant value="s"/>
+ <constant value="NTransientLink;.addSourceElement(SJ):V"/>
+ <constant value="t"/>
+ <constant value="NTransientLink;.addTargetElement(SJ):V"/>
+ <constant value="NTransientLinkSet;.addLink2(NTransientLink;B):V"/>
+ <constant value="33:3-48:4"/>
+ <constant value="__applyPackageAnnotations"/>
+ <constant value="NTransientLink;"/>
+ <constant value="NTransientLink;.getSourceElement(S):J"/>
+ <constant value="NTransientLink;.getTargetElement(S):J"/>
+ <constant value="3"/>
+ <constant value="nsURI"/>
+ <constant value="J.getAnnotation(J):J"/>
+ <constant value="4"/>
+ <constant value="23"/>
+ <constant value="MRefiningTrace!Element;.setProperty(SJ):V"/>
+ <constant value="nsPrefix"/>
+ <constant value="37"/>
+ <constant value="39"/>
+ <constant value="35:22-35:23"/>
+ <constant value="35:38-35:45"/>
+ <constant value="35:22-35:46"/>
+ <constant value="36:8-36:9"/>
+ <constant value="36:8-36:26"/>
+ <constant value="39:6-39:7"/>
+ <constant value="37:6-37:7"/>
+ <constant value="37:6-37:13"/>
+ <constant value="36:5-40:10"/>
+ <constant value="35:5-40:10"/>
+ <constant value="34:4-40:10"/>
+ <constant value="42:22-42:23"/>
+ <constant value="42:38-42:48"/>
+ <constant value="42:22-42:49"/>
+ <constant value="43:8-43:9"/>
+ <constant value="43:8-43:26"/>
+ <constant value="46:6-46:7"/>
+ <constant value="44:6-44:7"/>
+ <constant value="44:6-44:16"/>
+ <constant value="43:5-47:10"/>
+ <constant value="42:5-47:10"/>
+ <constant value="41:4-47:10"/>
+ <constant value="a"/>
+ <constant value="link"/>
+ <constant value="__matchDataTypeAnnotations"/>
+ <constant value="EDataType"/>
+ <constant value="55:3-63:4"/>
+ <constant value="__applyDataTypeAnnotations"/>
+ <constant value="instanceClassName"/>
+ <constant value="57:22-57:23"/>
+ <constant value="57:38-57:57"/>
+ <constant value="57:22-57:58"/>
+ <constant value="58:8-58:9"/>
+ <constant value="58:8-58:26"/>
+ <constant value="61:6-61:7"/>
+ <constant value="59:6-59:7"/>
+ <constant value="59:6-59:25"/>
+ <constant value="58:5-62:10"/>
+ <constant value="57:5-62:10"/>
+ <constant value="56:4-62:10"/>
+ <constant value="__matchEnumLiteralAnnotations"/>
+ <constant value="EEnumLiteral"/>
+ <constant value="70:3-78:4"/>
+ <constant value="__applyEnumLiteralAnnotations"/>
+ <constant value="literal"/>
+ <constant value="literalValue"/>
+ <constant value="72:22-72:23"/>
+ <constant value="72:38-72:52"/>
+ <constant value="72:22-72:53"/>
+ <constant value="73:8-73:9"/>
+ <constant value="73:8-73:26"/>
+ <constant value="76:6-76:7"/>
+ <constant value="74:6-74:7"/>
+ <constant value="74:6-74:15"/>
+ <constant value="73:5-77:10"/>
+ <constant value="72:5-77:10"/>
+ <constant value="71:4-77:10"/>
+ </cp>
+ <field name="1" type="2"/>
+ <field name="3" type="4"/>
+ <field name="5" type="4"/>
+ <operation name="6">
+ <context type="7"/>
+ <parameters>
+ </parameters>
+ <code>
+ <getasm/>
+ <push arg="8"/>
+ <push arg="9"/>
+ <new/>
+ <dup/>
+ <push arg="10"/>
+ <call arg="11"/>
+ <dup/>
+ <push arg="12"/>
+ <push arg="9"/>
+ <new/>
+ <dup/>
+ <push arg="13"/>
+ <call arg="11"/>
+ <call arg="14"/>
+ <set arg="3"/>
+ <getasm/>
+ <push arg="15"/>
+ <push arg="9"/>
+ <new/>
+ <call arg="16"/>
+ <set arg="5"/>
+ <push arg="17"/>
+ <push arg="18"/>
+ <findme/>
+ <push arg="19"/>
+ <push arg="20"/>
+ <call arg="21"/>
+ <push arg="22"/>
+ <push arg="23"/>
+ <findme/>
+ <push arg="24"/>
+ <push arg="25"/>
+ <call arg="26"/>
+ <push arg="22"/>
+ <push arg="23"/>
+ <findme/>
+ <push arg="27"/>
+ <push arg="28"/>
+ <call arg="26"/>
+ <push arg="22"/>
+ <push arg="23"/>
+ <findme/>
+ <push arg="29"/>
+ <push arg="30"/>
+ <call arg="26"/>
+ <getasm/>
+ <push arg="31"/>
+ <push arg="9"/>
+ <new/>
+ <set arg="1"/>
+ <getasm/>
+ <call arg="32"/>
+ <getasm/>
+ <call arg="33"/>
+ <getasm/>
+ <call arg="34"/>
+ </code>
+ <linenumbertable>
+ <lne id="35" begin="28" end="30"/>
+ <lne id="36" begin="34" end="36"/>
+ <lne id="37" begin="40" end="42"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="56"/>
+ </localvariabletable>
+ </operation>
+ <operation name="39">
+ <context type="7"/>
+ <parameters>
+ <parameter name="40" type="4"/>
+ </parameters>
+ <code>
+ <load arg="40"/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="41"/>
+ <if arg="42"/>
+ <getasm/>
+ <get arg="1"/>
+ <load arg="40"/>
+ <call arg="43"/>
+ <dup/>
+ <call arg="44"/>
+ <if arg="45"/>
+ <load arg="40"/>
+ <call arg="46"/>
+ <goto arg="47"/>
+ <pop/>
+ <load arg="40"/>
+ <goto arg="48"/>
+ <push arg="49"/>
+ <push arg="9"/>
+ <new/>
+ <load arg="40"/>
+ <iterate/>
+ <store arg="50"/>
+ <getasm/>
+ <load arg="50"/>
+ <call arg="51"/>
+ <call arg="52"/>
+ <enditerate/>
+ <call arg="53"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="54" begin="23" end="27"/>
+ <lve slot="0" name="38" begin="0" end="29"/>
+ <lve slot="1" name="55" begin="0" end="29"/>
+ </localvariabletable>
+ </operation>
+ <operation name="56">
+ <context type="7"/>
+ <parameters>
+ <parameter name="40" type="4"/>
+ <parameter name="50" type="57"/>
+ </parameters>
+ <code>
+ <getasm/>
+ <get arg="1"/>
+ <load arg="40"/>
+ <call arg="43"/>
+ <load arg="40"/>
+ <load arg="50"/>
+ <call arg="58"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="6"/>
+ <lve slot="1" name="55" begin="0" end="6"/>
+ <lve slot="2" name="59" begin="0" end="6"/>
+ </localvariabletable>
+ </operation>
+ <operation name="60">
+ <context type="7"/>
+ <parameters>
+ </parameters>
+ <code>
+ <getasm/>
+ <call arg="61"/>
+ <getasm/>
+ <call arg="62"/>
+ <getasm/>
+ <call arg="63"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="5"/>
+ </localvariabletable>
+ </operation>
+ <operation name="64">
+ <context type="7"/>
+ <parameters>
+ </parameters>
+ <code>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="65"/>
+ <call arg="66"/>
+ <iterate/>
+ <store arg="40"/>
+ <getasm/>
+ <load arg="40"/>
+ <call arg="67"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="68"/>
+ <call arg="66"/>
+ <iterate/>
+ <store arg="40"/>
+ <getasm/>
+ <load arg="40"/>
+ <call arg="69"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="70"/>
+ <call arg="66"/>
+ <iterate/>
+ <store arg="40"/>
+ <getasm/>
+ <load arg="40"/>
+ <call arg="71"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="54" begin="5" end="8"/>
+ <lve slot="1" name="54" begin="15" end="18"/>
+ <lve slot="1" name="54" begin="25" end="28"/>
+ <lve slot="0" name="38" begin="0" end="29"/>
+ </localvariabletable>
+ </operation>
+ <operation name="72">
+ <context type="73"/>
+ <parameters>
+ <parameter name="40" type="57"/>
+ <parameter name="50" type="4"/>
+ </parameters>
+ <code>
+ <load arg="74"/>
+ <push arg="75"/>
+ <push arg="18"/>
+ <new/>
+ <dup/>
+ <load arg="40"/>
+ <set arg="59"/>
+ <dup/>
+ <load arg="50"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="41"/>
+ <if arg="76"/>
+ <call arg="77"/>
+ <goto arg="78"/>
+ <push arg="49"/>
+ <push arg="9"/>
+ <new/>
+ <call arg="79"/>
+ <set arg="55"/>
+ <set arg="80"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="21"/>
+ <lve slot="1" name="81" begin="0" end="21"/>
+ <lve slot="2" name="55" begin="0" end="21"/>
+ </localvariabletable>
+ </operation>
+ <operation name="82">
+ <context type="7"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="17"/>
+ <push arg="18"/>
+ <findme/>
+ <push arg="83"/>
+ <call arg="84"/>
+ <dup/>
+ <iterate/>
+ <dup/>
+ <get arg="19"/>
+ <call arg="44"/>
+ <call arg="85"/>
+ <if arg="86"/>
+ <dup/>
+ <get arg="87"/>
+ <swap/>
+ <dup_x1/>
+ <get arg="88"/>
+ <new/>
+ <set arg="19"/>
+ <goto arg="89"/>
+ <pop/>
+ <enditerate/>
+ <iterate/>
+ <dup/>
+ <get arg="19"/>
+ <swap/>
+ <get arg="80"/>
+ <iterate/>
+ <dup/>
+ <get arg="59"/>
+ <swap/>
+ <get arg="55"/>
+ <call arg="90"/>
+ <call arg="91"/>
+ <enditerate/>
+ <pop/>
+ <enditerate/>
+ <push arg="17"/>
+ <push arg="18"/>
+ <findme/>
+ <push arg="83"/>
+ <call arg="84"/>
+ <dup/>
+ <iterate/>
+ <dup/>
+ <get arg="19"/>
+ <call arg="44"/>
+ <call arg="85"/>
+ <if arg="78"/>
+ <dup/>
+ <get arg="87"/>
+ <swap/>
+ <dup_x1/>
+ <get arg="88"/>
+ <new/>
+ <set arg="19"/>
+ <goto arg="92"/>
+ <pop/>
+ <enditerate/>
+ <iterate/>
+ <dup/>
+ <get arg="19"/>
+ <swap/>
+ <get arg="80"/>
+ <iterate/>
+ <dup/>
+ <get arg="59"/>
+ <swap/>
+ <get arg="55"/>
+ <call arg="90"/>
+ <call arg="91"/>
+ <enditerate/>
+ <pop/>
+ <enditerate/>
+ <push arg="17"/>
+ <push arg="18"/>
+ <findme/>
+ <push arg="83"/>
+ <call arg="84"/>
+ <dup/>
+ <iterate/>
+ <dup/>
+ <get arg="19"/>
+ <call arg="44"/>
+ <call arg="85"/>
+ <if arg="93"/>
+ <dup/>
+ <get arg="87"/>
+ <swap/>
+ <dup_x1/>
+ <get arg="88"/>
+ <new/>
+ <set arg="19"/>
+ <goto arg="94"/>
+ <pop/>
+ <enditerate/>
+ <iterate/>
+ <dup/>
+ <get arg="19"/>
+ <swap/>
+ <get arg="80"/>
+ <iterate/>
+ <dup/>
+ <get arg="59"/>
+ <swap/>
+ <get arg="55"/>
+ <call arg="90"/>
+ <call arg="91"/>
+ <enditerate/>
+ <pop/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="110"/>
+ </localvariabletable>
+ </operation>
+ <operation name="95">
+ <context type="96"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="97"/>
+ <push arg="18"/>
+ <new/>
+ <dup/>
+ <load arg="74"/>
+ <set arg="55"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="5"/>
+ </localvariabletable>
+ </operation>
+ <operation name="95">
+ <context type="98"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="99"/>
+ <push arg="18"/>
+ <new/>
+ <dup/>
+ <load arg="74"/>
+ <set arg="55"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="5"/>
+ </localvariabletable>
+ </operation>
+ <operation name="95">
+ <context type="100"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="101"/>
+ <push arg="18"/>
+ <new/>
+ <dup/>
+ <load arg="74"/>
+ <set arg="55"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="5"/>
+ </localvariabletable>
+ </operation>
+ <operation name="95">
+ <context type="57"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="102"/>
+ <push arg="18"/>
+ <new/>
+ <dup/>
+ <load arg="74"/>
+ <set arg="55"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="5"/>
+ </localvariabletable>
+ </operation>
+ <operation name="95">
+ <context type="73"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="103"/>
+ <push arg="18"/>
+ <new/>
+ <dup/>
+ <load arg="74"/>
+ <set arg="55"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="5"/>
+ </localvariabletable>
+ </operation>
+ <operation name="95">
+ <context type="4"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="74"/>
+ <call arg="16"/>
+ <getasm/>
+ <get arg="5"/>
+ <call arg="104"/>
+ <if arg="92"/>
+ <load arg="74"/>
+ <call arg="44"/>
+ <if arg="47"/>
+ <push arg="103"/>
+ <push arg="18"/>
+ <new/>
+ <dup/>
+ <load arg="74"/>
+ <call arg="105"/>
+ <set arg="55"/>
+ <goto arg="106"/>
+ <push arg="107"/>
+ <push arg="18"/>
+ <new/>
+ <goto arg="106"/>
+ <push arg="108"/>
+ <push arg="18"/>
+ <new/>
+ <dup/>
+ <load arg="74"/>
+ <call arg="109"/>
+ <set arg="55"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="110">
+ <context type="4"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="17"/>
+ <push arg="18"/>
+ <new/>
+ <dup/>
+ <load arg="74"/>
+ <set arg="19"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="5"/>
+ </localvariabletable>
+ </operation>
+ <operation name="111">
+ <context type="112"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="74"/>
+ <get arg="55"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="1"/>
+ </localvariabletable>
+ </operation>
+ <operation name="111">
+ <context type="113"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="74"/>
+ <get arg="55"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="1"/>
+ </localvariabletable>
+ </operation>
+ <operation name="111">
+ <context type="114"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="74"/>
+ <get arg="55"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="1"/>
+ </localvariabletable>
+ </operation>
+ <operation name="111">
+ <context type="115"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="74"/>
+ <get arg="55"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="1"/>
+ </localvariabletable>
+ </operation>
+ <operation name="111">
+ <context type="116"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="49"/>
+ <push arg="9"/>
+ <new/>
+ <call arg="79"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="3"/>
+ </localvariabletable>
+ </operation>
+ <operation name="111">
+ <context type="117"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="74"/>
+ <get arg="55"/>
+ <get arg="19"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="2"/>
+ </localvariabletable>
+ </operation>
+ <operation name="111">
+ <context type="118"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="15"/>
+ <push arg="9"/>
+ <new/>
+ <dup/>
+ <load arg="74"/>
+ <get arg="55"/>
+ <set arg="59"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="6"/>
+ </localvariabletable>
+ </operation>
+ <operation name="25">
+ <context type="119"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="74"/>
+ <call arg="120"/>
+ <call arg="121"/>
+ <if arg="122"/>
+ <load arg="74"/>
+ <call arg="120"/>
+ <get arg="24"/>
+ <push arg="123"/>
+ <call arg="124"/>
+ <load arg="74"/>
+ <get arg="59"/>
+ <call arg="124"/>
+ <goto arg="45"/>
+ <load arg="74"/>
+ <get arg="59"/>
+ </code>
+ <linenumbertable>
+ <lne id="125" begin="0" end="0"/>
+ <lne id="126" begin="0" end="1"/>
+ <lne id="127" begin="0" end="2"/>
+ <lne id="128" begin="4" end="4"/>
+ <lne id="129" begin="4" end="5"/>
+ <lne id="130" begin="4" end="6"/>
+ <lne id="131" begin="7" end="7"/>
+ <lne id="132" begin="4" end="8"/>
+ <lne id="133" begin="9" end="9"/>
+ <lne id="134" begin="9" end="10"/>
+ <lne id="135" begin="4" end="11"/>
+ <lne id="136" begin="13" end="13"/>
+ <lne id="137" begin="13" end="14"/>
+ <lne id="138" begin="0" end="14"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="38" begin="0" end="14"/>
+ </localvariabletable>
+ </operation>
+ <operation name="28">
+ <context type="119"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="49"/>
+ <push arg="9"/>
+ <new/>
+ <push arg="139"/>
+ <push arg="139"/>
+ <findme/>
+ <call arg="140"/>
+ <iterate/>
+ <store arg="40"/>
+ <load arg="40"/>
+ <get arg="141"/>
+ <get arg="142"/>
+ <get arg="143"/>
+ <load arg="74"/>
+ <get arg="24"/>
+ <call arg="144"/>
+ <call arg="85"/>
+ <if arg="78"/>
+ <load arg="40"/>
+ <call arg="145"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="146" begin="3" end="5"/>
+ <lne id="147" begin="3" end="6"/>
+ <lne id="148" begin="9" end="9"/>
+ <lne id="149" begin="9" end="10"/>
+ <lne id="150" begin="9" end="11"/>
+ <lne id="151" begin="9" end="12"/>
+ <lne id="152" begin="13" end="13"/>
+ <lne id="153" begin="13" end="14"/>
+ <lne id="154" begin="9" end="15"/>
+ <lne id="155" begin="0" end="20"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="54" begin="8" end="19"/>
+ <lve slot="0" name="38" begin="0" end="20"/>
+ </localvariabletable>
+ </operation>
+ <operation name="30">
+ <context type="119"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="49"/>
+ <push arg="9"/>
+ <new/>
+ <load arg="74"/>
+ <get arg="27"/>
+ <iterate/>
+ <store arg="40"/>
+ <load arg="40"/>
+ <get arg="29"/>
+ <call arg="145"/>
+ <enditerate/>
+ <call arg="156"/>
+ </code>
+ <linenumbertable>
+ <lne id="157" begin="3" end="3"/>
+ <lne id="158" begin="3" end="4"/>
+ <lne id="159" begin="7" end="7"/>
+ <lne id="160" begin="7" end="8"/>
+ <lne id="161" begin="0" end="10"/>
+ <lne id="162" begin="0" end="11"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="54" begin="6" end="9"/>
+ <lve slot="0" name="38" begin="0" end="11"/>
+ </localvariabletable>
+ </operation>
+ <operation name="163">
+ <context type="119"/>
+ <parameters>
+ <parameter name="40" type="4"/>
+ </parameters>
+ <code>
+ <push arg="49"/>
+ <push arg="9"/>
+ <new/>
+ <load arg="74"/>
+ <get arg="29"/>
+ <iterate/>
+ <store arg="50"/>
+ <load arg="50"/>
+ <get arg="164"/>
+ <load arg="40"/>
+ <call arg="144"/>
+ <call arg="85"/>
+ <if arg="45"/>
+ <load arg="50"/>
+ <call arg="145"/>
+ <enditerate/>
+ <call arg="165"/>
+ <call arg="79"/>
+ <store arg="50"/>
+ <load arg="50"/>
+ <call arg="121"/>
+ <if arg="166"/>
+ <load arg="50"/>
+ <get arg="55"/>
+ <goto arg="167"/>
+ <push arg="49"/>
+ <push arg="9"/>
+ <new/>
+ <call arg="79"/>
+ </code>
+ <linenumbertable>
+ <lne id="168" begin="3" end="3"/>
+ <lne id="169" begin="3" end="4"/>
+ <lne id="170" begin="7" end="7"/>
+ <lne id="171" begin="7" end="8"/>
+ <lne id="172" begin="9" end="9"/>
+ <lne id="173" begin="7" end="10"/>
+ <lne id="174" begin="0" end="17"/>
+ <lne id="175" begin="19" end="19"/>
+ <lne id="176" begin="19" end="20"/>
+ <lne id="177" begin="22" end="22"/>
+ <lne id="178" begin="22" end="23"/>
+ <lne id="179" begin="25" end="28"/>
+ <lne id="180" begin="19" end="28"/>
+ <lne id="181" begin="0" end="28"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="54" begin="6" end="14"/>
+ <lve slot="2" name="182" begin="18" end="28"/>
+ <lve slot="0" name="38" begin="0" end="28"/>
+ <lve slot="1" name="164" begin="0" end="28"/>
+ </localvariabletable>
+ </operation>
+ <operation name="183">
+ <context type="7"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="184"/>
+ <push arg="23"/>
+ <findme/>
+ <push arg="185"/>
+ <call arg="84"/>
+ <iterate/>
+ <store arg="40"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="186"/>
+ <push arg="9"/>
+ <new/>
+ <dup/>
+ <push arg="65"/>
+ <call arg="187"/>
+ <dup/>
+ <push arg="188"/>
+ <load arg="40"/>
+ <call arg="189"/>
+ <dup/>
+ <push arg="190"/>
+ <push arg="17"/>
+ <push arg="18"/>
+ <new/>
+ <dup/>
+ <push arg="184"/>
+ <set arg="87"/>
+ <dup/>
+ <push arg="23"/>
+ <set arg="88"/>
+ <dup/>
+ <load arg="40"/>
+ <set arg="19"/>
+ <call arg="191"/>
+ <pusht/>
+ <call arg="192"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="193" begin="19" end="33"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="188" begin="6" end="35"/>
+ <lve slot="0" name="38" begin="0" end="36"/>
+ </localvariabletable>
+ </operation>
+ <operation name="194">
+ <context type="7"/>
+ <parameters>
+ <parameter name="40" type="195"/>
+ </parameters>
+ <code>
+ <load arg="40"/>
+ <push arg="188"/>
+ <call arg="196"/>
+ <store arg="50"/>
+ <load arg="40"/>
+ <push arg="190"/>
+ <call arg="197"/>
+ <store arg="198"/>
+ <load arg="198"/>
+ <dup/>
+ <push arg="199"/>
+ <getasm/>
+ <load arg="50"/>
+ <push arg="199"/>
+ <call arg="200"/>
+ <store arg="201"/>
+ <load arg="201"/>
+ <call arg="121"/>
+ <if arg="92"/>
+ <load arg="201"/>
+ <goto arg="202"/>
+ <load arg="50"/>
+ <get arg="199"/>
+ <call arg="51"/>
+ <call arg="203"/>
+ <dup/>
+ <push arg="204"/>
+ <getasm/>
+ <load arg="50"/>
+ <push arg="204"/>
+ <call arg="200"/>
+ <store arg="201"/>
+ <load arg="201"/>
+ <call arg="121"/>
+ <if arg="205"/>
+ <load arg="201"/>
+ <goto arg="206"/>
+ <load arg="50"/>
+ <get arg="204"/>
+ <call arg="51"/>
+ <call arg="203"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="207" begin="12" end="12"/>
+ <lne id="208" begin="13" end="13"/>
+ <lne id="209" begin="12" end="14"/>
+ <lne id="210" begin="16" end="16"/>
+ <lne id="211" begin="16" end="17"/>
+ <lne id="212" begin="19" end="19"/>
+ <lne id="213" begin="21" end="21"/>
+ <lne id="214" begin="21" end="22"/>
+ <lne id="215" begin="16" end="22"/>
+ <lne id="216" begin="12" end="22"/>
+ <lne id="217" begin="9" end="24"/>
+ <lne id="218" begin="28" end="28"/>
+ <lne id="219" begin="29" end="29"/>
+ <lne id="220" begin="28" end="30"/>
+ <lne id="221" begin="32" end="32"/>
+ <lne id="222" begin="32" end="33"/>
+ <lne id="223" begin="35" end="35"/>
+ <lne id="224" begin="37" end="37"/>
+ <lne id="225" begin="37" end="38"/>
+ <lne id="226" begin="32" end="38"/>
+ <lne id="227" begin="28" end="38"/>
+ <lne id="228" begin="25" end="40"/>
+ <lne id="193" begin="8" end="41"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="4" name="229" begin="15" end="22"/>
+ <lve slot="4" name="229" begin="31" end="38"/>
+ <lve slot="3" name="190" begin="7" end="41"/>
+ <lve slot="2" name="188" begin="3" end="41"/>
+ <lve slot="0" name="38" begin="0" end="41"/>
+ <lve slot="1" name="230" begin="0" end="41"/>
+ </localvariabletable>
+ </operation>
+ <operation name="231">
+ <context type="7"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="232"/>
+ <push arg="23"/>
+ <findme/>
+ <push arg="185"/>
+ <call arg="84"/>
+ <iterate/>
+ <store arg="40"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="186"/>
+ <push arg="9"/>
+ <new/>
+ <dup/>
+ <push arg="68"/>
+ <call arg="187"/>
+ <dup/>
+ <push arg="188"/>
+ <load arg="40"/>
+ <call arg="189"/>
+ <dup/>
+ <push arg="190"/>
+ <push arg="17"/>
+ <push arg="18"/>
+ <new/>
+ <dup/>
+ <push arg="232"/>
+ <set arg="87"/>
+ <dup/>
+ <push arg="23"/>
+ <set arg="88"/>
+ <dup/>
+ <load arg="40"/>
+ <set arg="19"/>
+ <call arg="191"/>
+ <pusht/>
+ <call arg="192"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="233" begin="19" end="33"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="188" begin="6" end="35"/>
+ <lve slot="0" name="38" begin="0" end="36"/>
+ </localvariabletable>
+ </operation>
+ <operation name="234">
+ <context type="7"/>
+ <parameters>
+ <parameter name="40" type="195"/>
+ </parameters>
+ <code>
+ <load arg="40"/>
+ <push arg="188"/>
+ <call arg="196"/>
+ <store arg="50"/>
+ <load arg="40"/>
+ <push arg="190"/>
+ <call arg="197"/>
+ <store arg="198"/>
+ <load arg="198"/>
+ <dup/>
+ <push arg="235"/>
+ <getasm/>
+ <load arg="50"/>
+ <push arg="235"/>
+ <call arg="200"/>
+ <store arg="201"/>
+ <load arg="201"/>
+ <call arg="121"/>
+ <if arg="92"/>
+ <load arg="201"/>
+ <goto arg="202"/>
+ <load arg="50"/>
+ <get arg="235"/>
+ <call arg="51"/>
+ <call arg="203"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="236" begin="12" end="12"/>
+ <lne id="237" begin="13" end="13"/>
+ <lne id="238" begin="12" end="14"/>
+ <lne id="239" begin="16" end="16"/>
+ <lne id="240" begin="16" end="17"/>
+ <lne id="241" begin="19" end="19"/>
+ <lne id="242" begin="21" end="21"/>
+ <lne id="243" begin="21" end="22"/>
+ <lne id="244" begin="16" end="22"/>
+ <lne id="245" begin="12" end="22"/>
+ <lne id="246" begin="9" end="24"/>
+ <lne id="233" begin="8" end="25"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="4" name="229" begin="15" end="22"/>
+ <lve slot="3" name="190" begin="7" end="25"/>
+ <lve slot="2" name="188" begin="3" end="25"/>
+ <lve slot="0" name="38" begin="0" end="25"/>
+ <lve slot="1" name="230" begin="0" end="25"/>
+ </localvariabletable>
+ </operation>
+ <operation name="247">
+ <context type="7"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="248"/>
+ <push arg="23"/>
+ <findme/>
+ <push arg="185"/>
+ <call arg="84"/>
+ <iterate/>
+ <store arg="40"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="186"/>
+ <push arg="9"/>
+ <new/>
+ <dup/>
+ <push arg="70"/>
+ <call arg="187"/>
+ <dup/>
+ <push arg="188"/>
+ <load arg="40"/>
+ <call arg="189"/>
+ <dup/>
+ <push arg="190"/>
+ <push arg="17"/>
+ <push arg="18"/>
+ <new/>
+ <dup/>
+ <push arg="248"/>
+ <set arg="87"/>
+ <dup/>
+ <push arg="23"/>
+ <set arg="88"/>
+ <dup/>
+ <load arg="40"/>
+ <set arg="19"/>
+ <call arg="191"/>
+ <pusht/>
+ <call arg="192"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="249" begin="19" end="33"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="188" begin="6" end="35"/>
+ <lve slot="0" name="38" begin="0" end="36"/>
+ </localvariabletable>
+ </operation>
+ <operation name="250">
+ <context type="7"/>
+ <parameters>
+ <parameter name="40" type="195"/>
+ </parameters>
+ <code>
+ <load arg="40"/>
+ <push arg="188"/>
+ <call arg="196"/>
+ <store arg="50"/>
+ <load arg="40"/>
+ <push arg="190"/>
+ <call arg="197"/>
+ <store arg="198"/>
+ <load arg="198"/>
+ <dup/>
+ <push arg="251"/>
+ <getasm/>
+ <load arg="50"/>
+ <push arg="252"/>
+ <call arg="200"/>
+ <store arg="201"/>
+ <load arg="201"/>
+ <call arg="121"/>
+ <if arg="92"/>
+ <load arg="201"/>
+ <goto arg="202"/>
+ <load arg="50"/>
+ <get arg="251"/>
+ <call arg="51"/>
+ <call arg="203"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="253" begin="12" end="12"/>
+ <lne id="254" begin="13" end="13"/>
+ <lne id="255" begin="12" end="14"/>
+ <lne id="256" begin="16" end="16"/>
+ <lne id="257" begin="16" end="17"/>
+ <lne id="258" begin="19" end="19"/>
+ <lne id="259" begin="21" end="21"/>
+ <lne id="260" begin="21" end="22"/>
+ <lne id="261" begin="16" end="22"/>
+ <lne id="262" begin="12" end="22"/>
+ <lne id="263" begin="9" end="24"/>
+ <lne id="249" begin="8" end="25"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="4" name="229" begin="15" end="22"/>
+ <lve slot="3" name="190" begin="7" end="25"/>
+ <lve slot="2" name="188" begin="3" end="25"/>
+ <lve slot="0" name="38" begin="0" end="25"/>
+ <lve slot="1" name="230" begin="0" end="25"/>
+ </localvariabletable>
+ </operation>
+</asm>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/Annotation/Metamodel/Annotation.ecore b/plugins/org.eclipse.gmt.tcs.dsls/resources/Annotation/Metamodel/Annotation.ecore
new file mode 100644
index 0000000..04f2721
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/Annotation/Metamodel/Annotation.ecore
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore">
+ <ecore:EPackage name="mwcore" nsURI="http://www.eclipse.org/gmt/amw/2005/MWCore" nsPrefix="mwcore">
+ <eClassifiers xsi:type="ecore:EClass" name="WElement" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="model" ordered="false" lowerBound="1" eType="/0/WModel" eOpposite="/0/WModel/ownedElement"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WModel" abstract="true" eSuperTypes="/0/WElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedElement" upperBound="-1" eType="/0/WElement" containment="true" eOpposite="/0/WElement/model"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="wovenModel" ordered="false" lowerBound="1" upperBound="-1" eType="/0/WModelRef" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WRef" abstract="true" eSuperTypes="/0/WElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="ref" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WModelRef" abstract="true" eSuperTypes="/0/WRef">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="ownedElementRef" ordered="false" upperBound="-1" eType="/0/WElementRef" containment="true" eOpposite="/0/WElementRef/modelRef"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WElementRef" abstract="true" eSuperTypes="/0/WRef">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="modelRef" ordered="false" lowerBound="1" eType="/0/WModelRef" eOpposite="/0/WModelRef/ownedElementRef"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WAssociation" abstract="true" eSuperTypes="/0/WElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="associationEnd" ordered="false" lowerBound="1" upperBound="-1" eType="/0/WAssociationEnd" containment="true" eOpposite="/0/WAssociationEnd/association"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WAssociationEnd" abstract="true" eSuperTypes="/0/WElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="association" ordered="false" lowerBound="1" eType="/0/WAssociation" eOpposite="/0/WAssociation/associationEnd"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="relatedLink" ordered="false" lowerBound="1" eType="/0/WLink"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WLink" abstract="true" eSuperTypes="/0/WElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="child" upperBound="-1" eType="/0/WLink" containment="true" eOpposite="/0/WLink/parent"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parent" ordered="false" lowerBound="1" eType="/0/WLink" eOpposite="/0/WLink/child"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" lowerBound="1" upperBound="-1" eType="/0/WLinkEnd" containment="true" eOpposite="/0/WLinkEnd/link"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WLinkEnd" abstract="true" eSuperTypes="/0/WElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="link" ordered="false" lowerBound="1" eType="/0/WLink" eOpposite="/0/WLink/end"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="element" ordered="false" lowerBound="1" eType="/0/WElementRef"/>
+ </eClassifiers>
+ </ecore:EPackage>
+ <ecore:EPackage name="PrimitiveTypes" nsURI="http://www.eclipse.org/gmt/amw/2005/MWCore-PrimitiveTypes" nsPrefix="pt">
+ <eClassifiers xsi:type="ecore:EDataType" name="Boolean" instanceClassName="boolean"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="Integer" instanceClassName="int"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String"/>
+ </ecore:EPackage>
+ <ecore:EPackage name="Annotation" nsURI="http://www.eclipse.org/gmt/am3/2007/Annotation" nsPrefix="ann">
+ <eClassifiers xsi:type="ecore:EClass" name="AnnotationModel" eSuperTypes="/0/WModel">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1" eType="/2/Annotation" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="referencedModel" ordered="false" lowerBound="1" eType="/2/AnnotatedModel" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AnnotatedModel" eSuperTypes="/0/WModelRef"/>
+ <eClassifiers xsi:type="ecore:EClass" name="AnnotatedModelElementRef" eSuperTypes="/0/WElementRef"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Annotation" eSuperTypes="/0/WLink">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1" eType="/2/Property" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="annotatedModelElement" ordered="false" lowerBound="1" eType="/2/AnnotatedModelElement" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AnnotatedModelElement" eSuperTypes="/0/WLinkEnd"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Property">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ </ecore:EPackage>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/Editor/Compiler/TCS2Editor.asm b/plugins/org.eclipse.gmt.tcs.dsls/resources/Editor/Compiler/TCS2Editor.asm
new file mode 100644
index 0000000..d695b27
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/Editor/Compiler/TCS2Editor.asm
@@ -0,0 +1,1585 @@
+<?xml version = '1.0' encoding = 'ISO-8859-1' ?>
+<asm name="0">
+ <cp>
+ <constant value="TCS2Editor"/>
+ <constant value="links"/>
+ <constant value="NTransientLinkSet;"/>
+ <constant value="col"/>
+ <constant value="J;"/>
+ <constant value="main"/>
+ <constant value="A"/>
+ <constant value="0"/>
+ <constant value="OclParametrizedType"/>
+ <constant value="#native"/>
+ <constant value="Collection"/>
+ <constant value="J.setName(S):V"/>
+ <constant value="OclSimpleType"/>
+ <constant value="OclAny"/>
+ <constant value="J.setElementType(J):V"/>
+ <constant value="TransientLinkSet"/>
+ <constant value="A.__matcher__():V"/>
+ <constant value="A.__exec__():V"/>
+ <constant value="self"/>
+ <constant value="__matcher__"/>
+ <constant value="A.__matchTCS2Editor():V"/>
+ <constant value="A.__matchkeyword():V"/>
+ <constant value="A.__matchsymbol():V"/>
+ <constant value="A.__matchtype():V"/>
+ <constant value="__matchTCS2Editor"/>
+ <constant value="ConcreteSyntax"/>
+ <constant value="TCS"/>
+ <constant value="Sequence"/>
+ <constant value="IN"/>
+ <constant value="MMOF!Classifier;.allInstancesFrom(S):QJ"/>
+ <constant value="CJ.union(CJ):CJ"/>
+ <constant value="1"/>
+ <constant value="B.not():B"/>
+ <constant value="55"/>
+ <constant value="TransientLink"/>
+ <constant value="NTransientLink;.setRule(MATL!Rule;):V"/>
+ <constant value="s"/>
+ <constant value="NTransientLink;.addSourceElement(SJ):V"/>
+ <constant value="t"/>
+ <constant value="Editor"/>
+ <constant value="NTransientLink;.addTargetElement(SJ):V"/>
+ <constant value="keywords"/>
+ <constant value="GroupElement"/>
+ <constant value="symbols"/>
+ <constant value="types"/>
+ <constant value="NTransientLinkSet;.addLink(NTransientLink;):V"/>
+ <constant value="11:7-11:20"/>
+ <constant value="37:14-37:33"/>
+ <constant value="42:13-42:32"/>
+ <constant value="47:11-47:30"/>
+ <constant value="__matchkeyword"/>
+ <constant value="Keyword"/>
+ <constant value="37"/>
+ <constant value="keyword"/>
+ <constant value="Element"/>
+ <constant value="122:7-122:21"/>
+ <constant value="__matchsymbol"/>
+ <constant value="Symbol"/>
+ <constant value="symbol"/>
+ <constant value="131:7-131:21"/>
+ <constant value="__matchtype"/>
+ <constant value="PrimitiveTemplate"/>
+ <constant value="type"/>
+ <constant value="140:7-140:21"/>
+ <constant value="__resolve__"/>
+ <constant value="J"/>
+ <constant value="J.oclIsKindOf(J):B"/>
+ <constant value="18"/>
+ <constant value="NTransientLinkSet;.getLinkBySourceElement(S):QNTransientLink;"/>
+ <constant value="J.oclIsUndefined():J"/>
+ <constant value="15"/>
+ <constant value="NTransientLink;.getTargetFromSource(J):J"/>
+ <constant value="17"/>
+ <constant value="30"/>
+ <constant value="2"/>
+ <constant value="A.__resolve__(J):J"/>
+ <constant value="QJ.including(J):QJ"/>
+ <constant value="QJ.flatten():QJ"/>
+ <constant value="e"/>
+ <constant value="value"/>
+ <constant value="resolveTemp"/>
+ <constant value="S"/>
+ <constant value="NTransientLink;.getNamedTargetFromSource(JS):J"/>
+ <constant value="name"/>
+ <constant value="__exec__"/>
+ <constant value="NTransientLinkSet;.getLinksByRule(S):QNTransientLink;"/>
+ <constant value="A.__applyTCS2Editor(NTransientLink;):V"/>
+ <constant value="A.__applykeyword(NTransientLink;):V"/>
+ <constant value="A.__applysymbol(NTransientLink;):V"/>
+ <constant value="A.__applytype(NTransientLink;):V"/>
+ <constant value="getToken"/>
+ <constant value="MTCS!ConcreteSyntax;"/>
+ <constant value="tokens"/>
+ <constant value="J.=(J):J"/>
+ <constant value="CJ.including(J):CJ"/>
+ <constant value="CJ.asSequence():QJ"/>
+ <constant value="QJ.first():J"/>
+ <constant value="5:2-5:6"/>
+ <constant value="5:2-5:13"/>
+ <constant value="5:23-5:24"/>
+ <constant value="5:23-5:29"/>
+ <constant value="5:32-5:36"/>
+ <constant value="5:23-5:36"/>
+ <constant value="5:2-5:37"/>
+ <constant value="__applyTCS2Editor"/>
+ <constant value="NTransientLink;"/>
+ <constant value="NTransientLink;.getSourceElement(S):J"/>
+ <constant value="NTransientLink;.getTargetElement(S):J"/>
+ <constant value="3"/>
+ <constant value="4"/>
+ <constant value="5"/>
+ <constant value="6"/>
+ <constant value="mgm"/>
+ <constant value="extension"/>
+ <constant value="Set"/>
+ <constant value="group"/>
+ <constant value="COMMENT"/>
+ <constant value="J.getToken(J):J"/>
+ <constant value="7"/>
+ <constant value="63"/>
+ <constant value="pattern"/>
+ <constant value="simplePatterns"/>
+ <constant value="8"/>
+ <constant value="rule"/>
+ <constant value="J.createCommentBlock(J):J"/>
+ <constant value="66"/>
+ <constant value="STRING"/>
+ <constant value="100"/>
+ <constant value="J.first():J"/>
+ <constant value="9"/>
+ <constant value="start"/>
+ <constant value="end"/>
+ <constant value="esc"/>
+ <constant value="94"/>
+ <constant value="98"/>
+ <constant value="J.createStringBlock(JJJ):J"/>
+ <constant value="105"/>
+ <constant value="&quot;"/>
+ <constant value="\"/>
+ <constant value="J.including(J):J"/>
+ <constant value="block"/>
+ <constant value="times"/>
+ <constant value="127"/>
+ <constant value="85"/>
+ <constant value="J.createFormat(JJJJJJ):J"/>
+ <constant value="format"/>
+ <constant value="J.allInstances():J"/>
+ <constant value="element"/>
+ <constant value="42"/>
+ <constant value="255"/>
+ <constant value="templates"/>
+ <constant value="12:17-12:22"/>
+ <constant value="12:4-12:22"/>
+ <constant value="13:18-13:26"/>
+ <constant value="13:28-13:35"/>
+ <constant value="13:37-13:42"/>
+ <constant value="13:13-13:43"/>
+ <constant value="13:4-13:43"/>
+ <constant value="14:34-14:35"/>
+ <constant value="14:45-14:54"/>
+ <constant value="14:34-14:55"/>
+ <constant value="14:17-14:55"/>
+ <constant value="15:8-15:10"/>
+ <constant value="15:8-15:27"/>
+ <constant value="18:6-18:8"/>
+ <constant value="18:6-18:16"/>
+ <constant value="18:6-18:31"/>
+ <constant value="18:45-18:55"/>
+ <constant value="18:75-18:76"/>
+ <constant value="18:75-18:81"/>
+ <constant value="18:45-18:82"/>
+ <constant value="18:6-18:83"/>
+ <constant value="16:6-16:17"/>
+ <constant value="15:5-19:10"/>
+ <constant value="20:27-20:28"/>
+ <constant value="20:38-20:46"/>
+ <constant value="20:27-20:47"/>
+ <constant value="20:10-20:47"/>
+ <constant value="21:9-21:11"/>
+ <constant value="21:9-21:28"/>
+ <constant value="24:26-24:28"/>
+ <constant value="24:26-24:36"/>
+ <constant value="24:26-24:51"/>
+ <constant value="24:26-24:60"/>
+ <constant value="24:26-24:65"/>
+ <constant value="24:11-24:65"/>
+ <constant value="25:7-25:17"/>
+ <constant value="26:8-26:9"/>
+ <constant value="26:8-26:15"/>
+ <constant value="26:8-26:20"/>
+ <constant value="27:8-27:9"/>
+ <constant value="27:8-27:13"/>
+ <constant value="27:8-27:18"/>
+ <constant value="28:11-28:12"/>
+ <constant value="28:11-28:16"/>
+ <constant value="28:11-28:33"/>
+ <constant value="31:9-31:10"/>
+ <constant value="31:9-31:14"/>
+ <constant value="31:9-31:19"/>
+ <constant value="29:9-29:21"/>
+ <constant value="28:8-32:13"/>
+ <constant value="25:7-33:8"/>
+ <constant value="24:7-33:8"/>
+ <constant value="22:7-22:17"/>
+ <constant value="22:36-22:40"/>
+ <constant value="22:42-22:46"/>
+ <constant value="22:48-22:52"/>
+ <constant value="22:7-22:53"/>
+ <constant value="21:6-34:11"/>
+ <constant value="20:6-34:11"/>
+ <constant value="15:5-35:6"/>
+ <constant value="14:13-35:6"/>
+ <constant value="14:4-35:6"/>
+ <constant value="38:12-38:22"/>
+ <constant value="38:4-38:22"/>
+ <constant value="39:14-39:24"/>
+ <constant value="39:38-39:45"/>
+ <constant value="39:47-39:51"/>
+ <constant value="39:53-39:58"/>
+ <constant value="39:60-39:63"/>
+ <constant value="39:65-39:66"/>
+ <constant value="39:68-39:70"/>
+ <constant value="39:14-39:71"/>
+ <constant value="39:4-39:71"/>
+ <constant value="40:15-40:26"/>
+ <constant value="40:15-40:41"/>
+ <constant value="40:4-40:41"/>
+ <constant value="43:12-43:21"/>
+ <constant value="43:4-43:21"/>
+ <constant value="44:14-44:24"/>
+ <constant value="44:38-44:45"/>
+ <constant value="44:47-44:51"/>
+ <constant value="44:53-44:58"/>
+ <constant value="44:60-44:63"/>
+ <constant value="44:65-44:66"/>
+ <constant value="44:68-44:70"/>
+ <constant value="44:14-44:71"/>
+ <constant value="44:4-44:71"/>
+ <constant value="45:15-45:25"/>
+ <constant value="45:15-45:40"/>
+ <constant value="45:4-45:40"/>
+ <constant value="48:12-48:19"/>
+ <constant value="48:4-48:19"/>
+ <constant value="49:14-49:24"/>
+ <constant value="49:38-49:45"/>
+ <constant value="49:47-49:51"/>
+ <constant value="49:53-49:58"/>
+ <constant value="49:60-49:62"/>
+ <constant value="49:64-49:65"/>
+ <constant value="49:67-49:70"/>
+ <constant value="49:14-49:71"/>
+ <constant value="49:4-49:71"/>
+ <constant value="50:15-50:16"/>
+ <constant value="50:15-50:26"/>
+ <constant value="50:4-50:26"/>
+ <constant value="r"/>
+ <constant value="st"/>
+ <constant value="ct"/>
+ <constant value="link"/>
+ <constant value="createCommentBlock"/>
+ <constant value="MTCS!RulePattern;"/>
+ <constant value="Block"/>
+ <constant value="CommentsLine"/>
+ <constant value="130"/>
+ <constant value="blockbegin"/>
+ <constant value="MultiLineRule"/>
+ <constant value="J.oclIsKindOf(J):J"/>
+ <constant value=""/>
+ <constant value="40"/>
+ <constant value="blockend"/>
+ <constant value="57:3-60:4"/>
+ <constant value="58:12-58:26"/>
+ <constant value="58:4-58:26"/>
+ <constant value="59:14-59:24"/>
+ <constant value="59:38-59:45"/>
+ <constant value="59:47-59:52"/>
+ <constant value="59:54-59:58"/>
+ <constant value="59:60-59:61"/>
+ <constant value="59:63-59:66"/>
+ <constant value="59:68-59:69"/>
+ <constant value="59:14-59:70"/>
+ <constant value="59:4-59:70"/>
+ <constant value="62:3-62:4"/>
+ <constant value="62:19-62:20"/>
+ <constant value="62:19-62:26"/>
+ <constant value="62:19-62:31"/>
+ <constant value="63:3-63:4"/>
+ <constant value="63:20-63:21"/>
+ <constant value="63:34-63:51"/>
+ <constant value="63:20-63:52"/>
+ <constant value="63:74-63:76"/>
+ <constant value="63:58-63:59"/>
+ <constant value="63:58-63:63"/>
+ <constant value="63:58-63:68"/>
+ <constant value="63:17-63:82"/>
+ <constant value="64:3-64:4"/>
+ <constant value="createStringBlock"/>
+ <constant value="string"/>
+ <constant value="71:3-77:4"/>
+ <constant value="72:12-72:20"/>
+ <constant value="72:4-72:20"/>
+ <constant value="73:18-73:23"/>
+ <constant value="73:4-73:23"/>
+ <constant value="74:16-74:19"/>
+ <constant value="74:4-74:19"/>
+ <constant value="75:11-75:14"/>
+ <constant value="75:4-75:14"/>
+ <constant value="76:14-76:24"/>
+ <constant value="76:38-76:45"/>
+ <constant value="76:47-76:52"/>
+ <constant value="76:54-76:59"/>
+ <constant value="76:61-76:62"/>
+ <constant value="76:64-76:65"/>
+ <constant value="76:67-76:70"/>
+ <constant value="76:14-76:71"/>
+ <constant value="76:4-76:71"/>
+ <constant value="79:3-79:4"/>
+ <constant value="createFormat"/>
+ <constant value="B"/>
+ <constant value="I"/>
+ <constant value="Format"/>
+ <constant value="J.createColor(JJJ):J"/>
+ <constant value="color"/>
+ <constant value="J.createFont(JJJ):J"/>
+ <constant value="font"/>
+ <constant value="85:3-88:4"/>
+ <constant value="86:13-86:23"/>
+ <constant value="86:36-86:37"/>
+ <constant value="86:39-86:40"/>
+ <constant value="86:42-86:43"/>
+ <constant value="86:13-86:44"/>
+ <constant value="86:4-86:44"/>
+ <constant value="87:12-87:22"/>
+ <constant value="87:34-87:35"/>
+ <constant value="87:37-87:41"/>
+ <constant value="87:43-87:44"/>
+ <constant value="87:12-87:45"/>
+ <constant value="87:4-87:45"/>
+ <constant value="90:3-90:4"/>
+ <constant value="f"/>
+ <constant value="bold"/>
+ <constant value="i"/>
+ <constant value="g"/>
+ <constant value="b"/>
+ <constant value="createFont"/>
+ <constant value="Font"/>
+ <constant value="italic"/>
+ <constant value="96:3-100:4"/>
+ <constant value="97:12-97:13"/>
+ <constant value="97:4-97:13"/>
+ <constant value="98:12-98:13"/>
+ <constant value="98:4-98:13"/>
+ <constant value="99:14-99:15"/>
+ <constant value="99:4-99:15"/>
+ <constant value="102:3-102:4"/>
+ <constant value="createColor"/>
+ <constant value="Color"/>
+ <constant value="red"/>
+ <constant value="green"/>
+ <constant value="blue"/>
+ <constant value="108:3-112:4"/>
+ <constant value="109:11-109:12"/>
+ <constant value="109:4-109:12"/>
+ <constant value="110:13-110:14"/>
+ <constant value="110:4-110:14"/>
+ <constant value="111:12-111:13"/>
+ <constant value="111:4-111:13"/>
+ <constant value="114:3-114:4"/>
+ <constant value="__applykeyword"/>
+ <constant value="123:15-123:16"/>
+ <constant value="123:15-123:22"/>
+ <constant value="123:4-123:22"/>
+ <constant value="__applysymbol"/>
+ <constant value="132:15-132:16"/>
+ <constant value="132:15-132:22"/>
+ <constant value="132:4-132:22"/>
+ <constant value="__applytype"/>
+ <constant value="typeName"/>
+ <constant value="141:15-141:16"/>
+ <constant value="141:15-141:25"/>
+ <constant value="141:4-141:25"/>
+ </cp>
+ <field name="1" type="2"/>
+ <field name="3" type="4"/>
+ <operation name="5">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="7"/>
+ <push arg="8"/>
+ <push arg="9"/>
+ <new/>
+ <dup/>
+ <push arg="10"/>
+ <call arg="11"/>
+ <dup/>
+ <push arg="12"/>
+ <push arg="9"/>
+ <new/>
+ <dup/>
+ <push arg="13"/>
+ <call arg="11"/>
+ <call arg="14"/>
+ <set arg="3"/>
+ <load arg="7"/>
+ <push arg="15"/>
+ <push arg="9"/>
+ <new/>
+ <set arg="1"/>
+ <load arg="7"/>
+ <call arg="16"/>
+ <load arg="7"/>
+ <call arg="17"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="18" begin="0" end="24"/>
+ </localvariabletable>
+ </operation>
+ <operation name="19">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="7"/>
+ <call arg="20"/>
+ <load arg="7"/>
+ <call arg="21"/>
+ <load arg="7"/>
+ <call arg="22"/>
+ <load arg="7"/>
+ <call arg="23"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="18" begin="0" end="7"/>
+ </localvariabletable>
+ </operation>
+ <operation name="24">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="25"/>
+ <push arg="26"/>
+ <findme/>
+ <push arg="27"/>
+ <push arg="9"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="28"/>
+ <call arg="29"/>
+ <call arg="30"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="31"/>
+ <pusht/>
+ <call arg="32"/>
+ <if arg="33"/>
+ <load arg="7"/>
+ <get arg="1"/>
+ <push arg="34"/>
+ <push arg="9"/>
+ <new/>
+ <dup/>
+ <push arg="0"/>
+ <call arg="35"/>
+ <dup/>
+ <push arg="36"/>
+ <load arg="31"/>
+ <call arg="37"/>
+ <dup/>
+ <push arg="38"/>
+ <push arg="39"/>
+ <push arg="39"/>
+ <new/>
+ <call arg="40"/>
+ <dup/>
+ <push arg="41"/>
+ <push arg="42"/>
+ <push arg="39"/>
+ <new/>
+ <call arg="40"/>
+ <dup/>
+ <push arg="43"/>
+ <push arg="42"/>
+ <push arg="39"/>
+ <new/>
+ <call arg="40"/>
+ <dup/>
+ <push arg="44"/>
+ <push arg="42"/>
+ <push arg="39"/>
+ <new/>
+ <call arg="40"/>
+ <call arg="45"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="46" begin="32" end="34"/>
+ <lne id="47" begin="38" end="40"/>
+ <lne id="48" begin="44" end="46"/>
+ <lne id="49" begin="50" end="52"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="36" begin="14" end="54"/>
+ <lve slot="0" name="18" begin="0" end="55"/>
+ </localvariabletable>
+ </operation>
+ <operation name="50">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="51"/>
+ <push arg="26"/>
+ <findme/>
+ <push arg="27"/>
+ <push arg="9"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="28"/>
+ <call arg="29"/>
+ <call arg="30"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="31"/>
+ <pusht/>
+ <call arg="32"/>
+ <if arg="52"/>
+ <load arg="7"/>
+ <get arg="1"/>
+ <push arg="34"/>
+ <push arg="9"/>
+ <new/>
+ <dup/>
+ <push arg="53"/>
+ <call arg="35"/>
+ <dup/>
+ <push arg="36"/>
+ <load arg="31"/>
+ <call arg="37"/>
+ <dup/>
+ <push arg="38"/>
+ <push arg="54"/>
+ <push arg="39"/>
+ <new/>
+ <call arg="40"/>
+ <call arg="45"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="55" begin="32" end="34"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="36" begin="14" end="36"/>
+ <lve slot="0" name="18" begin="0" end="37"/>
+ </localvariabletable>
+ </operation>
+ <operation name="56">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="57"/>
+ <push arg="26"/>
+ <findme/>
+ <push arg="27"/>
+ <push arg="9"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="28"/>
+ <call arg="29"/>
+ <call arg="30"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="31"/>
+ <pusht/>
+ <call arg="32"/>
+ <if arg="52"/>
+ <load arg="7"/>
+ <get arg="1"/>
+ <push arg="34"/>
+ <push arg="9"/>
+ <new/>
+ <dup/>
+ <push arg="58"/>
+ <call arg="35"/>
+ <dup/>
+ <push arg="36"/>
+ <load arg="31"/>
+ <call arg="37"/>
+ <dup/>
+ <push arg="38"/>
+ <push arg="54"/>
+ <push arg="39"/>
+ <new/>
+ <call arg="40"/>
+ <call arg="45"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="59" begin="32" end="34"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="36" begin="14" end="36"/>
+ <lve slot="0" name="18" begin="0" end="37"/>
+ </localvariabletable>
+ </operation>
+ <operation name="60">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="61"/>
+ <push arg="26"/>
+ <findme/>
+ <push arg="27"/>
+ <push arg="9"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="28"/>
+ <call arg="29"/>
+ <call arg="30"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="31"/>
+ <pusht/>
+ <call arg="32"/>
+ <if arg="52"/>
+ <load arg="7"/>
+ <get arg="1"/>
+ <push arg="34"/>
+ <push arg="9"/>
+ <new/>
+ <dup/>
+ <push arg="62"/>
+ <call arg="35"/>
+ <dup/>
+ <push arg="36"/>
+ <load arg="31"/>
+ <call arg="37"/>
+ <dup/>
+ <push arg="38"/>
+ <push arg="54"/>
+ <push arg="39"/>
+ <new/>
+ <call arg="40"/>
+ <call arg="45"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="63" begin="32" end="34"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="36" begin="14" end="36"/>
+ <lve slot="0" name="18" begin="0" end="37"/>
+ </localvariabletable>
+ </operation>
+ <operation name="64">
+ <context type="6"/>
+ <parameters>
+ <parameter name="31" type="65"/>
+ </parameters>
+ <code>
+ <load arg="31"/>
+ <load arg="7"/>
+ <get arg="3"/>
+ <call arg="66"/>
+ <if arg="67"/>
+ <load arg="7"/>
+ <get arg="1"/>
+ <load arg="31"/>
+ <call arg="68"/>
+ <dup/>
+ <call arg="69"/>
+ <if arg="70"/>
+ <load arg="31"/>
+ <call arg="71"/>
+ <goto arg="72"/>
+ <pop/>
+ <load arg="31"/>
+ <goto arg="73"/>
+ <push arg="27"/>
+ <push arg="9"/>
+ <new/>
+ <load arg="31"/>
+ <iterate/>
+ <store arg="74"/>
+ <load arg="7"/>
+ <load arg="74"/>
+ <call arg="75"/>
+ <call arg="76"/>
+ <enditerate/>
+ <call arg="77"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="78" begin="23" end="27"/>
+ <lve slot="0" name="18" begin="0" end="29"/>
+ <lve slot="1" name="79" begin="0" end="29"/>
+ </localvariabletable>
+ </operation>
+ <operation name="80">
+ <context type="6"/>
+ <parameters>
+ <parameter name="31" type="65"/>
+ <parameter name="74" type="81"/>
+ </parameters>
+ <code>
+ <load arg="7"/>
+ <get arg="1"/>
+ <load arg="31"/>
+ <call arg="68"/>
+ <load arg="31"/>
+ <load arg="74"/>
+ <call arg="82"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="18" begin="0" end="6"/>
+ <lve slot="1" name="79" begin="0" end="6"/>
+ <lve slot="2" name="83" begin="0" end="6"/>
+ </localvariabletable>
+ </operation>
+ <operation name="84">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="7"/>
+ <get arg="1"/>
+ <push arg="0"/>
+ <call arg="85"/>
+ <iterate/>
+ <store arg="31"/>
+ <load arg="7"/>
+ <load arg="31"/>
+ <call arg="86"/>
+ <enditerate/>
+ <load arg="7"/>
+ <get arg="1"/>
+ <push arg="53"/>
+ <call arg="85"/>
+ <iterate/>
+ <store arg="31"/>
+ <load arg="7"/>
+ <load arg="31"/>
+ <call arg="87"/>
+ <enditerate/>
+ <load arg="7"/>
+ <get arg="1"/>
+ <push arg="58"/>
+ <call arg="85"/>
+ <iterate/>
+ <store arg="31"/>
+ <load arg="7"/>
+ <load arg="31"/>
+ <call arg="88"/>
+ <enditerate/>
+ <load arg="7"/>
+ <get arg="1"/>
+ <push arg="62"/>
+ <call arg="85"/>
+ <iterate/>
+ <store arg="31"/>
+ <load arg="7"/>
+ <load arg="31"/>
+ <call arg="89"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="78" begin="5" end="8"/>
+ <lve slot="1" name="78" begin="15" end="18"/>
+ <lve slot="1" name="78" begin="25" end="28"/>
+ <lve slot="1" name="78" begin="35" end="38"/>
+ <lve slot="0" name="18" begin="0" end="39"/>
+ </localvariabletable>
+ </operation>
+ <operation name="90">
+ <context type="91"/>
+ <parameters>
+ <parameter name="31" type="81"/>
+ </parameters>
+ <code>
+ <push arg="27"/>
+ <push arg="9"/>
+ <new/>
+ <load arg="7"/>
+ <get arg="92"/>
+ <iterate/>
+ <store arg="74"/>
+ <load arg="74"/>
+ <get arg="83"/>
+ <load arg="31"/>
+ <call arg="93"/>
+ <call arg="32"/>
+ <if arg="70"/>
+ <load arg="74"/>
+ <call arg="94"/>
+ <enditerate/>
+ <call arg="95"/>
+ <call arg="96"/>
+ </code>
+ <linenumbertable>
+ <lne id="97" begin="3" end="3"/>
+ <lne id="98" begin="3" end="4"/>
+ <lne id="99" begin="7" end="7"/>
+ <lne id="100" begin="7" end="8"/>
+ <lne id="101" begin="9" end="9"/>
+ <lne id="102" begin="7" end="10"/>
+ <lne id="103" begin="0" end="17"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="78" begin="6" end="14"/>
+ <lve slot="0" name="18" begin="0" end="17"/>
+ <lve slot="1" name="83" begin="0" end="17"/>
+ </localvariabletable>
+ </operation>
+ <operation name="104">
+ <context type="6"/>
+ <parameters>
+ <parameter name="31" type="105"/>
+ </parameters>
+ <code>
+ <load arg="31"/>
+ <push arg="36"/>
+ <call arg="106"/>
+ <store arg="74"/>
+ <load arg="31"/>
+ <push arg="38"/>
+ <call arg="107"/>
+ <store arg="108"/>
+ <load arg="31"/>
+ <push arg="41"/>
+ <call arg="107"/>
+ <store arg="109"/>
+ <load arg="31"/>
+ <push arg="43"/>
+ <call arg="107"/>
+ <store arg="110"/>
+ <load arg="31"/>
+ <push arg="44"/>
+ <call arg="107"/>
+ <store arg="111"/>
+ <load arg="108"/>
+ <dup/>
+ <load arg="7"/>
+ <push arg="112"/>
+ <call arg="75"/>
+ <set arg="113"/>
+ <dup/>
+ <load arg="7"/>
+ <push arg="114"/>
+ <push arg="9"/>
+ <new/>
+ <load arg="109"/>
+ <call arg="94"/>
+ <load arg="110"/>
+ <call arg="94"/>
+ <load arg="111"/>
+ <call arg="94"/>
+ <call arg="75"/>
+ <set arg="115"/>
+ <dup/>
+ <load arg="7"/>
+ <load arg="74"/>
+ <push arg="116"/>
+ <call arg="117"/>
+ <store arg="118"/>
+ <load arg="118"/>
+ <call arg="69"/>
+ <if arg="119"/>
+ <push arg="27"/>
+ <push arg="9"/>
+ <new/>
+ <load arg="118"/>
+ <get arg="120"/>
+ <get arg="121"/>
+ <iterate/>
+ <store arg="122"/>
+ <getasm/>
+ <load arg="122"/>
+ <get arg="123"/>
+ <call arg="124"/>
+ <call arg="94"/>
+ <enditerate/>
+ <goto arg="125"/>
+ <push arg="27"/>
+ <push arg="9"/>
+ <new/>
+ <load arg="74"/>
+ <push arg="126"/>
+ <call arg="117"/>
+ <store arg="122"/>
+ <load arg="122"/>
+ <call arg="69"/>
+ <if arg="127"/>
+ <load arg="122"/>
+ <get arg="120"/>
+ <get arg="121"/>
+ <call arg="128"/>
+ <get arg="123"/>
+ <store arg="129"/>
+ <getasm/>
+ <load arg="129"/>
+ <get arg="130"/>
+ <get arg="83"/>
+ <load arg="129"/>
+ <get arg="131"/>
+ <get arg="83"/>
+ <load arg="129"/>
+ <get arg="132"/>
+ <call arg="69"/>
+ <if arg="133"/>
+ <load arg="129"/>
+ <get arg="132"/>
+ <get arg="83"/>
+ <goto arg="134"/>
+ <push arg="27"/>
+ <push arg="9"/>
+ <new/>
+ <call arg="96"/>
+ <call arg="135"/>
+ <goto arg="136"/>
+ <getasm/>
+ <push arg="137"/>
+ <push arg="137"/>
+ <push arg="138"/>
+ <call arg="135"/>
+ <call arg="139"/>
+ <call arg="75"/>
+ <set arg="140"/>
+ <pop/>
+ <load arg="109"/>
+ <dup/>
+ <load arg="7"/>
+ <push arg="41"/>
+ <call arg="75"/>
+ <set arg="62"/>
+ <dup/>
+ <load arg="7"/>
+ <getasm/>
+ <push arg="141"/>
+ <pusht/>
+ <pushf/>
+ <pushi arg="142"/>
+ <pushi arg="7"/>
+ <pushi arg="143"/>
+ <call arg="144"/>
+ <call arg="75"/>
+ <set arg="145"/>
+ <dup/>
+ <load arg="7"/>
+ <push arg="51"/>
+ <push arg="26"/>
+ <findme/>
+ <call arg="146"/>
+ <call arg="75"/>
+ <set arg="147"/>
+ <pop/>
+ <load arg="110"/>
+ <dup/>
+ <load arg="7"/>
+ <push arg="43"/>
+ <call arg="75"/>
+ <set arg="62"/>
+ <dup/>
+ <load arg="7"/>
+ <getasm/>
+ <push arg="141"/>
+ <pusht/>
+ <pushf/>
+ <pushi arg="142"/>
+ <pushi arg="7"/>
+ <pushi arg="143"/>
+ <call arg="144"/>
+ <call arg="75"/>
+ <set arg="145"/>
+ <dup/>
+ <load arg="7"/>
+ <push arg="57"/>
+ <push arg="26"/>
+ <findme/>
+ <call arg="146"/>
+ <call arg="75"/>
+ <set arg="147"/>
+ <pop/>
+ <load arg="111"/>
+ <dup/>
+ <load arg="7"/>
+ <push arg="44"/>
+ <call arg="75"/>
+ <set arg="62"/>
+ <dup/>
+ <load arg="7"/>
+ <getasm/>
+ <push arg="141"/>
+ <pusht/>
+ <pushf/>
+ <pushi arg="148"/>
+ <pushi arg="7"/>
+ <pushi arg="149"/>
+ <call arg="144"/>
+ <call arg="75"/>
+ <set arg="145"/>
+ <dup/>
+ <load arg="7"/>
+ <load arg="74"/>
+ <get arg="150"/>
+ <call arg="75"/>
+ <set arg="147"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="151" begin="23" end="23"/>
+ <lne id="152" begin="21" end="25"/>
+ <lne id="153" begin="31" end="31"/>
+ <lne id="154" begin="33" end="33"/>
+ <lne id="155" begin="35" end="35"/>
+ <lne id="156" begin="28" end="36"/>
+ <lne id="157" begin="26" end="38"/>
+ <lne id="158" begin="41" end="41"/>
+ <lne id="159" begin="42" end="42"/>
+ <lne id="160" begin="41" end="43"/>
+ <lne id="161" begin="41" end="43"/>
+ <lne id="162" begin="45" end="45"/>
+ <lne id="163" begin="45" end="46"/>
+ <lne id="164" begin="51" end="51"/>
+ <lne id="165" begin="51" end="52"/>
+ <lne id="166" begin="51" end="53"/>
+ <lne id="167" begin="56" end="56"/>
+ <lne id="168" begin="57" end="57"/>
+ <lne id="169" begin="57" end="58"/>
+ <lne id="170" begin="56" end="59"/>
+ <lne id="171" begin="48" end="61"/>
+ <lne id="172" begin="63" end="65"/>
+ <lne id="173" begin="45" end="65"/>
+ <lne id="174" begin="66" end="66"/>
+ <lne id="175" begin="67" end="67"/>
+ <lne id="176" begin="66" end="68"/>
+ <lne id="177" begin="66" end="68"/>
+ <lne id="178" begin="70" end="70"/>
+ <lne id="179" begin="70" end="71"/>
+ <lne id="180" begin="73" end="73"/>
+ <lne id="181" begin="73" end="74"/>
+ <lne id="182" begin="73" end="75"/>
+ <lne id="183" begin="73" end="76"/>
+ <lne id="184" begin="73" end="77"/>
+ <lne id="185" begin="73" end="77"/>
+ <lne id="186" begin="79" end="79"/>
+ <lne id="187" begin="80" end="80"/>
+ <lne id="188" begin="80" end="81"/>
+ <lne id="189" begin="80" end="82"/>
+ <lne id="190" begin="83" end="83"/>
+ <lne id="191" begin="83" end="84"/>
+ <lne id="192" begin="83" end="85"/>
+ <lne id="193" begin="86" end="86"/>
+ <lne id="194" begin="86" end="87"/>
+ <lne id="195" begin="86" end="88"/>
+ <lne id="196" begin="90" end="90"/>
+ <lne id="197" begin="90" end="91"/>
+ <lne id="198" begin="90" end="92"/>
+ <lne id="199" begin="94" end="97"/>
+ <lne id="200" begin="86" end="97"/>
+ <lne id="201" begin="79" end="98"/>
+ <lne id="202" begin="73" end="98"/>
+ <lne id="203" begin="100" end="100"/>
+ <lne id="204" begin="101" end="101"/>
+ <lne id="205" begin="102" end="102"/>
+ <lne id="206" begin="103" end="103"/>
+ <lne id="207" begin="100" end="104"/>
+ <lne id="208" begin="70" end="104"/>
+ <lne id="209" begin="66" end="104"/>
+ <lne id="210" begin="45" end="105"/>
+ <lne id="211" begin="41" end="105"/>
+ <lne id="212" begin="39" end="107"/>
+ <lne id="213" begin="112" end="112"/>
+ <lne id="214" begin="110" end="114"/>
+ <lne id="215" begin="117" end="117"/>
+ <lne id="216" begin="118" end="118"/>
+ <lne id="217" begin="119" end="119"/>
+ <lne id="218" begin="120" end="120"/>
+ <lne id="219" begin="121" end="121"/>
+ <lne id="220" begin="122" end="122"/>
+ <lne id="221" begin="123" end="123"/>
+ <lne id="222" begin="117" end="124"/>
+ <lne id="223" begin="115" end="126"/>
+ <lne id="224" begin="129" end="131"/>
+ <lne id="225" begin="129" end="132"/>
+ <lne id="226" begin="127" end="134"/>
+ <lne id="227" begin="139" end="139"/>
+ <lne id="228" begin="137" end="141"/>
+ <lne id="229" begin="144" end="144"/>
+ <lne id="230" begin="145" end="145"/>
+ <lne id="231" begin="146" end="146"/>
+ <lne id="232" begin="147" end="147"/>
+ <lne id="233" begin="148" end="148"/>
+ <lne id="234" begin="149" end="149"/>
+ <lne id="235" begin="150" end="150"/>
+ <lne id="236" begin="144" end="151"/>
+ <lne id="237" begin="142" end="153"/>
+ <lne id="238" begin="156" end="158"/>
+ <lne id="239" begin="156" end="159"/>
+ <lne id="240" begin="154" end="161"/>
+ <lne id="241" begin="166" end="166"/>
+ <lne id="242" begin="164" end="168"/>
+ <lne id="243" begin="171" end="171"/>
+ <lne id="244" begin="172" end="172"/>
+ <lne id="245" begin="173" end="173"/>
+ <lne id="246" begin="174" end="174"/>
+ <lne id="247" begin="175" end="175"/>
+ <lne id="248" begin="176" end="176"/>
+ <lne id="249" begin="177" end="177"/>
+ <lne id="250" begin="171" end="178"/>
+ <lne id="251" begin="169" end="180"/>
+ <lne id="252" begin="183" end="183"/>
+ <lne id="253" begin="183" end="184"/>
+ <lne id="254" begin="181" end="186"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="8" name="78" begin="55" end="60"/>
+ <lve slot="9" name="255" begin="78" end="98"/>
+ <lve slot="8" name="256" begin="69" end="104"/>
+ <lve slot="7" name="257" begin="44" end="105"/>
+ <lve slot="2" name="36" begin="3" end="187"/>
+ <lve slot="3" name="38" begin="7" end="187"/>
+ <lve slot="4" name="41" begin="11" end="187"/>
+ <lve slot="5" name="43" begin="15" end="187"/>
+ <lve slot="6" name="44" begin="19" end="187"/>
+ <lve slot="0" name="18" begin="0" end="187"/>
+ <lve slot="1" name="258" begin="0" end="187"/>
+ </localvariabletable>
+ </operation>
+ <operation name="259">
+ <context type="6"/>
+ <parameters>
+ <parameter name="31" type="260"/>
+ </parameters>
+ <code>
+ <push arg="261"/>
+ <push arg="39"/>
+ <new/>
+ <store arg="74"/>
+ <load arg="74"/>
+ <dup/>
+ <load arg="7"/>
+ <push arg="262"/>
+ <call arg="75"/>
+ <set arg="62"/>
+ <dup/>
+ <load arg="7"/>
+ <getasm/>
+ <push arg="141"/>
+ <pushf/>
+ <pusht/>
+ <pushi arg="7"/>
+ <pushi arg="263"/>
+ <pushi arg="7"/>
+ <call arg="144"/>
+ <call arg="75"/>
+ <set arg="145"/>
+ <pop/>
+ <load arg="74"/>
+ <load arg="31"/>
+ <get arg="130"/>
+ <get arg="83"/>
+ <set arg="264"/>
+ <load arg="74"/>
+ <load arg="31"/>
+ <push arg="265"/>
+ <push arg="26"/>
+ <findme/>
+ <call arg="266"/>
+ <if arg="52"/>
+ <push arg="267"/>
+ <goto arg="268"/>
+ <load arg="31"/>
+ <get arg="131"/>
+ <get arg="83"/>
+ <set arg="269"/>
+ <load arg="74"/>
+ </code>
+ <linenumbertable>
+ <lne id="270" begin="0" end="3"/>
+ <lne id="271" begin="7" end="7"/>
+ <lne id="272" begin="5" end="9"/>
+ <lne id="273" begin="12" end="12"/>
+ <lne id="274" begin="13" end="13"/>
+ <lne id="275" begin="14" end="14"/>
+ <lne id="276" begin="15" end="15"/>
+ <lne id="277" begin="16" end="16"/>
+ <lne id="278" begin="17" end="17"/>
+ <lne id="279" begin="18" end="18"/>
+ <lne id="280" begin="12" end="19"/>
+ <lne id="281" begin="10" end="21"/>
+ <lne id="270" begin="4" end="22"/>
+ <lne id="282" begin="23" end="23"/>
+ <lne id="283" begin="24" end="24"/>
+ <lne id="284" begin="24" end="25"/>
+ <lne id="285" begin="24" end="26"/>
+ <lne id="286" begin="28" end="28"/>
+ <lne id="287" begin="29" end="29"/>
+ <lne id="288" begin="30" end="32"/>
+ <lne id="289" begin="29" end="33"/>
+ <lne id="290" begin="35" end="35"/>
+ <lne id="291" begin="37" end="37"/>
+ <lne id="292" begin="37" end="38"/>
+ <lne id="293" begin="37" end="39"/>
+ <lne id="294" begin="29" end="39"/>
+ <lne id="295" begin="41" end="41"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="38" begin="3" end="41"/>
+ <lve slot="0" name="18" begin="0" end="41"/>
+ <lve slot="1" name="255" begin="0" end="41"/>
+ </localvariabletable>
+ </operation>
+ <operation name="296">
+ <context type="6"/>
+ <parameters>
+ <parameter name="31" type="81"/>
+ <parameter name="74" type="81"/>
+ <parameter name="108" type="81"/>
+ </parameters>
+ <code>
+ <push arg="261"/>
+ <push arg="39"/>
+ <new/>
+ <store arg="109"/>
+ <load arg="109"/>
+ <dup/>
+ <load arg="7"/>
+ <push arg="297"/>
+ <call arg="75"/>
+ <set arg="62"/>
+ <dup/>
+ <load arg="7"/>
+ <load arg="31"/>
+ <call arg="75"/>
+ <set arg="264"/>
+ <dup/>
+ <load arg="7"/>
+ <load arg="74"/>
+ <call arg="75"/>
+ <set arg="269"/>
+ <dup/>
+ <load arg="7"/>
+ <load arg="108"/>
+ <call arg="75"/>
+ <set arg="132"/>
+ <dup/>
+ <load arg="7"/>
+ <getasm/>
+ <push arg="141"/>
+ <pushf/>
+ <pushf/>
+ <pushi arg="7"/>
+ <pushi arg="7"/>
+ <pushi arg="149"/>
+ <call arg="144"/>
+ <call arg="75"/>
+ <set arg="145"/>
+ <pop/>
+ <load arg="109"/>
+ </code>
+ <linenumbertable>
+ <lne id="298" begin="0" end="3"/>
+ <lne id="299" begin="7" end="7"/>
+ <lne id="300" begin="5" end="9"/>
+ <lne id="301" begin="12" end="12"/>
+ <lne id="302" begin="10" end="14"/>
+ <lne id="303" begin="17" end="17"/>
+ <lne id="304" begin="15" end="19"/>
+ <lne id="305" begin="22" end="22"/>
+ <lne id="306" begin="20" end="24"/>
+ <lne id="307" begin="27" end="27"/>
+ <lne id="308" begin="28" end="28"/>
+ <lne id="309" begin="29" end="29"/>
+ <lne id="310" begin="30" end="30"/>
+ <lne id="311" begin="31" end="31"/>
+ <lne id="312" begin="32" end="32"/>
+ <lne id="313" begin="33" end="33"/>
+ <lne id="314" begin="27" end="34"/>
+ <lne id="315" begin="25" end="36"/>
+ <lne id="298" begin="4" end="37"/>
+ <lne id="316" begin="38" end="38"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="4" name="38" begin="3" end="38"/>
+ <lve slot="0" name="18" begin="0" end="38"/>
+ <lve slot="1" name="130" begin="0" end="38"/>
+ <lve slot="2" name="131" begin="0" end="38"/>
+ <lve slot="3" name="132" begin="0" end="38"/>
+ </localvariabletable>
+ </operation>
+ <operation name="317">
+ <context type="6"/>
+ <parameters>
+ <parameter name="31" type="81"/>
+ <parameter name="74" type="318"/>
+ <parameter name="108" type="318"/>
+ <parameter name="109" type="319"/>
+ <parameter name="110" type="319"/>
+ <parameter name="111" type="319"/>
+ </parameters>
+ <code>
+ <push arg="320"/>
+ <push arg="39"/>
+ <new/>
+ <store arg="118"/>
+ <load arg="118"/>
+ <dup/>
+ <load arg="7"/>
+ <getasm/>
+ <load arg="109"/>
+ <load arg="110"/>
+ <load arg="111"/>
+ <call arg="321"/>
+ <call arg="75"/>
+ <set arg="322"/>
+ <dup/>
+ <load arg="7"/>
+ <getasm/>
+ <load arg="31"/>
+ <load arg="74"/>
+ <load arg="108"/>
+ <call arg="323"/>
+ <call arg="75"/>
+ <set arg="324"/>
+ <pop/>
+ <load arg="118"/>
+ </code>
+ <linenumbertable>
+ <lne id="325" begin="0" end="3"/>
+ <lne id="326" begin="7" end="7"/>
+ <lne id="327" begin="8" end="8"/>
+ <lne id="328" begin="9" end="9"/>
+ <lne id="329" begin="10" end="10"/>
+ <lne id="330" begin="7" end="11"/>
+ <lne id="331" begin="5" end="13"/>
+ <lne id="332" begin="16" end="16"/>
+ <lne id="333" begin="17" end="17"/>
+ <lne id="334" begin="18" end="18"/>
+ <lne id="335" begin="19" end="19"/>
+ <lne id="336" begin="16" end="20"/>
+ <lne id="337" begin="14" end="22"/>
+ <lne id="325" begin="4" end="23"/>
+ <lne id="338" begin="24" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="7" name="38" begin="3" end="24"/>
+ <lve slot="0" name="18" begin="0" end="24"/>
+ <lve slot="1" name="339" begin="0" end="24"/>
+ <lve slot="2" name="340" begin="0" end="24"/>
+ <lve slot="3" name="341" begin="0" end="24"/>
+ <lve slot="4" name="255" begin="0" end="24"/>
+ <lve slot="5" name="342" begin="0" end="24"/>
+ <lve slot="6" name="343" begin="0" end="24"/>
+ </localvariabletable>
+ </operation>
+ <operation name="344">
+ <context type="6"/>
+ <parameters>
+ <parameter name="31" type="81"/>
+ <parameter name="74" type="318"/>
+ <parameter name="108" type="318"/>
+ </parameters>
+ <code>
+ <push arg="345"/>
+ <push arg="39"/>
+ <new/>
+ <store arg="109"/>
+ <load arg="109"/>
+ <dup/>
+ <load arg="7"/>
+ <load arg="31"/>
+ <call arg="75"/>
+ <set arg="324"/>
+ <dup/>
+ <load arg="7"/>
+ <load arg="74"/>
+ <call arg="75"/>
+ <set arg="340"/>
+ <dup/>
+ <load arg="7"/>
+ <load arg="108"/>
+ <call arg="75"/>
+ <set arg="346"/>
+ <pop/>
+ <load arg="109"/>
+ </code>
+ <linenumbertable>
+ <lne id="347" begin="0" end="3"/>
+ <lne id="348" begin="7" end="7"/>
+ <lne id="349" begin="5" end="9"/>
+ <lne id="350" begin="12" end="12"/>
+ <lne id="351" begin="10" end="14"/>
+ <lne id="352" begin="17" end="17"/>
+ <lne id="353" begin="15" end="19"/>
+ <lne id="347" begin="4" end="20"/>
+ <lne id="354" begin="21" end="21"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="4" name="38" begin="3" end="21"/>
+ <lve slot="0" name="18" begin="0" end="21"/>
+ <lve slot="1" name="339" begin="0" end="21"/>
+ <lve slot="2" name="343" begin="0" end="21"/>
+ <lve slot="3" name="341" begin="0" end="21"/>
+ </localvariabletable>
+ </operation>
+ <operation name="355">
+ <context type="6"/>
+ <parameters>
+ <parameter name="31" type="319"/>
+ <parameter name="74" type="319"/>
+ <parameter name="108" type="319"/>
+ </parameters>
+ <code>
+ <push arg="356"/>
+ <push arg="39"/>
+ <new/>
+ <store arg="109"/>
+ <load arg="109"/>
+ <dup/>
+ <load arg="7"/>
+ <load arg="31"/>
+ <call arg="75"/>
+ <set arg="357"/>
+ <dup/>
+ <load arg="7"/>
+ <load arg="74"/>
+ <call arg="75"/>
+ <set arg="358"/>
+ <dup/>
+ <load arg="7"/>
+ <load arg="108"/>
+ <call arg="75"/>
+ <set arg="359"/>
+ <pop/>
+ <load arg="109"/>
+ </code>
+ <linenumbertable>
+ <lne id="360" begin="0" end="3"/>
+ <lne id="361" begin="7" end="7"/>
+ <lne id="362" begin="5" end="9"/>
+ <lne id="363" begin="12" end="12"/>
+ <lne id="364" begin="10" end="14"/>
+ <lne id="365" begin="17" end="17"/>
+ <lne id="366" begin="15" end="19"/>
+ <lne id="360" begin="4" end="20"/>
+ <lne id="367" begin="21" end="21"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="4" name="38" begin="3" end="21"/>
+ <lve slot="0" name="18" begin="0" end="21"/>
+ <lve slot="1" name="255" begin="0" end="21"/>
+ <lve slot="2" name="342" begin="0" end="21"/>
+ <lve slot="3" name="343" begin="0" end="21"/>
+ </localvariabletable>
+ </operation>
+ <operation name="368">
+ <context type="6"/>
+ <parameters>
+ <parameter name="31" type="105"/>
+ </parameters>
+ <code>
+ <load arg="31"/>
+ <push arg="36"/>
+ <call arg="106"/>
+ <store arg="74"/>
+ <load arg="31"/>
+ <push arg="38"/>
+ <call arg="107"/>
+ <store arg="108"/>
+ <load arg="108"/>
+ <dup/>
+ <load arg="7"/>
+ <load arg="74"/>
+ <get arg="79"/>
+ <call arg="75"/>
+ <set arg="147"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="369" begin="11" end="11"/>
+ <lne id="370" begin="11" end="12"/>
+ <lne id="371" begin="9" end="14"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="36" begin="3" end="15"/>
+ <lve slot="3" name="38" begin="7" end="15"/>
+ <lve slot="0" name="18" begin="0" end="15"/>
+ <lve slot="1" name="258" begin="0" end="15"/>
+ </localvariabletable>
+ </operation>
+ <operation name="372">
+ <context type="6"/>
+ <parameters>
+ <parameter name="31" type="105"/>
+ </parameters>
+ <code>
+ <load arg="31"/>
+ <push arg="36"/>
+ <call arg="106"/>
+ <store arg="74"/>
+ <load arg="31"/>
+ <push arg="38"/>
+ <call arg="107"/>
+ <store arg="108"/>
+ <load arg="108"/>
+ <dup/>
+ <load arg="7"/>
+ <load arg="74"/>
+ <get arg="79"/>
+ <call arg="75"/>
+ <set arg="147"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="373" begin="11" end="11"/>
+ <lne id="374" begin="11" end="12"/>
+ <lne id="375" begin="9" end="14"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="36" begin="3" end="15"/>
+ <lve slot="3" name="38" begin="7" end="15"/>
+ <lve slot="0" name="18" begin="0" end="15"/>
+ <lve slot="1" name="258" begin="0" end="15"/>
+ </localvariabletable>
+ </operation>
+ <operation name="376">
+ <context type="6"/>
+ <parameters>
+ <parameter name="31" type="105"/>
+ </parameters>
+ <code>
+ <load arg="31"/>
+ <push arg="36"/>
+ <call arg="106"/>
+ <store arg="74"/>
+ <load arg="31"/>
+ <push arg="38"/>
+ <call arg="107"/>
+ <store arg="108"/>
+ <load arg="108"/>
+ <dup/>
+ <load arg="7"/>
+ <load arg="74"/>
+ <get arg="377"/>
+ <call arg="75"/>
+ <set arg="147"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="378" begin="11" end="11"/>
+ <lne id="379" begin="11" end="12"/>
+ <lne id="380" begin="9" end="14"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="36" begin="3" end="15"/>
+ <lve slot="3" name="38" begin="7" end="15"/>
+ <lve slot="0" name="18" begin="0" end="15"/>
+ <lve slot="1" name="258" begin="0" end="15"/>
+ </localvariabletable>
+ </operation>
+</asm>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/Editor/Metamodel/Editor.ecore b/plugins/org.eclipse.gmt.tcs.dsls/resources/Editor/Metamodel/Editor.ecore
new file mode 100644
index 0000000..e1e0b38
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/Editor/Metamodel/Editor.ecore
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore">
+ <ecore:EPackage name="Editor" nsURI="http://www.eclipse.org/gmt/tcs/2007/Editor" nsPrefix="edt">
+ <eClassifiers xsi:type="ecore:EClass" name="LocatedElement" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="location" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Editor" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="extension" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="block" ordered="false" upperBound="-1" eType="/0/Block" containment="true" eOpposite="/0/Block/editor"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="group" ordered="false" upperBound="-1" eType="/0/GroupElement" containment="true" eOpposite="/0/GroupElement/editor"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Block" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="blockbegin" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="blockend" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="esc" ordered="false" unique="false" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="editor" ordered="false" lowerBound="1" eType="/0/Editor" eOpposite="/0/Editor/block"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="format" ordered="false" eType="/0/Format" containment="true" eOpposite="/0/Format/blockFormat"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="GroupElement" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="editor" ordered="false" lowerBound="1" eType="/0/Editor" eOpposite="/0/Editor/group"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="indent" ordered="false" eType="/0/Indent" containment="true" eOpposite="/0/Indent/groupElementIndent"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="format" ordered="false" eType="/0/Format" containment="true" eOpposite="/0/Format/groupElementFormat"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="element" ordered="false" upperBound="-1" eType="/0/Element" containment="true" eOpposite="/0/Element/groupElement"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Element" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="element" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="groupElement" ordered="false" lowerBound="1" eType="/0/GroupElement" eOpposite="/0/GroupElement/element"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Format" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="color" ordered="false" eType="/0/Color" containment="true" eOpposite="/0/Color/format"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="font" ordered="false" eType="/0/Font" containment="true" eOpposite="/0/Font/format"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="groupElementFormat" ordered="false" lowerBound="1" eType="/0/GroupElement" eOpposite="/0/GroupElement/format"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="blockFormat" ordered="false" lowerBound="1" eType="/0/Block" eOpposite="/0/Block/format"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Color" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="red" ordered="false" unique="false" lowerBound="1" eType="/1/Integer"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="green" ordered="false" unique="false" lowerBound="1" eType="/1/Integer"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="blue" ordered="false" unique="false" lowerBound="1" eType="/1/Integer"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="format" ordered="false" lowerBound="1" eType="/0/Format" eOpposite="/0/Format/color"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Font" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="font" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="bold" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="italic" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="format" ordered="false" lowerBound="1" eType="/0/Format" eOpposite="/0/Format/font"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Indent" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="retrait" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="groupElementIndent" ordered="false" lowerBound="1" eType="/0/GroupElement" eOpposite="/0/GroupElement/indent"/>
+ </eClassifiers>
+ </ecore:EPackage>
+ <ecore:EPackage name="PrimitiveTypes" nsURI="http://www.eclipse.org/gmt/tcs/2007/Editor-PrimitiveTypes" nsPrefix="ptypes">
+ <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="Integer" instanceClassName="int"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="Boolean" instanceClassName="boolean"/>
+ </ecore:EPackage>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Compiler/KM32Ecore.asm b/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Compiler/KM32Ecore.asm
new file mode 100644
index 0000000..92ee5cf
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Compiler/KM32Ecore.asm
@@ -0,0 +1,1866 @@
+<?xml version = '1.0' encoding = 'ISO-8859-1' ?>
+<asm name="0">
+ <cp>
+ <constant value="KM32Ecore"/>
+ <constant value="links"/>
+ <constant value="NTransientLinkSet;"/>
+ <constant value="col"/>
+ <constant value="J"/>
+ <constant value="main"/>
+ <constant value="A"/>
+ <constant value="OclParametrizedType"/>
+ <constant value="#native"/>
+ <constant value="Collection"/>
+ <constant value="J.setName(S):V"/>
+ <constant value="OclSimpleType"/>
+ <constant value="OclAny"/>
+ <constant value="J.setElementType(J):V"/>
+ <constant value="TransientLinkSet"/>
+ <constant value="A.__matcher__():V"/>
+ <constant value="A.__exec__():V"/>
+ <constant value="self"/>
+ <constant value="__resolve__"/>
+ <constant value="1"/>
+ <constant value="J.oclIsKindOf(J):B"/>
+ <constant value="18"/>
+ <constant value="NTransientLinkSet;.getLinkBySourceElement(S):QNTransientLink;"/>
+ <constant value="J.oclIsUndefined():J"/>
+ <constant value="15"/>
+ <constant value="NTransientLink;.getTargetFromSource(J):J"/>
+ <constant value="17"/>
+ <constant value="30"/>
+ <constant value="Sequence"/>
+ <constant value="2"/>
+ <constant value="A.__resolve__(J):J"/>
+ <constant value="QJ.including(J):QJ"/>
+ <constant value="QJ.flatten():QJ"/>
+ <constant value="e"/>
+ <constant value="value"/>
+ <constant value="resolveTemp"/>
+ <constant value="S"/>
+ <constant value="NTransientLink;.getNamedTargetFromSource(JS):J"/>
+ <constant value="name"/>
+ <constant value="__matcher__"/>
+ <constant value="A.__matchPackage():V"/>
+ <constant value="A.__matchPrimitiveType():V"/>
+ <constant value="A.__matchReference():V"/>
+ <constant value="A.__matchClass():V"/>
+ <constant value="A.__matchPrimitiveAttribute():V"/>
+ <constant value="A.__matchNonPrimitiveAttribute():V"/>
+ <constant value="A.__matchEnumeration():V"/>
+ <constant value="A.__matchEnumLiteral():V"/>
+ <constant value="A.__matchOperation():V"/>
+ <constant value="A.__matchParameter():V"/>
+ <constant value="__exec__"/>
+ <constant value="Package"/>
+ <constant value="NTransientLinkSet;.getLinksByRule(S):QNTransientLink;"/>
+ <constant value="A.__applyPackage(NTransientLink;):V"/>
+ <constant value="PrimitiveType"/>
+ <constant value="A.__applyPrimitiveType(NTransientLink;):V"/>
+ <constant value="Reference"/>
+ <constant value="A.__applyReference(NTransientLink;):V"/>
+ <constant value="Class"/>
+ <constant value="A.__applyClass(NTransientLink;):V"/>
+ <constant value="PrimitiveAttribute"/>
+ <constant value="A.__applyPrimitiveAttribute(NTransientLink;):V"/>
+ <constant value="NonPrimitiveAttribute"/>
+ <constant value="A.__applyNonPrimitiveAttribute(NTransientLink;):V"/>
+ <constant value="Enumeration"/>
+ <constant value="A.__applyEnumeration(NTransientLink;):V"/>
+ <constant value="EnumLiteral"/>
+ <constant value="A.__applyEnumLiteral(NTransientLink;):V"/>
+ <constant value="Operation"/>
+ <constant value="A.__applyOperation(NTransientLink;):V"/>
+ <constant value="Parameter"/>
+ <constant value="A.__applyParameter(NTransientLink;):V"/>
+ <constant value="getMetadata"/>
+ <constant value="MKM3!Package;"/>
+ <constant value="0"/>
+ <constant value="commentsBefore"/>
+ <constant value="-- @"/>
+ <constant value="J.+(J):J"/>
+ <constant value=" "/>
+ <constant value="J.startsWith(J):J"/>
+ <constant value="B.not():B"/>
+ <constant value="CJ.including(J):CJ"/>
+ <constant value="J.first():J"/>
+ <constant value="33"/>
+ <constant value="6"/>
+ <constant value="J.size():J"/>
+ <constant value="J.substring(JJ):J"/>
+ <constant value="37"/>
+ <constant value="QJ.first():J"/>
+ <constant value="9:25-9:29"/>
+ <constant value="9:25-9:44"/>
+ <constant value="9:57-9:58"/>
+ <constant value="9:70-9:76"/>
+ <constant value="9:79-9:83"/>
+ <constant value="9:70-9:83"/>
+ <constant value="9:86-9:89"/>
+ <constant value="9:70-9:89"/>
+ <constant value="9:57-9:90"/>
+ <constant value="9:25-9:91"/>
+ <constant value="9:25-9:100"/>
+ <constant value="10:5-10:12"/>
+ <constant value="10:5-10:29"/>
+ <constant value="13:3-13:10"/>
+ <constant value="13:21-13:22"/>
+ <constant value="13:25-13:29"/>
+ <constant value="13:25-13:36"/>
+ <constant value="13:21-13:36"/>
+ <constant value="13:38-13:45"/>
+ <constant value="13:38-13:52"/>
+ <constant value="13:3-13:53"/>
+ <constant value="11:3-11:15"/>
+ <constant value="10:2-14:7"/>
+ <constant value="9:2-14:7"/>
+ <constant value="comment"/>
+ <constant value="__matchPackage"/>
+ <constant value="KM3"/>
+ <constant value="IN"/>
+ <constant value="MMOF!Classifier;.allInstancesFrom(S):QJ"/>
+ <constant value="TransientLink"/>
+ <constant value="NTransientLink;.setRule(MATL!Rule;):V"/>
+ <constant value="NTransientLink;.addSourceElement(SJ):V"/>
+ <constant value="c"/>
+ <constant value="EPackage"/>
+ <constant value="Ecore"/>
+ <constant value="NTransientLink;.addTargetElement(SJ):V"/>
+ <constant value="NTransientLinkSet;.addLink2(NTransientLink;B):V"/>
+ <constant value="20:7-20:21"/>
+ <constant value="20:3-26:4"/>
+ <constant value="__applyPackage"/>
+ <constant value="NTransientLink;"/>
+ <constant value="NTransientLink;.getSourceElement(S):J"/>
+ <constant value="NTransientLink;.getTargetElement(S):J"/>
+ <constant value="3"/>
+ <constant value="contents"/>
+ <constant value="4"/>
+ <constant value="Classifier"/>
+ <constant value="J.oclIsKindOf(J):J"/>
+ <constant value="eClassifiers"/>
+ <constant value="54"/>
+ <constant value="eSubpackages"/>
+ <constant value="nsURI"/>
+ <constant value="J.getMetadata(J):J"/>
+ <constant value="nsPrefix"/>
+ <constant value="21:12-21:13"/>
+ <constant value="21:12-21:18"/>
+ <constant value="21:4-21:18"/>
+ <constant value="22:20-22:21"/>
+ <constant value="22:20-22:30"/>
+ <constant value="22:43-22:44"/>
+ <constant value="22:57-22:71"/>
+ <constant value="22:43-22:72"/>
+ <constant value="22:20-22:73"/>
+ <constant value="22:4-22:73"/>
+ <constant value="23:20-23:21"/>
+ <constant value="23:20-23:30"/>
+ <constant value="23:43-23:44"/>
+ <constant value="23:57-23:68"/>
+ <constant value="23:43-23:69"/>
+ <constant value="23:20-23:70"/>
+ <constant value="23:4-23:70"/>
+ <constant value="24:13-24:14"/>
+ <constant value="24:27-24:34"/>
+ <constant value="24:13-24:35"/>
+ <constant value="24:4-24:35"/>
+ <constant value="25:16-25:17"/>
+ <constant value="25:30-25:40"/>
+ <constant value="25:16-25:41"/>
+ <constant value="25:4-25:41"/>
+ <constant value="link"/>
+ <constant value="__matchPrimitiveType"/>
+ <constant value="DataType"/>
+ <constant value="EDataType"/>
+ <constant value="33:7-33:22"/>
+ <constant value="33:3-35:4"/>
+ <constant value="__applyPrimitiveType"/>
+ <constant value="34:12-34:13"/>
+ <constant value="34:12-34:18"/>
+ <constant value="34:4-34:18"/>
+ <constant value="__matchReference"/>
+ <constant value="EReference"/>
+ <constant value="42:7-42:23"/>
+ <constant value="42:3-50:4"/>
+ <constant value="__applyReference"/>
+ <constant value="type"/>
+ <constant value="eType"/>
+ <constant value="lower"/>
+ <constant value="lowerBound"/>
+ <constant value="upper"/>
+ <constant value="upperBound"/>
+ <constant value="isOrdered"/>
+ <constant value="ordered"/>
+ <constant value="opposite"/>
+ <constant value="eOpposite"/>
+ <constant value="isContainer"/>
+ <constant value="containment"/>
+ <constant value="43:12-43:13"/>
+ <constant value="43:12-43:18"/>
+ <constant value="43:4-43:18"/>
+ <constant value="44:13-44:14"/>
+ <constant value="44:13-44:19"/>
+ <constant value="44:4-44:19"/>
+ <constant value="45:18-45:19"/>
+ <constant value="45:18-45:25"/>
+ <constant value="45:4-45:25"/>
+ <constant value="46:18-46:19"/>
+ <constant value="46:18-46:25"/>
+ <constant value="46:4-46:25"/>
+ <constant value="47:15-47:16"/>
+ <constant value="47:15-47:26"/>
+ <constant value="47:4-47:26"/>
+ <constant value="48:17-48:18"/>
+ <constant value="48:17-48:27"/>
+ <constant value="48:4-48:27"/>
+ <constant value="49:19-49:20"/>
+ <constant value="49:19-49:32"/>
+ <constant value="49:4-49:32"/>
+ <constant value="__matchClass"/>
+ <constant value="EClass"/>
+ <constant value="57:7-57:19"/>
+ <constant value="57:3-63:4"/>
+ <constant value="__applyClass"/>
+ <constant value="structuralFeatures"/>
+ <constant value="eStructuralFeatures"/>
+ <constant value="operations"/>
+ <constant value="eOperations"/>
+ <constant value="supertypes"/>
+ <constant value="eSuperTypes"/>
+ <constant value="isAbstract"/>
+ <constant value="abstract"/>
+ <constant value="58:12-58:13"/>
+ <constant value="58:12-58:18"/>
+ <constant value="58:4-58:18"/>
+ <constant value="59:27-59:28"/>
+ <constant value="59:27-59:47"/>
+ <constant value="59:4-59:47"/>
+ <constant value="60:19-60:20"/>
+ <constant value="60:19-60:31"/>
+ <constant value="60:4-60:31"/>
+ <constant value="61:19-61:20"/>
+ <constant value="61:19-61:31"/>
+ <constant value="61:4-61:31"/>
+ <constant value="62:18-62:19"/>
+ <constant value="62:18-62:30"/>
+ <constant value="62:4-62:30"/>
+ <constant value="__matchPrimitiveAttribute"/>
+ <constant value="Attribute"/>
+ <constant value="J.or(J):J"/>
+ <constant value="42"/>
+ <constant value="EAttribute"/>
+ <constant value="69:4-69:5"/>
+ <constant value="69:4-69:10"/>
+ <constant value="69:23-69:35"/>
+ <constant value="69:4-69:36"/>
+ <constant value="70:4-70:5"/>
+ <constant value="70:4-70:10"/>
+ <constant value="70:23-70:38"/>
+ <constant value="70:4-70:39"/>
+ <constant value="69:4-70:39"/>
+ <constant value="73:7-73:23"/>
+ <constant value="73:3-80:4"/>
+ <constant value="__applyPrimitiveAttribute"/>
+ <constant value="isUnique"/>
+ <constant value="unique"/>
+ <constant value="74:12-74:13"/>
+ <constant value="74:12-74:18"/>
+ <constant value="74:4-74:18"/>
+ <constant value="75:13-75:14"/>
+ <constant value="75:13-75:19"/>
+ <constant value="75:4-75:19"/>
+ <constant value="76:18-76:19"/>
+ <constant value="76:18-76:25"/>
+ <constant value="76:4-76:25"/>
+ <constant value="77:18-77:19"/>
+ <constant value="77:18-77:25"/>
+ <constant value="77:4-77:25"/>
+ <constant value="78:15-78:16"/>
+ <constant value="78:15-78:26"/>
+ <constant value="78:4-78:26"/>
+ <constant value="79:16-79:17"/>
+ <constant value="79:16-79:26"/>
+ <constant value="79:4-79:26"/>
+ <constant value="__matchNonPrimitiveAttribute"/>
+ <constant value="J.not():J"/>
+ <constant value="43"/>
+ <constant value="86:9-86:10"/>
+ <constant value="86:9-86:15"/>
+ <constant value="86:28-86:40"/>
+ <constant value="86:9-86:41"/>
+ <constant value="87:4-87:5"/>
+ <constant value="87:4-87:10"/>
+ <constant value="87:23-87:38"/>
+ <constant value="87:4-87:39"/>
+ <constant value="86:9-87:39"/>
+ <constant value="86:4-87:40"/>
+ <constant value="90:7-90:23"/>
+ <constant value="90:3-97:4"/>
+ <constant value="__applyNonPrimitiveAttribute"/>
+ <constant value="91:12-91:13"/>
+ <constant value="91:12-91:18"/>
+ <constant value="91:4-91:18"/>
+ <constant value="92:13-92:14"/>
+ <constant value="92:13-92:19"/>
+ <constant value="92:4-92:19"/>
+ <constant value="93:18-93:19"/>
+ <constant value="93:18-93:25"/>
+ <constant value="93:4-93:25"/>
+ <constant value="94:18-94:19"/>
+ <constant value="94:18-94:25"/>
+ <constant value="94:4-94:25"/>
+ <constant value="95:15-95:16"/>
+ <constant value="95:15-95:26"/>
+ <constant value="95:4-95:26"/>
+ <constant value="96:19-96:23"/>
+ <constant value="96:4-96:23"/>
+ <constant value="__matchEnumeration"/>
+ <constant value="EEnum"/>
+ <constant value="104:7-104:18"/>
+ <constant value="104:3-107:4"/>
+ <constant value="__applyEnumeration"/>
+ <constant value="literals"/>
+ <constant value="eLiterals"/>
+ <constant value="105:12-105:13"/>
+ <constant value="105:12-105:18"/>
+ <constant value="105:4-105:18"/>
+ <constant value="106:17-106:18"/>
+ <constant value="106:17-106:27"/>
+ <constant value="106:4-106:27"/>
+ <constant value="__matchEnumLiteral"/>
+ <constant value="EEnumLiteral"/>
+ <constant value="114:7-114:25"/>
+ <constant value="114:3-117:4"/>
+ <constant value="__applyEnumLiteral"/>
+ <constant value="enum"/>
+ <constant value="J.indexOf(J):J"/>
+ <constant value="115:12-115:13"/>
+ <constant value="115:12-115:18"/>
+ <constant value="115:4-115:18"/>
+ <constant value="116:13-116:14"/>
+ <constant value="116:13-116:19"/>
+ <constant value="116:13-116:28"/>
+ <constant value="116:38-116:39"/>
+ <constant value="116:13-116:40"/>
+ <constant value="116:4-116:40"/>
+ <constant value="__matchOperation"/>
+ <constant value="io"/>
+ <constant value="oo"/>
+ <constant value="EOperation"/>
+ <constant value="124:8-124:24"/>
+ <constant value="124:3-128:4"/>
+ <constant value="__applyOperation"/>
+ <constant value="parameters"/>
+ <constant value="eParameters"/>
+ <constant value="125:12-125:14"/>
+ <constant value="125:12-125:19"/>
+ <constant value="125:4-125:19"/>
+ <constant value="126:19-126:21"/>
+ <constant value="126:19-126:32"/>
+ <constant value="126:4-126:32"/>
+ <constant value="127:13-127:15"/>
+ <constant value="127:13-127:20"/>
+ <constant value="127:4-127:20"/>
+ <constant value="__matchParameter"/>
+ <constant value="ip"/>
+ <constant value="op"/>
+ <constant value="EParameter"/>
+ <constant value="135:8-135:24"/>
+ <constant value="135:3-138:4"/>
+ <constant value="__applyParameter"/>
+ <constant value="136:12-136:14"/>
+ <constant value="136:12-136:19"/>
+ <constant value="136:4-136:19"/>
+ <constant value="137:13-137:15"/>
+ <constant value="137:13-137:20"/>
+ <constant value="137:4-137:20"/>
+ </cp>
+ <field name="1" type="2"/>
+ <field name="3" type="4"/>
+ <operation name="5">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <getasm/>
+ <push arg="7"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="9"/>
+ <call arg="10"/>
+ <dup/>
+ <push arg="11"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="12"/>
+ <call arg="10"/>
+ <call arg="13"/>
+ <set arg="3"/>
+ <getasm/>
+ <push arg="14"/>
+ <push arg="8"/>
+ <new/>
+ <set arg="1"/>
+ <getasm/>
+ <call arg="15"/>
+ <getasm/>
+ <call arg="16"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="17" begin="0" end="24"/>
+ </localvariabletable>
+ </operation>
+ <operation name="18">
+ <context type="6"/>
+ <parameters>
+ <parameter name="19" type="4"/>
+ </parameters>
+ <code>
+ <load arg="19"/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="20"/>
+ <if arg="21"/>
+ <getasm/>
+ <get arg="1"/>
+ <load arg="19"/>
+ <call arg="22"/>
+ <dup/>
+ <call arg="23"/>
+ <if arg="24"/>
+ <load arg="19"/>
+ <call arg="25"/>
+ <goto arg="26"/>
+ <pop/>
+ <load arg="19"/>
+ <goto arg="27"/>
+ <push arg="28"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="19"/>
+ <iterate/>
+ <store arg="29"/>
+ <getasm/>
+ <load arg="29"/>
+ <call arg="30"/>
+ <call arg="31"/>
+ <enditerate/>
+ <call arg="32"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="33" begin="23" end="27"/>
+ <lve slot="0" name="17" begin="0" end="29"/>
+ <lve slot="1" name="34" begin="0" end="29"/>
+ </localvariabletable>
+ </operation>
+ <operation name="35">
+ <context type="6"/>
+ <parameters>
+ <parameter name="19" type="4"/>
+ <parameter name="29" type="36"/>
+ </parameters>
+ <code>
+ <getasm/>
+ <get arg="1"/>
+ <load arg="19"/>
+ <call arg="22"/>
+ <load arg="19"/>
+ <load arg="29"/>
+ <call arg="37"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="17" begin="0" end="6"/>
+ <lve slot="1" name="34" begin="0" end="6"/>
+ <lve slot="2" name="38" begin="0" end="6"/>
+ </localvariabletable>
+ </operation>
+ <operation name="39">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <getasm/>
+ <call arg="40"/>
+ <getasm/>
+ <call arg="41"/>
+ <getasm/>
+ <call arg="42"/>
+ <getasm/>
+ <call arg="43"/>
+ <getasm/>
+ <call arg="44"/>
+ <getasm/>
+ <call arg="45"/>
+ <getasm/>
+ <call arg="46"/>
+ <getasm/>
+ <call arg="47"/>
+ <getasm/>
+ <call arg="48"/>
+ <getasm/>
+ <call arg="49"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="17" begin="0" end="19"/>
+ </localvariabletable>
+ </operation>
+ <operation name="50">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="51"/>
+ <call arg="52"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <load arg="19"/>
+ <call arg="53"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="54"/>
+ <call arg="52"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <load arg="19"/>
+ <call arg="55"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="56"/>
+ <call arg="52"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <load arg="19"/>
+ <call arg="57"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="58"/>
+ <call arg="52"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <load arg="19"/>
+ <call arg="59"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="60"/>
+ <call arg="52"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <load arg="19"/>
+ <call arg="61"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="62"/>
+ <call arg="52"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <load arg="19"/>
+ <call arg="63"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="64"/>
+ <call arg="52"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <load arg="19"/>
+ <call arg="65"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="66"/>
+ <call arg="52"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <load arg="19"/>
+ <call arg="67"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="68"/>
+ <call arg="52"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <load arg="19"/>
+ <call arg="69"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="70"/>
+ <call arg="52"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <load arg="19"/>
+ <call arg="71"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="33" begin="5" end="8"/>
+ <lve slot="1" name="33" begin="15" end="18"/>
+ <lve slot="1" name="33" begin="25" end="28"/>
+ <lve slot="1" name="33" begin="35" end="38"/>
+ <lve slot="1" name="33" begin="45" end="48"/>
+ <lve slot="1" name="33" begin="55" end="58"/>
+ <lve slot="1" name="33" begin="65" end="68"/>
+ <lve slot="1" name="33" begin="75" end="78"/>
+ <lve slot="1" name="33" begin="85" end="88"/>
+ <lve slot="1" name="33" begin="95" end="98"/>
+ <lve slot="0" name="17" begin="0" end="99"/>
+ </localvariabletable>
+ </operation>
+ <operation name="72">
+ <context type="73"/>
+ <parameters>
+ <parameter name="19" type="4"/>
+ </parameters>
+ <code>
+ <push arg="28"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="74"/>
+ <get arg="75"/>
+ <iterate/>
+ <store arg="29"/>
+ <load arg="29"/>
+ <push arg="76"/>
+ <load arg="19"/>
+ <call arg="77"/>
+ <push arg="78"/>
+ <call arg="77"/>
+ <call arg="79"/>
+ <call arg="80"/>
+ <if arg="21"/>
+ <load arg="29"/>
+ <call arg="81"/>
+ <enditerate/>
+ <call arg="82"/>
+ <store arg="29"/>
+ <load arg="29"/>
+ <call arg="23"/>
+ <if arg="83"/>
+ <load arg="29"/>
+ <pushi arg="84"/>
+ <load arg="19"/>
+ <call arg="85"/>
+ <call arg="77"/>
+ <load arg="29"/>
+ <call arg="85"/>
+ <call arg="86"/>
+ <goto arg="87"/>
+ <push arg="28"/>
+ <push arg="8"/>
+ <new/>
+ <call arg="88"/>
+ </code>
+ <linenumbertable>
+ <lne id="89" begin="3" end="3"/>
+ <lne id="90" begin="3" end="4"/>
+ <lne id="91" begin="7" end="7"/>
+ <lne id="92" begin="8" end="8"/>
+ <lne id="93" begin="9" end="9"/>
+ <lne id="94" begin="8" end="10"/>
+ <lne id="95" begin="11" end="11"/>
+ <lne id="96" begin="8" end="12"/>
+ <lne id="97" begin="7" end="13"/>
+ <lne id="98" begin="0" end="18"/>
+ <lne id="99" begin="0" end="19"/>
+ <lne id="100" begin="21" end="21"/>
+ <lne id="101" begin="21" end="22"/>
+ <lne id="102" begin="24" end="24"/>
+ <lne id="103" begin="25" end="25"/>
+ <lne id="104" begin="26" end="26"/>
+ <lne id="105" begin="26" end="27"/>
+ <lne id="106" begin="25" end="28"/>
+ <lne id="107" begin="29" end="29"/>
+ <lne id="108" begin="29" end="30"/>
+ <lne id="109" begin="24" end="31"/>
+ <lne id="110" begin="33" end="36"/>
+ <lne id="111" begin="21" end="36"/>
+ <lne id="112" begin="0" end="36"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="33" begin="6" end="17"/>
+ <lve slot="2" name="113" begin="20" end="36"/>
+ <lve slot="0" name="17" begin="0" end="36"/>
+ <lve slot="1" name="38" begin="0" end="36"/>
+ </localvariabletable>
+ </operation>
+ <operation name="114">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="51"/>
+ <push arg="115"/>
+ <findme/>
+ <push arg="116"/>
+ <call arg="117"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="118"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="51"/>
+ <call arg="119"/>
+ <dup/>
+ <push arg="33"/>
+ <load arg="19"/>
+ <call arg="120"/>
+ <dup/>
+ <push arg="121"/>
+ <push arg="122"/>
+ <push arg="123"/>
+ <new/>
+ <call arg="124"/>
+ <pusht/>
+ <call arg="125"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="126" begin="21" end="23"/>
+ <lne id="127" begin="19" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="33" begin="6" end="26"/>
+ <lve slot="0" name="17" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="128">
+ <context type="6"/>
+ <parameters>
+ <parameter name="19" type="129"/>
+ </parameters>
+ <code>
+ <load arg="19"/>
+ <push arg="33"/>
+ <call arg="130"/>
+ <store arg="29"/>
+ <load arg="19"/>
+ <push arg="121"/>
+ <call arg="131"/>
+ <store arg="132"/>
+ <load arg="132"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="38"/>
+ <call arg="30"/>
+ <set arg="38"/>
+ <dup/>
+ <getasm/>
+ <push arg="28"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="29"/>
+ <get arg="133"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="135"/>
+ <push arg="115"/>
+ <findme/>
+ <call arg="136"/>
+ <call arg="80"/>
+ <if arg="83"/>
+ <load arg="134"/>
+ <call arg="81"/>
+ <enditerate/>
+ <call arg="30"/>
+ <set arg="137"/>
+ <dup/>
+ <getasm/>
+ <push arg="28"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="29"/>
+ <get arg="133"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="51"/>
+ <push arg="115"/>
+ <findme/>
+ <call arg="136"/>
+ <call arg="80"/>
+ <if arg="138"/>
+ <load arg="134"/>
+ <call arg="81"/>
+ <enditerate/>
+ <call arg="30"/>
+ <set arg="139"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <push arg="140"/>
+ <call arg="141"/>
+ <call arg="30"/>
+ <set arg="140"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <push arg="142"/>
+ <call arg="141"/>
+ <call arg="30"/>
+ <set arg="142"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="143" begin="11" end="11"/>
+ <lne id="144" begin="11" end="12"/>
+ <lne id="145" begin="9" end="14"/>
+ <lne id="146" begin="20" end="20"/>
+ <lne id="147" begin="20" end="21"/>
+ <lne id="148" begin="24" end="24"/>
+ <lne id="149" begin="25" end="27"/>
+ <lne id="150" begin="24" end="28"/>
+ <lne id="151" begin="17" end="33"/>
+ <lne id="152" begin="15" end="35"/>
+ <lne id="153" begin="41" end="41"/>
+ <lne id="154" begin="41" end="42"/>
+ <lne id="155" begin="45" end="45"/>
+ <lne id="156" begin="46" end="48"/>
+ <lne id="157" begin="45" end="49"/>
+ <lne id="158" begin="38" end="54"/>
+ <lne id="159" begin="36" end="56"/>
+ <lne id="160" begin="59" end="59"/>
+ <lne id="161" begin="60" end="60"/>
+ <lne id="162" begin="59" end="61"/>
+ <lne id="163" begin="57" end="63"/>
+ <lne id="164" begin="66" end="66"/>
+ <lne id="165" begin="67" end="67"/>
+ <lne id="166" begin="66" end="68"/>
+ <lne id="167" begin="64" end="70"/>
+ <lne id="127" begin="8" end="71"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="4" name="33" begin="23" end="32"/>
+ <lve slot="4" name="33" begin="44" end="53"/>
+ <lve slot="3" name="121" begin="7" end="71"/>
+ <lve slot="2" name="33" begin="3" end="71"/>
+ <lve slot="0" name="17" begin="0" end="71"/>
+ <lve slot="1" name="168" begin="0" end="71"/>
+ </localvariabletable>
+ </operation>
+ <operation name="169">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="170"/>
+ <push arg="115"/>
+ <findme/>
+ <push arg="116"/>
+ <call arg="117"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="118"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="54"/>
+ <call arg="119"/>
+ <dup/>
+ <push arg="33"/>
+ <load arg="19"/>
+ <call arg="120"/>
+ <dup/>
+ <push arg="121"/>
+ <push arg="171"/>
+ <push arg="123"/>
+ <new/>
+ <call arg="124"/>
+ <pusht/>
+ <call arg="125"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="172" begin="21" end="23"/>
+ <lne id="173" begin="19" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="33" begin="6" end="26"/>
+ <lve slot="0" name="17" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="174">
+ <context type="6"/>
+ <parameters>
+ <parameter name="19" type="129"/>
+ </parameters>
+ <code>
+ <load arg="19"/>
+ <push arg="33"/>
+ <call arg="130"/>
+ <store arg="29"/>
+ <load arg="19"/>
+ <push arg="121"/>
+ <call arg="131"/>
+ <store arg="132"/>
+ <load arg="132"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="38"/>
+ <call arg="30"/>
+ <set arg="38"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="175" begin="11" end="11"/>
+ <lne id="176" begin="11" end="12"/>
+ <lne id="177" begin="9" end="14"/>
+ <lne id="173" begin="8" end="15"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="121" begin="7" end="15"/>
+ <lve slot="2" name="33" begin="3" end="15"/>
+ <lve slot="0" name="17" begin="0" end="15"/>
+ <lve slot="1" name="168" begin="0" end="15"/>
+ </localvariabletable>
+ </operation>
+ <operation name="178">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="56"/>
+ <push arg="115"/>
+ <findme/>
+ <push arg="116"/>
+ <call arg="117"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="118"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="56"/>
+ <call arg="119"/>
+ <dup/>
+ <push arg="33"/>
+ <load arg="19"/>
+ <call arg="120"/>
+ <dup/>
+ <push arg="121"/>
+ <push arg="179"/>
+ <push arg="123"/>
+ <new/>
+ <call arg="124"/>
+ <pusht/>
+ <call arg="125"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="180" begin="21" end="23"/>
+ <lne id="181" begin="19" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="33" begin="6" end="26"/>
+ <lve slot="0" name="17" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="182">
+ <context type="6"/>
+ <parameters>
+ <parameter name="19" type="129"/>
+ </parameters>
+ <code>
+ <load arg="19"/>
+ <push arg="33"/>
+ <call arg="130"/>
+ <store arg="29"/>
+ <load arg="19"/>
+ <push arg="121"/>
+ <call arg="131"/>
+ <store arg="132"/>
+ <load arg="132"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="38"/>
+ <call arg="30"/>
+ <set arg="38"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="183"/>
+ <call arg="30"/>
+ <set arg="184"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="185"/>
+ <call arg="30"/>
+ <set arg="186"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="187"/>
+ <call arg="30"/>
+ <set arg="188"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="189"/>
+ <call arg="30"/>
+ <set arg="190"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="191"/>
+ <call arg="30"/>
+ <set arg="192"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="193"/>
+ <call arg="30"/>
+ <set arg="194"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="195" begin="11" end="11"/>
+ <lne id="196" begin="11" end="12"/>
+ <lne id="197" begin="9" end="14"/>
+ <lne id="198" begin="17" end="17"/>
+ <lne id="199" begin="17" end="18"/>
+ <lne id="200" begin="15" end="20"/>
+ <lne id="201" begin="23" end="23"/>
+ <lne id="202" begin="23" end="24"/>
+ <lne id="203" begin="21" end="26"/>
+ <lne id="204" begin="29" end="29"/>
+ <lne id="205" begin="29" end="30"/>
+ <lne id="206" begin="27" end="32"/>
+ <lne id="207" begin="35" end="35"/>
+ <lne id="208" begin="35" end="36"/>
+ <lne id="209" begin="33" end="38"/>
+ <lne id="210" begin="41" end="41"/>
+ <lne id="211" begin="41" end="42"/>
+ <lne id="212" begin="39" end="44"/>
+ <lne id="213" begin="47" end="47"/>
+ <lne id="214" begin="47" end="48"/>
+ <lne id="215" begin="45" end="50"/>
+ <lne id="181" begin="8" end="51"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="121" begin="7" end="51"/>
+ <lve slot="2" name="33" begin="3" end="51"/>
+ <lve slot="0" name="17" begin="0" end="51"/>
+ <lve slot="1" name="168" begin="0" end="51"/>
+ </localvariabletable>
+ </operation>
+ <operation name="216">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="58"/>
+ <push arg="115"/>
+ <findme/>
+ <push arg="116"/>
+ <call arg="117"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="118"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="58"/>
+ <call arg="119"/>
+ <dup/>
+ <push arg="33"/>
+ <load arg="19"/>
+ <call arg="120"/>
+ <dup/>
+ <push arg="121"/>
+ <push arg="217"/>
+ <push arg="123"/>
+ <new/>
+ <call arg="124"/>
+ <pusht/>
+ <call arg="125"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="218" begin="21" end="23"/>
+ <lne id="219" begin="19" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="33" begin="6" end="26"/>
+ <lve slot="0" name="17" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="220">
+ <context type="6"/>
+ <parameters>
+ <parameter name="19" type="129"/>
+ </parameters>
+ <code>
+ <load arg="19"/>
+ <push arg="33"/>
+ <call arg="130"/>
+ <store arg="29"/>
+ <load arg="19"/>
+ <push arg="121"/>
+ <call arg="131"/>
+ <store arg="132"/>
+ <load arg="132"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="38"/>
+ <call arg="30"/>
+ <set arg="38"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="221"/>
+ <call arg="30"/>
+ <set arg="222"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="223"/>
+ <call arg="30"/>
+ <set arg="224"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="225"/>
+ <call arg="30"/>
+ <set arg="226"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="227"/>
+ <call arg="30"/>
+ <set arg="228"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="229" begin="11" end="11"/>
+ <lne id="230" begin="11" end="12"/>
+ <lne id="231" begin="9" end="14"/>
+ <lne id="232" begin="17" end="17"/>
+ <lne id="233" begin="17" end="18"/>
+ <lne id="234" begin="15" end="20"/>
+ <lne id="235" begin="23" end="23"/>
+ <lne id="236" begin="23" end="24"/>
+ <lne id="237" begin="21" end="26"/>
+ <lne id="238" begin="29" end="29"/>
+ <lne id="239" begin="29" end="30"/>
+ <lne id="240" begin="27" end="32"/>
+ <lne id="241" begin="35" end="35"/>
+ <lne id="242" begin="35" end="36"/>
+ <lne id="243" begin="33" end="38"/>
+ <lne id="219" begin="8" end="39"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="121" begin="7" end="39"/>
+ <lve slot="2" name="33" begin="3" end="39"/>
+ <lve slot="0" name="17" begin="0" end="39"/>
+ <lve slot="1" name="168" begin="0" end="39"/>
+ </localvariabletable>
+ </operation>
+ <operation name="244">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="245"/>
+ <push arg="115"/>
+ <findme/>
+ <push arg="116"/>
+ <call arg="117"/>
+ <iterate/>
+ <store arg="19"/>
+ <load arg="19"/>
+ <get arg="183"/>
+ <push arg="170"/>
+ <push arg="115"/>
+ <findme/>
+ <call arg="136"/>
+ <load arg="19"/>
+ <get arg="183"/>
+ <push arg="64"/>
+ <push arg="115"/>
+ <findme/>
+ <call arg="136"/>
+ <call arg="246"/>
+ <call arg="80"/>
+ <if arg="247"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="118"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="60"/>
+ <call arg="119"/>
+ <dup/>
+ <push arg="33"/>
+ <load arg="19"/>
+ <call arg="120"/>
+ <dup/>
+ <push arg="121"/>
+ <push arg="248"/>
+ <push arg="123"/>
+ <new/>
+ <call arg="124"/>
+ <pusht/>
+ <call arg="125"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="249" begin="7" end="7"/>
+ <lne id="250" begin="7" end="8"/>
+ <lne id="251" begin="9" end="11"/>
+ <lne id="252" begin="7" end="12"/>
+ <lne id="253" begin="13" end="13"/>
+ <lne id="254" begin="13" end="14"/>
+ <lne id="255" begin="15" end="17"/>
+ <lne id="256" begin="13" end="18"/>
+ <lne id="257" begin="7" end="19"/>
+ <lne id="258" begin="36" end="38"/>
+ <lne id="259" begin="34" end="39"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="33" begin="6" end="41"/>
+ <lve slot="0" name="17" begin="0" end="42"/>
+ </localvariabletable>
+ </operation>
+ <operation name="260">
+ <context type="6"/>
+ <parameters>
+ <parameter name="19" type="129"/>
+ </parameters>
+ <code>
+ <load arg="19"/>
+ <push arg="33"/>
+ <call arg="130"/>
+ <store arg="29"/>
+ <load arg="19"/>
+ <push arg="121"/>
+ <call arg="131"/>
+ <store arg="132"/>
+ <load arg="132"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="38"/>
+ <call arg="30"/>
+ <set arg="38"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="183"/>
+ <call arg="30"/>
+ <set arg="184"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="185"/>
+ <call arg="30"/>
+ <set arg="186"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="187"/>
+ <call arg="30"/>
+ <set arg="188"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="189"/>
+ <call arg="30"/>
+ <set arg="190"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="261"/>
+ <call arg="30"/>
+ <set arg="262"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="263" begin="11" end="11"/>
+ <lne id="264" begin="11" end="12"/>
+ <lne id="265" begin="9" end="14"/>
+ <lne id="266" begin="17" end="17"/>
+ <lne id="267" begin="17" end="18"/>
+ <lne id="268" begin="15" end="20"/>
+ <lne id="269" begin="23" end="23"/>
+ <lne id="270" begin="23" end="24"/>
+ <lne id="271" begin="21" end="26"/>
+ <lne id="272" begin="29" end="29"/>
+ <lne id="273" begin="29" end="30"/>
+ <lne id="274" begin="27" end="32"/>
+ <lne id="275" begin="35" end="35"/>
+ <lne id="276" begin="35" end="36"/>
+ <lne id="277" begin="33" end="38"/>
+ <lne id="278" begin="41" end="41"/>
+ <lne id="279" begin="41" end="42"/>
+ <lne id="280" begin="39" end="44"/>
+ <lne id="259" begin="8" end="45"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="121" begin="7" end="45"/>
+ <lve slot="2" name="33" begin="3" end="45"/>
+ <lve slot="0" name="17" begin="0" end="45"/>
+ <lve slot="1" name="168" begin="0" end="45"/>
+ </localvariabletable>
+ </operation>
+ <operation name="281">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="245"/>
+ <push arg="115"/>
+ <findme/>
+ <push arg="116"/>
+ <call arg="117"/>
+ <iterate/>
+ <store arg="19"/>
+ <load arg="19"/>
+ <get arg="183"/>
+ <push arg="170"/>
+ <push arg="115"/>
+ <findme/>
+ <call arg="136"/>
+ <load arg="19"/>
+ <get arg="183"/>
+ <push arg="64"/>
+ <push arg="115"/>
+ <findme/>
+ <call arg="136"/>
+ <call arg="246"/>
+ <call arg="282"/>
+ <call arg="80"/>
+ <if arg="283"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="118"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="62"/>
+ <call arg="119"/>
+ <dup/>
+ <push arg="33"/>
+ <load arg="19"/>
+ <call arg="120"/>
+ <dup/>
+ <push arg="121"/>
+ <push arg="179"/>
+ <push arg="123"/>
+ <new/>
+ <call arg="124"/>
+ <pusht/>
+ <call arg="125"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="284" begin="7" end="7"/>
+ <lne id="285" begin="7" end="8"/>
+ <lne id="286" begin="9" end="11"/>
+ <lne id="287" begin="7" end="12"/>
+ <lne id="288" begin="13" end="13"/>
+ <lne id="289" begin="13" end="14"/>
+ <lne id="290" begin="15" end="17"/>
+ <lne id="291" begin="13" end="18"/>
+ <lne id="292" begin="7" end="19"/>
+ <lne id="293" begin="7" end="20"/>
+ <lne id="294" begin="37" end="39"/>
+ <lne id="295" begin="35" end="40"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="33" begin="6" end="42"/>
+ <lve slot="0" name="17" begin="0" end="43"/>
+ </localvariabletable>
+ </operation>
+ <operation name="296">
+ <context type="6"/>
+ <parameters>
+ <parameter name="19" type="129"/>
+ </parameters>
+ <code>
+ <load arg="19"/>
+ <push arg="33"/>
+ <call arg="130"/>
+ <store arg="29"/>
+ <load arg="19"/>
+ <push arg="121"/>
+ <call arg="131"/>
+ <store arg="132"/>
+ <load arg="132"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="38"/>
+ <call arg="30"/>
+ <set arg="38"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="183"/>
+ <call arg="30"/>
+ <set arg="184"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="185"/>
+ <call arg="30"/>
+ <set arg="186"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="187"/>
+ <call arg="30"/>
+ <set arg="188"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="189"/>
+ <call arg="30"/>
+ <set arg="190"/>
+ <dup/>
+ <getasm/>
+ <pusht/>
+ <call arg="30"/>
+ <set arg="194"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="297" begin="11" end="11"/>
+ <lne id="298" begin="11" end="12"/>
+ <lne id="299" begin="9" end="14"/>
+ <lne id="300" begin="17" end="17"/>
+ <lne id="301" begin="17" end="18"/>
+ <lne id="302" begin="15" end="20"/>
+ <lne id="303" begin="23" end="23"/>
+ <lne id="304" begin="23" end="24"/>
+ <lne id="305" begin="21" end="26"/>
+ <lne id="306" begin="29" end="29"/>
+ <lne id="307" begin="29" end="30"/>
+ <lne id="308" begin="27" end="32"/>
+ <lne id="309" begin="35" end="35"/>
+ <lne id="310" begin="35" end="36"/>
+ <lne id="311" begin="33" end="38"/>
+ <lne id="312" begin="41" end="41"/>
+ <lne id="313" begin="39" end="43"/>
+ <lne id="295" begin="8" end="44"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="121" begin="7" end="44"/>
+ <lve slot="2" name="33" begin="3" end="44"/>
+ <lve slot="0" name="17" begin="0" end="44"/>
+ <lve slot="1" name="168" begin="0" end="44"/>
+ </localvariabletable>
+ </operation>
+ <operation name="314">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="64"/>
+ <push arg="115"/>
+ <findme/>
+ <push arg="116"/>
+ <call arg="117"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="118"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="64"/>
+ <call arg="119"/>
+ <dup/>
+ <push arg="33"/>
+ <load arg="19"/>
+ <call arg="120"/>
+ <dup/>
+ <push arg="121"/>
+ <push arg="315"/>
+ <push arg="123"/>
+ <new/>
+ <call arg="124"/>
+ <pusht/>
+ <call arg="125"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="316" begin="21" end="23"/>
+ <lne id="317" begin="19" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="33" begin="6" end="26"/>
+ <lve slot="0" name="17" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="318">
+ <context type="6"/>
+ <parameters>
+ <parameter name="19" type="129"/>
+ </parameters>
+ <code>
+ <load arg="19"/>
+ <push arg="33"/>
+ <call arg="130"/>
+ <store arg="29"/>
+ <load arg="19"/>
+ <push arg="121"/>
+ <call arg="131"/>
+ <store arg="132"/>
+ <load arg="132"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="38"/>
+ <call arg="30"/>
+ <set arg="38"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="319"/>
+ <call arg="30"/>
+ <set arg="320"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="321" begin="11" end="11"/>
+ <lne id="322" begin="11" end="12"/>
+ <lne id="323" begin="9" end="14"/>
+ <lne id="324" begin="17" end="17"/>
+ <lne id="325" begin="17" end="18"/>
+ <lne id="326" begin="15" end="20"/>
+ <lne id="317" begin="8" end="21"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="121" begin="7" end="21"/>
+ <lve slot="2" name="33" begin="3" end="21"/>
+ <lve slot="0" name="17" begin="0" end="21"/>
+ <lve slot="1" name="168" begin="0" end="21"/>
+ </localvariabletable>
+ </operation>
+ <operation name="327">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="66"/>
+ <push arg="115"/>
+ <findme/>
+ <push arg="116"/>
+ <call arg="117"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="118"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="66"/>
+ <call arg="119"/>
+ <dup/>
+ <push arg="33"/>
+ <load arg="19"/>
+ <call arg="120"/>
+ <dup/>
+ <push arg="121"/>
+ <push arg="328"/>
+ <push arg="123"/>
+ <new/>
+ <call arg="124"/>
+ <pusht/>
+ <call arg="125"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="329" begin="21" end="23"/>
+ <lne id="330" begin="19" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="33" begin="6" end="26"/>
+ <lve slot="0" name="17" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="331">
+ <context type="6"/>
+ <parameters>
+ <parameter name="19" type="129"/>
+ </parameters>
+ <code>
+ <load arg="19"/>
+ <push arg="33"/>
+ <call arg="130"/>
+ <store arg="29"/>
+ <load arg="19"/>
+ <push arg="121"/>
+ <call arg="131"/>
+ <store arg="132"/>
+ <load arg="132"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="38"/>
+ <call arg="30"/>
+ <set arg="38"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="332"/>
+ <get arg="319"/>
+ <load arg="29"/>
+ <call arg="333"/>
+ <call arg="30"/>
+ <set arg="34"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="334" begin="11" end="11"/>
+ <lne id="335" begin="11" end="12"/>
+ <lne id="336" begin="9" end="14"/>
+ <lne id="337" begin="17" end="17"/>
+ <lne id="338" begin="17" end="18"/>
+ <lne id="339" begin="17" end="19"/>
+ <lne id="340" begin="20" end="20"/>
+ <lne id="341" begin="17" end="21"/>
+ <lne id="342" begin="15" end="23"/>
+ <lne id="330" begin="8" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="121" begin="7" end="24"/>
+ <lve slot="2" name="33" begin="3" end="24"/>
+ <lve slot="0" name="17" begin="0" end="24"/>
+ <lve slot="1" name="168" begin="0" end="24"/>
+ </localvariabletable>
+ </operation>
+ <operation name="343">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="68"/>
+ <push arg="115"/>
+ <findme/>
+ <push arg="116"/>
+ <call arg="117"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="118"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="68"/>
+ <call arg="119"/>
+ <dup/>
+ <push arg="344"/>
+ <load arg="19"/>
+ <call arg="120"/>
+ <dup/>
+ <push arg="345"/>
+ <push arg="346"/>
+ <push arg="123"/>
+ <new/>
+ <call arg="124"/>
+ <pusht/>
+ <call arg="125"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="347" begin="21" end="23"/>
+ <lne id="348" begin="19" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="344" begin="6" end="26"/>
+ <lve slot="0" name="17" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="349">
+ <context type="6"/>
+ <parameters>
+ <parameter name="19" type="129"/>
+ </parameters>
+ <code>
+ <load arg="19"/>
+ <push arg="344"/>
+ <call arg="130"/>
+ <store arg="29"/>
+ <load arg="19"/>
+ <push arg="345"/>
+ <call arg="131"/>
+ <store arg="132"/>
+ <load arg="132"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="38"/>
+ <call arg="30"/>
+ <set arg="38"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="350"/>
+ <call arg="30"/>
+ <set arg="351"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="183"/>
+ <call arg="30"/>
+ <set arg="184"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="352" begin="11" end="11"/>
+ <lne id="353" begin="11" end="12"/>
+ <lne id="354" begin="9" end="14"/>
+ <lne id="355" begin="17" end="17"/>
+ <lne id="356" begin="17" end="18"/>
+ <lne id="357" begin="15" end="20"/>
+ <lne id="358" begin="23" end="23"/>
+ <lne id="359" begin="23" end="24"/>
+ <lne id="360" begin="21" end="26"/>
+ <lne id="348" begin="8" end="27"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="345" begin="7" end="27"/>
+ <lve slot="2" name="344" begin="3" end="27"/>
+ <lve slot="0" name="17" begin="0" end="27"/>
+ <lve slot="1" name="168" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="361">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="70"/>
+ <push arg="115"/>
+ <findme/>
+ <push arg="116"/>
+ <call arg="117"/>
+ <iterate/>
+ <store arg="19"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="118"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="70"/>
+ <call arg="119"/>
+ <dup/>
+ <push arg="362"/>
+ <load arg="19"/>
+ <call arg="120"/>
+ <dup/>
+ <push arg="363"/>
+ <push arg="364"/>
+ <push arg="123"/>
+ <new/>
+ <call arg="124"/>
+ <pusht/>
+ <call arg="125"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="365" begin="21" end="23"/>
+ <lne id="366" begin="19" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="362" begin="6" end="26"/>
+ <lve slot="0" name="17" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="367">
+ <context type="6"/>
+ <parameters>
+ <parameter name="19" type="129"/>
+ </parameters>
+ <code>
+ <load arg="19"/>
+ <push arg="362"/>
+ <call arg="130"/>
+ <store arg="29"/>
+ <load arg="19"/>
+ <push arg="363"/>
+ <call arg="131"/>
+ <store arg="132"/>
+ <load arg="132"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="38"/>
+ <call arg="30"/>
+ <set arg="38"/>
+ <dup/>
+ <getasm/>
+ <load arg="29"/>
+ <get arg="183"/>
+ <call arg="30"/>
+ <set arg="184"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="368" begin="11" end="11"/>
+ <lne id="369" begin="11" end="12"/>
+ <lne id="370" begin="9" end="14"/>
+ <lne id="371" begin="17" end="17"/>
+ <lne id="372" begin="17" end="18"/>
+ <lne id="373" begin="15" end="20"/>
+ <lne id="366" begin="8" end="21"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="363" begin="7" end="21"/>
+ <lve slot="2" name="362" begin="3" end="21"/>
+ <lve slot="0" name="17" begin="0" end="21"/>
+ <lve slot="1" name="168" begin="0" end="21"/>
+ </localvariabletable>
+ </operation>
+</asm>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Editor/KM3-Editor.xmi b/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Editor/KM3-Editor.xmi
new file mode 100644
index 0000000..60fb922
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Editor/KM3-Editor.xmi
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<Editor xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns="Editor" location="1:1-92:2" extension="km3">
+ <block location="2:9-7:10" type="commentsline" blockbegin="--" blockend="">
+ <format location="3:17-6:18">
+ <color location="4:25-4:41" red="0" green="130" blue="0"/>
+ <font location="5:25-5:51" font="times" bold="false" italic="true"/>
+ </format>
+ </block>
+ <block location="8:9-13:10" type="string" blockbegin="&quot;" blockend="&quot;">
+ <format location="9:17-12:18">
+ <color location="10:25-10:41" red="0" green="0" blue="255"/>
+ <font location="11:25-11:52" font="times" bold="false" italic="false"/>
+ </format>
+ </block>
+ <group location="14:9-21:10" type="indent">
+ <indent location="15:17-15:29" retrait="+1"/>
+ <format location="16:17-19:18">
+ <color location="17:25-17:39" red="0" green="0" blue="0"/>
+ <font location="18:25-18:52" font="times" bold="false" italic="false"/>
+ </format>
+ <element location="20:17-20:29" element="{"/>
+ </group>
+ <group location="22:9-29:10" type="unindent">
+ <indent location="23:17-23:29" retrait="-1"/>
+ <format location="24:17-27:18">
+ <color location="25:25-25:39" red="0" green="0" blue="0"/>
+ <font location="26:25-26:52" font="times" bold="false" italic="false"/>
+ </format>
+ <element location="28:17-28:29" element="}"/>
+ </group>
+ <group location="30:9-38:10" type="constants">
+ <indent location="31:17-31:28" retrait="0"/>
+ <format location="32:17-35:18">
+ <color location="33:25-33:43" red="24" green="159" blue="71"/>
+ <font location="34:25-34:52" font="times" bold="false" italic="false"/>
+ </format>
+ <element location="36:17-36:32" element="true"/>
+ <element location="37:17-37:33" element="false"/>
+ </group>
+ <group location="39:9-48:10" type="type">
+ <indent location="40:17-40:28" retrait="0"/>
+ <format location="41:17-44:18">
+ <color location="42:25-42:42" red="42" green="0" blue="255"/>
+ <font location="43:25-43:51" font="times" bold="true" italic="false"/>
+ </format>
+ <element location="45:17-45:35" element="Boolean"/>
+ <element location="46:17-46:35" element="Integer"/>
+ <element location="47:17-47:34" element="String"/>
+ </group>
+ <group location="49:5-70:10" type="keyword">
+ <indent location="50:17-50:28" retrait="0"/>
+ <format location="51:17-54:18">
+ <color location="52:25-52:42" red="127" green="0" blue="85"/>
+ <font location="53:25-53:51" font="times" bold="true" italic="false"/>
+ </format>
+ <element location="55:17-55:36" element="abstract"/>
+ <element location="56:17-56:37" element="attribute"/>
+ <element location="57:17-57:33" element="class"/>
+ <element location="58:17-58:37" element="container"/>
+ <element location="59:17-59:36" element="datatype"/>
+ <element location="60:17-60:35" element="default"/>
+ <element location="61:17-61:35" element="extends"/>
+ <element location="62:17-62:38" element="oppositeOf"/>
+ <element location="63:17-63:34" element="orders"/>
+ <element location="64:17-64:35" element="package"/>
+ <element location="65:17-65:37" element="reference"/>
+ <element location="66:17-66:35" element="subsets"/>
+ <element location="67:17-67:35" element="ordered"/>
+ <element location="68:17-68:39" element="enumeration"/>
+ <element location="69:17-69:35" element="literal"/>
+ <element location="69:17-69:35" element="unique"/>
+ </group>
+ <group location="71:9-83:10" type="symbol">
+ <indent location="72:17-72:28" retrait="0"/>
+ <format location="73:17-76:18">
+ <color location="74:25-74:42" red="127" green="0" blue="85"/>
+ <font location="75:25-75:51" font="times" bold="true" italic="false"/>
+ </format>
+ <element location="77:17-77:29" element=":"/>
+ <element location="78:17-78:29" element="["/>
+ <element location="79:17-79:29" element="]"/>
+ <element location="80:17-80:29" element=";"/>
+ <element location="81:17-81:29" element="{"/>
+ <element location="82:17-82:29" element="}"/>
+ </group>
+ <group location="84:9-91:10" type="star">
+ <indent location="85:17-85:28" retrait="0"/>
+ <format location="86:17-89:18">
+ <color location="87:25-87:41" red="255" green="0" blue="0"/>
+ <font location="88:25-88:51" font="times" bold="true" italic="false"/>
+ </format>
+ <element location="90:17-90:29" element="*"/>
+ </group>
+</Editor> \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Helpers/KM3Helpers.asm b/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Helpers/KM3Helpers.asm
new file mode 100644
index 0000000..8e8a7e6
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Helpers/KM3Helpers.asm
@@ -0,0 +1,214 @@
+<?xml version = '1.0' encoding = 'ISO-8859-1' ?>
+<asm name="0">
+ <cp>
+ <constant value="KM3Helpers"/>
+ <constant value="main"/>
+ <constant value="A"/>
+ <constant value="Class"/>
+ <constant value="KM3"/>
+ <constant value="allStructuralFeatures"/>
+ <constant value="__initallStructuralFeatures"/>
+ <constant value="J.registerHelperAttribute(SS):V"/>
+ <constant value="allSupertypes"/>
+ <constant value="__initallSupertypes"/>
+ <constant value="4:16-4:25"/>
+ <constant value="12:16-12:25"/>
+ <constant value="self"/>
+ <constant value="MKM3!Class;"/>
+ <constant value="0"/>
+ <constant value="structuralFeatures"/>
+ <constant value="1"/>
+ <constant value="supertypes"/>
+ <constant value="2"/>
+ <constant value="J.union(J):J"/>
+ <constant value="5:72-5:76"/>
+ <constant value="5:72-5:95"/>
+ <constant value="5:2-5:6"/>
+ <constant value="5:2-5:17"/>
+ <constant value="6:3-6:6"/>
+ <constant value="6:14-6:15"/>
+ <constant value="6:14-6:37"/>
+ <constant value="6:3-6:38"/>
+ <constant value="5:2-7:3"/>
+ <constant value="e"/>
+ <constant value="acc"/>
+ <constant value="lookupElementExtended"/>
+ <constant value="J"/>
+ <constant value="Sequence"/>
+ <constant value="#native"/>
+ <constant value="name"/>
+ <constant value="J.=(J):J"/>
+ <constant value="B.not():B"/>
+ <constant value="15"/>
+ <constant value="CJ.including(J):CJ"/>
+ <constant value="J.asSequence():J"/>
+ <constant value="J.first():J"/>
+ <constant value="10:2-10:6"/>
+ <constant value="10:2-10:28"/>
+ <constant value="10:41-10:42"/>
+ <constant value="10:41-10:47"/>
+ <constant value="10:50-10:54"/>
+ <constant value="10:41-10:54"/>
+ <constant value="10:2-10:55"/>
+ <constant value="10:2-10:69"/>
+ <constant value="10:2-10:78"/>
+ <constant value="OrderedSet"/>
+ <constant value="J.including(J):J"/>
+ <constant value="13:60-13:73"/>
+ <constant value="13:2-13:6"/>
+ <constant value="13:2-13:17"/>
+ <constant value="14:3-14:6"/>
+ <constant value="14:18-14:19"/>
+ <constant value="14:3-14:20"/>
+ <constant value="14:28-14:29"/>
+ <constant value="14:28-14:43"/>
+ <constant value="14:3-14:44"/>
+ <constant value="13:2-15:3"/>
+ </cp>
+ <operation name="1">
+ <context type="2"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="3"/>
+ <push arg="4"/>
+ <findme/>
+ <push arg="5"/>
+ <push arg="6"/>
+ <call arg="7"/>
+ <push arg="3"/>
+ <push arg="4"/>
+ <findme/>
+ <push arg="8"/>
+ <push arg="9"/>
+ <call arg="7"/>
+ </code>
+ <linenumbertable>
+ <lne id="10" begin="0" end="2"/>
+ <lne id="11" begin="6" end="8"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="12" begin="0" end="11"/>
+ </localvariabletable>
+ </operation>
+ <operation name="6">
+ <context type="13"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="14"/>
+ <get arg="15"/>
+ <store arg="16"/>
+ <load arg="14"/>
+ <get arg="17"/>
+ <iterate/>
+ <store arg="18"/>
+ <load arg="16"/>
+ <load arg="18"/>
+ <get arg="5"/>
+ <call arg="19"/>
+ <store arg="16"/>
+ <enditerate/>
+ <load arg="16"/>
+ </code>
+ <linenumbertable>
+ <lne id="20" begin="0" end="0"/>
+ <lne id="21" begin="0" end="1"/>
+ <lne id="22" begin="3" end="3"/>
+ <lne id="23" begin="3" end="4"/>
+ <lne id="24" begin="7" end="7"/>
+ <lne id="25" begin="8" end="8"/>
+ <lne id="26" begin="8" end="9"/>
+ <lne id="27" begin="7" end="10"/>
+ <lne id="28" begin="0" end="13"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="29" begin="6" end="11"/>
+ <lve slot="1" name="30" begin="2" end="13"/>
+ <lve slot="0" name="12" begin="0" end="13"/>
+ </localvariabletable>
+ </operation>
+ <operation name="31">
+ <context type="13"/>
+ <parameters>
+ <parameter name="16" type="32"/>
+ </parameters>
+ <code>
+ <push arg="33"/>
+ <push arg="34"/>
+ <new/>
+ <load arg="14"/>
+ <get arg="5"/>
+ <iterate/>
+ <store arg="18"/>
+ <load arg="18"/>
+ <get arg="35"/>
+ <load arg="16"/>
+ <call arg="36"/>
+ <call arg="37"/>
+ <if arg="38"/>
+ <load arg="18"/>
+ <call arg="39"/>
+ <enditerate/>
+ <call arg="40"/>
+ <call arg="41"/>
+ </code>
+ <linenumbertable>
+ <lne id="42" begin="3" end="3"/>
+ <lne id="43" begin="3" end="4"/>
+ <lne id="44" begin="7" end="7"/>
+ <lne id="45" begin="7" end="8"/>
+ <lne id="46" begin="9" end="9"/>
+ <lne id="47" begin="7" end="10"/>
+ <lne id="48" begin="0" end="15"/>
+ <lne id="49" begin="0" end="16"/>
+ <lne id="50" begin="0" end="17"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="29" begin="6" end="14"/>
+ <lve slot="0" name="12" begin="0" end="17"/>
+ <lve slot="1" name="35" begin="0" end="17"/>
+ </localvariabletable>
+ </operation>
+ <operation name="9">
+ <context type="13"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="51"/>
+ <push arg="34"/>
+ <new/>
+ <store arg="16"/>
+ <load arg="14"/>
+ <get arg="17"/>
+ <iterate/>
+ <store arg="18"/>
+ <load arg="16"/>
+ <load arg="18"/>
+ <call arg="52"/>
+ <load arg="18"/>
+ <get arg="8"/>
+ <call arg="19"/>
+ <store arg="16"/>
+ <enditerate/>
+ <load arg="16"/>
+ </code>
+ <linenumbertable>
+ <lne id="53" begin="0" end="2"/>
+ <lne id="54" begin="4" end="4"/>
+ <lne id="55" begin="4" end="5"/>
+ <lne id="56" begin="8" end="8"/>
+ <lne id="57" begin="9" end="9"/>
+ <lne id="58" begin="8" end="10"/>
+ <lne id="59" begin="11" end="11"/>
+ <lne id="60" begin="11" end="12"/>
+ <lne id="61" begin="8" end="13"/>
+ <lne id="62" begin="0" end="16"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="29" begin="7" end="14"/>
+ <lve slot="1" name="30" begin="3" end="16"/>
+ <lve slot="0" name="12" begin="0" end="16"/>
+ </localvariabletable>
+ </operation>
+</asm>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Metamodel/KM3.ecore b/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Metamodel/KM3.ecore
new file mode 100644
index 0000000..615c5e6
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Metamodel/KM3.ecore
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore">
+ <ecore:EPackage name="KM3" nsURI="http://www.eclipse.org/gmt/2005/KM3" nsPrefix="km3">
+ <eClassifiers xsi:type="ecore:EClass" name="LocatedElement" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="location" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="commentsBefore" unique="false" upperBound="-1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="commentsAfter" unique="false" upperBound="-1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ModelElement" abstract="true" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="package" ordered="false" lowerBound="1" eType="/0/Package" eOpposite="/0/Package/contents"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Classifier" eSuperTypes="/0/ModelElement"/>
+ <eClassifiers xsi:type="ecore:EClass" name="DataType" eSuperTypes="/0/Classifier"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Enumeration" eSuperTypes="/0/Classifier">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="literals" upperBound="-1" eType="/0/EnumLiteral" containment="true" eOpposite="/0/EnumLiteral/enum"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EnumLiteral" eSuperTypes="/0/ModelElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="enum" ordered="false" lowerBound="1" eType="/0/Enumeration" eOpposite="/0/Enumeration/literals"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Class" eSuperTypes="/0/Classifier">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isAbstract" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="supertypes" ordered="false" upperBound="-1" eType="/0/Class"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="structuralFeatures" upperBound="-1" eType="/0/StructuralFeature" containment="true" eOpposite="/0/StructuralFeature/owner"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operations" upperBound="-1" eType="/0/Operation" containment="true" eOpposite="/0/Operation/owner"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="TypedElement" eSuperTypes="/0/ModelElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lower" ordered="false" unique="false" lowerBound="1" eType="/1/Integer"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="upper" ordered="false" unique="false" lowerBound="1" eType="/1/Integer"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isOrdered" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isUnique" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="type" ordered="false" lowerBound="1" eType="/0/Classifier"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StructuralFeature" eSuperTypes="/0/TypedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" ordered="false" lowerBound="1" eType="/0/Class" eOpposite="/0/Class/structuralFeatures"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="subsetOf" ordered="false" upperBound="-1" eType="/0/StructuralFeature" eOpposite="/0/StructuralFeature/derivedFrom"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="derivedFrom" ordered="false" upperBound="-1" eType="/0/StructuralFeature" eOpposite="/0/StructuralFeature/subsetOf"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Attribute" eSuperTypes="/0/StructuralFeature"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Reference" eSuperTypes="/0/StructuralFeature">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isContainer" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="opposite" ordered="false" eType="/0/Reference"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Operation" eSuperTypes="/0/TypedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" ordered="false" lowerBound="1" eType="/0/Class" eOpposite="/0/Class/operations"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1" eType="/0/Parameter" containment="true" eOpposite="/0/Parameter/owner"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="/0/TypedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="owner" ordered="false" lowerBound="1" eType="/0/Operation" eOpposite="/0/Operation/parameters"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Package" eSuperTypes="/0/ModelElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1" eType="/0/ModelElement" containment="true" eOpposite="/0/ModelElement/package"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="metamodel" ordered="false" lowerBound="1" eType="/0/Metamodel" eOpposite="/0/Metamodel/contents"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Metamodel" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="contents" upperBound="-1" eType="/0/Package" containment="true" eOpposite="/0/Package/metamodel"/>
+ </eClassifiers>
+ </ecore:EPackage>
+ <ecore:EPackage name="PrimitiveTypes" nsURI="http://www.eclipse.org/gmt/2005/KM3-PrimitiveTypes" nsPrefix="pt">
+ <eClassifiers xsi:type="ecore:EDataType" name="Boolean" instanceClassName="boolean"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="Integer" instanceClassName="int"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String"/>
+ </ecore:EPackage>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Outline/KM3-Outline.xmi b/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Outline/KM3-Outline.xmi
new file mode 100644
index 0000000..fdc6722
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Outline/KM3-Outline.xmi
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<Outline xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns="Outline" location="1:1-66:2" extension="km3">
+ <nodes location="2:9-8:10" name="Metamodel" icon="km3logo.png">
+ <label location="3:17-6:18" label="Metamodel"/>
+ <mapping location="7:17-7:37" mapString="Metamodel"/>
+ </nodes>
+ <nodes location="9:9-15:10" name="DataType" icon="attribut.gif">
+ <label location="10:17-13:18" label="DataType">
+ <labelSuite location="11:25-11:46" label=" : "/>
+ <labelSuite location="12:25-12:47" methodCall="name"/>
+ </label>
+ <mapping location="14:17-14:36" mapString="DataType"/>
+ </nodes>
+ <nodes location="16:9-22:10" name="Class" icon="class.png">
+ <label location="17:17-20:18" label="Class">
+ <labelSuite location="25:25-25:46" label=" : "/>
+ <labelSuite location="26:25-26:47" methodCall="name"/>
+ </label>
+ <mapping location="21:17-21:33" mapString="Class"/>
+ </nodes>
+ <nodes location="23:9-29:10" name="Package" icon="package.jpg">
+ <label location="24:17-27:18" label="Package">
+ <labelSuite location="25:25-25:46" label=" : "/>
+ <labelSuite location="26:25-26:47" methodCall="name"/>
+ </label>
+ <mapping location="28:17-28:35" mapString="Package"/>
+ </nodes>
+ <nodes location="30:9-36:10" name="Attribute" icon="attribute.gif">
+ <label location="31:17-34:18" label="Attribute">
+ <labelSuite location="32:25-32:46" label=" : "/>
+ <labelSuite location="33:25-33:47" methodCall="name"/>
+ </label>
+ <mapping location="35:17-35:37" mapString="Attribute"/>
+ </nodes>
+ <nodes location="37:9-43:10" name="Reference" icon="reference.png">
+ <label location="38:17-41:18" label="Reference" methodCall="">
+ <labelSuite location="39:25-39:46" label=" : "/>
+ <labelSuite location="40:25-40:47" methodCall="name"/>
+ </label>
+ <mapping location="42:17-42:37" mapString="Reference"/>
+ </nodes>
+ <nodes location="44:9-50:10" name="Parameter" icon="attribut.gif">
+ <label location="45:17-48:18" label="Parameter">
+ <labelSuite location="46:25-46:46" label=" : "/>
+ <labelSuite location="47:25-47:47" methodCall="name"/>
+ </label>
+ <mapping location="49:17-49:37" mapString="Parameter"/>
+ </nodes>
+ <nodes location="51:9-57:10" name="Operation" icon="operation.png">
+ <label location="52:17-55:18" label="Operation">
+ <labelSuite location="53:25-53:46" label=" : "/>
+ <labelSuite location="54:25-54:47" methodCall="name"/>
+ </label>
+ <mapping location="56:17-56:37" mapString="Operation"/>
+ </nodes>
+ <nodes location="58:9-64:10" name="Enumeration" icon="attribut.gif">
+ <label location="59:17-62:18" label="Enumeration">
+ <labelSuite location="60:25-60:46" label=" : "/>
+ <labelSuite location="61:25-61:47" methodCall="name"/>
+ </label>
+ <mapping location="63:17-63:39" mapString="Enumeration"/>
+ </nodes>
+ <nodes location="58:9-64:10" name="EnumLiteral" icon="attribut.gif">
+ <label location="59:17-62:18" label="EnumLiteral">
+ <labelSuite location="60:25-60:46" label=" : "/>
+ <labelSuite location="61:25-61:47" methodCall="name"/>
+ </label>
+ <mapping location="63:17-63:39" mapString="EnumLiteral"/>
+ </nodes>
+</Outline> \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Syntax/KM3-TCS.xmi b/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Syntax/KM3-TCS.xmi
new file mode 100644
index 0000000..29c9151
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/Syntax/KM3-TCS.xmi
@@ -0,0 +1,345 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tcs="http://www.eclipse.org/gmt/tcs/2007/TCS">
+ <tcs:ConcreteSyntax location="4:1-264:2" name="KM3" k="4" lexer="&#xA;%options testLiterals = false;&#xA;&#xA;NL&#xA;&#x9;:&#x9;(&#x9;'\r' '\n'&#xA;&#x9;&#x9;|&#x9;'\n' '\r'&#x9;//Improbable&#xA;&#x9;&#x9;|&#x9;'\r'&#xA;&#x9;&#x9;|&#x9;'\n'&#xA;&#x9;&#x9;)&#xA;&#x9;{newline();}&#xA;&#x9;;&#xA;&#xA;WS&#xA;&#x9;:&#x9;(&#x9;' '&#xA;&#x9;&#x9;|&#x9;'\t'&#xA;&#x9;&#x9;)&#xA;&#x9;;&#xA;&#xA;%protected&#xA;DIGIT&#xA;&#x9;:&#x9;'0'..'9'&#xA;&#x9;;&#xA;&#xA;%protected&#xA;ALPHA&#xA;&#x9;:&#x9;'a'..'z'&#xA;&#x9;|&#x9;'A'..'Z'&#xA;&#x9;|&#x9;'_'&#xA;&#x9;//For Unicode compatibility (from 0000 to 00ff)&#xA;&#x9;|&#x9;'\u00C0' .. '\u00D6'&#xA;&#x9;|&#x9;'\u00D8' .. '\u00F6'&#xA;&#x9;|&#x9;'\u00F8' .. '\u00FF'&#xA;&#x9;;&#xA;&#xA;%protected&#xA;SNAME&#xA;%v2&#x9;options {&#xA;%v2&#x9;&#x9;testLiterals = true;&#xA;%v2&#x9;}&#xA;&#x9;:&#x9;(ALPHA) (ALPHA | DIGIT)*&#xA;;&#xA;&#xA;NAME&#xA;&#x9;:&#x9;(&#xA;%v3&#x9;&#x9;&#x9;SNAME&#xA;%v2&#x9;&#x9;&#x9;s:SNAME {if(s.getType() != SNAME) $setType(s.getType());}&#xA;&#x9;&#x9;|&#x9;'&quot;'!&#xA;&#x9;&#x9;&#x9;(&#x9;ESC&#xA;&#x9;&#x9;&#x9;|&#x9;'\n' {newline();}&#xA;&#x9;&#x9;&#x9;|&#x9;~('\\'|'\&quot;'|'\n')&#xA;&#x9;&#x9;&#x9;)*&#xA;&#x9;&#x9;&#x9;'&quot;'!&#xA;%v3&#x9;&#x9;&#x9;{setText(ei.unescapeString(getText(), 1));}&#xA;&#x9;&#x9;)&#xA;&#x9;;&#xA;&#xA;INT&#xA;&#x9;:&#x9;(DIGIT)+&#xA;%v2&#x9;&#x9;(('.' DIGIT)=> '.' (DIGIT)+ {$setType(FLOAT);})?&#xA;&#x9;;&#xA;&#xA;%v3&#x9;FLOAT&#x9;:&#x9;DIGIT+ '.' DIGIT*&#x9;;&#xA;&#xA;%protected&#xA;ESC&#xA;&#x9;:&#x9;'\\'!&#xA;&#x9;&#x9;(&#x9;'n' {%setText(&quot;\n&quot;);}&#xA;&#x9;&#x9;|&#x9;'r' {%setText(&quot;\r&quot;);}&#xA;&#x9;&#x9;|&#x9;'t' {%setText(&quot;\t&quot;);}&#xA;&#x9;&#x9;|&#x9;'b' {%setText(&quot;\b&quot;);}&#xA;&#x9;&#x9;|&#x9;'f' {%setText(&quot;\f&quot;);}&#xA;&#x9;&#x9;|&#x9;'&quot;' {%setText(&quot;\&quot;&quot;);}&#xA;&#x9;&#x9;|&#x9;'\'' {%setText(&quot;\'&quot;);}&#xA;&#x9;&#x9;|&#x9;'\\' {%setText(&quot;\\&quot;);}&#xA;&#x9;&#x9;|&#x9;(&#xA;&#x9;&#x9;&#x9;&#x9;('0'..'3')&#xA;&#x9;&#x9;&#x9;&#x9;(&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;options {&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;warnWhenFollowAmbig = false;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;&#x9;:&#x9;('0'..'7')&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;(&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;options {&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;warnWhenFollowAmbig = false;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;:&#x9;'0'..'7'&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;)?&#xA;&#x9;&#x9;&#x9;&#x9;)?&#xA;&#x9;&#x9;&#x9;|&#x9;('4'..'7')&#xA;&#x9;&#x9;&#x9;&#x9;(&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;options {&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;warnWhenFollowAmbig = false;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;&#x9;&#x9;:&#x9;('0'..'7')&#xA;&#x9;&#x9;&#x9;&#x9;)?&#xA;&#x9;&#x9;&#x9;)&#xA;&#x9;&#x9;&#x9;&#x9;{&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;String s = %getText;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;int i;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;int ret = 0;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;String ans;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;for (i=0; i&lt;s.length(); ++i)&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;ret = ret*8 + s.charAt(i) - '0';&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;ans = String.valueOf((char) ret);&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;%setText(ans);&#xA;&#x9;&#x9;&#x9;&#x9;}&#xA;&#x9;&#x9;)&#xA;&#x9;;&#xA;&#xA;STRING&#xA;&#x9;:&#x9;'\''!&#xA;&#x9;&#x9;(&#x9;ESC&#xA;&#x9;&#x9;|&#x9;'\n' {newline();}&#xA;&#x9;&#x9;|&#x9;~('\\'|'\''|'\n')&#xA;&#x9;&#x9;)*&#xA;&#x9;&#x9;'\''!&#xA;%v3&#x9;&#x9;&#x9;{setText(ei.unescapeString(getText(), 1));}&#xA;&#x9;;&#xA;&#xA;&#x9;">
+ <commentsBefore>-- @date&#x9;&#x9;2007/09/21</commentsBefore>
+ <commentsBefore>-- @description&#x9;This TCS model defines the syntax of the KM3 language.</commentsBefore>
+ <templates xsi:type="tcs:PrimitiveTemplate" location="6:2-7:21" name="identifier" typeName="String" isDefault="true" tokenName="NAME" value="%token%"/>
+ <templates xsi:type="tcs:PrimitiveTemplate" location="9:2-11:50" name="stringSymbol" typeName="String" tokenName="STRING" value="%token%" serializer="''' + %value%.toCString() + '''"/>
+ <templates xsi:type="tcs:PrimitiveTemplate" location="13:2-14:38" name="integerSymbol" typeName="Integer" isDefault="true" tokenName="INT" value="Integer.valueOf(%token%)"/>
+ <templates xsi:type="tcs:PrimitiveTemplate" location="16:2-17:37" name="floatSymbol" typeName="Double" isDefault="true" tokenName="FLOAT" value="Double.valueOf(%token%)"/>
+ <templates xsi:type="tcs:ClassTemplate" location="19:2-21:4" name="Metamodel" isMain="true" isContext="true">
+ <templateSequence location="20:5-20:61">
+ <elements xsi:type="tcs:Block" location="20:5-20:61">
+ <blockSequence location="20:7-20:15">
+ <elements xsi:type="tcs:Property" location="20:7-20:15" name="contents"/>
+ </blockSequence>
+ <blockArgs xsi:type="tcs:IndentIncrBArg" location="20:19-20:33" value="0"/>
+ <blockArgs xsi:type="tcs:NbNLBArg" location="20:35-20:43" value="2"/>
+ <blockArgs xsi:type="tcs:StartNLBArg" location="20:45-20:60"/>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="23:2-23:33" name="ModelElement" isAbstract="true"/>
+ <templates xsi:type="tcs:ClassTemplate" location="25:2-25:44" name="Classifier" isAbstract="true" isAddToContext="true"/>
+ <templates xsi:type="tcs:ClassTemplate" location="27:2-31:4" name="Package">
+ <templateSequence location="28:5-30:20">
+ <elements xsi:type="tcs:LiteralRef" location="28:5-28:14" referredLiteral="/1"/>
+ <elements xsi:type="tcs:Property" location="28:15-28:19" name="name"/>
+ <elements xsi:type="tcs:CustomSeparator" location="28:20-28:42" name="before_block_bracket"/>
+ <elements xsi:type="tcs:LiteralRef" location="28:43-28:46" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Block" location="28:47-30:16">
+ <blockSequence location="29:5-29:13">
+ <elements xsi:type="tcs:Property" location="29:5-29:13" name="contents"/>
+ </blockSequence>
+ <blockArgs xsi:type="tcs:NbNLBArg" location="30:7-30:15" value="2"/>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="30:17-30:20" referredLiteral="/0/@symbols.7"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="33:2-35:4" name="DataType">
+ <templateSequence location="34:5-34:24">
+ <elements xsi:type="tcs:LiteralRef" location="34:5-34:15" referredLiteral="/2"/>
+ <elements xsi:type="tcs:Property" location="34:16-34:20" name="name"/>
+ <elements xsi:type="tcs:LiteralRef" location="34:21-34:24" referredLiteral="/0/@symbols.8"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="37:2-46:4" name="Class" isContext="true">
+ <templateSequence location="38:5-45:9">
+ <elements xsi:type="tcs:ConditionalElement" location="38:5-38:30">
+ <condition xsi:type="tcs:AndExp" location="38:6-38:16">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="38:6-38:16" propertyName="isAbstract"/>
+ </condition>
+ <thenSequence location="38:19-38:29">
+ <elements xsi:type="tcs:LiteralRef" location="38:19-38:29" referredLiteral="/3"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="38:31-38:38" referredLiteral="/4"/>
+ <elements xsi:type="tcs:Property" location="38:39-38:43" name="name"/>
+ <elements xsi:type="tcs:ConditionalElement" location="39:4-41:5">
+ <condition xsi:type="tcs:AndExp" location="39:5-39:26">
+ <expressions xsi:type="tcs:IsDefinedExp" location="39:5-39:26" propertyName="supertypes"/>
+ </condition>
+ <thenSequence location="40:5-40:118">
+ <elements xsi:type="tcs:LiteralRef" location="40:5-40:14" referredLiteral="/5"/>
+ <elements xsi:type="tcs:Property" location="40:15-40:118" name="supertypes">
+ <propertyArgs xsi:type="tcs:RefersToPArg" location="40:26-40:41" propertyName="name"/>
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="40:43-40:82">
+ <separatorSequence location="40:55-40:82">
+ <elements xsi:type="tcs:LiteralRef" location="40:55-40:58" referredLiteral="/0/@symbols.3"/>
+ <elements xsi:type="tcs:CustomSeparator" location="40:59-40:82" name="after_supertypes_coma"/>
+ </separatorSequence>
+ </propertyArgs>
+ <propertyArgs xsi:type="tcs:AutoCreatePArg" location="40:84-40:102" value="never"/>
+ <propertyArgs xsi:type="tcs:ImportContextPArg" location="40:104-40:117"/>
+ </elements>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="42:4-42:7" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Block" location="42:8-45:5">
+ <blockSequence location="43:5-44:15">
+ <elements xsi:type="tcs:Property" location="43:5-43:23" name="structuralFeatures"/>
+ <elements xsi:type="tcs:Property" location="44:5-44:15" name="operations"/>
+ </blockSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="45:6-45:9" referredLiteral="/0/@symbols.7"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="48:2-48:38" name="StructuralFeature" isAbstract="true"/>
+ <templates xsi:type="tcs:ClassTemplate" location="50:2-61:4" name="Reference" isAddToContext="true">
+ <templateSequence location="51:5-60:7">
+ <elements xsi:type="tcs:LiteralRef" location="51:5-51:16" referredLiteral="/6"/>
+ <elements xsi:type="tcs:Property" location="51:17-51:21" name="name"/>
+ <elements xsi:type="tcs:FunctionCall" location="52:4-52:17" calledFunction="/0/@templates.17"/>
+ <elements xsi:type="tcs:ConditionalElement" location="53:4-53:31">
+ <condition xsi:type="tcs:AndExp" location="53:5-53:16">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="53:5-53:16" propertyName="isContainer"/>
+ </condition>
+ <thenSequence location="53:19-53:30">
+ <elements xsi:type="tcs:LiteralRef" location="53:19-53:30" referredLiteral="/7"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="54:4-54:80">
+ <condition xsi:type="tcs:AndExp" location="54:5-54:24">
+ <expressions xsi:type="tcs:IsDefinedExp" location="54:5-54:24" propertyName="subsetOf"/>
+ </condition>
+ <thenSequence location="54:27-54:79">
+ <elements xsi:type="tcs:LiteralRef" location="54:27-54:36" referredLiteral="/8"/>
+ <elements xsi:type="tcs:Property" location="54:37-54:79" name="subsetOf">
+ <propertyArgs xsi:type="tcs:RefersToPArg" location="54:46-54:61" propertyName="name"/>
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="54:63-54:78">
+ <separatorSequence location="54:75-54:78">
+ <elements xsi:type="tcs:LiteralRef" location="54:75-54:78" referredLiteral="/0/@symbols.3"/>
+ </separatorSequence>
+ </propertyArgs>
+ </elements>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="55:4-55:7" referredLiteral="/0/@symbols.9"/>
+ <elements xsi:type="tcs:Property" location="55:8-55:49" name="type">
+ <propertyArgs xsi:type="tcs:RefersToPArg" location="55:13-55:28" propertyName="name"/>
+ <propertyArgs xsi:type="tcs:AutoCreatePArg" location="55:30-55:48" value="never"/>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="56:4-59:5">
+ <condition xsi:type="tcs:AndExp" location="56:5-56:24">
+ <expressions xsi:type="tcs:IsDefinedExp" location="56:5-56:24" propertyName="opposite"/>
+ </condition>
+ <thenSequence location="57:5-58:65">
+ <elements xsi:type="tcs:LiteralRef" location="57:5-57:17" referredLiteral="/9"/>
+ <elements xsi:type="tcs:Property" location="58:5-58:65" name="opposite">
+ <propertyArgs xsi:type="tcs:RefersToPArg" location="58:14-58:29" propertyName="name"/>
+ <propertyArgs xsi:type="tcs:LookInPArg" location="58:31-58:44">
+ <propertyName>type</propertyName>
+ </propertyArgs>
+ <propertyArgs xsi:type="tcs:AutoCreatePArg" location="58:46-58:64" value="never"/>
+ </elements>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="60:4-60:7" referredLiteral="/0/@symbols.8"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="63:2-68:4" name="Attribute">
+ <templateSequence location="64:5-67:53">
+ <elements xsi:type="tcs:LiteralRef" location="64:5-64:16" referredLiteral="/10"/>
+ <elements xsi:type="tcs:Property" location="64:17-64:21" name="name"/>
+ <elements xsi:type="tcs:FunctionCall" location="65:4-65:17" calledFunction="/0/@templates.17"/>
+ <elements xsi:type="tcs:ConditionalElement" location="66:4-66:25">
+ <condition xsi:type="tcs:AndExp" location="66:5-66:13">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="66:5-66:13" propertyName="isUnique"/>
+ </condition>
+ <thenSequence location="66:16-66:24">
+ <elements xsi:type="tcs:LiteralRef" location="66:16-66:24" referredLiteral="/11"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="67:4-67:7" referredLiteral="/0/@symbols.9"/>
+ <elements xsi:type="tcs:Property" location="67:8-67:49" name="type">
+ <propertyArgs xsi:type="tcs:RefersToPArg" location="67:13-67:28" propertyName="name"/>
+ <propertyArgs xsi:type="tcs:AutoCreatePArg" location="67:30-67:48" value="never"/>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="67:50-67:53" referredLiteral="/0/@symbols.8"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="70:2-75:4" name="Operation">
+ <templateSequence location="71:5-74:9">
+ <elements xsi:type="tcs:LiteralRef" location="71:5-71:16" referredLiteral="/12"/>
+ <elements xsi:type="tcs:Property" location="71:17-71:21" name="name"/>
+ <elements xsi:type="tcs:LiteralRef" location="71:22-71:25" referredLiteral="/0/@symbols.4"/>
+ <elements xsi:type="tcs:Property" location="71:26-71:53" name="parameters">
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="71:37-71:52">
+ <separatorSequence location="71:49-71:52">
+ <elements xsi:type="tcs:LiteralRef" location="71:49-71:52" referredLiteral="/0/@symbols.3"/>
+ </separatorSequence>
+ </propertyArgs>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="71:54-71:57" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:ConditionalElement" location="72:4-74:5">
+ <condition xsi:type="tcs:AndExp" location="72:5-72:20">
+ <expressions xsi:type="tcs:IsDefinedExp" location="72:5-72:20" propertyName="type"/>
+ </condition>
+ <thenSequence location="73:5-73:50">
+ <elements xsi:type="tcs:LiteralRef" location="73:5-73:8" referredLiteral="/0/@symbols.9"/>
+ <elements xsi:type="tcs:Property" location="73:9-73:50" name="type">
+ <propertyArgs xsi:type="tcs:RefersToPArg" location="73:14-73:29" propertyName="name"/>
+ <propertyArgs xsi:type="tcs:AutoCreatePArg" location="73:31-73:49" value="never"/>
+ </elements>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="74:6-74:9" referredLiteral="/0/@symbols.8"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="77:2-79:4" name="Parameter">
+ <templateSequence location="78:5-78:55">
+ <elements xsi:type="tcs:Property" location="78:5-78:9" name="name"/>
+ <elements xsi:type="tcs:LiteralRef" location="78:10-78:13" referredLiteral="/0/@symbols.9"/>
+ <elements xsi:type="tcs:Property" location="78:14-78:55" name="type">
+ <propertyArgs xsi:type="tcs:RefersToPArg" location="78:19-78:34" propertyName="name"/>
+ <propertyArgs xsi:type="tcs:AutoCreatePArg" location="78:36-78:54" value="never"/>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="81:2-85:4" name="Enumeration">
+ <templateSequence location="82:5-84:9">
+ <elements xsi:type="tcs:LiteralRef" location="82:5-82:18" referredLiteral="/13"/>
+ <elements xsi:type="tcs:Property" location="82:19-82:23" name="name"/>
+ <elements xsi:type="tcs:LiteralRef" location="82:24-82:27" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Block" location="82:28-84:5">
+ <blockSequence location="83:5-83:13">
+ <elements xsi:type="tcs:Property" location="83:5-83:13" name="literals"/>
+ </blockSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="84:6-84:9" referredLiteral="/0/@symbols.7"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="87:2-89:4" name="EnumLiteral">
+ <templateSequence location="88:5-88:23">
+ <elements xsi:type="tcs:LiteralRef" location="88:5-88:14" referredLiteral="/14"/>
+ <elements xsi:type="tcs:Property" location="88:15-88:19" name="name"/>
+ <elements xsi:type="tcs:LiteralRef" location="88:20-88:23" referredLiteral="/0/@symbols.8"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:FunctionTemplate" location="91:2-107:4" name="multiplicity" className="StructuralFeature">
+ <functionSequence location="93:4-106:27">
+ <elements xsi:type="tcs:ConditionalElement" location="93:4-105:5">
+ <condition xsi:type="tcs:AndExp" location="93:5-93:28">
+ <expressions xsi:type="tcs:EqualsExp" location="93:5-93:14" propertyName="lower">
+ <value xsi:type="tcs:IntegerVal" location="93:13-93:14" symbol="1"/>
+ </expressions>
+ <expressions xsi:type="tcs:EqualsExp" location="93:19-93:28" propertyName="upper">
+ <value xsi:type="tcs:IntegerVal" location="93:27-93:28" symbol="1"/>
+ </expressions>
+ </condition>
+ <thenSequence location="95:5-93:30"/>
+ <elseSequence location="96:6-104:7">
+ <elements xsi:type="tcs:ConditionalElement" location="96:6-104:7">
+ <condition xsi:type="tcs:AndExp" location="96:7-96:31">
+ <expressions xsi:type="tcs:EqualsExp" location="96:7-96:16" propertyName="lower">
+ <value xsi:type="tcs:IntegerVal" location="96:15-96:16" symbol="0"/>
+ </expressions>
+ <expressions xsi:type="tcs:EqualsExp" location="96:21-96:31" propertyName="upper">
+ <value xsi:type="tcs:NegativeIntegerVal" location="96:29-96:31" symbol="1"/>
+ </expressions>
+ </condition>
+ <thenSequence location="97:8-97:19">
+ <elements xsi:type="tcs:LiteralRef" location="97:8-97:11" referredLiteral="/0/@symbols.0"/>
+ <elements xsi:type="tcs:LiteralRef" location="97:12-97:15" referredLiteral="/0/@symbols.17"/>
+ <elements xsi:type="tcs:LiteralRef" location="97:16-97:19" referredLiteral="/0/@symbols.1"/>
+ </thenSequence>
+ <elseSequence location="99:8-103:9">
+ <elements xsi:type="tcs:ConditionalElement" location="99:8-103:9">
+ <condition xsi:type="tcs:AndExp" location="99:9-99:19">
+ <expressions xsi:type="tcs:EqualsExp" location="99:9-99:19" propertyName="upper">
+ <value xsi:type="tcs:NegativeIntegerVal" location="99:17-99:19" symbol="1"/>
+ </expressions>
+ </condition>
+ <thenSequence location="100:10-100:31">
+ <elements xsi:type="tcs:LiteralRef" location="100:10-100:13" referredLiteral="/0/@symbols.0"/>
+ <elements xsi:type="tcs:Property" location="100:14-100:19" name="lower"/>
+ <elements xsi:type="tcs:LiteralRef" location="100:20-100:23" referredLiteral="/0/@symbols.16"/>
+ <elements xsi:type="tcs:LiteralRef" location="100:24-100:27" referredLiteral="/0/@symbols.17"/>
+ <elements xsi:type="tcs:LiteralRef" location="100:28-100:31" referredLiteral="/0/@symbols.1"/>
+ </thenSequence>
+ <elseSequence location="102:10-102:33">
+ <elements xsi:type="tcs:LiteralRef" location="102:10-102:13" referredLiteral="/0/@symbols.0"/>
+ <elements xsi:type="tcs:Property" location="102:14-102:19" name="lower"/>
+ <elements xsi:type="tcs:LiteralRef" location="102:20-102:23" referredLiteral="/0/@symbols.16"/>
+ <elements xsi:type="tcs:Property" location="102:24-102:29" name="upper"/>
+ <elements xsi:type="tcs:LiteralRef" location="102:30-102:33" referredLiteral="/0/@symbols.1"/>
+ </elseSequence>
+ </elements>
+ </elseSequence>
+ </elements>
+ </elseSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="106:4-106:27">
+ <condition xsi:type="tcs:AndExp" location="106:5-106:14">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="106:5-106:14" propertyName="isOrdered"/>
+ </condition>
+ <thenSequence location="106:17-106:26">
+ <elements xsi:type="tcs:LiteralRef" location="106:17-106:26" referredLiteral="/15"/>
+ </thenSequence>
+ </elements>
+ </functionSequence>
+ </templates>
+ <symbols location="110:3-110:18" name="lsquare" literalRefs="/0/@templates.17/@functionSequence/@elements.0/@elseSequence/@elements.0/@thenSequence/@elements.0 /0/@templates.17/@functionSequence/@elements.0/@elseSequence/@elements.0/@elseSequence/@elements.0/@thenSequence/@elements.0 /0/@templates.17/@functionSequence/@elements.0/@elseSequence/@elements.0/@elseSequence/@elements.0/@elseSequence/@elements.0" value="["/>
+ <symbols location="111:3-111:31" name="rsquare" literalRefs="/0/@templates.17/@functionSequence/@elements.0/@elseSequence/@elements.0/@thenSequence/@elements.2 /0/@templates.17/@functionSequence/@elements.0/@elseSequence/@elements.0/@elseSequence/@elements.0/@thenSequence/@elements.4 /0/@templates.17/@functionSequence/@elements.0/@elseSequence/@elements.0/@elseSequence/@elements.0/@elseSequence/@elements.4" value="]">
+ <spaces>rightSpace</spaces>
+ </symbols>
+ <symbols location="112:3-112:15" name="excl" value="!"/>
+ <symbols location="113:3-113:15" name="coma" literalRefs="/0/@templates.9/@templateSequence/@elements.3/@thenSequence/@elements.1/@propertyArgs.1/@separatorSequence/@elements.0 /0/@templates.11/@templateSequence/@elements.4/@thenSequence/@elements.1/@propertyArgs.1/@separatorSequence/@elements.0 /0/@templates.13/@templateSequence/@elements.3/@propertyArgs.0/@separatorSequence/@elements.0" value=","/>
+ <symbols location="114:3-114:17" name="lparen" literalRefs="/0/@templates.13/@templateSequence/@elements.2" value="("/>
+ <symbols location="115:3-115:17" name="rparen" literalRefs="/0/@templates.13/@templateSequence/@elements.4" value=")"/>
+ <symbols location="116:3-116:29" name="lcurly" literalRefs="/0/@templates.7/@templateSequence/@elements.3 /0/@templates.9/@templateSequence/@elements.4 /0/@templates.15/@templateSequence/@elements.2" value="{">
+ <spaces>leftSpace</spaces>
+ </symbols>
+ <symbols location="117:3-117:17" name="rcurly" literalRefs="/0/@templates.7/@templateSequence/@elements.5 /0/@templates.9/@templateSequence/@elements.6 /0/@templates.15/@templateSequence/@elements.4" value="}"/>
+ <symbols location="118:3-118:15" name="semi" literalRefs="/0/@templates.8/@templateSequence/@elements.2 /0/@templates.11/@templateSequence/@elements.8 /0/@templates.12/@templateSequence/@elements.6 /0/@templates.13/@templateSequence/@elements.6 /0/@templates.16/@templateSequence/@elements.2" value=";"/>
+ <symbols location="119:3-119:40" name="colon" literalRefs="/0/@templates.11/@templateSequence/@elements.5 /0/@templates.12/@templateSequence/@elements.4 /0/@templates.13/@templateSequence/@elements.5/@thenSequence/@elements.0 /0/@templates.14/@templateSequence/@elements.1" value=":">
+ <spaces>leftSpace</spaces>
+ <spaces>rightSpace</spaces>
+ </symbols>
+ <symbols location="120:3-120:18" name="colons" value="::"/>
+ <symbols location="121:3-121:15" name="pipe" value="|"/>
+ <symbols location="122:3-122:16" name="sharp" value="#"/>
+ <symbols location="123:3-123:16" name="qmark" value="?">
+ <commentsAfter>-- operator symbols</commentsAfter>
+ </symbols>
+ <symbols location="126:3-126:16" name="point" value=".">
+ <commentsBefore>-- operator symbols</commentsBefore>
+ </symbols>
+ <symbols location="127:3-127:18" name="rarrow" value="->"/>
+ <symbols location="128:3-128:16" name="minus" literalRefs="/0/@templates.17/@functionSequence/@elements.0/@elseSequence/@elements.0/@elseSequence/@elements.0/@thenSequence/@elements.2 /0/@templates.17/@functionSequence/@elements.0/@elseSequence/@elements.0/@elseSequence/@elements.0/@elseSequence/@elements.2" value="-"/>
+ <symbols location="129:3-129:15" name="star" literalRefs="/0/@templates.17/@functionSequence/@elements.0/@elseSequence/@elements.0/@thenSequence/@elements.1 /0/@templates.17/@functionSequence/@elements.0/@elseSequence/@elements.0/@elseSequence/@elements.0/@thenSequence/@elements.3" value="*"/>
+ <symbols location="130:3-130:16" name="slash" value="/"/>
+ <symbols location="131:3-131:15" name="plus" value="+"/>
+ <symbols location="132:3-132:13" name="eq" value="="/>
+ <symbols location="133:3-133:13" name="gt" value=">"/>
+ <symbols location="134:3-134:13" name="lt" value="&lt;"/>
+ <symbols location="135:3-135:14" name="ge" value=">="/>
+ <symbols location="136:3-136:14" name="le" value="&lt;="/>
+ <symbols location="137:3-137:14" name="ne" value="&lt;>"/>
+ <symbols location="138:3-138:18" name="larrow" value="&lt;-"/>
+ <tokens location="141:2-141:42" name="COMMENT">
+ <pattern location="141:18-141:41">
+ <simplePatterns xsi:type="tcs:RulePattern" location="141:18-141:41">
+ <rule xsi:type="tcs:EndOfLineRule" location="141:18-141:41">
+ <start location="141:36-141:40" name="--"/>
+ </rule>
+ </simplePatterns>
+ </pattern>
+ </tokens>
+ </tcs:ConcreteSyntax>
+ <tcs:Keyword location="28:4-28:13" literalRefs="/0/@templates.7/@templateSequence/@elements.0" value="package"/>
+ <tcs:Keyword location="34:4-34:14" literalRefs="/0/@templates.8/@templateSequence/@elements.0" value="datatype"/>
+ <tcs:Keyword location="38:18-38:28" literalRefs="/0/@templates.9/@templateSequence/@elements.0/@thenSequence/@elements.0" value="abstract"/>
+ <tcs:Keyword location="38:30-38:37" literalRefs="/0/@templates.9/@templateSequence/@elements.1" value="class"/>
+ <tcs:Keyword location="40:4-40:13" literalRefs="/0/@templates.9/@templateSequence/@elements.3/@thenSequence/@elements.0" value="extends"/>
+ <tcs:Keyword location="51:4-51:15" literalRefs="/0/@templates.11/@templateSequence/@elements.0" value="reference"/>
+ <tcs:Keyword location="53:18-53:29" literalRefs="/0/@templates.11/@templateSequence/@elements.3/@thenSequence/@elements.0" value="container"/>
+ <tcs:Keyword location="54:26-54:35" literalRefs="/0/@templates.11/@templateSequence/@elements.4/@thenSequence/@elements.0" value="subsets"/>
+ <tcs:Keyword location="57:4-57:16" literalRefs="/0/@templates.11/@templateSequence/@elements.7/@thenSequence/@elements.0" value="oppositeOf"/>
+ <tcs:Keyword location="64:4-64:15" literalRefs="/0/@templates.12/@templateSequence/@elements.0" value="attribute"/>
+ <tcs:Keyword location="66:15-66:23" literalRefs="/0/@templates.12/@templateSequence/@elements.3/@thenSequence/@elements.0" value="unique"/>
+ <tcs:Keyword location="71:4-71:15" literalRefs="/0/@templates.13/@templateSequence/@elements.0" value="operation"/>
+ <tcs:Keyword location="82:4-82:17" literalRefs="/0/@templates.15/@templateSequence/@elements.0" value="enumeration"/>
+ <tcs:Keyword location="88:4-88:13" literalRefs="/0/@templates.16/@templateSequence/@elements.0" value="literal"/>
+ <tcs:Keyword location="106:16-106:25" literalRefs="/0/@templates.17/@functionSequence/@elements.1/@thenSequence/@elements.0" value="ordered"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/WFR/KM32Problem.asm b/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/WFR/KM32Problem.asm
new file mode 100644
index 0000000..e0072b3
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/KM3-2005/WFR/KM32Problem.asm
@@ -0,0 +1,3930 @@
+<?xml version = '1.0' encoding = 'ISO-8859-1' ?>
+<asm name="0">
+ <cp>
+ <constant value="KM32Problem"/>
+ <constant value="links"/>
+ <constant value="NTransientLinkSet;"/>
+ <constant value="col"/>
+ <constant value="J;"/>
+ <constant value="allPackages"/>
+ <constant value="QMKM3!Package;"/>
+ <constant value="allClassifiers"/>
+ <constant value="QMKM3!Classifier;"/>
+ <constant value="allClasses"/>
+ <constant value="QMKM3!Class;"/>
+ <constant value="main"/>
+ <constant value="A"/>
+ <constant value="0"/>
+ <constant value="OclParametrizedType"/>
+ <constant value="#native"/>
+ <constant value="Collection"/>
+ <constant value="J.setName(S):V"/>
+ <constant value="OclSimpleType"/>
+ <constant value="OclAny"/>
+ <constant value="J.setElementType(J):V"/>
+ <constant value="A.__initallPackages():V"/>
+ <constant value="A.__initallClassifiers():V"/>
+ <constant value="A.__initallClasses():V"/>
+ <constant value="A.__matcher__():V"/>
+ <constant value="A.__exec__():V"/>
+ <constant value="self"/>
+ <constant value="__initallPackages"/>
+ <constant value="Package"/>
+ <constant value="KM3"/>
+ <constant value="J.allInstances():J"/>
+ <constant value="J.asSequence():J"/>
+ <constant value="32:9-32:20"/>
+ <constant value="32:9-32:35"/>
+ <constant value="32:9-32:49"/>
+ <constant value="__initallClassifiers"/>
+ <constant value="Classifier"/>
+ <constant value="39:9-39:23"/>
+ <constant value="39:9-39:38"/>
+ <constant value="39:9-39:52"/>
+ <constant value="__initallClasses"/>
+ <constant value="Class"/>
+ <constant value="46:9-46:18"/>
+ <constant value="46:9-46:33"/>
+ <constant value="46:9-46:47"/>
+ <constant value="__matcher__"/>
+ <constant value="TransientLinkSet"/>
+ <constant value="A.__matchPackageNameUnique():V"/>
+ <constant value="A.__matchClassifierInPackage():V"/>
+ <constant value="A.__matchEnumLiteralInEnumeration():V"/>
+ <constant value="A.__matchStructuralFeatureInClass():V"/>
+ <constant value="A.__matchOppositeOfOppositeExists():V"/>
+ <constant value="A.__matchOppositeOfOppositeIsSelf():V"/>
+ <constant value="A.__matchTypeOfOppositeIsOwner():V"/>
+ <constant value="A.__matchClassifierNameUniqueInPackage():V"/>
+ <constant value="A.__matchClassIsNotItsOwnSupertype():V"/>
+ <constant value="A.__matchStructuralFeatureNameUniqueInClass():V"/>
+ <constant value="A.__matchStructuralFeatureLower():V"/>
+ <constant value="A.__matchStructuralFeatureUpper():V"/>
+ <constant value="A.__matchStructuralFeatureLowerUpper():V"/>
+ <constant value="A.__matchStructuralFeatureUniqueOrdered():V"/>
+ <constant value="A.__matchDataTypeReferenceProhibited():V"/>
+ <constant value="A.__matchClassAttributeUnsupportedByEcore():V"/>
+ <constant value="A.__matchAbstractClassShouldHaveChildren():V"/>
+ <constant value="A.__matchClassifierNameShouldStartWithUpperCase():V"/>
+ <constant value="__matchPackageNameUnique"/>
+ <constant value="Sequence"/>
+ <constant value="IN"/>
+ <constant value="MMOF!Classifier;.allInstancesFrom(S):QJ"/>
+ <constant value="CJ.union(CJ):CJ"/>
+ <constant value="1"/>
+ <constant value="2"/>
+ <constant value="J.&lt;&gt;(J):J"/>
+ <constant value="name"/>
+ <constant value="J.=(J):J"/>
+ <constant value="J.and(J):J"/>
+ <constant value="B.or(B):B"/>
+ <constant value="B.not():B"/>
+ <constant value="52"/>
+ <constant value="TransientLink"/>
+ <constant value="PackageNameUnique"/>
+ <constant value="NTransientLink;.setRule(MATL!Rule;):V"/>
+ <constant value="i"/>
+ <constant value="NTransientLink;.addSourceElement(SJ):V"/>
+ <constant value="o"/>
+ <constant value="Problem"/>
+ <constant value="NTransientLink;.addTargetElement(SJ):V"/>
+ <constant value="NTransientLinkSet;.addLink(NTransientLink;):V"/>
+ <constant value="142:25-142:35"/>
+ <constant value="142:25-142:47"/>
+ <constant value="142:61-142:62"/>
+ <constant value="142:66-142:67"/>
+ <constant value="142:61-142:67"/>
+ <constant value="142:74-142:75"/>
+ <constant value="142:74-142:80"/>
+ <constant value="142:83-142:84"/>
+ <constant value="142:83-142:89"/>
+ <constant value="142:74-142:89"/>
+ <constant value="142:60-142:90"/>
+ <constant value="142:25-142:91"/>
+ <constant value="e"/>
+ <constant value="__matchClassifierInPackage"/>
+ <constant value="package"/>
+ <constant value="J.oclIsUndefined():J"/>
+ <constant value="39"/>
+ <constant value="ClassifierInPackage"/>
+ <constant value="160:25-160:26"/>
+ <constant value="160:25-160:34"/>
+ <constant value="160:25-160:51"/>
+ <constant value="__matchEnumLiteralInEnumeration"/>
+ <constant value="EnumLiteral"/>
+ <constant value="enum"/>
+ <constant value="EnumLiteralInEnumeration"/>
+ <constant value="178:25-178:26"/>
+ <constant value="178:25-178:31"/>
+ <constant value="178:25-178:48"/>
+ <constant value="__matchStructuralFeatureInClass"/>
+ <constant value="StructuralFeature"/>
+ <constant value="J.not():J"/>
+ <constant value="40"/>
+ <constant value="StructuralFeatureInClass"/>
+ <constant value="196:29-196:30"/>
+ <constant value="196:29-196:38"/>
+ <constant value="196:29-196:55"/>
+ <constant value="196:25-196:55"/>
+ <constant value="__matchOppositeOfOppositeExists"/>
+ <constant value="Reference"/>
+ <constant value="opposite"/>
+ <constant value="24"/>
+ <constant value="25"/>
+ <constant value="46"/>
+ <constant value="OppositeOfOppositeExists"/>
+ <constant value="214:28-214:29"/>
+ <constant value="214:28-214:38"/>
+ <constant value="214:28-214:55"/>
+ <constant value="218:33-218:34"/>
+ <constant value="218:33-218:43"/>
+ <constant value="218:33-218:52"/>
+ <constant value="218:33-218:69"/>
+ <constant value="216:33-216:38"/>
+ <constant value="214:25-219:30"/>
+ <constant value="__matchOppositeOfOppositeIsSelf"/>
+ <constant value="32"/>
+ <constant value="30"/>
+ <constant value="31"/>
+ <constant value="33"/>
+ <constant value="54"/>
+ <constant value="OppositeOfOppositeIsSelf"/>
+ <constant value="238:28-238:29"/>
+ <constant value="238:28-238:38"/>
+ <constant value="238:28-238:55"/>
+ <constant value="242:36-242:37"/>
+ <constant value="242:36-242:46"/>
+ <constant value="242:36-242:55"/>
+ <constant value="242:36-242:72"/>
+ <constant value="246:41-246:42"/>
+ <constant value="246:41-246:51"/>
+ <constant value="246:41-246:60"/>
+ <constant value="246:64-246:65"/>
+ <constant value="246:41-246:65"/>
+ <constant value="244:41-244:46"/>
+ <constant value="242:33-247:38"/>
+ <constant value="240:33-240:38"/>
+ <constant value="238:25-248:30"/>
+ <constant value="__matchTypeOfOppositeIsOwner"/>
+ <constant value="26"/>
+ <constant value="type"/>
+ <constant value="owner"/>
+ <constant value="27"/>
+ <constant value="49"/>
+ <constant value="TypeOfOppositeIsOwner"/>
+ <constant value="268:36-268:37"/>
+ <constant value="268:36-268:46"/>
+ <constant value="268:36-268:63"/>
+ <constant value="271:41-271:42"/>
+ <constant value="271:41-271:51"/>
+ <constant value="271:41-271:56"/>
+ <constant value="271:59-271:60"/>
+ <constant value="271:59-271:66"/>
+ <constant value="271:41-271:66"/>
+ <constant value="269:41-269:45"/>
+ <constant value="268:33-272:38"/>
+ <constant value="267:25-272:38"/>
+ <constant value="__matchClassifierNameUniqueInPackage"/>
+ <constant value="ClassifierNameUniqueInPackage"/>
+ <constant value="292:25-292:35"/>
+ <constant value="292:25-292:50"/>
+ <constant value="293:47-293:48"/>
+ <constant value="293:52-293:53"/>
+ <constant value="293:47-293:53"/>
+ <constant value="293:60-293:61"/>
+ <constant value="293:60-293:66"/>
+ <constant value="293:69-293:70"/>
+ <constant value="293:69-293:75"/>
+ <constant value="293:60-293:75"/>
+ <constant value="293:46-293:76"/>
+ <constant value="292:25-293:77"/>
+ <constant value="__matchClassIsNotItsOwnSupertype"/>
+ <constant value="J.recursiveInheritance():J"/>
+ <constant value="38"/>
+ <constant value="ClassIsNotItsOwnSupertype"/>
+ <constant value="311:25-311:26"/>
+ <constant value="311:25-311:49"/>
+ <constant value="__matchStructuralFeatureNameUniqueInClass"/>
+ <constant value="J.allStructuralFeatures():J"/>
+ <constant value="53"/>
+ <constant value="StructuralFeatureNameUniqueInClass"/>
+ <constant value="328:25-328:26"/>
+ <constant value="328:25-328:32"/>
+ <constant value="328:25-328:56"/>
+ <constant value="329:47-329:48"/>
+ <constant value="329:52-329:53"/>
+ <constant value="329:47-329:53"/>
+ <constant value="329:60-329:61"/>
+ <constant value="329:60-329:66"/>
+ <constant value="329:69-329:70"/>
+ <constant value="329:69-329:75"/>
+ <constant value="329:60-329:75"/>
+ <constant value="329:46-329:76"/>
+ <constant value="328:25-329:77"/>
+ <constant value="__matchStructuralFeatureLower"/>
+ <constant value="lower"/>
+ <constant value="J.&lt;(J):J"/>
+ <constant value="StructuralFeatureLower"/>
+ <constant value="349:25-349:26"/>
+ <constant value="349:25-349:32"/>
+ <constant value="349:35-349:36"/>
+ <constant value="349:25-349:36"/>
+ <constant value="__matchStructuralFeatureUpper"/>
+ <constant value="upper"/>
+ <constant value="J.-(J):J"/>
+ <constant value="47"/>
+ <constant value="StructuralFeatureUpper"/>
+ <constant value="367:26-367:27"/>
+ <constant value="367:26-367:33"/>
+ <constant value="367:36-367:37"/>
+ <constant value="367:26-367:37"/>
+ <constant value="367:44-367:45"/>
+ <constant value="367:44-367:51"/>
+ <constant value="367:55-367:56"/>
+ <constant value="367:57-367:58"/>
+ <constant value="367:55-367:58"/>
+ <constant value="367:44-367:58"/>
+ <constant value="367:25-367:59"/>
+ <constant value="__matchStructuralFeatureLowerUpper"/>
+ <constant value="48"/>
+ <constant value="StructuralFeatureLowerUpper"/>
+ <constant value="385:26-385:27"/>
+ <constant value="385:26-385:33"/>
+ <constant value="385:36-385:37"/>
+ <constant value="385:36-385:43"/>
+ <constant value="385:26-385:43"/>
+ <constant value="385:50-385:51"/>
+ <constant value="385:50-385:57"/>
+ <constant value="385:61-385:62"/>
+ <constant value="385:63-385:64"/>
+ <constant value="385:61-385:64"/>
+ <constant value="385:50-385:64"/>
+ <constant value="385:25-385:65"/>
+ <constant value="__matchStructuralFeatureUniqueOrdered"/>
+ <constant value="isOrdered"/>
+ <constant value="45"/>
+ <constant value="StructuralFeatureUniqueOrdered"/>
+ <constant value="403:26-403:27"/>
+ <constant value="403:26-403:33"/>
+ <constant value="403:36-403:37"/>
+ <constant value="403:26-403:37"/>
+ <constant value="403:44-403:45"/>
+ <constant value="403:44-403:55"/>
+ <constant value="403:58-403:62"/>
+ <constant value="403:44-403:62"/>
+ <constant value="403:25-403:63"/>
+ <constant value="__matchDataTypeReferenceProhibited"/>
+ <constant value="J.oclIsTypeOf(J):J"/>
+ <constant value="43"/>
+ <constant value="DataTypeReferenceProhibited"/>
+ <constant value="421:29-421:30"/>
+ <constant value="421:29-421:35"/>
+ <constant value="421:48-421:57"/>
+ <constant value="421:29-421:58"/>
+ <constant value="421:25-421:58"/>
+ <constant value="__matchClassAttributeUnsupportedByEcore"/>
+ <constant value="Attribute"/>
+ <constant value="42"/>
+ <constant value="ClassAttributeUnsupportedByEcore"/>
+ <constant value="439:25-439:26"/>
+ <constant value="439:25-439:31"/>
+ <constant value="439:44-439:53"/>
+ <constant value="439:25-439:54"/>
+ <constant value="__matchAbstractClassShouldHaveChildren"/>
+ <constant value="isAbstract"/>
+ <constant value="supertypes"/>
+ <constant value="J.includes(J):J"/>
+ <constant value="CJ.including(J):CJ"/>
+ <constant value="J.isEmpty():J"/>
+ <constant value="56"/>
+ <constant value="AbstractClassShouldHaveChildren"/>
+ <constant value="458:25-458:26"/>
+ <constant value="458:25-458:37"/>
+ <constant value="459:26-459:36"/>
+ <constant value="459:26-459:47"/>
+ <constant value="460:46-460:47"/>
+ <constant value="460:46-460:58"/>
+ <constant value="460:69-460:70"/>
+ <constant value="460:46-460:71"/>
+ <constant value="459:26-460:72"/>
+ <constant value="459:26-461:44"/>
+ <constant value="458:25-462:27"/>
+ <constant value="__matchClassifierNameShouldStartWithUpperCase"/>
+ <constant value="J.substring(JJ):J"/>
+ <constant value="J.toUpper():J"/>
+ <constant value="ClassifierNameShouldStartWithUpperCase"/>
+ <constant value="478:50-478:51"/>
+ <constant value="478:50-478:56"/>
+ <constant value="478:67-478:68"/>
+ <constant value="478:70-478:71"/>
+ <constant value="478:50-478:72"/>
+ <constant value="478:29-478:72"/>
+ <constant value="479:33-479:42"/>
+ <constant value="479:46-479:55"/>
+ <constant value="479:46-479:65"/>
+ <constant value="479:33-479:65"/>
+ <constant value="478:25-479:65"/>
+ <constant value="firstChar"/>
+ <constant value="__resolve__"/>
+ <constant value="J"/>
+ <constant value="J.oclIsKindOf(J):B"/>
+ <constant value="18"/>
+ <constant value="NTransientLinkSet;.getLinkBySourceElement(S):QNTransientLink;"/>
+ <constant value="15"/>
+ <constant value="NTransientLink;.getTargetFromSource(J):J"/>
+ <constant value="17"/>
+ <constant value="A.__resolve__(J):J"/>
+ <constant value="QJ.including(J):QJ"/>
+ <constant value="QJ.flatten():QJ"/>
+ <constant value="value"/>
+ <constant value="resolveTemp"/>
+ <constant value="S"/>
+ <constant value="NTransientLink;.getNamedTargetFromSource(JS):J"/>
+ <constant value="__exec__"/>
+ <constant value="NTransientLinkSet;.getLinksByRule(S):QNTransientLink;"/>
+ <constant value="A.__applyPackageNameUnique(NTransientLink;):V"/>
+ <constant value="A.__applyClassifierInPackage(NTransientLink;):V"/>
+ <constant value="A.__applyEnumLiteralInEnumeration(NTransientLink;):V"/>
+ <constant value="A.__applyStructuralFeatureInClass(NTransientLink;):V"/>
+ <constant value="A.__applyOppositeOfOppositeExists(NTransientLink;):V"/>
+ <constant value="A.__applyOppositeOfOppositeIsSelf(NTransientLink;):V"/>
+ <constant value="A.__applyTypeOfOppositeIsOwner(NTransientLink;):V"/>
+ <constant value="A.__applyClassifierNameUniqueInPackage(NTransientLink;):V"/>
+ <constant value="A.__applyClassIsNotItsOwnSupertype(NTransientLink;):V"/>
+ <constant value="A.__applyStructuralFeatureNameUniqueInClass(NTransientLink;):V"/>
+ <constant value="A.__applyStructuralFeatureLower(NTransientLink;):V"/>
+ <constant value="A.__applyStructuralFeatureUpper(NTransientLink;):V"/>
+ <constant value="A.__applyStructuralFeatureLowerUpper(NTransientLink;):V"/>
+ <constant value="A.__applyStructuralFeatureUniqueOrdered(NTransientLink;):V"/>
+ <constant value="A.__applyDataTypeReferenceProhibited(NTransientLink;):V"/>
+ <constant value="A.__applyClassAttributeUnsupportedByEcore(NTransientLink;):V"/>
+ <constant value="A.__applyAbstractClassShouldHaveChildren(NTransientLink;):V"/>
+ <constant value="A.__applyClassifierNameShouldStartWithUpperCase(NTransientLink;):V"/>
+ <constant value="allStructuralFeaturesRec"/>
+ <constant value="MKM3!Class;"/>
+ <constant value="structuralFeatures"/>
+ <constant value="3"/>
+ <constant value="22"/>
+ <constant value="J.append(J):J"/>
+ <constant value="J.allStructuralFeaturesRec(J):J"/>
+ <constant value="J.union(J):J"/>
+ <constant value="23"/>
+ <constant value="62:9-62:13"/>
+ <constant value="62:9-62:32"/>
+ <constant value="63:73-63:83"/>
+ <constant value="63:45-63:83"/>
+ <constant value="63:17-63:21"/>
+ <constant value="63:17-63:32"/>
+ <constant value="64:28-64:29"/>
+ <constant value="64:40-64:41"/>
+ <constant value="64:28-64:42"/>
+ <constant value="68:33-68:36"/>
+ <constant value="68:45-68:46"/>
+ <constant value="68:72-68:73"/>
+ <constant value="68:82-68:83"/>
+ <constant value="68:72-68:84"/>
+ <constant value="68:45-68:85"/>
+ <constant value="68:33-68:87"/>
+ <constant value="66:33-66:36"/>
+ <constant value="64:25-69:30"/>
+ <constant value="63:17-70:18"/>
+ <constant value="62:9-71:10"/>
+ <constant value="res"/>
+ <constant value="s"/>
+ <constant value="allStructuralFeatures"/>
+ <constant value="81:9-81:13"/>
+ <constant value="81:48-81:52"/>
+ <constant value="81:39-81:53"/>
+ <constant value="81:9-81:54"/>
+ <constant value="recursiveInheritanceRec"/>
+ <constant value="41"/>
+ <constant value="4"/>
+ <constant value="34"/>
+ <constant value="J.recursiveInheritanceRec(JJ):J"/>
+ <constant value="J.or(J):J"/>
+ <constant value="35"/>
+ <constant value="103:12-103:16"/>
+ <constant value="103:12-103:27"/>
+ <constant value="103:12-103:38"/>
+ <constant value="107:20-107:24"/>
+ <constant value="107:20-107:35"/>
+ <constant value="107:48-107:49"/>
+ <constant value="107:52-107:53"/>
+ <constant value="107:48-107:53"/>
+ <constant value="107:20-107:54"/>
+ <constant value="111:69-111:74"/>
+ <constant value="111:53-111:74"/>
+ <constant value="111:25-111:29"/>
+ <constant value="111:25-111:40"/>
+ <constant value="112:36-112:37"/>
+ <constant value="112:48-112:49"/>
+ <constant value="112:36-112:50"/>
+ <constant value="116:41-116:44"/>
+ <constant value="116:48-116:49"/>
+ <constant value="116:74-116:75"/>
+ <constant value="116:77-116:78"/>
+ <constant value="116:87-116:88"/>
+ <constant value="116:77-116:89"/>
+ <constant value="116:48-116:90"/>
+ <constant value="116:41-116:90"/>
+ <constant value="114:41-114:44"/>
+ <constant value="112:33-117:38"/>
+ <constant value="111:25-118:26"/>
+ <constant value="109:25-109:29"/>
+ <constant value="107:17-119:22"/>
+ <constant value="105:17-105:22"/>
+ <constant value="103:9-120:14"/>
+ <constant value="c"/>
+ <constant value="recursiveInheritance"/>
+ <constant value="129:9-129:13"/>
+ <constant value="129:38-129:42"/>
+ <constant value="129:44-129:54"/>
+ <constant value="129:9-129:55"/>
+ <constant value="__applyPackageNameUnique"/>
+ <constant value="NTransientLink;"/>
+ <constant value="NTransientLink;.getSourceElement(S):J"/>
+ <constant value="NTransientLink;.getTargetElement(S):J"/>
+ <constant value="error"/>
+ <constant value="severity"/>
+ <constant value="a Package of the same name already exists: "/>
+ <constant value="J.+(J):J"/>
+ <constant value="description"/>
+ <constant value="location"/>
+ <constant value="146:37-146:43"/>
+ <constant value="146:25-146:43"/>
+ <constant value="148:41-148:86"/>
+ <constant value="149:43-149:44"/>
+ <constant value="149:43-149:49"/>
+ <constant value="148:41-149:49"/>
+ <constant value="147:25-149:49"/>
+ <constant value="150:37-150:38"/>
+ <constant value="150:37-150:47"/>
+ <constant value="150:25-150:47"/>
+ <constant value="link"/>
+ <constant value="__applyClassifierInPackage"/>
+ <constant value="the Classifier "/>
+ <constant value=" must be contained by a Package"/>
+ <constant value="164:37-164:43"/>
+ <constant value="164:25-164:43"/>
+ <constant value="166:41-166:58"/>
+ <constant value="166:61-166:62"/>
+ <constant value="166:61-166:67"/>
+ <constant value="166:41-166:67"/>
+ <constant value="167:43-167:76"/>
+ <constant value="166:41-167:76"/>
+ <constant value="165:25-167:76"/>
+ <constant value="168:37-168:38"/>
+ <constant value="168:37-168:47"/>
+ <constant value="168:25-168:47"/>
+ <constant value="__applyEnumLiteralInEnumeration"/>
+ <constant value="the EnumLiteral "/>
+ <constant value=" must be contained in an Enumeration"/>
+ <constant value="182:37-182:43"/>
+ <constant value="182:25-182:43"/>
+ <constant value="184:41-184:59"/>
+ <constant value="184:62-184:63"/>
+ <constant value="184:62-184:68"/>
+ <constant value="184:41-184:68"/>
+ <constant value="185:43-185:81"/>
+ <constant value="184:41-185:81"/>
+ <constant value="183:25-185:81"/>
+ <constant value="186:37-186:38"/>
+ <constant value="186:37-186:47"/>
+ <constant value="186:25-186:47"/>
+ <constant value="__applyStructuralFeatureInClass"/>
+ <constant value="the Feature "/>
+ <constant value=" cannot be contained by a Package"/>
+ <constant value="200:37-200:43"/>
+ <constant value="200:25-200:43"/>
+ <constant value="202:41-202:55"/>
+ <constant value="202:58-202:59"/>
+ <constant value="202:58-202:64"/>
+ <constant value="202:41-202:64"/>
+ <constant value="203:43-203:78"/>
+ <constant value="202:41-203:78"/>
+ <constant value="201:25-203:78"/>
+ <constant value="204:37-204:38"/>
+ <constant value="204:37-204:47"/>
+ <constant value="204:25-204:47"/>
+ <constant value="__applyOppositeOfOppositeExists"/>
+ <constant value="the opposite of the opposite of Reference "/>
+ <constant value="::"/>
+ <constant value=" should be defined"/>
+ <constant value="223:37-223:43"/>
+ <constant value="223:25-223:43"/>
+ <constant value="225:41-225:85"/>
+ <constant value="226:41-226:42"/>
+ <constant value="226:41-226:48"/>
+ <constant value="226:41-226:53"/>
+ <constant value="225:41-226:53"/>
+ <constant value="226:56-226:60"/>
+ <constant value="225:41-226:60"/>
+ <constant value="226:63-226:64"/>
+ <constant value="226:63-226:69"/>
+ <constant value="225:41-226:69"/>
+ <constant value="227:41-227:61"/>
+ <constant value="225:41-227:61"/>
+ <constant value="224:25-227:61"/>
+ <constant value="228:37-228:38"/>
+ <constant value="228:37-228:47"/>
+ <constant value="228:25-228:47"/>
+ <constant value="__applyOppositeOfOppositeIsSelf"/>
+ <constant value=" should be this very same Reference"/>
+ <constant value="252:37-252:43"/>
+ <constant value="252:25-252:43"/>
+ <constant value="254:41-254:85"/>
+ <constant value="255:41-255:42"/>
+ <constant value="255:41-255:48"/>
+ <constant value="255:41-255:53"/>
+ <constant value="254:41-255:53"/>
+ <constant value="255:56-255:60"/>
+ <constant value="254:41-255:60"/>
+ <constant value="255:63-255:64"/>
+ <constant value="255:63-255:69"/>
+ <constant value="254:41-255:69"/>
+ <constant value="256:41-256:78"/>
+ <constant value="254:41-256:78"/>
+ <constant value="253:25-256:78"/>
+ <constant value="257:37-257:38"/>
+ <constant value="257:37-257:47"/>
+ <constant value="257:25-257:47"/>
+ <constant value="__applyTypeOfOppositeIsOwner"/>
+ <constant value="the type of the opposite of Reference "/>
+ <constant value=" should be the owner of this Reference ("/>
+ <constant value=")"/>
+ <constant value="276:37-276:43"/>
+ <constant value="276:25-276:43"/>
+ <constant value="278:41-278:81"/>
+ <constant value="279:41-279:42"/>
+ <constant value="279:41-279:48"/>
+ <constant value="279:41-279:53"/>
+ <constant value="278:41-279:53"/>
+ <constant value="279:56-279:60"/>
+ <constant value="278:41-279:60"/>
+ <constant value="279:63-279:64"/>
+ <constant value="279:63-279:69"/>
+ <constant value="278:41-279:69"/>
+ <constant value="280:41-280:83"/>
+ <constant value="278:41-280:83"/>
+ <constant value="281:41-281:42"/>
+ <constant value="281:41-281:48"/>
+ <constant value="281:41-281:53"/>
+ <constant value="278:41-281:53"/>
+ <constant value="281:56-281:59"/>
+ <constant value="278:41-281:59"/>
+ <constant value="277:25-281:59"/>
+ <constant value="282:37-282:38"/>
+ <constant value="282:37-282:47"/>
+ <constant value="282:25-282:47"/>
+ <constant value="__applyClassifierNameUniqueInPackage"/>
+ <constant value="a Classifier named "/>
+ <constant value=" already exists"/>
+ <constant value="297:37-297:43"/>
+ <constant value="297:25-297:43"/>
+ <constant value="299:41-299:62"/>
+ <constant value="299:65-299:66"/>
+ <constant value="299:65-299:71"/>
+ <constant value="299:41-299:71"/>
+ <constant value="300:43-300:60"/>
+ <constant value="299:41-300:60"/>
+ <constant value="298:25-300:60"/>
+ <constant value="301:37-301:38"/>
+ <constant value="301:37-301:47"/>
+ <constant value="301:25-301:47"/>
+ <constant value="__applyClassIsNotItsOwnSupertype"/>
+ <constant value="the Class "/>
+ <constant value=" is its direct/indirect own supertype"/>
+ <constant value="315:37-315:43"/>
+ <constant value="315:25-315:43"/>
+ <constant value="316:40-316:52"/>
+ <constant value="316:55-316:56"/>
+ <constant value="316:55-316:61"/>
+ <constant value="316:40-316:61"/>
+ <constant value="317:59-317:98"/>
+ <constant value="316:40-317:98"/>
+ <constant value="316:25-317:98"/>
+ <constant value="318:37-318:38"/>
+ <constant value="318:37-318:47"/>
+ <constant value="318:25-318:47"/>
+ <constant value="__applyStructuralFeatureNameUniqueInClass"/>
+ <constant value=" contains another feature (including inherited ones) "/>
+ <constant value="with the same name: "/>
+ <constant value="333:37-333:43"/>
+ <constant value="333:25-333:43"/>
+ <constant value="335:41-335:53"/>
+ <constant value="335:56-335:57"/>
+ <constant value="335:56-335:63"/>
+ <constant value="335:56-335:68"/>
+ <constant value="335:41-335:68"/>
+ <constant value="336:43-336:98"/>
+ <constant value="335:41-336:98"/>
+ <constant value="337:43-337:65"/>
+ <constant value="335:41-337:65"/>
+ <constant value="338:43-338:44"/>
+ <constant value="338:43-338:49"/>
+ <constant value="335:41-338:49"/>
+ <constant value="334:25-338:49"/>
+ <constant value="339:37-339:38"/>
+ <constant value="339:37-339:47"/>
+ <constant value="339:25-339:47"/>
+ <constant value="__applyStructuralFeatureLower"/>
+ <constant value="Lower bound value of Feature "/>
+ <constant value="is unvalid (lower than 0)"/>
+ <constant value="353:37-353:43"/>
+ <constant value="353:25-353:43"/>
+ <constant value="355:41-355:72"/>
+ <constant value="355:75-355:76"/>
+ <constant value="355:75-355:82"/>
+ <constant value="355:75-355:87"/>
+ <constant value="355:41-355:87"/>
+ <constant value="355:90-355:94"/>
+ <constant value="355:41-355:94"/>
+ <constant value="356:43-356:44"/>
+ <constant value="356:43-356:49"/>
+ <constant value="355:41-356:49"/>
+ <constant value="356:52-356:79"/>
+ <constant value="355:41-356:79"/>
+ <constant value="354:25-356:79"/>
+ <constant value="357:37-357:38"/>
+ <constant value="357:37-357:47"/>
+ <constant value="357:25-357:47"/>
+ <constant value="__applyStructuralFeatureUpper"/>
+ <constant value="Upper bound of Feature "/>
+ <constant value="is unvalid (lower than 1)"/>
+ <constant value="371:37-371:43"/>
+ <constant value="371:25-371:43"/>
+ <constant value="373:41-373:66"/>
+ <constant value="373:69-373:70"/>
+ <constant value="373:69-373:76"/>
+ <constant value="373:69-373:81"/>
+ <constant value="373:41-373:81"/>
+ <constant value="373:84-373:88"/>
+ <constant value="373:41-373:88"/>
+ <constant value="374:43-374:44"/>
+ <constant value="374:43-374:49"/>
+ <constant value="373:41-374:49"/>
+ <constant value="374:52-374:79"/>
+ <constant value="373:41-374:79"/>
+ <constant value="372:25-374:79"/>
+ <constant value="375:37-375:38"/>
+ <constant value="375:37-375:47"/>
+ <constant value="375:25-375:47"/>
+ <constant value="__applyStructuralFeatureLowerUpper"/>
+ <constant value=" is lower than its lower bound"/>
+ <constant value="389:37-389:43"/>
+ <constant value="389:25-389:43"/>
+ <constant value="391:41-391:66"/>
+ <constant value="391:69-391:70"/>
+ <constant value="391:69-391:76"/>
+ <constant value="391:69-391:81"/>
+ <constant value="391:41-391:81"/>
+ <constant value="391:84-391:88"/>
+ <constant value="391:41-391:88"/>
+ <constant value="392:43-392:44"/>
+ <constant value="392:43-392:49"/>
+ <constant value="391:41-392:49"/>
+ <constant value="392:52-392:84"/>
+ <constant value="391:41-392:84"/>
+ <constant value="390:25-392:84"/>
+ <constant value="393:37-393:38"/>
+ <constant value="393:37-393:47"/>
+ <constant value="393:25-393:47"/>
+ <constant value="__applyStructuralFeatureUniqueOrdered"/>
+ <constant value="Feature "/>
+ <constant value=" cannot be ordered with an upper bound equals to 1"/>
+ <constant value="407:37-407:43"/>
+ <constant value="407:25-407:43"/>
+ <constant value="409:41-409:51"/>
+ <constant value="409:54-409:55"/>
+ <constant value="409:54-409:61"/>
+ <constant value="409:54-409:66"/>
+ <constant value="409:41-409:66"/>
+ <constant value="409:69-409:73"/>
+ <constant value="409:41-409:73"/>
+ <constant value="409:76-409:77"/>
+ <constant value="409:76-409:82"/>
+ <constant value="409:41-409:82"/>
+ <constant value="410:43-410:95"/>
+ <constant value="409:41-410:95"/>
+ <constant value="408:25-410:95"/>
+ <constant value="411:37-411:38"/>
+ <constant value="411:37-411:47"/>
+ <constant value="411:25-411:47"/>
+ <constant value="__applyDataTypeReferenceProhibited"/>
+ <constant value="Reference "/>
+ <constant value=" cannot target a DataType element"/>
+ <constant value="425:37-425:43"/>
+ <constant value="425:25-425:43"/>
+ <constant value="427:41-427:53"/>
+ <constant value="427:56-427:57"/>
+ <constant value="427:56-427:63"/>
+ <constant value="427:56-427:68"/>
+ <constant value="427:41-427:68"/>
+ <constant value="427:71-427:75"/>
+ <constant value="427:41-427:75"/>
+ <constant value="427:78-427:79"/>
+ <constant value="427:78-427:84"/>
+ <constant value="427:41-427:84"/>
+ <constant value="428:43-428:78"/>
+ <constant value="427:41-428:78"/>
+ <constant value="426:25-428:78"/>
+ <constant value="429:37-429:38"/>
+ <constant value="429:37-429:47"/>
+ <constant value="429:25-429:47"/>
+ <constant value="__applyClassAttributeUnsupportedByEcore"/>
+ <constant value="warning"/>
+ <constant value="Class "/>
+ <constant value=" defines a class Attribute ("/>
+ <constant value=") that is not supported by the Ecore metamodel"/>
+ <constant value="443:37-443:45"/>
+ <constant value="443:25-443:45"/>
+ <constant value="445:41-445:49"/>
+ <constant value="445:52-445:53"/>
+ <constant value="445:52-445:59"/>
+ <constant value="445:52-445:64"/>
+ <constant value="445:41-445:64"/>
+ <constant value="445:67-445:97"/>
+ <constant value="445:41-445:97"/>
+ <constant value="446:43-446:44"/>
+ <constant value="446:43-446:49"/>
+ <constant value="445:41-446:49"/>
+ <constant value="447:43-447:91"/>
+ <constant value="445:41-447:91"/>
+ <constant value="444:25-447:91"/>
+ <constant value="448:37-448:38"/>
+ <constant value="448:37-448:47"/>
+ <constant value="448:25-448:47"/>
+ <constant value="__applyAbstractClassShouldHaveChildren"/>
+ <constant value="the abstract Class "/>
+ <constant value=" has no children"/>
+ <constant value="466:37-466:45"/>
+ <constant value="466:25-466:45"/>
+ <constant value="467:40-467:61"/>
+ <constant value="467:64-467:65"/>
+ <constant value="467:64-467:70"/>
+ <constant value="467:40-467:70"/>
+ <constant value="467:73-467:91"/>
+ <constant value="467:40-467:91"/>
+ <constant value="467:25-467:91"/>
+ <constant value="468:37-468:38"/>
+ <constant value="468:37-468:47"/>
+ <constant value="468:25-468:47"/>
+ <constant value="__applyClassifierNameShouldStartWithUpperCase"/>
+ <constant value="critic"/>
+ <constant value="the name of Classifier "/>
+ <constant value=" should begin with an upper case"/>
+ <constant value="483:37-483:44"/>
+ <constant value="483:25-483:44"/>
+ <constant value="485:41-485:66"/>
+ <constant value="485:69-485:70"/>
+ <constant value="485:69-485:75"/>
+ <constant value="485:41-485:75"/>
+ <constant value="486:43-486:77"/>
+ <constant value="485:41-486:77"/>
+ <constant value="484:25-486:77"/>
+ <constant value="487:37-487:38"/>
+ <constant value="487:37-487:47"/>
+ <constant value="487:25-487:47"/>
+ </cp>
+ <field name="1" type="2"/>
+ <field name="3" type="4"/>
+ <field name="5" type="6"/>
+ <field name="7" type="8"/>
+ <field name="9" type="10"/>
+ <operation name="11">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="13"/>
+ <push arg="14"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="16"/>
+ <call arg="17"/>
+ <dup/>
+ <push arg="18"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="19"/>
+ <call arg="17"/>
+ <call arg="20"/>
+ <set arg="3"/>
+ <load arg="13"/>
+ <call arg="21"/>
+ <load arg="13"/>
+ <call arg="22"/>
+ <load arg="13"/>
+ <call arg="23"/>
+ <load arg="13"/>
+ <call arg="24"/>
+ <load arg="13"/>
+ <call arg="25"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="25"/>
+ </localvariabletable>
+ </operation>
+ <operation name="27">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="13"/>
+ <push arg="28"/>
+ <push arg="29"/>
+ <findme/>
+ <call arg="30"/>
+ <call arg="31"/>
+ <set arg="5"/>
+ </code>
+ <linenumbertable>
+ <lne id="32" begin="1" end="3"/>
+ <lne id="33" begin="1" end="4"/>
+ <lne id="34" begin="1" end="5"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="6"/>
+ </localvariabletable>
+ </operation>
+ <operation name="35">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="13"/>
+ <push arg="36"/>
+ <push arg="29"/>
+ <findme/>
+ <call arg="30"/>
+ <call arg="31"/>
+ <set arg="7"/>
+ </code>
+ <linenumbertable>
+ <lne id="37" begin="1" end="3"/>
+ <lne id="38" begin="1" end="4"/>
+ <lne id="39" begin="1" end="5"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="6"/>
+ </localvariabletable>
+ </operation>
+ <operation name="40">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="13"/>
+ <push arg="41"/>
+ <push arg="29"/>
+ <findme/>
+ <call arg="30"/>
+ <call arg="31"/>
+ <set arg="9"/>
+ </code>
+ <linenumbertable>
+ <lne id="42" begin="1" end="3"/>
+ <lne id="43" begin="1" end="4"/>
+ <lne id="44" begin="1" end="5"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="6"/>
+ </localvariabletable>
+ </operation>
+ <operation name="45">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="13"/>
+ <push arg="46"/>
+ <push arg="15"/>
+ <new/>
+ <set arg="1"/>
+ <load arg="13"/>
+ <call arg="47"/>
+ <load arg="13"/>
+ <call arg="48"/>
+ <load arg="13"/>
+ <call arg="49"/>
+ <load arg="13"/>
+ <call arg="50"/>
+ <load arg="13"/>
+ <call arg="51"/>
+ <load arg="13"/>
+ <call arg="52"/>
+ <load arg="13"/>
+ <call arg="53"/>
+ <load arg="13"/>
+ <call arg="54"/>
+ <load arg="13"/>
+ <call arg="55"/>
+ <load arg="13"/>
+ <call arg="56"/>
+ <load arg="13"/>
+ <call arg="57"/>
+ <load arg="13"/>
+ <call arg="58"/>
+ <load arg="13"/>
+ <call arg="59"/>
+ <load arg="13"/>
+ <call arg="60"/>
+ <load arg="13"/>
+ <call arg="61"/>
+ <load arg="13"/>
+ <call arg="62"/>
+ <load arg="13"/>
+ <call arg="63"/>
+ <load arg="13"/>
+ <call arg="64"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="40"/>
+ </localvariabletable>
+ </operation>
+ <operation name="65">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="28"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <pushf/>
+ <getasm/>
+ <get arg="5"/>
+ <iterate/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <load arg="71"/>
+ <call arg="72"/>
+ <load arg="70"/>
+ <get arg="73"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="74"/>
+ <call arg="75"/>
+ <call arg="76"/>
+ <enditerate/>
+ <call arg="77"/>
+ <if arg="78"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="80"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="88" begin="16" end="16"/>
+ <lne id="89" begin="16" end="17"/>
+ <lne id="90" begin="20" end="20"/>
+ <lne id="91" begin="21" end="21"/>
+ <lne id="92" begin="20" end="22"/>
+ <lne id="93" begin="23" end="23"/>
+ <lne id="94" begin="23" end="24"/>
+ <lne id="95" begin="25" end="25"/>
+ <lne id="96" begin="25" end="26"/>
+ <lne id="97" begin="23" end="27"/>
+ <lne id="98" begin="20" end="28"/>
+ <lne id="99" begin="15" end="30"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="100" begin="19" end="29"/>
+ <lve slot="0" name="26" begin="0" end="52"/>
+ </localvariabletable>
+ </operation>
+ <operation name="101">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="36"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="70"/>
+ <get arg="102"/>
+ <call arg="103"/>
+ <call arg="77"/>
+ <if arg="104"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="105"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="106" begin="15" end="15"/>
+ <lne id="107" begin="15" end="16"/>
+ <lne id="108" begin="15" end="17"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="39"/>
+ </localvariabletable>
+ </operation>
+ <operation name="109">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="110"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="70"/>
+ <get arg="111"/>
+ <call arg="103"/>
+ <call arg="77"/>
+ <if arg="104"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="112"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="113" begin="15" end="15"/>
+ <lne id="114" begin="15" end="16"/>
+ <lne id="115" begin="15" end="17"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="39"/>
+ </localvariabletable>
+ </operation>
+ <operation name="116">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="117"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="70"/>
+ <get arg="102"/>
+ <call arg="103"/>
+ <call arg="118"/>
+ <call arg="77"/>
+ <if arg="119"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="120"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="121" begin="15" end="15"/>
+ <lne id="122" begin="15" end="16"/>
+ <lne id="123" begin="15" end="17"/>
+ <lne id="124" begin="15" end="18"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="40"/>
+ </localvariabletable>
+ </operation>
+ <operation name="125">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="126"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="70"/>
+ <get arg="127"/>
+ <call arg="103"/>
+ <if arg="128"/>
+ <load arg="70"/>
+ <get arg="127"/>
+ <get arg="127"/>
+ <call arg="103"/>
+ <goto arg="129"/>
+ <pushf/>
+ <call arg="77"/>
+ <if arg="130"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="131"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="132" begin="15" end="15"/>
+ <lne id="133" begin="15" end="16"/>
+ <lne id="134" begin="15" end="17"/>
+ <lne id="135" begin="19" end="19"/>
+ <lne id="136" begin="19" end="20"/>
+ <lne id="137" begin="19" end="21"/>
+ <lne id="138" begin="19" end="22"/>
+ <lne id="139" begin="24" end="24"/>
+ <lne id="140" begin="15" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="46"/>
+ </localvariabletable>
+ </operation>
+ <operation name="141">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="126"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="70"/>
+ <get arg="127"/>
+ <call arg="103"/>
+ <if arg="142"/>
+ <load arg="70"/>
+ <get arg="127"/>
+ <get arg="127"/>
+ <call arg="103"/>
+ <if arg="143"/>
+ <load arg="70"/>
+ <get arg="127"/>
+ <get arg="127"/>
+ <load arg="70"/>
+ <call arg="72"/>
+ <goto arg="144"/>
+ <pushf/>
+ <goto arg="145"/>
+ <pushf/>
+ <call arg="77"/>
+ <if arg="146"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="147"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="148" begin="15" end="15"/>
+ <lne id="149" begin="15" end="16"/>
+ <lne id="150" begin="15" end="17"/>
+ <lne id="151" begin="19" end="19"/>
+ <lne id="152" begin="19" end="20"/>
+ <lne id="153" begin="19" end="21"/>
+ <lne id="154" begin="19" end="22"/>
+ <lne id="155" begin="24" end="24"/>
+ <lne id="156" begin="24" end="25"/>
+ <lne id="157" begin="24" end="26"/>
+ <lne id="158" begin="27" end="27"/>
+ <lne id="159" begin="24" end="28"/>
+ <lne id="160" begin="30" end="30"/>
+ <lne id="161" begin="19" end="30"/>
+ <lne id="162" begin="32" end="32"/>
+ <lne id="163" begin="15" end="32"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="54"/>
+ </localvariabletable>
+ </operation>
+ <operation name="164">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="126"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="70"/>
+ <get arg="127"/>
+ <call arg="103"/>
+ <if arg="165"/>
+ <load arg="70"/>
+ <get arg="127"/>
+ <get arg="166"/>
+ <load arg="70"/>
+ <get arg="167"/>
+ <call arg="74"/>
+ <goto arg="168"/>
+ <pusht/>
+ <call arg="118"/>
+ <call arg="77"/>
+ <if arg="169"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="170"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="171" begin="15" end="15"/>
+ <lne id="172" begin="15" end="16"/>
+ <lne id="173" begin="15" end="17"/>
+ <lne id="174" begin="19" end="19"/>
+ <lne id="175" begin="19" end="20"/>
+ <lne id="176" begin="19" end="21"/>
+ <lne id="177" begin="22" end="22"/>
+ <lne id="178" begin="22" end="23"/>
+ <lne id="179" begin="19" end="24"/>
+ <lne id="180" begin="26" end="26"/>
+ <lne id="181" begin="15" end="26"/>
+ <lne id="182" begin="15" end="27"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="49"/>
+ </localvariabletable>
+ </operation>
+ <operation name="183">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="36"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <pushf/>
+ <getasm/>
+ <get arg="7"/>
+ <iterate/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <load arg="71"/>
+ <call arg="72"/>
+ <load arg="70"/>
+ <get arg="73"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="74"/>
+ <call arg="75"/>
+ <call arg="76"/>
+ <enditerate/>
+ <call arg="77"/>
+ <if arg="78"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="184"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="185" begin="16" end="16"/>
+ <lne id="186" begin="16" end="17"/>
+ <lne id="187" begin="20" end="20"/>
+ <lne id="188" begin="21" end="21"/>
+ <lne id="189" begin="20" end="22"/>
+ <lne id="190" begin="23" end="23"/>
+ <lne id="191" begin="23" end="24"/>
+ <lne id="192" begin="25" end="25"/>
+ <lne id="193" begin="25" end="26"/>
+ <lne id="194" begin="23" end="27"/>
+ <lne id="195" begin="20" end="28"/>
+ <lne id="196" begin="15" end="30"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="100" begin="19" end="29"/>
+ <lve slot="0" name="26" begin="0" end="52"/>
+ </localvariabletable>
+ </operation>
+ <operation name="197">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="41"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="70"/>
+ <call arg="198"/>
+ <call arg="77"/>
+ <if arg="199"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="200"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="201" begin="15" end="15"/>
+ <lne id="202" begin="15" end="16"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="38"/>
+ </localvariabletable>
+ </operation>
+ <operation name="203">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="117"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <pushf/>
+ <load arg="70"/>
+ <get arg="167"/>
+ <call arg="204"/>
+ <iterate/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <load arg="71"/>
+ <call arg="72"/>
+ <load arg="70"/>
+ <get arg="73"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="74"/>
+ <call arg="75"/>
+ <call arg="76"/>
+ <enditerate/>
+ <call arg="77"/>
+ <if arg="205"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="206"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="207" begin="16" end="16"/>
+ <lne id="208" begin="16" end="17"/>
+ <lne id="209" begin="16" end="18"/>
+ <lne id="210" begin="21" end="21"/>
+ <lne id="211" begin="22" end="22"/>
+ <lne id="212" begin="21" end="23"/>
+ <lne id="213" begin="24" end="24"/>
+ <lne id="214" begin="24" end="25"/>
+ <lne id="215" begin="26" end="26"/>
+ <lne id="216" begin="26" end="27"/>
+ <lne id="217" begin="24" end="28"/>
+ <lne id="218" begin="21" end="29"/>
+ <lne id="219" begin="15" end="31"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="100" begin="20" end="30"/>
+ <lve slot="0" name="26" begin="0" end="53"/>
+ </localvariabletable>
+ </operation>
+ <operation name="220">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="117"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="70"/>
+ <get arg="221"/>
+ <pushi arg="13"/>
+ <call arg="222"/>
+ <call arg="77"/>
+ <if arg="119"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="223"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="224" begin="15" end="15"/>
+ <lne id="225" begin="15" end="16"/>
+ <lne id="226" begin="17" end="17"/>
+ <lne id="227" begin="15" end="18"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="40"/>
+ </localvariabletable>
+ </operation>
+ <operation name="228">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="117"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="70"/>
+ <get arg="229"/>
+ <pushi arg="70"/>
+ <call arg="222"/>
+ <load arg="70"/>
+ <get arg="229"/>
+ <pushi arg="13"/>
+ <pushi arg="70"/>
+ <call arg="230"/>
+ <call arg="72"/>
+ <call arg="75"/>
+ <call arg="77"/>
+ <if arg="231"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="232"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="233" begin="15" end="15"/>
+ <lne id="234" begin="15" end="16"/>
+ <lne id="235" begin="17" end="17"/>
+ <lne id="236" begin="15" end="18"/>
+ <lne id="237" begin="19" end="19"/>
+ <lne id="238" begin="19" end="20"/>
+ <lne id="239" begin="21" end="21"/>
+ <lne id="240" begin="22" end="22"/>
+ <lne id="241" begin="21" end="23"/>
+ <lne id="242" begin="19" end="24"/>
+ <lne id="243" begin="15" end="25"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="47"/>
+ </localvariabletable>
+ </operation>
+ <operation name="244">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="117"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="70"/>
+ <get arg="229"/>
+ <load arg="70"/>
+ <get arg="221"/>
+ <call arg="222"/>
+ <load arg="70"/>
+ <get arg="229"/>
+ <pushi arg="13"/>
+ <pushi arg="70"/>
+ <call arg="230"/>
+ <call arg="72"/>
+ <call arg="75"/>
+ <call arg="77"/>
+ <if arg="245"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="246"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="247" begin="15" end="15"/>
+ <lne id="248" begin="15" end="16"/>
+ <lne id="249" begin="17" end="17"/>
+ <lne id="250" begin="17" end="18"/>
+ <lne id="251" begin="15" end="19"/>
+ <lne id="252" begin="20" end="20"/>
+ <lne id="253" begin="20" end="21"/>
+ <lne id="254" begin="22" end="22"/>
+ <lne id="255" begin="23" end="23"/>
+ <lne id="256" begin="22" end="24"/>
+ <lne id="257" begin="20" end="25"/>
+ <lne id="258" begin="15" end="26"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="48"/>
+ </localvariabletable>
+ </operation>
+ <operation name="259">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="117"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="70"/>
+ <get arg="229"/>
+ <pushi arg="70"/>
+ <call arg="74"/>
+ <load arg="70"/>
+ <get arg="260"/>
+ <pusht/>
+ <call arg="74"/>
+ <call arg="75"/>
+ <call arg="77"/>
+ <if arg="261"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="262"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="263" begin="15" end="15"/>
+ <lne id="264" begin="15" end="16"/>
+ <lne id="265" begin="17" end="17"/>
+ <lne id="266" begin="15" end="18"/>
+ <lne id="267" begin="19" end="19"/>
+ <lne id="268" begin="19" end="20"/>
+ <lne id="269" begin="21" end="21"/>
+ <lne id="270" begin="19" end="22"/>
+ <lne id="271" begin="15" end="23"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="45"/>
+ </localvariabletable>
+ </operation>
+ <operation name="272">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="126"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="70"/>
+ <get arg="166"/>
+ <push arg="41"/>
+ <push arg="29"/>
+ <findme/>
+ <call arg="273"/>
+ <call arg="118"/>
+ <call arg="77"/>
+ <if arg="274"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="275"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="276" begin="15" end="15"/>
+ <lne id="277" begin="15" end="16"/>
+ <lne id="278" begin="17" end="19"/>
+ <lne id="279" begin="15" end="20"/>
+ <lne id="280" begin="15" end="21"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="43"/>
+ </localvariabletable>
+ </operation>
+ <operation name="281">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="282"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="70"/>
+ <get arg="166"/>
+ <push arg="41"/>
+ <push arg="29"/>
+ <findme/>
+ <call arg="273"/>
+ <call arg="77"/>
+ <if arg="283"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="284"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="285" begin="15" end="15"/>
+ <lne id="286" begin="15" end="16"/>
+ <lne id="287" begin="17" end="19"/>
+ <lne id="288" begin="15" end="20"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="42"/>
+ </localvariabletable>
+ </operation>
+ <operation name="289">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="41"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="70"/>
+ <get arg="290"/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <getasm/>
+ <get arg="9"/>
+ <iterate/>
+ <store arg="71"/>
+ <load arg="71"/>
+ <get arg="291"/>
+ <load arg="70"/>
+ <call arg="292"/>
+ <call arg="77"/>
+ <if arg="142"/>
+ <load arg="71"/>
+ <call arg="293"/>
+ <enditerate/>
+ <call arg="294"/>
+ <call arg="75"/>
+ <call arg="77"/>
+ <if arg="295"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="296"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="297" begin="15" end="15"/>
+ <lne id="298" begin="15" end="16"/>
+ <lne id="299" begin="20" end="20"/>
+ <lne id="300" begin="20" end="21"/>
+ <lne id="301" begin="24" end="24"/>
+ <lne id="302" begin="24" end="25"/>
+ <lne id="303" begin="26" end="26"/>
+ <lne id="304" begin="24" end="27"/>
+ <lne id="305" begin="17" end="32"/>
+ <lne id="306" begin="17" end="33"/>
+ <lne id="307" begin="15" end="34"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="100" begin="23" end="31"/>
+ <lve slot="0" name="26" begin="0" end="56"/>
+ </localvariabletable>
+ </operation>
+ <operation name="308">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="36"/>
+ <push arg="29"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="67"/>
+ <call arg="68"/>
+ <call arg="69"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="70"/>
+ <get arg="73"/>
+ <pushi arg="70"/>
+ <pushi arg="70"/>
+ <call arg="309"/>
+ <store arg="71"/>
+ <load arg="71"/>
+ <load arg="71"/>
+ <call arg="310"/>
+ <call arg="72"/>
+ <call arg="77"/>
+ <if arg="130"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="79"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="311"/>
+ <call arg="81"/>
+ <dup/>
+ <push arg="82"/>
+ <load arg="70"/>
+ <call arg="83"/>
+ <dup/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <push arg="85"/>
+ <new/>
+ <call arg="86"/>
+ <call arg="87"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="312" begin="15" end="15"/>
+ <lne id="313" begin="15" end="16"/>
+ <lne id="314" begin="17" end="17"/>
+ <lne id="315" begin="18" end="18"/>
+ <lne id="316" begin="15" end="19"/>
+ <lne id="317" begin="15" end="19"/>
+ <lne id="318" begin="21" end="21"/>
+ <lne id="319" begin="22" end="22"/>
+ <lne id="320" begin="22" end="23"/>
+ <lne id="321" begin="21" end="24"/>
+ <lne id="322" begin="15" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="323" begin="20" end="24"/>
+ <lve slot="0" name="26" begin="0" end="46"/>
+ </localvariabletable>
+ </operation>
+ <operation name="324">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="325"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <load arg="13"/>
+ <get arg="3"/>
+ <call arg="326"/>
+ <if arg="327"/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <load arg="70"/>
+ <call arg="328"/>
+ <dup/>
+ <call arg="103"/>
+ <if arg="329"/>
+ <load arg="70"/>
+ <call arg="330"/>
+ <goto arg="331"/>
+ <pop/>
+ <load arg="70"/>
+ <goto arg="143"/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <load arg="70"/>
+ <iterate/>
+ <store arg="71"/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <call arg="332"/>
+ <call arg="333"/>
+ <enditerate/>
+ <call arg="334"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="100" begin="23" end="27"/>
+ <lve slot="0" name="26" begin="0" end="29"/>
+ <lve slot="1" name="335" begin="0" end="29"/>
+ </localvariabletable>
+ </operation>
+ <operation name="336">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="325"/>
+ <parameter name="71" type="337"/>
+ </parameters>
+ <code>
+ <load arg="13"/>
+ <get arg="1"/>
+ <load arg="70"/>
+ <call arg="328"/>
+ <load arg="70"/>
+ <load arg="71"/>
+ <call arg="338"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="6"/>
+ <lve slot="1" name="335" begin="0" end="6"/>
+ <lve slot="2" name="73" begin="0" end="6"/>
+ </localvariabletable>
+ </operation>
+ <operation name="339">
+ <context type="12"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="80"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="341"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="105"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="342"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="112"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="343"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="120"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="344"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="131"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="345"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="147"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="346"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="170"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="347"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="184"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="348"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="200"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="349"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="206"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="350"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="223"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="351"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="232"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="352"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="246"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="353"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="262"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="354"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="275"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="355"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="284"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="356"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="296"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="357"/>
+ <enditerate/>
+ <load arg="13"/>
+ <get arg="1"/>
+ <push arg="311"/>
+ <call arg="340"/>
+ <iterate/>
+ <store arg="70"/>
+ <load arg="13"/>
+ <load arg="70"/>
+ <call arg="358"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="100" begin="5" end="8"/>
+ <lve slot="1" name="100" begin="15" end="18"/>
+ <lve slot="1" name="100" begin="25" end="28"/>
+ <lve slot="1" name="100" begin="35" end="38"/>
+ <lve slot="1" name="100" begin="45" end="48"/>
+ <lve slot="1" name="100" begin="55" end="58"/>
+ <lve slot="1" name="100" begin="65" end="68"/>
+ <lve slot="1" name="100" begin="75" end="78"/>
+ <lve slot="1" name="100" begin="85" end="88"/>
+ <lve slot="1" name="100" begin="95" end="98"/>
+ <lve slot="1" name="100" begin="105" end="108"/>
+ <lve slot="1" name="100" begin="115" end="118"/>
+ <lve slot="1" name="100" begin="125" end="128"/>
+ <lve slot="1" name="100" begin="135" end="138"/>
+ <lve slot="1" name="100" begin="145" end="148"/>
+ <lve slot="1" name="100" begin="155" end="158"/>
+ <lve slot="1" name="100" begin="165" end="168"/>
+ <lve slot="1" name="100" begin="175" end="178"/>
+ <lve slot="0" name="26" begin="0" end="179"/>
+ </localvariabletable>
+ </operation>
+ <operation name="359">
+ <context type="360"/>
+ <parameters>
+ <parameter name="70" type="10"/>
+ </parameters>
+ <code>
+ <load arg="13"/>
+ <get arg="361"/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <store arg="71"/>
+ <load arg="13"/>
+ <get arg="291"/>
+ <iterate/>
+ <store arg="362"/>
+ <load arg="70"/>
+ <load arg="362"/>
+ <call arg="292"/>
+ <if arg="363"/>
+ <load arg="71"/>
+ <load arg="362"/>
+ <load arg="70"/>
+ <load arg="362"/>
+ <call arg="364"/>
+ <call arg="365"/>
+ <call arg="366"/>
+ <goto arg="367"/>
+ <load arg="71"/>
+ <store arg="71"/>
+ <enditerate/>
+ <load arg="71"/>
+ <call arg="366"/>
+ </code>
+ <linenumbertable>
+ <lne id="368" begin="0" end="0"/>
+ <lne id="369" begin="0" end="1"/>
+ <lne id="370" begin="2" end="4"/>
+ <lne id="371" begin="2" end="4"/>
+ <lne id="372" begin="6" end="6"/>
+ <lne id="373" begin="6" end="7"/>
+ <lne id="374" begin="10" end="10"/>
+ <lne id="375" begin="11" end="11"/>
+ <lne id="376" begin="10" end="12"/>
+ <lne id="377" begin="14" end="14"/>
+ <lne id="378" begin="15" end="15"/>
+ <lne id="379" begin="16" end="16"/>
+ <lne id="380" begin="17" end="17"/>
+ <lne id="381" begin="16" end="18"/>
+ <lne id="382" begin="15" end="19"/>
+ <lne id="383" begin="14" end="20"/>
+ <lne id="384" begin="22" end="22"/>
+ <lne id="385" begin="10" end="22"/>
+ <lne id="386" begin="2" end="25"/>
+ <lne id="387" begin="0" end="26"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="100" begin="9" end="23"/>
+ <lve slot="2" name="388" begin="5" end="25"/>
+ <lve slot="0" name="26" begin="0" end="26"/>
+ <lve slot="1" name="389" begin="0" end="26"/>
+ </localvariabletable>
+ </operation>
+ <operation name="390">
+ <context type="360"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="13"/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <load arg="13"/>
+ <call arg="293"/>
+ <call arg="365"/>
+ </code>
+ <linenumbertable>
+ <lne id="391" begin="0" end="0"/>
+ <lne id="392" begin="4" end="4"/>
+ <lne id="393" begin="1" end="5"/>
+ <lne id="394" begin="0" end="6"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="6"/>
+ </localvariabletable>
+ </operation>
+ <operation name="395">
+ <context type="360"/>
+ <parameters>
+ <parameter name="70" type="360"/>
+ <parameter name="71" type="10"/>
+ </parameters>
+ <code>
+ <load arg="13"/>
+ <get arg="291"/>
+ <call arg="294"/>
+ <if arg="396"/>
+ <pushf/>
+ <load arg="13"/>
+ <get arg="291"/>
+ <iterate/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <load arg="70"/>
+ <call arg="74"/>
+ <call arg="76"/>
+ <enditerate/>
+ <if arg="104"/>
+ <pushf/>
+ <store arg="362"/>
+ <load arg="13"/>
+ <get arg="291"/>
+ <iterate/>
+ <store arg="397"/>
+ <load arg="71"/>
+ <load arg="397"/>
+ <call arg="292"/>
+ <if arg="398"/>
+ <load arg="362"/>
+ <load arg="397"/>
+ <load arg="70"/>
+ <load arg="71"/>
+ <load arg="397"/>
+ <call arg="364"/>
+ <call arg="399"/>
+ <call arg="400"/>
+ <goto arg="401"/>
+ <load arg="362"/>
+ <store arg="362"/>
+ <enditerate/>
+ <load arg="362"/>
+ <goto arg="119"/>
+ <pusht/>
+ <goto arg="283"/>
+ <pushf/>
+ </code>
+ <linenumbertable>
+ <lne id="402" begin="0" end="0"/>
+ <lne id="403" begin="0" end="1"/>
+ <lne id="404" begin="0" end="2"/>
+ <lne id="405" begin="5" end="5"/>
+ <lne id="406" begin="5" end="6"/>
+ <lne id="407" begin="9" end="9"/>
+ <lne id="408" begin="10" end="10"/>
+ <lne id="409" begin="9" end="11"/>
+ <lne id="410" begin="4" end="13"/>
+ <lne id="411" begin="15" end="15"/>
+ <lne id="412" begin="15" end="15"/>
+ <lne id="413" begin="17" end="17"/>
+ <lne id="414" begin="17" end="18"/>
+ <lne id="415" begin="21" end="21"/>
+ <lne id="416" begin="22" end="22"/>
+ <lne id="417" begin="21" end="23"/>
+ <lne id="418" begin="25" end="25"/>
+ <lne id="419" begin="26" end="26"/>
+ <lne id="420" begin="27" end="27"/>
+ <lne id="421" begin="28" end="28"/>
+ <lne id="422" begin="29" end="29"/>
+ <lne id="423" begin="28" end="30"/>
+ <lne id="424" begin="26" end="31"/>
+ <lne id="425" begin="25" end="32"/>
+ <lne id="426" begin="34" end="34"/>
+ <lne id="427" begin="21" end="34"/>
+ <lne id="428" begin="15" end="37"/>
+ <lne id="429" begin="39" end="39"/>
+ <lne id="430" begin="4" end="39"/>
+ <lne id="431" begin="41" end="41"/>
+ <lne id="432" begin="0" end="41"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="100" begin="8" end="12"/>
+ <lve slot="4" name="100" begin="20" end="35"/>
+ <lve slot="3" name="388" begin="16" end="37"/>
+ <lve slot="0" name="26" begin="0" end="41"/>
+ <lve slot="1" name="433" begin="0" end="41"/>
+ <lve slot="2" name="389" begin="0" end="41"/>
+ </localvariabletable>
+ </operation>
+ <operation name="434">
+ <context type="360"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="13"/>
+ <load arg="13"/>
+ <push arg="66"/>
+ <push arg="15"/>
+ <new/>
+ <call arg="399"/>
+ </code>
+ <linenumbertable>
+ <lne id="435" begin="0" end="0"/>
+ <lne id="436" begin="1" end="1"/>
+ <lne id="437" begin="2" end="4"/>
+ <lne id="438" begin="0" end="5"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="26" begin="0" end="5"/>
+ </localvariabletable>
+ </operation>
+ <operation name="439">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="443"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="445"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="449" begin="11" end="16"/>
+ <lne id="450" begin="9" end="18"/>
+ <lne id="451" begin="21" end="21"/>
+ <lne id="452" begin="22" end="22"/>
+ <lne id="453" begin="22" end="23"/>
+ <lne id="454" begin="21" end="24"/>
+ <lne id="455" begin="19" end="26"/>
+ <lne id="456" begin="29" end="29"/>
+ <lne id="457" begin="29" end="30"/>
+ <lne id="458" begin="27" end="32"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="33"/>
+ <lve slot="3" name="84" begin="7" end="33"/>
+ <lve slot="0" name="26" begin="0" end="33"/>
+ <lve slot="1" name="459" begin="0" end="33"/>
+ </localvariabletable>
+ </operation>
+ <operation name="460">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="443"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="461"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="462"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="463" begin="11" end="16"/>
+ <lne id="464" begin="9" end="18"/>
+ <lne id="465" begin="21" end="21"/>
+ <lne id="466" begin="22" end="22"/>
+ <lne id="467" begin="22" end="23"/>
+ <lne id="468" begin="21" end="24"/>
+ <lne id="469" begin="25" end="25"/>
+ <lne id="470" begin="21" end="26"/>
+ <lne id="471" begin="19" end="28"/>
+ <lne id="472" begin="31" end="31"/>
+ <lne id="473" begin="31" end="32"/>
+ <lne id="474" begin="29" end="34"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="35"/>
+ <lve slot="3" name="84" begin="7" end="35"/>
+ <lve slot="0" name="26" begin="0" end="35"/>
+ <lve slot="1" name="459" begin="0" end="35"/>
+ </localvariabletable>
+ </operation>
+ <operation name="475">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="443"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="476"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="477"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="478" begin="11" end="16"/>
+ <lne id="479" begin="9" end="18"/>
+ <lne id="480" begin="21" end="21"/>
+ <lne id="481" begin="22" end="22"/>
+ <lne id="482" begin="22" end="23"/>
+ <lne id="483" begin="21" end="24"/>
+ <lne id="484" begin="25" end="25"/>
+ <lne id="485" begin="21" end="26"/>
+ <lne id="486" begin="19" end="28"/>
+ <lne id="487" begin="31" end="31"/>
+ <lne id="488" begin="31" end="32"/>
+ <lne id="489" begin="29" end="34"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="35"/>
+ <lve slot="3" name="84" begin="7" end="35"/>
+ <lve slot="0" name="26" begin="0" end="35"/>
+ <lve slot="1" name="459" begin="0" end="35"/>
+ </localvariabletable>
+ </operation>
+ <operation name="490">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="443"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="491"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="492"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="493" begin="11" end="16"/>
+ <lne id="494" begin="9" end="18"/>
+ <lne id="495" begin="21" end="21"/>
+ <lne id="496" begin="22" end="22"/>
+ <lne id="497" begin="22" end="23"/>
+ <lne id="498" begin="21" end="24"/>
+ <lne id="499" begin="25" end="25"/>
+ <lne id="500" begin="21" end="26"/>
+ <lne id="501" begin="19" end="28"/>
+ <lne id="502" begin="31" end="31"/>
+ <lne id="503" begin="31" end="32"/>
+ <lne id="504" begin="29" end="34"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="35"/>
+ <lve slot="3" name="84" begin="7" end="35"/>
+ <lve slot="0" name="26" begin="0" end="35"/>
+ <lve slot="1" name="459" begin="0" end="35"/>
+ </localvariabletable>
+ </operation>
+ <operation name="505">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="443"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="506"/>
+ <load arg="71"/>
+ <get arg="167"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="507"/>
+ <call arg="446"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="508"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="509" begin="11" end="16"/>
+ <lne id="510" begin="9" end="18"/>
+ <lne id="511" begin="21" end="21"/>
+ <lne id="512" begin="22" end="22"/>
+ <lne id="513" begin="22" end="23"/>
+ <lne id="514" begin="22" end="24"/>
+ <lne id="515" begin="21" end="25"/>
+ <lne id="516" begin="26" end="26"/>
+ <lne id="517" begin="21" end="27"/>
+ <lne id="518" begin="28" end="28"/>
+ <lne id="519" begin="28" end="29"/>
+ <lne id="520" begin="21" end="30"/>
+ <lne id="521" begin="31" end="31"/>
+ <lne id="522" begin="21" end="32"/>
+ <lne id="523" begin="19" end="34"/>
+ <lne id="524" begin="37" end="37"/>
+ <lne id="525" begin="37" end="38"/>
+ <lne id="526" begin="35" end="40"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="41"/>
+ <lve slot="3" name="84" begin="7" end="41"/>
+ <lve slot="0" name="26" begin="0" end="41"/>
+ <lve slot="1" name="459" begin="0" end="41"/>
+ </localvariabletable>
+ </operation>
+ <operation name="527">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="443"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="506"/>
+ <load arg="71"/>
+ <get arg="167"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="507"/>
+ <call arg="446"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="528"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="529" begin="11" end="16"/>
+ <lne id="530" begin="9" end="18"/>
+ <lne id="531" begin="21" end="21"/>
+ <lne id="532" begin="22" end="22"/>
+ <lne id="533" begin="22" end="23"/>
+ <lne id="534" begin="22" end="24"/>
+ <lne id="535" begin="21" end="25"/>
+ <lne id="536" begin="26" end="26"/>
+ <lne id="537" begin="21" end="27"/>
+ <lne id="538" begin="28" end="28"/>
+ <lne id="539" begin="28" end="29"/>
+ <lne id="540" begin="21" end="30"/>
+ <lne id="541" begin="31" end="31"/>
+ <lne id="542" begin="21" end="32"/>
+ <lne id="543" begin="19" end="34"/>
+ <lne id="544" begin="37" end="37"/>
+ <lne id="545" begin="37" end="38"/>
+ <lne id="546" begin="35" end="40"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="41"/>
+ <lve slot="3" name="84" begin="7" end="41"/>
+ <lve slot="0" name="26" begin="0" end="41"/>
+ <lve slot="1" name="459" begin="0" end="41"/>
+ </localvariabletable>
+ </operation>
+ <operation name="547">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="443"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="548"/>
+ <load arg="71"/>
+ <get arg="167"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="507"/>
+ <call arg="446"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="549"/>
+ <call arg="446"/>
+ <load arg="71"/>
+ <get arg="167"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="550"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="551" begin="11" end="16"/>
+ <lne id="552" begin="9" end="18"/>
+ <lne id="553" begin="21" end="21"/>
+ <lne id="554" begin="22" end="22"/>
+ <lne id="555" begin="22" end="23"/>
+ <lne id="556" begin="22" end="24"/>
+ <lne id="557" begin="21" end="25"/>
+ <lne id="558" begin="26" end="26"/>
+ <lne id="559" begin="21" end="27"/>
+ <lne id="560" begin="28" end="28"/>
+ <lne id="561" begin="28" end="29"/>
+ <lne id="562" begin="21" end="30"/>
+ <lne id="563" begin="31" end="31"/>
+ <lne id="564" begin="21" end="32"/>
+ <lne id="565" begin="33" end="33"/>
+ <lne id="566" begin="33" end="34"/>
+ <lne id="567" begin="33" end="35"/>
+ <lne id="568" begin="21" end="36"/>
+ <lne id="569" begin="37" end="37"/>
+ <lne id="570" begin="21" end="38"/>
+ <lne id="571" begin="19" end="40"/>
+ <lne id="572" begin="43" end="43"/>
+ <lne id="573" begin="43" end="44"/>
+ <lne id="574" begin="41" end="46"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="47"/>
+ <lve slot="3" name="84" begin="7" end="47"/>
+ <lve slot="0" name="26" begin="0" end="47"/>
+ <lve slot="1" name="459" begin="0" end="47"/>
+ </localvariabletable>
+ </operation>
+ <operation name="575">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="443"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="576"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="577"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="578" begin="11" end="16"/>
+ <lne id="579" begin="9" end="18"/>
+ <lne id="580" begin="21" end="21"/>
+ <lne id="581" begin="22" end="22"/>
+ <lne id="582" begin="22" end="23"/>
+ <lne id="583" begin="21" end="24"/>
+ <lne id="584" begin="25" end="25"/>
+ <lne id="585" begin="21" end="26"/>
+ <lne id="586" begin="19" end="28"/>
+ <lne id="587" begin="31" end="31"/>
+ <lne id="588" begin="31" end="32"/>
+ <lne id="589" begin="29" end="34"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="35"/>
+ <lve slot="3" name="84" begin="7" end="35"/>
+ <lve slot="0" name="26" begin="0" end="35"/>
+ <lve slot="1" name="459" begin="0" end="35"/>
+ </localvariabletable>
+ </operation>
+ <operation name="590">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="443"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="591"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="592"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="593" begin="11" end="16"/>
+ <lne id="594" begin="9" end="18"/>
+ <lne id="595" begin="21" end="21"/>
+ <lne id="596" begin="22" end="22"/>
+ <lne id="597" begin="22" end="23"/>
+ <lne id="598" begin="21" end="24"/>
+ <lne id="599" begin="25" end="25"/>
+ <lne id="600" begin="21" end="26"/>
+ <lne id="601" begin="19" end="28"/>
+ <lne id="602" begin="31" end="31"/>
+ <lne id="603" begin="31" end="32"/>
+ <lne id="604" begin="29" end="34"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="35"/>
+ <lve slot="3" name="84" begin="7" end="35"/>
+ <lve slot="0" name="26" begin="0" end="35"/>
+ <lve slot="1" name="459" begin="0" end="35"/>
+ </localvariabletable>
+ </operation>
+ <operation name="605">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="443"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="591"/>
+ <load arg="71"/>
+ <get arg="167"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="606"/>
+ <call arg="446"/>
+ <push arg="607"/>
+ <call arg="446"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="608" begin="11" end="16"/>
+ <lne id="609" begin="9" end="18"/>
+ <lne id="610" begin="21" end="21"/>
+ <lne id="611" begin="22" end="22"/>
+ <lne id="612" begin="22" end="23"/>
+ <lne id="613" begin="22" end="24"/>
+ <lne id="614" begin="21" end="25"/>
+ <lne id="615" begin="26" end="26"/>
+ <lne id="616" begin="21" end="27"/>
+ <lne id="617" begin="28" end="28"/>
+ <lne id="618" begin="21" end="29"/>
+ <lne id="619" begin="30" end="30"/>
+ <lne id="620" begin="30" end="31"/>
+ <lne id="621" begin="21" end="32"/>
+ <lne id="622" begin="19" end="34"/>
+ <lne id="623" begin="37" end="37"/>
+ <lne id="624" begin="37" end="38"/>
+ <lne id="625" begin="35" end="40"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="41"/>
+ <lve slot="3" name="84" begin="7" end="41"/>
+ <lve slot="0" name="26" begin="0" end="41"/>
+ <lve slot="1" name="459" begin="0" end="41"/>
+ </localvariabletable>
+ </operation>
+ <operation name="626">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="443"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="627"/>
+ <load arg="71"/>
+ <get arg="167"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="507"/>
+ <call arg="446"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="628"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="629" begin="11" end="16"/>
+ <lne id="630" begin="9" end="18"/>
+ <lne id="631" begin="21" end="21"/>
+ <lne id="632" begin="22" end="22"/>
+ <lne id="633" begin="22" end="23"/>
+ <lne id="634" begin="22" end="24"/>
+ <lne id="635" begin="21" end="25"/>
+ <lne id="636" begin="26" end="26"/>
+ <lne id="637" begin="21" end="27"/>
+ <lne id="638" begin="28" end="28"/>
+ <lne id="639" begin="28" end="29"/>
+ <lne id="640" begin="21" end="30"/>
+ <lne id="641" begin="31" end="31"/>
+ <lne id="642" begin="21" end="32"/>
+ <lne id="643" begin="19" end="34"/>
+ <lne id="644" begin="37" end="37"/>
+ <lne id="645" begin="37" end="38"/>
+ <lne id="646" begin="35" end="40"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="41"/>
+ <lve slot="3" name="84" begin="7" end="41"/>
+ <lve slot="0" name="26" begin="0" end="41"/>
+ <lve slot="1" name="459" begin="0" end="41"/>
+ </localvariabletable>
+ </operation>
+ <operation name="647">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="443"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="648"/>
+ <load arg="71"/>
+ <get arg="167"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="507"/>
+ <call arg="446"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="649"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="650" begin="11" end="16"/>
+ <lne id="651" begin="9" end="18"/>
+ <lne id="652" begin="21" end="21"/>
+ <lne id="653" begin="22" end="22"/>
+ <lne id="654" begin="22" end="23"/>
+ <lne id="655" begin="22" end="24"/>
+ <lne id="656" begin="21" end="25"/>
+ <lne id="657" begin="26" end="26"/>
+ <lne id="658" begin="21" end="27"/>
+ <lne id="659" begin="28" end="28"/>
+ <lne id="660" begin="28" end="29"/>
+ <lne id="661" begin="21" end="30"/>
+ <lne id="662" begin="31" end="31"/>
+ <lne id="663" begin="21" end="32"/>
+ <lne id="664" begin="19" end="34"/>
+ <lne id="665" begin="37" end="37"/>
+ <lne id="666" begin="37" end="38"/>
+ <lne id="667" begin="35" end="40"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="41"/>
+ <lve slot="3" name="84" begin="7" end="41"/>
+ <lve slot="0" name="26" begin="0" end="41"/>
+ <lve slot="1" name="459" begin="0" end="41"/>
+ </localvariabletable>
+ </operation>
+ <operation name="668">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="443"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="648"/>
+ <load arg="71"/>
+ <get arg="167"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="507"/>
+ <call arg="446"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="669"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="670" begin="11" end="16"/>
+ <lne id="671" begin="9" end="18"/>
+ <lne id="672" begin="21" end="21"/>
+ <lne id="673" begin="22" end="22"/>
+ <lne id="674" begin="22" end="23"/>
+ <lne id="675" begin="22" end="24"/>
+ <lne id="676" begin="21" end="25"/>
+ <lne id="677" begin="26" end="26"/>
+ <lne id="678" begin="21" end="27"/>
+ <lne id="679" begin="28" end="28"/>
+ <lne id="680" begin="28" end="29"/>
+ <lne id="681" begin="21" end="30"/>
+ <lne id="682" begin="31" end="31"/>
+ <lne id="683" begin="21" end="32"/>
+ <lne id="684" begin="19" end="34"/>
+ <lne id="685" begin="37" end="37"/>
+ <lne id="686" begin="37" end="38"/>
+ <lne id="687" begin="35" end="40"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="41"/>
+ <lve slot="3" name="84" begin="7" end="41"/>
+ <lve slot="0" name="26" begin="0" end="41"/>
+ <lve slot="1" name="459" begin="0" end="41"/>
+ </localvariabletable>
+ </operation>
+ <operation name="688">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="443"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="689"/>
+ <load arg="71"/>
+ <get arg="167"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="507"/>
+ <call arg="446"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="690"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="691" begin="11" end="16"/>
+ <lne id="692" begin="9" end="18"/>
+ <lne id="693" begin="21" end="21"/>
+ <lne id="694" begin="22" end="22"/>
+ <lne id="695" begin="22" end="23"/>
+ <lne id="696" begin="22" end="24"/>
+ <lne id="697" begin="21" end="25"/>
+ <lne id="698" begin="26" end="26"/>
+ <lne id="699" begin="21" end="27"/>
+ <lne id="700" begin="28" end="28"/>
+ <lne id="701" begin="28" end="29"/>
+ <lne id="702" begin="21" end="30"/>
+ <lne id="703" begin="31" end="31"/>
+ <lne id="704" begin="21" end="32"/>
+ <lne id="705" begin="19" end="34"/>
+ <lne id="706" begin="37" end="37"/>
+ <lne id="707" begin="37" end="38"/>
+ <lne id="708" begin="35" end="40"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="41"/>
+ <lve slot="3" name="84" begin="7" end="41"/>
+ <lve slot="0" name="26" begin="0" end="41"/>
+ <lve slot="1" name="459" begin="0" end="41"/>
+ </localvariabletable>
+ </operation>
+ <operation name="709">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="443"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="710"/>
+ <load arg="71"/>
+ <get arg="167"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="507"/>
+ <call arg="446"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="711"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="712" begin="11" end="16"/>
+ <lne id="713" begin="9" end="18"/>
+ <lne id="714" begin="21" end="21"/>
+ <lne id="715" begin="22" end="22"/>
+ <lne id="716" begin="22" end="23"/>
+ <lne id="717" begin="22" end="24"/>
+ <lne id="718" begin="21" end="25"/>
+ <lne id="719" begin="26" end="26"/>
+ <lne id="720" begin="21" end="27"/>
+ <lne id="721" begin="28" end="28"/>
+ <lne id="722" begin="28" end="29"/>
+ <lne id="723" begin="21" end="30"/>
+ <lne id="724" begin="31" end="31"/>
+ <lne id="725" begin="21" end="32"/>
+ <lne id="726" begin="19" end="34"/>
+ <lne id="727" begin="37" end="37"/>
+ <lne id="728" begin="37" end="38"/>
+ <lne id="729" begin="35" end="40"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="41"/>
+ <lve slot="3" name="84" begin="7" end="41"/>
+ <lve slot="0" name="26" begin="0" end="41"/>
+ <lve slot="1" name="459" begin="0" end="41"/>
+ </localvariabletable>
+ </operation>
+ <operation name="730">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="731"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="732"/>
+ <load arg="71"/>
+ <get arg="167"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="733"/>
+ <call arg="446"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="734"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="735" begin="11" end="16"/>
+ <lne id="736" begin="9" end="18"/>
+ <lne id="737" begin="21" end="21"/>
+ <lne id="738" begin="22" end="22"/>
+ <lne id="739" begin="22" end="23"/>
+ <lne id="740" begin="22" end="24"/>
+ <lne id="741" begin="21" end="25"/>
+ <lne id="742" begin="26" end="26"/>
+ <lne id="743" begin="21" end="27"/>
+ <lne id="744" begin="28" end="28"/>
+ <lne id="745" begin="28" end="29"/>
+ <lne id="746" begin="21" end="30"/>
+ <lne id="747" begin="31" end="31"/>
+ <lne id="748" begin="21" end="32"/>
+ <lne id="749" begin="19" end="34"/>
+ <lne id="750" begin="37" end="37"/>
+ <lne id="751" begin="37" end="38"/>
+ <lne id="752" begin="35" end="40"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="41"/>
+ <lve slot="3" name="84" begin="7" end="41"/>
+ <lve slot="0" name="26" begin="0" end="41"/>
+ <lve slot="1" name="459" begin="0" end="41"/>
+ </localvariabletable>
+ </operation>
+ <operation name="753">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="731"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="754"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="755"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="756" begin="11" end="16"/>
+ <lne id="757" begin="9" end="18"/>
+ <lne id="758" begin="21" end="21"/>
+ <lne id="759" begin="22" end="22"/>
+ <lne id="760" begin="22" end="23"/>
+ <lne id="761" begin="21" end="24"/>
+ <lne id="762" begin="25" end="25"/>
+ <lne id="763" begin="21" end="26"/>
+ <lne id="764" begin="19" end="28"/>
+ <lne id="765" begin="31" end="31"/>
+ <lne id="766" begin="31" end="32"/>
+ <lne id="767" begin="29" end="34"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="35"/>
+ <lve slot="3" name="84" begin="7" end="35"/>
+ <lve slot="0" name="26" begin="0" end="35"/>
+ <lve slot="1" name="459" begin="0" end="35"/>
+ </localvariabletable>
+ </operation>
+ <operation name="768">
+ <context type="12"/>
+ <parameters>
+ <parameter name="70" type="440"/>
+ </parameters>
+ <code>
+ <load arg="70"/>
+ <push arg="82"/>
+ <call arg="441"/>
+ <store arg="71"/>
+ <load arg="70"/>
+ <push arg="84"/>
+ <call arg="442"/>
+ <store arg="362"/>
+ <load arg="362"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="110"/>
+ <push arg="15"/>
+ <new/>
+ <dup/>
+ <push arg="769"/>
+ <set arg="73"/>
+ <call arg="332"/>
+ <set arg="444"/>
+ <dup/>
+ <load arg="13"/>
+ <push arg="770"/>
+ <load arg="71"/>
+ <get arg="73"/>
+ <call arg="446"/>
+ <push arg="771"/>
+ <call arg="446"/>
+ <call arg="332"/>
+ <set arg="447"/>
+ <dup/>
+ <load arg="13"/>
+ <load arg="71"/>
+ <get arg="448"/>
+ <call arg="332"/>
+ <set arg="448"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="772" begin="11" end="16"/>
+ <lne id="773" begin="9" end="18"/>
+ <lne id="774" begin="21" end="21"/>
+ <lne id="775" begin="22" end="22"/>
+ <lne id="776" begin="22" end="23"/>
+ <lne id="777" begin="21" end="24"/>
+ <lne id="778" begin="25" end="25"/>
+ <lne id="779" begin="21" end="26"/>
+ <lne id="780" begin="19" end="28"/>
+ <lne id="781" begin="31" end="31"/>
+ <lne id="782" begin="31" end="32"/>
+ <lne id="783" begin="29" end="34"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="82" begin="3" end="35"/>
+ <lve slot="3" name="84" begin="7" end="35"/>
+ <lve slot="0" name="26" begin="0" end="35"/>
+ <lve slot="1" name="459" begin="0" end="35"/>
+ </localvariabletable>
+ </operation>
+</asm>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/Outline/Compiler/KM32Outline.asm b/plugins/org.eclipse.gmt.tcs.dsls/resources/Outline/Compiler/KM32Outline.asm
new file mode 100644
index 0000000..c94eb78
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/Outline/Compiler/KM32Outline.asm
@@ -0,0 +1,975 @@
+<?xml version = '1.0' encoding = 'ISO-8859-1' ?>
+<asm name="0">
+ <cp>
+ <constant value="KM32Outline"/>
+ <constant value="links"/>
+ <constant value="NTransientLinkSet;"/>
+ <constant value="col"/>
+ <constant value="J;"/>
+ <constant value="allClasses"/>
+ <constant value="QMKM3!Class;"/>
+ <constant value="hasName"/>
+ <constant value="B"/>
+ <constant value="main"/>
+ <constant value="A"/>
+ <constant value="0"/>
+ <constant value="OclParametrizedType"/>
+ <constant value="#native"/>
+ <constant value="Collection"/>
+ <constant value="J.setName(S):V"/>
+ <constant value="OclSimpleType"/>
+ <constant value="OclAny"/>
+ <constant value="J.setElementType(J):V"/>
+ <constant value="TransientLinkSet"/>
+ <constant value="Package"/>
+ <constant value="KM3"/>
+ <constant value="__initallClasses"/>
+ <constant value="J.registerHelperAttribute(SS):V"/>
+ <constant value="Class"/>
+ <constant value="__inithasName"/>
+ <constant value="A.__matcher__():V"/>
+ <constant value="A.__exec__():V"/>
+ <constant value="self"/>
+ <constant value="MKM3!Package;"/>
+ <constant value="Sequence"/>
+ <constant value="1"/>
+ <constant value="contents"/>
+ <constant value="2"/>
+ <constant value="J.oclIsKindOf(J):J"/>
+ <constant value="27"/>
+ <constant value="22"/>
+ <constant value="26"/>
+ <constant value="J.union(J):J"/>
+ <constant value="30"/>
+ <constant value="J.including(J):J"/>
+ <constant value="7:56-7:67"/>
+ <constant value="7:28-7:67"/>
+ <constant value="7:2-7:6"/>
+ <constant value="7:2-7:15"/>
+ <constant value="8:6-8:7"/>
+ <constant value="8:20-8:29"/>
+ <constant value="8:6-8:30"/>
+ <constant value="10:11-10:12"/>
+ <constant value="10:25-10:36"/>
+ <constant value="10:11-10:37"/>
+ <constant value="13:4-13:7"/>
+ <constant value="11:4-11:7"/>
+ <constant value="11:15-11:16"/>
+ <constant value="11:15-11:27"/>
+ <constant value="11:4-11:28"/>
+ <constant value="10:8-14:8"/>
+ <constant value="9:4-9:7"/>
+ <constant value="9:19-9:20"/>
+ <constant value="9:4-9:21"/>
+ <constant value="8:3-14:14"/>
+ <constant value="7:2-15:3"/>
+ <constant value="e"/>
+ <constant value="acc"/>
+ <constant value="MKM3!Class;"/>
+ <constant value="allStructuralFeatures"/>
+ <constant value="name"/>
+ <constant value="J.=(J):J"/>
+ <constant value="B.or(B):B"/>
+ <constant value="27:2-27:6"/>
+ <constant value="27:2-27:28"/>
+ <constant value="27:41-27:42"/>
+ <constant value="27:41-27:47"/>
+ <constant value="27:50-27:56"/>
+ <constant value="27:41-27:56"/>
+ <constant value="27:2-27:57"/>
+ <constant value="__matcher__"/>
+ <constant value="A.__matchMetamodel2Outline():V"/>
+ <constant value="A.__matchUnnamedClass2Node():V"/>
+ <constant value="A.__matchNamedClass2Node():V"/>
+ <constant value="__matchMetamodel2Outline"/>
+ <constant value="Metamodel"/>
+ <constant value="IN"/>
+ <constant value="MMOF!Classifier;.allInstancesFrom(S):QJ"/>
+ <constant value="CJ.union(CJ):CJ"/>
+ <constant value="B.not():B"/>
+ <constant value="37"/>
+ <constant value="TransientLink"/>
+ <constant value="Metamodel2Outline"/>
+ <constant value="NTransientLink;.setRule(MATL!Rule;):V"/>
+ <constant value="s"/>
+ <constant value="NTransientLink;.addSourceElement(SJ):V"/>
+ <constant value="t"/>
+ <constant value="Outline"/>
+ <constant value="NTransientLink;.addTargetElement(SJ):V"/>
+ <constant value="NTransientLinkSet;.addLink(NTransientLink;):V"/>
+ <constant value="21:7-21:22"/>
+ <constant value="__matchUnnamedClass2Node"/>
+ <constant value="J.not():J"/>
+ <constant value="51"/>
+ <constant value="UnnamedClass2Node"/>
+ <constant value="Node"/>
+ <constant value="label"/>
+ <constant value="Label"/>
+ <constant value="map"/>
+ <constant value="Map"/>
+ <constant value="32:8-32:9"/>
+ <constant value="32:8-32:17"/>
+ <constant value="32:4-32:17"/>
+ <constant value="35:7-35:19"/>
+ <constant value="41:11-41:24"/>
+ <constant value="44:9-44:22"/>
+ <constant value="__matchNamedClass2Node"/>
+ <constant value="62"/>
+ <constant value="NamedClass2Node"/>
+ <constant value="colon"/>
+ <constant value="LabelSuite"/>
+ <constant value="52:4-52:5"/>
+ <constant value="52:4-52:13"/>
+ <constant value="55:7-55:19"/>
+ <constant value="61:11-61:24"/>
+ <constant value="65:9-65:22"/>
+ <constant value="68:11-68:29"/>
+ <constant value="71:10-71:28"/>
+ <constant value="__resolve__"/>
+ <constant value="J"/>
+ <constant value="J.oclIsKindOf(J):B"/>
+ <constant value="18"/>
+ <constant value="NTransientLinkSet;.getLinkBySourceElement(S):QNTransientLink;"/>
+ <constant value="J.oclIsUndefined():J"/>
+ <constant value="15"/>
+ <constant value="NTransientLink;.getTargetFromSource(J):J"/>
+ <constant value="17"/>
+ <constant value="A.__resolve__(J):J"/>
+ <constant value="QJ.including(J):QJ"/>
+ <constant value="QJ.flatten():QJ"/>
+ <constant value="value"/>
+ <constant value="resolveTemp"/>
+ <constant value="S"/>
+ <constant value="NTransientLink;.getNamedTargetFromSource(JS):J"/>
+ <constant value="__exec__"/>
+ <constant value="NTransientLinkSet;.getLinksByRule(S):QNTransientLink;"/>
+ <constant value="A.__applyMetamodel2Outline(NTransientLink;):V"/>
+ <constant value="A.__applyUnnamedClass2Node(NTransientLink;):V"/>
+ <constant value="A.__applyNamedClass2Node(NTransientLink;):V"/>
+ <constant value="__applyMetamodel2Outline"/>
+ <constant value="NTransientLink;"/>
+ <constant value="NTransientLink;.getSourceElement(S):J"/>
+ <constant value="NTransientLink;.getTargetElement(S):J"/>
+ <constant value="3"/>
+ <constant value="4"/>
+ <constant value="CJ.including(J):CJ"/>
+ <constant value="J.flatten():J"/>
+ <constant value="nodes"/>
+ <constant value="22:13-22:14"/>
+ <constant value="22:13-22:23"/>
+ <constant value="22:37-22:38"/>
+ <constant value="22:37-22:49"/>
+ <constant value="22:13-22:50"/>
+ <constant value="22:13-22:61"/>
+ <constant value="22:4-22:61"/>
+ <constant value="link"/>
+ <constant value="__applyUnnamedClass2Node"/>
+ <constant value="5"/>
+ <constant value="dummy"/>
+ <constant value="icon"/>
+ <constant value="mapping"/>
+ <constant value="mapString"/>
+ <constant value="36:12-36:13"/>
+ <constant value="36:12-36:18"/>
+ <constant value="36:4-36:18"/>
+ <constant value="37:13-37:18"/>
+ <constant value="37:4-37:18"/>
+ <constant value="38:12-38:19"/>
+ <constant value="38:4-38:19"/>
+ <constant value="39:15-39:18"/>
+ <constant value="39:4-39:18"/>
+ <constant value="42:13-42:14"/>
+ <constant value="42:13-42:19"/>
+ <constant value="42:4-42:19"/>
+ <constant value="45:17-45:18"/>
+ <constant value="45:17-45:23"/>
+ <constant value="45:4-45:23"/>
+ <constant value="__applyNamedClass2Node"/>
+ <constant value="6"/>
+ <constant value="7"/>
+ <constant value="labelSuite"/>
+ <constant value=" : "/>
+ <constant value="methodCall"/>
+ <constant value="56:12-56:13"/>
+ <constant value="56:12-56:18"/>
+ <constant value="56:4-56:18"/>
+ <constant value="57:13-57:18"/>
+ <constant value="57:4-57:18"/>
+ <constant value="58:12-58:19"/>
+ <constant value="58:4-58:19"/>
+ <constant value="59:15-59:18"/>
+ <constant value="59:4-59:18"/>
+ <constant value="62:13-62:14"/>
+ <constant value="62:13-62:19"/>
+ <constant value="62:4-62:19"/>
+ <constant value="63:28-63:33"/>
+ <constant value="63:35-63:39"/>
+ <constant value="63:18-63:40"/>
+ <constant value="63:4-63:40"/>
+ <constant value="66:17-66:18"/>
+ <constant value="66:17-66:23"/>
+ <constant value="66:4-66:23"/>
+ <constant value="69:13-69:18"/>
+ <constant value="69:4-69:18"/>
+ <constant value="72:18-72:24"/>
+ <constant value="72:4-72:24"/>
+ </cp>
+ <field name="1" type="2"/>
+ <field name="3" type="4"/>
+ <field name="5" type="6"/>
+ <field name="7" type="8"/>
+ <operation name="9">
+ <context type="10"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="11"/>
+ <push arg="12"/>
+ <push arg="13"/>
+ <new/>
+ <dup/>
+ <push arg="14"/>
+ <call arg="15"/>
+ <dup/>
+ <push arg="16"/>
+ <push arg="13"/>
+ <new/>
+ <dup/>
+ <push arg="17"/>
+ <call arg="15"/>
+ <call arg="18"/>
+ <set arg="3"/>
+ <load arg="11"/>
+ <push arg="19"/>
+ <push arg="13"/>
+ <new/>
+ <set arg="1"/>
+ <push arg="20"/>
+ <push arg="21"/>
+ <findme/>
+ <push arg="5"/>
+ <push arg="22"/>
+ <call arg="23"/>
+ <push arg="24"/>
+ <push arg="21"/>
+ <findme/>
+ <push arg="7"/>
+ <push arg="25"/>
+ <call arg="23"/>
+ <load arg="11"/>
+ <call arg="26"/>
+ <load arg="11"/>
+ <call arg="27"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="28" begin="0" end="36"/>
+ </localvariabletable>
+ </operation>
+ <operation name="22">
+ <context type="29"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="30"/>
+ <push arg="13"/>
+ <new/>
+ <store arg="31"/>
+ <load arg="11"/>
+ <get arg="32"/>
+ <iterate/>
+ <store arg="33"/>
+ <load arg="33"/>
+ <push arg="24"/>
+ <push arg="21"/>
+ <findme/>
+ <call arg="34"/>
+ <if arg="35"/>
+ <load arg="33"/>
+ <push arg="20"/>
+ <push arg="21"/>
+ <findme/>
+ <call arg="34"/>
+ <if arg="36"/>
+ <load arg="31"/>
+ <goto arg="37"/>
+ <load arg="31"/>
+ <load arg="33"/>
+ <get arg="5"/>
+ <call arg="38"/>
+ <goto arg="39"/>
+ <load arg="31"/>
+ <load arg="33"/>
+ <call arg="40"/>
+ <store arg="31"/>
+ <enditerate/>
+ <load arg="31"/>
+ </code>
+ <linenumbertable>
+ <lne id="41" begin="0" end="2"/>
+ <lne id="42" begin="0" end="2"/>
+ <lne id="43" begin="4" end="4"/>
+ <lne id="44" begin="4" end="5"/>
+ <lne id="45" begin="8" end="8"/>
+ <lne id="46" begin="9" end="11"/>
+ <lne id="47" begin="8" end="12"/>
+ <lne id="48" begin="14" end="14"/>
+ <lne id="49" begin="15" end="17"/>
+ <lne id="50" begin="14" end="18"/>
+ <lne id="51" begin="20" end="20"/>
+ <lne id="52" begin="22" end="22"/>
+ <lne id="53" begin="23" end="23"/>
+ <lne id="54" begin="23" end="24"/>
+ <lne id="55" begin="22" end="25"/>
+ <lne id="56" begin="14" end="25"/>
+ <lne id="57" begin="27" end="27"/>
+ <lne id="58" begin="28" end="28"/>
+ <lne id="59" begin="27" end="29"/>
+ <lne id="60" begin="8" end="29"/>
+ <lne id="61" begin="0" end="32"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="62" begin="7" end="30"/>
+ <lve slot="1" name="63" begin="3" end="32"/>
+ <lve slot="0" name="28" begin="0" end="32"/>
+ </localvariabletable>
+ </operation>
+ <operation name="25">
+ <context type="64"/>
+ <parameters>
+ </parameters>
+ <code>
+ <pushf/>
+ <load arg="11"/>
+ <get arg="65"/>
+ <iterate/>
+ <store arg="31"/>
+ <load arg="31"/>
+ <get arg="66"/>
+ <push arg="66"/>
+ <call arg="67"/>
+ <call arg="68"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="69" begin="1" end="1"/>
+ <lne id="70" begin="1" end="2"/>
+ <lne id="71" begin="5" end="5"/>
+ <lne id="72" begin="5" end="6"/>
+ <lne id="73" begin="7" end="7"/>
+ <lne id="74" begin="5" end="8"/>
+ <lne id="75" begin="0" end="10"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="62" begin="4" end="9"/>
+ <lve slot="0" name="28" begin="0" end="10"/>
+ </localvariabletable>
+ </operation>
+ <operation name="76">
+ <context type="10"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="11"/>
+ <call arg="77"/>
+ <load arg="11"/>
+ <call arg="78"/>
+ <load arg="11"/>
+ <call arg="79"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="28" begin="0" end="5"/>
+ </localvariabletable>
+ </operation>
+ <operation name="80">
+ <context type="10"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="81"/>
+ <push arg="21"/>
+ <findme/>
+ <push arg="30"/>
+ <push arg="13"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="82"/>
+ <call arg="83"/>
+ <call arg="84"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="31"/>
+ <pusht/>
+ <call arg="85"/>
+ <if arg="86"/>
+ <load arg="11"/>
+ <get arg="1"/>
+ <push arg="87"/>
+ <push arg="13"/>
+ <new/>
+ <dup/>
+ <push arg="88"/>
+ <call arg="89"/>
+ <dup/>
+ <push arg="90"/>
+ <load arg="31"/>
+ <call arg="91"/>
+ <dup/>
+ <push arg="92"/>
+ <push arg="93"/>
+ <push arg="93"/>
+ <new/>
+ <call arg="94"/>
+ <call arg="95"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="96" begin="32" end="34"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="90" begin="14" end="36"/>
+ <lve slot="0" name="28" begin="0" end="37"/>
+ </localvariabletable>
+ </operation>
+ <operation name="97">
+ <context type="10"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="24"/>
+ <push arg="21"/>
+ <findme/>
+ <push arg="30"/>
+ <push arg="13"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="82"/>
+ <call arg="83"/>
+ <call arg="84"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="31"/>
+ <load arg="31"/>
+ <get arg="7"/>
+ <call arg="98"/>
+ <call arg="85"/>
+ <if arg="99"/>
+ <load arg="11"/>
+ <get arg="1"/>
+ <push arg="87"/>
+ <push arg="13"/>
+ <new/>
+ <dup/>
+ <push arg="100"/>
+ <call arg="89"/>
+ <dup/>
+ <push arg="90"/>
+ <load arg="31"/>
+ <call arg="91"/>
+ <dup/>
+ <push arg="92"/>
+ <push arg="101"/>
+ <push arg="93"/>
+ <new/>
+ <call arg="94"/>
+ <dup/>
+ <push arg="102"/>
+ <push arg="103"/>
+ <push arg="93"/>
+ <new/>
+ <call arg="94"/>
+ <dup/>
+ <push arg="104"/>
+ <push arg="105"/>
+ <push arg="93"/>
+ <new/>
+ <call arg="94"/>
+ <call arg="95"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="106" begin="15" end="15"/>
+ <lne id="107" begin="15" end="16"/>
+ <lne id="108" begin="15" end="17"/>
+ <lne id="109" begin="34" end="36"/>
+ <lne id="110" begin="40" end="42"/>
+ <lne id="111" begin="46" end="48"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="90" begin="14" end="50"/>
+ <lve slot="0" name="28" begin="0" end="51"/>
+ </localvariabletable>
+ </operation>
+ <operation name="112">
+ <context type="10"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="24"/>
+ <push arg="21"/>
+ <findme/>
+ <push arg="30"/>
+ <push arg="13"/>
+ <new/>
+ <swap/>
+ <dup_x1/>
+ <push arg="82"/>
+ <call arg="83"/>
+ <call arg="84"/>
+ <swap/>
+ <pop/>
+ <iterate/>
+ <store arg="31"/>
+ <load arg="31"/>
+ <get arg="7"/>
+ <call arg="85"/>
+ <if arg="113"/>
+ <load arg="11"/>
+ <get arg="1"/>
+ <push arg="87"/>
+ <push arg="13"/>
+ <new/>
+ <dup/>
+ <push arg="114"/>
+ <call arg="89"/>
+ <dup/>
+ <push arg="90"/>
+ <load arg="31"/>
+ <call arg="91"/>
+ <dup/>
+ <push arg="92"/>
+ <push arg="101"/>
+ <push arg="93"/>
+ <new/>
+ <call arg="94"/>
+ <dup/>
+ <push arg="102"/>
+ <push arg="103"/>
+ <push arg="93"/>
+ <new/>
+ <call arg="94"/>
+ <dup/>
+ <push arg="104"/>
+ <push arg="105"/>
+ <push arg="93"/>
+ <new/>
+ <call arg="94"/>
+ <dup/>
+ <push arg="115"/>
+ <push arg="116"/>
+ <push arg="93"/>
+ <new/>
+ <call arg="94"/>
+ <dup/>
+ <push arg="66"/>
+ <push arg="116"/>
+ <push arg="93"/>
+ <new/>
+ <call arg="94"/>
+ <call arg="95"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="117" begin="15" end="15"/>
+ <lne id="118" begin="15" end="16"/>
+ <lne id="119" begin="33" end="35"/>
+ <lne id="120" begin="39" end="41"/>
+ <lne id="121" begin="45" end="47"/>
+ <lne id="122" begin="51" end="53"/>
+ <lne id="123" begin="57" end="59"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="90" begin="14" end="61"/>
+ <lve slot="0" name="28" begin="0" end="62"/>
+ </localvariabletable>
+ </operation>
+ <operation name="124">
+ <context type="10"/>
+ <parameters>
+ <parameter name="31" type="125"/>
+ </parameters>
+ <code>
+ <load arg="31"/>
+ <load arg="11"/>
+ <get arg="3"/>
+ <call arg="126"/>
+ <if arg="127"/>
+ <load arg="11"/>
+ <get arg="1"/>
+ <load arg="31"/>
+ <call arg="128"/>
+ <dup/>
+ <call arg="129"/>
+ <if arg="130"/>
+ <load arg="31"/>
+ <call arg="131"/>
+ <goto arg="132"/>
+ <pop/>
+ <load arg="31"/>
+ <goto arg="39"/>
+ <push arg="30"/>
+ <push arg="13"/>
+ <new/>
+ <load arg="31"/>
+ <iterate/>
+ <store arg="33"/>
+ <load arg="11"/>
+ <load arg="33"/>
+ <call arg="133"/>
+ <call arg="134"/>
+ <enditerate/>
+ <call arg="135"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="62" begin="23" end="27"/>
+ <lve slot="0" name="28" begin="0" end="29"/>
+ <lve slot="1" name="136" begin="0" end="29"/>
+ </localvariabletable>
+ </operation>
+ <operation name="137">
+ <context type="10"/>
+ <parameters>
+ <parameter name="31" type="125"/>
+ <parameter name="33" type="138"/>
+ </parameters>
+ <code>
+ <load arg="11"/>
+ <get arg="1"/>
+ <load arg="31"/>
+ <call arg="128"/>
+ <load arg="31"/>
+ <load arg="33"/>
+ <call arg="139"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="28" begin="0" end="6"/>
+ <lve slot="1" name="136" begin="0" end="6"/>
+ <lve slot="2" name="66" begin="0" end="6"/>
+ </localvariabletable>
+ </operation>
+ <operation name="140">
+ <context type="10"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="11"/>
+ <get arg="1"/>
+ <push arg="88"/>
+ <call arg="141"/>
+ <iterate/>
+ <store arg="31"/>
+ <load arg="11"/>
+ <load arg="31"/>
+ <call arg="142"/>
+ <enditerate/>
+ <load arg="11"/>
+ <get arg="1"/>
+ <push arg="100"/>
+ <call arg="141"/>
+ <iterate/>
+ <store arg="31"/>
+ <load arg="11"/>
+ <load arg="31"/>
+ <call arg="143"/>
+ <enditerate/>
+ <load arg="11"/>
+ <get arg="1"/>
+ <push arg="114"/>
+ <call arg="141"/>
+ <iterate/>
+ <store arg="31"/>
+ <load arg="11"/>
+ <load arg="31"/>
+ <call arg="144"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="62" begin="5" end="8"/>
+ <lve slot="1" name="62" begin="15" end="18"/>
+ <lve slot="1" name="62" begin="25" end="28"/>
+ <lve slot="0" name="28" begin="0" end="29"/>
+ </localvariabletable>
+ </operation>
+ <operation name="145">
+ <context type="10"/>
+ <parameters>
+ <parameter name="31" type="146"/>
+ </parameters>
+ <code>
+ <load arg="31"/>
+ <push arg="90"/>
+ <call arg="147"/>
+ <store arg="33"/>
+ <load arg="31"/>
+ <push arg="92"/>
+ <call arg="148"/>
+ <store arg="149"/>
+ <load arg="149"/>
+ <dup/>
+ <load arg="11"/>
+ <push arg="30"/>
+ <push arg="13"/>
+ <new/>
+ <load arg="33"/>
+ <get arg="32"/>
+ <iterate/>
+ <store arg="150"/>
+ <load arg="150"/>
+ <get arg="5"/>
+ <call arg="151"/>
+ <enditerate/>
+ <call arg="152"/>
+ <call arg="133"/>
+ <set arg="153"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="154" begin="14" end="14"/>
+ <lne id="155" begin="14" end="15"/>
+ <lne id="156" begin="18" end="18"/>
+ <lne id="157" begin="18" end="19"/>
+ <lne id="158" begin="11" end="21"/>
+ <lne id="159" begin="11" end="22"/>
+ <lne id="160" begin="9" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="4" name="62" begin="17" end="20"/>
+ <lve slot="2" name="90" begin="3" end="25"/>
+ <lve slot="3" name="92" begin="7" end="25"/>
+ <lve slot="0" name="28" begin="0" end="25"/>
+ <lve slot="1" name="161" begin="0" end="25"/>
+ </localvariabletable>
+ </operation>
+ <operation name="162">
+ <context type="10"/>
+ <parameters>
+ <parameter name="31" type="146"/>
+ </parameters>
+ <code>
+ <load arg="31"/>
+ <push arg="90"/>
+ <call arg="147"/>
+ <store arg="33"/>
+ <load arg="31"/>
+ <push arg="92"/>
+ <call arg="148"/>
+ <store arg="149"/>
+ <load arg="31"/>
+ <push arg="102"/>
+ <call arg="148"/>
+ <store arg="150"/>
+ <load arg="31"/>
+ <push arg="104"/>
+ <call arg="148"/>
+ <store arg="163"/>
+ <load arg="149"/>
+ <dup/>
+ <load arg="11"/>
+ <load arg="33"/>
+ <get arg="66"/>
+ <call arg="133"/>
+ <set arg="66"/>
+ <dup/>
+ <load arg="11"/>
+ <load arg="150"/>
+ <call arg="133"/>
+ <set arg="102"/>
+ <dup/>
+ <load arg="11"/>
+ <push arg="164"/>
+ <call arg="133"/>
+ <set arg="165"/>
+ <dup/>
+ <load arg="11"/>
+ <load arg="163"/>
+ <call arg="133"/>
+ <set arg="166"/>
+ <pop/>
+ <load arg="150"/>
+ <dup/>
+ <load arg="11"/>
+ <load arg="33"/>
+ <get arg="66"/>
+ <call arg="133"/>
+ <set arg="102"/>
+ <pop/>
+ <load arg="163"/>
+ <dup/>
+ <load arg="11"/>
+ <load arg="33"/>
+ <get arg="66"/>
+ <call arg="133"/>
+ <set arg="167"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="168" begin="19" end="19"/>
+ <lne id="169" begin="19" end="20"/>
+ <lne id="170" begin="17" end="22"/>
+ <lne id="171" begin="25" end="25"/>
+ <lne id="172" begin="23" end="27"/>
+ <lne id="173" begin="30" end="30"/>
+ <lne id="174" begin="28" end="32"/>
+ <lne id="175" begin="35" end="35"/>
+ <lne id="176" begin="33" end="37"/>
+ <lne id="177" begin="42" end="42"/>
+ <lne id="178" begin="42" end="43"/>
+ <lne id="179" begin="40" end="45"/>
+ <lne id="180" begin="50" end="50"/>
+ <lne id="181" begin="50" end="51"/>
+ <lne id="182" begin="48" end="53"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="90" begin="3" end="54"/>
+ <lve slot="3" name="92" begin="7" end="54"/>
+ <lve slot="4" name="102" begin="11" end="54"/>
+ <lve slot="5" name="104" begin="15" end="54"/>
+ <lve slot="0" name="28" begin="0" end="54"/>
+ <lve slot="1" name="161" begin="0" end="54"/>
+ </localvariabletable>
+ </operation>
+ <operation name="183">
+ <context type="10"/>
+ <parameters>
+ <parameter name="31" type="146"/>
+ </parameters>
+ <code>
+ <load arg="31"/>
+ <push arg="90"/>
+ <call arg="147"/>
+ <store arg="33"/>
+ <load arg="31"/>
+ <push arg="92"/>
+ <call arg="148"/>
+ <store arg="149"/>
+ <load arg="31"/>
+ <push arg="102"/>
+ <call arg="148"/>
+ <store arg="150"/>
+ <load arg="31"/>
+ <push arg="104"/>
+ <call arg="148"/>
+ <store arg="163"/>
+ <load arg="31"/>
+ <push arg="115"/>
+ <call arg="148"/>
+ <store arg="184"/>
+ <load arg="31"/>
+ <push arg="66"/>
+ <call arg="148"/>
+ <store arg="185"/>
+ <load arg="149"/>
+ <dup/>
+ <load arg="11"/>
+ <load arg="33"/>
+ <get arg="66"/>
+ <call arg="133"/>
+ <set arg="66"/>
+ <dup/>
+ <load arg="11"/>
+ <load arg="150"/>
+ <call arg="133"/>
+ <set arg="102"/>
+ <dup/>
+ <load arg="11"/>
+ <push arg="164"/>
+ <call arg="133"/>
+ <set arg="165"/>
+ <dup/>
+ <load arg="11"/>
+ <load arg="163"/>
+ <call arg="133"/>
+ <set arg="166"/>
+ <pop/>
+ <load arg="150"/>
+ <dup/>
+ <load arg="11"/>
+ <load arg="33"/>
+ <get arg="66"/>
+ <call arg="133"/>
+ <set arg="102"/>
+ <dup/>
+ <load arg="11"/>
+ <push arg="30"/>
+ <push arg="13"/>
+ <new/>
+ <load arg="184"/>
+ <call arg="151"/>
+ <load arg="185"/>
+ <call arg="151"/>
+ <call arg="133"/>
+ <set arg="186"/>
+ <pop/>
+ <load arg="163"/>
+ <dup/>
+ <load arg="11"/>
+ <load arg="33"/>
+ <get arg="66"/>
+ <call arg="133"/>
+ <set arg="167"/>
+ <pop/>
+ <load arg="184"/>
+ <dup/>
+ <load arg="11"/>
+ <push arg="187"/>
+ <call arg="133"/>
+ <set arg="102"/>
+ <pop/>
+ <load arg="185"/>
+ <dup/>
+ <load arg="11"/>
+ <push arg="66"/>
+ <call arg="133"/>
+ <set arg="188"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="189" begin="27" end="27"/>
+ <lne id="190" begin="27" end="28"/>
+ <lne id="191" begin="25" end="30"/>
+ <lne id="192" begin="33" end="33"/>
+ <lne id="193" begin="31" end="35"/>
+ <lne id="194" begin="38" end="38"/>
+ <lne id="195" begin="36" end="40"/>
+ <lne id="196" begin="43" end="43"/>
+ <lne id="197" begin="41" end="45"/>
+ <lne id="198" begin="50" end="50"/>
+ <lne id="199" begin="50" end="51"/>
+ <lne id="200" begin="48" end="53"/>
+ <lne id="201" begin="59" end="59"/>
+ <lne id="202" begin="61" end="61"/>
+ <lne id="203" begin="56" end="62"/>
+ <lne id="204" begin="54" end="64"/>
+ <lne id="205" begin="69" end="69"/>
+ <lne id="206" begin="69" end="70"/>
+ <lne id="207" begin="67" end="72"/>
+ <lne id="208" begin="77" end="77"/>
+ <lne id="209" begin="75" end="79"/>
+ <lne id="210" begin="84" end="84"/>
+ <lne id="211" begin="82" end="86"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="90" begin="3" end="87"/>
+ <lve slot="3" name="92" begin="7" end="87"/>
+ <lve slot="4" name="102" begin="11" end="87"/>
+ <lve slot="5" name="104" begin="15" end="87"/>
+ <lve slot="6" name="115" begin="19" end="87"/>
+ <lve slot="7" name="66" begin="23" end="87"/>
+ <lve slot="0" name="28" begin="0" end="87"/>
+ <lve slot="1" name="161" begin="0" end="87"/>
+ </localvariabletable>
+ </operation>
+</asm>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/Outline/Metamodel/Outline.ecore b/plugins/org.eclipse.gmt.tcs.dsls/resources/Outline/Metamodel/Outline.ecore
new file mode 100644
index 0000000..0ad812c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/Outline/Metamodel/Outline.ecore
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore">
+ <ecore:EPackage name="Outline" nsURI="http://www.eclipse.org/gmt/tcs/2007/Outline" nsPrefix="otl">
+ <eClassifiers xsi:type="ecore:EClass" name="LocatedElement" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="location" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Outline" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="extension" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="nodes" upperBound="-1" eType="/0/Node" containment="true" eOpposite="/0/Node/outline"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="label" ordered="false" lowerBound="1" eType="/0/Label" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="icon" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="outline" ordered="false" eType="/0/Outline" eOpposite="/0/Outline/nodes"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="mapping" ordered="false" upperBound="-1" eType="/0/Map" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Label" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="methodCall" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="labelSuite" ordered="false" upperBound="-1" eType="/0/LabelSuite" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LabelSuite" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="label" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="methodCall" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Map" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mapString" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ </ecore:EPackage>
+ <ecore:EPackage name="PrimitiveTypes" nsURI="http://www.eclipse.org/gmt/tcs/2007/Outline-PrimitiveTypes" nsPrefix="ptypes">
+ <eClassifiers xsi:type="ecore:EDataType" name="Boolean" instanceClassName="boolean"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="Integer" instanceClassName="int"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String"/>
+ </ecore:EPackage>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/Problem/Metamodel/Problem.ecore b/plugins/org.eclipse.gmt.tcs.dsls/resources/Problem/Metamodel/Problem.ecore
new file mode 100644
index 0000000..9a295a3
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/Problem/Metamodel/Problem.ecore
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore">
+ <ecore:EPackage name="Problem" nsURI="http://www.eclipse.org/gmt/am3/2007/Problem" nsPrefix="pb">
+ <eClassifiers xsi:type="ecore:EClass" name="Problem">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="severity" ordered="false" unique="false" lowerBound="1" eType="/0/Severity"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="location" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="description" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="Severity">
+ <eLiterals name="critic" value="1" literal="critic"/>
+ <eLiterals name="error" value="2" literal="error"/>
+ <eLiterals name="warning" value="3" literal="warning"/>
+ </eClassifiers>
+ </ecore:EPackage>
+ <ecore:EPackage name="PrimitiveTypes" nsURI="http://www.eclipse.org/gmt/am3/2007/Problem-PrimitiveTypes" nsPrefix="ptypes">
+ <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String"/>
+ </ecore:EPackage>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Compiler/TCS2ANTLR.asm b/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Compiler/TCS2ANTLR.asm
new file mode 100644
index 0000000..8884015
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Compiler/TCS2ANTLR.asm
@@ -0,0 +1,22984 @@
+<?xml version = '1.0' encoding = 'ISO-8859-1' ?>
+<asm name="0">
+ <cp>
+ <constant value="TCS2ANTLR"/>
+ <constant value="links"/>
+ <constant value="NTransientLinkSet;"/>
+ <constant value="col"/>
+ <constant value="J"/>
+ <constant value="main"/>
+ <constant value="A"/>
+ <constant value="OclParametrizedType"/>
+ <constant value="#native"/>
+ <constant value="Collection"/>
+ <constant value="J.setName(S):V"/>
+ <constant value="OclSimpleType"/>
+ <constant value="OclAny"/>
+ <constant value="J.setElementType(J):V"/>
+ <constant value="SequenceElement"/>
+ <constant value="TCS"/>
+ <constant value="getTemplate"/>
+ <constant value="__initgetTemplate"/>
+ <constant value="J.registerHelperAttribute(SS):V"/>
+ <constant value="getConditions"/>
+ <constant value="__initgetConditions"/>
+ <constant value="ConditionalElement"/>
+ <constant value="getAllConditions"/>
+ <constant value="__initgetAllConditions"/>
+ <constant value="Template"/>
+ <constant value="class"/>
+ <constant value="__initclass"/>
+ <constant value="subtypes"/>
+ <constant value="__initsubtypes"/>
+ <constant value="subnames"/>
+ <constant value="__initsubnames"/>
+ <constant value="allSubtypes"/>
+ <constant value="__initallSubtypes"/>
+ <constant value="allConcreteSubnames"/>
+ <constant value="__initallConcreteSubnames"/>
+ <constant value="ClassTemplate"/>
+ <constant value="subtemplates"/>
+ <constant value="__initsubtemplates"/>
+ <constant value="getContext"/>
+ <constant value="__initgetContext"/>
+ <constant value="String"/>
+ <constant value="asLiteral"/>
+ <constant value="__initasLiteral"/>
+ <constant value="ConcreteSyntax"/>
+ <constant value="mainTemplates"/>
+ <constant value="__initmainTemplates"/>
+ <constant value="nonOperatorSubtemplates"/>
+ <constant value="__initnonOperatorSubtemplates"/>
+ <constant value="Priority"/>
+ <constant value="binaryOps"/>
+ <constant value="__initbinaryOps"/>
+ <constant value="prefix"/>
+ <constant value="__initprefix"/>
+ <constant value="OperatorTemplate"/>
+ <constant value="isSpecific"/>
+ <constant value="__initisSpecific"/>
+ <constant value="Operator"/>
+ <constant value="specificTemplates"/>
+ <constant value="__initspecificTemplates"/>
+ <constant value="nonSpecificTemplates"/>
+ <constant value="__initnonSpecificTemplates"/>
+ <constant value="isPrefix"/>
+ <constant value="__initisPrefix"/>
+ <constant value="placeRCFirst"/>
+ <constant value="__initplaceRCFirst"/>
+ <constant value="Property"/>
+ <constant value="prop"/>
+ <constant value="__initprop"/>
+ <constant value="upper"/>
+ <constant value="__initupper"/>
+ <constant value="importContext"/>
+ <constant value="__initimportContext"/>
+ <constant value="as"/>
+ <constant value="__initas"/>
+ <constant value="autoCreate"/>
+ <constant value="__initautoCreate"/>
+ <constant value="createAs"/>
+ <constant value="__initcreateAs"/>
+ <constant value="refersTo"/>
+ <constant value="__initrefersTo"/>
+ <constant value="lookIn"/>
+ <constant value="__initlookIn"/>
+ <constant value="createIn"/>
+ <constant value="__initcreateIn"/>
+ <constant value="finalProp"/>
+ <constant value="__initfinalProp"/>
+ <constant value="mode"/>
+ <constant value="__initmode"/>
+ <constant value="calledTemplate"/>
+ <constant value="__initcalledTemplate"/>
+ <constant value="saTxt"/>
+ <constant value="__initsaTxt"/>
+ <constant value="lower"/>
+ <constant value="__initlower"/>
+ <constant value="TransientLinkSet"/>
+ <constant value="A.__matcher__():V"/>
+ <constant value="A.__exec__():V"/>
+ <constant value="30:16-30:35"/>
+ <constant value="53:16-53:35"/>
+ <constant value="73:16-73:38"/>
+ <constant value="76:16-76:28"/>
+ <constant value="93:16-93:28"/>
+ <constant value="98:16-98:28"/>
+ <constant value="103:16-103:28"/>
+ <constant value="108:16-108:28"/>
+ <constant value="114:16-114:33"/>
+ <constant value="129:16-129:35"/>
+ <constant value="135:16-135:22"/>
+ <constant value="533:16-533:34"/>
+ <constant value="752:16-752:33"/>
+ <constant value="1040:16-1040:28"/>
+ <constant value="1045:16-1045:28"/>
+ <constant value="1122:16-1122:36"/>
+ <constant value="1130:16-1130:28"/>
+ <constant value="1135:16-1135:28"/>
+ <constant value="1140:16-1140:28"/>
+ <constant value="1143:16-1143:28"/>
+ <constant value="1419:16-1419:36"/>
+ <constant value="1640:16-1640:28"/>
+ <constant value="1643:16-1643:28"/>
+ <constant value="1660:16-1660:28"/>
+ <constant value="1665:16-1665:28"/>
+ <constant value="1670:16-1670:28"/>
+ <constant value="1675:16-1675:28"/>
+ <constant value="1680:16-1680:28"/>
+ <constant value="1685:16-1685:28"/>
+ <constant value="1690:16-1690:28"/>
+ <constant value="1695:16-1695:28"/>
+ <constant value="1702:16-1702:28"/>
+ <constant value="1712:16-1712:28"/>
+ <constant value="1729:16-1729:28"/>
+ <constant value="1790:16-1790:28"/>
+ <constant value="self"/>
+ <constant value="__resolve__"/>
+ <constant value="1"/>
+ <constant value="J.oclIsKindOf(J):B"/>
+ <constant value="18"/>
+ <constant value="NTransientLinkSet;.getLinkBySourceElement(S):QNTransientLink;"/>
+ <constant value="J.oclIsUndefined():J"/>
+ <constant value="15"/>
+ <constant value="NTransientLink;.getTargetFromSource(J):J"/>
+ <constant value="17"/>
+ <constant value="30"/>
+ <constant value="Sequence"/>
+ <constant value="2"/>
+ <constant value="A.__resolve__(J):J"/>
+ <constant value="QJ.including(J):QJ"/>
+ <constant value="QJ.flatten():QJ"/>
+ <constant value="e"/>
+ <constant value="value"/>
+ <constant value="resolveTemp"/>
+ <constant value="S"/>
+ <constant value="NTransientLink;.getNamedTargetFromSource(JS):J"/>
+ <constant value="name"/>
+ <constant value="__matcher__"/>
+ <constant value="A.__matchSymbol2LexerRule():V"/>
+ <constant value="A.__matchToken2LexerRule():V"/>
+ <constant value="A.__matchOrPattern2Alternative():V"/>
+ <constant value="A.__matchRulePattern2Concatenation():V"/>
+ <constant value="A.__matchWordRule2Concatenation():V"/>
+ <constant value="A.__matchEndOfLineRule2Concatenation():V"/>
+ <constant value="A.__matchMultiLineRuleWithoutEsc2Concatenation():V"/>
+ <constant value="A.__matchMultiLineRuleWithEsc2Concatenation():V"/>
+ <constant value="A.__matchStringPattern2Terminal():V"/>
+ <constant value="A.__matchAlphaClassPattern2Alternative():V"/>
+ <constant value="A.__matchAlnumClassPattern2Alternative():V"/>
+ <constant value="A.__matchConcreteSyntax2Grammar():V"/>
+ <constant value="A.__matchFunctionTemplate2ProductionRule():V"/>
+ <constant value="A.__matchClassTemplate2ProductionRule():V"/>
+ <constant value="A.__matchOperatoredAbstractClassTemplate2ProductionRule():V"/>
+ <constant value="A.__matchPriority2ProductionRule():V"/>
+ <constant value="A.__matchOperator2Concatenation():V"/>
+ <constant value="A.__matchPostfixSymbolOperator2Concatenation():V"/>
+ <constant value="A.__matchEmptyOperator2Concatenation():V"/>
+ <constant value="A.__matchOperatorTemplate2ProductionRule():V"/>
+ <constant value="A.__matchPrimitiveTemplate2ProductionRule():V"/>
+ <constant value="A.__matchEnumerationTemplate2ProductionRule():V"/>
+ <constant value="A.__matchEnumLiteralMapping2Concatenation():V"/>
+ <constant value="A.__matchSequence2Concatenation():V"/>
+ <constant value="A.__matchSymbolRef2TokenCall():V"/>
+ <constant value="A.__matchKeywordRef2Terminal():V"/>
+ <constant value="A.__matchProperty2RuleCall():V"/>
+ <constant value="A.__matchMultiValuedProperty2Sequence():V"/>
+ <constant value="A.__matchBlock2Concatenation():V"/>
+ <constant value="A.__matchConditionalElement2Alternative():V"/>
+ <constant value="A.__matchAlternative2Alternative():V"/>
+ <constant value="A.__matchFunctionCall2RuleCall():V"/>
+ <constant value="__exec__"/>
+ <constant value="Symbol2LexerRule"/>
+ <constant value="NTransientLinkSet;.getLinksByRule(S):QNTransientLink;"/>
+ <constant value="A.__applySymbol2LexerRule(NTransientLink;):V"/>
+ <constant value="Token2LexerRule"/>
+ <constant value="A.__applyToken2LexerRule(NTransientLink;):V"/>
+ <constant value="OrPattern2Alternative"/>
+ <constant value="A.__applyOrPattern2Alternative(NTransientLink;):V"/>
+ <constant value="RulePattern2Concatenation"/>
+ <constant value="A.__applyRulePattern2Concatenation(NTransientLink;):V"/>
+ <constant value="WordRule2Concatenation"/>
+ <constant value="A.__applyWordRule2Concatenation(NTransientLink;):V"/>
+ <constant value="EndOfLineRule2Concatenation"/>
+ <constant value="A.__applyEndOfLineRule2Concatenation(NTransientLink;):V"/>
+ <constant value="MultiLineRuleWithoutEsc2Concatenation"/>
+ <constant value="A.__applyMultiLineRuleWithoutEsc2Concatenation(NTransientLink;):V"/>
+ <constant value="MultiLineRuleWithEsc2Concatenation"/>
+ <constant value="A.__applyMultiLineRuleWithEsc2Concatenation(NTransientLink;):V"/>
+ <constant value="StringPattern2Terminal"/>
+ <constant value="A.__applyStringPattern2Terminal(NTransientLink;):V"/>
+ <constant value="AlphaClassPattern2Alternative"/>
+ <constant value="A.__applyAlphaClassPattern2Alternative(NTransientLink;):V"/>
+ <constant value="AlnumClassPattern2Alternative"/>
+ <constant value="A.__applyAlnumClassPattern2Alternative(NTransientLink;):V"/>
+ <constant value="ConcreteSyntax2Grammar"/>
+ <constant value="A.__applyConcreteSyntax2Grammar(NTransientLink;):V"/>
+ <constant value="SingleMainTemplateCS2Grammar"/>
+ <constant value="A.__applySingleMainTemplateCS2Grammar(NTransientLink;):V"/>
+ <constant value="MultipleMainTemplateCS2Grammar"/>
+ <constant value="A.__applyMultipleMainTemplateCS2Grammar(NTransientLink;):V"/>
+ <constant value="FunctionTemplate2ProductionRule"/>
+ <constant value="A.__applyFunctionTemplate2ProductionRule(NTransientLink;):V"/>
+ <constant value="ClassTemplate2ProductionRule"/>
+ <constant value="A.__applyClassTemplate2ProductionRule(NTransientLink;):V"/>
+ <constant value="ConcreteClassTemplate2ProductionRule"/>
+ <constant value="A.__applyConcreteClassTemplate2ProductionRule(NTransientLink;):V"/>
+ <constant value="AbstractClassTemplate2ProductionRule"/>
+ <constant value="A.__applyAbstractClassTemplate2ProductionRule(NTransientLink;):V"/>
+ <constant value="EmptyAbstractClassTemplate2ProductionRule"/>
+ <constant value="A.__applyEmptyAbstractClassTemplate2ProductionRule(NTransientLink;):V"/>
+ <constant value="NonEmptyAbstractClassTemplate2ProductionRule"/>
+ <constant value="A.__applyNonEmptyAbstractClassTemplate2ProductionRule(NTransientLink;):V"/>
+ <constant value="OperatoredAbstractClassTemplate2ProductionRule"/>
+ <constant value="A.__applyOperatoredAbstractClassTemplate2ProductionRule(NTransientLink;):V"/>
+ <constant value="OperatoredAbstractClassTemplate2ProductionRuleWithParentheses"/>
+ <constant value="A.__applyOperatoredAbstractClassTemplate2ProductionRuleWithParentheses(NTransientLink;):V"/>
+ <constant value="Priority2ProductionRule"/>
+ <constant value="A.__applyPriority2ProductionRule(NTransientLink;):V"/>
+ <constant value="Operator2Concatenation"/>
+ <constant value="A.__applyOperator2Concatenation(NTransientLink;):V"/>
+ <constant value="KeywordOperator2Concatenation"/>
+ <constant value="A.__applyKeywordOperator2Concatenation(NTransientLink;):V"/>
+ <constant value="SymbolOperator2Concatenation"/>
+ <constant value="A.__applySymbolOperator2Concatenation(NTransientLink;):V"/>
+ <constant value="PostfixSymbolOperator2Concatenation"/>
+ <constant value="A.__applyPostfixSymbolOperator2Concatenation(NTransientLink;):V"/>
+ <constant value="EmptyOperator2Concatenation"/>
+ <constant value="A.__applyEmptyOperator2Concatenation(NTransientLink;):V"/>
+ <constant value="OperatorTemplate2ProductionRule"/>
+ <constant value="A.__applyOperatorTemplate2ProductionRule(NTransientLink;):V"/>
+ <constant value="SpecificRightArgumentOperatorTemplate2ProductionRule"/>
+ <constant value="A.__applySpecificRightArgumentOperatorTemplate2ProductionRule(NTransientLink;):V"/>
+ <constant value="NonSpecificRightArgumentOperatorTemplate2ProductionRule"/>
+ <constant value="A.__applyNonSpecificRightArgumentOperatorTemplate2ProductionRule(NTransientLink;):V"/>
+ <constant value="PrimitiveTemplate2ProductionRule"/>
+ <constant value="A.__applyPrimitiveTemplate2ProductionRule(NTransientLink;):V"/>
+ <constant value="EnumerationTemplate2ProductionRule"/>
+ <constant value="A.__applyEnumerationTemplate2ProductionRule(NTransientLink;):V"/>
+ <constant value="EnumLiteralMapping2Concatenation"/>
+ <constant value="A.__applyEnumLiteralMapping2Concatenation(NTransientLink;):V"/>
+ <constant value="Sequence2Concatenation"/>
+ <constant value="A.__applySequence2Concatenation(NTransientLink;):V"/>
+ <constant value="SymbolRef2TokenCall"/>
+ <constant value="A.__applySymbolRef2TokenCall(NTransientLink;):V"/>
+ <constant value="KeywordRef2Terminal"/>
+ <constant value="A.__applyKeywordRef2Terminal(NTransientLink;):V"/>
+ <constant value="Property2RuleCall"/>
+ <constant value="A.__applyProperty2RuleCall(NTransientLink;):V"/>
+ <constant value="MultiValuedProperty2Sequence"/>
+ <constant value="A.__applyMultiValuedProperty2Sequence(NTransientLink;):V"/>
+ <constant value="Block2Concatenation"/>
+ <constant value="A.__applyBlock2Concatenation(NTransientLink;):V"/>
+ <constant value="ConditionalElement2Alternative"/>
+ <constant value="A.__applyConditionalElement2Alternative(NTransientLink;):V"/>
+ <constant value="HalfConditionalElement2Alternative"/>
+ <constant value="A.__applyHalfConditionalElement2Alternative(NTransientLink;):V"/>
+ <constant value="FullConditionalElement2Alternative"/>
+ <constant value="A.__applyFullConditionalElement2Alternative(NTransientLink;):V"/>
+ <constant value="Alternative2Alternative"/>
+ <constant value="A.__applyAlternative2Alternative(NTransientLink;):V"/>
+ <constant value="FunctionCall2RuleCall"/>
+ <constant value="A.__applyFunctionCall2RuleCall(NTransientLink;):V"/>
+ <constant value="getInstancesBy"/>
+ <constant value="MMOF!EClassifier;"/>
+ <constant value="0"/>
+ <constant value="IN"/>
+ <constant value="J.allInstancesFrom(J):J"/>
+ <constant value="3"/>
+ <constant value="J.refGetValue(J):J"/>
+ <constant value="J.=(J):J"/>
+ <constant value="B.not():B"/>
+ <constant value="CJ.including(J):CJ"/>
+ <constant value="J.asSequence():J"/>
+ <constant value="14:2-14:6"/>
+ <constant value="14:24-14:28"/>
+ <constant value="14:2-14:29"/>
+ <constant value="15:3-15:4"/>
+ <constant value="15:17-15:25"/>
+ <constant value="15:3-15:26"/>
+ <constant value="15:29-15:34"/>
+ <constant value="15:3-15:34"/>
+ <constant value="14:2-16:3"/>
+ <constant value="14:2-16:17"/>
+ <constant value="propName"/>
+ <constant value="getInstanceBy"/>
+ <constant value="J.getInstancesBy(JJ):J"/>
+ <constant value="J.first():J"/>
+ <constant value="19:2-19:6"/>
+ <constant value="19:22-19:30"/>
+ <constant value="19:32-19:37"/>
+ <constant value="19:2-19:38"/>
+ <constant value="19:2-19:47"/>
+ <constant value="toPRName"/>
+ <constant value="J.firstToLower():J"/>
+ <constant value="reserved"/>
+ <constant value="J.includes(J):J"/>
+ <constant value="10"/>
+ <constant value="13"/>
+ <constant value="_"/>
+ <constant value="J.+(J):J"/>
+ <constant value="23:21-23:25"/>
+ <constant value="23:21-23:40"/>
+ <constant value="24:5-24:15"/>
+ <constant value="24:5-24:24"/>
+ <constant value="24:35-24:38"/>
+ <constant value="24:5-24:39"/>
+ <constant value="27:3-27:6"/>
+ <constant value="25:3-25:6"/>
+ <constant value="25:9-25:12"/>
+ <constant value="25:3-25:12"/>
+ <constant value="24:2-28:7"/>
+ <constant value="23:2-28:7"/>
+ <constant value="ret"/>
+ <constant value="MTCS!SequenceElement;"/>
+ <constant value="elementSequence"/>
+ <constant value="templateContainer"/>
+ <constant value="J.not():J"/>
+ <constant value="73"/>
+ <constant value="prefixContainer"/>
+ <constant value="70"/>
+ <constant value="otContainer"/>
+ <constant value="67"/>
+ <constant value="blockContainer"/>
+ <constant value="63"/>
+ <constant value="thenContainer"/>
+ <constant value="59"/>
+ <constant value="elseContainer"/>
+ <constant value="55"/>
+ <constant value="alternativeContainer"/>
+ <constant value="51"/>
+ <constant value="functionContainer"/>
+ <constant value="48"/>
+ <constant value="separatorContainer"/>
+ <constant value="property"/>
+ <constant value="50"/>
+ <constant value="54"/>
+ <constant value="58"/>
+ <constant value="62"/>
+ <constant value="66"/>
+ <constant value="69"/>
+ <constant value="72"/>
+ <constant value="75"/>
+ <constant value="31:34-31:38"/>
+ <constant value="31:34-31:54"/>
+ <constant value="32:9-32:17"/>
+ <constant value="32:9-32:35"/>
+ <constant value="32:9-32:52"/>
+ <constant value="32:5-32:52"/>
+ <constant value="34:14-34:22"/>
+ <constant value="34:14-34:38"/>
+ <constant value="34:14-34:55"/>
+ <constant value="34:10-34:55"/>
+ <constant value="36:14-36:22"/>
+ <constant value="36:14-36:34"/>
+ <constant value="36:14-36:51"/>
+ <constant value="36:10-36:51"/>
+ <constant value="38:14-38:22"/>
+ <constant value="38:14-38:37"/>
+ <constant value="38:14-38:54"/>
+ <constant value="38:10-38:54"/>
+ <constant value="40:14-40:22"/>
+ <constant value="40:14-40:36"/>
+ <constant value="40:14-40:53"/>
+ <constant value="40:10-40:53"/>
+ <constant value="42:14-42:22"/>
+ <constant value="42:14-42:36"/>
+ <constant value="42:14-42:53"/>
+ <constant value="42:10-42:53"/>
+ <constant value="44:14-44:22"/>
+ <constant value="44:14-44:43"/>
+ <constant value="44:14-44:60"/>
+ <constant value="44:10-44:60"/>
+ <constant value="46:14-46:22"/>
+ <constant value="46:14-46:40"/>
+ <constant value="46:14-46:57"/>
+ <constant value="46:10-46:57"/>
+ <constant value="49:3-49:11"/>
+ <constant value="49:3-49:30"/>
+ <constant value="49:3-49:39"/>
+ <constant value="49:3-49:51"/>
+ <constant value="47:3-47:11"/>
+ <constant value="47:3-47:29"/>
+ <constant value="46:7-50:7"/>
+ <constant value="45:3-45:11"/>
+ <constant value="45:3-45:32"/>
+ <constant value="45:3-45:44"/>
+ <constant value="44:7-50:13"/>
+ <constant value="43:3-43:11"/>
+ <constant value="43:3-43:25"/>
+ <constant value="43:3-43:37"/>
+ <constant value="42:7-50:19"/>
+ <constant value="41:3-41:11"/>
+ <constant value="41:3-41:25"/>
+ <constant value="41:3-41:37"/>
+ <constant value="40:7-50:25"/>
+ <constant value="39:3-39:11"/>
+ <constant value="39:3-39:26"/>
+ <constant value="39:3-39:38"/>
+ <constant value="38:7-50:31"/>
+ <constant value="37:3-37:11"/>
+ <constant value="37:3-37:23"/>
+ <constant value="36:7-50:37"/>
+ <constant value="35:3-35:11"/>
+ <constant value="35:3-35:27"/>
+ <constant value="34:7-50:43"/>
+ <constant value="33:3-33:11"/>
+ <constant value="33:3-33:29"/>
+ <constant value="32:2-50:49"/>
+ <constant value="31:2-50:49"/>
+ <constant value="sequence"/>
+ <constant value="47"/>
+ <constant value="43"/>
+ <constant value="46"/>
+ <constant value="54:34-54:38"/>
+ <constant value="54:34-54:54"/>
+ <constant value="55:9-55:17"/>
+ <constant value="55:9-55:35"/>
+ <constant value="55:9-55:52"/>
+ <constant value="55:5-55:52"/>
+ <constant value="57:14-57:22"/>
+ <constant value="57:14-57:34"/>
+ <constant value="57:14-57:51"/>
+ <constant value="57:10-57:51"/>
+ <constant value="59:14-59:22"/>
+ <constant value="59:14-59:37"/>
+ <constant value="59:14-59:54"/>
+ <constant value="59:10-59:54"/>
+ <constant value="61:14-61:22"/>
+ <constant value="61:14-61:36"/>
+ <constant value="61:14-61:53"/>
+ <constant value="61:10-61:53"/>
+ <constant value="63:14-63:22"/>
+ <constant value="63:14-63:36"/>
+ <constant value="63:14-63:53"/>
+ <constant value="63:10-63:53"/>
+ <constant value="65:14-65:22"/>
+ <constant value="65:14-65:43"/>
+ <constant value="65:14-65:60"/>
+ <constant value="65:10-65:60"/>
+ <constant value="67:14-67:22"/>
+ <constant value="67:14-67:40"/>
+ <constant value="67:14-67:57"/>
+ <constant value="67:10-67:57"/>
+ <constant value="70:3-70:11"/>
+ <constant value="70:3-70:30"/>
+ <constant value="70:3-70:39"/>
+ <constant value="70:3-70:53"/>
+ <constant value="68:3-68:14"/>
+ <constant value="67:7-71:7"/>
+ <constant value="66:3-66:11"/>
+ <constant value="66:3-66:32"/>
+ <constant value="66:3-66:46"/>
+ <constant value="65:7-71:13"/>
+ <constant value="64:3-64:11"/>
+ <constant value="64:3-64:25"/>
+ <constant value="64:3-64:39"/>
+ <constant value="63:7-71:19"/>
+ <constant value="62:3-62:11"/>
+ <constant value="62:3-62:25"/>
+ <constant value="62:3-62:42"/>
+ <constant value="61:7-71:25"/>
+ <constant value="60:3-60:11"/>
+ <constant value="60:3-60:26"/>
+ <constant value="60:3-60:40"/>
+ <constant value="59:7-71:31"/>
+ <constant value="58:3-58:14"/>
+ <constant value="57:7-71:37"/>
+ <constant value="56:3-56:14"/>
+ <constant value="55:2-71:43"/>
+ <constant value="54:2-71:43"/>
+ <constant value="MTCS!ConditionalElement;"/>
+ <constant value="condition"/>
+ <constant value="expressions"/>
+ <constant value="J.union(J):J"/>
+ <constant value="74:2-74:6"/>
+ <constant value="74:2-74:16"/>
+ <constant value="74:2-74:28"/>
+ <constant value="74:36-74:40"/>
+ <constant value="74:36-74:54"/>
+ <constant value="74:2-74:55"/>
+ <constant value="MTCS!Template;"/>
+ <constant value="FunctionTemplate"/>
+ <constant value="J.oclIsKindOf(J):J"/>
+ <constant value="9"/>
+ <constant value="11"/>
+ <constant value="className"/>
+ <constant value="Class"/>
+ <constant value="KM3"/>
+ <constant value="MM"/>
+ <constant value="31"/>
+ <constant value="77:25-77:29"/>
+ <constant value="77:42-77:62"/>
+ <constant value="77:25-77:63"/>
+ <constant value="80:3-80:7"/>
+ <constant value="80:3-80:12"/>
+ <constant value="78:3-78:7"/>
+ <constant value="78:3-78:17"/>
+ <constant value="77:22-81:7"/>
+ <constant value="82:2-82:11"/>
+ <constant value="82:29-82:33"/>
+ <constant value="82:2-82:34"/>
+ <constant value="82:2-82:48"/>
+ <constant value="83:3-83:4"/>
+ <constant value="83:3-83:9"/>
+ <constant value="83:12-83:16"/>
+ <constant value="83:3-83:16"/>
+ <constant value="82:2-84:3"/>
+ <constant value="82:2-84:12"/>
+ <constant value="77:2-84:12"/>
+ <constant value="supertypes"/>
+ <constant value="19"/>
+ <constant value="94:2-94:11"/>
+ <constant value="94:29-94:33"/>
+ <constant value="94:2-94:34"/>
+ <constant value="95:3-95:4"/>
+ <constant value="95:3-95:15"/>
+ <constant value="95:26-95:30"/>
+ <constant value="95:26-95:36"/>
+ <constant value="95:3-95:37"/>
+ <constant value="94:2-96:3"/>
+ <constant value="99:2-99:6"/>
+ <constant value="99:2-99:15"/>
+ <constant value="100:3-100:4"/>
+ <constant value="100:3-100:9"/>
+ <constant value="99:2-101:3"/>
+ <constant value="allSupertypes"/>
+ <constant value="104:2-104:11"/>
+ <constant value="104:29-104:33"/>
+ <constant value="104:2-104:34"/>
+ <constant value="105:3-105:4"/>
+ <constant value="105:3-105:18"/>
+ <constant value="105:29-105:33"/>
+ <constant value="105:29-105:39"/>
+ <constant value="105:3-105:40"/>
+ <constant value="104:2-106:3"/>
+ <constant value="isAbstract"/>
+ <constant value="109:2-109:6"/>
+ <constant value="109:2-109:18"/>
+ <constant value="109:31-109:32"/>
+ <constant value="109:31-109:43"/>
+ <constant value="109:2-109:44"/>
+ <constant value="110:3-110:4"/>
+ <constant value="110:3-110:9"/>
+ <constant value="109:2-111:3"/>
+ <constant value="MTCS!ClassTemplate;"/>
+ <constant value="isDeep"/>
+ <constant value="6"/>
+ <constant value="8"/>
+ <constant value="32"/>
+ <constant value="37"/>
+ <constant value="J.and(J):J"/>
+ <constant value="42"/>
+ <constant value="J.sortTemplates(J):J"/>
+ <constant value="115:39-115:43"/>
+ <constant value="115:39-115:50"/>
+ <constant value="118:4-118:8"/>
+ <constant value="118:4-118:17"/>
+ <constant value="116:4-116:8"/>
+ <constant value="116:4-116:28"/>
+ <constant value="115:36-119:8"/>
+ <constant value="120:2-120:12"/>
+ <constant value="120:27-120:39"/>
+ <constant value="120:57-120:61"/>
+ <constant value="120:27-120:62"/>
+ <constant value="121:3-121:11"/>
+ <constant value="121:22-121:23"/>
+ <constant value="121:22-121:28"/>
+ <constant value="121:3-121:29"/>
+ <constant value="122:6-122:7"/>
+ <constant value="122:20-122:37"/>
+ <constant value="122:6-122:38"/>
+ <constant value="125:4-125:8"/>
+ <constant value="123:4-123:8"/>
+ <constant value="123:4-123:13"/>
+ <constant value="123:16-123:17"/>
+ <constant value="123:16-123:22"/>
+ <constant value="123:4-123:22"/>
+ <constant value="122:3-126:8"/>
+ <constant value="121:3-126:8"/>
+ <constant value="120:27-127:3"/>
+ <constant value="120:2-127:4"/>
+ <constant value="115:2-127:4"/>
+ <constant value="130:2-130:6"/>
+ <constant value="130:2-130:18"/>
+ <constant value="130:2-130:24"/>
+ <constant value="getContextProperty"/>
+ <constant value="J.lookupElementExtended(J):J"/>
+ <constant value="133:2-133:6"/>
+ <constant value="133:2-133:17"/>
+ <constant value="133:40-133:44"/>
+ <constant value="133:2-133:45"/>
+ <constant value="literalDelim"/>
+ <constant value="136:2-136:12"/>
+ <constant value="136:2-136:25"/>
+ <constant value="136:28-136:32"/>
+ <constant value="136:2-136:32"/>
+ <constant value="136:35-136:45"/>
+ <constant value="136:35-136:58"/>
+ <constant value="136:2-136:58"/>
+ <constant value="__matchSymbol2LexerRule"/>
+ <constant value="Symbol"/>
+ <constant value="MMOF!Classifier;.allInstancesFrom(S):QJ"/>
+ <constant value="TransientLink"/>
+ <constant value="NTransientLink;.setRule(MATL!Rule;):V"/>
+ <constant value="s"/>
+ <constant value="NTransientLink;.addSourceElement(SJ):V"/>
+ <constant value="t"/>
+ <constant value="ProductionRule"/>
+ <constant value="ANTLR"/>
+ <constant value="NTransientLink;.addTargetElement(SJ):V"/>
+ <constant value="Terminal"/>
+ <constant value="NTransientLinkSet;.addLink2(NTransientLink;B):V"/>
+ <constant value="145:7-145:27"/>
+ <constant value="145:3-149:4"/>
+ <constant value="150:7-150:21"/>
+ <constant value="150:3-152:4"/>
+ <constant value="__applySymbol2LexerRule"/>
+ <constant value="NTransientLink;"/>
+ <constant value="NTransientLink;.getSourceElement(S):J"/>
+ <constant value="NTransientLink;.getTargetElement(S):J"/>
+ <constant value="4"/>
+ <constant value="J.toUpper():J"/>
+ <constant value="needReturnDeclaration"/>
+ <constant value="expression"/>
+ <constant value="146:12-146:13"/>
+ <constant value="146:12-146:18"/>
+ <constant value="146:12-146:28"/>
+ <constant value="146:4-146:28"/>
+ <constant value="147:29-147:34"/>
+ <constant value="147:4-147:34"/>
+ <constant value="148:18-148:19"/>
+ <constant value="148:4-148:19"/>
+ <constant value="151:13-151:14"/>
+ <constant value="151:13-151:20"/>
+ <constant value="151:4-151:20"/>
+ <constant value="link"/>
+ <constant value="__matchToken2LexerRule"/>
+ <constant value="Token"/>
+ <constant value="163:7-163:27"/>
+ <constant value="163:3-167:4"/>
+ <constant value="__applyToken2LexerRule"/>
+ <constant value="pattern"/>
+ <constant value="164:12-164:13"/>
+ <constant value="164:12-164:18"/>
+ <constant value="164:4-164:18"/>
+ <constant value="165:29-165:34"/>
+ <constant value="165:4-165:34"/>
+ <constant value="166:18-166:19"/>
+ <constant value="166:18-166:27"/>
+ <constant value="166:4-166:27"/>
+ <constant value="__matchOrPattern2Alternative"/>
+ <constant value="OrPattern"/>
+ <constant value="Alternative"/>
+ <constant value="188:7-188:24"/>
+ <constant value="188:3-190:4"/>
+ <constant value="__applyOrPattern2Alternative"/>
+ <constant value="simplePatterns"/>
+ <constant value="189:19-189:20"/>
+ <constant value="189:19-189:35"/>
+ <constant value="189:4-189:35"/>
+ <constant value="__matchRulePattern2Concatenation"/>
+ <constant value="RulePattern"/>
+ <constant value="Concatenation"/>
+ <constant value="211:7-211:26"/>
+ <constant value="211:3-213:4"/>
+ <constant value="__applyRulePattern2Concatenation"/>
+ <constant value="rule"/>
+ <constant value="212:19-212:20"/>
+ <constant value="212:19-212:25"/>
+ <constant value="212:4-212:25"/>
+ <constant value="__matchWordRule2Concatenation"/>
+ <constant value="WordRule"/>
+ <constant value="part"/>
+ <constant value="Sequence_"/>
+ <constant value="235:7-235:26"/>
+ <constant value="235:3-242:4"/>
+ <constant value="243:10-243:25"/>
+ <constant value="243:3-247:4"/>
+ <constant value="__applyWordRule2Concatenation"/>
+ <constant value="start"/>
+ <constant value="end"/>
+ <constant value="34"/>
+ <constant value="J.-(J):J"/>
+ <constant value="236:29-236:30"/>
+ <constant value="236:29-236:36"/>
+ <constant value="236:38-236:42"/>
+ <constant value="236:19-236:43"/>
+ <constant value="237:10-237:11"/>
+ <constant value="237:10-237:15"/>
+ <constant value="237:10-237:32"/>
+ <constant value="240:18-240:19"/>
+ <constant value="240:18-240:23"/>
+ <constant value="240:8-240:24"/>
+ <constant value="238:8-238:19"/>
+ <constant value="237:7-241:12"/>
+ <constant value="236:19-241:13"/>
+ <constant value="236:4-241:13"/>
+ <constant value="244:18-244:19"/>
+ <constant value="244:18-244:24"/>
+ <constant value="244:4-244:24"/>
+ <constant value="245:13-245:14"/>
+ <constant value="245:4-245:14"/>
+ <constant value="246:13-246:14"/>
+ <constant value="246:15-246:16"/>
+ <constant value="246:13-246:16"/>
+ <constant value="246:4-246:16"/>
+ <constant value="__matchEndOfLineRule2Concatenation"/>
+ <constant value="EndOfLineRule"/>
+ <constant value="seq"/>
+ <constant value="neg"/>
+ <constant value="Negation"/>
+ <constant value="alt"/>
+ <constant value="cr"/>
+ <constant value="CharTerminal"/>
+ <constant value="lf"/>
+ <constant value="257:7-257:26"/>
+ <constant value="257:3-259:4"/>
+ <constant value="260:9-260:24"/>
+ <constant value="260:3-264:4"/>
+ <constant value="265:9-265:23"/>
+ <constant value="265:3-267:4"/>
+ <constant value="268:9-268:26"/>
+ <constant value="268:3-270:4"/>
+ <constant value="271:8-271:26"/>
+ <constant value="271:3-273:4"/>
+ <constant value="274:8-274:26"/>
+ <constant value="274:3-276:4"/>
+ <constant value="__applyEndOfLineRule2Concatenation"/>
+ <constant value="5"/>
+ <constant value="7"/>
+ <constant value="\r"/>
+ <constant value="\n"/>
+ <constant value="258:29-258:30"/>
+ <constant value="258:29-258:36"/>
+ <constant value="258:38-258:41"/>
+ <constant value="258:19-258:42"/>
+ <constant value="258:4-258:42"/>
+ <constant value="261:18-261:21"/>
+ <constant value="261:4-261:21"/>
+ <constant value="262:13-262:14"/>
+ <constant value="262:4-262:14"/>
+ <constant value="263:13-263:14"/>
+ <constant value="263:15-263:16"/>
+ <constant value="263:13-263:16"/>
+ <constant value="263:4-263:16"/>
+ <constant value="266:18-266:21"/>
+ <constant value="266:4-266:21"/>
+ <constant value="269:29-269:31"/>
+ <constant value="269:33-269:35"/>
+ <constant value="269:19-269:36"/>
+ <constant value="269:4-269:36"/>
+ <constant value="272:13-272:18"/>
+ <constant value="272:4-272:18"/>
+ <constant value="275:13-275:18"/>
+ <constant value="275:4-275:18"/>
+ <constant value="__matchMultiLineRuleWithoutEsc2Concatenation"/>
+ <constant value="MultiLineRule"/>
+ <constant value="esc"/>
+ <constant value="68"/>
+ <constant value="nl"/>
+ <constant value="sa"/>
+ <constant value="SimpleSemanticAction"/>
+ <constant value="onl"/>
+ <constant value="298:4-298:5"/>
+ <constant value="298:4-298:9"/>
+ <constant value="298:4-298:26"/>
+ <constant value="301:7-301:26"/>
+ <constant value="301:3-315:4"/>
+ <constant value="316:9-316:24"/>
+ <constant value="316:3-321:4"/>
+ <constant value="322:9-322:26"/>
+ <constant value="322:3-324:4"/>
+ <constant value="325:8-325:26"/>
+ <constant value="325:3-328:4"/>
+ <constant value="329:8-329:34"/>
+ <constant value="329:3-331:4"/>
+ <constant value="332:9-332:23"/>
+ <constant value="332:3-334:4"/>
+ <constant value="338:9-338:27"/>
+ <constant value="338:3-340:4"/>
+ <constant value="__applyMultiLineRuleWithoutEsc2Concatenation"/>
+ <constant value="dropStart"/>
+ <constant value="44"/>
+ <constant value="J.MultiLineRuleDropStart(J):J"/>
+ <constant value="dropEnd"/>
+ <constant value="56"/>
+ <constant value="J.MultiLineRuleDropEnd(J):J"/>
+ <constant value="greedy = false;"/>
+ <constant value="options"/>
+ <constant value="action"/>
+ <constant value="newline();"/>
+ <constant value="303:8-303:9"/>
+ <constant value="303:8-303:19"/>
+ <constant value="306:6-306:7"/>
+ <constant value="306:6-306:13"/>
+ <constant value="304:6-304:16"/>
+ <constant value="304:40-304:41"/>
+ <constant value="304:6-304:42"/>
+ <constant value="303:5-307:10"/>
+ <constant value="308:5-308:8"/>
+ <constant value="309:8-309:9"/>
+ <constant value="309:8-309:17"/>
+ <constant value="312:6-312:7"/>
+ <constant value="312:6-312:11"/>
+ <constant value="310:6-310:16"/>
+ <constant value="310:38-310:39"/>
+ <constant value="310:6-310:40"/>
+ <constant value="309:5-313:10"/>
+ <constant value="302:19-314:5"/>
+ <constant value="302:4-314:5"/>
+ <constant value="317:25-317:42"/>
+ <constant value="317:15-317:43"/>
+ <constant value="317:4-317:43"/>
+ <constant value="318:18-318:21"/>
+ <constant value="318:4-318:21"/>
+ <constant value="319:13-319:14"/>
+ <constant value="319:4-319:14"/>
+ <constant value="320:13-320:14"/>
+ <constant value="320:15-320:16"/>
+ <constant value="320:13-320:16"/>
+ <constant value="320:4-320:16"/>
+ <constant value="323:29-323:31"/>
+ <constant value="323:33-323:36"/>
+ <constant value="323:19-323:37"/>
+ <constant value="323:4-323:37"/>
+ <constant value="326:13-326:18"/>
+ <constant value="326:4-326:18"/>
+ <constant value="327:14-327:16"/>
+ <constant value="327:4-327:16"/>
+ <constant value="330:13-330:25"/>
+ <constant value="330:4-330:25"/>
+ <constant value="333:18-333:21"/>
+ <constant value="333:4-333:21"/>
+ <constant value="339:13-339:18"/>
+ <constant value="339:4-339:18"/>
+ <constant value="MultiLineRuleDropStart"/>
+ <constant value="MTCS!MultiLineRule;"/>
+ <constant value="Drop"/>
+ <constant value="348:18-348:19"/>
+ <constant value="348:18-348:25"/>
+ <constant value="348:4-348:25"/>
+ <constant value="347:3-349:4"/>
+ <constant value="MultiLineRuleDropEnd"/>
+ <constant value="357:18-357:19"/>
+ <constant value="357:18-357:23"/>
+ <constant value="357:4-357:23"/>
+ <constant value="356:3-358:4"/>
+ <constant value="__matchMultiLineRuleWithEsc2Concatenation"/>
+ <constant value="99"/>
+ <constant value="escC"/>
+ <constant value="negNl"/>
+ <constant value="neggedNl"/>
+ <constant value="neggedAlt"/>
+ <constant value="364:8-364:9"/>
+ <constant value="364:8-364:13"/>
+ <constant value="364:8-364:30"/>
+ <constant value="364:4-364:30"/>
+ <constant value="367:7-367:26"/>
+ <constant value="367:3-381:4"/>
+ <constant value="382:9-382:24"/>
+ <constant value="382:3-387:4"/>
+ <constant value="388:9-388:26"/>
+ <constant value="388:3-390:4"/>
+ <constant value="391:10-391:29"/>
+ <constant value="391:3-393:4"/>
+ <constant value="394:9-394:19"/>
+ <constant value="394:3-396:4"/>
+ <constant value="397:11-397:25"/>
+ <constant value="397:3-399:4"/>
+ <constant value="400:14-400:32"/>
+ <constant value="400:3-402:4"/>
+ <constant value="403:8-403:26"/>
+ <constant value="403:3-406:4"/>
+ <constant value="407:8-407:34"/>
+ <constant value="407:3-409:4"/>
+ <constant value="410:9-410:23"/>
+ <constant value="410:3-412:4"/>
+ <constant value="413:15-413:32"/>
+ <constant value="413:3-416:4"/>
+ <constant value="417:9-417:27"/>
+ <constant value="417:3-419:4"/>
+ <constant value="__applyMultiLineRuleWithEsc2Concatenation"/>
+ <constant value="12"/>
+ <constant value="14"/>
+ <constant value="64"/>
+ <constant value="76"/>
+ <constant value="79"/>
+ <constant value="J.LazyStringPattern2Terminal(J):J"/>
+ <constant value="369:8-369:9"/>
+ <constant value="369:8-369:19"/>
+ <constant value="372:6-372:7"/>
+ <constant value="372:6-372:13"/>
+ <constant value="370:6-370:16"/>
+ <constant value="370:40-370:41"/>
+ <constant value="370:6-370:42"/>
+ <constant value="369:5-373:10"/>
+ <constant value="374:5-374:8"/>
+ <constant value="375:8-375:9"/>
+ <constant value="375:8-375:17"/>
+ <constant value="378:6-378:7"/>
+ <constant value="378:6-378:11"/>
+ <constant value="376:6-376:16"/>
+ <constant value="376:38-376:39"/>
+ <constant value="376:6-376:40"/>
+ <constant value="375:5-379:10"/>
+ <constant value="368:19-380:5"/>
+ <constant value="368:4-380:5"/>
+ <constant value="383:25-383:42"/>
+ <constant value="383:15-383:43"/>
+ <constant value="383:4-383:43"/>
+ <constant value="384:18-384:21"/>
+ <constant value="384:4-384:21"/>
+ <constant value="385:13-385:14"/>
+ <constant value="385:4-385:14"/>
+ <constant value="386:13-386:14"/>
+ <constant value="386:15-386:16"/>
+ <constant value="386:13-386:16"/>
+ <constant value="386:4-386:16"/>
+ <constant value="389:29-389:33"/>
+ <constant value="389:35-389:37"/>
+ <constant value="389:39-389:42"/>
+ <constant value="389:19-389:43"/>
+ <constant value="389:4-389:43"/>
+ <constant value="392:29-392:32"/>
+ <constant value="392:34-392:39"/>
+ <constant value="392:19-392:40"/>
+ <constant value="392:4-392:40"/>
+ <constant value="395:18-395:28"/>
+ <constant value="395:56-395:57"/>
+ <constant value="395:56-395:61"/>
+ <constant value="395:18-395:62"/>
+ <constant value="395:4-395:62"/>
+ <constant value="398:18-398:26"/>
+ <constant value="398:4-398:26"/>
+ <constant value="401:13-401:18"/>
+ <constant value="401:4-401:18"/>
+ <constant value="404:13-404:18"/>
+ <constant value="404:4-404:18"/>
+ <constant value="405:14-405:16"/>
+ <constant value="405:4-405:16"/>
+ <constant value="408:13-408:25"/>
+ <constant value="408:4-408:25"/>
+ <constant value="411:18-411:27"/>
+ <constant value="411:4-411:27"/>
+ <constant value="415:29-415:30"/>
+ <constant value="415:29-415:34"/>
+ <constant value="415:36-415:39"/>
+ <constant value="415:19-415:40"/>
+ <constant value="415:4-415:40"/>
+ <constant value="418:13-418:18"/>
+ <constant value="418:4-418:18"/>
+ <constant value="__matchStringPattern2Terminal"/>
+ <constant value="StringPattern"/>
+ <constant value="435:7-435:21"/>
+ <constant value="435:3-437:4"/>
+ <constant value="__applyStringPattern2Terminal"/>
+ <constant value="J.toCString():J"/>
+ <constant value="436:13-436:14"/>
+ <constant value="436:13-436:19"/>
+ <constant value="436:13-436:31"/>
+ <constant value="436:4-436:31"/>
+ <constant value="LazyStringPattern2Terminal"/>
+ <constant value="MTCS!StringPattern;"/>
+ <constant value="445:13-445:14"/>
+ <constant value="445:13-445:19"/>
+ <constant value="445:13-445:31"/>
+ <constant value="445:4-445:31"/>
+ <constant value="444:3-446:4"/>
+ <constant value="__matchAlphaClassPattern2Alternative"/>
+ <constant value="ClassPattern"/>
+ <constant value="alpha"/>
+ <constant value="up"/>
+ <constant value="Interval"/>
+ <constant value="low"/>
+ <constant value="upA"/>
+ <constant value="upZ"/>
+ <constant value="lowA"/>
+ <constant value="lowZ"/>
+ <constant value="464:4-464:5"/>
+ <constant value="464:4-464:10"/>
+ <constant value="464:13-464:20"/>
+ <constant value="464:4-464:20"/>
+ <constant value="467:7-467:24"/>
+ <constant value="467:3-469:4"/>
+ <constant value="470:8-470:22"/>
+ <constant value="470:3-473:4"/>
+ <constant value="474:9-474:23"/>
+ <constant value="474:3-477:4"/>
+ <constant value="478:9-478:27"/>
+ <constant value="478:3-480:4"/>
+ <constant value="481:9-481:27"/>
+ <constant value="481:3-483:4"/>
+ <constant value="484:10-484:28"/>
+ <constant value="484:3-486:4"/>
+ <constant value="487:10-487:28"/>
+ <constant value="487:3-489:4"/>
+ <constant value="__applyAlphaClassPattern2Alternative"/>
+ <constant value="Z"/>
+ <constant value="a"/>
+ <constant value="z"/>
+ <constant value="468:29-468:31"/>
+ <constant value="468:33-468:36"/>
+ <constant value="468:19-468:37"/>
+ <constant value="468:4-468:37"/>
+ <constant value="471:13-471:16"/>
+ <constant value="471:4-471:16"/>
+ <constant value="472:11-472:14"/>
+ <constant value="472:4-472:14"/>
+ <constant value="475:13-475:17"/>
+ <constant value="475:4-475:17"/>
+ <constant value="476:11-476:15"/>
+ <constant value="476:4-476:15"/>
+ <constant value="479:13-479:16"/>
+ <constant value="479:4-479:16"/>
+ <constant value="482:13-482:16"/>
+ <constant value="482:4-482:16"/>
+ <constant value="485:13-485:16"/>
+ <constant value="485:4-485:16"/>
+ <constant value="488:13-488:16"/>
+ <constant value="488:4-488:16"/>
+ <constant value="__matchAlnumClassPattern2Alternative"/>
+ <constant value="alnum"/>
+ <constant value="87"/>
+ <constant value="digit"/>
+ <constant value="zero"/>
+ <constant value="nine"/>
+ <constant value="495:4-495:5"/>
+ <constant value="495:4-495:10"/>
+ <constant value="495:13-495:20"/>
+ <constant value="495:4-495:20"/>
+ <constant value="498:7-498:24"/>
+ <constant value="498:3-500:4"/>
+ <constant value="501:8-501:22"/>
+ <constant value="501:3-504:4"/>
+ <constant value="505:9-505:23"/>
+ <constant value="505:3-508:4"/>
+ <constant value="509:11-509:25"/>
+ <constant value="509:3-512:4"/>
+ <constant value="513:9-513:27"/>
+ <constant value="513:3-515:4"/>
+ <constant value="516:9-516:27"/>
+ <constant value="516:3-518:4"/>
+ <constant value="519:10-519:28"/>
+ <constant value="519:3-521:4"/>
+ <constant value="522:10-522:28"/>
+ <constant value="522:3-524:4"/>
+ <constant value="525:10-525:28"/>
+ <constant value="525:3-527:4"/>
+ <constant value="528:10-528:28"/>
+ <constant value="528:3-530:4"/>
+ <constant value="__applyAlnumClassPattern2Alternative"/>
+ <constant value="499:29-499:31"/>
+ <constant value="499:33-499:36"/>
+ <constant value="499:38-499:43"/>
+ <constant value="499:19-499:44"/>
+ <constant value="499:4-499:44"/>
+ <constant value="502:13-502:16"/>
+ <constant value="502:4-502:16"/>
+ <constant value="503:11-503:14"/>
+ <constant value="503:4-503:14"/>
+ <constant value="506:13-506:17"/>
+ <constant value="506:4-506:17"/>
+ <constant value="507:11-507:15"/>
+ <constant value="507:4-507:15"/>
+ <constant value="510:13-510:17"/>
+ <constant value="510:4-510:17"/>
+ <constant value="511:11-511:15"/>
+ <constant value="511:4-511:15"/>
+ <constant value="514:13-514:16"/>
+ <constant value="514:4-514:16"/>
+ <constant value="517:13-517:16"/>
+ <constant value="517:4-517:16"/>
+ <constant value="520:13-520:16"/>
+ <constant value="520:4-520:16"/>
+ <constant value="523:13-523:16"/>
+ <constant value="523:4-523:16"/>
+ <constant value="526:13-526:16"/>
+ <constant value="526:4-526:16"/>
+ <constant value="529:13-529:16"/>
+ <constant value="529:4-529:16"/>
+ <constant value="MTCS!ConcreteSyntax;"/>
+ <constant value="templates"/>
+ <constant value="isMain"/>
+ <constant value="28"/>
+ <constant value="534:2-534:6"/>
+ <constant value="534:2-534:16"/>
+ <constant value="535:3-535:4"/>
+ <constant value="535:17-535:34"/>
+ <constant value="535:3-535:35"/>
+ <constant value="534:2-536:3"/>
+ <constant value="537:3-537:4"/>
+ <constant value="537:3-537:11"/>
+ <constant value="534:2-538:3"/>
+ <constant value="__matchConcreteSyntax2Grammar"/>
+ <constant value="104"/>
+ <constant value="J.size():J"/>
+ <constant value="cs"/>
+ <constant value="mainTemplate"/>
+ <constant value="NTransientLink;.addVariable(SJ):V"/>
+ <constant value="g"/>
+ <constant value="Grammar"/>
+ <constant value="c"/>
+ <constant value="rc"/>
+ <constant value="RuleCall"/>
+ <constant value="eof"/>
+ <constant value="TokenCall"/>
+ <constant value="vret"/>
+ <constant value="Variable"/>
+ <constant value="saei"/>
+ <constant value="saErrors"/>
+ <constant value="VariableDeclaration"/>
+ <constant value="217"/>
+ <constant value="J.&gt;(J):J"/>
+ <constant value="597:4-597:6"/>
+ <constant value="597:4-597:20"/>
+ <constant value="597:4-597:28"/>
+ <constant value="597:31-597:32"/>
+ <constant value="597:4-597:32"/>
+ <constant value="600:38-600:40"/>
+ <constant value="600:38-600:54"/>
+ <constant value="600:38-600:63"/>
+ <constant value="603:7-603:20"/>
+ <constant value="603:3-603:20"/>
+ <constant value="604:7-604:26"/>
+ <constant value="604:3-607:4"/>
+ <constant value="608:7-608:22"/>
+ <constant value="608:3-616:4"/>
+ <constant value="617:8-617:22"/>
+ <constant value="617:3-621:4"/>
+ <constant value="622:9-622:24"/>
+ <constant value="622:3-624:4"/>
+ <constant value="625:10-625:24"/>
+ <constant value="625:3-628:4"/>
+ <constant value="574:10-574:36"/>
+ <constant value="574:3-576:4"/>
+ <constant value="577:14-577:40"/>
+ <constant value="577:3-579:4"/>
+ <constant value="580:10-580:30"/>
+ <constant value="580:3-585:4"/>
+ <constant value="586:9-586:34"/>
+ <constant value="586:3-591:4"/>
+ <constant value="634:4-634:6"/>
+ <constant value="634:4-634:20"/>
+ <constant value="634:4-634:28"/>
+ <constant value="634:31-634:32"/>
+ <constant value="634:4-634:32"/>
+ <constant value="637:7-637:20"/>
+ <constant value="637:3-637:20"/>
+ <constant value="638:7-638:26"/>
+ <constant value="638:3-641:4"/>
+ <constant value="642:7-642:22"/>
+ <constant value="642:3-646:4"/>
+ <constant value="647:7-647:24"/>
+ <constant value="647:3-649:4"/>
+ <constant value="650:58-650:60"/>
+ <constant value="650:58-650:74"/>
+ <constant value="650:3-654:4"/>
+ <constant value="655:56-655:58"/>
+ <constant value="655:56-655:72"/>
+ <constant value="655:3-661:4"/>
+ <constant value="662:9-662:24"/>
+ <constant value="662:3-664:4"/>
+ <constant value="__applySingleMainTemplateCS2Grammar"/>
+ <constant value="NTransientLink;.getVariable(S):J"/>
+ <constant value="location"/>
+ <constant value="id"/>
+ <constant value="actions"/>
+ <constant value="operatorLists"/>
+ <constant value="priorities"/>
+ <constant value="J.flatten():J"/>
+ <constant value="rules"/>
+ <constant value="k"/>
+ <constant value="J.getGrammarOptions(J):J"/>
+ <constant value="org.eclipse.gmt.tcs.injector"/>
+ <constant value="package"/>
+ <constant value="lexer"/>
+ <constant value="(?s)%options ([^\n]*).*$"/>
+ <constant value="$1"/>
+ <constant value="J.regexReplaceAll(JJ):J"/>
+ <constant value="125"/>
+ <constant value="126"/>
+ <constant value=""/>
+ <constant value="lexerHeader"/>
+ <constant value="%name%"/>
+ <constant value="%optionsPlaceHolder"/>
+ <constant value="%protected"/>
+ <constant value="lexerFragmentKeyword"/>
+ <constant value="%setText"/>
+ <constant value="lexerActionSetText"/>
+ <constant value="%getText"/>
+ <constant value="lexerActionGetText"/>
+ <constant value="%v2"/>
+ <constant value="lexerV2Replacement"/>
+ <constant value="%v3"/>
+ <constant value="lexerV3Replacement"/>
+ <constant value="%options"/>
+ <constant value="//"/>
+ <constant value="symbols"/>
+ <constant value="tokens"/>
+ <constant value="lexerRules"/>
+ <constant value="isMulti"/>
+ <constant value="205"/>
+ <constant value="208"/>
+ <constant value="calledRule"/>
+ <constant value="storeTo"/>
+ <constant value="EOF"/>
+ <constant value="declaration"/>
+ <constant value="public org.eclipse.gmt.tcs.injector.TCSRuntime ei = null;"/>
+ <constant value="errorReportingAction"/>
+ <constant value="returns"/>
+ <constant value="null"/>
+ <constant value="initialValue"/>
+ <constant value="typeModelElement"/>
+ <constant value="type"/>
+ <constant value="545:10-545:12"/>
+ <constant value="545:10-545:21"/>
+ <constant value="545:4-545:21"/>
+ <constant value="546:12-546:14"/>
+ <constant value="546:12-546:19"/>
+ <constant value="546:4-546:19"/>
+ <constant value="547:25-547:29"/>
+ <constant value="547:31-547:39"/>
+ <constant value="547:15-547:40"/>
+ <constant value="547:4-547:40"/>
+ <constant value="548:23-548:27"/>
+ <constant value="548:13-548:28"/>
+ <constant value="548:36-548:38"/>
+ <constant value="548:36-548:48"/>
+ <constant value="548:13-548:49"/>
+ <constant value="548:57-548:59"/>
+ <constant value="548:57-548:73"/>
+ <constant value="548:87-548:88"/>
+ <constant value="548:87-548:99"/>
+ <constant value="548:57-548:100"/>
+ <constant value="548:57-548:111"/>
+ <constant value="548:13-548:112"/>
+ <constant value="548:4-548:112"/>
+ <constant value="549:15-549:25"/>
+ <constant value="549:44-549:46"/>
+ <constant value="549:44-549:48"/>
+ <constant value="549:15-549:49"/>
+ <constant value="549:4-549:49"/>
+ <constant value="550:15-550:45"/>
+ <constant value="550:4-550:45"/>
+ <constant value="552:35-552:37"/>
+ <constant value="552:35-552:43"/>
+ <constant value="552:60-552:87"/>
+ <constant value="552:89-552:93"/>
+ <constant value="552:35-552:94"/>
+ <constant value="553:31-553:45"/>
+ <constant value="553:48-553:50"/>
+ <constant value="553:48-553:56"/>
+ <constant value="553:31-553:56"/>
+ <constant value="553:70-553:84"/>
+ <constant value="553:62-553:64"/>
+ <constant value="553:28-553:90"/>
+ <constant value="554:5-554:15"/>
+ <constant value="554:5-554:27"/>
+ <constant value="555:23-555:31"/>
+ <constant value="555:33-555:35"/>
+ <constant value="555:33-555:40"/>
+ <constant value="554:5-555:41"/>
+ <constant value="556:23-556:44"/>
+ <constant value="556:46-556:53"/>
+ <constant value="554:5-556:54"/>
+ <constant value="558:5-558:7"/>
+ <constant value="558:5-558:13"/>
+ <constant value="559:23-559:35"/>
+ <constant value="559:37-559:47"/>
+ <constant value="559:37-559:68"/>
+ <constant value="558:5-559:69"/>
+ <constant value="560:23-560:33"/>
+ <constant value="560:35-560:45"/>
+ <constant value="560:35-560:64"/>
+ <constant value="558:5-560:65"/>
+ <constant value="561:23-561:33"/>
+ <constant value="561:35-561:45"/>
+ <constant value="561:35-561:64"/>
+ <constant value="558:5-561:65"/>
+ <constant value="562:23-562:28"/>
+ <constant value="562:30-562:40"/>
+ <constant value="562:30-562:59"/>
+ <constant value="558:5-562:60"/>
+ <constant value="563:23-563:28"/>
+ <constant value="563:30-563:40"/>
+ <constant value="563:30-563:59"/>
+ <constant value="558:5-563:60"/>
+ <constant value="564:23-564:33"/>
+ <constant value="564:35-564:39"/>
+ <constant value="558:5-564:40"/>
+ <constant value="554:5-564:40"/>
+ <constant value="553:5-564:40"/>
+ <constant value="552:5-564:40"/>
+ <constant value="551:4-564:40"/>
+ <constant value="572:18-572:20"/>
+ <constant value="572:18-572:28"/>
+ <constant value="572:36-572:38"/>
+ <constant value="572:36-572:45"/>
+ <constant value="572:18-572:46"/>
+ <constant value="572:4-572:46"/>
+ <constant value="605:12-605:16"/>
+ <constant value="605:4-605:16"/>
+ <constant value="606:29-606:30"/>
+ <constant value="606:32-606:35"/>
+ <constant value="606:19-606:36"/>
+ <constant value="606:4-606:36"/>
+ <constant value="609:13-609:14"/>
+ <constant value="609:4-609:14"/>
+ <constant value="610:16-610:28"/>
+ <constant value="610:16-610:36"/>
+ <constant value="613:5-613:6"/>
+ <constant value="611:5-611:6"/>
+ <constant value="611:9-611:10"/>
+ <constant value="611:5-611:10"/>
+ <constant value="610:13-614:9"/>
+ <constant value="610:4-614:9"/>
+ <constant value="615:18-615:20"/>
+ <constant value="615:4-615:20"/>
+ <constant value="618:10-618:12"/>
+ <constant value="618:10-618:21"/>
+ <constant value="618:4-618:21"/>
+ <constant value="619:18-619:30"/>
+ <constant value="619:4-619:30"/>
+ <constant value="620:15-620:19"/>
+ <constant value="620:4-620:19"/>
+ <constant value="623:12-623:17"/>
+ <constant value="623:4-623:17"/>
+ <constant value="626:10-626:12"/>
+ <constant value="626:10-626:21"/>
+ <constant value="626:4-626:21"/>
+ <constant value="627:19-627:22"/>
+ <constant value="627:4-627:22"/>
+ <constant value="575:13-575:72"/>
+ <constant value="575:4-575:72"/>
+ <constant value="578:13-578:23"/>
+ <constant value="578:13-578:44"/>
+ <constant value="578:4-578:44"/>
+ <constant value="581:10-581:12"/>
+ <constant value="581:10-581:21"/>
+ <constant value="581:4-581:21"/>
+ <constant value="582:29-582:34"/>
+ <constant value="582:4-582:34"/>
+ <constant value="583:12-583:18"/>
+ <constant value="583:4-583:18"/>
+ <constant value="584:15-584:18"/>
+ <constant value="584:4-584:18"/>
+ <constant value="587:10-587:12"/>
+ <constant value="587:10-587:21"/>
+ <constant value="587:4-587:21"/>
+ <constant value="588:12-588:17"/>
+ <constant value="588:4-588:17"/>
+ <constant value="589:20-589:26"/>
+ <constant value="589:4-589:26"/>
+ <constant value="590:12-590:22"/>
+ <constant value="590:12-590:39"/>
+ <constant value="590:4-590:39"/>
+ <constant value="optionsOrLexer"/>
+ <constant value="__applyMultipleMainTemplateCS2Grammar"/>
+ <constant value="CJ.asSequence():QJ"/>
+ <constant value="QJ.at(I):J"/>
+ <constant value="16"/>
+ <constant value="243"/>
+ <constant value="256"/>
+ <constant value="I.+(I):I"/>
+ <constant value="288"/>
+ <constant value="301"/>
+ <constant value="314"/>
+ <constant value="alternative"/>
+ <constant value="327"/>
+ <constant value="639:12-639:16"/>
+ <constant value="639:4-639:16"/>
+ <constant value="640:29-640:30"/>
+ <constant value="640:32-640:35"/>
+ <constant value="640:19-640:36"/>
+ <constant value="640:4-640:36"/>
+ <constant value="643:13-643:14"/>
+ <constant value="643:4-643:14"/>
+ <constant value="644:14-644:15"/>
+ <constant value="644:13-644:15"/>
+ <constant value="644:4-644:15"/>
+ <constant value="645:18-645:19"/>
+ <constant value="645:4-645:19"/>
+ <constant value="648:10-648:12"/>
+ <constant value="648:10-648:21"/>
+ <constant value="648:4-648:21"/>
+ <constant value="651:10-651:12"/>
+ <constant value="651:10-651:21"/>
+ <constant value="651:4-651:21"/>
+ <constant value="653:19-653:22"/>
+ <constant value="653:4-653:22"/>
+ <constant value="656:10-656:12"/>
+ <constant value="656:10-656:21"/>
+ <constant value="656:4-656:21"/>
+ <constant value="658:18-658:30"/>
+ <constant value="658:4-658:30"/>
+ <constant value="659:19-659:20"/>
+ <constant value="659:4-659:20"/>
+ <constant value="660:15-660:19"/>
+ <constant value="660:4-660:19"/>
+ <constant value="663:12-663:17"/>
+ <constant value="663:4-663:17"/>
+ <constant value="collection"/>
+ <constant value="counter"/>
+ <constant value="__matchFunctionTemplate2ProductionRule"/>
+ <constant value="pr"/>
+ <constant value="temp"/>
+ <constant value="Parameter"/>
+ <constant value="671:8-671:28"/>
+ <constant value="671:3-680:4"/>
+ <constant value="681:10-681:35"/>
+ <constant value="681:3-686:4"/>
+ <constant value="687:9-687:24"/>
+ <constant value="687:3-691:4"/>
+ <constant value="__applyFunctionTemplate2ProductionRule"/>
+ <constant value="J.toPRName():J"/>
+ <constant value="functionSequence"/>
+ <constant value="parameters"/>
+ <constant value="labelDeclarations"/>
+ <constant value="java.lang.Object"/>
+ <constant value="672:10-672:11"/>
+ <constant value="672:10-672:20"/>
+ <constant value="672:4-672:20"/>
+ <constant value="673:12-673:13"/>
+ <constant value="673:12-673:18"/>
+ <constant value="673:12-673:29"/>
+ <constant value="673:4-673:29"/>
+ <constant value="674:29-674:34"/>
+ <constant value="674:4-674:34"/>
+ <constant value="675:18-675:19"/>
+ <constant value="675:18-675:36"/>
+ <constant value="675:4-675:36"/>
+ <constant value="676:18-676:21"/>
+ <constant value="676:4-676:21"/>
+ <constant value="679:35-679:39"/>
+ <constant value="679:25-679:40"/>
+ <constant value="679:4-679:40"/>
+ <constant value="682:10-682:11"/>
+ <constant value="682:10-682:20"/>
+ <constant value="682:4-682:20"/>
+ <constant value="683:12-683:18"/>
+ <constant value="683:4-683:18"/>
+ <constant value="684:20-684:26"/>
+ <constant value="684:4-684:26"/>
+ <constant value="685:12-685:30"/>
+ <constant value="685:4-685:30"/>
+ <constant value="688:10-688:11"/>
+ <constant value="688:10-688:20"/>
+ <constant value="688:4-688:20"/>
+ <constant value="689:12-689:17"/>
+ <constant value="689:4-689:17"/>
+ <constant value="690:12-690:22"/>
+ <constant value="690:12-690:39"/>
+ <constant value="690:4-690:39"/>
+ <constant value="__matchClassTemplate2ProductionRule"/>
+ <constant value="saContext"/>
+ <constant value="firstToken"/>
+ <constant value="saLocation"/>
+ <constant value="249"/>
+ <constant value="isOperatored"/>
+ <constant value="142"/>
+ <constant value="templateSequence"/>
+ <constant value="248"/>
+ <constant value="pr2"/>
+ <constant value="v2"/>
+ <constant value="rc2"/>
+ <constant value="ret2"/>
+ <constant value="saContext2"/>
+ <constant value="firstToken2"/>
+ <constant value="saLocation2"/>
+ <constant value="719:8-719:9"/>
+ <constant value="719:8-719:20"/>
+ <constant value="719:4-719:20"/>
+ <constant value="722:8-722:28"/>
+ <constant value="722:3-728:4"/>
+ <constant value="729:9-729:34"/>
+ <constant value="729:3-731:4"/>
+ <constant value="732:15-732:41"/>
+ <constant value="732:3-734:4"/>
+ <constant value="735:10-735:35"/>
+ <constant value="735:3-740:4"/>
+ <constant value="741:16-741:41"/>
+ <constant value="741:3-746:4"/>
+ <constant value="747:16-747:42"/>
+ <constant value="747:3-749:4"/>
+ <constant value="760:4-760:5"/>
+ <constant value="760:4-760:16"/>
+ <constant value="760:25-760:26"/>
+ <constant value="760:25-760:39"/>
+ <constant value="760:21-760:39"/>
+ <constant value="760:4-760:39"/>
+ <constant value="817:4-817:5"/>
+ <constant value="817:4-817:22"/>
+ <constant value="817:4-817:39"/>
+ <constant value="820:8-820:28"/>
+ <constant value="820:3-820:28"/>
+ <constant value="768:7-768:26"/>
+ <constant value="768:3-774:4"/>
+ <constant value="775:7-775:24"/>
+ <constant value="775:3-780:4"/>
+ <constant value="781:9-781:34"/>
+ <constant value="781:3-783:4"/>
+ <constant value="784:15-784:41"/>
+ <constant value="784:3-786:4"/>
+ <constant value="826:8-826:9"/>
+ <constant value="826:8-826:26"/>
+ <constant value="826:8-826:43"/>
+ <constant value="826:4-826:43"/>
+ <constant value="829:8-829:28"/>
+ <constant value="829:3-829:28"/>
+ <constant value="830:9-830:29"/>
+ <constant value="830:3-841:4"/>
+ <constant value="842:7-842:24"/>
+ <constant value="842:3-852:4"/>
+ <constant value="853:8-853:22"/>
+ <constant value="853:3-855:4"/>
+ <constant value="856:9-856:23"/>
+ <constant value="856:3-860:4"/>
+ <constant value="861:10-861:35"/>
+ <constant value="861:3-866:4"/>
+ <constant value="867:16-867:42"/>
+ <constant value="867:3-869:4"/>
+ <constant value="870:10-870:35"/>
+ <constant value="870:3-875:4"/>
+ <constant value="876:17-876:42"/>
+ <constant value="876:3-881:4"/>
+ <constant value="882:17-882:43"/>
+ <constant value="882:3-884:4"/>
+ <constant value="__applyConcreteClassTemplate2ProductionRule"/>
+ <constant value="declarations"/>
+ <constant value="89"/>
+ <constant value="90"/>
+ <constant value="isContext"/>
+ <constant value="isAddToContext"/>
+ <constant value="J.createAction(JJJ):J"/>
+ <constant value="ei.leaveContext("/>
+ <constant value="J.toString():J"/>
+ <constant value=");"/>
+ <constant value="nextTokenValue"/>
+ <constant value="tokenType"/>
+ <constant value="postActions"/>
+ <constant value="723:18-723:19"/>
+ <constant value="723:18-723:36"/>
+ <constant value="723:4-723:36"/>
+ <constant value="724:30-724:40"/>
+ <constant value="724:20-724:41"/>
+ <constant value="724:4-724:41"/>
+ <constant value="725:35-725:39"/>
+ <constant value="725:25-725:40"/>
+ <constant value="725:4-725:40"/>
+ <constant value="726:29-726:33"/>
+ <constant value="726:4-726:33"/>
+ <constant value="727:25-727:34"/>
+ <constant value="727:36-727:46"/>
+ <constant value="727:15-727:47"/>
+ <constant value="727:4-727:47"/>
+ <constant value="699:10-699:11"/>
+ <constant value="699:10-699:20"/>
+ <constant value="699:4-699:20"/>
+ <constant value="700:12-700:13"/>
+ <constant value="700:12-700:18"/>
+ <constant value="700:12-700:29"/>
+ <constant value="701:8-701:9"/>
+ <constant value="701:8-701:14"/>
+ <constant value="701:8-701:31"/>
+ <constant value="704:6-704:9"/>
+ <constant value="704:12-704:13"/>
+ <constant value="704:12-704:18"/>
+ <constant value="704:6-704:18"/>
+ <constant value="702:6-702:8"/>
+ <constant value="701:5-705:10"/>
+ <constant value="700:12-705:10"/>
+ <constant value="700:4-705:10"/>
+ <constant value="706:15-706:18"/>
+ <constant value="706:4-706:18"/>
+ <constant value="730:20-730:30"/>
+ <constant value="730:44-730:45"/>
+ <constant value="730:44-730:50"/>
+ <constant value="730:52-730:53"/>
+ <constant value="730:52-730:63"/>
+ <constant value="730:65-730:66"/>
+ <constant value="730:65-730:81"/>
+ <constant value="730:20-730:82"/>
+ <constant value="730:4-730:82"/>
+ <constant value="709:10-709:11"/>
+ <constant value="709:10-709:20"/>
+ <constant value="709:4-709:20"/>
+ <constant value="710:12-710:17"/>
+ <constant value="710:4-710:17"/>
+ <constant value="711:12-711:22"/>
+ <constant value="711:12-711:39"/>
+ <constant value="711:4-711:39"/>
+ <constant value="733:13-733:31"/>
+ <constant value="733:34-733:35"/>
+ <constant value="733:34-733:45"/>
+ <constant value="733:34-733:56"/>
+ <constant value="733:13-733:56"/>
+ <constant value="733:59-733:63"/>
+ <constant value="733:13-733:63"/>
+ <constant value="733:4-733:63"/>
+ <constant value="736:10-736:11"/>
+ <constant value="736:10-736:20"/>
+ <constant value="736:4-736:20"/>
+ <constant value="737:12-737:18"/>
+ <constant value="737:4-737:18"/>
+ <constant value="738:20-738:26"/>
+ <constant value="738:4-738:26"/>
+ <constant value="739:12-739:30"/>
+ <constant value="739:4-739:30"/>
+ <constant value="742:10-742:11"/>
+ <constant value="742:10-742:20"/>
+ <constant value="742:4-742:20"/>
+ <constant value="743:12-743:24"/>
+ <constant value="743:4-743:24"/>
+ <constant value="744:20-744:30"/>
+ <constant value="744:20-744:45"/>
+ <constant value="744:4-744:45"/>
+ <constant value="745:12-745:22"/>
+ <constant value="745:12-745:32"/>
+ <constant value="745:4-745:32"/>
+ <constant value="748:13-748:23"/>
+ <constant value="748:13-748:35"/>
+ <constant value="748:4-748:35"/>
+ <constant value="753:2-753:6"/>
+ <constant value="753:2-753:19"/>
+ <constant value="754:7-754:8"/>
+ <constant value="754:21-754:41"/>
+ <constant value="754:7-754:42"/>
+ <constant value="754:3-754:42"/>
+ <constant value="753:2-755:3"/>
+ <constant value="Templates2RuleCall"/>
+ <constant value="caller"/>
+ <constant value="callee"/>
+ <constant value="v"/>
+ <constant value="disambiguate"/>
+ <constant value="syntacticPredicate"/>
+ <constant value="J.resolveTemp(JJ):J"/>
+ <constant value="805:18-805:24"/>
+ <constant value="805:4-805:24"/>
+ <constant value="806:26-806:32"/>
+ <constant value="806:26-806:45"/>
+ <constant value="806:4-806:45"/>
+ <constant value="807:15-807:16"/>
+ <constant value="807:4-807:16"/>
+ <constant value="804:3-808:4"/>
+ <constant value="810:19-810:29"/>
+ <constant value="810:42-810:48"/>
+ <constant value="810:50-810:55"/>
+ <constant value="810:19-810:56"/>
+ <constant value="810:4-810:56"/>
+ <constant value="809:3-811:4"/>
+ <constant value="__applyEmptyAbstractClassTemplate2ProductionRule"/>
+ <constant value="65"/>
+ <constant value="prefixSequence"/>
+ <constant value="95"/>
+ <constant value="J.Templates2RuleCall(JJ):J"/>
+ <constant value="ei.addToContext(ret, "/>
+ <constant value="764:25-764:34"/>
+ <constant value="764:15-764:35"/>
+ <constant value="764:4-764:35"/>
+ <constant value="765:29-765:34"/>
+ <constant value="765:4-765:34"/>
+ <constant value="766:18-766:19"/>
+ <constant value="766:4-766:19"/>
+ <constant value="769:22-769:23"/>
+ <constant value="769:22-769:38"/>
+ <constant value="769:22-769:55"/>
+ <constant value="772:15-772:16"/>
+ <constant value="772:15-772:31"/>
+ <constant value="772:33-772:34"/>
+ <constant value="772:5-772:35"/>
+ <constant value="770:15-770:16"/>
+ <constant value="770:5-770:17"/>
+ <constant value="769:19-773:9"/>
+ <constant value="769:4-773:9"/>
+ <constant value="776:10-776:11"/>
+ <constant value="776:10-776:20"/>
+ <constant value="776:4-776:20"/>
+ <constant value="777:19-777:20"/>
+ <constant value="777:19-777:44"/>
+ <constant value="778:5-778:15"/>
+ <constant value="778:35-778:36"/>
+ <constant value="778:38-778:39"/>
+ <constant value="778:5-778:40"/>
+ <constant value="777:19-779:5"/>
+ <constant value="777:4-779:5"/>
+ <constant value="782:20-782:26"/>
+ <constant value="782:4-782:26"/>
+ <constant value="785:13-785:36"/>
+ <constant value="785:39-785:40"/>
+ <constant value="785:39-785:55"/>
+ <constant value="785:39-785:66"/>
+ <constant value="785:13-785:66"/>
+ <constant value="785:69-785:73"/>
+ <constant value="785:13-785:73"/>
+ <constant value="785:4-785:73"/>
+ <constant value="__applyNonEmptyAbstractClassTemplate2ProductionRule"/>
+ <constant value="96"/>
+ <constant value="97"/>
+ <constant value="concreteSyntax"/>
+ <constant value="grammar"/>
+ <constant value="_abstractContents"/>
+ <constant value="198"/>
+ <constant value="J.prepend(J):J"/>
+ <constant value="201"/>
+ <constant value="J.append(J):J"/>
+ <constant value="346"/>
+ <constant value="351"/>
+ <constant value="831:10-831:11"/>
+ <constant value="831:10-831:20"/>
+ <constant value="831:4-831:20"/>
+ <constant value="832:15-832:16"/>
+ <constant value="832:15-832:31"/>
+ <constant value="832:4-832:31"/>
+ <constant value="833:12-833:13"/>
+ <constant value="833:12-833:18"/>
+ <constant value="833:12-833:29"/>
+ <constant value="833:32-833:51"/>
+ <constant value="833:12-833:51"/>
+ <constant value="833:4-833:51"/>
+ <constant value="834:15-834:19"/>
+ <constant value="834:4-834:19"/>
+ <constant value="835:29-835:33"/>
+ <constant value="835:4-835:33"/>
+ <constant value="836:18-836:19"/>
+ <constant value="836:18-836:36"/>
+ <constant value="836:4-836:36"/>
+ <constant value="837:30-837:41"/>
+ <constant value="837:20-837:42"/>
+ <constant value="837:4-837:42"/>
+ <constant value="838:35-838:39"/>
+ <constant value="838:25-838:40"/>
+ <constant value="838:4-838:40"/>
+ <constant value="839:15-839:25"/>
+ <constant value="839:4-839:25"/>
+ <constant value="840:15-840:26"/>
+ <constant value="840:4-840:26"/>
+ <constant value="844:42-844:43"/>
+ <constant value="844:42-844:67"/>
+ <constant value="845:7-845:17"/>
+ <constant value="845:37-845:38"/>
+ <constant value="845:40-845:41"/>
+ <constant value="845:7-845:42"/>
+ <constant value="844:42-846:7"/>
+ <constant value="847:8-847:9"/>
+ <constant value="847:8-847:22"/>
+ <constant value="847:8-847:39"/>
+ <constant value="850:6-850:9"/>
+ <constant value="850:19-850:22"/>
+ <constant value="850:6-850:23"/>
+ <constant value="848:6-848:9"/>
+ <constant value="848:18-848:21"/>
+ <constant value="848:6-848:22"/>
+ <constant value="847:5-851:10"/>
+ <constant value="844:5-851:10"/>
+ <constant value="843:4-851:10"/>
+ <constant value="854:19-854:22"/>
+ <constant value="854:4-854:22"/>
+ <constant value="857:18-857:21"/>
+ <constant value="857:4-857:21"/>
+ <constant value="859:15-859:17"/>
+ <constant value="859:4-859:17"/>
+ <constant value="862:10-862:11"/>
+ <constant value="862:10-862:20"/>
+ <constant value="862:4-862:20"/>
+ <constant value="863:12-863:17"/>
+ <constant value="863:4-863:17"/>
+ <constant value="864:20-864:30"/>
+ <constant value="864:44-864:45"/>
+ <constant value="864:44-864:50"/>
+ <constant value="864:52-864:53"/>
+ <constant value="864:52-864:63"/>
+ <constant value="864:52-864:74"/>
+ <constant value="864:76-864:77"/>
+ <constant value="864:76-864:92"/>
+ <constant value="864:20-864:93"/>
+ <constant value="864:4-864:93"/>
+ <constant value="865:12-865:22"/>
+ <constant value="865:12-865:39"/>
+ <constant value="865:4-865:39"/>
+ <constant value="868:13-868:31"/>
+ <constant value="868:34-868:35"/>
+ <constant value="868:34-868:45"/>
+ <constant value="868:34-868:56"/>
+ <constant value="868:13-868:56"/>
+ <constant value="868:59-868:63"/>
+ <constant value="868:13-868:63"/>
+ <constant value="868:4-868:63"/>
+ <constant value="871:10-871:11"/>
+ <constant value="871:10-871:20"/>
+ <constant value="871:4-871:20"/>
+ <constant value="872:12-872:18"/>
+ <constant value="872:4-872:18"/>
+ <constant value="873:20-873:26"/>
+ <constant value="873:4-873:26"/>
+ <constant value="874:12-874:30"/>
+ <constant value="874:4-874:30"/>
+ <constant value="877:10-877:11"/>
+ <constant value="877:10-877:20"/>
+ <constant value="877:4-877:20"/>
+ <constant value="878:12-878:24"/>
+ <constant value="878:4-878:24"/>
+ <constant value="879:20-879:30"/>
+ <constant value="879:20-879:45"/>
+ <constant value="879:4-879:45"/>
+ <constant value="880:12-880:22"/>
+ <constant value="880:12-880:32"/>
+ <constant value="880:4-880:32"/>
+ <constant value="883:13-883:23"/>
+ <constant value="883:13-883:35"/>
+ <constant value="883:4-883:35"/>
+ <constant value="rcs"/>
+ <constant value="__matchOperatoredAbstractClassTemplate2ProductionRule"/>
+ <constant value="443"/>
+ <constant value="246"/>
+ <constant value="parentheses"/>
+ <constant value="isOff"/>
+ <constant value="291"/>
+ <constant value="primarySubtemplates"/>
+ <constant value="isNonPrimary"/>
+ <constant value="311"/>
+ <constant value="nonPrimarySubtemplates"/>
+ <constant value="331"/>
+ <constant value="primaryC"/>
+ <constant value="primaryTkL"/>
+ <constant value="primaryV2"/>
+ <constant value="primaryRc2"/>
+ <constant value="primaryTkR"/>
+ <constant value="nonPrimaryV"/>
+ <constant value="nonPrimaryRc"/>
+ <constant value="primaryPr"/>
+ <constant value="primaryRet"/>
+ <constant value="primaryA"/>
+ <constant value="primaryV"/>
+ <constant value="primaryRc"/>
+ <constant value="84"/>
+ <constant value="891:4-891:5"/>
+ <constant value="891:4-891:16"/>
+ <constant value="891:21-891:22"/>
+ <constant value="891:21-891:35"/>
+ <constant value="891:4-891:35"/>
+ <constant value="979:7-979:8"/>
+ <constant value="979:7-979:20"/>
+ <constant value="979:7-979:37"/>
+ <constant value="982:9-982:10"/>
+ <constant value="982:9-982:22"/>
+ <constant value="982:9-982:28"/>
+ <constant value="982:5-982:28"/>
+ <constant value="980:5-980:9"/>
+ <constant value="979:4-983:9"/>
+ <constant value="895:43-895:44"/>
+ <constant value="895:43-895:57"/>
+ <constant value="896:8-896:9"/>
+ <constant value="896:22-896:42"/>
+ <constant value="896:8-896:43"/>
+ <constant value="896:4-896:43"/>
+ <constant value="895:43-897:4"/>
+ <constant value="898:50-898:60"/>
+ <constant value="898:75-898:87"/>
+ <constant value="899:8-899:9"/>
+ <constant value="899:8-899:22"/>
+ <constant value="899:4-899:22"/>
+ <constant value="898:75-900:4"/>
+ <constant value="898:50-900:5"/>
+ <constant value="901:53-901:63"/>
+ <constant value="901:78-901:90"/>
+ <constant value="902:4-902:5"/>
+ <constant value="902:4-902:18"/>
+ <constant value="901:78-903:4"/>
+ <constant value="901:53-903:5"/>
+ <constant value="986:8-986:28"/>
+ <constant value="986:3-986:28"/>
+ <constant value="987:14-987:33"/>
+ <constant value="987:3-990:4"/>
+ <constant value="991:16-991:31"/>
+ <constant value="991:3-993:4"/>
+ <constant value="994:15-994:29"/>
+ <constant value="994:3-996:4"/>
+ <constant value="997:16-997:30"/>
+ <constant value="997:3-1000:4"/>
+ <constant value="1001:16-1001:31"/>
+ <constant value="1001:3-1003:4"/>
+ <constant value="912:9-912:34"/>
+ <constant value="912:3-917:4"/>
+ <constant value="918:7-918:24"/>
+ <constant value="918:3-920:4"/>
+ <constant value="921:7-921:21"/>
+ <constant value="921:3-923:4"/>
+ <constant value="924:8-924:22"/>
+ <constant value="924:3-939:4"/>
+ <constant value="940:55-940:77"/>
+ <constant value="940:3-942:4"/>
+ <constant value="943:56-943:78"/>
+ <constant value="943:3-948:4"/>
+ <constant value="949:15-949:35"/>
+ <constant value="949:3-955:4"/>
+ <constant value="956:16-956:41"/>
+ <constant value="956:3-961:4"/>
+ <constant value="962:14-962:31"/>
+ <constant value="962:3-962:31"/>
+ <constant value="963:52-963:71"/>
+ <constant value="963:3-965:4"/>
+ <constant value="966:53-966:72"/>
+ <constant value="966:3-971:4"/>
+ <constant value="906:8-906:28"/>
+ <constant value="906:3-911:4"/>
+ <constant value="__applyOperatoredAbstractClassTemplate2ProductionRule"/>
+ <constant value="operatorList"/>
+ <constant value="J.isOfList(J):J"/>
+ <constant value="152"/>
+ <constant value="168"/>
+ <constant value="166"/>
+ <constant value="167"/>
+ <constant value="169"/>
+ <constant value="20"/>
+ <constant value="202"/>
+ <constant value="232"/>
+ <constant value="259"/>
+ <constant value="272"/>
+ <constant value="primary_"/>
+ <constant value="360"/>
+ <constant value="390"/>
+ <constant value="404"/>
+ <constant value="417"/>
+ <constant value="430"/>
+ <constant value="907:12-907:13"/>
+ <constant value="907:12-907:18"/>
+ <constant value="907:12-907:29"/>
+ <constant value="907:4-907:29"/>
+ <constant value="908:15-908:18"/>
+ <constant value="908:4-908:18"/>
+ <constant value="909:29-909:34"/>
+ <constant value="909:4-909:34"/>
+ <constant value="910:18-910:19"/>
+ <constant value="910:4-910:19"/>
+ <constant value="913:10-913:11"/>
+ <constant value="913:10-913:20"/>
+ <constant value="913:4-913:20"/>
+ <constant value="914:12-914:17"/>
+ <constant value="914:4-914:17"/>
+ <constant value="915:20-915:26"/>
+ <constant value="915:4-915:26"/>
+ <constant value="916:12-916:22"/>
+ <constant value="916:12-916:39"/>
+ <constant value="916:4-916:39"/>
+ <constant value="919:19-919:21"/>
+ <constant value="919:4-919:21"/>
+ <constant value="922:19-922:22"/>
+ <constant value="922:4-922:22"/>
+ <constant value="927:39-927:50"/>
+ <constant value="927:39-927:59"/>
+ <constant value="925:18-925:30"/>
+ <constant value="925:48-925:52"/>
+ <constant value="925:18-925:53"/>
+ <constant value="926:5-926:6"/>
+ <constant value="926:16-926:17"/>
+ <constant value="926:16-926:30"/>
+ <constant value="926:5-926:31"/>
+ <constant value="925:18-927:5"/>
+ <constant value="928:8-928:11"/>
+ <constant value="928:8-928:28"/>
+ <constant value="931:9-931:10"/>
+ <constant value="931:9-931:16"/>
+ <constant value="931:19-931:22"/>
+ <constant value="931:19-931:28"/>
+ <constant value="931:9-931:28"/>
+ <constant value="934:7-934:10"/>
+ <constant value="932:7-932:8"/>
+ <constant value="931:6-935:11"/>
+ <constant value="929:6-929:7"/>
+ <constant value="928:5-936:10"/>
+ <constant value="925:18-937:5"/>
+ <constant value="925:4-937:5"/>
+ <constant value="938:15-938:16"/>
+ <constant value="938:4-938:16"/>
+ <constant value="941:19-941:22"/>
+ <constant value="941:4-941:22"/>
+ <constant value="944:18-944:20"/>
+ <constant value="944:4-944:20"/>
+ <constant value="945:26-945:28"/>
+ <constant value="945:26-945:41"/>
+ <constant value="945:4-945:41"/>
+ <constant value="946:19-946:20"/>
+ <constant value="946:4-946:20"/>
+ <constant value="947:15-947:26"/>
+ <constant value="947:4-947:26"/>
+ <constant value="950:12-950:22"/>
+ <constant value="950:25-950:26"/>
+ <constant value="950:25-950:31"/>
+ <constant value="950:25-950:42"/>
+ <constant value="950:12-950:42"/>
+ <constant value="950:4-950:42"/>
+ <constant value="951:15-951:16"/>
+ <constant value="951:15-951:31"/>
+ <constant value="951:4-951:31"/>
+ <constant value="952:29-952:34"/>
+ <constant value="952:4-952:34"/>
+ <constant value="953:15-953:25"/>
+ <constant value="953:4-953:25"/>
+ <constant value="954:18-954:26"/>
+ <constant value="954:4-954:26"/>
+ <constant value="957:10-957:11"/>
+ <constant value="957:10-957:20"/>
+ <constant value="957:4-957:20"/>
+ <constant value="958:12-958:17"/>
+ <constant value="958:4-958:17"/>
+ <constant value="959:20-959:26"/>
+ <constant value="959:4-959:26"/>
+ <constant value="960:12-960:22"/>
+ <constant value="960:12-960:39"/>
+ <constant value="960:4-960:39"/>
+ <constant value="964:19-964:29"/>
+ <constant value="964:4-964:29"/>
+ <constant value="967:18-967:20"/>
+ <constant value="967:4-967:20"/>
+ <constant value="968:26-968:28"/>
+ <constant value="968:26-968:41"/>
+ <constant value="968:4-968:41"/>
+ <constant value="969:19-969:27"/>
+ <constant value="969:4-969:27"/>
+ <constant value="970:15-970:23"/>
+ <constant value="970:4-970:23"/>
+ <constant value="acc"/>
+ <constant value="ps"/>
+ <constant value="__applyOperatoredAbstractClassTemplate2ProductionRuleWithParentheses"/>
+ <constant value="21"/>
+ <constant value="22"/>
+ <constant value="LPAREN"/>
+ <constant value="RPAREN"/>
+ <constant value="23"/>
+ <constant value="24"/>
+ <constant value="225"/>
+ <constant value="241"/>
+ <constant value="239"/>
+ <constant value="240"/>
+ <constant value="242"/>
+ <constant value="25"/>
+ <constant value="275"/>
+ <constant value="305"/>
+ <constant value="319"/>
+ <constant value="332"/>
+ <constant value="345"/>
+ <constant value="433"/>
+ <constant value="463"/>
+ <constant value="477"/>
+ <constant value="490"/>
+ <constant value="503"/>
+ <constant value="988:19-988:27"/>
+ <constant value="988:4-988:27"/>
+ <constant value="989:29-989:39"/>
+ <constant value="989:41-989:51"/>
+ <constant value="989:53-989:63"/>
+ <constant value="989:19-989:64"/>
+ <constant value="989:4-989:64"/>
+ <constant value="992:12-992:20"/>
+ <constant value="992:4-992:20"/>
+ <constant value="995:19-995:29"/>
+ <constant value="995:4-995:29"/>
+ <constant value="998:18-998:20"/>
+ <constant value="998:4-998:20"/>
+ <constant value="999:15-999:24"/>
+ <constant value="999:4-999:24"/>
+ <constant value="1002:12-1002:20"/>
+ <constant value="1002:4-1002:20"/>
+ <constant value="isOfList"/>
+ <constant value="MTCS!Priority;"/>
+ <constant value="list"/>
+ <constant value="1007:5-1007:9"/>
+ <constant value="1007:5-1007:14"/>
+ <constant value="1007:5-1007:19"/>
+ <constant value="1007:5-1007:36"/>
+ <constant value="1010:3-1010:7"/>
+ <constant value="1010:3-1010:12"/>
+ <constant value="1010:15-1010:19"/>
+ <constant value="1010:3-1010:19"/>
+ <constant value="1008:3-1008:7"/>
+ <constant value="1008:3-1008:24"/>
+ <constant value="1007:2-1011:7"/>
+ <constant value="getCalledRule"/>
+ <constant value="40"/>
+ <constant value="57"/>
+ <constant value="associativity"/>
+ <constant value="EnumLiteral"/>
+ <constant value="left"/>
+ <constant value="53"/>
+ <constant value="107"/>
+ <constant value="right"/>
+ <constant value="106"/>
+ <constant value="101"/>
+ <constant value="1014:5-1014:9"/>
+ <constant value="1014:5-1014:15"/>
+ <constant value="1014:18-1014:19"/>
+ <constant value="1014:5-1014:19"/>
+ <constant value="1024:3-1024:13"/>
+ <constant value="1024:26-1024:38"/>
+ <constant value="1024:56-1024:60"/>
+ <constant value="1024:26-1024:61"/>
+ <constant value="1025:4-1025:5"/>
+ <constant value="1025:4-1025:10"/>
+ <constant value="1025:13-1025:17"/>
+ <constant value="1025:13-1025:22"/>
+ <constant value="1025:4-1025:22"/>
+ <constant value="1024:26-1026:4"/>
+ <constant value="1027:4-1027:5"/>
+ <constant value="1027:4-1027:11"/>
+ <constant value="1027:17-1027:24"/>
+ <constant value="1034:5-1034:9"/>
+ <constant value="1034:5-1034:15"/>
+ <constant value="1034:18-1034:19"/>
+ <constant value="1034:5-1034:19"/>
+ <constant value="1028:8-1028:12"/>
+ <constant value="1028:8-1028:26"/>
+ <constant value="1028:29-1028:34"/>
+ <constant value="1028:8-1028:34"/>
+ <constant value="1031:6-1031:10"/>
+ <constant value="1031:6-1031:16"/>
+ <constant value="1029:6-1029:10"/>
+ <constant value="1029:6-1029:16"/>
+ <constant value="1029:19-1029:20"/>
+ <constant value="1029:6-1029:20"/>
+ <constant value="1028:5-1032:10"/>
+ <constant value="1027:14-1035:9"/>
+ <constant value="1027:4-1035:9"/>
+ <constant value="1024:26-1036:4"/>
+ <constant value="1024:26-1036:13"/>
+ <constant value="1036:15-1036:19"/>
+ <constant value="1024:3-1036:20"/>
+ <constant value="1015:6-1015:13"/>
+ <constant value="1015:18-1015:22"/>
+ <constant value="1015:18-1015:36"/>
+ <constant value="1015:39-1015:45"/>
+ <constant value="1015:18-1015:45"/>
+ <constant value="1015:6-1015:45"/>
+ <constant value="1018:4-1018:14"/>
+ <constant value="1018:27-1018:44"/>
+ <constant value="1018:62-1018:66"/>
+ <constant value="1018:27-1018:67"/>
+ <constant value="1019:5-1019:6"/>
+ <constant value="1019:5-1019:19"/>
+ <constant value="1020:5-1020:9"/>
+ <constant value="1020:19-1020:20"/>
+ <constant value="1020:19-1020:33"/>
+ <constant value="1020:5-1020:34"/>
+ <constant value="1019:5-1020:34"/>
+ <constant value="1018:27-1021:5"/>
+ <constant value="1018:27-1021:14"/>
+ <constant value="1021:16-1021:27"/>
+ <constant value="1018:4-1021:28"/>
+ <constant value="1016:4-1016:8"/>
+ <constant value="1015:3-1022:8"/>
+ <constant value="1014:2-1037:7"/>
+ <constant value="isRight"/>
+ <constant value="operators"/>
+ <constant value="arity"/>
+ <constant value="isPostfix"/>
+ <constant value="J.or(J):J"/>
+ <constant value="1041:2-1041:6"/>
+ <constant value="1041:2-1041:16"/>
+ <constant value="1042:3-1042:4"/>
+ <constant value="1042:3-1042:10"/>
+ <constant value="1042:13-1042:14"/>
+ <constant value="1042:3-1042:14"/>
+ <constant value="1042:18-1042:19"/>
+ <constant value="1042:18-1042:29"/>
+ <constant value="1042:3-1042:29"/>
+ <constant value="1041:2-1043:3"/>
+ <constant value="1046:5-1046:9"/>
+ <constant value="1046:5-1046:14"/>
+ <constant value="1046:5-1046:19"/>
+ <constant value="1046:5-1046:36"/>
+ <constant value="1049:3-1049:7"/>
+ <constant value="1049:3-1049:12"/>
+ <constant value="1049:3-1049:17"/>
+ <constant value="1049:3-1049:32"/>
+ <constant value="1049:35-1049:38"/>
+ <constant value="1049:3-1049:38"/>
+ <constant value="1047:3-1047:5"/>
+ <constant value="1046:2-1050:7"/>
+ <constant value="__matchPriority2ProductionRule"/>
+ <constant value="p"/>
+ <constant value="opName"/>
+ <constant value="binaryS"/>
+ <constant value="88"/>
+ <constant value="93"/>
+ <constant value="binaryA"/>
+ <constant value="1056:8-1056:28"/>
+ <constant value="1056:3-1063:4"/>
+ <constant value="1064:9-1064:34"/>
+ <constant value="1064:3-1069:4"/>
+ <constant value="1070:12-1070:37"/>
+ <constant value="1070:3-1074:4"/>
+ <constant value="1075:11-1075:36"/>
+ <constant value="1075:3-1079:4"/>
+ <constant value="1080:16-1080:41"/>
+ <constant value="1080:3-1085:4"/>
+ <constant value="1086:7-1086:24"/>
+ <constant value="1086:3-1090:4"/>
+ <constant value="1091:7-1091:26"/>
+ <constant value="1091:3-1093:4"/>
+ <constant value="1094:7-1094:21"/>
+ <constant value="1094:3-1096:4"/>
+ <constant value="1097:8-1097:22"/>
+ <constant value="1097:3-1100:4"/>
+ <constant value="1101:54-1101:55"/>
+ <constant value="1101:54-1101:65"/>
+ <constant value="1101:54-1101:73"/>
+ <constant value="1101:76-1101:77"/>
+ <constant value="1101:54-1101:77"/>
+ <constant value="1104:4-1104:15"/>
+ <constant value="1102:14-1102:18"/>
+ <constant value="1102:4-1102:19"/>
+ <constant value="1101:51-1105:8"/>
+ <constant value="1101:3-1113:4"/>
+ <constant value="1114:13-1114:30"/>
+ <constant value="1114:3-1118:4"/>
+ <constant value="__applyPriority2ProductionRule"/>
+ <constant value="priority_"/>
+ <constant value="java.lang.String"/>
+ <constant value="203"/>
+ <constant value="J.including(J):J"/>
+ <constant value="J.getCalledRule(J):J"/>
+ <constant value="255"/>
+ <constant value="260"/>
+ <constant value="279"/>
+ <constant value="295"/>
+ <constant value="298"/>
+ <constant value="306"/>
+ <constant value="1057:12-1057:13"/>
+ <constant value="1057:12-1057:20"/>
+ <constant value="1057:23-1057:34"/>
+ <constant value="1057:12-1057:34"/>
+ <constant value="1057:37-1057:38"/>
+ <constant value="1057:37-1057:44"/>
+ <constant value="1057:37-1057:55"/>
+ <constant value="1057:12-1057:55"/>
+ <constant value="1057:4-1057:55"/>
+ <constant value="1058:15-1058:18"/>
+ <constant value="1058:4-1058:18"/>
+ <constant value="1059:29-1059:34"/>
+ <constant value="1059:4-1059:34"/>
+ <constant value="1060:18-1060:19"/>
+ <constant value="1060:4-1060:19"/>
+ <constant value="1061:30-1061:36"/>
+ <constant value="1061:38-1061:48"/>
+ <constant value="1061:20-1061:49"/>
+ <constant value="1061:4-1061:49"/>
+ <constant value="1062:35-1062:40"/>
+ <constant value="1062:25-1062:41"/>
+ <constant value="1062:4-1062:41"/>
+ <constant value="1065:10-1065:11"/>
+ <constant value="1065:10-1065:20"/>
+ <constant value="1065:4-1065:20"/>
+ <constant value="1066:12-1066:17"/>
+ <constant value="1066:4-1066:17"/>
+ <constant value="1067:20-1067:26"/>
+ <constant value="1067:4-1067:26"/>
+ <constant value="1068:12-1068:22"/>
+ <constant value="1068:12-1068:39"/>
+ <constant value="1068:4-1068:39"/>
+ <constant value="1071:12-1071:20"/>
+ <constant value="1071:4-1071:20"/>
+ <constant value="1072:12-1072:30"/>
+ <constant value="1072:4-1072:30"/>
+ <constant value="1073:20-1073:26"/>
+ <constant value="1073:4-1073:26"/>
+ <constant value="1076:12-1076:19"/>
+ <constant value="1076:4-1076:19"/>
+ <constant value="1077:12-1077:22"/>
+ <constant value="1077:12-1077:39"/>
+ <constant value="1077:4-1077:39"/>
+ <constant value="1078:20-1078:26"/>
+ <constant value="1078:4-1078:26"/>
+ <constant value="1081:10-1081:11"/>
+ <constant value="1081:10-1081:20"/>
+ <constant value="1081:4-1081:20"/>
+ <constant value="1082:12-1082:24"/>
+ <constant value="1082:4-1082:24"/>
+ <constant value="1083:20-1083:30"/>
+ <constant value="1083:20-1083:45"/>
+ <constant value="1083:4-1083:45"/>
+ <constant value="1084:12-1084:22"/>
+ <constant value="1084:12-1084:32"/>
+ <constant value="1084:4-1084:32"/>
+ <constant value="1087:19-1087:20"/>
+ <constant value="1087:19-1087:30"/>
+ <constant value="1088:5-1088:6"/>
+ <constant value="1088:5-1088:12"/>
+ <constant value="1088:15-1088:16"/>
+ <constant value="1088:5-1088:16"/>
+ <constant value="1088:25-1088:26"/>
+ <constant value="1088:25-1088:36"/>
+ <constant value="1088:21-1088:36"/>
+ <constant value="1088:5-1088:36"/>
+ <constant value="1087:19-1089:5"/>
+ <constant value="1089:17-1089:18"/>
+ <constant value="1087:19-1089:19"/>
+ <constant value="1087:4-1089:19"/>
+ <constant value="1092:29-1092:31"/>
+ <constant value="1092:33-1092:40"/>
+ <constant value="1092:19-1092:41"/>
+ <constant value="1092:4-1092:41"/>
+ <constant value="1095:19-1095:22"/>
+ <constant value="1095:4-1095:22"/>
+ <constant value="1098:18-1098:19"/>
+ <constant value="1098:34-1098:39"/>
+ <constant value="1098:18-1098:40"/>
+ <constant value="1098:4-1098:40"/>
+ <constant value="1099:15-1099:16"/>
+ <constant value="1099:4-1099:16"/>
+ <constant value="1106:13-1106:14"/>
+ <constant value="1106:4-1106:14"/>
+ <constant value="1107:16-1107:17"/>
+ <constant value="1107:16-1107:31"/>
+ <constant value="1107:34-1107:39"/>
+ <constant value="1107:16-1107:39"/>
+ <constant value="1110:5-1110:6"/>
+ <constant value="1108:5-1108:6"/>
+ <constant value="1108:9-1108:10"/>
+ <constant value="1108:5-1108:10"/>
+ <constant value="1107:13-1111:9"/>
+ <constant value="1107:4-1111:9"/>
+ <constant value="1112:18-1112:25"/>
+ <constant value="1112:4-1112:25"/>
+ <constant value="1117:19-1117:20"/>
+ <constant value="1117:19-1117:30"/>
+ <constant value="1117:4-1117:30"/>
+ <constant value="b"/>
+ <constant value="MTCS!OperatorTemplate;"/>
+ <constant value="storeRightTo"/>
+ <constant value="B.and(B):B"/>
+ <constant value="otSequence"/>
+ <constant value="1126:3-1126:7"/>
+ <constant value="1126:3-1126:20"/>
+ <constant value="1126:3-1126:37"/>
+ <constant value="1126:42-1126:46"/>
+ <constant value="1126:42-1126:56"/>
+ <constant value="1126:69-1126:70"/>
+ <constant value="1126:69-1126:76"/>
+ <constant value="1126:79-1126:80"/>
+ <constant value="1126:69-1126:80"/>
+ <constant value="1126:42-1126:81"/>
+ <constant value="1126:3-1126:81"/>
+ <constant value="1127:6-1127:10"/>
+ <constant value="1127:6-1127:21"/>
+ <constant value="1127:6-1127:38"/>
+ <constant value="1127:2-1127:38"/>
+ <constant value="1126:2-1127:38"/>
+ <constant value="MTCS!Operator;"/>
+ <constant value="1131:2-1131:12"/>
+ <constant value="1131:27-1131:31"/>
+ <constant value="1131:27-1131:41"/>
+ <constant value="1132:3-1132:4"/>
+ <constant value="1132:3-1132:15"/>
+ <constant value="1131:27-1133:3"/>
+ <constant value="1131:2-1133:4"/>
+ <constant value="1136:2-1136:12"/>
+ <constant value="1136:27-1136:31"/>
+ <constant value="1136:27-1136:41"/>
+ <constant value="1137:7-1137:8"/>
+ <constant value="1137:7-1137:19"/>
+ <constant value="1137:3-1137:19"/>
+ <constant value="1136:27-1138:3"/>
+ <constant value="1136:2-1138:4"/>
+ <constant value="1141:2-1141:6"/>
+ <constant value="1141:2-1141:12"/>
+ <constant value="1141:15-1141:16"/>
+ <constant value="1141:2-1141:16"/>
+ <constant value="1141:25-1141:29"/>
+ <constant value="1141:25-1141:39"/>
+ <constant value="1141:21-1141:39"/>
+ <constant value="1141:2-1141:39"/>
+ <constant value="storeOpTo"/>
+ <constant value="1144:2-1144:6"/>
+ <constant value="1144:2-1144:12"/>
+ <constant value="1144:15-1144:16"/>
+ <constant value="1144:2-1144:16"/>
+ <constant value="1145:5-1145:9"/>
+ <constant value="1145:5-1145:19"/>
+ <constant value="1145:5-1145:27"/>
+ <constant value="1145:30-1145:31"/>
+ <constant value="1145:5-1145:31"/>
+ <constant value="1148:3-1148:8"/>
+ <constant value="1146:3-1146:7"/>
+ <constant value="1146:3-1146:17"/>
+ <constant value="1146:3-1146:26"/>
+ <constant value="1146:3-1146:36"/>
+ <constant value="1146:3-1146:53"/>
+ <constant value="1145:2-1149:7"/>
+ <constant value="1144:2-1149:7"/>
+ <constant value="__matchOperator2Concatenation"/>
+ <constant value="literal"/>
+ <constant value="425"/>
+ <constant value="221"/>
+ <constant value="Keyword"/>
+ <constant value="o"/>
+ <constant value="vOpSpec"/>
+ <constant value="rcOpSpec"/>
+ <constant value="teOpSpec"/>
+ <constant value="TextualExpression"/>
+ <constant value="cNonSpec"/>
+ <constant value="vRightNonSpec"/>
+ <constant value="vOpNonSpec"/>
+ <constant value="rcOpNonSpec"/>
+ <constant value="rcRightNonSpec"/>
+ <constant value="saRight"/>
+ <constant value="teOpNonSpec"/>
+ <constant value="1154:9-1154:10"/>
+ <constant value="1154:9-1154:18"/>
+ <constant value="1154:9-1154:35"/>
+ <constant value="1154:5-1154:35"/>
+ <constant value="1155:8-1155:9"/>
+ <constant value="1155:8-1155:19"/>
+ <constant value="1155:4-1155:19"/>
+ <constant value="1154:4-1155:19"/>
+ <constant value="1235:4-1235:5"/>
+ <constant value="1235:4-1235:13"/>
+ <constant value="1235:26-1235:37"/>
+ <constant value="1235:4-1235:38"/>
+ <constant value="1238:7-1238:26"/>
+ <constant value="1238:3-1238:26"/>
+ <constant value="1239:7-1239:21"/>
+ <constant value="1239:3-1241:4"/>
+ <constant value="1168:8-1168:34"/>
+ <constant value="1168:3-1170:4"/>
+ <constant value="1171:7-1171:24"/>
+ <constant value="1171:3-1171:24"/>
+ <constant value="1172:50-1172:51"/>
+ <constant value="1172:50-1172:69"/>
+ <constant value="1172:3-1174:4"/>
+ <constant value="1175:51-1175:52"/>
+ <constant value="1175:51-1175:70"/>
+ <constant value="1175:3-1181:4"/>
+ <constant value="1182:60-1182:61"/>
+ <constant value="1182:60-1182:79"/>
+ <constant value="1182:3-1184:4"/>
+ <constant value="1185:56-1185:57"/>
+ <constant value="1185:56-1185:78"/>
+ <constant value="1185:3-1187:4"/>
+ <constant value="1188:56-1188:57"/>
+ <constant value="1188:56-1188:78"/>
+ <constant value="1188:3-1190:4"/>
+ <constant value="1191:53-1191:54"/>
+ <constant value="1191:53-1191:75"/>
+ <constant value="1191:3-1193:4"/>
+ <constant value="1194:54-1194:55"/>
+ <constant value="1194:54-1194:76"/>
+ <constant value="1194:3-1204:4"/>
+ <constant value="1207:57-1207:58"/>
+ <constant value="1207:57-1207:79"/>
+ <constant value="1207:3-1212:4"/>
+ <constant value="1213:62-1213:63"/>
+ <constant value="1213:62-1213:84"/>
+ <constant value="1213:3-1220:4"/>
+ <constant value="1221:63-1221:64"/>
+ <constant value="1221:63-1221:85"/>
+ <constant value="1221:3-1229:4"/>
+ <constant value="1256:4-1256:5"/>
+ <constant value="1256:4-1256:13"/>
+ <constant value="1256:26-1256:36"/>
+ <constant value="1256:4-1256:37"/>
+ <constant value="1259:7-1259:26"/>
+ <constant value="1259:3-1259:26"/>
+ <constant value="1260:7-1260:22"/>
+ <constant value="1260:3-1262:4"/>
+ <constant value="__applyKeywordOperator2Concatenation"/>
+ <constant value="71"/>
+ <constant value="opName = &quot;"/>
+ <constant value="&quot;;"/>
+ <constant value="priority"/>
+ <constant value="138"/>
+ <constant value="182"/>
+ <constant value="195"/>
+ <constant value="arguments"/>
+ <constant value="209"/>
+ <constant value="222"/>
+ <constant value="opName, ret, firstToken"/>
+ <constant value="253"/>
+ <constant value="284"/>
+ <constant value="354"/>
+ <constant value="385"/>
+ <constant value="398"/>
+ <constant value="412"/>
+ <constant value="434"/>
+ <constant value="435"/>
+ <constant value="concatenation"/>
+ <constant value="516"/>
+ <constant value="550"/>
+ <constant value="ei.set(ret, &quot;"/>
+ <constant value="&quot;, right);"/>
+ <constant value="556"/>
+ <constant value="source"/>
+ <constant value="567"/>
+ <constant value="596"/>
+ <constant value="opName, right, firstToken"/>
+ <constant value="597"/>
+ <constant value="605"/>
+ <constant value="1159:22-1159:23"/>
+ <constant value="1159:22-1159:36"/>
+ <constant value="1162:7-1162:18"/>
+ <constant value="1160:7-1160:18"/>
+ <constant value="1159:19-1163:11"/>
+ <constant value="1163:29-1163:30"/>
+ <constant value="1163:32-1163:33"/>
+ <constant value="1163:19-1163:34"/>
+ <constant value="1159:19-1163:35"/>
+ <constant value="1159:4-1163:35"/>
+ <constant value="1240:13-1240:14"/>
+ <constant value="1240:13-1240:22"/>
+ <constant value="1240:13-1240:28"/>
+ <constant value="1240:4-1240:28"/>
+ <constant value="1166:14-1166:16"/>
+ <constant value="1166:4-1166:16"/>
+ <constant value="1169:13-1169:26"/>
+ <constant value="1169:29-1169:30"/>
+ <constant value="1169:29-1169:38"/>
+ <constant value="1169:29-1169:44"/>
+ <constant value="1169:13-1169:44"/>
+ <constant value="1169:47-1169:52"/>
+ <constant value="1169:13-1169:52"/>
+ <constant value="1169:4-1169:52"/>
+ <constant value="1173:19-1173:29"/>
+ <constant value="1173:42-1173:43"/>
+ <constant value="1173:42-1173:52"/>
+ <constant value="1173:54-1173:59"/>
+ <constant value="1173:19-1173:60"/>
+ <constant value="1173:4-1173:60"/>
+ <constant value="1176:18-1176:19"/>
+ <constant value="1176:4-1176:19"/>
+ <constant value="1177:19-1177:20"/>
+ <constant value="1177:4-1177:20"/>
+ <constant value="1178:17-1178:25"/>
+ <constant value="1178:4-1178:25"/>
+ <constant value="1179:26-1179:27"/>
+ <constant value="1179:26-1179:40"/>
+ <constant value="1179:4-1179:40"/>
+ <constant value="1180:15-1180:22"/>
+ <constant value="1180:4-1180:22"/>
+ <constant value="1183:13-1183:38"/>
+ <constant value="1183:4-1183:38"/>
+ <constant value="1186:19-1186:20"/>
+ <constant value="1186:4-1186:20"/>
+ <constant value="1189:19-1189:29"/>
+ <constant value="1189:42-1189:43"/>
+ <constant value="1189:42-1189:52"/>
+ <constant value="1189:54-1189:61"/>
+ <constant value="1189:19-1189:62"/>
+ <constant value="1189:4-1189:62"/>
+ <constant value="1192:19-1192:29"/>
+ <constant value="1192:42-1192:43"/>
+ <constant value="1192:42-1192:52"/>
+ <constant value="1192:54-1192:59"/>
+ <constant value="1192:19-1192:60"/>
+ <constant value="1192:4-1192:60"/>
+ <constant value="1195:18-1195:19"/>
+ <constant value="1195:4-1195:19"/>
+ <constant value="1196:17-1196:28"/>
+ <constant value="1196:4-1196:28"/>
+ <constant value="1197:26-1197:27"/>
+ <constant value="1197:26-1197:40"/>
+ <constant value="1197:4-1197:40"/>
+ <constant value="1198:15-1198:25"/>
+ <constant value="1198:4-1198:25"/>
+ <constant value="1199:24-1199:25"/>
+ <constant value="1199:24-1199:38"/>
+ <constant value="1202:7-1202:15"/>
+ <constant value="1200:7-1200:8"/>
+ <constant value="1199:21-1203:11"/>
+ <constant value="1199:4-1203:11"/>
+ <constant value="1208:18-1208:19"/>
+ <constant value="1208:18-1208:28"/>
+ <constant value="1208:43-1208:47"/>
+ <constant value="1208:18-1208:48"/>
+ <constant value="1208:4-1208:48"/>
+ <constant value="1209:15-1209:28"/>
+ <constant value="1209:4-1209:28"/>
+ <constant value="1210:21-1210:29"/>
+ <constant value="1210:4-1210:29"/>
+ <constant value="1211:14-1211:21"/>
+ <constant value="1211:4-1211:21"/>
+ <constant value="1214:16-1214:17"/>
+ <constant value="1214:16-1214:23"/>
+ <constant value="1214:26-1214:27"/>
+ <constant value="1214:16-1214:27"/>
+ <constant value="1218:6-1218:22"/>
+ <constant value="1218:25-1218:26"/>
+ <constant value="1218:25-1218:39"/>
+ <constant value="1218:6-1218:39"/>
+ <constant value="1218:42-1218:55"/>
+ <constant value="1218:6-1218:55"/>
+ <constant value="1216:6-1216:22"/>
+ <constant value="1216:25-1216:26"/>
+ <constant value="1216:25-1216:33"/>
+ <constant value="1216:6-1216:33"/>
+ <constant value="1216:36-1216:49"/>
+ <constant value="1216:6-1216:49"/>
+ <constant value="1214:13-1219:10"/>
+ <constant value="1219:13-1219:23"/>
+ <constant value="1219:13-1219:35"/>
+ <constant value="1214:13-1219:35"/>
+ <constant value="1214:4-1219:35"/>
+ <constant value="1222:16-1222:17"/>
+ <constant value="1222:16-1222:23"/>
+ <constant value="1222:26-1222:27"/>
+ <constant value="1222:16-1222:27"/>
+ <constant value="1227:5-1227:32"/>
+ <constant value="1224:5-1224:30"/>
+ <constant value="1222:13-1228:9"/>
+ <constant value="1222:4-1228:9"/>
+ <constant value="sortTemplates"/>
+ <constant value="1245:47-1245:58"/>
+ <constant value="1245:2-1245:3"/>
+ <constant value="1246:6-1246:7"/>
+ <constant value="1246:6-1246:20"/>
+ <constant value="1246:6-1246:37"/>
+ <constant value="1249:14-1249:15"/>
+ <constant value="1249:4-1249:16"/>
+ <constant value="1249:24-1249:27"/>
+ <constant value="1249:4-1249:28"/>
+ <constant value="1247:4-1247:7"/>
+ <constant value="1247:19-1247:20"/>
+ <constant value="1247:4-1247:21"/>
+ <constant value="1246:3-1250:8"/>
+ <constant value="1245:2-1251:3"/>
+ <constant value="__applySymbolOperator2Concatenation"/>
+ <constant value="139"/>
+ <constant value="170"/>
+ <constant value="183"/>
+ <constant value="196"/>
+ <constant value="210"/>
+ <constant value="223"/>
+ <constant value="254"/>
+ <constant value="285"/>
+ <constant value="320"/>
+ <constant value="355"/>
+ <constant value="386"/>
+ <constant value="399"/>
+ <constant value="413"/>
+ <constant value="426"/>
+ <constant value="436"/>
+ <constant value="444"/>
+ <constant value="478"/>
+ <constant value="491"/>
+ <constant value="504"/>
+ <constant value="517"/>
+ <constant value="551"/>
+ <constant value="557"/>
+ <constant value="568"/>
+ <constant value="598"/>
+ <constant value="606"/>
+ <constant value="1261:12-1261:13"/>
+ <constant value="1261:12-1261:21"/>
+ <constant value="1261:12-1261:26"/>
+ <constant value="1261:12-1261:36"/>
+ <constant value="1261:4-1261:36"/>
+ <constant value="__matchPostfixSymbolOperator2Concatenation"/>
+ <constant value="116"/>
+ <constant value="1270:4-1270:5"/>
+ <constant value="1270:4-1270:13"/>
+ <constant value="1270:26-1270:36"/>
+ <constant value="1270:4-1270:37"/>
+ <constant value="1271:8-1271:9"/>
+ <constant value="1271:8-1271:19"/>
+ <constant value="1270:4-1271:19"/>
+ <constant value="1274:7-1274:26"/>
+ <constant value="1274:3-1276:4"/>
+ <constant value="1277:7-1277:22"/>
+ <constant value="1277:3-1280:4"/>
+ <constant value="1281:8-1281:34"/>
+ <constant value="1281:3-1283:4"/>
+ <constant value="1284:7-1284:24"/>
+ <constant value="1284:3-1284:24"/>
+ <constant value="1285:56-1285:57"/>
+ <constant value="1285:56-1285:67"/>
+ <constant value="1285:3-1287:4"/>
+ <constant value="1288:53-1288:54"/>
+ <constant value="1288:53-1288:64"/>
+ <constant value="1288:3-1290:4"/>
+ <constant value="1291:54-1291:55"/>
+ <constant value="1291:54-1291:65"/>
+ <constant value="1291:3-1297:4"/>
+ <constant value="1298:63-1298:64"/>
+ <constant value="1298:63-1298:74"/>
+ <constant value="1298:3-1305:4"/>
+ <constant value="__applyPostfixSymbolOperator2Concatenation"/>
+ <constant value="102"/>
+ <constant value="137"/>
+ <constant value="181"/>
+ <constant value="257"/>
+ <constant value="1275:29-1275:30"/>
+ <constant value="1275:32-1275:33"/>
+ <constant value="1275:19-1275:34"/>
+ <constant value="1275:4-1275:34"/>
+ <constant value="1278:14-1278:16"/>
+ <constant value="1278:4-1278:16"/>
+ <constant value="1279:12-1279:13"/>
+ <constant value="1279:12-1279:21"/>
+ <constant value="1279:12-1279:26"/>
+ <constant value="1279:12-1279:36"/>
+ <constant value="1279:4-1279:36"/>
+ <constant value="1282:13-1282:26"/>
+ <constant value="1282:29-1282:30"/>
+ <constant value="1282:29-1282:38"/>
+ <constant value="1282:29-1282:44"/>
+ <constant value="1282:13-1282:44"/>
+ <constant value="1282:47-1282:52"/>
+ <constant value="1282:13-1282:52"/>
+ <constant value="1282:4-1282:52"/>
+ <constant value="1286:19-1286:20"/>
+ <constant value="1286:4-1286:20"/>
+ <constant value="1289:19-1289:29"/>
+ <constant value="1289:42-1289:43"/>
+ <constant value="1289:42-1289:52"/>
+ <constant value="1289:54-1289:59"/>
+ <constant value="1289:19-1289:60"/>
+ <constant value="1289:4-1289:60"/>
+ <constant value="1292:18-1292:19"/>
+ <constant value="1292:4-1292:19"/>
+ <constant value="1293:17-1293:28"/>
+ <constant value="1293:4-1293:28"/>
+ <constant value="1294:26-1294:27"/>
+ <constant value="1294:26-1294:40"/>
+ <constant value="1294:4-1294:40"/>
+ <constant value="1295:15-1295:25"/>
+ <constant value="1295:4-1295:25"/>
+ <constant value="1296:21-1296:29"/>
+ <constant value="1296:4-1296:29"/>
+ <constant value="1300:8-1300:9"/>
+ <constant value="1300:8-1300:20"/>
+ <constant value="1303:6-1303:31"/>
+ <constant value="1301:6-1301:31"/>
+ <constant value="1300:5-1304:10"/>
+ <constant value="1299:4-1304:10"/>
+ <constant value="__matchEmptyOperator2Concatenation"/>
+ <constant value="188"/>
+ <constant value="1312:4-1312:5"/>
+ <constant value="1312:4-1312:13"/>
+ <constant value="1312:4-1312:30"/>
+ <constant value="1315:7-1315:26"/>
+ <constant value="1315:3-1317:4"/>
+ <constant value="1318:7-1318:24"/>
+ <constant value="1318:3-1318:24"/>
+ <constant value="1319:50-1319:51"/>
+ <constant value="1319:50-1319:69"/>
+ <constant value="1319:3-1321:4"/>
+ <constant value="1322:51-1322:52"/>
+ <constant value="1322:51-1322:70"/>
+ <constant value="1322:3-1328:4"/>
+ <constant value="1329:60-1329:61"/>
+ <constant value="1329:60-1329:79"/>
+ <constant value="1329:3-1331:4"/>
+ <constant value="1332:56-1332:57"/>
+ <constant value="1332:56-1332:78"/>
+ <constant value="1332:3-1334:4"/>
+ <constant value="1335:56-1335:57"/>
+ <constant value="1335:56-1335:78"/>
+ <constant value="1335:3-1337:4"/>
+ <constant value="1338:53-1338:54"/>
+ <constant value="1338:53-1338:75"/>
+ <constant value="1338:3-1340:4"/>
+ <constant value="1341:54-1341:55"/>
+ <constant value="1341:54-1341:76"/>
+ <constant value="1341:3-1347:4"/>
+ <constant value="1348:57-1348:58"/>
+ <constant value="1348:57-1348:79"/>
+ <constant value="1348:3-1353:4"/>
+ <constant value="1354:62-1354:63"/>
+ <constant value="1354:62-1354:84"/>
+ <constant value="1354:3-1361:4"/>
+ <constant value="1362:63-1362:64"/>
+ <constant value="1362:63-1362:85"/>
+ <constant value="1362:3-1368:4"/>
+ <constant value="__applyEmptyOperator2Concatenation"/>
+ <constant value="92"/>
+ <constant value="123"/>
+ <constant value="136"/>
+ <constant value="149"/>
+ <constant value="163"/>
+ <constant value="176"/>
+ <constant value="207"/>
+ <constant value="238"/>
+ <constant value="273"/>
+ <constant value="308"/>
+ <constant value="339"/>
+ <constant value="352"/>
+ <constant value="366"/>
+ <constant value="379"/>
+ <constant value="392"/>
+ <constant value="439"/>
+ <constant value="452"/>
+ <constant value="465"/>
+ <constant value="499"/>
+ <constant value="505"/>
+ <constant value="545"/>
+ <constant value="546"/>
+ <constant value="554"/>
+ <constant value="1316:29-1316:30"/>
+ <constant value="1316:19-1316:31"/>
+ <constant value="1316:4-1316:31"/>
+ <constant value="1320:19-1320:29"/>
+ <constant value="1320:42-1320:43"/>
+ <constant value="1320:42-1320:52"/>
+ <constant value="1320:54-1320:59"/>
+ <constant value="1320:19-1320:60"/>
+ <constant value="1320:4-1320:60"/>
+ <constant value="1323:18-1323:19"/>
+ <constant value="1323:4-1323:19"/>
+ <constant value="1324:19-1324:20"/>
+ <constant value="1324:4-1324:20"/>
+ <constant value="1325:17-1325:25"/>
+ <constant value="1325:4-1325:25"/>
+ <constant value="1326:26-1326:27"/>
+ <constant value="1326:26-1326:40"/>
+ <constant value="1326:4-1326:40"/>
+ <constant value="1327:15-1327:22"/>
+ <constant value="1327:4-1327:22"/>
+ <constant value="1330:13-1330:38"/>
+ <constant value="1330:4-1330:38"/>
+ <constant value="1333:19-1333:20"/>
+ <constant value="1333:4-1333:20"/>
+ <constant value="1336:19-1336:29"/>
+ <constant value="1336:42-1336:43"/>
+ <constant value="1336:42-1336:52"/>
+ <constant value="1336:54-1336:61"/>
+ <constant value="1336:19-1336:62"/>
+ <constant value="1336:4-1336:62"/>
+ <constant value="1339:19-1339:29"/>
+ <constant value="1339:42-1339:43"/>
+ <constant value="1339:42-1339:52"/>
+ <constant value="1339:54-1339:59"/>
+ <constant value="1339:19-1339:60"/>
+ <constant value="1339:4-1339:60"/>
+ <constant value="1342:18-1342:19"/>
+ <constant value="1342:4-1342:19"/>
+ <constant value="1343:17-1343:28"/>
+ <constant value="1343:4-1343:28"/>
+ <constant value="1344:26-1344:27"/>
+ <constant value="1344:26-1344:40"/>
+ <constant value="1344:4-1344:40"/>
+ <constant value="1345:15-1345:25"/>
+ <constant value="1345:4-1345:25"/>
+ <constant value="1346:21-1346:29"/>
+ <constant value="1346:4-1346:29"/>
+ <constant value="1349:18-1349:19"/>
+ <constant value="1349:18-1349:28"/>
+ <constant value="1349:43-1349:47"/>
+ <constant value="1349:18-1349:48"/>
+ <constant value="1349:4-1349:48"/>
+ <constant value="1350:15-1350:28"/>
+ <constant value="1350:4-1350:28"/>
+ <constant value="1351:21-1351:29"/>
+ <constant value="1351:4-1351:29"/>
+ <constant value="1352:14-1352:21"/>
+ <constant value="1352:4-1352:21"/>
+ <constant value="1355:16-1355:17"/>
+ <constant value="1355:16-1355:23"/>
+ <constant value="1355:26-1355:27"/>
+ <constant value="1355:16-1355:27"/>
+ <constant value="1359:6-1359:22"/>
+ <constant value="1359:25-1359:26"/>
+ <constant value="1359:25-1359:39"/>
+ <constant value="1359:6-1359:39"/>
+ <constant value="1359:42-1359:55"/>
+ <constant value="1359:6-1359:55"/>
+ <constant value="1357:6-1357:22"/>
+ <constant value="1357:25-1357:26"/>
+ <constant value="1357:25-1357:33"/>
+ <constant value="1357:6-1357:33"/>
+ <constant value="1357:36-1357:49"/>
+ <constant value="1357:6-1357:49"/>
+ <constant value="1355:13-1360:10"/>
+ <constant value="1360:13-1360:23"/>
+ <constant value="1360:13-1360:35"/>
+ <constant value="1355:13-1360:35"/>
+ <constant value="1355:4-1360:35"/>
+ <constant value="1363:16-1363:17"/>
+ <constant value="1363:16-1363:23"/>
+ <constant value="1363:26-1363:27"/>
+ <constant value="1363:16-1363:27"/>
+ <constant value="1366:5-1366:32"/>
+ <constant value="1364:5-1364:30"/>
+ <constant value="1363:13-1367:9"/>
+ <constant value="1363:4-1367:9"/>
+ <constant value="__matchOperatorTemplate2ProductionRule"/>
+ <constant value="pOpName"/>
+ <constant value="pLeft"/>
+ <constant value="pFirstToken"/>
+ <constant value="saOperator"/>
+ <constant value="saLeft"/>
+ <constant value="1428:8-1428:9"/>
+ <constant value="1428:8-1428:20"/>
+ <constant value="1428:8-1428:37"/>
+ <constant value="1428:4-1428:37"/>
+ <constant value="1431:8-1431:28"/>
+ <constant value="1431:3-1436:4"/>
+ <constant value="1437:10-1437:35"/>
+ <constant value="1437:3-1442:4"/>
+ <constant value="1380:13-1380:28"/>
+ <constant value="1380:3-1383:4"/>
+ <constant value="1384:11-1384:26"/>
+ <constant value="1384:3-1387:4"/>
+ <constant value="1388:17-1388:32"/>
+ <constant value="1388:3-1391:4"/>
+ <constant value="1392:9-1392:34"/>
+ <constant value="1392:3-1396:4"/>
+ <constant value="1397:15-1397:41"/>
+ <constant value="1397:3-1399:4"/>
+ <constant value="1400:16-1400:42"/>
+ <constant value="1400:3-1406:4"/>
+ <constant value="1407:12-1407:38"/>
+ <constant value="1407:3-1409:4"/>
+ <constant value="1410:16-1410:42"/>
+ <constant value="1410:3-1416:4"/>
+ <constant value="1453:4-1453:5"/>
+ <constant value="1453:4-1453:16"/>
+ <constant value="1453:4-1453:33"/>
+ <constant value="1456:8-1456:28"/>
+ <constant value="1456:3-1462:4"/>
+ <constant value="1420:2-1420:6"/>
+ <constant value="1420:2-1420:16"/>
+ <constant value="1420:29-1420:30"/>
+ <constant value="1420:29-1420:39"/>
+ <constant value="1420:2-1420:40"/>
+ <constant value="__applySpecificRightArgumentOperatorTemplate2ProductionRule"/>
+ <constant value="214"/>
+ <constant value="&quot;, opName);"/>
+ <constant value="215"/>
+ <constant value="// discard operator name"/>
+ <constant value="&quot;, left);"/>
+ <constant value="// post actions performed in calling rule (i.e., priority_&lt;n&gt;)"/>
+ <constant value="250"/>
+ <constant value="1432:18-1432:19"/>
+ <constant value="1432:18-1432:30"/>
+ <constant value="1432:4-1432:30"/>
+ <constant value="1433:25-1433:35"/>
+ <constant value="1433:37-1433:43"/>
+ <constant value="1433:45-1433:55"/>
+ <constant value="1433:57-1433:66"/>
+ <constant value="1433:15-1433:67"/>
+ <constant value="1433:4-1433:67"/>
+ <constant value="1434:25-1434:29"/>
+ <constant value="1434:4-1434:29"/>
+ <constant value="1435:28-1435:35"/>
+ <constant value="1435:37-1435:42"/>
+ <constant value="1435:44-1435:55"/>
+ <constant value="1435:18-1435:56"/>
+ <constant value="1435:4-1435:56"/>
+ <constant value="1376:12-1376:13"/>
+ <constant value="1376:12-1376:18"/>
+ <constant value="1376:12-1376:29"/>
+ <constant value="1376:4-1376:29"/>
+ <constant value="1377:29-1377:33"/>
+ <constant value="1377:4-1377:33"/>
+ <constant value="1378:15-1378:18"/>
+ <constant value="1378:4-1378:18"/>
+ <constant value="1438:10-1438:11"/>
+ <constant value="1438:10-1438:20"/>
+ <constant value="1438:4-1438:20"/>
+ <constant value="1439:12-1439:18"/>
+ <constant value="1439:4-1439:18"/>
+ <constant value="1440:20-1440:26"/>
+ <constant value="1440:4-1440:26"/>
+ <constant value="1441:12-1441:30"/>
+ <constant value="1441:4-1441:30"/>
+ <constant value="1381:12-1381:20"/>
+ <constant value="1381:4-1381:20"/>
+ <constant value="1382:12-1382:30"/>
+ <constant value="1382:4-1382:30"/>
+ <constant value="1385:12-1385:18"/>
+ <constant value="1385:4-1385:18"/>
+ <constant value="1386:12-1386:22"/>
+ <constant value="1386:12-1386:39"/>
+ <constant value="1386:4-1386:39"/>
+ <constant value="1389:12-1389:24"/>
+ <constant value="1389:4-1389:24"/>
+ <constant value="1390:12-1390:22"/>
+ <constant value="1390:12-1390:32"/>
+ <constant value="1390:4-1390:32"/>
+ <constant value="1393:12-1393:17"/>
+ <constant value="1393:4-1393:17"/>
+ <constant value="1394:20-1394:30"/>
+ <constant value="1394:44-1394:45"/>
+ <constant value="1394:44-1394:50"/>
+ <constant value="1394:52-1394:53"/>
+ <constant value="1394:52-1394:63"/>
+ <constant value="1394:65-1394:70"/>
+ <constant value="1394:20-1394:71"/>
+ <constant value="1394:4-1394:71"/>
+ <constant value="1395:12-1395:22"/>
+ <constant value="1395:12-1395:39"/>
+ <constant value="1395:4-1395:39"/>
+ <constant value="1398:13-1398:31"/>
+ <constant value="1398:34-1398:35"/>
+ <constant value="1398:34-1398:45"/>
+ <constant value="1398:34-1398:56"/>
+ <constant value="1398:13-1398:56"/>
+ <constant value="1398:59-1398:63"/>
+ <constant value="1398:13-1398:63"/>
+ <constant value="1398:4-1398:63"/>
+ <constant value="1401:16-1401:17"/>
+ <constant value="1401:16-1401:27"/>
+ <constant value="1401:16-1401:44"/>
+ <constant value="1404:5-1404:21"/>
+ <constant value="1404:24-1404:25"/>
+ <constant value="1404:24-1404:35"/>
+ <constant value="1404:5-1404:35"/>
+ <constant value="1404:38-1404:52"/>
+ <constant value="1404:5-1404:52"/>
+ <constant value="1402:5-1402:31"/>
+ <constant value="1401:13-1405:9"/>
+ <constant value="1401:4-1405:9"/>
+ <constant value="1408:13-1408:29"/>
+ <constant value="1408:32-1408:33"/>
+ <constant value="1408:32-1408:40"/>
+ <constant value="1408:13-1408:40"/>
+ <constant value="1408:43-1408:55"/>
+ <constant value="1408:13-1408:55"/>
+ <constant value="1408:4-1408:55"/>
+ <constant value="1411:16-1411:17"/>
+ <constant value="1411:16-1411:28"/>
+ <constant value="1411:32-1411:33"/>
+ <constant value="1411:32-1411:43"/>
+ <constant value="1411:56-1411:57"/>
+ <constant value="1411:56-1411:67"/>
+ <constant value="1411:32-1411:68"/>
+ <constant value="1411:16-1411:68"/>
+ <constant value="1414:6-1414:70"/>
+ <constant value="1412:6-1412:16"/>
+ <constant value="1412:6-1412:28"/>
+ <constant value="1411:13-1415:10"/>
+ <constant value="1411:4-1415:10"/>
+ <constant value="__applyNonSpecificRightArgumentOperatorTemplate2ProductionRule"/>
+ <constant value="defaultErrorHandler = false;"/>
+ <constant value="1457:15-1457:45"/>
+ <constant value="1457:4-1457:45"/>
+ <constant value="1460:25-1460:35"/>
+ <constant value="1460:37-1460:43"/>
+ <constant value="1460:45-1460:55"/>
+ <constant value="1460:57-1460:66"/>
+ <constant value="1460:15-1460:67"/>
+ <constant value="1460:4-1460:67"/>
+ <constant value="1461:28-1461:35"/>
+ <constant value="1461:37-1461:42"/>
+ <constant value="1461:44-1461:55"/>
+ <constant value="1461:18-1461:56"/>
+ <constant value="1461:4-1461:56"/>
+ <constant value="__matchPrimitiveTemplate2ProductionRule"/>
+ <constant value="PrimitiveTemplate"/>
+ <constant value="pt"/>
+ <constant value="tc"/>
+ <constant value="1483:8-1483:28"/>
+ <constant value="1483:3-1488:4"/>
+ <constant value="1489:7-1489:24"/>
+ <constant value="1489:3-1508:4"/>
+ <constant value="1509:9-1509:34"/>
+ <constant value="1509:3-1513:4"/>
+ <constant value="1514:8-1514:34"/>
+ <constant value="1514:3-1516:4"/>
+ <constant value="1517:8-1517:23"/>
+ <constant value="1517:3-1521:4"/>
+ <constant value="__applyPrimitiveTemplate2ProductionRule"/>
+ <constant value="orKeyword"/>
+ <constant value="120"/>
+ <constant value="J.Keyword2Terminal(J):J"/>
+ <constant value="tokenName"/>
+ <constant value="BOOLEAN"/>
+ <constant value="B.or(B):B"/>
+ <constant value="112"/>
+ <constant value="119"/>
+ <constant value="J.BooleanIdentifier(J):J"/>
+ <constant value="ret = "/>
+ <constant value="%token%"/>
+ <constant value="ast.getText()"/>
+ <constant value="; ei.setToken((Object)ast);"/>
+ <constant value="ast"/>
+ <constant value="storeASTTo"/>
+ <constant value="1484:12-1484:14"/>
+ <constant value="1484:12-1484:19"/>
+ <constant value="1484:12-1484:30"/>
+ <constant value="1484:4-1484:30"/>
+ <constant value="1485:29-1485:33"/>
+ <constant value="1485:4-1485:33"/>
+ <constant value="1486:15-1486:18"/>
+ <constant value="1486:4-1486:18"/>
+ <constant value="1487:18-1487:19"/>
+ <constant value="1487:4-1487:19"/>
+ <constant value="1490:29-1490:31"/>
+ <constant value="1490:19-1490:32"/>
+ <constant value="1490:43-1490:45"/>
+ <constant value="1490:43-1490:55"/>
+ <constant value="1506:5-1506:16"/>
+ <constant value="1491:5-1491:16"/>
+ <constant value="1491:34-1491:38"/>
+ <constant value="1491:5-1491:39"/>
+ <constant value="1492:6-1492:16"/>
+ <constant value="1492:34-1492:35"/>
+ <constant value="1492:6-1492:36"/>
+ <constant value="1491:5-1493:6"/>
+ <constant value="1494:35-1494:37"/>
+ <constant value="1494:35-1494:52"/>
+ <constant value="1494:35-1494:62"/>
+ <constant value="1495:8-1495:9"/>
+ <constant value="1495:22-1495:43"/>
+ <constant value="1495:8-1495:44"/>
+ <constant value="1494:35-1496:8"/>
+ <constant value="1497:8-1497:9"/>
+ <constant value="1497:8-1497:19"/>
+ <constant value="1497:22-1497:31"/>
+ <constant value="1497:8-1497:31"/>
+ <constant value="1494:35-1498:8"/>
+ <constant value="1499:9-1499:21"/>
+ <constant value="1502:7-1502:18"/>
+ <constant value="1500:17-1500:27"/>
+ <constant value="1500:46-1500:48"/>
+ <constant value="1500:17-1500:49"/>
+ <constant value="1500:7-1500:50"/>
+ <constant value="1499:6-1503:11"/>
+ <constant value="1494:6-1503:11"/>
+ <constant value="1491:5-1504:6"/>
+ <constant value="1490:40-1507:9"/>
+ <constant value="1490:19-1507:10"/>
+ <constant value="1490:4-1507:10"/>
+ <constant value="1510:12-1510:17"/>
+ <constant value="1510:4-1510:17"/>
+ <constant value="1511:20-1511:26"/>
+ <constant value="1511:4-1511:26"/>
+ <constant value="1512:12-1512:30"/>
+ <constant value="1512:4-1512:30"/>
+ <constant value="1515:13-1515:21"/>
+ <constant value="1515:24-1515:26"/>
+ <constant value="1515:24-1515:32"/>
+ <constant value="1515:49-1515:58"/>
+ <constant value="1515:60-1515:75"/>
+ <constant value="1515:24-1515:76"/>
+ <constant value="1515:13-1515:76"/>
+ <constant value="1515:79-1515:108"/>
+ <constant value="1515:13-1515:108"/>
+ <constant value="1515:4-1515:108"/>
+ <constant value="1518:12-1518:14"/>
+ <constant value="1518:12-1518:24"/>
+ <constant value="1518:4-1518:24"/>
+ <constant value="1519:18-1519:23"/>
+ <constant value="1519:4-1519:23"/>
+ <constant value="1520:14-1520:16"/>
+ <constant value="1520:4-1520:16"/>
+ <constant value="hasBooleanPt"/>
+ <constant value="Keyword2Terminal"/>
+ <constant value="MTCS!Keyword;"/>
+ <constant value="NTransientLinkSet;.getLinkByRuleAndSourceElement(SJ):QNTransientLink;"/>
+ <constant value="ret = &quot;"/>
+ <constant value="1529:13-1529:14"/>
+ <constant value="1529:13-1529:20"/>
+ <constant value="1529:4-1529:20"/>
+ <constant value="1530:14-1530:16"/>
+ <constant value="1530:4-1530:16"/>
+ <constant value="1528:3-1531:4"/>
+ <constant value="1533:13-1533:23"/>
+ <constant value="1533:26-1533:27"/>
+ <constant value="1533:26-1533:33"/>
+ <constant value="1533:13-1533:33"/>
+ <constant value="1533:36-1533:41"/>
+ <constant value="1533:13-1533:41"/>
+ <constant value="1533:4-1533:41"/>
+ <constant value="1532:3-1534:4"/>
+ <constant value="BooleanIdentifier"/>
+ <constant value="MTCS!PrimitiveTemplate;"/>
+ <constant value="astb"/>
+ <constant value="ret = astb.getText();"/>
+ <constant value="1542:12-1542:21"/>
+ <constant value="1542:4-1542:21"/>
+ <constant value="1543:18-1543:24"/>
+ <constant value="1543:4-1543:24"/>
+ <constant value="1544:14-1544:16"/>
+ <constant value="1544:4-1544:16"/>
+ <constant value="1541:3-1545:4"/>
+ <constant value="1547:13-1547:36"/>
+ <constant value="1547:4-1547:36"/>
+ <constant value="1546:3-1548:4"/>
+ <constant value="__matchEnumerationTemplate2ProductionRule"/>
+ <constant value="EnumerationTemplate"/>
+ <constant value="et"/>
+ <constant value="1555:8-1555:28"/>
+ <constant value="1555:3-1560:4"/>
+ <constant value="1561:9-1561:34"/>
+ <constant value="1561:3-1565:4"/>
+ <constant value="1566:7-1566:24"/>
+ <constant value="1566:3-1568:4"/>
+ <constant value="__applyEnumerationTemplate2ProductionRule"/>
+ <constant value="mappings"/>
+ <constant value="1556:12-1556:14"/>
+ <constant value="1556:12-1556:19"/>
+ <constant value="1556:12-1556:30"/>
+ <constant value="1556:4-1556:30"/>
+ <constant value="1557:29-1557:33"/>
+ <constant value="1557:4-1557:33"/>
+ <constant value="1558:15-1558:18"/>
+ <constant value="1558:4-1558:18"/>
+ <constant value="1559:18-1559:19"/>
+ <constant value="1559:4-1559:19"/>
+ <constant value="1562:12-1562:17"/>
+ <constant value="1562:4-1562:17"/>
+ <constant value="1563:20-1563:26"/>
+ <constant value="1563:4-1563:26"/>
+ <constant value="1564:12-1564:30"/>
+ <constant value="1564:4-1564:30"/>
+ <constant value="1567:19-1567:21"/>
+ <constant value="1567:19-1567:30"/>
+ <constant value="1567:4-1567:30"/>
+ <constant value="__matchEnumLiteralMapping2Concatenation"/>
+ <constant value="EnumLiteralMapping"/>
+ <constant value="elm"/>
+ <constant value="1575:7-1575:26"/>
+ <constant value="1575:3-1578:4"/>
+ <constant value="1579:8-1579:34"/>
+ <constant value="1579:3-1581:4"/>
+ <constant value="__applyEnumLiteralMapping2Concatenation"/>
+ <constant value="element"/>
+ <constant value="ret = ei.createEnumLiteral(&quot;"/>
+ <constant value="&quot;);"/>
+ <constant value="1576:19-1576:22"/>
+ <constant value="1576:19-1576:30"/>
+ <constant value="1576:4-1576:30"/>
+ <constant value="1577:14-1577:16"/>
+ <constant value="1577:4-1577:16"/>
+ <constant value="1580:13-1580:44"/>
+ <constant value="1580:47-1580:50"/>
+ <constant value="1580:47-1580:58"/>
+ <constant value="1580:47-1580:63"/>
+ <constant value="1580:13-1580:63"/>
+ <constant value="1580:66-1580:72"/>
+ <constant value="1580:13-1580:72"/>
+ <constant value="1580:4-1580:72"/>
+ <constant value="__matchSequence2Concatenation"/>
+ <constant value="1590:7-1590:26"/>
+ <constant value="1590:3-1595:4"/>
+ <constant value="__applySequence2Concatenation"/>
+ <constant value="elements"/>
+ <constant value="CustomSeparator"/>
+ <constant value="1591:10-1591:11"/>
+ <constant value="1591:10-1591:20"/>
+ <constant value="1591:4-1591:20"/>
+ <constant value="1592:19-1592:20"/>
+ <constant value="1592:19-1592:29"/>
+ <constant value="1593:5-1593:6"/>
+ <constant value="1593:19-1593:38"/>
+ <constant value="1593:5-1593:39"/>
+ <constant value="1592:19-1594:5"/>
+ <constant value="1592:4-1594:5"/>
+ <constant value="__matchSymbolRef2TokenCall"/>
+ <constant value="LiteralRef"/>
+ <constant value="referredLiteral"/>
+ <constant value="35"/>
+ <constant value="lr"/>
+ <constant value="tk"/>
+ <constant value="1603:4-1603:6"/>
+ <constant value="1603:4-1603:22"/>
+ <constant value="1603:35-1603:45"/>
+ <constant value="1603:4-1603:46"/>
+ <constant value="1606:8-1606:23"/>
+ <constant value="1606:3-1609:4"/>
+ <constant value="__applySymbolRef2TokenCall"/>
+ <constant value="1607:10-1607:12"/>
+ <constant value="1607:10-1607:21"/>
+ <constant value="1607:4-1607:21"/>
+ <constant value="1608:12-1608:14"/>
+ <constant value="1608:12-1608:30"/>
+ <constant value="1608:12-1608:35"/>
+ <constant value="1608:12-1608:45"/>
+ <constant value="1608:4-1608:45"/>
+ <constant value="__matchKeywordRef2Terminal"/>
+ <constant value="1616:4-1616:6"/>
+ <constant value="1616:4-1616:22"/>
+ <constant value="1616:35-1616:46"/>
+ <constant value="1616:4-1616:47"/>
+ <constant value="1619:7-1619:21"/>
+ <constant value="1619:3-1622:4"/>
+ <constant value="__applyKeywordRef2Terminal"/>
+ <constant value="1620:10-1620:12"/>
+ <constant value="1620:10-1620:21"/>
+ <constant value="1620:4-1620:21"/>
+ <constant value="1621:13-1621:15"/>
+ <constant value="1621:13-1621:31"/>
+ <constant value="1621:13-1621:37"/>
+ <constant value="1621:4-1621:37"/>
+ <constant value="getPrimitiveRule"/>
+ <constant value="MKM3!StructuralFeature;"/>
+ <constant value="typeName"/>
+ <constant value="isDefault"/>
+ <constant value="61"/>
+ <constant value="1626:20-1626:24"/>
+ <constant value="1626:20-1626:29"/>
+ <constant value="1626:20-1626:34"/>
+ <constant value="1627:46-1627:67"/>
+ <constant value="1627:85-1627:89"/>
+ <constant value="1627:46-1627:90"/>
+ <constant value="1627:46-1627:104"/>
+ <constant value="1628:3-1628:4"/>
+ <constant value="1628:3-1628:13"/>
+ <constant value="1628:16-1628:18"/>
+ <constant value="1628:3-1628:18"/>
+ <constant value="1627:46-1629:3"/>
+ <constant value="1630:5-1630:9"/>
+ <constant value="1630:5-1630:16"/>
+ <constant value="1630:19-1630:20"/>
+ <constant value="1630:5-1630:20"/>
+ <constant value="1635:3-1635:6"/>
+ <constant value="1636:4-1636:5"/>
+ <constant value="1636:4-1636:10"/>
+ <constant value="1636:13-1636:17"/>
+ <constant value="1636:4-1636:17"/>
+ <constant value="1635:3-1637:4"/>
+ <constant value="1635:3-1637:13"/>
+ <constant value="1631:3-1631:6"/>
+ <constant value="1632:4-1632:5"/>
+ <constant value="1632:4-1632:15"/>
+ <constant value="1632:18-1632:22"/>
+ <constant value="1632:4-1632:22"/>
+ <constant value="1631:3-1633:4"/>
+ <constant value="1631:3-1633:13"/>
+ <constant value="1630:2-1638:7"/>
+ <constant value="1627:2-1638:7"/>
+ <constant value="1626:2-1638:7"/>
+ <constant value="pts"/>
+ <constant value="tn"/>
+ <constant value="MTCS!Property;"/>
+ <constant value="J.getContextProperty(J):J"/>
+ <constant value="1641:2-1641:6"/>
+ <constant value="1641:26-1641:30"/>
+ <constant value="1641:26-1641:35"/>
+ <constant value="1641:2-1641:36"/>
+ <constant value="OneExp"/>
+ <constant value="27"/>
+ <constant value="propertyName"/>
+ <constant value="39"/>
+ <constant value="J.notEmpty():J"/>
+ <constant value="49"/>
+ <constant value="1644:30-1644:34"/>
+ <constant value="1644:30-1644:39"/>
+ <constant value="1644:30-1644:45"/>
+ <constant value="1645:5-1645:16"/>
+ <constant value="1645:19-1645:20"/>
+ <constant value="1645:5-1645:20"/>
+ <constant value="1648:44-1648:48"/>
+ <constant value="1648:44-1648:62"/>
+ <constant value="1649:4-1649:5"/>
+ <constant value="1649:18-1649:28"/>
+ <constant value="1649:4-1649:29"/>
+ <constant value="1648:44-1650:4"/>
+ <constant value="1651:4-1651:5"/>
+ <constant value="1651:4-1651:18"/>
+ <constant value="1651:21-1651:25"/>
+ <constant value="1651:21-1651:30"/>
+ <constant value="1651:4-1651:30"/>
+ <constant value="1648:44-1652:4"/>
+ <constant value="1653:6-1653:16"/>
+ <constant value="1653:6-1653:28"/>
+ <constant value="1656:4-1656:15"/>
+ <constant value="1654:4-1654:5"/>
+ <constant value="1653:3-1657:8"/>
+ <constant value="1648:3-1657:8"/>
+ <constant value="1646:3-1646:4"/>
+ <constant value="1645:2-1658:7"/>
+ <constant value="1644:2-1658:7"/>
+ <constant value="conditions"/>
+ <constant value="actualUpper"/>
+ <constant value="propertyArgs"/>
+ <constant value="ImportContextPArg"/>
+ <constant value="1661:2-1661:6"/>
+ <constant value="1661:2-1661:19"/>
+ <constant value="1662:3-1662:4"/>
+ <constant value="1662:17-1662:38"/>
+ <constant value="1662:3-1662:39"/>
+ <constant value="1661:2-1663:3"/>
+ <constant value="1661:2-1663:15"/>
+ <constant value="AsPArg"/>
+ <constant value="1666:2-1666:6"/>
+ <constant value="1666:2-1666:19"/>
+ <constant value="1667:3-1667:4"/>
+ <constant value="1667:17-1667:27"/>
+ <constant value="1667:3-1667:28"/>
+ <constant value="1666:2-1668:3"/>
+ <constant value="1666:2-1668:12"/>
+ <constant value="AutoCreatePArg"/>
+ <constant value="1671:2-1671:6"/>
+ <constant value="1671:2-1671:19"/>
+ <constant value="1672:3-1672:4"/>
+ <constant value="1672:17-1672:35"/>
+ <constant value="1672:3-1672:36"/>
+ <constant value="1671:2-1673:3"/>
+ <constant value="1671:2-1673:12"/>
+ <constant value="CreateAsPArg"/>
+ <constant value="1676:2-1676:6"/>
+ <constant value="1676:2-1676:19"/>
+ <constant value="1677:3-1677:4"/>
+ <constant value="1677:17-1677:33"/>
+ <constant value="1677:3-1677:34"/>
+ <constant value="1676:2-1678:3"/>
+ <constant value="1676:2-1678:12"/>
+ <constant value="RefersToPArg"/>
+ <constant value="1681:2-1681:6"/>
+ <constant value="1681:2-1681:19"/>
+ <constant value="1682:3-1682:4"/>
+ <constant value="1682:17-1682:33"/>
+ <constant value="1682:3-1682:34"/>
+ <constant value="1681:2-1683:3"/>
+ <constant value="1681:2-1683:12"/>
+ <constant value="LookInPArg"/>
+ <constant value="1686:2-1686:6"/>
+ <constant value="1686:2-1686:19"/>
+ <constant value="1687:3-1687:4"/>
+ <constant value="1687:17-1687:31"/>
+ <constant value="1687:3-1687:32"/>
+ <constant value="1686:2-1688:3"/>
+ <constant value="1686:2-1688:12"/>
+ <constant value="CreateInPArg"/>
+ <constant value="1691:2-1691:6"/>
+ <constant value="1691:2-1691:19"/>
+ <constant value="1692:3-1692:4"/>
+ <constant value="1692:17-1692:33"/>
+ <constant value="1692:3-1692:34"/>
+ <constant value="1691:2-1693:3"/>
+ <constant value="1691:2-1693:12"/>
+ <constant value="1696:5-1696:9"/>
+ <constant value="1696:5-1696:18"/>
+ <constant value="1696:5-1696:35"/>
+ <constant value="1699:3-1699:7"/>
+ <constant value="1699:3-1699:12"/>
+ <constant value="1699:3-1699:17"/>
+ <constant value="1699:40-1699:44"/>
+ <constant value="1699:40-1699:53"/>
+ <constant value="1699:40-1699:66"/>
+ <constant value="1699:3-1699:67"/>
+ <constant value="1697:3-1697:7"/>
+ <constant value="1697:3-1697:12"/>
+ <constant value="1696:2-1700:7"/>
+ <constant value="ModePArg"/>
+ <constant value="26"/>
+ <constant value="1703:27-1703:31"/>
+ <constant value="1703:27-1703:44"/>
+ <constant value="1704:4-1704:5"/>
+ <constant value="1704:18-1704:30"/>
+ <constant value="1704:4-1704:31"/>
+ <constant value="1703:27-1705:4"/>
+ <constant value="1703:27-1705:13"/>
+ <constant value="1706:5-1706:8"/>
+ <constant value="1706:5-1706:25"/>
+ <constant value="1709:3-1709:6"/>
+ <constant value="1709:3-1709:11"/>
+ <constant value="1707:3-1707:6"/>
+ <constant value="1706:2-1710:7"/>
+ <constant value="1703:2-1710:7"/>
+ <constant value="DataType"/>
+ <constant value="J.getInstanceBy(JJ):J"/>
+ <constant value="38"/>
+ <constant value="36"/>
+ <constant value="J.getPrimitiveRule(J):J"/>
+ <constant value="1713:5-1713:9"/>
+ <constant value="1713:5-1713:19"/>
+ <constant value="1713:5-1713:24"/>
+ <constant value="1713:37-1713:46"/>
+ <constant value="1713:5-1713:47"/>
+ <constant value="1717:10-1717:14"/>
+ <constant value="1717:10-1717:24"/>
+ <constant value="1717:10-1717:29"/>
+ <constant value="1717:42-1717:54"/>
+ <constant value="1717:10-1717:55"/>
+ <constant value="1726:3-1726:26"/>
+ <constant value="1726:41-1726:47"/>
+ <constant value="1726:49-1726:53"/>
+ <constant value="1726:49-1726:63"/>
+ <constant value="1726:49-1726:68"/>
+ <constant value="1726:49-1726:73"/>
+ <constant value="1726:3-1726:74"/>
+ <constant value="1718:3-1718:7"/>
+ <constant value="1718:3-1718:17"/>
+ <constant value="1719:7-1719:11"/>
+ <constant value="1719:7-1719:14"/>
+ <constant value="1719:7-1719:31"/>
+ <constant value="1722:5-1722:9"/>
+ <constant value="1722:5-1722:12"/>
+ <constant value="1722:5-1722:18"/>
+ <constant value="1720:5-1720:7"/>
+ <constant value="1719:4-1723:9"/>
+ <constant value="1718:3-1724:4"/>
+ <constant value="1717:7-1727:7"/>
+ <constant value="1714:3-1714:20"/>
+ <constant value="1714:36-1714:42"/>
+ <constant value="1714:44-1714:48"/>
+ <constant value="1714:44-1714:58"/>
+ <constant value="1714:44-1714:63"/>
+ <constant value="1714:44-1714:68"/>
+ <constant value="1714:3-1714:69"/>
+ <constant value="1715:4-1715:5"/>
+ <constant value="1715:4-1715:10"/>
+ <constant value="1715:13-1715:17"/>
+ <constant value="1715:13-1715:22"/>
+ <constant value="1715:4-1715:22"/>
+ <constant value="1714:3-1716:4"/>
+ <constant value="1714:3-1716:13"/>
+ <constant value="1713:2-1727:13"/>
+ <constant value="133"/>
+ <constant value="ei.setRef(ret, &quot;"/>
+ <constant value="&quot;, &quot;"/>
+ <constant value="&quot;, temp, "/>
+ <constant value="&quot;"/>
+ <constant value="."/>
+ <constant value="45"/>
+ <constant value=", "/>
+ <constant value="&quot;never&quot;"/>
+ <constant value="128"/>
+ <constant value="117"/>
+ <constant value="118"/>
+ <constant value="129"/>
+ <constant value="&quot;, temp);"/>
+ <constant value="1730:5-1730:9"/>
+ <constant value="1730:5-1730:14"/>
+ <constant value="1730:17-1730:21"/>
+ <constant value="1730:17-1730:31"/>
+ <constant value="1730:5-1730:31"/>
+ <constant value="1733:3-1733:22"/>
+ <constant value="1733:25-1733:29"/>
+ <constant value="1733:25-1733:34"/>
+ <constant value="1733:3-1733:34"/>
+ <constant value="1733:37-1733:45"/>
+ <constant value="1733:3-1733:45"/>
+ <constant value="1733:48-1733:52"/>
+ <constant value="1733:48-1733:57"/>
+ <constant value="1733:48-1733:62"/>
+ <constant value="1733:48-1733:67"/>
+ <constant value="1733:3-1733:67"/>
+ <constant value="1733:70-1733:78"/>
+ <constant value="1733:3-1733:78"/>
+ <constant value="1733:81-1733:85"/>
+ <constant value="1733:81-1733:94"/>
+ <constant value="1733:81-1733:107"/>
+ <constant value="1733:3-1733:107"/>
+ <constant value="1733:110-1733:122"/>
+ <constant value="1733:3-1733:122"/>
+ <constant value="1733:128-1733:132"/>
+ <constant value="1733:128-1733:139"/>
+ <constant value="1733:128-1733:156"/>
+ <constant value="1736:4-1736:8"/>
+ <constant value="1736:63-1736:65"/>
+ <constant value="1736:11-1736:15"/>
+ <constant value="1736:11-1736:22"/>
+ <constant value="1736:11-1736:35"/>
+ <constant value="1737:5-1737:8"/>
+ <constant value="1737:14-1737:17"/>
+ <constant value="1737:20-1737:22"/>
+ <constant value="1737:14-1737:22"/>
+ <constant value="1740:6-1740:9"/>
+ <constant value="1738:6-1738:8"/>
+ <constant value="1737:11-1741:10"/>
+ <constant value="1737:5-1741:10"/>
+ <constant value="1741:13-1741:14"/>
+ <constant value="1737:5-1741:14"/>
+ <constant value="1736:11-1742:5"/>
+ <constant value="1736:4-1742:5"/>
+ <constant value="1742:8-1742:12"/>
+ <constant value="1736:4-1742:12"/>
+ <constant value="1734:4-1734:10"/>
+ <constant value="1733:125-1743:8"/>
+ <constant value="1733:3-1743:8"/>
+ <constant value="1743:11-1743:15"/>
+ <constant value="1733:3-1743:15"/>
+ <constant value="1743:21-1743:25"/>
+ <constant value="1743:21-1743:36"/>
+ <constant value="1743:21-1743:53"/>
+ <constant value="1746:4-1746:8"/>
+ <constant value="1746:11-1746:15"/>
+ <constant value="1746:11-1746:26"/>
+ <constant value="1746:11-1746:32"/>
+ <constant value="1746:11-1746:43"/>
+ <constant value="1746:4-1746:43"/>
+ <constant value="1746:46-1746:50"/>
+ <constant value="1746:4-1746:50"/>
+ <constant value="1744:4-1744:15"/>
+ <constant value="1743:18-1747:8"/>
+ <constant value="1733:3-1747:8"/>
+ <constant value="1747:11-1747:15"/>
+ <constant value="1733:3-1747:15"/>
+ <constant value="1747:21-1747:25"/>
+ <constant value="1747:21-1747:34"/>
+ <constant value="1747:21-1747:51"/>
+ <constant value="1750:4-1750:8"/>
+ <constant value="1750:11-1750:15"/>
+ <constant value="1750:11-1750:24"/>
+ <constant value="1750:11-1750:29"/>
+ <constant value="1750:4-1750:29"/>
+ <constant value="1750:32-1750:36"/>
+ <constant value="1750:4-1750:36"/>
+ <constant value="1748:4-1748:10"/>
+ <constant value="1747:18-1751:8"/>
+ <constant value="1733:3-1751:8"/>
+ <constant value="1751:11-1751:15"/>
+ <constant value="1733:3-1751:15"/>
+ <constant value="1751:18-1751:22"/>
+ <constant value="1751:18-1751:36"/>
+ <constant value="1751:18-1751:47"/>
+ <constant value="1733:3-1751:47"/>
+ <constant value="1751:50-1751:54"/>
+ <constant value="1733:3-1751:54"/>
+ <constant value="1751:60-1751:64"/>
+ <constant value="1751:60-1751:73"/>
+ <constant value="1751:60-1751:90"/>
+ <constant value="1754:4-1754:8"/>
+ <constant value="1754:65-1754:67"/>
+ <constant value="1754:11-1754:15"/>
+ <constant value="1754:11-1754:24"/>
+ <constant value="1754:11-1754:37"/>
+ <constant value="1755:5-1755:8"/>
+ <constant value="1755:14-1755:17"/>
+ <constant value="1755:20-1755:22"/>
+ <constant value="1755:14-1755:22"/>
+ <constant value="1758:6-1758:9"/>
+ <constant value="1756:6-1756:8"/>
+ <constant value="1755:11-1759:10"/>
+ <constant value="1755:5-1759:10"/>
+ <constant value="1759:13-1759:14"/>
+ <constant value="1755:5-1759:14"/>
+ <constant value="1754:11-1760:5"/>
+ <constant value="1754:4-1760:5"/>
+ <constant value="1760:8-1760:12"/>
+ <constant value="1754:4-1760:12"/>
+ <constant value="1752:4-1752:10"/>
+ <constant value="1751:57-1761:8"/>
+ <constant value="1733:3-1761:8"/>
+ <constant value="1761:11-1761:15"/>
+ <constant value="1733:3-1761:15"/>
+ <constant value="1731:3-1731:19"/>
+ <constant value="1731:22-1731:26"/>
+ <constant value="1731:22-1731:31"/>
+ <constant value="1731:3-1731:31"/>
+ <constant value="1731:34-1731:46"/>
+ <constant value="1731:3-1731:46"/>
+ <constant value="1730:2-1762:7"/>
+ <constant value="__matchProperty2RuleCall"/>
+ <constant value="1768:4-1768:5"/>
+ <constant value="1768:4-1768:11"/>
+ <constant value="1768:14-1768:15"/>
+ <constant value="1768:4-1768:15"/>
+ <constant value="1771:8-1771:22"/>
+ <constant value="1771:3-1778:4"/>
+ <constant value="1779:7-1779:21"/>
+ <constant value="1779:3-1782:4"/>
+ <constant value="1783:8-1783:34"/>
+ <constant value="1783:3-1786:4"/>
+ <constant value="__applyProperty2RuleCall"/>
+ <constant value="1772:10-1772:11"/>
+ <constant value="1772:10-1772:20"/>
+ <constant value="1772:4-1772:20"/>
+ <constant value="1773:18-1773:19"/>
+ <constant value="1773:18-1773:34"/>
+ <constant value="1773:4-1773:34"/>
+ <constant value="1774:26-1774:27"/>
+ <constant value="1774:26-1774:42"/>
+ <constant value="1774:26-1774:55"/>
+ <constant value="1774:4-1774:55"/>
+ <constant value="1776:15-1776:16"/>
+ <constant value="1776:4-1776:16"/>
+ <constant value="1777:14-1777:16"/>
+ <constant value="1777:4-1777:16"/>
+ <constant value="1780:10-1780:11"/>
+ <constant value="1780:10-1780:20"/>
+ <constant value="1780:4-1780:20"/>
+ <constant value="1781:19-1781:29"/>
+ <constant value="1781:42-1781:43"/>
+ <constant value="1781:42-1781:55"/>
+ <constant value="1781:57-1781:63"/>
+ <constant value="1781:19-1781:64"/>
+ <constant value="1781:4-1781:64"/>
+ <constant value="1784:10-1784:11"/>
+ <constant value="1784:10-1784:20"/>
+ <constant value="1784:4-1784:20"/>
+ <constant value="1785:13-1785:14"/>
+ <constant value="1785:13-1785:20"/>
+ <constant value="1785:4-1785:20"/>
+ <constant value="ForcedLowerPArg"/>
+ <constant value="1791:30-1791:34"/>
+ <constant value="1791:30-1791:47"/>
+ <constant value="1792:3-1792:4"/>
+ <constant value="1792:17-1792:36"/>
+ <constant value="1792:3-1792:37"/>
+ <constant value="1791:30-1793:3"/>
+ <constant value="1791:30-1793:12"/>
+ <constant value="1794:5-1794:16"/>
+ <constant value="1794:5-1794:33"/>
+ <constant value="1797:3-1797:14"/>
+ <constant value="1797:3-1797:20"/>
+ <constant value="1795:3-1795:7"/>
+ <constant value="1795:3-1795:12"/>
+ <constant value="1795:3-1795:18"/>
+ <constant value="1794:2-1798:7"/>
+ <constant value="1791:2-1798:7"/>
+ <constant value="forcedLower"/>
+ <constant value="__matchMultiValuedProperty2Sequence"/>
+ <constant value="94"/>
+ <constant value="globalC"/>
+ <constant value="reps"/>
+ <constant value="repC"/>
+ <constant value="firstrc"/>
+ <constant value="firstv"/>
+ <constant value="firstsa"/>
+ <constant value="reprc"/>
+ <constant value="repv"/>
+ <constant value="repsa"/>
+ <constant value="1804:4-1804:5"/>
+ <constant value="1804:4-1804:11"/>
+ <constant value="1804:14-1804:15"/>
+ <constant value="1804:4-1804:15"/>
+ <constant value="1804:19-1804:20"/>
+ <constant value="1804:19-1804:26"/>
+ <constant value="1804:29-1804:30"/>
+ <constant value="1804:33-1804:34"/>
+ <constant value="1804:29-1804:34"/>
+ <constant value="1804:19-1804:34"/>
+ <constant value="1804:4-1804:34"/>
+ <constant value="1807:7-1807:22"/>
+ <constant value="1807:3-1816:4"/>
+ <constant value="1817:13-1817:32"/>
+ <constant value="1817:3-1820:4"/>
+ <constant value="1821:10-1821:25"/>
+ <constant value="1821:3-1835:4"/>
+ <constant value="1836:10-1836:29"/>
+ <constant value="1836:3-1846:4"/>
+ <constant value="1847:13-1847:27"/>
+ <constant value="1847:3-1854:4"/>
+ <constant value="1855:12-1855:26"/>
+ <constant value="1855:3-1858:4"/>
+ <constant value="1859:13-1859:39"/>
+ <constant value="1859:3-1862:4"/>
+ <constant value="1863:11-1863:25"/>
+ <constant value="1863:3-1870:4"/>
+ <constant value="1871:10-1871:24"/>
+ <constant value="1871:3-1874:4"/>
+ <constant value="1875:11-1875:37"/>
+ <constant value="1875:3-1878:4"/>
+ <constant value="__applyMultiValuedProperty2Sequence"/>
+ <constant value="60"/>
+ <constant value="SeparatorPArg"/>
+ <constant value="147"/>
+ <constant value="162"/>
+ <constant value="separatorSequence"/>
+ <constant value="1808:10-1808:11"/>
+ <constant value="1808:10-1808:20"/>
+ <constant value="1808:4-1808:20"/>
+ <constant value="1809:16-1809:17"/>
+ <constant value="1809:16-1809:23"/>
+ <constant value="1809:26-1809:27"/>
+ <constant value="1809:16-1809:27"/>
+ <constant value="1812:5-1812:6"/>
+ <constant value="1810:5-1810:6"/>
+ <constant value="1809:13-1813:9"/>
+ <constant value="1809:4-1813:9"/>
+ <constant value="1814:13-1814:14"/>
+ <constant value="1814:4-1814:14"/>
+ <constant value="1815:18-1815:25"/>
+ <constant value="1815:4-1815:25"/>
+ <constant value="1818:10-1818:11"/>
+ <constant value="1818:10-1818:20"/>
+ <constant value="1818:4-1818:20"/>
+ <constant value="1819:29-1819:36"/>
+ <constant value="1819:38-1819:42"/>
+ <constant value="1819:19-1819:43"/>
+ <constant value="1819:4-1819:43"/>
+ <constant value="1822:16-1822:17"/>
+ <constant value="1822:16-1822:23"/>
+ <constant value="1822:26-1822:27"/>
+ <constant value="1822:16-1822:27"/>
+ <constant value="1825:5-1825:6"/>
+ <constant value="1825:5-1825:12"/>
+ <constant value="1825:15-1825:16"/>
+ <constant value="1825:5-1825:16"/>
+ <constant value="1823:5-1823:6"/>
+ <constant value="1822:13-1826:9"/>
+ <constant value="1822:4-1826:9"/>
+ <constant value="1827:13-1827:14"/>
+ <constant value="1827:17-1827:18"/>
+ <constant value="1827:13-1827:18"/>
+ <constant value="1827:4-1827:18"/>
+ <constant value="1834:18-1834:22"/>
+ <constant value="1834:4-1834:22"/>
+ <constant value="1837:10-1837:11"/>
+ <constant value="1837:10-1837:20"/>
+ <constant value="1837:4-1837:20"/>
+ <constant value="1838:49-1838:50"/>
+ <constant value="1838:49-1838:63"/>
+ <constant value="1839:5-1839:6"/>
+ <constant value="1839:19-1839:36"/>
+ <constant value="1839:5-1839:37"/>
+ <constant value="1838:49-1840:5"/>
+ <constant value="1838:49-1840:14"/>
+ <constant value="1841:7-1841:10"/>
+ <constant value="1841:7-1841:27"/>
+ <constant value="1844:15-1844:18"/>
+ <constant value="1844:15-1844:36"/>
+ <constant value="1844:38-1844:43"/>
+ <constant value="1844:5-1844:44"/>
+ <constant value="1842:15-1842:20"/>
+ <constant value="1842:5-1842:21"/>
+ <constant value="1841:4-1845:9"/>
+ <constant value="1838:19-1845:9"/>
+ <constant value="1838:4-1845:9"/>
+ <constant value="1848:10-1848:11"/>
+ <constant value="1848:10-1848:20"/>
+ <constant value="1848:4-1848:20"/>
+ <constant value="1849:18-1849:19"/>
+ <constant value="1849:18-1849:34"/>
+ <constant value="1849:4-1849:34"/>
+ <constant value="1850:26-1850:27"/>
+ <constant value="1850:26-1850:42"/>
+ <constant value="1850:26-1850:55"/>
+ <constant value="1850:4-1850:55"/>
+ <constant value="1852:15-1852:21"/>
+ <constant value="1852:4-1852:21"/>
+ <constant value="1853:14-1853:21"/>
+ <constant value="1853:4-1853:21"/>
+ <constant value="1856:10-1856:11"/>
+ <constant value="1856:10-1856:20"/>
+ <constant value="1856:4-1856:20"/>
+ <constant value="1857:19-1857:29"/>
+ <constant value="1857:42-1857:43"/>
+ <constant value="1857:42-1857:55"/>
+ <constant value="1857:57-1857:63"/>
+ <constant value="1857:19-1857:64"/>
+ <constant value="1857:4-1857:64"/>
+ <constant value="1860:10-1860:11"/>
+ <constant value="1860:10-1860:20"/>
+ <constant value="1860:4-1860:20"/>
+ <constant value="1861:13-1861:14"/>
+ <constant value="1861:13-1861:20"/>
+ <constant value="1861:4-1861:20"/>
+ <constant value="1864:10-1864:11"/>
+ <constant value="1864:10-1864:20"/>
+ <constant value="1864:4-1864:20"/>
+ <constant value="1865:18-1865:19"/>
+ <constant value="1865:18-1865:34"/>
+ <constant value="1865:4-1865:34"/>
+ <constant value="1866:26-1866:27"/>
+ <constant value="1866:26-1866:42"/>
+ <constant value="1866:26-1866:55"/>
+ <constant value="1866:4-1866:55"/>
+ <constant value="1868:15-1868:19"/>
+ <constant value="1868:4-1868:19"/>
+ <constant value="1869:14-1869:19"/>
+ <constant value="1869:4-1869:19"/>
+ <constant value="1872:10-1872:11"/>
+ <constant value="1872:10-1872:20"/>
+ <constant value="1872:4-1872:20"/>
+ <constant value="1873:19-1873:29"/>
+ <constant value="1873:42-1873:43"/>
+ <constant value="1873:42-1873:55"/>
+ <constant value="1873:57-1873:63"/>
+ <constant value="1873:19-1873:64"/>
+ <constant value="1873:4-1873:64"/>
+ <constant value="1876:10-1876:11"/>
+ <constant value="1876:10-1876:20"/>
+ <constant value="1876:4-1876:20"/>
+ <constant value="1877:13-1877:14"/>
+ <constant value="1877:13-1877:20"/>
+ <constant value="1877:4-1877:20"/>
+ <constant value="sep"/>
+ <constant value="__matchBlock2Concatenation"/>
+ <constant value="Block"/>
+ <constant value="1885:7-1885:26"/>
+ <constant value="1885:3-1888:4"/>
+ <constant value="__applyBlock2Concatenation"/>
+ <constant value="blockSequence"/>
+ <constant value="1886:10-1886:11"/>
+ <constant value="1886:10-1886:20"/>
+ <constant value="1886:4-1886:20"/>
+ <constant value="1887:19-1887:20"/>
+ <constant value="1887:19-1887:34"/>
+ <constant value="1887:4-1887:34"/>
+ <constant value="toActionPart"/>
+ <constant value="MTCS!StringVal;"/>
+ <constant value="symbol"/>
+ <constant value="1892:2-1892:6"/>
+ <constant value="1892:9-1892:13"/>
+ <constant value="1892:9-1892:20"/>
+ <constant value="1892:2-1892:20"/>
+ <constant value="1892:23-1892:27"/>
+ <constant value="1892:2-1892:27"/>
+ <constant value="MTCS!IntegerVal;"/>
+ <constant value="new java.lang.Integer("/>
+ <constant value=")"/>
+ <constant value="1895:2-1895:26"/>
+ <constant value="1895:29-1895:33"/>
+ <constant value="1895:29-1895:40"/>
+ <constant value="1895:29-1895:51"/>
+ <constant value="1895:2-1895:51"/>
+ <constant value="1895:54-1895:57"/>
+ <constant value="1895:2-1895:57"/>
+ <constant value="MTCS!NegativeIntegerVal;"/>
+ <constant value="new java.lang.Integer(-"/>
+ <constant value="1898:2-1898:27"/>
+ <constant value="1898:30-1898:34"/>
+ <constant value="1898:30-1898:41"/>
+ <constant value="1898:30-1898:52"/>
+ <constant value="1898:2-1898:52"/>
+ <constant value="1898:55-1898:58"/>
+ <constant value="1898:2-1898:58"/>
+ <constant value="MTCS!EnumLiteralVal;"/>
+ <constant value="ei.createEnumLiteral(&quot;"/>
+ <constant value="&quot;)"/>
+ <constant value="1901:2-1901:27"/>
+ <constant value="1901:30-1901:34"/>
+ <constant value="1901:30-1901:39"/>
+ <constant value="1901:2-1901:39"/>
+ <constant value="1901:42-1901:47"/>
+ <constant value="1901:2-1901:47"/>
+ <constant value="getAction"/>
+ <constant value=" "/>
+ <constant value="BooleanPropertyExp"/>
+ <constant value="EqualsExp"/>
+ <constant value="&quot;, "/>
+ <constant value="J.toActionPart():J"/>
+ <constant value="&quot;, java.lang.Boolean."/>
+ <constant value="FALSE"/>
+ <constant value="TRUE"/>
+ <constant value="1904:56-1904:58"/>
+ <constant value="1904:2-1904:6"/>
+ <constant value="1904:2-1904:16"/>
+ <constant value="1904:2-1904:28"/>
+ <constant value="1905:3-1905:6"/>
+ <constant value="1905:12-1905:15"/>
+ <constant value="1905:18-1905:20"/>
+ <constant value="1905:12-1905:20"/>
+ <constant value="1905:34-1905:37"/>
+ <constant value="1905:26-1905:28"/>
+ <constant value="1905:9-1905:43"/>
+ <constant value="1905:3-1905:43"/>
+ <constant value="1906:6-1906:7"/>
+ <constant value="1906:20-1906:42"/>
+ <constant value="1906:6-1906:43"/>
+ <constant value="1913:11-1913:12"/>
+ <constant value="1913:25-1913:38"/>
+ <constant value="1913:11-1913:39"/>
+ <constant value="1920:4-1920:6"/>
+ <constant value="1914:7-1914:17"/>
+ <constant value="1917:5-1917:7"/>
+ <constant value="1915:5-1915:21"/>
+ <constant value="1915:24-1915:25"/>
+ <constant value="1915:24-1915:38"/>
+ <constant value="1915:5-1915:38"/>
+ <constant value="1915:41-1915:47"/>
+ <constant value="1915:5-1915:47"/>
+ <constant value="1915:50-1915:51"/>
+ <constant value="1915:50-1915:57"/>
+ <constant value="1915:50-1915:72"/>
+ <constant value="1915:5-1915:72"/>
+ <constant value="1915:75-1915:79"/>
+ <constant value="1915:5-1915:79"/>
+ <constant value="1914:4-1918:9"/>
+ <constant value="1913:8-1921:8"/>
+ <constant value="1907:4-1907:20"/>
+ <constant value="1907:23-1907:24"/>
+ <constant value="1907:23-1907:37"/>
+ <constant value="1907:4-1907:37"/>
+ <constant value="1907:40-1907:64"/>
+ <constant value="1907:4-1907:64"/>
+ <constant value="1908:7-1908:17"/>
+ <constant value="1911:5-1911:12"/>
+ <constant value="1909:5-1909:11"/>
+ <constant value="1908:4-1912:9"/>
+ <constant value="1907:4-1912:9"/>
+ <constant value="1912:12-1912:16"/>
+ <constant value="1907:4-1912:16"/>
+ <constant value="1906:3-1921:14"/>
+ <constant value="1905:3-1921:14"/>
+ <constant value="1904:2-1922:3"/>
+ <constant value="thenAction"/>
+ <constant value="__matchConditionalElement2Alternative"/>
+ <constant value="elseSequence"/>
+ <constant value="ta"/>
+ <constant value="aa"/>
+ <constant value="saThen"/>
+ <constant value="saElse"/>
+ <constant value="1943:4-1943:6"/>
+ <constant value="1943:4-1943:19"/>
+ <constant value="1943:4-1943:36"/>
+ <constant value="1946:8-1946:25"/>
+ <constant value="1946:3-1948:4"/>
+ <constant value="1949:7-1949:26"/>
+ <constant value="1949:3-1952:4"/>
+ <constant value="1931:12-1931:38"/>
+ <constant value="1931:3-1934:4"/>
+ <constant value="1935:12-1935:38"/>
+ <constant value="1935:3-1937:4"/>
+ <constant value="1958:8-1958:10"/>
+ <constant value="1958:8-1958:23"/>
+ <constant value="1958:8-1958:40"/>
+ <constant value="1958:4-1958:40"/>
+ <constant value="1961:8-1961:25"/>
+ <constant value="1961:3-1963:4"/>
+ <constant value="1964:12-1964:38"/>
+ <constant value="1964:3-1966:4"/>
+ <constant value="__applyHalfConditionalElement2Alternative"/>
+ <constant value="thenSequence"/>
+ <constant value="J.getAction(J):J"/>
+ <constant value="1947:29-1947:31"/>
+ <constant value="1947:29-1947:44"/>
+ <constant value="1947:46-1947:47"/>
+ <constant value="1947:19-1947:48"/>
+ <constant value="1947:4-1947:48"/>
+ <constant value="1929:10-1929:12"/>
+ <constant value="1929:10-1929:21"/>
+ <constant value="1929:4-1929:21"/>
+ <constant value="1950:10-1950:12"/>
+ <constant value="1950:10-1950:21"/>
+ <constant value="1950:4-1950:21"/>
+ <constant value="1951:14-1951:20"/>
+ <constant value="1951:4-1951:20"/>
+ <constant value="1932:18-1932:20"/>
+ <constant value="1932:18-1932:33"/>
+ <constant value="1932:4-1932:33"/>
+ <constant value="1933:13-1933:15"/>
+ <constant value="1933:26-1933:30"/>
+ <constant value="1933:13-1933:31"/>
+ <constant value="1933:4-1933:31"/>
+ <constant value="1936:13-1936:15"/>
+ <constant value="1936:26-1936:31"/>
+ <constant value="1936:13-1936:32"/>
+ <constant value="1936:4-1936:32"/>
+ <constant value="__applyFullConditionalElement2Alternative"/>
+ <constant value="1962:29-1962:31"/>
+ <constant value="1962:29-1962:44"/>
+ <constant value="1962:46-1962:48"/>
+ <constant value="1962:46-1962:61"/>
+ <constant value="1962:19-1962:62"/>
+ <constant value="1962:4-1962:62"/>
+ <constant value="1965:18-1965:20"/>
+ <constant value="1965:18-1965:33"/>
+ <constant value="1965:4-1965:33"/>
+ <constant value="__matchAlternative2Alternative"/>
+ <constant value="1973:8-1973:25"/>
+ <constant value="1973:3-1976:4"/>
+ <constant value="__applyAlternative2Alternative"/>
+ <constant value="sequences"/>
+ <constant value="1974:10-1974:12"/>
+ <constant value="1974:10-1974:21"/>
+ <constant value="1974:4-1974:21"/>
+ <constant value="1975:19-1975:21"/>
+ <constant value="1975:19-1975:31"/>
+ <constant value="1975:4-1975:31"/>
+ <constant value="__matchFunctionCall2RuleCall"/>
+ <constant value="FunctionCall"/>
+ <constant value="fc"/>
+ <constant value="te"/>
+ <constant value="1983:8-1983:22"/>
+ <constant value="1983:3-1986:4"/>
+ <constant value="1987:8-1987:31"/>
+ <constant value="1987:3-1989:4"/>
+ <constant value="__applyFunctionCall2RuleCall"/>
+ <constant value="calledFunction"/>
+ <constant value="1984:18-1984:20"/>
+ <constant value="1984:18-1984:35"/>
+ <constant value="1984:4-1984:35"/>
+ <constant value="1985:17-1985:19"/>
+ <constant value="1985:4-1985:19"/>
+ <constant value="1988:13-1988:18"/>
+ <constant value="1988:4-1988:18"/>
+ </cp>
+ <field name="1" type="2"/>
+ <field name="3" type="4"/>
+ <operation name="5">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <getasm/>
+ <push arg="7"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="9"/>
+ <call arg="10"/>
+ <dup/>
+ <push arg="11"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="12"/>
+ <call arg="10"/>
+ <call arg="13"/>
+ <set arg="3"/>
+ <push arg="14"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="16"/>
+ <push arg="17"/>
+ <call arg="18"/>
+ <push arg="14"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="19"/>
+ <push arg="20"/>
+ <call arg="18"/>
+ <push arg="21"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="22"/>
+ <push arg="23"/>
+ <call arg="18"/>
+ <push arg="24"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="25"/>
+ <push arg="26"/>
+ <call arg="18"/>
+ <push arg="24"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="27"/>
+ <push arg="28"/>
+ <call arg="18"/>
+ <push arg="24"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="29"/>
+ <push arg="30"/>
+ <call arg="18"/>
+ <push arg="24"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="31"/>
+ <push arg="32"/>
+ <call arg="18"/>
+ <push arg="24"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="33"/>
+ <push arg="34"/>
+ <call arg="18"/>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="36"/>
+ <push arg="37"/>
+ <call arg="18"/>
+ <push arg="14"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="38"/>
+ <push arg="39"/>
+ <call arg="18"/>
+ <push arg="40"/>
+ <push arg="8"/>
+ <findme/>
+ <push arg="41"/>
+ <push arg="42"/>
+ <call arg="18"/>
+ <push arg="43"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="44"/>
+ <push arg="45"/>
+ <call arg="18"/>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="46"/>
+ <push arg="47"/>
+ <call arg="18"/>
+ <push arg="48"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="49"/>
+ <push arg="50"/>
+ <call arg="18"/>
+ <push arg="48"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="51"/>
+ <push arg="52"/>
+ <call arg="18"/>
+ <push arg="53"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="54"/>
+ <push arg="55"/>
+ <call arg="18"/>
+ <push arg="56"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="57"/>
+ <push arg="58"/>
+ <call arg="18"/>
+ <push arg="56"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="59"/>
+ <push arg="60"/>
+ <call arg="18"/>
+ <push arg="56"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="61"/>
+ <push arg="62"/>
+ <call arg="18"/>
+ <push arg="56"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="63"/>
+ <push arg="64"/>
+ <call arg="18"/>
+ <push arg="53"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="61"/>
+ <push arg="62"/>
+ <call arg="18"/>
+ <push arg="65"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="66"/>
+ <push arg="67"/>
+ <call arg="18"/>
+ <push arg="65"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="68"/>
+ <push arg="69"/>
+ <call arg="18"/>
+ <push arg="65"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="70"/>
+ <push arg="71"/>
+ <call arg="18"/>
+ <push arg="65"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="72"/>
+ <push arg="73"/>
+ <call arg="18"/>
+ <push arg="65"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="74"/>
+ <push arg="75"/>
+ <call arg="18"/>
+ <push arg="65"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="76"/>
+ <push arg="77"/>
+ <call arg="18"/>
+ <push arg="65"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="78"/>
+ <push arg="79"/>
+ <call arg="18"/>
+ <push arg="65"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="80"/>
+ <push arg="81"/>
+ <call arg="18"/>
+ <push arg="65"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="82"/>
+ <push arg="83"/>
+ <call arg="18"/>
+ <push arg="65"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="84"/>
+ <push arg="85"/>
+ <call arg="18"/>
+ <push arg="65"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="86"/>
+ <push arg="87"/>
+ <call arg="18"/>
+ <push arg="65"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="88"/>
+ <push arg="89"/>
+ <call arg="18"/>
+ <push arg="65"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="90"/>
+ <push arg="91"/>
+ <call arg="18"/>
+ <push arg="65"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="92"/>
+ <push arg="93"/>
+ <call arg="18"/>
+ <getasm/>
+ <push arg="94"/>
+ <push arg="8"/>
+ <new/>
+ <set arg="1"/>
+ <getasm/>
+ <call arg="95"/>
+ <getasm/>
+ <call arg="96"/>
+ </code>
+ <linenumbertable>
+ <lne id="97" begin="16" end="18"/>
+ <lne id="98" begin="22" end="24"/>
+ <lne id="99" begin="28" end="30"/>
+ <lne id="100" begin="34" end="36"/>
+ <lne id="101" begin="40" end="42"/>
+ <lne id="102" begin="46" end="48"/>
+ <lne id="103" begin="52" end="54"/>
+ <lne id="104" begin="58" end="60"/>
+ <lne id="105" begin="64" end="66"/>
+ <lne id="106" begin="70" end="72"/>
+ <lne id="107" begin="76" end="78"/>
+ <lne id="108" begin="82" end="84"/>
+ <lne id="109" begin="88" end="90"/>
+ <lne id="110" begin="94" end="96"/>
+ <lne id="111" begin="100" end="102"/>
+ <lne id="112" begin="106" end="108"/>
+ <lne id="113" begin="112" end="114"/>
+ <lne id="114" begin="118" end="120"/>
+ <lne id="115" begin="124" end="126"/>
+ <lne id="116" begin="130" end="132"/>
+ <lne id="117" begin="136" end="138"/>
+ <lne id="118" begin="142" end="144"/>
+ <lne id="119" begin="148" end="150"/>
+ <lne id="120" begin="154" end="156"/>
+ <lne id="121" begin="160" end="162"/>
+ <lne id="122" begin="166" end="168"/>
+ <lne id="123" begin="172" end="174"/>
+ <lne id="124" begin="178" end="180"/>
+ <lne id="125" begin="184" end="186"/>
+ <lne id="126" begin="190" end="192"/>
+ <lne id="127" begin="196" end="198"/>
+ <lne id="128" begin="202" end="204"/>
+ <lne id="129" begin="208" end="210"/>
+ <lne id="130" begin="214" end="216"/>
+ <lne id="131" begin="220" end="222"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="234"/>
+ </localvariabletable>
+ </operation>
+ <operation name="133">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="4"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <if arg="136"/>
+ <getasm/>
+ <get arg="1"/>
+ <load arg="134"/>
+ <call arg="137"/>
+ <dup/>
+ <call arg="138"/>
+ <if arg="139"/>
+ <load arg="134"/>
+ <call arg="140"/>
+ <goto arg="141"/>
+ <pop/>
+ <load arg="134"/>
+ <goto arg="142"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <iterate/>
+ <store arg="144"/>
+ <getasm/>
+ <load arg="144"/>
+ <call arg="145"/>
+ <call arg="146"/>
+ <enditerate/>
+ <call arg="147"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="148" begin="23" end="27"/>
+ <lve slot="0" name="132" begin="0" end="29"/>
+ <lve slot="1" name="149" begin="0" end="29"/>
+ </localvariabletable>
+ </operation>
+ <operation name="150">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="4"/>
+ <parameter name="144" type="151"/>
+ </parameters>
+ <code>
+ <getasm/>
+ <get arg="1"/>
+ <load arg="134"/>
+ <call arg="137"/>
+ <load arg="134"/>
+ <load arg="144"/>
+ <call arg="152"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="6"/>
+ <lve slot="1" name="149" begin="0" end="6"/>
+ <lve slot="2" name="153" begin="0" end="6"/>
+ </localvariabletable>
+ </operation>
+ <operation name="154">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <getasm/>
+ <call arg="155"/>
+ <getasm/>
+ <call arg="156"/>
+ <getasm/>
+ <call arg="157"/>
+ <getasm/>
+ <call arg="158"/>
+ <getasm/>
+ <call arg="159"/>
+ <getasm/>
+ <call arg="160"/>
+ <getasm/>
+ <call arg="161"/>
+ <getasm/>
+ <call arg="162"/>
+ <getasm/>
+ <call arg="163"/>
+ <getasm/>
+ <call arg="164"/>
+ <getasm/>
+ <call arg="165"/>
+ <getasm/>
+ <call arg="166"/>
+ <getasm/>
+ <call arg="167"/>
+ <getasm/>
+ <call arg="168"/>
+ <getasm/>
+ <call arg="169"/>
+ <getasm/>
+ <call arg="170"/>
+ <getasm/>
+ <call arg="171"/>
+ <getasm/>
+ <call arg="172"/>
+ <getasm/>
+ <call arg="173"/>
+ <getasm/>
+ <call arg="174"/>
+ <getasm/>
+ <call arg="175"/>
+ <getasm/>
+ <call arg="176"/>
+ <getasm/>
+ <call arg="177"/>
+ <getasm/>
+ <call arg="178"/>
+ <getasm/>
+ <call arg="179"/>
+ <getasm/>
+ <call arg="180"/>
+ <getasm/>
+ <call arg="181"/>
+ <getasm/>
+ <call arg="182"/>
+ <getasm/>
+ <call arg="183"/>
+ <getasm/>
+ <call arg="184"/>
+ <getasm/>
+ <call arg="185"/>
+ <getasm/>
+ <call arg="186"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="63"/>
+ </localvariabletable>
+ </operation>
+ <operation name="187">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="188"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="190"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="191"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="192"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="193"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="194"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="195"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="196"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="197"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="198"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="199"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="200"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="201"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="202"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="203"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="204"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="205"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="206"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="207"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="208"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="209"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="210"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="211"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="212"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="213"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="214"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="215"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="216"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="217"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="218"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="219"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="220"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="221"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="222"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="223"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="224"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="225"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="226"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="227"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="228"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="229"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="230"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="231"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="232"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="233"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="234"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="235"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="236"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="237"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="238"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="239"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="240"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="241"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="242"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="243"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="244"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="245"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="246"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="247"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="248"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="249"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="250"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="251"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="252"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="253"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="254"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="255"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="256"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="257"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="258"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="259"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="260"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="261"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="262"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="263"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="264"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="265"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="266"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="267"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="268"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="269"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="270"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="271"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="272"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="273"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="274"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="275"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="276"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="277"/>
+ <call arg="189"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <load arg="134"/>
+ <call arg="278"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="5" end="8"/>
+ <lve slot="1" name="148" begin="15" end="18"/>
+ <lve slot="1" name="148" begin="25" end="28"/>
+ <lve slot="1" name="148" begin="35" end="38"/>
+ <lve slot="1" name="148" begin="45" end="48"/>
+ <lve slot="1" name="148" begin="55" end="58"/>
+ <lve slot="1" name="148" begin="65" end="68"/>
+ <lve slot="1" name="148" begin="75" end="78"/>
+ <lve slot="1" name="148" begin="85" end="88"/>
+ <lve slot="1" name="148" begin="95" end="98"/>
+ <lve slot="1" name="148" begin="105" end="108"/>
+ <lve slot="1" name="148" begin="115" end="118"/>
+ <lve slot="1" name="148" begin="125" end="128"/>
+ <lve slot="1" name="148" begin="135" end="138"/>
+ <lve slot="1" name="148" begin="145" end="148"/>
+ <lve slot="1" name="148" begin="155" end="158"/>
+ <lve slot="1" name="148" begin="165" end="168"/>
+ <lve slot="1" name="148" begin="175" end="178"/>
+ <lve slot="1" name="148" begin="185" end="188"/>
+ <lve slot="1" name="148" begin="195" end="198"/>
+ <lve slot="1" name="148" begin="205" end="208"/>
+ <lve slot="1" name="148" begin="215" end="218"/>
+ <lve slot="1" name="148" begin="225" end="228"/>
+ <lve slot="1" name="148" begin="235" end="238"/>
+ <lve slot="1" name="148" begin="245" end="248"/>
+ <lve slot="1" name="148" begin="255" end="258"/>
+ <lve slot="1" name="148" begin="265" end="268"/>
+ <lve slot="1" name="148" begin="275" end="278"/>
+ <lve slot="1" name="148" begin="285" end="288"/>
+ <lve slot="1" name="148" begin="295" end="298"/>
+ <lve slot="1" name="148" begin="305" end="308"/>
+ <lve slot="1" name="148" begin="315" end="318"/>
+ <lve slot="1" name="148" begin="325" end="328"/>
+ <lve slot="1" name="148" begin="335" end="338"/>
+ <lve slot="1" name="148" begin="345" end="348"/>
+ <lve slot="1" name="148" begin="355" end="358"/>
+ <lve slot="1" name="148" begin="365" end="368"/>
+ <lve slot="1" name="148" begin="375" end="378"/>
+ <lve slot="1" name="148" begin="385" end="388"/>
+ <lve slot="1" name="148" begin="395" end="398"/>
+ <lve slot="1" name="148" begin="405" end="408"/>
+ <lve slot="1" name="148" begin="415" end="418"/>
+ <lve slot="1" name="148" begin="425" end="428"/>
+ <lve slot="1" name="148" begin="435" end="438"/>
+ <lve slot="1" name="148" begin="445" end="448"/>
+ <lve slot="0" name="132" begin="0" end="449"/>
+ </localvariabletable>
+ </operation>
+ <operation name="279">
+ <context type="280"/>
+ <parameters>
+ <parameter name="134" type="4"/>
+ <parameter name="144" type="4"/>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <push arg="282"/>
+ <call arg="283"/>
+ <iterate/>
+ <store arg="284"/>
+ <load arg="284"/>
+ <load arg="134"/>
+ <call arg="285"/>
+ <load arg="144"/>
+ <call arg="286"/>
+ <call arg="287"/>
+ <if arg="141"/>
+ <load arg="284"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="289"/>
+ </code>
+ <linenumbertable>
+ <lne id="290" begin="3" end="3"/>
+ <lne id="291" begin="4" end="4"/>
+ <lne id="292" begin="3" end="5"/>
+ <lne id="293" begin="8" end="8"/>
+ <lne id="294" begin="9" end="9"/>
+ <lne id="295" begin="8" end="10"/>
+ <lne id="296" begin="11" end="11"/>
+ <lne id="297" begin="8" end="12"/>
+ <lne id="298" begin="0" end="17"/>
+ <lne id="299" begin="0" end="18"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="148" begin="7" end="16"/>
+ <lve slot="0" name="132" begin="0" end="18"/>
+ <lve slot="1" name="300" begin="0" end="18"/>
+ <lve slot="2" name="149" begin="0" end="18"/>
+ </localvariabletable>
+ </operation>
+ <operation name="301">
+ <context type="280"/>
+ <parameters>
+ <parameter name="134" type="4"/>
+ <parameter name="144" type="4"/>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <load arg="134"/>
+ <load arg="144"/>
+ <call arg="302"/>
+ <call arg="303"/>
+ </code>
+ <linenumbertable>
+ <lne id="304" begin="0" end="0"/>
+ <lne id="305" begin="1" end="1"/>
+ <lne id="306" begin="2" end="2"/>
+ <lne id="307" begin="0" end="3"/>
+ <lne id="308" begin="0" end="4"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="4"/>
+ <lve slot="1" name="300" begin="0" end="4"/>
+ <lve slot="2" name="149" begin="0" end="4"/>
+ </localvariabletable>
+ </operation>
+ <operation name="309">
+ <context type="151"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <call arg="310"/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="311"/>
+ <load arg="134"/>
+ <call arg="312"/>
+ <if arg="313"/>
+ <load arg="134"/>
+ <goto arg="314"/>
+ <load arg="134"/>
+ <push arg="315"/>
+ <call arg="316"/>
+ </code>
+ <linenumbertable>
+ <lne id="317" begin="0" end="0"/>
+ <lne id="318" begin="0" end="1"/>
+ <lne id="319" begin="3" end="3"/>
+ <lne id="320" begin="3" end="4"/>
+ <lne id="321" begin="5" end="5"/>
+ <lne id="322" begin="3" end="6"/>
+ <lne id="323" begin="8" end="8"/>
+ <lne id="324" begin="10" end="10"/>
+ <lne id="325" begin="11" end="11"/>
+ <lne id="326" begin="10" end="12"/>
+ <lne id="327" begin="3" end="12"/>
+ <lne id="328" begin="0" end="12"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="329" begin="2" end="12"/>
+ <lve slot="0" name="132" begin="0" end="12"/>
+ </localvariabletable>
+ </operation>
+ <operation name="17">
+ <context type="330"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="331"/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="332"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <if arg="334"/>
+ <load arg="134"/>
+ <get arg="335"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <if arg="336"/>
+ <load arg="134"/>
+ <get arg="337"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <if arg="338"/>
+ <load arg="134"/>
+ <get arg="339"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <if arg="340"/>
+ <load arg="134"/>
+ <get arg="341"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <if arg="342"/>
+ <load arg="134"/>
+ <get arg="343"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <if arg="344"/>
+ <load arg="134"/>
+ <get arg="345"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <if arg="346"/>
+ <load arg="134"/>
+ <get arg="347"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <if arg="348"/>
+ <load arg="134"/>
+ <get arg="349"/>
+ <get arg="350"/>
+ <get arg="16"/>
+ <goto arg="351"/>
+ <load arg="134"/>
+ <get arg="347"/>
+ <goto arg="352"/>
+ <load arg="134"/>
+ <get arg="345"/>
+ <get arg="16"/>
+ <goto arg="353"/>
+ <load arg="134"/>
+ <get arg="343"/>
+ <get arg="16"/>
+ <goto arg="354"/>
+ <load arg="134"/>
+ <get arg="341"/>
+ <get arg="16"/>
+ <goto arg="355"/>
+ <load arg="134"/>
+ <get arg="339"/>
+ <get arg="16"/>
+ <goto arg="356"/>
+ <load arg="134"/>
+ <get arg="337"/>
+ <goto arg="357"/>
+ <load arg="134"/>
+ <get arg="335"/>
+ <goto arg="358"/>
+ <load arg="134"/>
+ <get arg="332"/>
+ </code>
+ <linenumbertable>
+ <lne id="359" begin="0" end="0"/>
+ <lne id="360" begin="0" end="1"/>
+ <lne id="361" begin="3" end="3"/>
+ <lne id="362" begin="3" end="4"/>
+ <lne id="363" begin="3" end="5"/>
+ <lne id="364" begin="3" end="6"/>
+ <lne id="365" begin="8" end="8"/>
+ <lne id="366" begin="8" end="9"/>
+ <lne id="367" begin="8" end="10"/>
+ <lne id="368" begin="8" end="11"/>
+ <lne id="369" begin="13" end="13"/>
+ <lne id="370" begin="13" end="14"/>
+ <lne id="371" begin="13" end="15"/>
+ <lne id="372" begin="13" end="16"/>
+ <lne id="373" begin="18" end="18"/>
+ <lne id="374" begin="18" end="19"/>
+ <lne id="375" begin="18" end="20"/>
+ <lne id="376" begin="18" end="21"/>
+ <lne id="377" begin="23" end="23"/>
+ <lne id="378" begin="23" end="24"/>
+ <lne id="379" begin="23" end="25"/>
+ <lne id="380" begin="23" end="26"/>
+ <lne id="381" begin="28" end="28"/>
+ <lne id="382" begin="28" end="29"/>
+ <lne id="383" begin="28" end="30"/>
+ <lne id="384" begin="28" end="31"/>
+ <lne id="385" begin="33" end="33"/>
+ <lne id="386" begin="33" end="34"/>
+ <lne id="387" begin="33" end="35"/>
+ <lne id="388" begin="33" end="36"/>
+ <lne id="389" begin="38" end="38"/>
+ <lne id="390" begin="38" end="39"/>
+ <lne id="391" begin="38" end="40"/>
+ <lne id="392" begin="38" end="41"/>
+ <lne id="393" begin="43" end="43"/>
+ <lne id="394" begin="43" end="44"/>
+ <lne id="395" begin="43" end="45"/>
+ <lne id="396" begin="43" end="46"/>
+ <lne id="397" begin="48" end="48"/>
+ <lne id="398" begin="48" end="49"/>
+ <lne id="399" begin="38" end="49"/>
+ <lne id="400" begin="51" end="51"/>
+ <lne id="401" begin="51" end="52"/>
+ <lne id="402" begin="51" end="53"/>
+ <lne id="403" begin="33" end="53"/>
+ <lne id="404" begin="55" end="55"/>
+ <lne id="405" begin="55" end="56"/>
+ <lne id="406" begin="55" end="57"/>
+ <lne id="407" begin="28" end="57"/>
+ <lne id="408" begin="59" end="59"/>
+ <lne id="409" begin="59" end="60"/>
+ <lne id="410" begin="59" end="61"/>
+ <lne id="411" begin="23" end="61"/>
+ <lne id="412" begin="63" end="63"/>
+ <lne id="413" begin="63" end="64"/>
+ <lne id="414" begin="63" end="65"/>
+ <lne id="415" begin="18" end="65"/>
+ <lne id="416" begin="67" end="67"/>
+ <lne id="417" begin="67" end="68"/>
+ <lne id="418" begin="13" end="68"/>
+ <lne id="419" begin="70" end="70"/>
+ <lne id="420" begin="70" end="71"/>
+ <lne id="421" begin="8" end="71"/>
+ <lne id="422" begin="73" end="73"/>
+ <lne id="423" begin="73" end="74"/>
+ <lne id="424" begin="3" end="74"/>
+ <lne id="425" begin="0" end="74"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="426" begin="2" end="74"/>
+ <lve slot="0" name="132" begin="0" end="74"/>
+ </localvariabletable>
+ </operation>
+ <operation name="20">
+ <context type="330"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="331"/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="332"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <if arg="338"/>
+ <load arg="134"/>
+ <get arg="337"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <if arg="340"/>
+ <load arg="134"/>
+ <get arg="339"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <if arg="342"/>
+ <load arg="134"/>
+ <get arg="341"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <if arg="344"/>
+ <load arg="134"/>
+ <get arg="343"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <if arg="346"/>
+ <load arg="134"/>
+ <get arg="345"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <if arg="427"/>
+ <load arg="134"/>
+ <get arg="347"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <if arg="428"/>
+ <load arg="134"/>
+ <get arg="349"/>
+ <get arg="350"/>
+ <get arg="19"/>
+ <goto arg="429"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <goto arg="351"/>
+ <load arg="134"/>
+ <get arg="345"/>
+ <get arg="19"/>
+ <goto arg="352"/>
+ <load arg="134"/>
+ <get arg="343"/>
+ <get arg="19"/>
+ <goto arg="353"/>
+ <load arg="134"/>
+ <get arg="341"/>
+ <get arg="22"/>
+ <goto arg="354"/>
+ <load arg="134"/>
+ <get arg="339"/>
+ <get arg="19"/>
+ <goto arg="355"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <goto arg="336"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ </code>
+ <linenumbertable>
+ <lne id="430" begin="0" end="0"/>
+ <lne id="431" begin="0" end="1"/>
+ <lne id="432" begin="3" end="3"/>
+ <lne id="433" begin="3" end="4"/>
+ <lne id="434" begin="3" end="5"/>
+ <lne id="435" begin="3" end="6"/>
+ <lne id="436" begin="8" end="8"/>
+ <lne id="437" begin="8" end="9"/>
+ <lne id="438" begin="8" end="10"/>
+ <lne id="439" begin="8" end="11"/>
+ <lne id="440" begin="13" end="13"/>
+ <lne id="441" begin="13" end="14"/>
+ <lne id="442" begin="13" end="15"/>
+ <lne id="443" begin="13" end="16"/>
+ <lne id="444" begin="18" end="18"/>
+ <lne id="445" begin="18" end="19"/>
+ <lne id="446" begin="18" end="20"/>
+ <lne id="447" begin="18" end="21"/>
+ <lne id="448" begin="23" end="23"/>
+ <lne id="449" begin="23" end="24"/>
+ <lne id="450" begin="23" end="25"/>
+ <lne id="451" begin="23" end="26"/>
+ <lne id="452" begin="28" end="28"/>
+ <lne id="453" begin="28" end="29"/>
+ <lne id="454" begin="28" end="30"/>
+ <lne id="455" begin="28" end="31"/>
+ <lne id="456" begin="33" end="33"/>
+ <lne id="457" begin="33" end="34"/>
+ <lne id="458" begin="33" end="35"/>
+ <lne id="459" begin="33" end="36"/>
+ <lne id="460" begin="38" end="38"/>
+ <lne id="461" begin="38" end="39"/>
+ <lne id="462" begin="38" end="40"/>
+ <lne id="463" begin="38" end="41"/>
+ <lne id="464" begin="43" end="45"/>
+ <lne id="465" begin="33" end="45"/>
+ <lne id="466" begin="47" end="47"/>
+ <lne id="467" begin="47" end="48"/>
+ <lne id="468" begin="47" end="49"/>
+ <lne id="469" begin="28" end="49"/>
+ <lne id="470" begin="51" end="51"/>
+ <lne id="471" begin="51" end="52"/>
+ <lne id="472" begin="51" end="53"/>
+ <lne id="473" begin="23" end="53"/>
+ <lne id="474" begin="55" end="55"/>
+ <lne id="475" begin="55" end="56"/>
+ <lne id="476" begin="55" end="57"/>
+ <lne id="477" begin="18" end="57"/>
+ <lne id="478" begin="59" end="59"/>
+ <lne id="479" begin="59" end="60"/>
+ <lne id="480" begin="59" end="61"/>
+ <lne id="481" begin="13" end="61"/>
+ <lne id="482" begin="63" end="65"/>
+ <lne id="483" begin="8" end="65"/>
+ <lne id="484" begin="67" end="69"/>
+ <lne id="485" begin="3" end="69"/>
+ <lne id="486" begin="0" end="69"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="426" begin="2" end="69"/>
+ <lve slot="0" name="132" begin="0" end="69"/>
+ </localvariabletable>
+ </operation>
+ <operation name="23">
+ <context type="487"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="488"/>
+ <get arg="489"/>
+ <load arg="281"/>
+ <get arg="19"/>
+ <call arg="490"/>
+ </code>
+ <linenumbertable>
+ <lne id="491" begin="0" end="0"/>
+ <lne id="492" begin="0" end="1"/>
+ <lne id="493" begin="0" end="2"/>
+ <lne id="494" begin="3" end="3"/>
+ <lne id="495" begin="3" end="4"/>
+ <lne id="496" begin="0" end="5"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="5"/>
+ </localvariabletable>
+ </operation>
+ <operation name="26">
+ <context type="497"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <push arg="498"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <if arg="500"/>
+ <load arg="281"/>
+ <get arg="153"/>
+ <goto arg="501"/>
+ <load arg="281"/>
+ <get arg="502"/>
+ <store arg="134"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="503"/>
+ <push arg="504"/>
+ <findme/>
+ <push arg="505"/>
+ <call arg="283"/>
+ <call arg="289"/>
+ <iterate/>
+ <store arg="144"/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <load arg="134"/>
+ <call arg="286"/>
+ <call arg="287"/>
+ <if arg="506"/>
+ <load arg="144"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="303"/>
+ </code>
+ <linenumbertable>
+ <lne id="507" begin="0" end="0"/>
+ <lne id="508" begin="1" end="3"/>
+ <lne id="509" begin="0" end="4"/>
+ <lne id="510" begin="6" end="6"/>
+ <lne id="511" begin="6" end="7"/>
+ <lne id="512" begin="9" end="9"/>
+ <lne id="513" begin="9" end="10"/>
+ <lne id="514" begin="0" end="10"/>
+ <lne id="515" begin="15" end="17"/>
+ <lne id="516" begin="18" end="18"/>
+ <lne id="517" begin="15" end="19"/>
+ <lne id="518" begin="15" end="20"/>
+ <lne id="519" begin="23" end="23"/>
+ <lne id="520" begin="23" end="24"/>
+ <lne id="521" begin="25" end="25"/>
+ <lne id="522" begin="23" end="26"/>
+ <lne id="523" begin="12" end="31"/>
+ <lne id="524" begin="12" end="32"/>
+ <lne id="525" begin="0" end="32"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="148" begin="22" end="30"/>
+ <lve slot="1" name="153" begin="11" end="32"/>
+ <lve slot="0" name="132" begin="0" end="32"/>
+ </localvariabletable>
+ </operation>
+ <operation name="28">
+ <context type="497"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="503"/>
+ <push arg="504"/>
+ <findme/>
+ <push arg="505"/>
+ <call arg="283"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="526"/>
+ <load arg="281"/>
+ <get arg="25"/>
+ <call arg="312"/>
+ <call arg="287"/>
+ <if arg="527"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="528" begin="3" end="5"/>
+ <lne id="529" begin="6" end="6"/>
+ <lne id="530" begin="3" end="7"/>
+ <lne id="531" begin="10" end="10"/>
+ <lne id="532" begin="10" end="11"/>
+ <lne id="533" begin="12" end="12"/>
+ <lne id="534" begin="12" end="13"/>
+ <lne id="535" begin="10" end="14"/>
+ <lne id="536" begin="0" end="19"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="9" end="18"/>
+ <lve slot="0" name="132" begin="0" end="19"/>
+ </localvariabletable>
+ </operation>
+ <operation name="30">
+ <context type="497"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="27"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="153"/>
+ <call arg="288"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="537" begin="3" end="3"/>
+ <lne id="538" begin="3" end="4"/>
+ <lne id="539" begin="7" end="7"/>
+ <lne id="540" begin="7" end="8"/>
+ <lne id="541" begin="0" end="10"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="6" end="9"/>
+ <lve slot="0" name="132" begin="0" end="10"/>
+ </localvariabletable>
+ </operation>
+ <operation name="32">
+ <context type="497"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="503"/>
+ <push arg="504"/>
+ <findme/>
+ <push arg="505"/>
+ <call arg="283"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="542"/>
+ <load arg="281"/>
+ <get arg="25"/>
+ <call arg="312"/>
+ <call arg="287"/>
+ <if arg="527"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="543" begin="3" end="5"/>
+ <lne id="544" begin="6" end="6"/>
+ <lne id="545" begin="3" end="7"/>
+ <lne id="546" begin="10" end="10"/>
+ <lne id="547" begin="10" end="11"/>
+ <lne id="548" begin="12" end="12"/>
+ <lne id="549" begin="12" end="13"/>
+ <lne id="550" begin="10" end="14"/>
+ <lne id="551" begin="0" end="19"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="9" end="18"/>
+ <lve slot="0" name="132" begin="0" end="19"/>
+ </localvariabletable>
+ </operation>
+ <operation name="34">
+ <context type="497"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="31"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="552"/>
+ <if arg="139"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="153"/>
+ <call arg="288"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="553" begin="6" end="6"/>
+ <lne id="554" begin="6" end="7"/>
+ <lne id="555" begin="10" end="10"/>
+ <lne id="556" begin="10" end="11"/>
+ <lne id="557" begin="3" end="15"/>
+ <lne id="558" begin="18" end="18"/>
+ <lne id="559" begin="18" end="19"/>
+ <lne id="560" begin="0" end="21"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="9" end="14"/>
+ <lve slot="1" name="148" begin="17" end="20"/>
+ <lve slot="0" name="132" begin="0" end="21"/>
+ </localvariabletable>
+ </operation>
+ <operation name="37">
+ <context type="561"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="562"/>
+ <if arg="563"/>
+ <load arg="281"/>
+ <get arg="29"/>
+ <goto arg="564"/>
+ <load arg="281"/>
+ <get arg="33"/>
+ <store arg="134"/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="24"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="283"/>
+ <iterate/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="312"/>
+ <load arg="144"/>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <if arg="565"/>
+ <pusht/>
+ <goto arg="566"/>
+ <load arg="281"/>
+ <get arg="86"/>
+ <load arg="144"/>
+ <get arg="86"/>
+ <call arg="286"/>
+ <call arg="567"/>
+ <call arg="287"/>
+ <if arg="568"/>
+ <load arg="144"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="569"/>
+ </code>
+ <linenumbertable>
+ <lne id="570" begin="0" end="0"/>
+ <lne id="571" begin="0" end="1"/>
+ <lne id="572" begin="3" end="3"/>
+ <lne id="573" begin="3" end="4"/>
+ <lne id="574" begin="6" end="6"/>
+ <lne id="575" begin="6" end="7"/>
+ <lne id="576" begin="0" end="7"/>
+ <lne id="577" begin="9" end="9"/>
+ <lne id="578" begin="13" end="15"/>
+ <lne id="579" begin="16" end="16"/>
+ <lne id="580" begin="13" end="17"/>
+ <lne id="581" begin="20" end="20"/>
+ <lne id="582" begin="21" end="21"/>
+ <lne id="583" begin="21" end="22"/>
+ <lne id="584" begin="20" end="23"/>
+ <lne id="585" begin="24" end="24"/>
+ <lne id="586" begin="25" end="27"/>
+ <lne id="587" begin="24" end="28"/>
+ <lne id="588" begin="30" end="30"/>
+ <lne id="589" begin="32" end="32"/>
+ <lne id="590" begin="32" end="33"/>
+ <lne id="591" begin="34" end="34"/>
+ <lne id="592" begin="34" end="35"/>
+ <lne id="593" begin="32" end="36"/>
+ <lne id="594" begin="24" end="36"/>
+ <lne id="595" begin="20" end="37"/>
+ <lne id="596" begin="10" end="42"/>
+ <lne id="597" begin="9" end="43"/>
+ <lne id="598" begin="0" end="43"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="148" begin="19" end="41"/>
+ <lve slot="1" name="29" begin="8" end="43"/>
+ <lve slot="0" name="132" begin="0" end="43"/>
+ </localvariabletable>
+ </operation>
+ <operation name="39">
+ <context type="330"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="16"/>
+ <get arg="25"/>
+ </code>
+ <linenumbertable>
+ <lne id="599" begin="0" end="0"/>
+ <lne id="600" begin="0" end="1"/>
+ <lne id="601" begin="0" end="2"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="2"/>
+ </localvariabletable>
+ </operation>
+ <operation name="602">
+ <context type="330"/>
+ <parameters>
+ <parameter name="134" type="4"/>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="38"/>
+ <load arg="134"/>
+ <call arg="603"/>
+ </code>
+ <linenumbertable>
+ <lne id="604" begin="0" end="0"/>
+ <lne id="605" begin="0" end="1"/>
+ <lne id="606" begin="2" end="2"/>
+ <lne id="607" begin="0" end="3"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="3"/>
+ <lve slot="1" name="153" begin="0" end="3"/>
+ </localvariabletable>
+ </operation>
+ <operation name="42">
+ <context type="151"/>
+ <parameters>
+ </parameters>
+ <code>
+ <getasm/>
+ <get arg="608"/>
+ <load arg="281"/>
+ <call arg="316"/>
+ <getasm/>
+ <get arg="608"/>
+ <call arg="316"/>
+ </code>
+ <linenumbertable>
+ <lne id="609" begin="0" end="0"/>
+ <lne id="610" begin="0" end="1"/>
+ <lne id="611" begin="2" end="2"/>
+ <lne id="612" begin="0" end="3"/>
+ <lne id="613" begin="4" end="4"/>
+ <lne id="614" begin="4" end="5"/>
+ <lne id="615" begin="0" end="6"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="6"/>
+ </localvariabletable>
+ </operation>
+ <operation name="616">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="617"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="188"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="621"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="148"/>
+ <push arg="627"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="629" begin="21" end="23"/>
+ <lne id="630" begin="19" end="24"/>
+ <lne id="631" begin="27" end="29"/>
+ <lne id="632" begin="25" end="30"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="621" begin="6" end="32"/>
+ <lve slot="0" name="132" begin="0" end="33"/>
+ </localvariabletable>
+ </operation>
+ <operation name="633">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="621"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="148"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="638"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <pushf/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="149"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="641" begin="15" end="15"/>
+ <lne id="642" begin="15" end="16"/>
+ <lne id="643" begin="15" end="17"/>
+ <lne id="644" begin="13" end="19"/>
+ <lne id="645" begin="22" end="22"/>
+ <lne id="646" begin="20" end="24"/>
+ <lne id="647" begin="27" end="27"/>
+ <lne id="648" begin="25" end="29"/>
+ <lne id="630" begin="12" end="30"/>
+ <lne id="649" begin="34" end="34"/>
+ <lne id="650" begin="34" end="35"/>
+ <lne id="651" begin="32" end="37"/>
+ <lne id="632" begin="31" end="38"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="623" begin="7" end="38"/>
+ <lve slot="4" name="148" begin="11" end="38"/>
+ <lve slot="2" name="621" begin="3" end="38"/>
+ <lve slot="0" name="132" begin="0" end="38"/>
+ <lve slot="1" name="652" begin="0" end="38"/>
+ </localvariabletable>
+ </operation>
+ <operation name="653">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="654"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="191"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="621"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="655" begin="21" end="23"/>
+ <lne id="656" begin="19" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="621" begin="6" end="26"/>
+ <lve slot="0" name="132" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="657">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="621"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <pushf/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="658"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="659" begin="11" end="11"/>
+ <lne id="660" begin="11" end="12"/>
+ <lne id="661" begin="9" end="14"/>
+ <lne id="662" begin="17" end="17"/>
+ <lne id="663" begin="15" end="19"/>
+ <lne id="664" begin="22" end="22"/>
+ <lne id="665" begin="22" end="23"/>
+ <lne id="666" begin="20" end="25"/>
+ <lne id="656" begin="8" end="26"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="623" begin="7" end="26"/>
+ <lve slot="2" name="621" begin="3" end="26"/>
+ <lve slot="0" name="132" begin="0" end="26"/>
+ <lve slot="1" name="652" begin="0" end="26"/>
+ </localvariabletable>
+ </operation>
+ <operation name="667">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="668"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="193"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="621"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="670" begin="21" end="23"/>
+ <lne id="671" begin="19" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="621" begin="6" end="26"/>
+ <lve slot="0" name="132" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="672">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="621"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="673"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="674" begin="11" end="11"/>
+ <lne id="675" begin="11" end="12"/>
+ <lne id="676" begin="9" end="14"/>
+ <lne id="671" begin="8" end="15"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="623" begin="7" end="15"/>
+ <lve slot="2" name="621" begin="3" end="15"/>
+ <lve slot="0" name="132" begin="0" end="15"/>
+ <lve slot="1" name="652" begin="0" end="15"/>
+ </localvariabletable>
+ </operation>
+ <operation name="677">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="678"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="195"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="621"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="680" begin="21" end="23"/>
+ <lne id="681" begin="19" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="621" begin="6" end="26"/>
+ <lve slot="0" name="132" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="682">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="621"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="683"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="684" begin="11" end="11"/>
+ <lne id="685" begin="11" end="12"/>
+ <lne id="686" begin="9" end="14"/>
+ <lne id="681" begin="8" end="15"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="623" begin="7" end="15"/>
+ <lve slot="2" name="621" begin="3" end="15"/>
+ <lve slot="0" name="132" begin="0" end="15"/>
+ <lve slot="1" name="652" begin="0" end="15"/>
+ </localvariabletable>
+ </operation>
+ <operation name="687">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="688"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="197"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="621"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="689"/>
+ <push arg="690"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="691" begin="21" end="23"/>
+ <lne id="692" begin="19" end="24"/>
+ <lne id="693" begin="27" end="29"/>
+ <lne id="694" begin="25" end="30"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="621" begin="6" end="32"/>
+ <lve slot="0" name="132" begin="0" end="33"/>
+ </localvariabletable>
+ </operation>
+ <operation name="695">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="621"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="689"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="696"/>
+ <call arg="288"/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <load arg="144"/>
+ <get arg="697"/>
+ <call arg="138"/>
+ <if arg="698"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="697"/>
+ <call arg="288"/>
+ <goto arg="566"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <call arg="490"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="689"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <dup/>
+ <getasm/>
+ <pushi arg="281"/>
+ <call arg="145"/>
+ <set arg="92"/>
+ <dup/>
+ <getasm/>
+ <pushi arg="281"/>
+ <pushi arg="134"/>
+ <call arg="699"/>
+ <call arg="145"/>
+ <set arg="68"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="700" begin="18" end="18"/>
+ <lne id="701" begin="18" end="19"/>
+ <lne id="702" begin="21" end="21"/>
+ <lne id="703" begin="15" end="22"/>
+ <lne id="704" begin="23" end="23"/>
+ <lne id="705" begin="23" end="24"/>
+ <lne id="706" begin="23" end="25"/>
+ <lne id="707" begin="30" end="30"/>
+ <lne id="708" begin="30" end="31"/>
+ <lne id="709" begin="27" end="32"/>
+ <lne id="710" begin="34" end="36"/>
+ <lne id="711" begin="23" end="36"/>
+ <lne id="712" begin="15" end="37"/>
+ <lne id="713" begin="13" end="39"/>
+ <lne id="692" begin="12" end="40"/>
+ <lne id="714" begin="44" end="44"/>
+ <lne id="715" begin="44" end="45"/>
+ <lne id="716" begin="42" end="47"/>
+ <lne id="717" begin="50" end="50"/>
+ <lne id="718" begin="48" end="52"/>
+ <lne id="719" begin="55" end="55"/>
+ <lne id="720" begin="56" end="56"/>
+ <lne id="721" begin="55" end="57"/>
+ <lne id="722" begin="53" end="59"/>
+ <lne id="694" begin="41" end="60"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="623" begin="7" end="60"/>
+ <lve slot="4" name="689" begin="11" end="60"/>
+ <lve slot="2" name="621" begin="3" end="60"/>
+ <lve slot="0" name="132" begin="0" end="60"/>
+ <lve slot="1" name="652" begin="0" end="60"/>
+ </localvariabletable>
+ </operation>
+ <operation name="723">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="724"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="199"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="621"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="725"/>
+ <push arg="690"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="726"/>
+ <push arg="727"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="728"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="729"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="731"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="732" begin="21" end="23"/>
+ <lne id="733" begin="19" end="24"/>
+ <lne id="734" begin="27" end="29"/>
+ <lne id="735" begin="25" end="30"/>
+ <lne id="736" begin="33" end="35"/>
+ <lne id="737" begin="31" end="36"/>
+ <lne id="738" begin="39" end="41"/>
+ <lne id="739" begin="37" end="42"/>
+ <lne id="740" begin="45" end="47"/>
+ <lne id="741" begin="43" end="48"/>
+ <lne id="742" begin="51" end="53"/>
+ <lne id="743" begin="49" end="54"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="621" begin="6" end="56"/>
+ <lve slot="0" name="132" begin="0" end="57"/>
+ </localvariabletable>
+ </operation>
+ <operation name="744">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="621"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="725"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="726"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="728"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="729"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="731"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="696"/>
+ <call arg="288"/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <load arg="745"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <dup/>
+ <getasm/>
+ <pushi arg="281"/>
+ <call arg="145"/>
+ <set arg="92"/>
+ <dup/>
+ <getasm/>
+ <pushi arg="281"/>
+ <pushi arg="134"/>
+ <call arg="699"/>
+ <call arg="145"/>
+ <set arg="68"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <load arg="563"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="746"/>
+ <call arg="288"/>
+ <load arg="564"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <push arg="747"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <push arg="748"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="749" begin="34" end="34"/>
+ <lne id="750" begin="34" end="35"/>
+ <lne id="751" begin="37" end="37"/>
+ <lne id="752" begin="31" end="38"/>
+ <lne id="753" begin="29" end="40"/>
+ <lne id="733" begin="28" end="41"/>
+ <lne id="754" begin="45" end="45"/>
+ <lne id="755" begin="43" end="47"/>
+ <lne id="756" begin="50" end="50"/>
+ <lne id="757" begin="48" end="52"/>
+ <lne id="758" begin="55" end="55"/>
+ <lne id="759" begin="56" end="56"/>
+ <lne id="760" begin="55" end="57"/>
+ <lne id="761" begin="53" end="59"/>
+ <lne id="735" begin="42" end="60"/>
+ <lne id="762" begin="64" end="64"/>
+ <lne id="763" begin="62" end="66"/>
+ <lne id="737" begin="61" end="67"/>
+ <lne id="764" begin="74" end="74"/>
+ <lne id="765" begin="76" end="76"/>
+ <lne id="766" begin="71" end="77"/>
+ <lne id="767" begin="69" end="79"/>
+ <lne id="739" begin="68" end="80"/>
+ <lne id="768" begin="84" end="84"/>
+ <lne id="769" begin="82" end="86"/>
+ <lne id="741" begin="81" end="87"/>
+ <lne id="770" begin="91" end="91"/>
+ <lne id="771" begin="89" end="93"/>
+ <lne id="743" begin="88" end="94"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="623" begin="7" end="94"/>
+ <lve slot="4" name="725" begin="11" end="94"/>
+ <lve slot="5" name="726" begin="15" end="94"/>
+ <lve slot="6" name="728" begin="19" end="94"/>
+ <lve slot="7" name="729" begin="23" end="94"/>
+ <lve slot="8" name="731" begin="27" end="94"/>
+ <lve slot="2" name="621" begin="3" end="94"/>
+ <lve slot="0" name="132" begin="0" end="94"/>
+ <lve slot="1" name="652" begin="0" end="94"/>
+ </localvariabletable>
+ </operation>
+ <operation name="772">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="773"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="774"/>
+ <call arg="138"/>
+ <call arg="287"/>
+ <if arg="775"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="201"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="621"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="725"/>
+ <push arg="690"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="728"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="776"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="777"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="726"/>
+ <push arg="727"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="779"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="780" begin="7" end="7"/>
+ <lne id="781" begin="7" end="8"/>
+ <lne id="782" begin="7" end="9"/>
+ <lne id="783" begin="26" end="28"/>
+ <lne id="784" begin="24" end="29"/>
+ <lne id="785" begin="32" end="34"/>
+ <lne id="786" begin="30" end="35"/>
+ <lne id="787" begin="38" end="40"/>
+ <lne id="788" begin="36" end="41"/>
+ <lne id="789" begin="44" end="46"/>
+ <lne id="790" begin="42" end="47"/>
+ <lne id="791" begin="50" end="52"/>
+ <lne id="792" begin="48" end="53"/>
+ <lne id="793" begin="56" end="58"/>
+ <lne id="794" begin="54" end="59"/>
+ <lne id="795" begin="62" end="64"/>
+ <lne id="796" begin="60" end="65"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="621" begin="6" end="67"/>
+ <lve slot="0" name="132" begin="0" end="68"/>
+ </localvariabletable>
+ </operation>
+ <operation name="797">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="621"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="725"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="728"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="776"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="777"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="726"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="779"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="798"/>
+ <if arg="799"/>
+ <load arg="144"/>
+ <get arg="696"/>
+ <goto arg="427"/>
+ <getasm/>
+ <load arg="144"/>
+ <call arg="800"/>
+ <call arg="288"/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <load arg="144"/>
+ <get arg="801"/>
+ <if arg="802"/>
+ <load arg="144"/>
+ <get arg="697"/>
+ <goto arg="342"/>
+ <getasm/>
+ <load arg="144"/>
+ <call arg="803"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="804"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="805"/>
+ <dup/>
+ <getasm/>
+ <load arg="745"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <dup/>
+ <getasm/>
+ <pushi arg="281"/>
+ <call arg="145"/>
+ <set arg="92"/>
+ <dup/>
+ <getasm/>
+ <pushi arg="281"/>
+ <pushi arg="134"/>
+ <call arg="699"/>
+ <call arg="145"/>
+ <set arg="68"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="563"/>
+ <call arg="288"/>
+ <load arg="564"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <push arg="748"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <dup/>
+ <getasm/>
+ <load arg="746"/>
+ <call arg="145"/>
+ <set arg="806"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <push arg="807"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <load arg="500"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="500"/>
+ <dup/>
+ <getasm/>
+ <push arg="748"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="808" begin="38" end="38"/>
+ <lne id="809" begin="38" end="39"/>
+ <lne id="810" begin="41" end="41"/>
+ <lne id="811" begin="41" end="42"/>
+ <lne id="812" begin="44" end="44"/>
+ <lne id="813" begin="45" end="45"/>
+ <lne id="814" begin="44" end="46"/>
+ <lne id="815" begin="38" end="46"/>
+ <lne id="816" begin="48" end="48"/>
+ <lne id="817" begin="50" end="50"/>
+ <lne id="818" begin="50" end="51"/>
+ <lne id="819" begin="53" end="53"/>
+ <lne id="820" begin="53" end="54"/>
+ <lne id="821" begin="56" end="56"/>
+ <lne id="822" begin="57" end="57"/>
+ <lne id="823" begin="56" end="58"/>
+ <lne id="824" begin="50" end="58"/>
+ <lne id="825" begin="35" end="59"/>
+ <lne id="826" begin="33" end="61"/>
+ <lne id="784" begin="32" end="62"/>
+ <lne id="827" begin="69" end="69"/>
+ <lne id="828" begin="66" end="70"/>
+ <lne id="829" begin="64" end="72"/>
+ <lne id="830" begin="75" end="75"/>
+ <lne id="831" begin="73" end="77"/>
+ <lne id="832" begin="80" end="80"/>
+ <lne id="833" begin="78" end="82"/>
+ <lne id="834" begin="85" end="85"/>
+ <lne id="835" begin="86" end="86"/>
+ <lne id="836" begin="85" end="87"/>
+ <lne id="837" begin="83" end="89"/>
+ <lne id="786" begin="63" end="90"/>
+ <lne id="838" begin="97" end="97"/>
+ <lne id="839" begin="99" end="99"/>
+ <lne id="840" begin="94" end="100"/>
+ <lne id="841" begin="92" end="102"/>
+ <lne id="788" begin="91" end="103"/>
+ <lne id="842" begin="107" end="107"/>
+ <lne id="843" begin="105" end="109"/>
+ <lne id="844" begin="112" end="112"/>
+ <lne id="845" begin="110" end="114"/>
+ <lne id="790" begin="104" end="115"/>
+ <lne id="846" begin="119" end="119"/>
+ <lne id="847" begin="117" end="121"/>
+ <lne id="792" begin="116" end="122"/>
+ <lne id="848" begin="126" end="126"/>
+ <lne id="849" begin="124" end="128"/>
+ <lne id="794" begin="123" end="129"/>
+ <lne id="850" begin="133" end="133"/>
+ <lne id="851" begin="131" end="135"/>
+ <lne id="796" begin="130" end="136"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="623" begin="7" end="136"/>
+ <lve slot="4" name="725" begin="11" end="136"/>
+ <lve slot="5" name="728" begin="15" end="136"/>
+ <lve slot="6" name="776" begin="19" end="136"/>
+ <lve slot="7" name="777" begin="23" end="136"/>
+ <lve slot="8" name="726" begin="27" end="136"/>
+ <lve slot="9" name="779" begin="31" end="136"/>
+ <lve slot="2" name="621" begin="3" end="136"/>
+ <lve slot="0" name="132" begin="0" end="136"/>
+ <lve slot="1" name="652" begin="0" end="136"/>
+ </localvariabletable>
+ </operation>
+ <operation name="852">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="853"/>
+ </parameters>
+ <code>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="852"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="621"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="696"/>
+ <push arg="854"/>
+ <push arg="625"/>
+ <new/>
+ <dup/>
+ <store arg="144"/>
+ <call arg="626"/>
+ <pushf/>
+ <call arg="628"/>
+ <load arg="144"/>
+ <dup/>
+ <getasm/>
+ <load arg="134"/>
+ <get arg="696"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="144"/>
+ </code>
+ <linenumbertable>
+ <lne id="855" begin="25" end="25"/>
+ <lne id="856" begin="25" end="26"/>
+ <lne id="857" begin="23" end="28"/>
+ <lne id="858" begin="22" end="29"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="696" begin="18" end="30"/>
+ <lve slot="0" name="132" begin="0" end="30"/>
+ <lve slot="1" name="621" begin="0" end="30"/>
+ </localvariabletable>
+ </operation>
+ <operation name="859">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="853"/>
+ </parameters>
+ <code>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="859"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="621"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="697"/>
+ <push arg="854"/>
+ <push arg="625"/>
+ <new/>
+ <dup/>
+ <store arg="144"/>
+ <call arg="626"/>
+ <pushf/>
+ <call arg="628"/>
+ <load arg="144"/>
+ <dup/>
+ <getasm/>
+ <load arg="134"/>
+ <get arg="697"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="144"/>
+ </code>
+ <linenumbertable>
+ <lne id="860" begin="25" end="25"/>
+ <lne id="861" begin="25" end="26"/>
+ <lne id="862" begin="23" end="28"/>
+ <lne id="863" begin="22" end="29"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="697" begin="18" end="30"/>
+ <lve slot="0" name="132" begin="0" end="30"/>
+ <lve slot="1" name="621" begin="0" end="30"/>
+ </localvariabletable>
+ </operation>
+ <operation name="864">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="773"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="774"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <call arg="287"/>
+ <if arg="865"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="203"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="621"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="725"/>
+ <push arg="690"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="728"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="866"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="774"/>
+ <push arg="854"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="867"/>
+ <push arg="727"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="868"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="776"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="777"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="726"/>
+ <push arg="727"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="869"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="779"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="870" begin="7" end="7"/>
+ <lne id="871" begin="7" end="8"/>
+ <lne id="872" begin="7" end="9"/>
+ <lne id="873" begin="7" end="10"/>
+ <lne id="874" begin="27" end="29"/>
+ <lne id="875" begin="25" end="30"/>
+ <lne id="876" begin="33" end="35"/>
+ <lne id="877" begin="31" end="36"/>
+ <lne id="878" begin="39" end="41"/>
+ <lne id="879" begin="37" end="42"/>
+ <lne id="880" begin="45" end="47"/>
+ <lne id="881" begin="43" end="48"/>
+ <lne id="882" begin="51" end="53"/>
+ <lne id="883" begin="49" end="54"/>
+ <lne id="884" begin="57" end="59"/>
+ <lne id="885" begin="55" end="60"/>
+ <lne id="886" begin="63" end="65"/>
+ <lne id="887" begin="61" end="66"/>
+ <lne id="888" begin="69" end="71"/>
+ <lne id="889" begin="67" end="72"/>
+ <lne id="890" begin="75" end="77"/>
+ <lne id="891" begin="73" end="78"/>
+ <lne id="892" begin="81" end="83"/>
+ <lne id="893" begin="79" end="84"/>
+ <lne id="894" begin="87" end="89"/>
+ <lne id="895" begin="85" end="90"/>
+ <lne id="896" begin="93" end="95"/>
+ <lne id="897" begin="91" end="96"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="621" begin="6" end="98"/>
+ <lve slot="0" name="132" begin="0" end="99"/>
+ </localvariabletable>
+ </operation>
+ <operation name="898">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="621"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="725"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="728"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="866"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="774"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="867"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="868"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="134"/>
+ <push arg="776"/>
+ <call arg="636"/>
+ <store arg="313"/>
+ <load arg="134"/>
+ <push arg="777"/>
+ <call arg="636"/>
+ <store arg="501"/>
+ <load arg="134"/>
+ <push arg="726"/>
+ <call arg="636"/>
+ <store arg="899"/>
+ <load arg="134"/>
+ <push arg="869"/>
+ <call arg="636"/>
+ <store arg="314"/>
+ <load arg="134"/>
+ <push arg="779"/>
+ <call arg="636"/>
+ <store arg="900"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="798"/>
+ <if arg="901"/>
+ <load arg="144"/>
+ <get arg="696"/>
+ <goto arg="338"/>
+ <getasm/>
+ <load arg="144"/>
+ <call arg="800"/>
+ <call arg="288"/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <load arg="144"/>
+ <get arg="801"/>
+ <if arg="902"/>
+ <load arg="144"/>
+ <get arg="697"/>
+ <goto arg="903"/>
+ <getasm/>
+ <load arg="144"/>
+ <call arg="803"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="804"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="805"/>
+ <dup/>
+ <getasm/>
+ <load arg="745"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <dup/>
+ <getasm/>
+ <pushi arg="281"/>
+ <call arg="145"/>
+ <set arg="92"/>
+ <dup/>
+ <getasm/>
+ <pushi arg="281"/>
+ <pushi arg="134"/>
+ <call arg="699"/>
+ <call arg="145"/>
+ <set arg="68"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="563"/>
+ <call arg="288"/>
+ <load arg="313"/>
+ <call arg="288"/>
+ <load arg="899"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="746"/>
+ <call arg="288"/>
+ <load arg="564"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="774"/>
+ <call arg="904"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <load arg="500"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="500"/>
+ <dup/>
+ <getasm/>
+ <push arg="748"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="313"/>
+ <dup/>
+ <getasm/>
+ <push arg="748"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <dup/>
+ <getasm/>
+ <load arg="501"/>
+ <call arg="145"/>
+ <set arg="806"/>
+ <pop/>
+ <load arg="501"/>
+ <dup/>
+ <getasm/>
+ <push arg="807"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="899"/>
+ <dup/>
+ <getasm/>
+ <load arg="314"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="314"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="774"/>
+ <call arg="288"/>
+ <load arg="900"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="900"/>
+ <dup/>
+ <getasm/>
+ <push arg="748"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="905" begin="58" end="58"/>
+ <lne id="906" begin="58" end="59"/>
+ <lne id="907" begin="61" end="61"/>
+ <lne id="908" begin="61" end="62"/>
+ <lne id="909" begin="64" end="64"/>
+ <lne id="910" begin="65" end="65"/>
+ <lne id="911" begin="64" end="66"/>
+ <lne id="912" begin="58" end="66"/>
+ <lne id="913" begin="68" end="68"/>
+ <lne id="914" begin="70" end="70"/>
+ <lne id="915" begin="70" end="71"/>
+ <lne id="916" begin="73" end="73"/>
+ <lne id="917" begin="73" end="74"/>
+ <lne id="918" begin="76" end="76"/>
+ <lne id="919" begin="77" end="77"/>
+ <lne id="920" begin="76" end="78"/>
+ <lne id="921" begin="70" end="78"/>
+ <lne id="922" begin="55" end="79"/>
+ <lne id="923" begin="53" end="81"/>
+ <lne id="875" begin="52" end="82"/>
+ <lne id="924" begin="89" end="89"/>
+ <lne id="925" begin="86" end="90"/>
+ <lne id="926" begin="84" end="92"/>
+ <lne id="927" begin="95" end="95"/>
+ <lne id="928" begin="93" end="97"/>
+ <lne id="929" begin="100" end="100"/>
+ <lne id="930" begin="98" end="102"/>
+ <lne id="931" begin="105" end="105"/>
+ <lne id="932" begin="106" end="106"/>
+ <lne id="933" begin="105" end="107"/>
+ <lne id="934" begin="103" end="109"/>
+ <lne id="877" begin="83" end="110"/>
+ <lne id="935" begin="117" end="117"/>
+ <lne id="936" begin="119" end="119"/>
+ <lne id="937" begin="121" end="121"/>
+ <lne id="938" begin="114" end="122"/>
+ <lne id="939" begin="112" end="124"/>
+ <lne id="879" begin="111" end="125"/>
+ <lne id="940" begin="132" end="132"/>
+ <lne id="941" begin="134" end="134"/>
+ <lne id="942" begin="129" end="135"/>
+ <lne id="943" begin="127" end="137"/>
+ <lne id="881" begin="126" end="138"/>
+ <lne id="944" begin="142" end="142"/>
+ <lne id="945" begin="143" end="143"/>
+ <lne id="946" begin="143" end="144"/>
+ <lne id="947" begin="142" end="145"/>
+ <lne id="948" begin="140" end="147"/>
+ <lne id="883" begin="139" end="148"/>
+ <lne id="949" begin="152" end="152"/>
+ <lne id="950" begin="150" end="154"/>
+ <lne id="885" begin="149" end="155"/>
+ <lne id="951" begin="159" end="159"/>
+ <lne id="952" begin="157" end="161"/>
+ <lne id="887" begin="156" end="162"/>
+ <lne id="953" begin="166" end="166"/>
+ <lne id="954" begin="164" end="168"/>
+ <lne id="955" begin="171" end="171"/>
+ <lne id="956" begin="169" end="173"/>
+ <lne id="889" begin="163" end="174"/>
+ <lne id="957" begin="178" end="178"/>
+ <lne id="958" begin="176" end="180"/>
+ <lne id="891" begin="175" end="181"/>
+ <lne id="959" begin="185" end="185"/>
+ <lne id="960" begin="183" end="187"/>
+ <lne id="893" begin="182" end="188"/>
+ <lne id="961" begin="195" end="195"/>
+ <lne id="962" begin="195" end="196"/>
+ <lne id="963" begin="198" end="198"/>
+ <lne id="964" begin="192" end="199"/>
+ <lne id="965" begin="190" end="201"/>
+ <lne id="895" begin="189" end="202"/>
+ <lne id="966" begin="206" end="206"/>
+ <lne id="967" begin="204" end="208"/>
+ <lne id="897" begin="203" end="209"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="623" begin="7" end="209"/>
+ <lve slot="4" name="725" begin="11" end="209"/>
+ <lve slot="5" name="728" begin="15" end="209"/>
+ <lve slot="6" name="866" begin="19" end="209"/>
+ <lve slot="7" name="774" begin="23" end="209"/>
+ <lve slot="8" name="867" begin="27" end="209"/>
+ <lve slot="9" name="868" begin="31" end="209"/>
+ <lve slot="10" name="776" begin="35" end="209"/>
+ <lve slot="11" name="777" begin="39" end="209"/>
+ <lve slot="12" name="726" begin="43" end="209"/>
+ <lve slot="13" name="869" begin="47" end="209"/>
+ <lve slot="14" name="779" begin="51" end="209"/>
+ <lve slot="2" name="621" begin="3" end="209"/>
+ <lve slot="0" name="132" begin="0" end="209"/>
+ <lve slot="1" name="652" begin="0" end="209"/>
+ </localvariabletable>
+ </operation>
+ <operation name="968">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="969"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="205"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="621"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="627"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="970" begin="21" end="23"/>
+ <lne id="971" begin="19" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="621" begin="6" end="26"/>
+ <lve slot="0" name="132" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="972">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="621"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="973"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="974" begin="11" end="11"/>
+ <lne id="975" begin="11" end="12"/>
+ <lne id="976" begin="11" end="13"/>
+ <lne id="977" begin="9" end="15"/>
+ <lne id="971" begin="8" end="16"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="623" begin="7" end="16"/>
+ <lve slot="2" name="621" begin="3" end="16"/>
+ <lve slot="0" name="132" begin="0" end="16"/>
+ <lve slot="1" name="652" begin="0" end="16"/>
+ </localvariabletable>
+ </operation>
+ <operation name="978">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="979"/>
+ </parameters>
+ <code>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="978"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="621"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="627"/>
+ <push arg="625"/>
+ <new/>
+ <dup/>
+ <store arg="144"/>
+ <call arg="626"/>
+ <pushf/>
+ <call arg="628"/>
+ <load arg="144"/>
+ <dup/>
+ <getasm/>
+ <load arg="134"/>
+ <get arg="153"/>
+ <call arg="973"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="144"/>
+ </code>
+ <linenumbertable>
+ <lne id="980" begin="25" end="25"/>
+ <lne id="981" begin="25" end="26"/>
+ <lne id="982" begin="25" end="27"/>
+ <lne id="983" begin="23" end="29"/>
+ <lne id="984" begin="22" end="30"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="623" begin="18" end="31"/>
+ <lve slot="0" name="132" begin="0" end="31"/>
+ <lve slot="1" name="621" begin="0" end="31"/>
+ </localvariabletable>
+ </operation>
+ <operation name="985">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="986"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="153"/>
+ <push arg="987"/>
+ <call arg="286"/>
+ <call arg="287"/>
+ <if arg="356"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="207"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="621"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="988"/>
+ <push arg="989"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="990"/>
+ <push arg="989"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="991"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="992"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="993"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="994"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="995" begin="7" end="7"/>
+ <lne id="996" begin="7" end="8"/>
+ <lne id="997" begin="9" end="9"/>
+ <lne id="998" begin="7" end="10"/>
+ <lne id="999" begin="27" end="29"/>
+ <lne id="1000" begin="25" end="30"/>
+ <lne id="1001" begin="33" end="35"/>
+ <lne id="1002" begin="31" end="36"/>
+ <lne id="1003" begin="39" end="41"/>
+ <lne id="1004" begin="37" end="42"/>
+ <lne id="1005" begin="45" end="47"/>
+ <lne id="1006" begin="43" end="48"/>
+ <lne id="1007" begin="51" end="53"/>
+ <lne id="1008" begin="49" end="54"/>
+ <lne id="1009" begin="57" end="59"/>
+ <lne id="1010" begin="55" end="60"/>
+ <lne id="1011" begin="63" end="65"/>
+ <lne id="1012" begin="61" end="66"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="621" begin="6" end="68"/>
+ <lve slot="0" name="132" begin="0" end="69"/>
+ </localvariabletable>
+ </operation>
+ <operation name="1013">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="621"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="988"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="990"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="991"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="992"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="993"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="994"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <load arg="745"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <load arg="563"/>
+ <call arg="145"/>
+ <set arg="696"/>
+ <dup/>
+ <getasm/>
+ <load arg="746"/>
+ <call arg="145"/>
+ <set arg="697"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <load arg="564"/>
+ <call arg="145"/>
+ <set arg="696"/>
+ <dup/>
+ <getasm/>
+ <load arg="500"/>
+ <call arg="145"/>
+ <set arg="697"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <push arg="6"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <push arg="1014"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <push arg="1015"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="500"/>
+ <dup/>
+ <getasm/>
+ <push arg="1016"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="1017" begin="38" end="38"/>
+ <lne id="1018" begin="40" end="40"/>
+ <lne id="1019" begin="35" end="41"/>
+ <lne id="1020" begin="33" end="43"/>
+ <lne id="1000" begin="32" end="44"/>
+ <lne id="1021" begin="48" end="48"/>
+ <lne id="1022" begin="46" end="50"/>
+ <lne id="1023" begin="53" end="53"/>
+ <lne id="1024" begin="51" end="55"/>
+ <lne id="1002" begin="45" end="56"/>
+ <lne id="1025" begin="60" end="60"/>
+ <lne id="1026" begin="58" end="62"/>
+ <lne id="1027" begin="65" end="65"/>
+ <lne id="1028" begin="63" end="67"/>
+ <lne id="1004" begin="57" end="68"/>
+ <lne id="1029" begin="72" end="72"/>
+ <lne id="1030" begin="70" end="74"/>
+ <lne id="1006" begin="69" end="75"/>
+ <lne id="1031" begin="79" end="79"/>
+ <lne id="1032" begin="77" end="81"/>
+ <lne id="1008" begin="76" end="82"/>
+ <lne id="1033" begin="86" end="86"/>
+ <lne id="1034" begin="84" end="88"/>
+ <lne id="1010" begin="83" end="89"/>
+ <lne id="1035" begin="93" end="93"/>
+ <lne id="1036" begin="91" end="95"/>
+ <lne id="1012" begin="90" end="96"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="623" begin="7" end="96"/>
+ <lve slot="4" name="988" begin="11" end="96"/>
+ <lve slot="5" name="990" begin="15" end="96"/>
+ <lve slot="6" name="991" begin="19" end="96"/>
+ <lve slot="7" name="992" begin="23" end="96"/>
+ <lve slot="8" name="993" begin="27" end="96"/>
+ <lve slot="9" name="994" begin="31" end="96"/>
+ <lve slot="2" name="621" begin="3" end="96"/>
+ <lve slot="0" name="132" begin="0" end="96"/>
+ <lve slot="1" name="652" begin="0" end="96"/>
+ </localvariabletable>
+ </operation>
+ <operation name="1037">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="986"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="153"/>
+ <push arg="1038"/>
+ <call arg="286"/>
+ <call arg="287"/>
+ <if arg="1039"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="209"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="621"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="988"/>
+ <push arg="989"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="990"/>
+ <push arg="989"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1040"/>
+ <push arg="989"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="991"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="992"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="993"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="994"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1041"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1042"/>
+ <push arg="730"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="1043" begin="7" end="7"/>
+ <lne id="1044" begin="7" end="8"/>
+ <lne id="1045" begin="9" end="9"/>
+ <lne id="1046" begin="7" end="10"/>
+ <lne id="1047" begin="27" end="29"/>
+ <lne id="1048" begin="25" end="30"/>
+ <lne id="1049" begin="33" end="35"/>
+ <lne id="1050" begin="31" end="36"/>
+ <lne id="1051" begin="39" end="41"/>
+ <lne id="1052" begin="37" end="42"/>
+ <lne id="1053" begin="45" end="47"/>
+ <lne id="1054" begin="43" end="48"/>
+ <lne id="1055" begin="51" end="53"/>
+ <lne id="1056" begin="49" end="54"/>
+ <lne id="1057" begin="57" end="59"/>
+ <lne id="1058" begin="55" end="60"/>
+ <lne id="1059" begin="63" end="65"/>
+ <lne id="1060" begin="61" end="66"/>
+ <lne id="1061" begin="69" end="71"/>
+ <lne id="1062" begin="67" end="72"/>
+ <lne id="1063" begin="75" end="77"/>
+ <lne id="1064" begin="73" end="78"/>
+ <lne id="1065" begin="81" end="83"/>
+ <lne id="1066" begin="79" end="84"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="621" begin="6" end="86"/>
+ <lve slot="0" name="132" begin="0" end="87"/>
+ </localvariabletable>
+ </operation>
+ <operation name="1067">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="621"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="988"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="990"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="1040"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="991"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="992"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="993"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="134"/>
+ <push arg="994"/>
+ <call arg="636"/>
+ <store arg="313"/>
+ <load arg="134"/>
+ <push arg="1041"/>
+ <call arg="636"/>
+ <store arg="501"/>
+ <load arg="134"/>
+ <push arg="1042"/>
+ <call arg="636"/>
+ <store arg="899"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <load arg="745"/>
+ <call arg="288"/>
+ <load arg="563"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <load arg="746"/>
+ <call arg="145"/>
+ <set arg="696"/>
+ <dup/>
+ <getasm/>
+ <load arg="564"/>
+ <call arg="145"/>
+ <set arg="697"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <load arg="500"/>
+ <call arg="145"/>
+ <set arg="696"/>
+ <dup/>
+ <getasm/>
+ <load arg="313"/>
+ <call arg="145"/>
+ <set arg="697"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <load arg="501"/>
+ <call arg="145"/>
+ <set arg="696"/>
+ <dup/>
+ <getasm/>
+ <load arg="899"/>
+ <call arg="145"/>
+ <set arg="697"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <push arg="6"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <push arg="1014"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="500"/>
+ <dup/>
+ <getasm/>
+ <push arg="1015"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="313"/>
+ <dup/>
+ <getasm/>
+ <push arg="1016"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="501"/>
+ <dup/>
+ <getasm/>
+ <push arg="281"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="899"/>
+ <dup/>
+ <getasm/>
+ <push arg="500"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="1068" begin="50" end="50"/>
+ <lne id="1069" begin="52" end="52"/>
+ <lne id="1070" begin="54" end="54"/>
+ <lne id="1071" begin="47" end="55"/>
+ <lne id="1072" begin="45" end="57"/>
+ <lne id="1048" begin="44" end="58"/>
+ <lne id="1073" begin="62" end="62"/>
+ <lne id="1074" begin="60" end="64"/>
+ <lne id="1075" begin="67" end="67"/>
+ <lne id="1076" begin="65" end="69"/>
+ <lne id="1050" begin="59" end="70"/>
+ <lne id="1077" begin="74" end="74"/>
+ <lne id="1078" begin="72" end="76"/>
+ <lne id="1079" begin="79" end="79"/>
+ <lne id="1080" begin="77" end="81"/>
+ <lne id="1052" begin="71" end="82"/>
+ <lne id="1081" begin="86" end="86"/>
+ <lne id="1082" begin="84" end="88"/>
+ <lne id="1083" begin="91" end="91"/>
+ <lne id="1084" begin="89" end="93"/>
+ <lne id="1054" begin="83" end="94"/>
+ <lne id="1085" begin="98" end="98"/>
+ <lne id="1086" begin="96" end="100"/>
+ <lne id="1056" begin="95" end="101"/>
+ <lne id="1087" begin="105" end="105"/>
+ <lne id="1088" begin="103" end="107"/>
+ <lne id="1058" begin="102" end="108"/>
+ <lne id="1089" begin="112" end="112"/>
+ <lne id="1090" begin="110" end="114"/>
+ <lne id="1060" begin="109" end="115"/>
+ <lne id="1091" begin="119" end="119"/>
+ <lne id="1092" begin="117" end="121"/>
+ <lne id="1062" begin="116" end="122"/>
+ <lne id="1093" begin="126" end="126"/>
+ <lne id="1094" begin="124" end="128"/>
+ <lne id="1064" begin="123" end="129"/>
+ <lne id="1095" begin="133" end="133"/>
+ <lne id="1096" begin="131" end="135"/>
+ <lne id="1066" begin="130" end="136"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="623" begin="7" end="136"/>
+ <lve slot="4" name="988" begin="11" end="136"/>
+ <lve slot="5" name="990" begin="15" end="136"/>
+ <lve slot="6" name="1040" begin="19" end="136"/>
+ <lve slot="7" name="991" begin="23" end="136"/>
+ <lve slot="8" name="992" begin="27" end="136"/>
+ <lve slot="9" name="993" begin="31" end="136"/>
+ <lve slot="10" name="994" begin="35" end="136"/>
+ <lve slot="11" name="1041" begin="39" end="136"/>
+ <lve slot="12" name="1042" begin="43" end="136"/>
+ <lve slot="2" name="621" begin="3" end="136"/>
+ <lve slot="0" name="132" begin="0" end="136"/>
+ <lve slot="1" name="652" begin="0" end="136"/>
+ </localvariabletable>
+ </operation>
+ <operation name="45">
+ <context type="1097"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="1098"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="527"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="1099"/>
+ <call arg="287"/>
+ <if arg="1100"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="1101" begin="6" end="6"/>
+ <lne id="1102" begin="6" end="7"/>
+ <lne id="1103" begin="10" end="10"/>
+ <lne id="1104" begin="11" end="13"/>
+ <lne id="1105" begin="10" end="14"/>
+ <lne id="1106" begin="3" end="19"/>
+ <lne id="1107" begin="22" end="22"/>
+ <lne id="1108" begin="22" end="23"/>
+ <lne id="1109" begin="0" end="28"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="9" end="18"/>
+ <lve slot="1" name="148" begin="21" end="27"/>
+ <lve slot="0" name="132" begin="0" end="28"/>
+ </localvariabletable>
+ </operation>
+ <operation name="1110">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="43"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="43"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1111"/>
+ <load arg="134"/>
+ <get arg="44"/>
+ <call arg="1112"/>
+ <pushi arg="134"/>
+ <call arg="286"/>
+ <call arg="287"/>
+ <if arg="1111"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="213"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="1113"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1114"/>
+ <load arg="134"/>
+ <get arg="44"/>
+ <call arg="303"/>
+ <dup/>
+ <store arg="144"/>
+ <call arg="1115"/>
+ <dup/>
+ <push arg="1116"/>
+ <push arg="1117"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1118"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="621"/>
+ <push arg="690"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1119"/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1121"/>
+ <push arg="1122"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1123"/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1125"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1126"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="5"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="329"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <goto arg="1128"/>
+ <load arg="134"/>
+ <push arg="43"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1128"/>
+ <load arg="134"/>
+ <get arg="44"/>
+ <call arg="1112"/>
+ <pushi arg="134"/>
+ <call arg="1129"/>
+ <call arg="287"/>
+ <if arg="1128"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="215"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="1113"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1116"/>
+ <push arg="1117"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1118"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="621"/>
+ <push arg="690"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1015"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1123"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="44"/>
+ <iterate/>
+ <pop/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1119"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="44"/>
+ <iterate/>
+ <pop/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1121"/>
+ <push arg="1122"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1125"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1126"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="5"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="329"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <goto arg="1128"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="1130" begin="14" end="14"/>
+ <lne id="1131" begin="14" end="15"/>
+ <lne id="1132" begin="14" end="16"/>
+ <lne id="1133" begin="17" end="17"/>
+ <lne id="1134" begin="14" end="18"/>
+ <lne id="1135" begin="35" end="35"/>
+ <lne id="1136" begin="35" end="36"/>
+ <lne id="1137" begin="35" end="37"/>
+ <lne id="1138" begin="43" end="45"/>
+ <lne id="1139" begin="41" end="46"/>
+ <lne id="1140" begin="49" end="51"/>
+ <lne id="1141" begin="47" end="52"/>
+ <lne id="1142" begin="55" end="57"/>
+ <lne id="1143" begin="53" end="58"/>
+ <lne id="1144" begin="61" end="63"/>
+ <lne id="1145" begin="59" end="64"/>
+ <lne id="1146" begin="67" end="69"/>
+ <lne id="1147" begin="65" end="70"/>
+ <lne id="1148" begin="73" end="75"/>
+ <lne id="1149" begin="71" end="76"/>
+ <lne id="1150" begin="79" end="81"/>
+ <lne id="1151" begin="77" end="82"/>
+ <lne id="1152" begin="85" end="87"/>
+ <lne id="1153" begin="83" end="88"/>
+ <lne id="1154" begin="91" end="93"/>
+ <lne id="1155" begin="89" end="94"/>
+ <lne id="1156" begin="97" end="99"/>
+ <lne id="1157" begin="95" end="100"/>
+ <lne id="1158" begin="111" end="111"/>
+ <lne id="1159" begin="111" end="112"/>
+ <lne id="1160" begin="111" end="113"/>
+ <lne id="1161" begin="114" end="114"/>
+ <lne id="1162" begin="111" end="115"/>
+ <lne id="1163" begin="132" end="134"/>
+ <lne id="1164" begin="130" end="135"/>
+ <lne id="1165" begin="138" end="140"/>
+ <lne id="1166" begin="136" end="141"/>
+ <lne id="1167" begin="144" end="146"/>
+ <lne id="1168" begin="142" end="147"/>
+ <lne id="1169" begin="150" end="152"/>
+ <lne id="1170" begin="148" end="153"/>
+ <lne id="1171" begin="159" end="159"/>
+ <lne id="1172" begin="159" end="160"/>
+ <lne id="1173" begin="154" end="168"/>
+ <lne id="1174" begin="174" end="174"/>
+ <lne id="1175" begin="174" end="175"/>
+ <lne id="1176" begin="169" end="183"/>
+ <lne id="1177" begin="186" end="188"/>
+ <lne id="1178" begin="184" end="189"/>
+ <lne id="1150" begin="192" end="194"/>
+ <lne id="1151" begin="190" end="195"/>
+ <lne id="1152" begin="198" end="200"/>
+ <lne id="1153" begin="196" end="201"/>
+ <lne id="1154" begin="204" end="206"/>
+ <lne id="1155" begin="202" end="207"/>
+ <lne id="1156" begin="210" end="212"/>
+ <lne id="1157" begin="208" end="213"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="1114" begin="39" end="100"/>
+ <lve slot="1" name="1113" begin="6" end="216"/>
+ <lve slot="0" name="132" begin="0" end="217"/>
+ </localvariabletable>
+ </operation>
+ <operation name="1179">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="1113"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1116"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="1125"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="1126"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="5"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="329"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="1118"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="621"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="134"/>
+ <push arg="1119"/>
+ <call arg="636"/>
+ <store arg="313"/>
+ <load arg="134"/>
+ <push arg="1121"/>
+ <call arg="636"/>
+ <store arg="501"/>
+ <load arg="134"/>
+ <push arg="1123"/>
+ <call arg="636"/>
+ <store arg="899"/>
+ <load arg="134"/>
+ <push arg="1114"/>
+ <call arg="1180"/>
+ <store arg="314"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <load arg="745"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="1183"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="563"/>
+ <call arg="288"/>
+ <load arg="144"/>
+ <get arg="1098"/>
+ <call arg="490"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="1184"/>
+ <iterate/>
+ <store arg="900"/>
+ <load arg="900"/>
+ <get arg="1185"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="1186"/>
+ <call arg="490"/>
+ <call arg="145"/>
+ <set arg="1187"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1188"/>
+ <call arg="1189"/>
+ <call arg="145"/>
+ <set arg="805"/>
+ <dup/>
+ <getasm/>
+ <push arg="1190"/>
+ <call arg="145"/>
+ <set arg="1191"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1192"/>
+ <push arg="1193"/>
+ <push arg="1194"/>
+ <call arg="1195"/>
+ <store arg="900"/>
+ <load arg="900"/>
+ <load arg="144"/>
+ <get arg="1192"/>
+ <call arg="286"/>
+ <if arg="1196"/>
+ <load arg="900"/>
+ <goto arg="1197"/>
+ <push arg="1198"/>
+ <store arg="139"/>
+ <getasm/>
+ <get arg="1199"/>
+ <push arg="1200"/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="1195"/>
+ <push arg="1201"/>
+ <load arg="139"/>
+ <call arg="1195"/>
+ <load arg="144"/>
+ <get arg="1192"/>
+ <push arg="1202"/>
+ <getasm/>
+ <get arg="1203"/>
+ <call arg="1195"/>
+ <push arg="1204"/>
+ <getasm/>
+ <get arg="1205"/>
+ <call arg="1195"/>
+ <push arg="1206"/>
+ <getasm/>
+ <get arg="1207"/>
+ <call arg="1195"/>
+ <push arg="1208"/>
+ <getasm/>
+ <get arg="1209"/>
+ <call arg="1195"/>
+ <push arg="1210"/>
+ <getasm/>
+ <get arg="1211"/>
+ <call arg="1195"/>
+ <push arg="1212"/>
+ <push arg="1213"/>
+ <call arg="1195"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="1192"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1214"/>
+ <load arg="144"/>
+ <get arg="1215"/>
+ <call arg="490"/>
+ <call arg="145"/>
+ <set arg="1216"/>
+ <pop/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <load arg="563"/>
+ <call arg="145"/>
+ <set arg="683"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="500"/>
+ <call arg="288"/>
+ <load arg="501"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="500"/>
+ <dup/>
+ <getasm/>
+ <pushi arg="134"/>
+ <call arg="145"/>
+ <set arg="92"/>
+ <dup/>
+ <getasm/>
+ <load arg="314"/>
+ <get arg="1217"/>
+ <if arg="1218"/>
+ <pushi arg="134"/>
+ <goto arg="1219"/>
+ <pushi arg="281"/>
+ <pushi arg="134"/>
+ <call arg="699"/>
+ <call arg="145"/>
+ <set arg="68"/>
+ <dup/>
+ <getasm/>
+ <load arg="313"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="313"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="314"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="899"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <pop/>
+ <load arg="501"/>
+ <dup/>
+ <getasm/>
+ <push arg="1222"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <pop/>
+ <load arg="899"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="746"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <push arg="1224"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1225"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <pushf/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <push arg="5"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <load arg="746"/>
+ <call arg="145"/>
+ <set arg="1226"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="1231" begin="51" end="51"/>
+ <lne id="1232" begin="51" end="52"/>
+ <lne id="1233" begin="49" end="54"/>
+ <lne id="1234" begin="57" end="57"/>
+ <lne id="1235" begin="57" end="58"/>
+ <lne id="1236" begin="55" end="60"/>
+ <lne id="1237" begin="66" end="66"/>
+ <lne id="1238" begin="68" end="68"/>
+ <lne id="1239" begin="63" end="69"/>
+ <lne id="1240" begin="61" end="71"/>
+ <lne id="1241" begin="77" end="77"/>
+ <lne id="1242" begin="74" end="78"/>
+ <lne id="1243" begin="79" end="79"/>
+ <lne id="1244" begin="79" end="80"/>
+ <lne id="1245" begin="74" end="81"/>
+ <lne id="1246" begin="85" end="85"/>
+ <lne id="1247" begin="85" end="86"/>
+ <lne id="1248" begin="89" end="89"/>
+ <lne id="1249" begin="89" end="90"/>
+ <lne id="1250" begin="82" end="92"/>
+ <lne id="1251" begin="82" end="93"/>
+ <lne id="1252" begin="74" end="94"/>
+ <lne id="1253" begin="72" end="96"/>
+ <lne id="1254" begin="99" end="99"/>
+ <lne id="1255" begin="100" end="100"/>
+ <lne id="1256" begin="100" end="101"/>
+ <lne id="1257" begin="99" end="102"/>
+ <lne id="1258" begin="97" end="104"/>
+ <lne id="1259" begin="107" end="107"/>
+ <lne id="1260" begin="105" end="109"/>
+ <lne id="1261" begin="112" end="112"/>
+ <lne id="1262" begin="112" end="113"/>
+ <lne id="1263" begin="114" end="114"/>
+ <lne id="1264" begin="115" end="115"/>
+ <lne id="1265" begin="112" end="116"/>
+ <lne id="1266" begin="118" end="118"/>
+ <lne id="1267" begin="119" end="119"/>
+ <lne id="1268" begin="119" end="120"/>
+ <lne id="1269" begin="118" end="121"/>
+ <lne id="1270" begin="123" end="123"/>
+ <lne id="1271" begin="125" end="125"/>
+ <lne id="1272" begin="118" end="125"/>
+ <lne id="1273" begin="127" end="127"/>
+ <lne id="1274" begin="127" end="128"/>
+ <lne id="1275" begin="129" end="129"/>
+ <lne id="1276" begin="130" end="130"/>
+ <lne id="1277" begin="130" end="131"/>
+ <lne id="1278" begin="127" end="132"/>
+ <lne id="1279" begin="133" end="133"/>
+ <lne id="1280" begin="134" end="134"/>
+ <lne id="1281" begin="127" end="135"/>
+ <lne id="1282" begin="136" end="136"/>
+ <lne id="1283" begin="136" end="137"/>
+ <lne id="1284" begin="138" end="138"/>
+ <lne id="1285" begin="139" end="139"/>
+ <lne id="1286" begin="139" end="140"/>
+ <lne id="1287" begin="136" end="141"/>
+ <lne id="1288" begin="142" end="142"/>
+ <lne id="1289" begin="143" end="143"/>
+ <lne id="1290" begin="143" end="144"/>
+ <lne id="1291" begin="136" end="145"/>
+ <lne id="1292" begin="146" end="146"/>
+ <lne id="1293" begin="147" end="147"/>
+ <lne id="1294" begin="147" end="148"/>
+ <lne id="1295" begin="136" end="149"/>
+ <lne id="1296" begin="150" end="150"/>
+ <lne id="1297" begin="151" end="151"/>
+ <lne id="1298" begin="151" end="152"/>
+ <lne id="1299" begin="136" end="153"/>
+ <lne id="1300" begin="154" end="154"/>
+ <lne id="1301" begin="155" end="155"/>
+ <lne id="1302" begin="155" end="156"/>
+ <lne id="1303" begin="136" end="157"/>
+ <lne id="1304" begin="158" end="158"/>
+ <lne id="1305" begin="159" end="159"/>
+ <lne id="1306" begin="136" end="160"/>
+ <lne id="1307" begin="127" end="161"/>
+ <lne id="1308" begin="118" end="161"/>
+ <lne id="1309" begin="112" end="161"/>
+ <lne id="1310" begin="110" end="163"/>
+ <lne id="1311" begin="166" end="166"/>
+ <lne id="1312" begin="166" end="167"/>
+ <lne id="1313" begin="168" end="168"/>
+ <lne id="1314" begin="168" end="169"/>
+ <lne id="1315" begin="166" end="170"/>
+ <lne id="1316" begin="164" end="172"/>
+ <lne id="1139" begin="48" end="173"/>
+ <lne id="1317" begin="177" end="177"/>
+ <lne id="1318" begin="175" end="179"/>
+ <lne id="1319" begin="185" end="185"/>
+ <lne id="1320" begin="187" end="187"/>
+ <lne id="1321" begin="182" end="188"/>
+ <lne id="1322" begin="180" end="190"/>
+ <lne id="1141" begin="174" end="191"/>
+ <lne id="1323" begin="195" end="195"/>
+ <lne id="1324" begin="193" end="197"/>
+ <lne id="1325" begin="200" end="200"/>
+ <lne id="1326" begin="200" end="201"/>
+ <lne id="1327" begin="203" end="203"/>
+ <lne id="1328" begin="205" end="205"/>
+ <lne id="1329" begin="206" end="206"/>
+ <lne id="1330" begin="205" end="207"/>
+ <lne id="1331" begin="200" end="207"/>
+ <lne id="1332" begin="198" end="209"/>
+ <lne id="1333" begin="212" end="212"/>
+ <lne id="1334" begin="210" end="214"/>
+ <lne id="1143" begin="192" end="215"/>
+ <lne id="1335" begin="219" end="219"/>
+ <lne id="1336" begin="219" end="220"/>
+ <lne id="1337" begin="217" end="222"/>
+ <lne id="1338" begin="225" end="225"/>
+ <lne id="1339" begin="223" end="227"/>
+ <lne id="1340" begin="230" end="230"/>
+ <lne id="1341" begin="228" end="232"/>
+ <lne id="1145" begin="216" end="233"/>
+ <lne id="1342" begin="237" end="237"/>
+ <lne id="1343" begin="235" end="239"/>
+ <lne id="1147" begin="234" end="240"/>
+ <lne id="1344" begin="244" end="244"/>
+ <lne id="1345" begin="244" end="245"/>
+ <lne id="1346" begin="242" end="247"/>
+ <lne id="1347" begin="250" end="250"/>
+ <lne id="1348" begin="248" end="252"/>
+ <lne id="1149" begin="241" end="253"/>
+ <lne id="1349" begin="257" end="257"/>
+ <lne id="1350" begin="255" end="259"/>
+ <lne id="1151" begin="254" end="260"/>
+ <lne id="1351" begin="264" end="264"/>
+ <lne id="1352" begin="264" end="265"/>
+ <lne id="1353" begin="262" end="267"/>
+ <lne id="1153" begin="261" end="268"/>
+ <lne id="1354" begin="272" end="272"/>
+ <lne id="1355" begin="272" end="273"/>
+ <lne id="1356" begin="270" end="275"/>
+ <lne id="1357" begin="278" end="278"/>
+ <lne id="1358" begin="276" end="280"/>
+ <lne id="1359" begin="283" end="283"/>
+ <lne id="1360" begin="281" end="285"/>
+ <lne id="1361" begin="288" end="288"/>
+ <lne id="1362" begin="286" end="290"/>
+ <lne id="1155" begin="269" end="291"/>
+ <lne id="1363" begin="295" end="295"/>
+ <lne id="1364" begin="295" end="296"/>
+ <lne id="1365" begin="293" end="298"/>
+ <lne id="1366" begin="301" end="301"/>
+ <lne id="1367" begin="299" end="303"/>
+ <lne id="1368" begin="306" end="306"/>
+ <lne id="1369" begin="304" end="308"/>
+ <lne id="1370" begin="311" end="311"/>
+ <lne id="1371" begin="311" end="312"/>
+ <lne id="1372" begin="309" end="314"/>
+ <lne id="1157" begin="292" end="315"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="14" name="148" begin="88" end="91"/>
+ <lve slot="15" name="805" begin="126" end="161"/>
+ <lve slot="14" name="1373" begin="117" end="161"/>
+ <lve slot="13" name="1114" begin="47" end="315"/>
+ <lve slot="3" name="1116" begin="7" end="315"/>
+ <lve slot="4" name="1125" begin="11" end="315"/>
+ <lve slot="5" name="1126" begin="15" end="315"/>
+ <lve slot="6" name="5" begin="19" end="315"/>
+ <lve slot="7" name="329" begin="23" end="315"/>
+ <lve slot="8" name="1118" begin="27" end="315"/>
+ <lve slot="9" name="621" begin="31" end="315"/>
+ <lve slot="10" name="1119" begin="35" end="315"/>
+ <lve slot="11" name="1121" begin="39" end="315"/>
+ <lve slot="12" name="1123" begin="43" end="315"/>
+ <lve slot="2" name="1113" begin="3" end="315"/>
+ <lve slot="0" name="132" begin="0" end="315"/>
+ <lve slot="1" name="652" begin="0" end="315"/>
+ </localvariabletable>
+ </operation>
+ <operation name="1374">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="1113"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1116"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="1125"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="1126"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="5"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="329"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="1118"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="621"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="134"/>
+ <push arg="1015"/>
+ <call arg="636"/>
+ <store arg="313"/>
+ <load arg="134"/>
+ <push arg="1123"/>
+ <call arg="636"/>
+ <store arg="501"/>
+ <load arg="134"/>
+ <push arg="1119"/>
+ <call arg="636"/>
+ <store arg="899"/>
+ <load arg="134"/>
+ <push arg="1121"/>
+ <call arg="636"/>
+ <store arg="314"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <load arg="745"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="1183"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="563"/>
+ <call arg="288"/>
+ <load arg="144"/>
+ <get arg="1098"/>
+ <call arg="490"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="1184"/>
+ <iterate/>
+ <store arg="900"/>
+ <load arg="900"/>
+ <get arg="1185"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="1186"/>
+ <call arg="490"/>
+ <call arg="145"/>
+ <set arg="1187"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1188"/>
+ <call arg="1189"/>
+ <call arg="145"/>
+ <set arg="805"/>
+ <dup/>
+ <getasm/>
+ <push arg="1190"/>
+ <call arg="145"/>
+ <set arg="1191"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1192"/>
+ <push arg="1193"/>
+ <push arg="1194"/>
+ <call arg="1195"/>
+ <store arg="900"/>
+ <load arg="900"/>
+ <load arg="144"/>
+ <get arg="1192"/>
+ <call arg="286"/>
+ <if arg="1196"/>
+ <load arg="900"/>
+ <goto arg="1197"/>
+ <push arg="1198"/>
+ <store arg="139"/>
+ <getasm/>
+ <get arg="1199"/>
+ <push arg="1200"/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="1195"/>
+ <push arg="1201"/>
+ <load arg="139"/>
+ <call arg="1195"/>
+ <load arg="144"/>
+ <get arg="1192"/>
+ <push arg="1202"/>
+ <getasm/>
+ <get arg="1203"/>
+ <call arg="1195"/>
+ <push arg="1204"/>
+ <getasm/>
+ <get arg="1205"/>
+ <call arg="1195"/>
+ <push arg="1206"/>
+ <getasm/>
+ <get arg="1207"/>
+ <call arg="1195"/>
+ <push arg="1208"/>
+ <getasm/>
+ <get arg="1209"/>
+ <call arg="1195"/>
+ <push arg="1210"/>
+ <getasm/>
+ <get arg="1211"/>
+ <call arg="1195"/>
+ <push arg="1212"/>
+ <push arg="1213"/>
+ <call arg="1195"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="1192"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1214"/>
+ <load arg="144"/>
+ <get arg="1215"/>
+ <call arg="490"/>
+ <call arg="145"/>
+ <set arg="1216"/>
+ <pop/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <load arg="563"/>
+ <call arg="145"/>
+ <set arg="683"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="500"/>
+ <call arg="288"/>
+ <load arg="314"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="500"/>
+ <dup/>
+ <getasm/>
+ <pushi arg="134"/>
+ <call arg="145"/>
+ <set arg="92"/>
+ <dup/>
+ <getasm/>
+ <pushi arg="281"/>
+ <pushi arg="134"/>
+ <call arg="699"/>
+ <call arg="145"/>
+ <set arg="68"/>
+ <dup/>
+ <getasm/>
+ <load arg="313"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="313"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <pop/>
+ <pushi arg="134"/>
+ <store arg="900"/>
+ <load arg="144"/>
+ <get arg="44"/>
+ <call arg="1375"/>
+ <store arg="139"/>
+ <load arg="501"/>
+ <iterate/>
+ <load arg="139"/>
+ <load arg="900"/>
+ <call arg="1376"/>
+ <store arg="1377"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1378"/>
+ <load arg="900"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1379"/>
+ <load arg="900"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="900"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="900"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="900"/>
+ <load arg="144"/>
+ <get arg="44"/>
+ <call arg="1375"/>
+ <store arg="139"/>
+ <load arg="899"/>
+ <iterate/>
+ <load arg="139"/>
+ <load arg="900"/>
+ <call arg="1376"/>
+ <store arg="1377"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1381"/>
+ <load arg="900"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="1377"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1382"/>
+ <load arg="900"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="313"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1383"/>
+ <load arg="900"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1384"/>
+ <dup/>
+ <getasm/>
+ <load arg="501"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1385"/>
+ <load arg="900"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <pop/>
+ <load arg="900"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="900"/>
+ <enditerate/>
+ <load arg="314"/>
+ <dup/>
+ <getasm/>
+ <push arg="1222"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <push arg="1224"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1225"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <pushf/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <push arg="5"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <load arg="746"/>
+ <call arg="145"/>
+ <set arg="1226"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="1231" begin="51" end="51"/>
+ <lne id="1232" begin="51" end="52"/>
+ <lne id="1233" begin="49" end="54"/>
+ <lne id="1234" begin="57" end="57"/>
+ <lne id="1235" begin="57" end="58"/>
+ <lne id="1236" begin="55" end="60"/>
+ <lne id="1237" begin="66" end="66"/>
+ <lne id="1238" begin="68" end="68"/>
+ <lne id="1239" begin="63" end="69"/>
+ <lne id="1240" begin="61" end="71"/>
+ <lne id="1241" begin="77" end="77"/>
+ <lne id="1242" begin="74" end="78"/>
+ <lne id="1243" begin="79" end="79"/>
+ <lne id="1244" begin="79" end="80"/>
+ <lne id="1245" begin="74" end="81"/>
+ <lne id="1246" begin="85" end="85"/>
+ <lne id="1247" begin="85" end="86"/>
+ <lne id="1248" begin="89" end="89"/>
+ <lne id="1249" begin="89" end="90"/>
+ <lne id="1250" begin="82" end="92"/>
+ <lne id="1251" begin="82" end="93"/>
+ <lne id="1252" begin="74" end="94"/>
+ <lne id="1253" begin="72" end="96"/>
+ <lne id="1254" begin="99" end="99"/>
+ <lne id="1255" begin="100" end="100"/>
+ <lne id="1256" begin="100" end="101"/>
+ <lne id="1257" begin="99" end="102"/>
+ <lne id="1258" begin="97" end="104"/>
+ <lne id="1259" begin="107" end="107"/>
+ <lne id="1260" begin="105" end="109"/>
+ <lne id="1261" begin="112" end="112"/>
+ <lne id="1262" begin="112" end="113"/>
+ <lne id="1263" begin="114" end="114"/>
+ <lne id="1264" begin="115" end="115"/>
+ <lne id="1265" begin="112" end="116"/>
+ <lne id="1266" begin="118" end="118"/>
+ <lne id="1267" begin="119" end="119"/>
+ <lne id="1268" begin="119" end="120"/>
+ <lne id="1269" begin="118" end="121"/>
+ <lne id="1270" begin="123" end="123"/>
+ <lne id="1271" begin="125" end="125"/>
+ <lne id="1272" begin="118" end="125"/>
+ <lne id="1273" begin="127" end="127"/>
+ <lne id="1274" begin="127" end="128"/>
+ <lne id="1275" begin="129" end="129"/>
+ <lne id="1276" begin="130" end="130"/>
+ <lne id="1277" begin="130" end="131"/>
+ <lne id="1278" begin="127" end="132"/>
+ <lne id="1279" begin="133" end="133"/>
+ <lne id="1280" begin="134" end="134"/>
+ <lne id="1281" begin="127" end="135"/>
+ <lne id="1282" begin="136" end="136"/>
+ <lne id="1283" begin="136" end="137"/>
+ <lne id="1284" begin="138" end="138"/>
+ <lne id="1285" begin="139" end="139"/>
+ <lne id="1286" begin="139" end="140"/>
+ <lne id="1287" begin="136" end="141"/>
+ <lne id="1288" begin="142" end="142"/>
+ <lne id="1289" begin="143" end="143"/>
+ <lne id="1290" begin="143" end="144"/>
+ <lne id="1291" begin="136" end="145"/>
+ <lne id="1292" begin="146" end="146"/>
+ <lne id="1293" begin="147" end="147"/>
+ <lne id="1294" begin="147" end="148"/>
+ <lne id="1295" begin="136" end="149"/>
+ <lne id="1296" begin="150" end="150"/>
+ <lne id="1297" begin="151" end="151"/>
+ <lne id="1298" begin="151" end="152"/>
+ <lne id="1299" begin="136" end="153"/>
+ <lne id="1300" begin="154" end="154"/>
+ <lne id="1301" begin="155" end="155"/>
+ <lne id="1302" begin="155" end="156"/>
+ <lne id="1303" begin="136" end="157"/>
+ <lne id="1304" begin="158" end="158"/>
+ <lne id="1305" begin="159" end="159"/>
+ <lne id="1306" begin="136" end="160"/>
+ <lne id="1307" begin="127" end="161"/>
+ <lne id="1308" begin="118" end="161"/>
+ <lne id="1309" begin="112" end="161"/>
+ <lne id="1310" begin="110" end="163"/>
+ <lne id="1311" begin="166" end="166"/>
+ <lne id="1312" begin="166" end="167"/>
+ <lne id="1313" begin="168" end="168"/>
+ <lne id="1314" begin="168" end="169"/>
+ <lne id="1315" begin="166" end="170"/>
+ <lne id="1316" begin="164" end="172"/>
+ <lne id="1164" begin="48" end="173"/>
+ <lne id="1386" begin="177" end="177"/>
+ <lne id="1387" begin="175" end="179"/>
+ <lne id="1388" begin="185" end="185"/>
+ <lne id="1389" begin="187" end="187"/>
+ <lne id="1390" begin="182" end="188"/>
+ <lne id="1391" begin="180" end="190"/>
+ <lne id="1166" begin="174" end="191"/>
+ <lne id="1392" begin="195" end="195"/>
+ <lne id="1393" begin="193" end="197"/>
+ <lne id="1394" begin="201" end="201"/>
+ <lne id="1395" begin="200" end="202"/>
+ <lne id="1396" begin="198" end="204"/>
+ <lne id="1397" begin="207" end="207"/>
+ <lne id="1398" begin="205" end="209"/>
+ <lne id="1168" begin="192" end="210"/>
+ <lne id="1399" begin="214" end="214"/>
+ <lne id="1400" begin="214" end="215"/>
+ <lne id="1401" begin="212" end="217"/>
+ <lne id="1170" begin="211" end="218"/>
+ <lne id="1171" begin="221" end="221"/>
+ <lne id="1172" begin="221" end="222"/>
+ <lne id="1402" begin="233" end="233"/>
+ <lne id="1403" begin="233" end="234"/>
+ <lne id="1404" begin="231" end="244"/>
+ <lne id="1405" begin="247" end="247"/>
+ <lne id="1406" begin="245" end="257"/>
+ <lne id="1173" begin="219" end="263"/>
+ <lne id="1174" begin="266" end="266"/>
+ <lne id="1175" begin="266" end="267"/>
+ <lne id="1407" begin="278" end="278"/>
+ <lne id="1408" begin="278" end="279"/>
+ <lne id="1409" begin="276" end="289"/>
+ <lne id="1410" begin="292" end="292"/>
+ <lne id="1411" begin="290" end="302"/>
+ <lne id="1412" begin="305" end="305"/>
+ <lne id="1413" begin="303" end="315"/>
+ <lne id="1414" begin="318" end="318"/>
+ <lne id="1415" begin="316" end="328"/>
+ <lne id="1176" begin="264" end="334"/>
+ <lne id="1416" begin="338" end="338"/>
+ <lne id="1417" begin="336" end="340"/>
+ <lne id="1178" begin="335" end="341"/>
+ <lne id="1349" begin="345" end="345"/>
+ <lne id="1350" begin="343" end="347"/>
+ <lne id="1151" begin="342" end="348"/>
+ <lne id="1351" begin="352" end="352"/>
+ <lne id="1352" begin="352" end="353"/>
+ <lne id="1353" begin="350" end="355"/>
+ <lne id="1153" begin="349" end="356"/>
+ <lne id="1354" begin="360" end="360"/>
+ <lne id="1355" begin="360" end="361"/>
+ <lne id="1356" begin="358" end="363"/>
+ <lne id="1357" begin="366" end="366"/>
+ <lne id="1358" begin="364" end="368"/>
+ <lne id="1359" begin="371" end="371"/>
+ <lne id="1360" begin="369" end="373"/>
+ <lne id="1361" begin="376" end="376"/>
+ <lne id="1362" begin="374" end="378"/>
+ <lne id="1155" begin="357" end="379"/>
+ <lne id="1363" begin="383" end="383"/>
+ <lne id="1364" begin="383" end="384"/>
+ <lne id="1365" begin="381" end="386"/>
+ <lne id="1366" begin="389" end="389"/>
+ <lne id="1367" begin="387" end="391"/>
+ <lne id="1368" begin="394" end="394"/>
+ <lne id="1369" begin="392" end="396"/>
+ <lne id="1370" begin="399" end="399"/>
+ <lne id="1371" begin="399" end="400"/>
+ <lne id="1372" begin="397" end="402"/>
+ <lne id="1157" begin="380" end="403"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="14" name="148" begin="88" end="91"/>
+ <lve slot="15" name="805" begin="126" end="161"/>
+ <lve slot="14" name="1373" begin="117" end="161"/>
+ <lve slot="16" name="1114" begin="230" end="257"/>
+ <lve slot="15" name="1418" begin="224" end="263"/>
+ <lve slot="14" name="1419" begin="220" end="263"/>
+ <lve slot="16" name="1114" begin="275" end="328"/>
+ <lve slot="15" name="1418" begin="269" end="334"/>
+ <lve slot="14" name="1419" begin="265" end="334"/>
+ <lve slot="3" name="1116" begin="7" end="403"/>
+ <lve slot="4" name="1125" begin="11" end="403"/>
+ <lve slot="5" name="1126" begin="15" end="403"/>
+ <lve slot="6" name="5" begin="19" end="403"/>
+ <lve slot="7" name="329" begin="23" end="403"/>
+ <lve slot="8" name="1118" begin="27" end="403"/>
+ <lve slot="9" name="621" begin="31" end="403"/>
+ <lve slot="10" name="1015" begin="35" end="403"/>
+ <lve slot="11" name="1123" begin="39" end="403"/>
+ <lve slot="12" name="1119" begin="43" end="403"/>
+ <lve slot="13" name="1121" begin="47" end="403"/>
+ <lve slot="2" name="1113" begin="3" end="403"/>
+ <lve slot="0" name="132" begin="0" end="403"/>
+ <lve slot="1" name="652" begin="0" end="403"/>
+ </localvariabletable>
+ </operation>
+ <operation name="1420">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="498"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="217"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="623"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1421"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1422"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="329"/>
+ <push arg="1423"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="1424" begin="21" end="23"/>
+ <lne id="1425" begin="19" end="24"/>
+ <lne id="1426" begin="27" end="29"/>
+ <lne id="1427" begin="25" end="30"/>
+ <lne id="1428" begin="33" end="35"/>
+ <lne id="1429" begin="31" end="36"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="623" begin="6" end="38"/>
+ <lve slot="0" name="132" begin="0" end="39"/>
+ </localvariabletable>
+ </operation>
+ <operation name="1430">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1421"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="1422"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="329"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="1431"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <pushf/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1432"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <dup/>
+ <getasm/>
+ <load arg="745"/>
+ <call arg="145"/>
+ <set arg="1433"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="1434"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="1422"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <push arg="1435"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="1436" begin="19" end="19"/>
+ <lne id="1437" begin="19" end="20"/>
+ <lne id="1438" begin="17" end="22"/>
+ <lne id="1439" begin="25" end="25"/>
+ <lne id="1440" begin="25" end="26"/>
+ <lne id="1441" begin="25" end="27"/>
+ <lne id="1442" begin="23" end="29"/>
+ <lne id="1443" begin="32" end="32"/>
+ <lne id="1444" begin="30" end="34"/>
+ <lne id="1445" begin="37" end="37"/>
+ <lne id="1446" begin="37" end="38"/>
+ <lne id="1447" begin="35" end="40"/>
+ <lne id="1448" begin="43" end="43"/>
+ <lne id="1449" begin="41" end="45"/>
+ <lne id="1450" begin="51" end="51"/>
+ <lne id="1451" begin="48" end="52"/>
+ <lne id="1452" begin="46" end="54"/>
+ <lne id="1425" begin="16" end="55"/>
+ <lne id="1453" begin="59" end="59"/>
+ <lne id="1454" begin="59" end="60"/>
+ <lne id="1455" begin="57" end="62"/>
+ <lne id="1456" begin="65" end="65"/>
+ <lne id="1457" begin="63" end="67"/>
+ <lne id="1458" begin="70" end="70"/>
+ <lne id="1459" begin="68" end="72"/>
+ <lne id="1460" begin="75" end="75"/>
+ <lne id="1461" begin="73" end="77"/>
+ <lne id="1427" begin="56" end="78"/>
+ <lne id="1462" begin="82" end="82"/>
+ <lne id="1463" begin="82" end="83"/>
+ <lne id="1464" begin="80" end="85"/>
+ <lne id="1465" begin="88" end="88"/>
+ <lne id="1466" begin="86" end="90"/>
+ <lne id="1467" begin="93" end="93"/>
+ <lne id="1468" begin="93" end="94"/>
+ <lne id="1469" begin="91" end="96"/>
+ <lne id="1429" begin="79" end="97"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="1421" begin="7" end="97"/>
+ <lve slot="4" name="1422" begin="11" end="97"/>
+ <lve slot="5" name="329" begin="15" end="97"/>
+ <lve slot="2" name="623" begin="3" end="97"/>
+ <lve slot="0" name="132" begin="0" end="97"/>
+ <lve slot="1" name="652" begin="0" end="97"/>
+ </localvariabletable>
+ </operation>
+ <operation name="1470">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="336"/>
+ <load arg="134"/>
+ <get arg="552"/>
+ <call arg="333"/>
+ <call arg="287"/>
+ <if arg="336"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="221"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="623"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1421"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="329"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1471"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1422"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1472"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1473"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <goto arg="1474"/>
+ <load arg="134"/>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1474"/>
+ <load arg="134"/>
+ <get arg="552"/>
+ <load arg="134"/>
+ <get arg="1475"/>
+ <call arg="333"/>
+ <call arg="567"/>
+ <call arg="287"/>
+ <if arg="1474"/>
+ <load arg="134"/>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1476"/>
+ <load arg="134"/>
+ <get arg="1477"/>
+ <call arg="138"/>
+ <call arg="287"/>
+ <if arg="1476"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="225"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="623"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1421"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1118"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1015"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="329"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1471"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <goto arg="1478"/>
+ <load arg="134"/>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1478"/>
+ <load arg="134"/>
+ <get arg="1477"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <call arg="287"/>
+ <if arg="1478"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="227"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="623"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1421"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1479"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1015"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1480"/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1481"/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1482"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1483"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1422"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1484"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1485"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1118"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="329"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1471"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <goto arg="1478"/>
+ <goto arg="1474"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="1486" begin="14" end="14"/>
+ <lne id="1487" begin="14" end="15"/>
+ <lne id="1488" begin="14" end="16"/>
+ <lne id="1489" begin="33" end="35"/>
+ <lne id="1490" begin="31" end="36"/>
+ <lne id="1491" begin="39" end="41"/>
+ <lne id="1492" begin="37" end="42"/>
+ <lne id="1493" begin="45" end="47"/>
+ <lne id="1494" begin="43" end="48"/>
+ <lne id="1495" begin="51" end="53"/>
+ <lne id="1496" begin="49" end="54"/>
+ <lne id="1497" begin="57" end="59"/>
+ <lne id="1498" begin="55" end="60"/>
+ <lne id="1499" begin="63" end="65"/>
+ <lne id="1500" begin="61" end="66"/>
+ <lne id="1501" begin="77" end="77"/>
+ <lne id="1502" begin="77" end="78"/>
+ <lne id="1503" begin="79" end="79"/>
+ <lne id="1504" begin="79" end="80"/>
+ <lne id="1505" begin="79" end="81"/>
+ <lne id="1506" begin="77" end="82"/>
+ <lne id="1507" begin="92" end="92"/>
+ <lne id="1508" begin="92" end="93"/>
+ <lne id="1509" begin="92" end="94"/>
+ <lne id="1510" begin="111" end="113"/>
+ <lne id="1511" begin="109" end="114"/>
+ <lne id="1512" begin="117" end="119"/>
+ <lne id="1513" begin="115" end="120"/>
+ <lne id="1514" begin="123" end="125"/>
+ <lne id="1515" begin="121" end="126"/>
+ <lne id="1516" begin="129" end="131"/>
+ <lne id="1517" begin="127" end="132"/>
+ <lne id="1518" begin="135" end="137"/>
+ <lne id="1519" begin="133" end="138"/>
+ <lne id="1520" begin="149" end="149"/>
+ <lne id="1521" begin="149" end="150"/>
+ <lne id="1522" begin="149" end="151"/>
+ <lne id="1523" begin="149" end="152"/>
+ <lne id="1524" begin="169" end="171"/>
+ <lne id="1525" begin="167" end="172"/>
+ <lne id="1526" begin="175" end="177"/>
+ <lne id="1527" begin="173" end="178"/>
+ <lne id="1528" begin="181" end="183"/>
+ <lne id="1529" begin="179" end="184"/>
+ <lne id="1530" begin="187" end="189"/>
+ <lne id="1531" begin="185" end="190"/>
+ <lne id="1532" begin="193" end="195"/>
+ <lne id="1533" begin="191" end="196"/>
+ <lne id="1534" begin="199" end="201"/>
+ <lne id="1535" begin="197" end="202"/>
+ <lne id="1536" begin="205" end="207"/>
+ <lne id="1537" begin="203" end="208"/>
+ <lne id="1538" begin="211" end="213"/>
+ <lne id="1539" begin="209" end="214"/>
+ <lne id="1540" begin="217" end="219"/>
+ <lne id="1541" begin="215" end="220"/>
+ <lne id="1542" begin="223" end="225"/>
+ <lne id="1543" begin="221" end="226"/>
+ <lne id="1512" begin="229" end="231"/>
+ <lne id="1513" begin="227" end="232"/>
+ <lne id="1516" begin="235" end="237"/>
+ <lne id="1517" begin="233" end="238"/>
+ <lne id="1518" begin="241" end="243"/>
+ <lne id="1519" begin="239" end="244"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="623" begin="6" end="248"/>
+ <lve slot="0" name="132" begin="0" end="249"/>
+ </localvariabletable>
+ </operation>
+ <operation name="1544">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1421"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="329"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="1471"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="1422"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="1472"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="1473"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1477"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="746"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="1545"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="563"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="1434"/>
+ <dup/>
+ <getasm/>
+ <pusht/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="745"/>
+ <call arg="288"/>
+ <load arg="564"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="1183"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="1431"/>
+ <load arg="144"/>
+ <get arg="86"/>
+ <call arg="138"/>
+ <if arg="1546"/>
+ <push arg="315"/>
+ <load arg="144"/>
+ <get arg="86"/>
+ <call arg="316"/>
+ <goto arg="1547"/>
+ <push arg="1198"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="1226"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <load arg="144"/>
+ <get arg="1548"/>
+ <load arg="144"/>
+ <get arg="1549"/>
+ <call arg="1550"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <push arg="1551"/>
+ <load arg="144"/>
+ <get arg="1548"/>
+ <call arg="1552"/>
+ <call arg="316"/>
+ <push arg="1553"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="1422"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <push arg="1435"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="1472"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1554"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1555"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1556"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="1557" begin="31" end="31"/>
+ <lne id="1558" begin="31" end="32"/>
+ <lne id="1559" begin="29" end="34"/>
+ <lne id="1560" begin="40" end="40"/>
+ <lne id="1561" begin="37" end="41"/>
+ <lne id="1562" begin="35" end="43"/>
+ <lne id="1563" begin="49" end="49"/>
+ <lne id="1564" begin="46" end="50"/>
+ <lne id="1565" begin="44" end="52"/>
+ <lne id="1566" begin="55" end="55"/>
+ <lne id="1567" begin="53" end="57"/>
+ <lne id="1568" begin="63" end="63"/>
+ <lne id="1569" begin="65" end="65"/>
+ <lne id="1570" begin="60" end="66"/>
+ <lne id="1571" begin="58" end="68"/>
+ <lne id="1572" begin="71" end="71"/>
+ <lne id="1573" begin="71" end="72"/>
+ <lne id="1574" begin="69" end="74"/>
+ <lne id="1575" begin="77" end="77"/>
+ <lne id="1576" begin="77" end="78"/>
+ <lne id="1577" begin="77" end="79"/>
+ <lne id="1578" begin="80" end="80"/>
+ <lne id="1579" begin="80" end="81"/>
+ <lne id="1580" begin="80" end="82"/>
+ <lne id="1581" begin="84" end="84"/>
+ <lne id="1582" begin="85" end="85"/>
+ <lne id="1583" begin="85" end="86"/>
+ <lne id="1584" begin="84" end="87"/>
+ <lne id="1585" begin="89" end="89"/>
+ <lne id="1586" begin="80" end="89"/>
+ <lne id="1587" begin="77" end="90"/>
+ <lne id="1588" begin="75" end="92"/>
+ <lne id="1589" begin="95" end="95"/>
+ <lne id="1590" begin="93" end="97"/>
+ <lne id="1490" begin="28" end="98"/>
+ <lne id="1591" begin="102" end="102"/>
+ <lne id="1592" begin="103" end="103"/>
+ <lne id="1593" begin="103" end="104"/>
+ <lne id="1594" begin="105" end="105"/>
+ <lne id="1595" begin="105" end="106"/>
+ <lne id="1596" begin="107" end="107"/>
+ <lne id="1597" begin="107" end="108"/>
+ <lne id="1598" begin="102" end="109"/>
+ <lne id="1599" begin="100" end="111"/>
+ <lne id="1600" begin="114" end="114"/>
+ <lne id="1601" begin="114" end="115"/>
+ <lne id="1602" begin="112" end="117"/>
+ <lne id="1603" begin="120" end="120"/>
+ <lne id="1604" begin="118" end="122"/>
+ <lne id="1605" begin="125" end="125"/>
+ <lne id="1606" begin="125" end="126"/>
+ <lne id="1607" begin="123" end="128"/>
+ <lne id="1492" begin="99" end="129"/>
+ <lne id="1608" begin="133" end="133"/>
+ <lne id="1609" begin="134" end="134"/>
+ <lne id="1610" begin="134" end="135"/>
+ <lne id="1611" begin="134" end="136"/>
+ <lne id="1612" begin="133" end="137"/>
+ <lne id="1613" begin="138" end="138"/>
+ <lne id="1614" begin="133" end="139"/>
+ <lne id="1615" begin="131" end="141"/>
+ <lne id="1494" begin="130" end="142"/>
+ <lne id="1616" begin="146" end="146"/>
+ <lne id="1617" begin="146" end="147"/>
+ <lne id="1618" begin="144" end="149"/>
+ <lne id="1619" begin="152" end="152"/>
+ <lne id="1620" begin="150" end="154"/>
+ <lne id="1621" begin="157" end="157"/>
+ <lne id="1622" begin="155" end="159"/>
+ <lne id="1623" begin="162" end="162"/>
+ <lne id="1624" begin="160" end="164"/>
+ <lne id="1496" begin="143" end="165"/>
+ <lne id="1625" begin="169" end="169"/>
+ <lne id="1626" begin="169" end="170"/>
+ <lne id="1627" begin="167" end="172"/>
+ <lne id="1628" begin="175" end="175"/>
+ <lne id="1629" begin="173" end="177"/>
+ <lne id="1630" begin="180" end="180"/>
+ <lne id="1631" begin="180" end="181"/>
+ <lne id="1632" begin="178" end="183"/>
+ <lne id="1633" begin="186" end="186"/>
+ <lne id="1634" begin="186" end="187"/>
+ <lne id="1635" begin="184" end="189"/>
+ <lne id="1498" begin="166" end="190"/>
+ <lne id="1636" begin="194" end="194"/>
+ <lne id="1637" begin="194" end="195"/>
+ <lne id="1638" begin="192" end="197"/>
+ <lne id="1500" begin="191" end="198"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="1421" begin="7" end="198"/>
+ <lve slot="4" name="329" begin="11" end="198"/>
+ <lve slot="5" name="1471" begin="15" end="198"/>
+ <lve slot="6" name="1422" begin="19" end="198"/>
+ <lve slot="7" name="1472" begin="23" end="198"/>
+ <lve slot="8" name="1473" begin="27" end="198"/>
+ <lve slot="2" name="623" begin="3" end="198"/>
+ <lve slot="0" name="132" begin="0" end="198"/>
+ <lve slot="1" name="652" begin="0" end="198"/>
+ </localvariabletable>
+ </operation>
+ <operation name="47">
+ <context type="561"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="36"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="53"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="333"/>
+ <call arg="287"/>
+ <if arg="141"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="1639" begin="3" end="3"/>
+ <lne id="1640" begin="3" end="4"/>
+ <lne id="1641" begin="7" end="7"/>
+ <lne id="1642" begin="8" end="10"/>
+ <lne id="1643" begin="7" end="11"/>
+ <lne id="1644" begin="7" end="12"/>
+ <lne id="1645" begin="0" end="17"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="6" end="16"/>
+ <lve slot="0" name="132" begin="0" end="17"/>
+ </localvariabletable>
+ </operation>
+ <operation name="1646">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="561"/>
+ <parameter name="144" type="497"/>
+ </parameters>
+ <code>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="1646"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="1647"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1648"/>
+ <load arg="144"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1119"/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <dup/>
+ <store arg="284"/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1649"/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <dup/>
+ <store arg="637"/>
+ <call arg="626"/>
+ <pushf/>
+ <call arg="628"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1650"/>
+ <call arg="145"/>
+ <set arg="1651"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="134"/>
+ <push arg="329"/>
+ <call arg="1652"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="284"/>
+ </code>
+ <linenumbertable>
+ <lne id="1653" begin="37" end="37"/>
+ <lne id="1654" begin="35" end="39"/>
+ <lne id="1655" begin="42" end="42"/>
+ <lne id="1656" begin="42" end="43"/>
+ <lne id="1657" begin="40" end="45"/>
+ <lne id="1658" begin="48" end="48"/>
+ <lne id="1659" begin="46" end="50"/>
+ <lne id="1660" begin="34" end="51"/>
+ <lne id="1661" begin="55" end="55"/>
+ <lne id="1662" begin="56" end="56"/>
+ <lne id="1663" begin="57" end="57"/>
+ <lne id="1664" begin="55" end="58"/>
+ <lne id="1665" begin="53" end="60"/>
+ <lne id="1666" begin="52" end="61"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="1119" begin="22" end="62"/>
+ <lve slot="4" name="1649" begin="30" end="62"/>
+ <lve slot="0" name="132" begin="0" end="62"/>
+ <lve slot="1" name="1647" begin="0" end="62"/>
+ <lve slot="2" name="1648" begin="0" end="62"/>
+ </localvariabletable>
+ </operation>
+ <operation name="1667">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1421"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="329"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="1471"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="1118"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="1015"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="745"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="1183"/>
+ <dup/>
+ <getasm/>
+ <pushf/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <load arg="563"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="1431"/>
+ <load arg="144"/>
+ <get arg="86"/>
+ <call arg="138"/>
+ <if arg="901"/>
+ <push arg="315"/>
+ <load arg="144"/>
+ <get arg="86"/>
+ <call arg="316"/>
+ <goto arg="1668"/>
+ <push arg="1198"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="1226"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1669"/>
+ <call arg="138"/>
+ <if arg="1547"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="1669"/>
+ <call arg="288"/>
+ <load arg="746"/>
+ <call arg="288"/>
+ <goto arg="1670"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="746"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="46"/>
+ <iterate/>
+ <store arg="564"/>
+ <getasm/>
+ <load arg="144"/>
+ <load arg="564"/>
+ <call arg="1671"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <push arg="1672"/>
+ <load arg="144"/>
+ <get arg="1549"/>
+ <call arg="1552"/>
+ <call arg="316"/>
+ <push arg="1553"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="1673" begin="30" end="30"/>
+ <lne id="1674" begin="27" end="31"/>
+ <lne id="1675" begin="25" end="33"/>
+ <lne id="1676" begin="36" end="36"/>
+ <lne id="1677" begin="34" end="38"/>
+ <lne id="1678" begin="41" end="41"/>
+ <lne id="1679" begin="39" end="43"/>
+ <lne id="1572" begin="46" end="46"/>
+ <lne id="1573" begin="46" end="47"/>
+ <lne id="1574" begin="44" end="49"/>
+ <lne id="1575" begin="52" end="52"/>
+ <lne id="1576" begin="52" end="53"/>
+ <lne id="1577" begin="52" end="54"/>
+ <lne id="1578" begin="55" end="55"/>
+ <lne id="1579" begin="55" end="56"/>
+ <lne id="1580" begin="55" end="57"/>
+ <lne id="1581" begin="59" end="59"/>
+ <lne id="1582" begin="60" end="60"/>
+ <lne id="1583" begin="60" end="61"/>
+ <lne id="1584" begin="59" end="62"/>
+ <lne id="1585" begin="64" end="64"/>
+ <lne id="1586" begin="55" end="64"/>
+ <lne id="1587" begin="52" end="65"/>
+ <lne id="1588" begin="50" end="67"/>
+ <lne id="1589" begin="70" end="70"/>
+ <lne id="1590" begin="68" end="72"/>
+ <lne id="1511" begin="24" end="73"/>
+ <lne id="1680" begin="77" end="77"/>
+ <lne id="1681" begin="77" end="78"/>
+ <lne id="1682" begin="77" end="79"/>
+ <lne id="1683" begin="84" end="84"/>
+ <lne id="1684" begin="84" end="85"/>
+ <lne id="1685" begin="87" end="87"/>
+ <lne id="1686" begin="81" end="88"/>
+ <lne id="1687" begin="93" end="93"/>
+ <lne id="1688" begin="90" end="94"/>
+ <lne id="1689" begin="77" end="94"/>
+ <lne id="1690" begin="75" end="96"/>
+ <lne id="1513" begin="74" end="97"/>
+ <lne id="1691" begin="101" end="101"/>
+ <lne id="1692" begin="101" end="102"/>
+ <lne id="1693" begin="99" end="104"/>
+ <lne id="1694" begin="110" end="110"/>
+ <lne id="1695" begin="110" end="111"/>
+ <lne id="1696" begin="114" end="114"/>
+ <lne id="1697" begin="115" end="115"/>
+ <lne id="1698" begin="116" end="116"/>
+ <lne id="1699" begin="114" end="117"/>
+ <lne id="1700" begin="107" end="119"/>
+ <lne id="1701" begin="105" end="121"/>
+ <lne id="1515" begin="98" end="122"/>
+ <lne id="1702" begin="126" end="126"/>
+ <lne id="1703" begin="124" end="128"/>
+ <lne id="1600" begin="131" end="131"/>
+ <lne id="1601" begin="131" end="132"/>
+ <lne id="1602" begin="129" end="134"/>
+ <lne id="1603" begin="137" end="137"/>
+ <lne id="1604" begin="135" end="139"/>
+ <lne id="1605" begin="142" end="142"/>
+ <lne id="1606" begin="142" end="143"/>
+ <lne id="1607" begin="140" end="145"/>
+ <lne id="1517" begin="123" end="146"/>
+ <lne id="1704" begin="150" end="150"/>
+ <lne id="1705" begin="151" end="151"/>
+ <lne id="1706" begin="151" end="152"/>
+ <lne id="1707" begin="151" end="153"/>
+ <lne id="1708" begin="150" end="154"/>
+ <lne id="1709" begin="155" end="155"/>
+ <lne id="1710" begin="150" end="156"/>
+ <lne id="1711" begin="148" end="158"/>
+ <lne id="1519" begin="147" end="159"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="8" name="148" begin="113" end="118"/>
+ <lve slot="3" name="1421" begin="7" end="159"/>
+ <lve slot="4" name="329" begin="11" end="159"/>
+ <lve slot="5" name="1471" begin="15" end="159"/>
+ <lve slot="6" name="1118" begin="19" end="159"/>
+ <lve slot="7" name="1015" begin="23" end="159"/>
+ <lve slot="2" name="623" begin="3" end="159"/>
+ <lve slot="0" name="132" begin="0" end="159"/>
+ <lve slot="1" name="652" begin="0" end="159"/>
+ </localvariabletable>
+ </operation>
+ <operation name="1712">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1421"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="329"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="1471"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="1118"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="1015"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="1479"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="1480"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="134"/>
+ <push arg="1481"/>
+ <call arg="636"/>
+ <store arg="313"/>
+ <load arg="134"/>
+ <push arg="1482"/>
+ <call arg="636"/>
+ <store arg="501"/>
+ <load arg="134"/>
+ <push arg="1483"/>
+ <call arg="636"/>
+ <store arg="899"/>
+ <load arg="134"/>
+ <push arg="1422"/>
+ <call arg="636"/>
+ <store arg="314"/>
+ <load arg="134"/>
+ <push arg="1484"/>
+ <call arg="636"/>
+ <store arg="900"/>
+ <load arg="134"/>
+ <push arg="1485"/>
+ <call arg="636"/>
+ <store arg="139"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="745"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="1183"/>
+ <dup/>
+ <getasm/>
+ <pushf/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <load arg="563"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="1431"/>
+ <load arg="144"/>
+ <get arg="86"/>
+ <call arg="138"/>
+ <if arg="1713"/>
+ <push arg="315"/>
+ <load arg="144"/>
+ <get arg="86"/>
+ <call arg="316"/>
+ <goto arg="1714"/>
+ <push arg="1198"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="1226"/>
+ <pop/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1715"/>
+ <call arg="145"/>
+ <set arg="1716"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="1431"/>
+ <push arg="1717"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <load arg="501"/>
+ <call arg="145"/>
+ <set arg="1226"/>
+ <dup/>
+ <getasm/>
+ <pusht/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1477"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="900"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="1545"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="314"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="1434"/>
+ <dup/>
+ <getasm/>
+ <load arg="899"/>
+ <call arg="145"/>
+ <set arg="1183"/>
+ <dup/>
+ <getasm/>
+ <load arg="139"/>
+ <call arg="145"/>
+ <set arg="1183"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="46"/>
+ <iterate/>
+ <store arg="1377"/>
+ <getasm/>
+ <load arg="144"/>
+ <load arg="1377"/>
+ <call arg="1671"/>
+ <call arg="288"/>
+ <enditerate/>
+ <store arg="1377"/>
+ <load arg="144"/>
+ <get arg="1650"/>
+ <call arg="138"/>
+ <if arg="1718"/>
+ <load arg="1377"/>
+ <load arg="313"/>
+ <call arg="1719"/>
+ <goto arg="1720"/>
+ <load arg="1377"/>
+ <load arg="313"/>
+ <call arg="1721"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <pop/>
+ <load arg="500"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="313"/>
+ <dup/>
+ <getasm/>
+ <load arg="564"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="500"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <pop/>
+ <load arg="501"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <load arg="144"/>
+ <get arg="1548"/>
+ <call arg="1552"/>
+ <load arg="144"/>
+ <get arg="1549"/>
+ <call arg="1550"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="899"/>
+ <dup/>
+ <getasm/>
+ <push arg="1551"/>
+ <load arg="144"/>
+ <get arg="1548"/>
+ <call arg="1552"/>
+ <call arg="316"/>
+ <push arg="1553"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="314"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="1422"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <push arg="1435"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="900"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="1472"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1554"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1555"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="139"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1556"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1669"/>
+ <call arg="138"/>
+ <if arg="1722"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="1669"/>
+ <call arg="288"/>
+ <load arg="746"/>
+ <call arg="288"/>
+ <goto arg="1723"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="746"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <push arg="1672"/>
+ <load arg="144"/>
+ <get arg="1549"/>
+ <call arg="1552"/>
+ <call arg="316"/>
+ <push arg="1553"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="1673" begin="62" end="62"/>
+ <lne id="1674" begin="59" end="63"/>
+ <lne id="1675" begin="57" end="65"/>
+ <lne id="1676" begin="68" end="68"/>
+ <lne id="1677" begin="66" end="70"/>
+ <lne id="1678" begin="73" end="73"/>
+ <lne id="1679" begin="71" end="75"/>
+ <lne id="1572" begin="78" end="78"/>
+ <lne id="1573" begin="78" end="79"/>
+ <lne id="1574" begin="76" end="81"/>
+ <lne id="1575" begin="84" end="84"/>
+ <lne id="1576" begin="84" end="85"/>
+ <lne id="1577" begin="84" end="86"/>
+ <lne id="1578" begin="87" end="87"/>
+ <lne id="1579" begin="87" end="88"/>
+ <lne id="1580" begin="87" end="89"/>
+ <lne id="1581" begin="91" end="91"/>
+ <lne id="1582" begin="92" end="92"/>
+ <lne id="1583" begin="92" end="93"/>
+ <lne id="1584" begin="91" end="94"/>
+ <lne id="1585" begin="96" end="96"/>
+ <lne id="1586" begin="87" end="96"/>
+ <lne id="1587" begin="84" end="97"/>
+ <lne id="1588" begin="82" end="99"/>
+ <lne id="1589" begin="102" end="102"/>
+ <lne id="1590" begin="100" end="104"/>
+ <lne id="1525" begin="56" end="105"/>
+ <lne id="1724" begin="109" end="109"/>
+ <lne id="1725" begin="109" end="110"/>
+ <lne id="1726" begin="107" end="112"/>
+ <lne id="1727" begin="115" end="115"/>
+ <lne id="1728" begin="115" end="116"/>
+ <lne id="1729" begin="113" end="118"/>
+ <lne id="1730" begin="121" end="121"/>
+ <lne id="1731" begin="121" end="122"/>
+ <lne id="1732" begin="121" end="123"/>
+ <lne id="1733" begin="124" end="124"/>
+ <lne id="1734" begin="121" end="125"/>
+ <lne id="1735" begin="119" end="127"/>
+ <lne id="1736" begin="130" end="130"/>
+ <lne id="1737" begin="128" end="132"/>
+ <lne id="1738" begin="135" end="135"/>
+ <lne id="1739" begin="133" end="137"/>
+ <lne id="1740" begin="140" end="140"/>
+ <lne id="1741" begin="140" end="141"/>
+ <lne id="1742" begin="138" end="143"/>
+ <lne id="1743" begin="149" end="149"/>
+ <lne id="1744" begin="146" end="150"/>
+ <lne id="1745" begin="144" end="152"/>
+ <lne id="1746" begin="158" end="158"/>
+ <lne id="1747" begin="155" end="159"/>
+ <lne id="1748" begin="153" end="161"/>
+ <lne id="1749" begin="164" end="164"/>
+ <lne id="1750" begin="162" end="166"/>
+ <lne id="1751" begin="169" end="169"/>
+ <lne id="1752" begin="167" end="171"/>
+ <lne id="1527" begin="106" end="172"/>
+ <lne id="1753" begin="179" end="179"/>
+ <lne id="1754" begin="179" end="180"/>
+ <lne id="1755" begin="183" end="183"/>
+ <lne id="1756" begin="184" end="184"/>
+ <lne id="1757" begin="185" end="185"/>
+ <lne id="1758" begin="183" end="186"/>
+ <lne id="1759" begin="176" end="188"/>
+ <lne id="1760" begin="190" end="190"/>
+ <lne id="1761" begin="190" end="191"/>
+ <lne id="1762" begin="190" end="192"/>
+ <lne id="1763" begin="194" end="194"/>
+ <lne id="1764" begin="195" end="195"/>
+ <lne id="1765" begin="194" end="196"/>
+ <lne id="1766" begin="198" end="198"/>
+ <lne id="1767" begin="199" end="199"/>
+ <lne id="1768" begin="198" end="200"/>
+ <lne id="1769" begin="190" end="200"/>
+ <lne id="1770" begin="176" end="200"/>
+ <lne id="1771" begin="174" end="202"/>
+ <lne id="1691" begin="205" end="205"/>
+ <lne id="1692" begin="205" end="206"/>
+ <lne id="1693" begin="203" end="208"/>
+ <lne id="1529" begin="173" end="209"/>
+ <lne id="1772" begin="213" end="213"/>
+ <lne id="1773" begin="211" end="215"/>
+ <lne id="1531" begin="210" end="216"/>
+ <lne id="1774" begin="220" end="220"/>
+ <lne id="1775" begin="218" end="222"/>
+ <lne id="1776" begin="225" end="225"/>
+ <lne id="1777" begin="223" end="227"/>
+ <lne id="1533" begin="217" end="228"/>
+ <lne id="1778" begin="232" end="232"/>
+ <lne id="1779" begin="232" end="233"/>
+ <lne id="1780" begin="230" end="235"/>
+ <lne id="1781" begin="238" end="238"/>
+ <lne id="1782" begin="236" end="240"/>
+ <lne id="1783" begin="243" end="243"/>
+ <lne id="1784" begin="244" end="244"/>
+ <lne id="1785" begin="244" end="245"/>
+ <lne id="1786" begin="246" end="246"/>
+ <lne id="1787" begin="246" end="247"/>
+ <lne id="1788" begin="246" end="248"/>
+ <lne id="1789" begin="249" end="249"/>
+ <lne id="1790" begin="249" end="250"/>
+ <lne id="1791" begin="243" end="251"/>
+ <lne id="1792" begin="241" end="253"/>
+ <lne id="1793" begin="256" end="256"/>
+ <lne id="1794" begin="256" end="257"/>
+ <lne id="1795" begin="254" end="259"/>
+ <lne id="1535" begin="229" end="260"/>
+ <lne id="1796" begin="264" end="264"/>
+ <lne id="1797" begin="265" end="265"/>
+ <lne id="1798" begin="265" end="266"/>
+ <lne id="1799" begin="265" end="267"/>
+ <lne id="1800" begin="264" end="268"/>
+ <lne id="1801" begin="269" end="269"/>
+ <lne id="1802" begin="264" end="270"/>
+ <lne id="1803" begin="262" end="272"/>
+ <lne id="1537" begin="261" end="273"/>
+ <lne id="1804" begin="277" end="277"/>
+ <lne id="1805" begin="277" end="278"/>
+ <lne id="1806" begin="275" end="280"/>
+ <lne id="1807" begin="283" end="283"/>
+ <lne id="1808" begin="281" end="285"/>
+ <lne id="1809" begin="288" end="288"/>
+ <lne id="1810" begin="286" end="290"/>
+ <lne id="1811" begin="293" end="293"/>
+ <lne id="1812" begin="291" end="295"/>
+ <lne id="1539" begin="274" end="296"/>
+ <lne id="1813" begin="300" end="300"/>
+ <lne id="1814" begin="300" end="301"/>
+ <lne id="1815" begin="298" end="303"/>
+ <lne id="1816" begin="306" end="306"/>
+ <lne id="1817" begin="304" end="308"/>
+ <lne id="1818" begin="311" end="311"/>
+ <lne id="1819" begin="311" end="312"/>
+ <lne id="1820" begin="309" end="314"/>
+ <lne id="1821" begin="317" end="317"/>
+ <lne id="1822" begin="317" end="318"/>
+ <lne id="1823" begin="315" end="320"/>
+ <lne id="1541" begin="297" end="321"/>
+ <lne id="1824" begin="325" end="325"/>
+ <lne id="1825" begin="325" end="326"/>
+ <lne id="1826" begin="323" end="328"/>
+ <lne id="1543" begin="322" end="329"/>
+ <lne id="1680" begin="333" end="333"/>
+ <lne id="1681" begin="333" end="334"/>
+ <lne id="1682" begin="333" end="335"/>
+ <lne id="1683" begin="340" end="340"/>
+ <lne id="1684" begin="340" end="341"/>
+ <lne id="1685" begin="343" end="343"/>
+ <lne id="1686" begin="337" end="344"/>
+ <lne id="1687" begin="349" end="349"/>
+ <lne id="1688" begin="346" end="350"/>
+ <lne id="1689" begin="333" end="350"/>
+ <lne id="1690" begin="331" end="352"/>
+ <lne id="1513" begin="330" end="353"/>
+ <lne id="1702" begin="357" end="357"/>
+ <lne id="1703" begin="355" end="359"/>
+ <lne id="1600" begin="362" end="362"/>
+ <lne id="1601" begin="362" end="363"/>
+ <lne id="1602" begin="360" end="365"/>
+ <lne id="1603" begin="368" end="368"/>
+ <lne id="1604" begin="366" end="370"/>
+ <lne id="1605" begin="373" end="373"/>
+ <lne id="1606" begin="373" end="374"/>
+ <lne id="1607" begin="371" end="376"/>
+ <lne id="1517" begin="354" end="377"/>
+ <lne id="1704" begin="381" end="381"/>
+ <lne id="1705" begin="382" end="382"/>
+ <lne id="1706" begin="382" end="383"/>
+ <lne id="1707" begin="382" end="384"/>
+ <lne id="1708" begin="381" end="385"/>
+ <lne id="1709" begin="386" end="386"/>
+ <lne id="1710" begin="381" end="387"/>
+ <lne id="1711" begin="379" end="389"/>
+ <lne id="1519" begin="378" end="390"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="16" name="148" begin="182" end="187"/>
+ <lve slot="16" name="1827" begin="189" end="200"/>
+ <lve slot="3" name="1421" begin="7" end="390"/>
+ <lve slot="4" name="329" begin="11" end="390"/>
+ <lve slot="5" name="1471" begin="15" end="390"/>
+ <lve slot="6" name="1118" begin="19" end="390"/>
+ <lve slot="7" name="1015" begin="23" end="390"/>
+ <lve slot="8" name="1479" begin="27" end="390"/>
+ <lve slot="9" name="1480" begin="31" end="390"/>
+ <lve slot="10" name="1481" begin="35" end="390"/>
+ <lve slot="11" name="1482" begin="39" end="390"/>
+ <lve slot="12" name="1483" begin="43" end="390"/>
+ <lve slot="13" name="1422" begin="47" end="390"/>
+ <lve slot="14" name="1484" begin="51" end="390"/>
+ <lve slot="15" name="1485" begin="55" end="390"/>
+ <lve slot="2" name="623" begin="3" end="390"/>
+ <lve slot="0" name="132" begin="0" end="390"/>
+ <lve slot="1" name="652" begin="0" end="390"/>
+ </localvariabletable>
+ </operation>
+ <operation name="1828">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="552"/>
+ <load arg="134"/>
+ <get arg="1475"/>
+ <call arg="567"/>
+ <call arg="287"/>
+ <if arg="1829"/>
+ <load arg="134"/>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1830"/>
+ <load arg="134"/>
+ <get arg="1831"/>
+ <call arg="138"/>
+ <if arg="142"/>
+ <load arg="134"/>
+ <get arg="1831"/>
+ <get arg="1832"/>
+ <call arg="333"/>
+ <goto arg="506"/>
+ <pusht/>
+ <call arg="287"/>
+ <if arg="1830"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="231"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="623"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="36"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="36"/>
+ <iterate/>
+ <store arg="144"/>
+ <load arg="144"/>
+ <push arg="53"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="333"/>
+ <call arg="287"/>
+ <if arg="1833"/>
+ <load arg="144"/>
+ <call arg="288"/>
+ <enditerate/>
+ <dup/>
+ <store arg="144"/>
+ <call arg="1115"/>
+ <dup/>
+ <push arg="1834"/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <iterate/>
+ <store arg="284"/>
+ <load arg="284"/>
+ <get arg="1835"/>
+ <call arg="333"/>
+ <call arg="287"/>
+ <if arg="1836"/>
+ <load arg="284"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="569"/>
+ <dup/>
+ <store arg="284"/>
+ <call arg="1115"/>
+ <dup/>
+ <push arg="1837"/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <iterate/>
+ <store arg="637"/>
+ <load arg="637"/>
+ <get arg="1835"/>
+ <call arg="287"/>
+ <if arg="1838"/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="569"/>
+ <dup/>
+ <store arg="637"/>
+ <call arg="1115"/>
+ <dup/>
+ <push arg="1421"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1839"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1840"/>
+ <push arg="1122"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1841"/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1842"/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1843"/>
+ <push arg="1122"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="329"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1015"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1649"/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1119"/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1844"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="637"/>
+ <iterate/>
+ <pop/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1845"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="637"/>
+ <iterate/>
+ <pop/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1846"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1847"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1848"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1849"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="284"/>
+ <iterate/>
+ <pop/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1850"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="284"/>
+ <iterate/>
+ <pop/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <goto arg="1829"/>
+ <load arg="134"/>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1829"/>
+ <load arg="134"/>
+ <get arg="552"/>
+ <load arg="134"/>
+ <get arg="1475"/>
+ <call arg="567"/>
+ <call arg="287"/>
+ <if arg="1829"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="229"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="623"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="36"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="36"/>
+ <iterate/>
+ <store arg="144"/>
+ <load arg="144"/>
+ <push arg="53"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="333"/>
+ <call arg="287"/>
+ <if arg="901"/>
+ <load arg="144"/>
+ <call arg="288"/>
+ <enditerate/>
+ <dup/>
+ <store arg="144"/>
+ <call arg="1115"/>
+ <dup/>
+ <push arg="1834"/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <iterate/>
+ <store arg="284"/>
+ <load arg="284"/>
+ <get arg="1835"/>
+ <call arg="333"/>
+ <call arg="287"/>
+ <if arg="1851"/>
+ <load arg="284"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="569"/>
+ <dup/>
+ <store arg="284"/>
+ <call arg="1115"/>
+ <dup/>
+ <push arg="1837"/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <iterate/>
+ <store arg="637"/>
+ <load arg="637"/>
+ <get arg="1835"/>
+ <call arg="287"/>
+ <if arg="1111"/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="569"/>
+ <dup/>
+ <store arg="637"/>
+ <call arg="1115"/>
+ <dup/>
+ <push arg="1421"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="329"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1015"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1649"/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1119"/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1844"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="637"/>
+ <iterate/>
+ <pop/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1845"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="637"/>
+ <iterate/>
+ <pop/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1846"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1847"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1848"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1849"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="284"/>
+ <iterate/>
+ <pop/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1850"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="284"/>
+ <iterate/>
+ <pop/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <goto arg="1829"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="1852" begin="7" end="7"/>
+ <lne id="1853" begin="7" end="8"/>
+ <lne id="1854" begin="9" end="9"/>
+ <lne id="1855" begin="9" end="10"/>
+ <lne id="1856" begin="7" end="11"/>
+ <lne id="1857" begin="21" end="21"/>
+ <lne id="1858" begin="21" end="22"/>
+ <lne id="1859" begin="21" end="23"/>
+ <lne id="1860" begin="25" end="25"/>
+ <lne id="1861" begin="25" end="26"/>
+ <lne id="1862" begin="25" end="27"/>
+ <lne id="1863" begin="25" end="28"/>
+ <lne id="1864" begin="30" end="30"/>
+ <lne id="1865" begin="21" end="30"/>
+ <lne id="1866" begin="50" end="50"/>
+ <lne id="1867" begin="50" end="51"/>
+ <lne id="1868" begin="54" end="54"/>
+ <lne id="1869" begin="55" end="57"/>
+ <lne id="1870" begin="54" end="58"/>
+ <lne id="1871" begin="54" end="59"/>
+ <lne id="1872" begin="47" end="64"/>
+ <lne id="1873" begin="70" end="70"/>
+ <lne id="1874" begin="74" end="74"/>
+ <lne id="1875" begin="77" end="77"/>
+ <lne id="1876" begin="77" end="78"/>
+ <lne id="1877" begin="77" end="79"/>
+ <lne id="1878" begin="71" end="84"/>
+ <lne id="1879" begin="70" end="85"/>
+ <lne id="1880" begin="91" end="91"/>
+ <lne id="1881" begin="95" end="95"/>
+ <lne id="1882" begin="98" end="98"/>
+ <lne id="1883" begin="98" end="99"/>
+ <lne id="1884" begin="92" end="104"/>
+ <lne id="1885" begin="91" end="105"/>
+ <lne id="1886" begin="111" end="113"/>
+ <lne id="1887" begin="109" end="114"/>
+ <lne id="1888" begin="117" end="119"/>
+ <lne id="1889" begin="115" end="120"/>
+ <lne id="1890" begin="123" end="125"/>
+ <lne id="1891" begin="121" end="126"/>
+ <lne id="1892" begin="129" end="131"/>
+ <lne id="1893" begin="127" end="132"/>
+ <lne id="1894" begin="135" end="137"/>
+ <lne id="1895" begin="133" end="138"/>
+ <lne id="1896" begin="141" end="143"/>
+ <lne id="1897" begin="139" end="144"/>
+ <lne id="1898" begin="147" end="149"/>
+ <lne id="1899" begin="145" end="150"/>
+ <lne id="1900" begin="153" end="155"/>
+ <lne id="1901" begin="151" end="156"/>
+ <lne id="1902" begin="159" end="161"/>
+ <lne id="1903" begin="157" end="162"/>
+ <lne id="1904" begin="165" end="167"/>
+ <lne id="1905" begin="163" end="168"/>
+ <lne id="1906" begin="174" end="174"/>
+ <lne id="1907" begin="169" end="182"/>
+ <lne id="1908" begin="188" end="188"/>
+ <lne id="1909" begin="183" end="196"/>
+ <lne id="1910" begin="199" end="201"/>
+ <lne id="1911" begin="197" end="202"/>
+ <lne id="1912" begin="205" end="207"/>
+ <lne id="1913" begin="203" end="208"/>
+ <lne id="1914" begin="211" end="213"/>
+ <lne id="1915" begin="209" end="214"/>
+ <lne id="1916" begin="220" end="220"/>
+ <lne id="1917" begin="215" end="228"/>
+ <lne id="1918" begin="234" end="234"/>
+ <lne id="1919" begin="229" end="242"/>
+ <lne id="1852" begin="253" end="253"/>
+ <lne id="1853" begin="253" end="254"/>
+ <lne id="1854" begin="255" end="255"/>
+ <lne id="1855" begin="255" end="256"/>
+ <lne id="1856" begin="253" end="257"/>
+ <lne id="1866" begin="277" end="277"/>
+ <lne id="1867" begin="277" end="278"/>
+ <lne id="1868" begin="281" end="281"/>
+ <lne id="1869" begin="282" end="284"/>
+ <lne id="1870" begin="281" end="285"/>
+ <lne id="1871" begin="281" end="286"/>
+ <lne id="1872" begin="274" end="291"/>
+ <lne id="1873" begin="297" end="297"/>
+ <lne id="1874" begin="301" end="301"/>
+ <lne id="1875" begin="304" end="304"/>
+ <lne id="1876" begin="304" end="305"/>
+ <lne id="1877" begin="304" end="306"/>
+ <lne id="1878" begin="298" end="311"/>
+ <lne id="1879" begin="297" end="312"/>
+ <lne id="1880" begin="318" end="318"/>
+ <lne id="1881" begin="322" end="322"/>
+ <lne id="1882" begin="325" end="325"/>
+ <lne id="1883" begin="325" end="326"/>
+ <lne id="1884" begin="319" end="331"/>
+ <lne id="1885" begin="318" end="332"/>
+ <lne id="1920" begin="338" end="340"/>
+ <lne id="1921" begin="336" end="341"/>
+ <lne id="1898" begin="344" end="346"/>
+ <lne id="1899" begin="342" end="347"/>
+ <lne id="1900" begin="350" end="352"/>
+ <lne id="1901" begin="348" end="353"/>
+ <lne id="1902" begin="356" end="358"/>
+ <lne id="1903" begin="354" end="359"/>
+ <lne id="1904" begin="362" end="364"/>
+ <lne id="1905" begin="360" end="365"/>
+ <lne id="1906" begin="371" end="371"/>
+ <lne id="1907" begin="366" end="379"/>
+ <lne id="1908" begin="385" end="385"/>
+ <lne id="1909" begin="380" end="393"/>
+ <lne id="1910" begin="396" end="398"/>
+ <lne id="1911" begin="394" end="399"/>
+ <lne id="1912" begin="402" end="404"/>
+ <lne id="1913" begin="400" end="405"/>
+ <lne id="1914" begin="408" end="410"/>
+ <lne id="1915" begin="406" end="411"/>
+ <lne id="1916" begin="417" end="417"/>
+ <lne id="1917" begin="412" end="425"/>
+ <lne id="1918" begin="431" end="431"/>
+ <lne id="1919" begin="426" end="439"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="148" begin="53" end="63"/>
+ <lve slot="3" name="148" begin="76" end="83"/>
+ <lve slot="4" name="148" begin="97" end="103"/>
+ <lve slot="2" name="36" begin="66" end="242"/>
+ <lve slot="3" name="1834" begin="87" end="242"/>
+ <lve slot="4" name="1837" begin="107" end="242"/>
+ <lve slot="2" name="148" begin="280" end="290"/>
+ <lve slot="3" name="148" begin="303" end="310"/>
+ <lve slot="4" name="148" begin="324" end="330"/>
+ <lve slot="2" name="36" begin="293" end="439"/>
+ <lve slot="3" name="1834" begin="314" end="439"/>
+ <lve slot="4" name="1837" begin="334" end="439"/>
+ <lve slot="1" name="623" begin="6" end="442"/>
+ <lve slot="0" name="132" begin="0" end="443"/>
+ </localvariabletable>
+ </operation>
+ <operation name="1922">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1421"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="329"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="1015"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="1649"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="1119"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="1844"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="1845"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="134"/>
+ <push arg="1846"/>
+ <call arg="636"/>
+ <store arg="313"/>
+ <load arg="134"/>
+ <push arg="1847"/>
+ <call arg="636"/>
+ <store arg="501"/>
+ <load arg="134"/>
+ <push arg="1848"/>
+ <call arg="636"/>
+ <store arg="899"/>
+ <load arg="134"/>
+ <push arg="1849"/>
+ <call arg="636"/>
+ <store arg="314"/>
+ <load arg="134"/>
+ <push arg="1850"/>
+ <call arg="636"/>
+ <store arg="900"/>
+ <load arg="134"/>
+ <push arg="36"/>
+ <call arg="1180"/>
+ <store arg="139"/>
+ <load arg="134"/>
+ <push arg="1834"/>
+ <call arg="1180"/>
+ <store arg="1377"/>
+ <load arg="134"/>
+ <push arg="1837"/>
+ <call arg="1180"/>
+ <store arg="141"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="1431"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="1226"/>
+ <dup/>
+ <getasm/>
+ <pushf/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <load arg="745"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <load arg="746"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <call arg="303"/>
+ <store arg="136"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="48"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="283"/>
+ <iterate/>
+ <store arg="527"/>
+ <load arg="527"/>
+ <load arg="144"/>
+ <get arg="1923"/>
+ <call arg="1924"/>
+ <call arg="287"/>
+ <if arg="1925"/>
+ <load arg="527"/>
+ <call arg="288"/>
+ <enditerate/>
+ <iterate/>
+ <store arg="527"/>
+ <load arg="136"/>
+ <call arg="138"/>
+ <if arg="1926"/>
+ <load arg="527"/>
+ <get arg="149"/>
+ <load arg="136"/>
+ <get arg="149"/>
+ <call arg="1129"/>
+ <if arg="1927"/>
+ <load arg="136"/>
+ <goto arg="1928"/>
+ <load arg="527"/>
+ <goto arg="1929"/>
+ <load arg="527"/>
+ <store arg="136"/>
+ <enditerate/>
+ <load arg="136"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="563"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <pop/>
+ <pushi arg="134"/>
+ <store arg="136"/>
+ <load arg="141"/>
+ <call arg="1375"/>
+ <store arg="527"/>
+ <load arg="564"/>
+ <iterate/>
+ <load arg="527"/>
+ <load arg="136"/>
+ <call arg="1376"/>
+ <store arg="1930"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1931"/>
+ <load arg="136"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="136"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="136"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="136"/>
+ <load arg="141"/>
+ <call arg="1375"/>
+ <store arg="527"/>
+ <load arg="500"/>
+ <iterate/>
+ <load arg="527"/>
+ <load arg="136"/>
+ <call arg="1376"/>
+ <store arg="1930"/>
+ <dup/>
+ <getasm/>
+ <load arg="1930"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1932"/>
+ <load arg="136"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="1930"/>
+ <get arg="1650"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1830"/>
+ <load arg="136"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1651"/>
+ <dup/>
+ <getasm/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1933"/>
+ <load arg="136"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1384"/>
+ <dup/>
+ <getasm/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1934"/>
+ <load arg="136"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <pop/>
+ <load arg="136"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="136"/>
+ <enditerate/>
+ <load arg="313"/>
+ <dup/>
+ <getasm/>
+ <push arg="1935"/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="1431"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1715"/>
+ <call arg="145"/>
+ <set arg="1716"/>
+ <dup/>
+ <getasm/>
+ <pushf/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <load arg="501"/>
+ <call arg="145"/>
+ <set arg="1226"/>
+ <dup/>
+ <getasm/>
+ <load arg="899"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="501"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="899"/>
+ <pop/>
+ <pushi arg="134"/>
+ <store arg="136"/>
+ <load arg="1377"/>
+ <call arg="1375"/>
+ <store arg="527"/>
+ <load arg="314"/>
+ <iterate/>
+ <load arg="527"/>
+ <load arg="136"/>
+ <call arg="1376"/>
+ <store arg="1930"/>
+ <dup/>
+ <getasm/>
+ <load arg="501"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1936"/>
+ <load arg="136"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="136"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="136"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="136"/>
+ <load arg="1377"/>
+ <call arg="1375"/>
+ <store arg="527"/>
+ <load arg="900"/>
+ <iterate/>
+ <load arg="527"/>
+ <load arg="136"/>
+ <call arg="1376"/>
+ <store arg="1930"/>
+ <dup/>
+ <getasm/>
+ <load arg="1930"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1937"/>
+ <load arg="136"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="1930"/>
+ <get arg="1650"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1938"/>
+ <load arg="136"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1651"/>
+ <dup/>
+ <getasm/>
+ <load arg="899"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1939"/>
+ <load arg="136"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1384"/>
+ <dup/>
+ <getasm/>
+ <load arg="314"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1940"/>
+ <load arg="136"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <pop/>
+ <load arg="136"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="136"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="1941" begin="67" end="67"/>
+ <lne id="1942" begin="67" end="68"/>
+ <lne id="1943" begin="67" end="69"/>
+ <lne id="1944" begin="65" end="71"/>
+ <lne id="1945" begin="74" end="74"/>
+ <lne id="1946" begin="72" end="76"/>
+ <lne id="1947" begin="79" end="79"/>
+ <lne id="1948" begin="77" end="81"/>
+ <lne id="1949" begin="84" end="84"/>
+ <lne id="1950" begin="82" end="86"/>
+ <lne id="1921" begin="64" end="87"/>
+ <lne id="1951" begin="91" end="91"/>
+ <lne id="1952" begin="91" end="92"/>
+ <lne id="1953" begin="89" end="94"/>
+ <lne id="1954" begin="97" end="97"/>
+ <lne id="1955" begin="95" end="99"/>
+ <lne id="1956" begin="102" end="102"/>
+ <lne id="1957" begin="100" end="104"/>
+ <lne id="1958" begin="107" end="107"/>
+ <lne id="1959" begin="107" end="108"/>
+ <lne id="1960" begin="105" end="110"/>
+ <lne id="1899" begin="88" end="111"/>
+ <lne id="1961" begin="115" end="115"/>
+ <lne id="1962" begin="113" end="117"/>
+ <lne id="1901" begin="112" end="118"/>
+ <lne id="1963" begin="122" end="122"/>
+ <lne id="1964" begin="120" end="124"/>
+ <lne id="1903" begin="119" end="125"/>
+ <lne id="1965" begin="129" end="131"/>
+ <lne id="1966" begin="129" end="132"/>
+ <lne id="1967" begin="137" end="139"/>
+ <lne id="1968" begin="140" end="140"/>
+ <lne id="1969" begin="137" end="141"/>
+ <lne id="1970" begin="144" end="144"/>
+ <lne id="1971" begin="145" end="145"/>
+ <lne id="1972" begin="145" end="146"/>
+ <lne id="1973" begin="144" end="147"/>
+ <lne id="1974" begin="134" end="152"/>
+ <lne id="1975" begin="155" end="155"/>
+ <lne id="1976" begin="155" end="156"/>
+ <lne id="1977" begin="158" end="158"/>
+ <lne id="1978" begin="158" end="159"/>
+ <lne id="1979" begin="160" end="160"/>
+ <lne id="1980" begin="160" end="161"/>
+ <lne id="1981" begin="158" end="162"/>
+ <lne id="1982" begin="164" end="164"/>
+ <lne id="1983" begin="166" end="166"/>
+ <lne id="1984" begin="158" end="166"/>
+ <lne id="1985" begin="168" end="168"/>
+ <lne id="1986" begin="155" end="168"/>
+ <lne id="1987" begin="129" end="171"/>
+ <lne id="1988" begin="127" end="173"/>
+ <lne id="1989" begin="176" end="176"/>
+ <lne id="1990" begin="174" end="178"/>
+ <lne id="1905" begin="126" end="179"/>
+ <lne id="1906" begin="182" end="182"/>
+ <lne id="1991" begin="193" end="193"/>
+ <lne id="1992" begin="191" end="203"/>
+ <lne id="1907" begin="180" end="209"/>
+ <lne id="1908" begin="212" end="212"/>
+ <lne id="1993" begin="223" end="223"/>
+ <lne id="1994" begin="221" end="233"/>
+ <lne id="1995" begin="236" end="236"/>
+ <lne id="1996" begin="236" end="237"/>
+ <lne id="1997" begin="234" end="247"/>
+ <lne id="1998" begin="250" end="250"/>
+ <lne id="1999" begin="248" end="260"/>
+ <lne id="2000" begin="263" end="263"/>
+ <lne id="2001" begin="261" end="273"/>
+ <lne id="1909" begin="210" end="279"/>
+ <lne id="2002" begin="283" end="283"/>
+ <lne id="2003" begin="284" end="284"/>
+ <lne id="2004" begin="284" end="285"/>
+ <lne id="2005" begin="284" end="286"/>
+ <lne id="2006" begin="283" end="287"/>
+ <lne id="2007" begin="281" end="289"/>
+ <lne id="2008" begin="292" end="292"/>
+ <lne id="2009" begin="292" end="293"/>
+ <lne id="2010" begin="290" end="295"/>
+ <lne id="2011" begin="298" end="298"/>
+ <lne id="2012" begin="296" end="300"/>
+ <lne id="2013" begin="303" end="303"/>
+ <lne id="2014" begin="301" end="305"/>
+ <lne id="2015" begin="308" end="308"/>
+ <lne id="2016" begin="306" end="310"/>
+ <lne id="1911" begin="280" end="311"/>
+ <lne id="2017" begin="315" end="315"/>
+ <lne id="2018" begin="315" end="316"/>
+ <lne id="2019" begin="313" end="318"/>
+ <lne id="2020" begin="321" end="321"/>
+ <lne id="2021" begin="319" end="323"/>
+ <lne id="2022" begin="326" end="326"/>
+ <lne id="2023" begin="324" end="328"/>
+ <lne id="2024" begin="331" end="331"/>
+ <lne id="2025" begin="331" end="332"/>
+ <lne id="2026" begin="329" end="334"/>
+ <lne id="1913" begin="312" end="335"/>
+ <lne id="1915" begin="336" end="337"/>
+ <lne id="1916" begin="340" end="340"/>
+ <lne id="2027" begin="351" end="351"/>
+ <lne id="2028" begin="349" end="361"/>
+ <lne id="1917" begin="338" end="367"/>
+ <lne id="1918" begin="370" end="370"/>
+ <lne id="2029" begin="381" end="381"/>
+ <lne id="2030" begin="379" end="391"/>
+ <lne id="2031" begin="394" end="394"/>
+ <lne id="2032" begin="394" end="395"/>
+ <lne id="2033" begin="392" end="405"/>
+ <lne id="2034" begin="408" end="408"/>
+ <lne id="2035" begin="406" end="418"/>
+ <lne id="2036" begin="421" end="421"/>
+ <lne id="2037" begin="419" end="431"/>
+ <lne id="1919" begin="368" end="437"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="19" name="148" begin="143" end="151"/>
+ <lve slot="19" name="148" begin="154" end="169"/>
+ <lve slot="18" name="2038" begin="133" end="171"/>
+ <lve slot="20" name="2039" begin="190" end="203"/>
+ <lve slot="19" name="1418" begin="184" end="209"/>
+ <lve slot="18" name="1419" begin="181" end="209"/>
+ <lve slot="20" name="2039" begin="220" end="273"/>
+ <lve slot="19" name="1418" begin="214" end="279"/>
+ <lve slot="18" name="1419" begin="211" end="279"/>
+ <lve slot="20" name="2039" begin="348" end="361"/>
+ <lve slot="19" name="1418" begin="342" end="367"/>
+ <lve slot="18" name="1419" begin="339" end="367"/>
+ <lve slot="20" name="2039" begin="378" end="431"/>
+ <lve slot="19" name="1418" begin="372" end="437"/>
+ <lve slot="18" name="1419" begin="369" end="437"/>
+ <lve slot="15" name="36" begin="55" end="437"/>
+ <lve slot="16" name="1834" begin="59" end="437"/>
+ <lve slot="17" name="1837" begin="63" end="437"/>
+ <lve slot="3" name="1421" begin="7" end="437"/>
+ <lve slot="4" name="329" begin="11" end="437"/>
+ <lve slot="5" name="1015" begin="15" end="437"/>
+ <lve slot="6" name="1649" begin="19" end="437"/>
+ <lve slot="7" name="1119" begin="23" end="437"/>
+ <lve slot="8" name="1844" begin="27" end="437"/>
+ <lve slot="9" name="1845" begin="31" end="437"/>
+ <lve slot="10" name="1846" begin="35" end="437"/>
+ <lve slot="11" name="1847" begin="39" end="437"/>
+ <lve slot="12" name="1848" begin="43" end="437"/>
+ <lve slot="13" name="1849" begin="47" end="437"/>
+ <lve slot="14" name="1850" begin="51" end="437"/>
+ <lve slot="2" name="623" begin="3" end="437"/>
+ <lve slot="0" name="132" begin="0" end="437"/>
+ <lve slot="1" name="652" begin="0" end="437"/>
+ </localvariabletable>
+ </operation>
+ <operation name="2040">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1421"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="329"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="1015"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="1649"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="1119"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="1844"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="1845"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="134"/>
+ <push arg="1846"/>
+ <call arg="636"/>
+ <store arg="313"/>
+ <load arg="134"/>
+ <push arg="1847"/>
+ <call arg="636"/>
+ <store arg="501"/>
+ <load arg="134"/>
+ <push arg="1848"/>
+ <call arg="636"/>
+ <store arg="899"/>
+ <load arg="134"/>
+ <push arg="1849"/>
+ <call arg="636"/>
+ <store arg="314"/>
+ <load arg="134"/>
+ <push arg="1850"/>
+ <call arg="636"/>
+ <store arg="900"/>
+ <load arg="134"/>
+ <push arg="1839"/>
+ <call arg="636"/>
+ <store arg="139"/>
+ <load arg="134"/>
+ <push arg="1840"/>
+ <call arg="636"/>
+ <store arg="1377"/>
+ <load arg="134"/>
+ <push arg="1841"/>
+ <call arg="636"/>
+ <store arg="141"/>
+ <load arg="134"/>
+ <push arg="1842"/>
+ <call arg="636"/>
+ <store arg="136"/>
+ <load arg="134"/>
+ <push arg="1843"/>
+ <call arg="636"/>
+ <store arg="527"/>
+ <load arg="134"/>
+ <push arg="36"/>
+ <call arg="1180"/>
+ <store arg="1930"/>
+ <load arg="134"/>
+ <push arg="1834"/>
+ <call arg="1180"/>
+ <store arg="2041"/>
+ <load arg="134"/>
+ <push arg="1837"/>
+ <call arg="1180"/>
+ <store arg="2042"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="1431"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="1226"/>
+ <dup/>
+ <getasm/>
+ <pushf/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <load arg="745"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="139"/>
+ <dup/>
+ <getasm/>
+ <load arg="899"/>
+ <call arg="145"/>
+ <set arg="1384"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="1377"/>
+ <call arg="288"/>
+ <load arg="136"/>
+ <call arg="288"/>
+ <load arg="527"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="1377"/>
+ <dup/>
+ <getasm/>
+ <push arg="2043"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <pop/>
+ <load arg="141"/>
+ <dup/>
+ <getasm/>
+ <load arg="501"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="136"/>
+ <dup/>
+ <getasm/>
+ <load arg="284"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="141"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <pop/>
+ <load arg="527"/>
+ <dup/>
+ <getasm/>
+ <push arg="2044"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <load arg="746"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <call arg="303"/>
+ <store arg="2045"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="48"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="283"/>
+ <iterate/>
+ <store arg="2046"/>
+ <load arg="2046"/>
+ <load arg="144"/>
+ <get arg="1923"/>
+ <call arg="1924"/>
+ <call arg="287"/>
+ <if arg="2047"/>
+ <load arg="2046"/>
+ <call arg="288"/>
+ <enditerate/>
+ <iterate/>
+ <store arg="2046"/>
+ <load arg="2045"/>
+ <call arg="138"/>
+ <if arg="2048"/>
+ <load arg="2046"/>
+ <get arg="149"/>
+ <load arg="2045"/>
+ <get arg="149"/>
+ <call arg="1129"/>
+ <if arg="2049"/>
+ <load arg="2045"/>
+ <goto arg="2050"/>
+ <load arg="2046"/>
+ <goto arg="2051"/>
+ <load arg="2046"/>
+ <store arg="2045"/>
+ <enditerate/>
+ <load arg="2045"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="563"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <pop/>
+ <pushi arg="134"/>
+ <store arg="2045"/>
+ <load arg="2042"/>
+ <call arg="1375"/>
+ <store arg="2046"/>
+ <load arg="564"/>
+ <iterate/>
+ <load arg="2046"/>
+ <load arg="2045"/>
+ <call arg="1376"/>
+ <store arg="2052"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2053"/>
+ <load arg="2045"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="2045"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="2045"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="2045"/>
+ <load arg="2042"/>
+ <call arg="1375"/>
+ <store arg="2046"/>
+ <load arg="500"/>
+ <iterate/>
+ <load arg="2046"/>
+ <load arg="2045"/>
+ <call arg="1376"/>
+ <store arg="2052"/>
+ <dup/>
+ <getasm/>
+ <load arg="2052"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2054"/>
+ <load arg="2045"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="2052"/>
+ <get arg="1650"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2055"/>
+ <load arg="2045"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1651"/>
+ <dup/>
+ <getasm/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2056"/>
+ <load arg="2045"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1384"/>
+ <dup/>
+ <getasm/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2057"/>
+ <load arg="2045"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <pop/>
+ <load arg="2045"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="2045"/>
+ <enditerate/>
+ <load arg="313"/>
+ <dup/>
+ <getasm/>
+ <push arg="1935"/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="1431"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1715"/>
+ <call arg="145"/>
+ <set arg="1716"/>
+ <dup/>
+ <getasm/>
+ <pushf/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <load arg="501"/>
+ <call arg="145"/>
+ <set arg="1226"/>
+ <dup/>
+ <getasm/>
+ <load arg="899"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="501"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="899"/>
+ <pop/>
+ <pushi arg="134"/>
+ <store arg="2045"/>
+ <load arg="2041"/>
+ <call arg="1375"/>
+ <store arg="2046"/>
+ <load arg="314"/>
+ <iterate/>
+ <load arg="2046"/>
+ <load arg="2045"/>
+ <call arg="1376"/>
+ <store arg="2052"/>
+ <dup/>
+ <getasm/>
+ <load arg="501"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2058"/>
+ <load arg="2045"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="2045"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="2045"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="2045"/>
+ <load arg="2041"/>
+ <call arg="1375"/>
+ <store arg="2046"/>
+ <load arg="900"/>
+ <iterate/>
+ <load arg="2046"/>
+ <load arg="2045"/>
+ <call arg="1376"/>
+ <store arg="2052"/>
+ <dup/>
+ <getasm/>
+ <load arg="2052"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2059"/>
+ <load arg="2045"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="2052"/>
+ <get arg="1650"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2060"/>
+ <load arg="2045"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1651"/>
+ <dup/>
+ <getasm/>
+ <load arg="899"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2061"/>
+ <load arg="2045"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1384"/>
+ <dup/>
+ <getasm/>
+ <load arg="314"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2062"/>
+ <load arg="2045"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <pop/>
+ <load arg="2045"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="2045"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="1941" begin="87" end="87"/>
+ <lne id="1942" begin="87" end="88"/>
+ <lne id="1943" begin="87" end="89"/>
+ <lne id="1944" begin="85" end="91"/>
+ <lne id="1945" begin="94" end="94"/>
+ <lne id="1946" begin="92" end="96"/>
+ <lne id="1947" begin="99" end="99"/>
+ <lne id="1948" begin="97" end="101"/>
+ <lne id="1949" begin="104" end="104"/>
+ <lne id="1950" begin="102" end="106"/>
+ <lne id="1887" begin="84" end="107"/>
+ <lne id="2063" begin="111" end="111"/>
+ <lne id="2064" begin="109" end="113"/>
+ <lne id="2065" begin="119" end="119"/>
+ <lne id="2066" begin="121" end="121"/>
+ <lne id="2067" begin="123" end="123"/>
+ <lne id="2068" begin="116" end="124"/>
+ <lne id="2069" begin="114" end="126"/>
+ <lne id="1889" begin="108" end="127"/>
+ <lne id="2070" begin="131" end="131"/>
+ <lne id="2071" begin="129" end="133"/>
+ <lne id="1891" begin="128" end="134"/>
+ <lne id="2072" begin="138" end="138"/>
+ <lne id="2073" begin="136" end="140"/>
+ <lne id="1893" begin="135" end="141"/>
+ <lne id="2074" begin="145" end="145"/>
+ <lne id="2075" begin="143" end="147"/>
+ <lne id="2076" begin="150" end="150"/>
+ <lne id="2077" begin="148" end="152"/>
+ <lne id="1895" begin="142" end="153"/>
+ <lne id="2078" begin="157" end="157"/>
+ <lne id="2079" begin="155" end="159"/>
+ <lne id="1897" begin="154" end="160"/>
+ <lne id="1951" begin="164" end="164"/>
+ <lne id="1952" begin="164" end="165"/>
+ <lne id="1953" begin="162" end="167"/>
+ <lne id="1954" begin="170" end="170"/>
+ <lne id="1955" begin="168" end="172"/>
+ <lne id="1956" begin="175" end="175"/>
+ <lne id="1957" begin="173" end="177"/>
+ <lne id="1958" begin="180" end="180"/>
+ <lne id="1959" begin="180" end="181"/>
+ <lne id="1960" begin="178" end="183"/>
+ <lne id="1899" begin="161" end="184"/>
+ <lne id="1961" begin="188" end="188"/>
+ <lne id="1962" begin="186" end="190"/>
+ <lne id="1901" begin="185" end="191"/>
+ <lne id="1963" begin="195" end="195"/>
+ <lne id="1964" begin="193" end="197"/>
+ <lne id="1903" begin="192" end="198"/>
+ <lne id="1965" begin="202" end="204"/>
+ <lne id="1966" begin="202" end="205"/>
+ <lne id="1967" begin="210" end="212"/>
+ <lne id="1968" begin="213" end="213"/>
+ <lne id="1969" begin="210" end="214"/>
+ <lne id="1970" begin="217" end="217"/>
+ <lne id="1971" begin="218" end="218"/>
+ <lne id="1972" begin="218" end="219"/>
+ <lne id="1973" begin="217" end="220"/>
+ <lne id="1974" begin="207" end="225"/>
+ <lne id="1975" begin="228" end="228"/>
+ <lne id="1976" begin="228" end="229"/>
+ <lne id="1977" begin="231" end="231"/>
+ <lne id="1978" begin="231" end="232"/>
+ <lne id="1979" begin="233" end="233"/>
+ <lne id="1980" begin="233" end="234"/>
+ <lne id="1981" begin="231" end="235"/>
+ <lne id="1982" begin="237" end="237"/>
+ <lne id="1983" begin="239" end="239"/>
+ <lne id="1984" begin="231" end="239"/>
+ <lne id="1985" begin="241" end="241"/>
+ <lne id="1986" begin="228" end="241"/>
+ <lne id="1987" begin="202" end="244"/>
+ <lne id="1988" begin="200" end="246"/>
+ <lne id="1989" begin="249" end="249"/>
+ <lne id="1990" begin="247" end="251"/>
+ <lne id="1905" begin="199" end="252"/>
+ <lne id="1906" begin="255" end="255"/>
+ <lne id="1991" begin="266" end="266"/>
+ <lne id="1992" begin="264" end="276"/>
+ <lne id="1907" begin="253" end="282"/>
+ <lne id="1908" begin="285" end="285"/>
+ <lne id="1993" begin="296" end="296"/>
+ <lne id="1994" begin="294" end="306"/>
+ <lne id="1995" begin="309" end="309"/>
+ <lne id="1996" begin="309" end="310"/>
+ <lne id="1997" begin="307" end="320"/>
+ <lne id="1998" begin="323" end="323"/>
+ <lne id="1999" begin="321" end="333"/>
+ <lne id="2000" begin="336" end="336"/>
+ <lne id="2001" begin="334" end="346"/>
+ <lne id="1909" begin="283" end="352"/>
+ <lne id="2002" begin="356" end="356"/>
+ <lne id="2003" begin="357" end="357"/>
+ <lne id="2004" begin="357" end="358"/>
+ <lne id="2005" begin="357" end="359"/>
+ <lne id="2006" begin="356" end="360"/>
+ <lne id="2007" begin="354" end="362"/>
+ <lne id="2008" begin="365" end="365"/>
+ <lne id="2009" begin="365" end="366"/>
+ <lne id="2010" begin="363" end="368"/>
+ <lne id="2011" begin="371" end="371"/>
+ <lne id="2012" begin="369" end="373"/>
+ <lne id="2013" begin="376" end="376"/>
+ <lne id="2014" begin="374" end="378"/>
+ <lne id="2015" begin="381" end="381"/>
+ <lne id="2016" begin="379" end="383"/>
+ <lne id="1911" begin="353" end="384"/>
+ <lne id="2017" begin="388" end="388"/>
+ <lne id="2018" begin="388" end="389"/>
+ <lne id="2019" begin="386" end="391"/>
+ <lne id="2020" begin="394" end="394"/>
+ <lne id="2021" begin="392" end="396"/>
+ <lne id="2022" begin="399" end="399"/>
+ <lne id="2023" begin="397" end="401"/>
+ <lne id="2024" begin="404" end="404"/>
+ <lne id="2025" begin="404" end="405"/>
+ <lne id="2026" begin="402" end="407"/>
+ <lne id="1913" begin="385" end="408"/>
+ <lne id="1915" begin="409" end="410"/>
+ <lne id="1916" begin="413" end="413"/>
+ <lne id="2027" begin="424" end="424"/>
+ <lne id="2028" begin="422" end="434"/>
+ <lne id="1917" begin="411" end="440"/>
+ <lne id="1918" begin="443" end="443"/>
+ <lne id="2029" begin="454" end="454"/>
+ <lne id="2030" begin="452" end="464"/>
+ <lne id="2031" begin="467" end="467"/>
+ <lne id="2032" begin="467" end="468"/>
+ <lne id="2033" begin="465" end="478"/>
+ <lne id="2034" begin="481" end="481"/>
+ <lne id="2035" begin="479" end="491"/>
+ <lne id="2036" begin="494" end="494"/>
+ <lne id="2037" begin="492" end="504"/>
+ <lne id="1919" begin="441" end="510"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="24" name="148" begin="216" end="224"/>
+ <lve slot="24" name="148" begin="227" end="242"/>
+ <lve slot="23" name="2038" begin="206" end="244"/>
+ <lve slot="25" name="2039" begin="263" end="276"/>
+ <lve slot="24" name="1418" begin="257" end="282"/>
+ <lve slot="23" name="1419" begin="254" end="282"/>
+ <lve slot="25" name="2039" begin="293" end="346"/>
+ <lve slot="24" name="1418" begin="287" end="352"/>
+ <lve slot="23" name="1419" begin="284" end="352"/>
+ <lve slot="25" name="2039" begin="421" end="434"/>
+ <lve slot="24" name="1418" begin="415" end="440"/>
+ <lve slot="23" name="1419" begin="412" end="440"/>
+ <lve slot="25" name="2039" begin="451" end="504"/>
+ <lve slot="24" name="1418" begin="445" end="510"/>
+ <lve slot="23" name="1419" begin="442" end="510"/>
+ <lve slot="20" name="36" begin="75" end="510"/>
+ <lve slot="21" name="1834" begin="79" end="510"/>
+ <lve slot="22" name="1837" begin="83" end="510"/>
+ <lve slot="3" name="1421" begin="7" end="510"/>
+ <lve slot="4" name="329" begin="11" end="510"/>
+ <lve slot="5" name="1015" begin="15" end="510"/>
+ <lve slot="6" name="1649" begin="19" end="510"/>
+ <lve slot="7" name="1119" begin="23" end="510"/>
+ <lve slot="8" name="1844" begin="27" end="510"/>
+ <lve slot="9" name="1845" begin="31" end="510"/>
+ <lve slot="10" name="1846" begin="35" end="510"/>
+ <lve slot="11" name="1847" begin="39" end="510"/>
+ <lve slot="12" name="1848" begin="43" end="510"/>
+ <lve slot="13" name="1849" begin="47" end="510"/>
+ <lve slot="14" name="1850" begin="51" end="510"/>
+ <lve slot="15" name="1839" begin="55" end="510"/>
+ <lve slot="16" name="1840" begin="59" end="510"/>
+ <lve slot="17" name="1841" begin="63" end="510"/>
+ <lve slot="18" name="1842" begin="67" end="510"/>
+ <lve slot="19" name="1843" begin="71" end="510"/>
+ <lve slot="2" name="623" begin="3" end="510"/>
+ <lve slot="0" name="132" begin="0" end="510"/>
+ <lve slot="1" name="652" begin="0" end="510"/>
+ </localvariabletable>
+ </operation>
+ <operation name="2080">
+ <context type="2081"/>
+ <parameters>
+ <parameter name="134" type="4"/>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="2082"/>
+ <get arg="153"/>
+ <call arg="138"/>
+ <if arg="313"/>
+ <load arg="281"/>
+ <get arg="2082"/>
+ <load arg="134"/>
+ <call arg="286"/>
+ <goto arg="899"/>
+ <load arg="134"/>
+ <call arg="138"/>
+ </code>
+ <linenumbertable>
+ <lne id="2083" begin="0" end="0"/>
+ <lne id="2084" begin="0" end="1"/>
+ <lne id="2085" begin="0" end="2"/>
+ <lne id="2086" begin="0" end="3"/>
+ <lne id="2087" begin="5" end="5"/>
+ <lne id="2088" begin="5" end="6"/>
+ <lne id="2089" begin="7" end="7"/>
+ <lne id="2090" begin="5" end="8"/>
+ <lne id="2091" begin="10" end="10"/>
+ <lne id="2092" begin="10" end="11"/>
+ <lne id="2093" begin="0" end="11"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="11"/>
+ <lve slot="1" name="2082" begin="0" end="11"/>
+ </localvariabletable>
+ </operation>
+ <operation name="2094">
+ <context type="2081"/>
+ <parameters>
+ <parameter name="134" type="4"/>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="149"/>
+ <pushi arg="281"/>
+ <call arg="286"/>
+ <if arg="338"/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="48"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="283"/>
+ <iterate/>
+ <store arg="144"/>
+ <load arg="144"/>
+ <get arg="2082"/>
+ <load arg="281"/>
+ <get arg="2082"/>
+ <call arg="286"/>
+ <call arg="287"/>
+ <if arg="1100"/>
+ <load arg="144"/>
+ <call arg="288"/>
+ <enditerate/>
+ <iterate/>
+ <store arg="144"/>
+ <load arg="144"/>
+ <get arg="149"/>
+ <load arg="134"/>
+ <if arg="2095"/>
+ <load arg="281"/>
+ <get arg="149"/>
+ <pushi arg="134"/>
+ <call arg="699"/>
+ <goto arg="2096"/>
+ <load arg="281"/>
+ <get arg="2097"/>
+ <push arg="2098"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="2099"/>
+ <set arg="153"/>
+ <call arg="286"/>
+ <if arg="2100"/>
+ <load arg="281"/>
+ <get arg="149"/>
+ <goto arg="2096"/>
+ <load arg="281"/>
+ <get arg="149"/>
+ <pushi arg="134"/>
+ <call arg="699"/>
+ <call arg="286"/>
+ <call arg="287"/>
+ <if arg="354"/>
+ <load arg="144"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="303"/>
+ <push arg="1421"/>
+ <call arg="1652"/>
+ <goto arg="2101"/>
+ <load arg="134"/>
+ <load arg="281"/>
+ <get arg="2097"/>
+ <push arg="2098"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="2102"/>
+ <set arg="153"/>
+ <call arg="286"/>
+ <call arg="567"/>
+ <if arg="2103"/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="283"/>
+ <iterate/>
+ <store arg="144"/>
+ <load arg="144"/>
+ <get arg="1475"/>
+ <load arg="281"/>
+ <load arg="144"/>
+ <get arg="1923"/>
+ <call arg="1924"/>
+ <call arg="567"/>
+ <call arg="287"/>
+ <if arg="2104"/>
+ <load arg="144"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="303"/>
+ <push arg="1846"/>
+ <call arg="1652"/>
+ <goto arg="2101"/>
+ <load arg="281"/>
+ </code>
+ <linenumbertable>
+ <lne id="2105" begin="0" end="0"/>
+ <lne id="2106" begin="0" end="1"/>
+ <lne id="2107" begin="2" end="2"/>
+ <lne id="2108" begin="0" end="3"/>
+ <lne id="2109" begin="5" end="5"/>
+ <lne id="2110" begin="12" end="14"/>
+ <lne id="2111" begin="15" end="15"/>
+ <lne id="2112" begin="12" end="16"/>
+ <lne id="2113" begin="19" end="19"/>
+ <lne id="2114" begin="19" end="20"/>
+ <lne id="2115" begin="21" end="21"/>
+ <lne id="2116" begin="21" end="22"/>
+ <lne id="2117" begin="19" end="23"/>
+ <lne id="2118" begin="9" end="28"/>
+ <lne id="2119" begin="31" end="31"/>
+ <lne id="2120" begin="31" end="32"/>
+ <lne id="2121" begin="33" end="33"/>
+ <lne id="2122" begin="35" end="35"/>
+ <lne id="2123" begin="35" end="36"/>
+ <lne id="2124" begin="37" end="37"/>
+ <lne id="2125" begin="35" end="38"/>
+ <lne id="2126" begin="40" end="40"/>
+ <lne id="2127" begin="40" end="41"/>
+ <lne id="2128" begin="42" end="47"/>
+ <lne id="2129" begin="40" end="48"/>
+ <lne id="2130" begin="50" end="50"/>
+ <lne id="2131" begin="50" end="51"/>
+ <lne id="2132" begin="53" end="53"/>
+ <lne id="2133" begin="53" end="54"/>
+ <lne id="2134" begin="55" end="55"/>
+ <lne id="2135" begin="53" end="56"/>
+ <lne id="2136" begin="40" end="56"/>
+ <lne id="2137" begin="33" end="56"/>
+ <lne id="2138" begin="31" end="57"/>
+ <lne id="2139" begin="6" end="62"/>
+ <lne id="2140" begin="6" end="63"/>
+ <lne id="2141" begin="64" end="64"/>
+ <lne id="2142" begin="5" end="65"/>
+ <lne id="2143" begin="67" end="67"/>
+ <lne id="2144" begin="68" end="68"/>
+ <lne id="2145" begin="68" end="69"/>
+ <lne id="2146" begin="70" end="75"/>
+ <lne id="2147" begin="68" end="76"/>
+ <lne id="2148" begin="67" end="77"/>
+ <lne id="2149" begin="79" end="79"/>
+ <lne id="2150" begin="83" end="85"/>
+ <lne id="2151" begin="86" end="86"/>
+ <lne id="2152" begin="83" end="87"/>
+ <lne id="2153" begin="90" end="90"/>
+ <lne id="2154" begin="90" end="91"/>
+ <lne id="2155" begin="92" end="92"/>
+ <lne id="2156" begin="93" end="93"/>
+ <lne id="2157" begin="93" end="94"/>
+ <lne id="2158" begin="92" end="95"/>
+ <lne id="2159" begin="90" end="96"/>
+ <lne id="2160" begin="80" end="101"/>
+ <lne id="2161" begin="80" end="102"/>
+ <lne id="2162" begin="103" end="103"/>
+ <lne id="2163" begin="79" end="104"/>
+ <lne id="2164" begin="106" end="106"/>
+ <lne id="2165" begin="67" end="106"/>
+ <lne id="2166" begin="0" end="106"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="148" begin="18" end="27"/>
+ <lve slot="2" name="148" begin="30" end="61"/>
+ <lve slot="2" name="148" begin="89" end="100"/>
+ <lve slot="0" name="132" begin="0" end="106"/>
+ <lve slot="1" name="2167" begin="0" end="106"/>
+ </localvariabletable>
+ </operation>
+ <operation name="50">
+ <context type="2081"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="2168"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="2169"/>
+ <pushi arg="144"/>
+ <call arg="286"/>
+ <load arg="134"/>
+ <get arg="2170"/>
+ <call arg="2171"/>
+ <call arg="287"/>
+ <if arg="136"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="2172" begin="3" end="3"/>
+ <lne id="2173" begin="3" end="4"/>
+ <lne id="2174" begin="7" end="7"/>
+ <lne id="2175" begin="7" end="8"/>
+ <lne id="2176" begin="9" end="9"/>
+ <lne id="2177" begin="7" end="10"/>
+ <lne id="2178" begin="11" end="11"/>
+ <lne id="2179" begin="11" end="12"/>
+ <lne id="2180" begin="7" end="13"/>
+ <lne id="2181" begin="0" end="18"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="6" end="17"/>
+ <lve slot="0" name="132" begin="0" end="18"/>
+ </localvariabletable>
+ </operation>
+ <operation name="52">
+ <context type="2081"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="2082"/>
+ <get arg="153"/>
+ <call arg="138"/>
+ <if arg="899"/>
+ <load arg="281"/>
+ <get arg="2082"/>
+ <get arg="153"/>
+ <call arg="310"/>
+ <push arg="315"/>
+ <call arg="316"/>
+ <goto arg="314"/>
+ <push arg="1198"/>
+ </code>
+ <linenumbertable>
+ <lne id="2182" begin="0" end="0"/>
+ <lne id="2183" begin="0" end="1"/>
+ <lne id="2184" begin="0" end="2"/>
+ <lne id="2185" begin="0" end="3"/>
+ <lne id="2186" begin="5" end="5"/>
+ <lne id="2187" begin="5" end="6"/>
+ <lne id="2188" begin="5" end="7"/>
+ <lne id="2189" begin="5" end="8"/>
+ <lne id="2190" begin="9" end="9"/>
+ <lne id="2191" begin="5" end="10"/>
+ <lne id="2192" begin="12" end="12"/>
+ <lne id="2193" begin="0" end="12"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="12"/>
+ </localvariabletable>
+ </operation>
+ <operation name="2194">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="48"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="233"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="2195"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1421"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="329"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2196"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2102"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1472"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1015"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1118"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1649"/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1119"/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2197"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="49"/>
+ <call arg="1112"/>
+ <pushi arg="281"/>
+ <call arg="1129"/>
+ <if arg="2198"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <goto arg="2199"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <pusht/>
+ <call arg="288"/>
+ <iterate/>
+ <pop/>
+ <push arg="690"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2200"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="2201" begin="21" end="23"/>
+ <lne id="2202" begin="19" end="24"/>
+ <lne id="2203" begin="27" end="29"/>
+ <lne id="2204" begin="25" end="30"/>
+ <lne id="2205" begin="33" end="35"/>
+ <lne id="2206" begin="31" end="36"/>
+ <lne id="2207" begin="39" end="41"/>
+ <lne id="2208" begin="37" end="42"/>
+ <lne id="2209" begin="45" end="47"/>
+ <lne id="2210" begin="43" end="48"/>
+ <lne id="2211" begin="51" end="53"/>
+ <lne id="2212" begin="49" end="54"/>
+ <lne id="2213" begin="57" end="59"/>
+ <lne id="2214" begin="55" end="60"/>
+ <lne id="2215" begin="63" end="65"/>
+ <lne id="2216" begin="61" end="66"/>
+ <lne id="2217" begin="69" end="71"/>
+ <lne id="2218" begin="67" end="72"/>
+ <lne id="2219" begin="78" end="78"/>
+ <lne id="2220" begin="78" end="79"/>
+ <lne id="2221" begin="78" end="80"/>
+ <lne id="2222" begin="81" end="81"/>
+ <lne id="2223" begin="78" end="82"/>
+ <lne id="2224" begin="84" end="86"/>
+ <lne id="2225" begin="91" end="91"/>
+ <lne id="2226" begin="88" end="92"/>
+ <lne id="2227" begin="78" end="92"/>
+ <lne id="2228" begin="73" end="100"/>
+ <lne id="2229" begin="103" end="105"/>
+ <lne id="2230" begin="101" end="106"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="2195" begin="6" end="108"/>
+ <lve slot="0" name="132" begin="0" end="109"/>
+ </localvariabletable>
+ </operation>
+ <operation name="2231">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="2195"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1421"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="329"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="2196"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="2102"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="1472"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="1015"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="1118"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="134"/>
+ <push arg="1649"/>
+ <call arg="636"/>
+ <store arg="313"/>
+ <load arg="134"/>
+ <push arg="1119"/>
+ <call arg="636"/>
+ <store arg="501"/>
+ <load arg="134"/>
+ <push arg="2197"/>
+ <call arg="636"/>
+ <store arg="899"/>
+ <load arg="134"/>
+ <push arg="2200"/>
+ <call arg="636"/>
+ <store arg="314"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="51"/>
+ <push arg="2232"/>
+ <call arg="316"/>
+ <load arg="144"/>
+ <get arg="149"/>
+ <call arg="1552"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="1226"/>
+ <dup/>
+ <getasm/>
+ <pushf/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <load arg="564"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="745"/>
+ <call arg="288"/>
+ <load arg="746"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="1545"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="563"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="1434"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <push arg="2196"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="2233"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <push arg="2102"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="1472"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1554"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1555"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="2168"/>
+ <iterate/>
+ <store arg="900"/>
+ <load arg="900"/>
+ <get arg="2169"/>
+ <pushi arg="134"/>
+ <call arg="286"/>
+ <load arg="900"/>
+ <get arg="2170"/>
+ <call arg="333"/>
+ <call arg="567"/>
+ <call arg="287"/>
+ <if arg="2234"/>
+ <load arg="900"/>
+ <call arg="288"/>
+ <enditerate/>
+ <load arg="500"/>
+ <call arg="2235"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="500"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="501"/>
+ <call arg="288"/>
+ <load arg="899"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="313"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="501"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <pushf/>
+ <call arg="2236"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="313"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <pop/>
+ <pushi arg="134"/>
+ <store arg="900"/>
+ <load arg="144"/>
+ <get arg="49"/>
+ <call arg="1112"/>
+ <pushi arg="281"/>
+ <call arg="1129"/>
+ <if arg="2237"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <goto arg="2238"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <pusht/>
+ <call arg="288"/>
+ <call arg="1375"/>
+ <store arg="139"/>
+ <load arg="899"/>
+ <iterate/>
+ <load arg="139"/>
+ <load arg="900"/>
+ <call arg="1376"/>
+ <store arg="1377"/>
+ <dup/>
+ <getasm/>
+ <pushi arg="281"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2239"/>
+ <load arg="900"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="92"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2097"/>
+ <push arg="2098"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="2099"/>
+ <set arg="153"/>
+ <call arg="286"/>
+ <if arg="2240"/>
+ <pushi arg="134"/>
+ <goto arg="2241"/>
+ <pushi arg="281"/>
+ <pushi arg="134"/>
+ <call arg="699"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2242"/>
+ <load arg="900"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="68"/>
+ <dup/>
+ <getasm/>
+ <load arg="314"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2055"/>
+ <load arg="900"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="900"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="900"/>
+ <enditerate/>
+ <load arg="314"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="49"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="2243" begin="51" end="51"/>
+ <lne id="2244" begin="51" end="52"/>
+ <lne id="2245" begin="53" end="53"/>
+ <lne id="2246" begin="51" end="54"/>
+ <lne id="2247" begin="55" end="55"/>
+ <lne id="2248" begin="55" end="56"/>
+ <lne id="2249" begin="55" end="57"/>
+ <lne id="2250" begin="51" end="58"/>
+ <lne id="2251" begin="49" end="60"/>
+ <lne id="2252" begin="63" end="63"/>
+ <lne id="2253" begin="61" end="65"/>
+ <lne id="2254" begin="68" end="68"/>
+ <lne id="2255" begin="66" end="70"/>
+ <lne id="2256" begin="73" end="73"/>
+ <lne id="2257" begin="71" end="75"/>
+ <lne id="2258" begin="81" end="81"/>
+ <lne id="2259" begin="83" end="83"/>
+ <lne id="2260" begin="78" end="84"/>
+ <lne id="2261" begin="76" end="86"/>
+ <lne id="2262" begin="92" end="92"/>
+ <lne id="2263" begin="89" end="93"/>
+ <lne id="2264" begin="87" end="95"/>
+ <lne id="2202" begin="48" end="96"/>
+ <lne id="2265" begin="100" end="100"/>
+ <lne id="2266" begin="100" end="101"/>
+ <lne id="2267" begin="98" end="103"/>
+ <lne id="2268" begin="106" end="106"/>
+ <lne id="2269" begin="104" end="108"/>
+ <lne id="2270" begin="111" end="111"/>
+ <lne id="2271" begin="109" end="113"/>
+ <lne id="2272" begin="116" end="116"/>
+ <lne id="2273" begin="116" end="117"/>
+ <lne id="2274" begin="114" end="119"/>
+ <lne id="2204" begin="97" end="120"/>
+ <lne id="2275" begin="124" end="124"/>
+ <lne id="2276" begin="122" end="126"/>
+ <lne id="2277" begin="129" end="129"/>
+ <lne id="2278" begin="127" end="131"/>
+ <lne id="2279" begin="134" end="134"/>
+ <lne id="2280" begin="132" end="136"/>
+ <lne id="2206" begin="121" end="137"/>
+ <lne id="2281" begin="141" end="141"/>
+ <lne id="2282" begin="139" end="143"/>
+ <lne id="2283" begin="146" end="146"/>
+ <lne id="2284" begin="146" end="147"/>
+ <lne id="2285" begin="144" end="149"/>
+ <lne id="2286" begin="152" end="152"/>
+ <lne id="2287" begin="150" end="154"/>
+ <lne id="2208" begin="138" end="155"/>
+ <lne id="2288" begin="159" end="159"/>
+ <lne id="2289" begin="159" end="160"/>
+ <lne id="2290" begin="157" end="162"/>
+ <lne id="2291" begin="165" end="165"/>
+ <lne id="2292" begin="163" end="167"/>
+ <lne id="2293" begin="170" end="170"/>
+ <lne id="2294" begin="170" end="171"/>
+ <lne id="2295" begin="168" end="173"/>
+ <lne id="2296" begin="176" end="176"/>
+ <lne id="2297" begin="176" end="177"/>
+ <lne id="2298" begin="174" end="179"/>
+ <lne id="2210" begin="156" end="180"/>
+ <lne id="2299" begin="187" end="187"/>
+ <lne id="2300" begin="187" end="188"/>
+ <lne id="2301" begin="191" end="191"/>
+ <lne id="2302" begin="191" end="192"/>
+ <lne id="2303" begin="193" end="193"/>
+ <lne id="2304" begin="191" end="194"/>
+ <lne id="2305" begin="195" end="195"/>
+ <lne id="2306" begin="195" end="196"/>
+ <lne id="2307" begin="195" end="197"/>
+ <lne id="2308" begin="191" end="198"/>
+ <lne id="2309" begin="184" end="203"/>
+ <lne id="2310" begin="204" end="204"/>
+ <lne id="2311" begin="184" end="205"/>
+ <lne id="2312" begin="182" end="207"/>
+ <lne id="2212" begin="181" end="208"/>
+ <lne id="2313" begin="215" end="215"/>
+ <lne id="2314" begin="217" end="217"/>
+ <lne id="2315" begin="212" end="218"/>
+ <lne id="2316" begin="210" end="220"/>
+ <lne id="2214" begin="209" end="221"/>
+ <lne id="2317" begin="225" end="225"/>
+ <lne id="2318" begin="223" end="227"/>
+ <lne id="2216" begin="222" end="228"/>
+ <lne id="2319" begin="232" end="232"/>
+ <lne id="2320" begin="233" end="233"/>
+ <lne id="2321" begin="232" end="234"/>
+ <lne id="2322" begin="230" end="236"/>
+ <lne id="2323" begin="239" end="239"/>
+ <lne id="2324" begin="237" end="241"/>
+ <lne id="2218" begin="229" end="242"/>
+ <lne id="2219" begin="245" end="245"/>
+ <lne id="2220" begin="245" end="246"/>
+ <lne id="2221" begin="245" end="247"/>
+ <lne id="2222" begin="248" end="248"/>
+ <lne id="2223" begin="245" end="249"/>
+ <lne id="2224" begin="251" end="253"/>
+ <lne id="2225" begin="258" end="258"/>
+ <lne id="2226" begin="255" end="259"/>
+ <lne id="2227" begin="245" end="259"/>
+ <lne id="2325" begin="270" end="270"/>
+ <lne id="2326" begin="268" end="280"/>
+ <lne id="2327" begin="283" end="283"/>
+ <lne id="2328" begin="283" end="284"/>
+ <lne id="2329" begin="285" end="290"/>
+ <lne id="2330" begin="283" end="291"/>
+ <lne id="2331" begin="293" end="293"/>
+ <lne id="2332" begin="295" end="295"/>
+ <lne id="2333" begin="296" end="296"/>
+ <lne id="2334" begin="295" end="297"/>
+ <lne id="2335" begin="283" end="297"/>
+ <lne id="2336" begin="281" end="307"/>
+ <lne id="2337" begin="310" end="310"/>
+ <lne id="2338" begin="308" end="320"/>
+ <lne id="2228" begin="243" end="326"/>
+ <lne id="2339" begin="330" end="330"/>
+ <lne id="2340" begin="330" end="331"/>
+ <lne id="2341" begin="328" end="333"/>
+ <lne id="2230" begin="327" end="334"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="14" name="148" begin="190" end="202"/>
+ <lve slot="16" name="2342" begin="267" end="320"/>
+ <lve slot="15" name="1418" begin="261" end="326"/>
+ <lve slot="14" name="1419" begin="244" end="326"/>
+ <lve slot="3" name="1421" begin="7" end="334"/>
+ <lve slot="4" name="329" begin="11" end="334"/>
+ <lve slot="5" name="2196" begin="15" end="334"/>
+ <lve slot="6" name="2102" begin="19" end="334"/>
+ <lve slot="7" name="1472" begin="23" end="334"/>
+ <lve slot="8" name="1015" begin="27" end="334"/>
+ <lve slot="9" name="1118" begin="31" end="334"/>
+ <lve slot="10" name="1649" begin="35" end="334"/>
+ <lve slot="11" name="1119" begin="39" end="334"/>
+ <lve slot="12" name="2197" begin="43" end="334"/>
+ <lve slot="13" name="2200" begin="47" end="334"/>
+ <lve slot="2" name="2195" begin="3" end="334"/>
+ <lve slot="0" name="132" begin="0" end="334"/>
+ <lve slot="1" name="652" begin="0" end="334"/>
+ </localvariabletable>
+ </operation>
+ <operation name="55">
+ <context type="2343"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="2344"/>
+ <call arg="138"/>
+ <pusht/>
+ <load arg="281"/>
+ <get arg="2168"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="2169"/>
+ <pushi arg="134"/>
+ <call arg="1129"/>
+ <call arg="2345"/>
+ <enditerate/>
+ <call arg="567"/>
+ <load arg="281"/>
+ <get arg="2346"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <call arg="567"/>
+ </code>
+ <linenumbertable>
+ <lne id="2347" begin="0" end="0"/>
+ <lne id="2348" begin="0" end="1"/>
+ <lne id="2349" begin="0" end="2"/>
+ <lne id="2350" begin="4" end="4"/>
+ <lne id="2351" begin="4" end="5"/>
+ <lne id="2352" begin="8" end="8"/>
+ <lne id="2353" begin="8" end="9"/>
+ <lne id="2354" begin="10" end="10"/>
+ <lne id="2355" begin="8" end="11"/>
+ <lne id="2356" begin="3" end="13"/>
+ <lne id="2357" begin="0" end="14"/>
+ <lne id="2358" begin="15" end="15"/>
+ <lne id="2359" begin="15" end="16"/>
+ <lne id="2360" begin="15" end="17"/>
+ <lne id="2361" begin="15" end="18"/>
+ <lne id="2362" begin="0" end="19"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="7" end="12"/>
+ <lve slot="0" name="132" begin="0" end="19"/>
+ </localvariabletable>
+ </operation>
+ <operation name="58">
+ <context type="2363"/>
+ <parameters>
+ </parameters>
+ <code>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="1098"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="54"/>
+ <call arg="287"/>
+ <if arg="900"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="569"/>
+ </code>
+ <linenumbertable>
+ <lne id="2364" begin="0" end="0"/>
+ <lne id="2365" begin="4" end="4"/>
+ <lne id="2366" begin="4" end="5"/>
+ <lne id="2367" begin="8" end="8"/>
+ <lne id="2368" begin="8" end="9"/>
+ <lne id="2369" begin="1" end="14"/>
+ <lne id="2370" begin="0" end="15"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="7" end="13"/>
+ <lve slot="0" name="132" begin="0" end="15"/>
+ </localvariabletable>
+ </operation>
+ <operation name="60">
+ <context type="2363"/>
+ <parameters>
+ </parameters>
+ <code>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="1098"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="54"/>
+ <call arg="333"/>
+ <call arg="287"/>
+ <if arg="139"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="569"/>
+ </code>
+ <linenumbertable>
+ <lne id="2371" begin="0" end="0"/>
+ <lne id="2372" begin="4" end="4"/>
+ <lne id="2373" begin="4" end="5"/>
+ <lne id="2374" begin="8" end="8"/>
+ <lne id="2375" begin="8" end="9"/>
+ <lne id="2376" begin="8" end="10"/>
+ <lne id="2377" begin="1" end="15"/>
+ <lne id="2378" begin="0" end="16"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="7" end="14"/>
+ <lve slot="0" name="132" begin="0" end="16"/>
+ </localvariabletable>
+ </operation>
+ <operation name="62">
+ <context type="2363"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="2169"/>
+ <pushi arg="134"/>
+ <call arg="286"/>
+ <load arg="281"/>
+ <get arg="2170"/>
+ <call arg="333"/>
+ <call arg="567"/>
+ </code>
+ <linenumbertable>
+ <lne id="2379" begin="0" end="0"/>
+ <lne id="2380" begin="0" end="1"/>
+ <lne id="2381" begin="2" end="2"/>
+ <lne id="2382" begin="0" end="3"/>
+ <lne id="2383" begin="4" end="4"/>
+ <lne id="2384" begin="4" end="5"/>
+ <lne id="2385" begin="4" end="6"/>
+ <lne id="2386" begin="0" end="7"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="7"/>
+ </localvariabletable>
+ </operation>
+ <operation name="64">
+ <context type="2363"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="2169"/>
+ <pushi arg="134"/>
+ <call arg="286"/>
+ <load arg="281"/>
+ <get arg="1098"/>
+ <call arg="1112"/>
+ <pushi arg="134"/>
+ <call arg="286"/>
+ <if arg="899"/>
+ <pushf/>
+ <goto arg="141"/>
+ <load arg="281"/>
+ <get arg="1098"/>
+ <call arg="303"/>
+ <get arg="2387"/>
+ <call arg="138"/>
+ <call arg="567"/>
+ </code>
+ <linenumbertable>
+ <lne id="2388" begin="0" end="0"/>
+ <lne id="2389" begin="0" end="1"/>
+ <lne id="2390" begin="2" end="2"/>
+ <lne id="2391" begin="0" end="3"/>
+ <lne id="2392" begin="4" end="4"/>
+ <lne id="2393" begin="4" end="5"/>
+ <lne id="2394" begin="4" end="6"/>
+ <lne id="2395" begin="7" end="7"/>
+ <lne id="2396" begin="4" end="8"/>
+ <lne id="2397" begin="10" end="10"/>
+ <lne id="2398" begin="12" end="12"/>
+ <lne id="2399" begin="12" end="13"/>
+ <lne id="2400" begin="12" end="14"/>
+ <lne id="2401" begin="12" end="15"/>
+ <lne id="2402" begin="12" end="16"/>
+ <lne id="2403" begin="4" end="16"/>
+ <lne id="2404" begin="0" end="17"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="17"/>
+ </localvariabletable>
+ </operation>
+ <operation name="2405">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="56"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="2406"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <load arg="134"/>
+ <get arg="2170"/>
+ <call arg="333"/>
+ <call arg="567"/>
+ <call arg="287"/>
+ <if arg="2407"/>
+ <load arg="134"/>
+ <push arg="56"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2408"/>
+ <load arg="134"/>
+ <get arg="2406"/>
+ <push arg="2409"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="2408"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="237"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="2410"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1118"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="627"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="777"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1015"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2411"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="57"/>
+ <iterate/>
+ <pop/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2412"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="57"/>
+ <iterate/>
+ <pop/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2413"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="57"/>
+ <iterate/>
+ <pop/>
+ <push arg="2414"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2415"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2416"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2417"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2418"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2419"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2420"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2421"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="2414"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <goto arg="2407"/>
+ <load arg="134"/>
+ <push arg="56"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2407"/>
+ <load arg="134"/>
+ <get arg="2406"/>
+ <push arg="617"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="2407"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="239"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="2410"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1118"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="1122"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="777"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1015"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2411"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="57"/>
+ <iterate/>
+ <pop/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2412"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="57"/>
+ <iterate/>
+ <pop/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2413"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="57"/>
+ <iterate/>
+ <pop/>
+ <push arg="2414"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2415"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2416"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2417"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2418"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2419"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2420"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2421"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="2414"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <goto arg="2407"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="2422" begin="7" end="7"/>
+ <lne id="2423" begin="7" end="8"/>
+ <lne id="2424" begin="7" end="9"/>
+ <lne id="2425" begin="7" end="10"/>
+ <lne id="2426" begin="11" end="11"/>
+ <lne id="2427" begin="11" end="12"/>
+ <lne id="2428" begin="11" end="13"/>
+ <lne id="2429" begin="7" end="14"/>
+ <lne id="2430" begin="24" end="24"/>
+ <lne id="2431" begin="24" end="25"/>
+ <lne id="2432" begin="26" end="28"/>
+ <lne id="2433" begin="24" end="29"/>
+ <lne id="2434" begin="46" end="48"/>
+ <lne id="2435" begin="44" end="49"/>
+ <lne id="2436" begin="52" end="54"/>
+ <lne id="2437" begin="50" end="55"/>
+ <lne id="2438" begin="58" end="60"/>
+ <lne id="2439" begin="56" end="61"/>
+ <lne id="2440" begin="64" end="66"/>
+ <lne id="2441" begin="62" end="67"/>
+ <lne id="2442" begin="73" end="73"/>
+ <lne id="2443" begin="73" end="74"/>
+ <lne id="2444" begin="68" end="82"/>
+ <lne id="2445" begin="88" end="88"/>
+ <lne id="2446" begin="88" end="89"/>
+ <lne id="2447" begin="83" end="97"/>
+ <lne id="2448" begin="103" end="103"/>
+ <lne id="2449" begin="103" end="104"/>
+ <lne id="2450" begin="98" end="112"/>
+ <lne id="2451" begin="118" end="118"/>
+ <lne id="2452" begin="118" end="119"/>
+ <lne id="2453" begin="113" end="127"/>
+ <lne id="2454" begin="133" end="133"/>
+ <lne id="2455" begin="133" end="134"/>
+ <lne id="2456" begin="128" end="142"/>
+ <lne id="2457" begin="148" end="148"/>
+ <lne id="2458" begin="148" end="149"/>
+ <lne id="2459" begin="143" end="157"/>
+ <lne id="2460" begin="163" end="163"/>
+ <lne id="2461" begin="163" end="164"/>
+ <lne id="2462" begin="158" end="172"/>
+ <lne id="2463" begin="178" end="178"/>
+ <lne id="2464" begin="178" end="179"/>
+ <lne id="2465" begin="173" end="187"/>
+ <lne id="2466" begin="193" end="193"/>
+ <lne id="2467" begin="193" end="194"/>
+ <lne id="2468" begin="188" end="202"/>
+ <lne id="2469" begin="208" end="208"/>
+ <lne id="2470" begin="208" end="209"/>
+ <lne id="2471" begin="203" end="217"/>
+ <lne id="2472" begin="228" end="228"/>
+ <lne id="2473" begin="228" end="229"/>
+ <lne id="2474" begin="230" end="232"/>
+ <lne id="2475" begin="228" end="233"/>
+ <lne id="2476" begin="250" end="252"/>
+ <lne id="2477" begin="248" end="253"/>
+ <lne id="2478" begin="256" end="258"/>
+ <lne id="2479" begin="254" end="259"/>
+ <lne id="2438" begin="262" end="264"/>
+ <lne id="2439" begin="260" end="265"/>
+ <lne id="2440" begin="268" end="270"/>
+ <lne id="2441" begin="266" end="271"/>
+ <lne id="2442" begin="277" end="277"/>
+ <lne id="2443" begin="277" end="278"/>
+ <lne id="2444" begin="272" end="286"/>
+ <lne id="2445" begin="292" end="292"/>
+ <lne id="2446" begin="292" end="293"/>
+ <lne id="2447" begin="287" end="301"/>
+ <lne id="2448" begin="307" end="307"/>
+ <lne id="2449" begin="307" end="308"/>
+ <lne id="2450" begin="302" end="316"/>
+ <lne id="2451" begin="322" end="322"/>
+ <lne id="2452" begin="322" end="323"/>
+ <lne id="2453" begin="317" end="331"/>
+ <lne id="2454" begin="337" end="337"/>
+ <lne id="2455" begin="337" end="338"/>
+ <lne id="2456" begin="332" end="346"/>
+ <lne id="2457" begin="352" end="352"/>
+ <lne id="2458" begin="352" end="353"/>
+ <lne id="2459" begin="347" end="361"/>
+ <lne id="2460" begin="367" end="367"/>
+ <lne id="2461" begin="367" end="368"/>
+ <lne id="2462" begin="362" end="376"/>
+ <lne id="2463" begin="382" end="382"/>
+ <lne id="2464" begin="382" end="383"/>
+ <lne id="2465" begin="377" end="391"/>
+ <lne id="2466" begin="397" end="397"/>
+ <lne id="2467" begin="397" end="398"/>
+ <lne id="2468" begin="392" end="406"/>
+ <lne id="2469" begin="412" end="412"/>
+ <lne id="2470" begin="412" end="413"/>
+ <lne id="2471" begin="407" end="421"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="2410" begin="6" end="424"/>
+ <lve slot="0" name="132" begin="0" end="425"/>
+ </localvariabletable>
+ </operation>
+ <operation name="2480">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="2410"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1118"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="777"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="1015"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="2411"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="2412"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="2413"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="134"/>
+ <push arg="2415"/>
+ <call arg="636"/>
+ <store arg="313"/>
+ <load arg="134"/>
+ <push arg="2416"/>
+ <call arg="636"/>
+ <store arg="501"/>
+ <load arg="134"/>
+ <push arg="2417"/>
+ <call arg="636"/>
+ <store arg="899"/>
+ <load arg="134"/>
+ <push arg="2418"/>
+ <call arg="636"/>
+ <store arg="314"/>
+ <load arg="134"/>
+ <push arg="2419"/>
+ <call arg="636"/>
+ <store arg="900"/>
+ <load arg="134"/>
+ <push arg="2420"/>
+ <call arg="636"/>
+ <store arg="139"/>
+ <load arg="134"/>
+ <push arg="2421"/>
+ <call arg="636"/>
+ <store arg="1377"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="63"/>
+ <if arg="336"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <goto arg="2481"/>
+ <load arg="314"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <load arg="563"/>
+ <call arg="288"/>
+ <call arg="490"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2406"/>
+ <get arg="149"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <dup/>
+ <getasm/>
+ <load arg="745"/>
+ <call arg="145"/>
+ <set arg="806"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <push arg="2482"/>
+ <load arg="144"/>
+ <get arg="2406"/>
+ <get arg="149"/>
+ <call arg="316"/>
+ <push arg="2483"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="563"/>
+ <pop/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="57"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="746"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2484"/>
+ <push arg="329"/>
+ <call arg="1652"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2485"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="57"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="564"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <load arg="527"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1929"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2486"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1384"/>
+ <dup/>
+ <getasm/>
+ <load arg="500"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2487"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="2488"/>
+ <dup/>
+ <getasm/>
+ <load arg="527"/>
+ <get arg="1650"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2489"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1651"/>
+ <dup/>
+ <getasm/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2490"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="57"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="500"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <push arg="2491"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2492"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="313"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2493"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1384"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="501"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2484"/>
+ <push arg="2102"/>
+ <call arg="1652"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2055"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="899"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2484"/>
+ <push arg="329"/>
+ <call arg="1652"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2494"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="314"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <load arg="527"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2495"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="1377"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2496"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="2488"/>
+ <dup/>
+ <getasm/>
+ <load arg="527"/>
+ <get arg="1650"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2497"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1651"/>
+ <dup/>
+ <getasm/>
+ <load arg="899"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2407"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="63"/>
+ <if arg="2498"/>
+ <load arg="313"/>
+ <goto arg="2499"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1829"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="2500"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="900"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2484"/>
+ <pusht/>
+ <call arg="2236"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2060"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="501"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2061"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <dup/>
+ <getasm/>
+ <load arg="313"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2062"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="2500"/>
+ <dup/>
+ <getasm/>
+ <load arg="139"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2501"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="806"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="139"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2169"/>
+ <pushi arg="134"/>
+ <call arg="286"/>
+ <if arg="2502"/>
+ <push arg="2503"/>
+ <load arg="527"/>
+ <get arg="2344"/>
+ <call arg="316"/>
+ <push arg="2504"/>
+ <call arg="316"/>
+ <goto arg="2505"/>
+ <push arg="2503"/>
+ <load arg="527"/>
+ <get arg="2506"/>
+ <call arg="316"/>
+ <push arg="2504"/>
+ <call arg="316"/>
+ <getasm/>
+ <get arg="1556"/>
+ <call arg="316"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2507"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="1377"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2169"/>
+ <pushi arg="144"/>
+ <call arg="286"/>
+ <if arg="2508"/>
+ <push arg="2509"/>
+ <goto arg="2510"/>
+ <push arg="2491"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2511"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="2512" begin="63" end="63"/>
+ <lne id="2513" begin="63" end="64"/>
+ <lne id="2514" begin="66" end="68"/>
+ <lne id="2515" begin="70" end="70"/>
+ <lne id="2516" begin="63" end="70"/>
+ <lne id="2517" begin="74" end="74"/>
+ <lne id="2518" begin="76" end="76"/>
+ <lne id="2519" begin="71" end="77"/>
+ <lne id="2520" begin="63" end="78"/>
+ <lne id="2521" begin="61" end="80"/>
+ <lne id="2435" begin="60" end="81"/>
+ <lne id="2522" begin="85" end="85"/>
+ <lne id="2523" begin="85" end="86"/>
+ <lne id="2524" begin="85" end="87"/>
+ <lne id="2525" begin="83" end="89"/>
+ <lne id="2526" begin="92" end="92"/>
+ <lne id="2527" begin="90" end="94"/>
+ <lne id="2437" begin="82" end="95"/>
+ <lne id="2528" begin="99" end="99"/>
+ <lne id="2529" begin="100" end="100"/>
+ <lne id="2530" begin="100" end="101"/>
+ <lne id="2531" begin="100" end="102"/>
+ <lne id="2532" begin="99" end="103"/>
+ <lne id="2533" begin="104" end="104"/>
+ <lne id="2534" begin="99" end="105"/>
+ <lne id="2535" begin="97" end="107"/>
+ <lne id="2439" begin="96" end="108"/>
+ <lne id="2441" begin="109" end="110"/>
+ <lne id="2442" begin="113" end="113"/>
+ <lne id="2443" begin="113" end="114"/>
+ <lne id="2536" begin="125" end="125"/>
+ <lne id="2537" begin="126" end="126"/>
+ <lne id="2538" begin="126" end="127"/>
+ <lne id="2539" begin="128" end="128"/>
+ <lne id="2540" begin="125" end="129"/>
+ <lne id="2541" begin="123" end="139"/>
+ <lne id="2444" begin="111" end="145"/>
+ <lne id="2445" begin="148" end="148"/>
+ <lne id="2446" begin="148" end="149"/>
+ <lne id="2542" begin="160" end="160"/>
+ <lne id="2543" begin="158" end="170"/>
+ <lne id="2544" begin="173" end="173"/>
+ <lne id="2545" begin="171" end="183"/>
+ <lne id="2546" begin="186" end="186"/>
+ <lne id="2547" begin="184" end="196"/>
+ <lne id="2548" begin="199" end="199"/>
+ <lne id="2549" begin="199" end="200"/>
+ <lne id="2550" begin="197" end="210"/>
+ <lne id="2551" begin="213" end="213"/>
+ <lne id="2552" begin="211" end="223"/>
+ <lne id="2447" begin="146" end="229"/>
+ <lne id="2448" begin="232" end="232"/>
+ <lne id="2449" begin="232" end="233"/>
+ <lne id="2553" begin="244" end="244"/>
+ <lne id="2554" begin="242" end="254"/>
+ <lne id="2450" begin="230" end="260"/>
+ <lne id="2451" begin="263" end="263"/>
+ <lne id="2452" begin="263" end="264"/>
+ <lne id="2555" begin="275" end="275"/>
+ <lne id="2556" begin="273" end="285"/>
+ <lne id="2453" begin="261" end="291"/>
+ <lne id="2454" begin="294" end="294"/>
+ <lne id="2455" begin="294" end="295"/>
+ <lne id="2557" begin="306" end="306"/>
+ <lne id="2558" begin="307" end="307"/>
+ <lne id="2559" begin="307" end="308"/>
+ <lne id="2560" begin="309" end="309"/>
+ <lne id="2561" begin="306" end="310"/>
+ <lne id="2562" begin="304" end="320"/>
+ <lne id="2456" begin="292" end="326"/>
+ <lne id="2457" begin="329" end="329"/>
+ <lne id="2458" begin="329" end="330"/>
+ <lne id="2563" begin="341" end="341"/>
+ <lne id="2564" begin="342" end="342"/>
+ <lne id="2565" begin="342" end="343"/>
+ <lne id="2566" begin="344" end="344"/>
+ <lne id="2567" begin="341" end="345"/>
+ <lne id="2568" begin="339" end="355"/>
+ <lne id="2459" begin="327" end="361"/>
+ <lne id="2460" begin="364" end="364"/>
+ <lne id="2461" begin="364" end="365"/>
+ <lne id="2569" begin="376" end="376"/>
+ <lne id="2570" begin="374" end="386"/>
+ <lne id="2571" begin="389" end="389"/>
+ <lne id="2572" begin="387" end="399"/>
+ <lne id="2573" begin="402" end="402"/>
+ <lne id="2574" begin="402" end="403"/>
+ <lne id="2575" begin="400" end="413"/>
+ <lne id="2576" begin="416" end="416"/>
+ <lne id="2577" begin="414" end="426"/>
+ <lne id="2578" begin="429" end="429"/>
+ <lne id="2579" begin="429" end="430"/>
+ <lne id="2580" begin="432" end="432"/>
+ <lne id="2581" begin="434" end="434"/>
+ <lne id="2582" begin="429" end="434"/>
+ <lne id="2583" begin="427" end="444"/>
+ <lne id="2462" begin="362" end="450"/>
+ <lne id="2463" begin="453" end="453"/>
+ <lne id="2464" begin="453" end="454"/>
+ <lne id="2584" begin="465" end="465"/>
+ <lne id="2585" begin="465" end="466"/>
+ <lne id="2586" begin="467" end="467"/>
+ <lne id="2587" begin="465" end="468"/>
+ <lne id="2588" begin="463" end="478"/>
+ <lne id="2589" begin="481" end="481"/>
+ <lne id="2590" begin="479" end="491"/>
+ <lne id="2591" begin="494" end="494"/>
+ <lne id="2592" begin="492" end="504"/>
+ <lne id="2593" begin="507" end="507"/>
+ <lne id="2594" begin="505" end="517"/>
+ <lne id="2465" begin="451" end="523"/>
+ <lne id="2466" begin="526" end="526"/>
+ <lne id="2467" begin="526" end="527"/>
+ <lne id="2595" begin="538" end="538"/>
+ <lne id="2596" begin="538" end="539"/>
+ <lne id="2597" begin="540" end="540"/>
+ <lne id="2598" begin="538" end="541"/>
+ <lne id="2599" begin="543" end="543"/>
+ <lne id="2600" begin="544" end="544"/>
+ <lne id="2601" begin="544" end="545"/>
+ <lne id="2602" begin="543" end="546"/>
+ <lne id="2603" begin="547" end="547"/>
+ <lne id="2604" begin="543" end="548"/>
+ <lne id="2605" begin="550" end="550"/>
+ <lne id="2606" begin="551" end="551"/>
+ <lne id="2607" begin="551" end="552"/>
+ <lne id="2608" begin="550" end="553"/>
+ <lne id="2609" begin="554" end="554"/>
+ <lne id="2610" begin="550" end="555"/>
+ <lne id="2611" begin="538" end="555"/>
+ <lne id="2612" begin="556" end="556"/>
+ <lne id="2613" begin="556" end="557"/>
+ <lne id="2614" begin="538" end="558"/>
+ <lne id="2615" begin="536" end="568"/>
+ <lne id="2468" begin="524" end="574"/>
+ <lne id="2469" begin="577" end="577"/>
+ <lne id="2470" begin="577" end="578"/>
+ <lne id="2616" begin="589" end="589"/>
+ <lne id="2617" begin="589" end="590"/>
+ <lne id="2618" begin="591" end="591"/>
+ <lne id="2619" begin="589" end="592"/>
+ <lne id="2620" begin="594" end="594"/>
+ <lne id="2621" begin="596" end="596"/>
+ <lne id="2622" begin="589" end="596"/>
+ <lne id="2623" begin="587" end="606"/>
+ <lne id="2471" begin="575" end="612"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="19" name="623" begin="122" end="139"/>
+ <lve slot="18" name="1418" begin="116" end="145"/>
+ <lve slot="17" name="1419" begin="112" end="145"/>
+ <lve slot="19" name="623" begin="157" end="223"/>
+ <lve slot="18" name="1418" begin="151" end="229"/>
+ <lve slot="17" name="1419" begin="147" end="229"/>
+ <lve slot="19" name="623" begin="241" end="254"/>
+ <lve slot="18" name="1418" begin="235" end="260"/>
+ <lve slot="17" name="1419" begin="231" end="260"/>
+ <lve slot="19" name="623" begin="272" end="285"/>
+ <lve slot="18" name="1418" begin="266" end="291"/>
+ <lve slot="17" name="1419" begin="262" end="291"/>
+ <lve slot="19" name="623" begin="303" end="320"/>
+ <lve slot="18" name="1418" begin="297" end="326"/>
+ <lve slot="17" name="1419" begin="293" end="326"/>
+ <lve slot="19" name="623" begin="338" end="355"/>
+ <lve slot="18" name="1418" begin="332" end="361"/>
+ <lve slot="17" name="1419" begin="328" end="361"/>
+ <lve slot="19" name="623" begin="373" end="444"/>
+ <lve slot="18" name="1418" begin="367" end="450"/>
+ <lve slot="17" name="1419" begin="363" end="450"/>
+ <lve slot="19" name="623" begin="462" end="517"/>
+ <lve slot="18" name="1418" begin="456" end="523"/>
+ <lve slot="17" name="1419" begin="452" end="523"/>
+ <lve slot="19" name="623" begin="535" end="568"/>
+ <lve slot="18" name="1418" begin="529" end="574"/>
+ <lve slot="17" name="1419" begin="525" end="574"/>
+ <lve slot="19" name="623" begin="586" end="606"/>
+ <lve slot="18" name="1418" begin="580" end="612"/>
+ <lve slot="17" name="1419" begin="576" end="612"/>
+ <lve slot="3" name="1118" begin="7" end="612"/>
+ <lve slot="4" name="623" begin="11" end="612"/>
+ <lve slot="5" name="777" begin="15" end="612"/>
+ <lve slot="6" name="1015" begin="19" end="612"/>
+ <lve slot="7" name="2411" begin="23" end="612"/>
+ <lve slot="8" name="2412" begin="27" end="612"/>
+ <lve slot="9" name="2413" begin="31" end="612"/>
+ <lve slot="10" name="2415" begin="35" end="612"/>
+ <lve slot="11" name="2416" begin="39" end="612"/>
+ <lve slot="12" name="2417" begin="43" end="612"/>
+ <lve slot="13" name="2418" begin="47" end="612"/>
+ <lve slot="14" name="2419" begin="51" end="612"/>
+ <lve slot="15" name="2420" begin="55" end="612"/>
+ <lve slot="16" name="2421" begin="59" end="612"/>
+ <lve slot="2" name="2410" begin="3" end="612"/>
+ <lve slot="0" name="132" begin="0" end="612"/>
+ <lve slot="1" name="652" begin="0" end="612"/>
+ </localvariabletable>
+ </operation>
+ <operation name="2624">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="4"/>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <iterate/>
+ <store arg="284"/>
+ <load arg="284"/>
+ <get arg="1650"/>
+ <call arg="138"/>
+ <if arg="527"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="284"/>
+ <call arg="288"/>
+ <load arg="144"/>
+ <call arg="490"/>
+ <goto arg="2042"/>
+ <load arg="144"/>
+ <load arg="284"/>
+ <call arg="2235"/>
+ <store arg="144"/>
+ <enditerate/>
+ <load arg="144"/>
+ </code>
+ <linenumbertable>
+ <lne id="2625" begin="0" end="2"/>
+ <lne id="2626" begin="4" end="4"/>
+ <lne id="2627" begin="7" end="7"/>
+ <lne id="2628" begin="7" end="8"/>
+ <lne id="2629" begin="7" end="9"/>
+ <lne id="2630" begin="14" end="14"/>
+ <lne id="2631" begin="11" end="15"/>
+ <lne id="2632" begin="16" end="16"/>
+ <lne id="2633" begin="11" end="17"/>
+ <lne id="2634" begin="19" end="19"/>
+ <lne id="2635" begin="20" end="20"/>
+ <lne id="2636" begin="19" end="21"/>
+ <lne id="2637" begin="7" end="21"/>
+ <lne id="2638" begin="0" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="148" begin="6" end="22"/>
+ <lve slot="2" name="2038" begin="3" end="24"/>
+ <lve slot="0" name="132" begin="0" end="24"/>
+ <lve slot="1" name="621" begin="0" end="24"/>
+ </localvariabletable>
+ </operation>
+ <operation name="2639">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="2410"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1118"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="777"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="1015"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="2411"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="2412"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="2413"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="134"/>
+ <push arg="2415"/>
+ <call arg="636"/>
+ <store arg="313"/>
+ <load arg="134"/>
+ <push arg="2416"/>
+ <call arg="636"/>
+ <store arg="501"/>
+ <load arg="134"/>
+ <push arg="2417"/>
+ <call arg="636"/>
+ <store arg="899"/>
+ <load arg="134"/>
+ <push arg="2418"/>
+ <call arg="636"/>
+ <store arg="314"/>
+ <load arg="134"/>
+ <push arg="2419"/>
+ <call arg="636"/>
+ <store arg="900"/>
+ <load arg="134"/>
+ <push arg="2420"/>
+ <call arg="636"/>
+ <store arg="139"/>
+ <load arg="134"/>
+ <push arg="2421"/>
+ <call arg="636"/>
+ <store arg="1377"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="63"/>
+ <if arg="336"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <goto arg="2481"/>
+ <load arg="314"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <load arg="563"/>
+ <call arg="288"/>
+ <call arg="490"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2406"/>
+ <get arg="153"/>
+ <call arg="638"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <load arg="745"/>
+ <call arg="145"/>
+ <set arg="806"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <push arg="2482"/>
+ <load arg="144"/>
+ <get arg="2406"/>
+ <get arg="149"/>
+ <call arg="316"/>
+ <push arg="2483"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="563"/>
+ <pop/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="57"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="746"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2484"/>
+ <push arg="329"/>
+ <call arg="1652"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2640"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="57"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="564"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <load arg="527"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2641"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2642"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1384"/>
+ <dup/>
+ <getasm/>
+ <load arg="500"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2643"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="2488"/>
+ <dup/>
+ <getasm/>
+ <load arg="527"/>
+ <get arg="1650"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2644"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1651"/>
+ <dup/>
+ <getasm/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2645"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="57"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="500"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <push arg="2491"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2646"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="313"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2647"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1384"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="501"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2484"/>
+ <push arg="2102"/>
+ <call arg="1652"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2648"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="899"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2484"/>
+ <push arg="329"/>
+ <call arg="1652"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2649"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="314"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <load arg="527"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2650"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="1377"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2651"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="2488"/>
+ <dup/>
+ <getasm/>
+ <load arg="527"/>
+ <get arg="1650"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2652"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1651"/>
+ <dup/>
+ <getasm/>
+ <load arg="899"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2653"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="63"/>
+ <if arg="2499"/>
+ <load arg="313"/>
+ <goto arg="2654"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2655"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="2500"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="900"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2484"/>
+ <pusht/>
+ <call arg="2236"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2656"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="501"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2657"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <dup/>
+ <getasm/>
+ <load arg="313"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2658"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="2500"/>
+ <dup/>
+ <getasm/>
+ <load arg="139"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2659"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="806"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="139"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2169"/>
+ <pushi arg="134"/>
+ <call arg="286"/>
+ <if arg="2660"/>
+ <push arg="2503"/>
+ <load arg="527"/>
+ <get arg="2344"/>
+ <call arg="316"/>
+ <push arg="2504"/>
+ <call arg="316"/>
+ <goto arg="2661"/>
+ <push arg="2503"/>
+ <load arg="527"/>
+ <get arg="2506"/>
+ <call arg="316"/>
+ <push arg="2504"/>
+ <call arg="316"/>
+ <getasm/>
+ <get arg="1556"/>
+ <call arg="316"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2662"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="141"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="136"/>
+ <load arg="1377"/>
+ <iterate/>
+ <load arg="136"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <store arg="527"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2169"/>
+ <pushi arg="144"/>
+ <call arg="286"/>
+ <if arg="2510"/>
+ <push arg="2509"/>
+ <goto arg="2663"/>
+ <push arg="2491"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2664"/>
+ <load arg="141"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="141"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="141"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="2512" begin="63" end="63"/>
+ <lne id="2513" begin="63" end="64"/>
+ <lne id="2514" begin="66" end="68"/>
+ <lne id="2515" begin="70" end="70"/>
+ <lne id="2516" begin="63" end="70"/>
+ <lne id="2517" begin="74" end="74"/>
+ <lne id="2518" begin="76" end="76"/>
+ <lne id="2519" begin="71" end="77"/>
+ <lne id="2520" begin="63" end="78"/>
+ <lne id="2521" begin="61" end="80"/>
+ <lne id="2477" begin="60" end="81"/>
+ <lne id="2665" begin="85" end="85"/>
+ <lne id="2666" begin="85" end="86"/>
+ <lne id="2667" begin="85" end="87"/>
+ <lne id="2668" begin="85" end="88"/>
+ <lne id="2669" begin="83" end="90"/>
+ <lne id="2526" begin="93" end="93"/>
+ <lne id="2527" begin="91" end="95"/>
+ <lne id="2479" begin="82" end="96"/>
+ <lne id="2528" begin="100" end="100"/>
+ <lne id="2529" begin="101" end="101"/>
+ <lne id="2530" begin="101" end="102"/>
+ <lne id="2531" begin="101" end="103"/>
+ <lne id="2532" begin="100" end="104"/>
+ <lne id="2533" begin="105" end="105"/>
+ <lne id="2534" begin="100" end="106"/>
+ <lne id="2535" begin="98" end="108"/>
+ <lne id="2439" begin="97" end="109"/>
+ <lne id="2441" begin="110" end="111"/>
+ <lne id="2442" begin="114" end="114"/>
+ <lne id="2443" begin="114" end="115"/>
+ <lne id="2536" begin="126" end="126"/>
+ <lne id="2537" begin="127" end="127"/>
+ <lne id="2538" begin="127" end="128"/>
+ <lne id="2539" begin="129" end="129"/>
+ <lne id="2540" begin="126" end="130"/>
+ <lne id="2541" begin="124" end="140"/>
+ <lne id="2444" begin="112" end="146"/>
+ <lne id="2445" begin="149" end="149"/>
+ <lne id="2446" begin="149" end="150"/>
+ <lne id="2542" begin="161" end="161"/>
+ <lne id="2543" begin="159" end="171"/>
+ <lne id="2544" begin="174" end="174"/>
+ <lne id="2545" begin="172" end="184"/>
+ <lne id="2546" begin="187" end="187"/>
+ <lne id="2547" begin="185" end="197"/>
+ <lne id="2548" begin="200" end="200"/>
+ <lne id="2549" begin="200" end="201"/>
+ <lne id="2550" begin="198" end="211"/>
+ <lne id="2551" begin="214" end="214"/>
+ <lne id="2552" begin="212" end="224"/>
+ <lne id="2447" begin="147" end="230"/>
+ <lne id="2448" begin="233" end="233"/>
+ <lne id="2449" begin="233" end="234"/>
+ <lne id="2553" begin="245" end="245"/>
+ <lne id="2554" begin="243" end="255"/>
+ <lne id="2450" begin="231" end="261"/>
+ <lne id="2451" begin="264" end="264"/>
+ <lne id="2452" begin="264" end="265"/>
+ <lne id="2555" begin="276" end="276"/>
+ <lne id="2556" begin="274" end="286"/>
+ <lne id="2453" begin="262" end="292"/>
+ <lne id="2454" begin="295" end="295"/>
+ <lne id="2455" begin="295" end="296"/>
+ <lne id="2557" begin="307" end="307"/>
+ <lne id="2558" begin="308" end="308"/>
+ <lne id="2559" begin="308" end="309"/>
+ <lne id="2560" begin="310" end="310"/>
+ <lne id="2561" begin="307" end="311"/>
+ <lne id="2562" begin="305" end="321"/>
+ <lne id="2456" begin="293" end="327"/>
+ <lne id="2457" begin="330" end="330"/>
+ <lne id="2458" begin="330" end="331"/>
+ <lne id="2563" begin="342" end="342"/>
+ <lne id="2564" begin="343" end="343"/>
+ <lne id="2565" begin="343" end="344"/>
+ <lne id="2566" begin="345" end="345"/>
+ <lne id="2567" begin="342" end="346"/>
+ <lne id="2568" begin="340" end="356"/>
+ <lne id="2459" begin="328" end="362"/>
+ <lne id="2460" begin="365" end="365"/>
+ <lne id="2461" begin="365" end="366"/>
+ <lne id="2569" begin="377" end="377"/>
+ <lne id="2570" begin="375" end="387"/>
+ <lne id="2571" begin="390" end="390"/>
+ <lne id="2572" begin="388" end="400"/>
+ <lne id="2573" begin="403" end="403"/>
+ <lne id="2574" begin="403" end="404"/>
+ <lne id="2575" begin="401" end="414"/>
+ <lne id="2576" begin="417" end="417"/>
+ <lne id="2577" begin="415" end="427"/>
+ <lne id="2578" begin="430" end="430"/>
+ <lne id="2579" begin="430" end="431"/>
+ <lne id="2580" begin="433" end="433"/>
+ <lne id="2581" begin="435" end="435"/>
+ <lne id="2582" begin="430" end="435"/>
+ <lne id="2583" begin="428" end="445"/>
+ <lne id="2462" begin="363" end="451"/>
+ <lne id="2463" begin="454" end="454"/>
+ <lne id="2464" begin="454" end="455"/>
+ <lne id="2584" begin="466" end="466"/>
+ <lne id="2585" begin="466" end="467"/>
+ <lne id="2586" begin="468" end="468"/>
+ <lne id="2587" begin="466" end="469"/>
+ <lne id="2588" begin="464" end="479"/>
+ <lne id="2589" begin="482" end="482"/>
+ <lne id="2590" begin="480" end="492"/>
+ <lne id="2591" begin="495" end="495"/>
+ <lne id="2592" begin="493" end="505"/>
+ <lne id="2593" begin="508" end="508"/>
+ <lne id="2594" begin="506" end="518"/>
+ <lne id="2465" begin="452" end="524"/>
+ <lne id="2466" begin="527" end="527"/>
+ <lne id="2467" begin="527" end="528"/>
+ <lne id="2595" begin="539" end="539"/>
+ <lne id="2596" begin="539" end="540"/>
+ <lne id="2597" begin="541" end="541"/>
+ <lne id="2598" begin="539" end="542"/>
+ <lne id="2599" begin="544" end="544"/>
+ <lne id="2600" begin="545" end="545"/>
+ <lne id="2601" begin="545" end="546"/>
+ <lne id="2602" begin="544" end="547"/>
+ <lne id="2603" begin="548" end="548"/>
+ <lne id="2604" begin="544" end="549"/>
+ <lne id="2605" begin="551" end="551"/>
+ <lne id="2606" begin="552" end="552"/>
+ <lne id="2607" begin="552" end="553"/>
+ <lne id="2608" begin="551" end="554"/>
+ <lne id="2609" begin="555" end="555"/>
+ <lne id="2610" begin="551" end="556"/>
+ <lne id="2611" begin="539" end="556"/>
+ <lne id="2612" begin="557" end="557"/>
+ <lne id="2613" begin="557" end="558"/>
+ <lne id="2614" begin="539" end="559"/>
+ <lne id="2615" begin="537" end="569"/>
+ <lne id="2468" begin="525" end="575"/>
+ <lne id="2469" begin="578" end="578"/>
+ <lne id="2470" begin="578" end="579"/>
+ <lne id="2616" begin="590" end="590"/>
+ <lne id="2617" begin="590" end="591"/>
+ <lne id="2618" begin="592" end="592"/>
+ <lne id="2619" begin="590" end="593"/>
+ <lne id="2620" begin="595" end="595"/>
+ <lne id="2621" begin="597" end="597"/>
+ <lne id="2622" begin="590" end="597"/>
+ <lne id="2623" begin="588" end="607"/>
+ <lne id="2471" begin="576" end="613"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="19" name="623" begin="123" end="140"/>
+ <lve slot="18" name="1418" begin="117" end="146"/>
+ <lve slot="17" name="1419" begin="113" end="146"/>
+ <lve slot="19" name="623" begin="158" end="224"/>
+ <lve slot="18" name="1418" begin="152" end="230"/>
+ <lve slot="17" name="1419" begin="148" end="230"/>
+ <lve slot="19" name="623" begin="242" end="255"/>
+ <lve slot="18" name="1418" begin="236" end="261"/>
+ <lve slot="17" name="1419" begin="232" end="261"/>
+ <lve slot="19" name="623" begin="273" end="286"/>
+ <lve slot="18" name="1418" begin="267" end="292"/>
+ <lve slot="17" name="1419" begin="263" end="292"/>
+ <lve slot="19" name="623" begin="304" end="321"/>
+ <lve slot="18" name="1418" begin="298" end="327"/>
+ <lve slot="17" name="1419" begin="294" end="327"/>
+ <lve slot="19" name="623" begin="339" end="356"/>
+ <lve slot="18" name="1418" begin="333" end="362"/>
+ <lve slot="17" name="1419" begin="329" end="362"/>
+ <lve slot="19" name="623" begin="374" end="445"/>
+ <lve slot="18" name="1418" begin="368" end="451"/>
+ <lve slot="17" name="1419" begin="364" end="451"/>
+ <lve slot="19" name="623" begin="463" end="518"/>
+ <lve slot="18" name="1418" begin="457" end="524"/>
+ <lve slot="17" name="1419" begin="453" end="524"/>
+ <lve slot="19" name="623" begin="536" end="569"/>
+ <lve slot="18" name="1418" begin="530" end="575"/>
+ <lve slot="17" name="1419" begin="526" end="575"/>
+ <lve slot="19" name="623" begin="587" end="607"/>
+ <lve slot="18" name="1418" begin="581" end="613"/>
+ <lve slot="17" name="1419" begin="577" end="613"/>
+ <lve slot="3" name="1118" begin="7" end="613"/>
+ <lve slot="4" name="623" begin="11" end="613"/>
+ <lve slot="5" name="777" begin="15" end="613"/>
+ <lve slot="6" name="1015" begin="19" end="613"/>
+ <lve slot="7" name="2411" begin="23" end="613"/>
+ <lve slot="8" name="2412" begin="27" end="613"/>
+ <lve slot="9" name="2413" begin="31" end="613"/>
+ <lve slot="10" name="2415" begin="35" end="613"/>
+ <lve slot="11" name="2416" begin="39" end="613"/>
+ <lve slot="12" name="2417" begin="43" end="613"/>
+ <lve slot="13" name="2418" begin="47" end="613"/>
+ <lve slot="14" name="2419" begin="51" end="613"/>
+ <lve slot="15" name="2420" begin="55" end="613"/>
+ <lve slot="16" name="2421" begin="59" end="613"/>
+ <lve slot="2" name="2410" begin="3" end="613"/>
+ <lve slot="0" name="132" begin="0" end="613"/>
+ <lve slot="1" name="652" begin="0" end="613"/>
+ </localvariabletable>
+ </operation>
+ <operation name="2670">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="56"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="2406"/>
+ <push arg="617"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <load arg="134"/>
+ <get arg="2170"/>
+ <call arg="567"/>
+ <call arg="287"/>
+ <if arg="2671"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="241"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="2410"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1118"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="1122"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="777"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1015"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2415"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="1098"/>
+ <iterate/>
+ <pop/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2417"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="1098"/>
+ <iterate/>
+ <pop/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2418"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="1098"/>
+ <iterate/>
+ <pop/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2421"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="1098"/>
+ <iterate/>
+ <pop/>
+ <push arg="2414"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="2672" begin="7" end="7"/>
+ <lne id="2673" begin="7" end="8"/>
+ <lne id="2674" begin="9" end="11"/>
+ <lne id="2675" begin="7" end="12"/>
+ <lne id="2676" begin="13" end="13"/>
+ <lne id="2677" begin="13" end="14"/>
+ <lne id="2678" begin="7" end="15"/>
+ <lne id="2679" begin="32" end="34"/>
+ <lne id="2680" begin="30" end="35"/>
+ <lne id="2681" begin="38" end="40"/>
+ <lne id="2682" begin="36" end="41"/>
+ <lne id="2683" begin="44" end="46"/>
+ <lne id="2684" begin="42" end="47"/>
+ <lne id="2685" begin="50" end="52"/>
+ <lne id="2686" begin="48" end="53"/>
+ <lne id="2687" begin="59" end="59"/>
+ <lne id="2688" begin="59" end="60"/>
+ <lne id="2689" begin="54" end="68"/>
+ <lne id="2690" begin="74" end="74"/>
+ <lne id="2691" begin="74" end="75"/>
+ <lne id="2692" begin="69" end="83"/>
+ <lne id="2693" begin="89" end="89"/>
+ <lne id="2694" begin="89" end="90"/>
+ <lne id="2695" begin="84" end="98"/>
+ <lne id="2696" begin="104" end="104"/>
+ <lne id="2697" begin="104" end="105"/>
+ <lne id="2698" begin="99" end="113"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="2410" begin="6" end="115"/>
+ <lve slot="0" name="132" begin="0" end="116"/>
+ </localvariabletable>
+ </operation>
+ <operation name="2699">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="2410"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1118"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="777"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="1015"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="2415"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="2417"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="2418"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="134"/>
+ <push arg="2421"/>
+ <call arg="636"/>
+ <store arg="313"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <load arg="563"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <load arg="745"/>
+ <call arg="145"/>
+ <set arg="806"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2406"/>
+ <get arg="153"/>
+ <call arg="638"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <push arg="2482"/>
+ <load arg="144"/>
+ <get arg="2406"/>
+ <get arg="149"/>
+ <call arg="316"/>
+ <push arg="2483"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="563"/>
+ <pop/>
+ <pushi arg="134"/>
+ <store arg="501"/>
+ <load arg="144"/>
+ <get arg="1098"/>
+ <call arg="1375"/>
+ <store arg="899"/>
+ <load arg="746"/>
+ <iterate/>
+ <load arg="899"/>
+ <load arg="501"/>
+ <call arg="1376"/>
+ <store arg="314"/>
+ <dup/>
+ <getasm/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2700"/>
+ <load arg="501"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1384"/>
+ <pop/>
+ <load arg="501"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="501"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="501"/>
+ <load arg="144"/>
+ <get arg="1098"/>
+ <call arg="1375"/>
+ <store arg="899"/>
+ <load arg="564"/>
+ <iterate/>
+ <load arg="899"/>
+ <load arg="501"/>
+ <call arg="1376"/>
+ <store arg="314"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2484"/>
+ <push arg="329"/>
+ <call arg="1652"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2701"/>
+ <load arg="501"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="501"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="501"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="501"/>
+ <load arg="144"/>
+ <get arg="1098"/>
+ <call arg="1375"/>
+ <store arg="899"/>
+ <load arg="500"/>
+ <iterate/>
+ <load arg="899"/>
+ <load arg="501"/>
+ <call arg="1376"/>
+ <store arg="314"/>
+ <dup/>
+ <getasm/>
+ <load arg="314"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1926"/>
+ <load arg="501"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="313"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2702"/>
+ <load arg="501"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="2488"/>
+ <dup/>
+ <getasm/>
+ <load arg="314"/>
+ <get arg="1650"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2487"/>
+ <load arg="501"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1651"/>
+ <dup/>
+ <getasm/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1219"/>
+ <load arg="501"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <dup/>
+ <getasm/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2408"/>
+ <load arg="501"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="2500"/>
+ <pop/>
+ <load arg="501"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="501"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="501"/>
+ <load arg="144"/>
+ <get arg="1098"/>
+ <call arg="1375"/>
+ <store arg="899"/>
+ <load arg="313"/>
+ <iterate/>
+ <load arg="899"/>
+ <load arg="501"/>
+ <call arg="1376"/>
+ <store arg="314"/>
+ <dup/>
+ <getasm/>
+ <load arg="314"/>
+ <get arg="54"/>
+ <if arg="1478"/>
+ <push arg="2491"/>
+ <goto arg="1474"/>
+ <push arg="2491"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2703"/>
+ <load arg="501"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="501"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="501"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="2704" begin="42" end="42"/>
+ <lne id="2705" begin="44" end="44"/>
+ <lne id="2706" begin="39" end="45"/>
+ <lne id="2707" begin="37" end="47"/>
+ <lne id="2680" begin="36" end="48"/>
+ <lne id="2708" begin="52" end="52"/>
+ <lne id="2709" begin="50" end="54"/>
+ <lne id="2710" begin="57" end="57"/>
+ <lne id="2711" begin="57" end="58"/>
+ <lne id="2712" begin="57" end="59"/>
+ <lne id="2713" begin="57" end="60"/>
+ <lne id="2714" begin="55" end="62"/>
+ <lne id="2682" begin="49" end="63"/>
+ <lne id="2715" begin="67" end="67"/>
+ <lne id="2716" begin="68" end="68"/>
+ <lne id="2717" begin="68" end="69"/>
+ <lne id="2718" begin="68" end="70"/>
+ <lne id="2719" begin="67" end="71"/>
+ <lne id="2720" begin="72" end="72"/>
+ <lne id="2721" begin="67" end="73"/>
+ <lne id="2722" begin="65" end="75"/>
+ <lne id="2684" begin="64" end="76"/>
+ <lne id="2686" begin="77" end="78"/>
+ <lne id="2687" begin="81" end="81"/>
+ <lne id="2688" begin="81" end="82"/>
+ <lne id="2723" begin="93" end="93"/>
+ <lne id="2724" begin="91" end="103"/>
+ <lne id="2689" begin="79" end="109"/>
+ <lne id="2690" begin="112" end="112"/>
+ <lne id="2691" begin="112" end="113"/>
+ <lne id="2725" begin="124" end="124"/>
+ <lne id="2726" begin="125" end="125"/>
+ <lne id="2727" begin="125" end="126"/>
+ <lne id="2728" begin="127" end="127"/>
+ <lne id="2729" begin="124" end="128"/>
+ <lne id="2730" begin="122" end="138"/>
+ <lne id="2692" begin="110" end="144"/>
+ <lne id="2693" begin="147" end="147"/>
+ <lne id="2694" begin="147" end="148"/>
+ <lne id="2731" begin="159" end="159"/>
+ <lne id="2732" begin="157" end="169"/>
+ <lne id="2733" begin="172" end="172"/>
+ <lne id="2734" begin="170" end="182"/>
+ <lne id="2735" begin="185" end="185"/>
+ <lne id="2736" begin="185" end="186"/>
+ <lne id="2737" begin="183" end="196"/>
+ <lne id="2738" begin="199" end="199"/>
+ <lne id="2739" begin="197" end="209"/>
+ <lne id="2740" begin="212" end="212"/>
+ <lne id="2741" begin="210" end="222"/>
+ <lne id="2695" begin="145" end="228"/>
+ <lne id="2696" begin="231" end="231"/>
+ <lne id="2697" begin="231" end="232"/>
+ <lne id="2742" begin="243" end="243"/>
+ <lne id="2743" begin="243" end="244"/>
+ <lne id="2744" begin="246" end="246"/>
+ <lne id="2745" begin="248" end="248"/>
+ <lne id="2746" begin="243" end="248"/>
+ <lne id="2747" begin="241" end="258"/>
+ <lne id="2698" begin="229" end="264"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="13" name="623" begin="90" end="103"/>
+ <lve slot="12" name="1418" begin="84" end="109"/>
+ <lve slot="11" name="1419" begin="80" end="109"/>
+ <lve slot="13" name="623" begin="121" end="138"/>
+ <lve slot="12" name="1418" begin="115" end="144"/>
+ <lve slot="11" name="1419" begin="111" end="144"/>
+ <lve slot="13" name="623" begin="156" end="222"/>
+ <lve slot="12" name="1418" begin="150" end="228"/>
+ <lve slot="11" name="1419" begin="146" end="228"/>
+ <lve slot="13" name="623" begin="240" end="258"/>
+ <lve slot="12" name="1418" begin="234" end="264"/>
+ <lve slot="11" name="1419" begin="230" end="264"/>
+ <lve slot="3" name="1118" begin="7" end="264"/>
+ <lve slot="4" name="623" begin="11" end="264"/>
+ <lve slot="5" name="777" begin="15" end="264"/>
+ <lve slot="6" name="1015" begin="19" end="264"/>
+ <lve slot="7" name="2415" begin="23" end="264"/>
+ <lve slot="8" name="2417" begin="27" end="264"/>
+ <lve slot="9" name="2418" begin="31" end="264"/>
+ <lve slot="10" name="2421" begin="35" end="264"/>
+ <lve slot="2" name="2410" begin="3" end="264"/>
+ <lve slot="0" name="132" begin="0" end="264"/>
+ <lve slot="1" name="652" begin="0" end="264"/>
+ </localvariabletable>
+ </operation>
+ <operation name="2748">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="56"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="2406"/>
+ <call arg="138"/>
+ <call arg="287"/>
+ <if arg="2749"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="243"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="2410"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1118"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1015"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2411"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="57"/>
+ <iterate/>
+ <pop/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2412"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="57"/>
+ <iterate/>
+ <pop/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2413"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="57"/>
+ <iterate/>
+ <pop/>
+ <push arg="2414"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2415"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2416"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2417"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2418"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2419"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2420"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2421"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="134"/>
+ <get arg="59"/>
+ <iterate/>
+ <pop/>
+ <push arg="2414"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="2750" begin="7" end="7"/>
+ <lne id="2751" begin="7" end="8"/>
+ <lne id="2752" begin="7" end="9"/>
+ <lne id="2753" begin="26" end="28"/>
+ <lne id="2754" begin="24" end="29"/>
+ <lne id="2755" begin="32" end="34"/>
+ <lne id="2756" begin="30" end="35"/>
+ <lne id="2757" begin="41" end="41"/>
+ <lne id="2758" begin="41" end="42"/>
+ <lne id="2759" begin="36" end="50"/>
+ <lne id="2760" begin="56" end="56"/>
+ <lne id="2761" begin="56" end="57"/>
+ <lne id="2762" begin="51" end="65"/>
+ <lne id="2763" begin="71" end="71"/>
+ <lne id="2764" begin="71" end="72"/>
+ <lne id="2765" begin="66" end="80"/>
+ <lne id="2766" begin="86" end="86"/>
+ <lne id="2767" begin="86" end="87"/>
+ <lne id="2768" begin="81" end="95"/>
+ <lne id="2769" begin="101" end="101"/>
+ <lne id="2770" begin="101" end="102"/>
+ <lne id="2771" begin="96" end="110"/>
+ <lne id="2772" begin="116" end="116"/>
+ <lne id="2773" begin="116" end="117"/>
+ <lne id="2774" begin="111" end="125"/>
+ <lne id="2775" begin="131" end="131"/>
+ <lne id="2776" begin="131" end="132"/>
+ <lne id="2777" begin="126" end="140"/>
+ <lne id="2778" begin="146" end="146"/>
+ <lne id="2779" begin="146" end="147"/>
+ <lne id="2780" begin="141" end="155"/>
+ <lne id="2781" begin="161" end="161"/>
+ <lne id="2782" begin="161" end="162"/>
+ <lne id="2783" begin="156" end="170"/>
+ <lne id="2784" begin="176" end="176"/>
+ <lne id="2785" begin="176" end="177"/>
+ <lne id="2786" begin="171" end="185"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="2410" begin="6" end="187"/>
+ <lve slot="0" name="132" begin="0" end="188"/>
+ </localvariabletable>
+ </operation>
+ <operation name="2787">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="2410"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1118"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="1015"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="2411"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="2412"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="2413"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="2415"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="2416"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="134"/>
+ <push arg="2417"/>
+ <call arg="636"/>
+ <store arg="313"/>
+ <load arg="134"/>
+ <push arg="2418"/>
+ <call arg="636"/>
+ <store arg="501"/>
+ <load arg="134"/>
+ <push arg="2419"/>
+ <call arg="636"/>
+ <store arg="899"/>
+ <load arg="134"/>
+ <push arg="2420"/>
+ <call arg="636"/>
+ <store arg="314"/>
+ <load arg="134"/>
+ <push arg="2421"/>
+ <call arg="636"/>
+ <store arg="900"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="637"/>
+ <pop/>
+ <pushi arg="134"/>
+ <store arg="139"/>
+ <load arg="144"/>
+ <get arg="57"/>
+ <call arg="1375"/>
+ <store arg="1377"/>
+ <load arg="745"/>
+ <iterate/>
+ <load arg="1377"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <store arg="141"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2484"/>
+ <push arg="329"/>
+ <call arg="1652"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2788"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="139"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="139"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="139"/>
+ <load arg="144"/>
+ <get arg="57"/>
+ <call arg="1375"/>
+ <store arg="1377"/>
+ <load arg="563"/>
+ <iterate/>
+ <load arg="1377"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <store arg="141"/>
+ <dup/>
+ <getasm/>
+ <load arg="141"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2789"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2790"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1384"/>
+ <dup/>
+ <getasm/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2791"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="2488"/>
+ <dup/>
+ <getasm/>
+ <load arg="141"/>
+ <get arg="1650"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2792"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1651"/>
+ <dup/>
+ <getasm/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2793"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <pop/>
+ <load arg="139"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="139"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="139"/>
+ <load arg="144"/>
+ <get arg="57"/>
+ <call arg="1375"/>
+ <store arg="1377"/>
+ <load arg="746"/>
+ <iterate/>
+ <load arg="1377"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <store arg="141"/>
+ <dup/>
+ <getasm/>
+ <push arg="2491"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2794"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="139"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="139"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="139"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="1377"/>
+ <load arg="564"/>
+ <iterate/>
+ <load arg="1377"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <store arg="141"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2795"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1384"/>
+ <pop/>
+ <load arg="139"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="139"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="139"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="1377"/>
+ <load arg="500"/>
+ <iterate/>
+ <load arg="1377"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <store arg="141"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2484"/>
+ <push arg="2102"/>
+ <call arg="1652"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2796"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="139"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="139"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="139"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="1377"/>
+ <load arg="313"/>
+ <iterate/>
+ <load arg="1377"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <store arg="141"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2484"/>
+ <push arg="329"/>
+ <call arg="1652"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2797"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="139"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="139"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="139"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="1377"/>
+ <load arg="501"/>
+ <iterate/>
+ <load arg="1377"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <store arg="141"/>
+ <dup/>
+ <getasm/>
+ <load arg="141"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2798"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="900"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2799"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="2488"/>
+ <dup/>
+ <getasm/>
+ <load arg="141"/>
+ <get arg="1650"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2800"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1651"/>
+ <dup/>
+ <getasm/>
+ <load arg="313"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2801"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <dup/>
+ <getasm/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2802"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="2500"/>
+ <pop/>
+ <load arg="139"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="139"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="139"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="1377"/>
+ <load arg="899"/>
+ <iterate/>
+ <load arg="1377"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <store arg="141"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2484"/>
+ <pusht/>
+ <call arg="2236"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2653"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="500"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2803"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <dup/>
+ <getasm/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2804"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="2500"/>
+ <dup/>
+ <getasm/>
+ <load arg="314"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2805"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="806"/>
+ <pop/>
+ <load arg="139"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="139"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="139"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="1377"/>
+ <load arg="314"/>
+ <iterate/>
+ <load arg="1377"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <store arg="141"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2169"/>
+ <pushi arg="134"/>
+ <call arg="286"/>
+ <if arg="2806"/>
+ <push arg="2503"/>
+ <load arg="141"/>
+ <get arg="2344"/>
+ <call arg="316"/>
+ <push arg="2504"/>
+ <call arg="316"/>
+ <goto arg="2807"/>
+ <push arg="2503"/>
+ <load arg="141"/>
+ <get arg="2506"/>
+ <call arg="316"/>
+ <push arg="2504"/>
+ <call arg="316"/>
+ <getasm/>
+ <get arg="1556"/>
+ <call arg="316"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2501"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="139"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="139"/>
+ <enditerate/>
+ <pushi arg="134"/>
+ <store arg="139"/>
+ <load arg="144"/>
+ <get arg="59"/>
+ <call arg="1375"/>
+ <store arg="1377"/>
+ <load arg="900"/>
+ <iterate/>
+ <load arg="1377"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <store arg="141"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2169"/>
+ <pushi arg="144"/>
+ <call arg="286"/>
+ <if arg="2808"/>
+ <push arg="2509"/>
+ <goto arg="2809"/>
+ <push arg="2491"/>
+ <dup/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2810"/>
+ <load arg="139"/>
+ <call arg="1376"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="139"/>
+ <pushi arg="134"/>
+ <call arg="1380"/>
+ <store arg="139"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="2811" begin="58" end="58"/>
+ <lne id="2812" begin="55" end="59"/>
+ <lne id="2813" begin="53" end="61"/>
+ <lne id="2754" begin="52" end="62"/>
+ <lne id="2756" begin="63" end="64"/>
+ <lne id="2757" begin="67" end="67"/>
+ <lne id="2758" begin="67" end="68"/>
+ <lne id="2814" begin="79" end="79"/>
+ <lne id="2815" begin="80" end="80"/>
+ <lne id="2816" begin="80" end="81"/>
+ <lne id="2817" begin="82" end="82"/>
+ <lne id="2818" begin="79" end="83"/>
+ <lne id="2819" begin="77" end="93"/>
+ <lne id="2759" begin="65" end="99"/>
+ <lne id="2760" begin="102" end="102"/>
+ <lne id="2761" begin="102" end="103"/>
+ <lne id="2820" begin="114" end="114"/>
+ <lne id="2821" begin="112" end="124"/>
+ <lne id="2822" begin="127" end="127"/>
+ <lne id="2823" begin="125" end="137"/>
+ <lne id="2824" begin="140" end="140"/>
+ <lne id="2825" begin="138" end="150"/>
+ <lne id="2826" begin="153" end="153"/>
+ <lne id="2827" begin="153" end="154"/>
+ <lne id="2828" begin="151" end="164"/>
+ <lne id="2829" begin="167" end="167"/>
+ <lne id="2830" begin="165" end="177"/>
+ <lne id="2762" begin="100" end="183"/>
+ <lne id="2763" begin="186" end="186"/>
+ <lne id="2764" begin="186" end="187"/>
+ <lne id="2831" begin="198" end="198"/>
+ <lne id="2832" begin="196" end="208"/>
+ <lne id="2765" begin="184" end="214"/>
+ <lne id="2766" begin="217" end="217"/>
+ <lne id="2767" begin="217" end="218"/>
+ <lne id="2833" begin="229" end="229"/>
+ <lne id="2834" begin="227" end="239"/>
+ <lne id="2768" begin="215" end="245"/>
+ <lne id="2769" begin="248" end="248"/>
+ <lne id="2770" begin="248" end="249"/>
+ <lne id="2835" begin="260" end="260"/>
+ <lne id="2836" begin="261" end="261"/>
+ <lne id="2837" begin="261" end="262"/>
+ <lne id="2838" begin="263" end="263"/>
+ <lne id="2839" begin="260" end="264"/>
+ <lne id="2840" begin="258" end="274"/>
+ <lne id="2771" begin="246" end="280"/>
+ <lne id="2772" begin="283" end="283"/>
+ <lne id="2773" begin="283" end="284"/>
+ <lne id="2841" begin="295" end="295"/>
+ <lne id="2842" begin="296" end="296"/>
+ <lne id="2843" begin="296" end="297"/>
+ <lne id="2844" begin="298" end="298"/>
+ <lne id="2845" begin="295" end="299"/>
+ <lne id="2846" begin="293" end="309"/>
+ <lne id="2774" begin="281" end="315"/>
+ <lne id="2775" begin="318" end="318"/>
+ <lne id="2776" begin="318" end="319"/>
+ <lne id="2847" begin="330" end="330"/>
+ <lne id="2848" begin="328" end="340"/>
+ <lne id="2849" begin="343" end="343"/>
+ <lne id="2850" begin="341" end="353"/>
+ <lne id="2851" begin="356" end="356"/>
+ <lne id="2852" begin="356" end="357"/>
+ <lne id="2853" begin="354" end="367"/>
+ <lne id="2854" begin="370" end="370"/>
+ <lne id="2855" begin="368" end="380"/>
+ <lne id="2856" begin="383" end="383"/>
+ <lne id="2857" begin="381" end="393"/>
+ <lne id="2777" begin="316" end="399"/>
+ <lne id="2778" begin="402" end="402"/>
+ <lne id="2779" begin="402" end="403"/>
+ <lne id="2858" begin="414" end="414"/>
+ <lne id="2859" begin="414" end="415"/>
+ <lne id="2860" begin="416" end="416"/>
+ <lne id="2861" begin="414" end="417"/>
+ <lne id="2862" begin="412" end="427"/>
+ <lne id="2863" begin="430" end="430"/>
+ <lne id="2864" begin="428" end="440"/>
+ <lne id="2865" begin="443" end="443"/>
+ <lne id="2866" begin="441" end="453"/>
+ <lne id="2867" begin="456" end="456"/>
+ <lne id="2868" begin="454" end="466"/>
+ <lne id="2780" begin="400" end="472"/>
+ <lne id="2781" begin="475" end="475"/>
+ <lne id="2782" begin="475" end="476"/>
+ <lne id="2869" begin="487" end="487"/>
+ <lne id="2870" begin="487" end="488"/>
+ <lne id="2871" begin="489" end="489"/>
+ <lne id="2872" begin="487" end="490"/>
+ <lne id="2873" begin="492" end="492"/>
+ <lne id="2874" begin="493" end="493"/>
+ <lne id="2875" begin="493" end="494"/>
+ <lne id="2876" begin="492" end="495"/>
+ <lne id="2877" begin="496" end="496"/>
+ <lne id="2878" begin="492" end="497"/>
+ <lne id="2879" begin="499" end="499"/>
+ <lne id="2880" begin="500" end="500"/>
+ <lne id="2881" begin="500" end="501"/>
+ <lne id="2882" begin="499" end="502"/>
+ <lne id="2883" begin="503" end="503"/>
+ <lne id="2884" begin="499" end="504"/>
+ <lne id="2885" begin="487" end="504"/>
+ <lne id="2886" begin="505" end="505"/>
+ <lne id="2887" begin="505" end="506"/>
+ <lne id="2888" begin="487" end="507"/>
+ <lne id="2889" begin="485" end="517"/>
+ <lne id="2783" begin="473" end="523"/>
+ <lne id="2784" begin="526" end="526"/>
+ <lne id="2785" begin="526" end="527"/>
+ <lne id="2890" begin="538" end="538"/>
+ <lne id="2891" begin="538" end="539"/>
+ <lne id="2892" begin="540" end="540"/>
+ <lne id="2893" begin="538" end="541"/>
+ <lne id="2894" begin="543" end="543"/>
+ <lne id="2895" begin="545" end="545"/>
+ <lne id="2896" begin="538" end="545"/>
+ <lne id="2897" begin="536" end="555"/>
+ <lne id="2786" begin="524" end="561"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="17" name="623" begin="76" end="93"/>
+ <lve slot="16" name="1418" begin="70" end="99"/>
+ <lve slot="15" name="1419" begin="66" end="99"/>
+ <lve slot="17" name="623" begin="111" end="177"/>
+ <lve slot="16" name="1418" begin="105" end="183"/>
+ <lve slot="15" name="1419" begin="101" end="183"/>
+ <lve slot="17" name="623" begin="195" end="208"/>
+ <lve slot="16" name="1418" begin="189" end="214"/>
+ <lve slot="15" name="1419" begin="185" end="214"/>
+ <lve slot="17" name="623" begin="226" end="239"/>
+ <lve slot="16" name="1418" begin="220" end="245"/>
+ <lve slot="15" name="1419" begin="216" end="245"/>
+ <lve slot="17" name="623" begin="257" end="274"/>
+ <lve slot="16" name="1418" begin="251" end="280"/>
+ <lve slot="15" name="1419" begin="247" end="280"/>
+ <lve slot="17" name="623" begin="292" end="309"/>
+ <lve slot="16" name="1418" begin="286" end="315"/>
+ <lve slot="15" name="1419" begin="282" end="315"/>
+ <lve slot="17" name="623" begin="327" end="393"/>
+ <lve slot="16" name="1418" begin="321" end="399"/>
+ <lve slot="15" name="1419" begin="317" end="399"/>
+ <lve slot="17" name="623" begin="411" end="466"/>
+ <lve slot="16" name="1418" begin="405" end="472"/>
+ <lve slot="15" name="1419" begin="401" end="472"/>
+ <lve slot="17" name="623" begin="484" end="517"/>
+ <lve slot="16" name="1418" begin="478" end="523"/>
+ <lve slot="15" name="1419" begin="474" end="523"/>
+ <lve slot="17" name="623" begin="535" end="555"/>
+ <lve slot="16" name="1418" begin="529" end="561"/>
+ <lve slot="15" name="1419" begin="525" end="561"/>
+ <lve slot="3" name="1118" begin="7" end="561"/>
+ <lve slot="4" name="1015" begin="11" end="561"/>
+ <lve slot="5" name="2411" begin="15" end="561"/>
+ <lve slot="6" name="2412" begin="19" end="561"/>
+ <lve slot="7" name="2413" begin="23" end="561"/>
+ <lve slot="8" name="2415" begin="27" end="561"/>
+ <lve slot="9" name="2416" begin="31" end="561"/>
+ <lve slot="10" name="2417" begin="35" end="561"/>
+ <lve slot="11" name="2418" begin="39" end="561"/>
+ <lve slot="12" name="2419" begin="43" end="561"/>
+ <lve slot="13" name="2420" begin="47" end="561"/>
+ <lve slot="14" name="2421" begin="51" end="561"/>
+ <lve slot="2" name="2410" begin="3" end="561"/>
+ <lve slot="0" name="132" begin="0" end="561"/>
+ <lve slot="1" name="652" begin="0" end="561"/>
+ </localvariabletable>
+ </operation>
+ <operation name="2898">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="53"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="53"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1670"/>
+ <load arg="134"/>
+ <get arg="2346"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <call arg="287"/>
+ <if arg="1670"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="247"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="623"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1421"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1422"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2899"/>
+ <push arg="1423"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2900"/>
+ <push arg="1423"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2901"/>
+ <push arg="1423"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="329"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1471"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2902"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2903"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1473"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <goto arg="2793"/>
+ <load arg="134"/>
+ <push arg="53"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="2793"/>
+ <load arg="134"/>
+ <get arg="2346"/>
+ <call arg="138"/>
+ <call arg="287"/>
+ <if arg="2793"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="249"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="623"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1421"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2899"/>
+ <push arg="1423"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2900"/>
+ <push arg="1423"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2901"/>
+ <push arg="1423"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="329"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1471"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2902"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="2903"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1473"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <goto arg="2793"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="2904" begin="14" end="14"/>
+ <lne id="2905" begin="14" end="15"/>
+ <lne id="2906" begin="14" end="16"/>
+ <lne id="2907" begin="14" end="17"/>
+ <lne id="2908" begin="34" end="36"/>
+ <lne id="2909" begin="32" end="37"/>
+ <lne id="2910" begin="40" end="42"/>
+ <lne id="2911" begin="38" end="43"/>
+ <lne id="2912" begin="46" end="48"/>
+ <lne id="2913" begin="44" end="49"/>
+ <lne id="2914" begin="52" end="54"/>
+ <lne id="2915" begin="50" end="55"/>
+ <lne id="2916" begin="58" end="60"/>
+ <lne id="2917" begin="56" end="61"/>
+ <lne id="2918" begin="64" end="66"/>
+ <lne id="2919" begin="62" end="67"/>
+ <lne id="2920" begin="70" end="72"/>
+ <lne id="2921" begin="68" end="73"/>
+ <lne id="2922" begin="76" end="78"/>
+ <lne id="2923" begin="74" end="79"/>
+ <lne id="2924" begin="82" end="84"/>
+ <lne id="2925" begin="80" end="85"/>
+ <lne id="2926" begin="88" end="90"/>
+ <lne id="2927" begin="86" end="91"/>
+ <lne id="2928" begin="102" end="102"/>
+ <lne id="2929" begin="102" end="103"/>
+ <lne id="2930" begin="102" end="104"/>
+ <lne id="2931" begin="121" end="123"/>
+ <lne id="2932" begin="119" end="124"/>
+ <lne id="2912" begin="127" end="129"/>
+ <lne id="2913" begin="125" end="130"/>
+ <lne id="2914" begin="133" end="135"/>
+ <lne id="2915" begin="131" end="136"/>
+ <lne id="2916" begin="139" end="141"/>
+ <lne id="2917" begin="137" end="142"/>
+ <lne id="2918" begin="145" end="147"/>
+ <lne id="2919" begin="143" end="148"/>
+ <lne id="2920" begin="151" end="153"/>
+ <lne id="2921" begin="149" end="154"/>
+ <lne id="2922" begin="157" end="159"/>
+ <lne id="2923" begin="155" end="160"/>
+ <lne id="2924" begin="163" end="165"/>
+ <lne id="2925" begin="161" end="166"/>
+ <lne id="2926" begin="169" end="171"/>
+ <lne id="2927" begin="167" end="172"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="623" begin="6" end="175"/>
+ <lve slot="0" name="132" begin="0" end="176"/>
+ </localvariabletable>
+ </operation>
+ <operation name="62">
+ <context type="2343"/>
+ <parameters>
+ </parameters>
+ <code>
+ <pusht/>
+ <load arg="281"/>
+ <get arg="2168"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="61"/>
+ <call arg="2345"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="2933" begin="1" end="1"/>
+ <lne id="2934" begin="1" end="2"/>
+ <lne id="2935" begin="5" end="5"/>
+ <lne id="2936" begin="5" end="6"/>
+ <lne id="2937" begin="0" end="8"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="4" end="7"/>
+ <lve slot="0" name="132" begin="0" end="8"/>
+ </localvariabletable>
+ </operation>
+ <operation name="2938">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1421"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="2899"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="2900"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="2901"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="329"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="1471"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="2902"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="134"/>
+ <push arg="2903"/>
+ <call arg="636"/>
+ <store arg="313"/>
+ <load arg="134"/>
+ <push arg="1473"/>
+ <call arg="636"/>
+ <store arg="501"/>
+ <load arg="134"/>
+ <push arg="1422"/>
+ <call arg="636"/>
+ <store arg="899"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2346"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="500"/>
+ <call arg="288"/>
+ <load arg="313"/>
+ <call arg="288"/>
+ <load arg="501"/>
+ <call arg="288"/>
+ <load arg="564"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="1183"/>
+ <dup/>
+ <getasm/>
+ <load arg="899"/>
+ <call arg="145"/>
+ <set arg="1434"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <load arg="745"/>
+ <call arg="288"/>
+ <load arg="563"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="1433"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="1431"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <pusht/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <load arg="746"/>
+ <call arg="145"/>
+ <set arg="1226"/>
+ <pop/>
+ <load arg="899"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="1422"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <push arg="1435"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <push arg="2196"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="2233"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <push arg="2099"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <push arg="1472"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1555"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <load arg="144"/>
+ <get arg="1548"/>
+ <pushf/>
+ <call arg="1550"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <push arg="1551"/>
+ <load arg="144"/>
+ <get arg="1548"/>
+ <call arg="1552"/>
+ <call arg="316"/>
+ <push arg="1553"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="500"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2387"/>
+ <call arg="138"/>
+ <if arg="2939"/>
+ <push arg="2503"/>
+ <load arg="144"/>
+ <get arg="2387"/>
+ <call arg="316"/>
+ <push arg="2940"/>
+ <call arg="316"/>
+ <goto arg="2941"/>
+ <push arg="2942"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="313"/>
+ <dup/>
+ <getasm/>
+ <push arg="2503"/>
+ <load arg="144"/>
+ <get arg="2506"/>
+ <call arg="316"/>
+ <push arg="2943"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="501"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="54"/>
+ <pusht/>
+ <load arg="144"/>
+ <get arg="2168"/>
+ <iterate/>
+ <store arg="314"/>
+ <load arg="314"/>
+ <get arg="2170"/>
+ <call arg="2345"/>
+ <enditerate/>
+ <call arg="2171"/>
+ <if arg="1478"/>
+ <push arg="2944"/>
+ <goto arg="2945"/>
+ <getasm/>
+ <get arg="1556"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="2946" begin="47" end="47"/>
+ <lne id="2947" begin="47" end="48"/>
+ <lne id="2948" begin="45" end="50"/>
+ <lne id="2949" begin="56" end="56"/>
+ <lne id="2950" begin="58" end="58"/>
+ <lne id="2951" begin="60" end="60"/>
+ <lne id="2952" begin="62" end="62"/>
+ <lne id="2953" begin="53" end="63"/>
+ <lne id="2954" begin="51" end="65"/>
+ <lne id="2955" begin="68" end="68"/>
+ <lne id="2956" begin="66" end="70"/>
+ <lne id="2957" begin="76" end="76"/>
+ <lne id="2958" begin="78" end="78"/>
+ <lne id="2959" begin="80" end="80"/>
+ <lne id="2960" begin="73" end="81"/>
+ <lne id="2961" begin="71" end="83"/>
+ <lne id="2962" begin="86" end="86"/>
+ <lne id="2963" begin="86" end="87"/>
+ <lne id="2964" begin="86" end="88"/>
+ <lne id="2965" begin="84" end="90"/>
+ <lne id="2966" begin="93" end="93"/>
+ <lne id="2967" begin="91" end="95"/>
+ <lne id="2968" begin="98" end="98"/>
+ <lne id="2969" begin="96" end="100"/>
+ <lne id="2909" begin="44" end="101"/>
+ <lne id="2970" begin="105" end="105"/>
+ <lne id="2971" begin="105" end="106"/>
+ <lne id="2972" begin="103" end="108"/>
+ <lne id="2973" begin="111" end="111"/>
+ <lne id="2974" begin="109" end="113"/>
+ <lne id="2975" begin="116" end="116"/>
+ <lne id="2976" begin="114" end="118"/>
+ <lne id="2977" begin="121" end="121"/>
+ <lne id="2978" begin="119" end="123"/>
+ <lne id="2911" begin="102" end="124"/>
+ <lne id="2979" begin="128" end="128"/>
+ <lne id="2980" begin="126" end="130"/>
+ <lne id="2981" begin="133" end="133"/>
+ <lne id="2982" begin="131" end="135"/>
+ <lne id="2913" begin="125" end="136"/>
+ <lne id="2983" begin="140" end="140"/>
+ <lne id="2984" begin="138" end="142"/>
+ <lne id="2985" begin="145" end="145"/>
+ <lne id="2986" begin="145" end="146"/>
+ <lne id="2987" begin="143" end="148"/>
+ <lne id="2915" begin="137" end="149"/>
+ <lne id="2988" begin="153" end="153"/>
+ <lne id="2989" begin="151" end="155"/>
+ <lne id="2990" begin="158" end="158"/>
+ <lne id="2991" begin="158" end="159"/>
+ <lne id="2992" begin="156" end="161"/>
+ <lne id="2917" begin="150" end="162"/>
+ <lne id="2993" begin="166" end="166"/>
+ <lne id="2994" begin="164" end="168"/>
+ <lne id="2995" begin="171" end="171"/>
+ <lne id="2996" begin="172" end="172"/>
+ <lne id="2997" begin="172" end="173"/>
+ <lne id="2998" begin="174" end="174"/>
+ <lne id="2999" begin="174" end="175"/>
+ <lne id="3000" begin="176" end="176"/>
+ <lne id="3001" begin="171" end="177"/>
+ <lne id="3002" begin="169" end="179"/>
+ <lne id="3003" begin="182" end="182"/>
+ <lne id="3004" begin="182" end="183"/>
+ <lne id="3005" begin="180" end="185"/>
+ <lne id="2919" begin="163" end="186"/>
+ <lne id="3006" begin="190" end="190"/>
+ <lne id="3007" begin="191" end="191"/>
+ <lne id="3008" begin="191" end="192"/>
+ <lne id="3009" begin="191" end="193"/>
+ <lne id="3010" begin="190" end="194"/>
+ <lne id="3011" begin="195" end="195"/>
+ <lne id="3012" begin="190" end="196"/>
+ <lne id="3013" begin="188" end="198"/>
+ <lne id="2921" begin="187" end="199"/>
+ <lne id="3014" begin="203" end="203"/>
+ <lne id="3015" begin="203" end="204"/>
+ <lne id="3016" begin="203" end="205"/>
+ <lne id="3017" begin="207" end="207"/>
+ <lne id="3018" begin="208" end="208"/>
+ <lne id="3019" begin="208" end="209"/>
+ <lne id="3020" begin="207" end="210"/>
+ <lne id="3021" begin="211" end="211"/>
+ <lne id="3022" begin="207" end="212"/>
+ <lne id="3023" begin="214" end="214"/>
+ <lne id="3024" begin="203" end="214"/>
+ <lne id="3025" begin="201" end="216"/>
+ <lne id="2923" begin="200" end="217"/>
+ <lne id="3026" begin="221" end="221"/>
+ <lne id="3027" begin="222" end="222"/>
+ <lne id="3028" begin="222" end="223"/>
+ <lne id="3029" begin="221" end="224"/>
+ <lne id="3030" begin="225" end="225"/>
+ <lne id="3031" begin="221" end="226"/>
+ <lne id="3032" begin="219" end="228"/>
+ <lne id="2925" begin="218" end="229"/>
+ <lne id="3033" begin="233" end="233"/>
+ <lne id="3034" begin="233" end="234"/>
+ <lne id="3035" begin="236" end="236"/>
+ <lne id="3036" begin="236" end="237"/>
+ <lne id="3037" begin="240" end="240"/>
+ <lne id="3038" begin="240" end="241"/>
+ <lne id="3039" begin="235" end="243"/>
+ <lne id="3040" begin="233" end="244"/>
+ <lne id="3041" begin="246" end="246"/>
+ <lne id="3042" begin="248" end="248"/>
+ <lne id="3043" begin="248" end="249"/>
+ <lne id="3044" begin="233" end="249"/>
+ <lne id="3045" begin="231" end="251"/>
+ <lne id="2927" begin="230" end="252"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="13" name="148" begin="239" end="242"/>
+ <lve slot="3" name="1421" begin="7" end="252"/>
+ <lve slot="4" name="2899" begin="11" end="252"/>
+ <lve slot="5" name="2900" begin="15" end="252"/>
+ <lve slot="6" name="2901" begin="19" end="252"/>
+ <lve slot="7" name="329" begin="23" end="252"/>
+ <lve slot="8" name="1471" begin="27" end="252"/>
+ <lve slot="9" name="2902" begin="31" end="252"/>
+ <lve slot="10" name="2903" begin="35" end="252"/>
+ <lve slot="11" name="1473" begin="39" end="252"/>
+ <lve slot="12" name="1422" begin="43" end="252"/>
+ <lve slot="2" name="623" begin="3" end="252"/>
+ <lve slot="0" name="132" begin="0" end="252"/>
+ <lve slot="1" name="652" begin="0" end="252"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3046">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1421"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="2899"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="2900"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="2901"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="329"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="1471"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="2902"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="134"/>
+ <push arg="2903"/>
+ <call arg="636"/>
+ <store arg="313"/>
+ <load arg="134"/>
+ <push arg="1473"/>
+ <call arg="636"/>
+ <store arg="501"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <push arg="3047"/>
+ <call arg="145"/>
+ <set arg="805"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="500"/>
+ <call arg="288"/>
+ <load arg="313"/>
+ <call arg="288"/>
+ <load arg="501"/>
+ <call arg="288"/>
+ <load arg="564"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="1183"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <load arg="745"/>
+ <call arg="288"/>
+ <load arg="563"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="1433"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="1431"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <pusht/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <load arg="746"/>
+ <call arg="145"/>
+ <set arg="1226"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <push arg="2196"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="2233"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <push arg="2099"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <push arg="1472"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1555"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <load arg="144"/>
+ <get arg="1548"/>
+ <pushf/>
+ <call arg="1550"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <get arg="1229"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <push arg="1551"/>
+ <load arg="144"/>
+ <get arg="1548"/>
+ <call arg="1552"/>
+ <call arg="316"/>
+ <push arg="1553"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="500"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="2387"/>
+ <call arg="138"/>
+ <if arg="2702"/>
+ <push arg="2503"/>
+ <load arg="144"/>
+ <get arg="2387"/>
+ <call arg="316"/>
+ <push arg="2940"/>
+ <call arg="316"/>
+ <goto arg="2486"/>
+ <push arg="2942"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="313"/>
+ <dup/>
+ <getasm/>
+ <push arg="2503"/>
+ <load arg="144"/>
+ <get arg="2506"/>
+ <call arg="316"/>
+ <push arg="2943"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="501"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="54"/>
+ <pusht/>
+ <load arg="144"/>
+ <get arg="2168"/>
+ <iterate/>
+ <store arg="899"/>
+ <load arg="899"/>
+ <get arg="2170"/>
+ <call arg="2345"/>
+ <enditerate/>
+ <call arg="2171"/>
+ <if arg="2941"/>
+ <push arg="2944"/>
+ <goto arg="1128"/>
+ <getasm/>
+ <get arg="1556"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="3048" begin="43" end="43"/>
+ <lne id="3049" begin="41" end="45"/>
+ <lne id="3050" begin="51" end="51"/>
+ <lne id="3051" begin="53" end="53"/>
+ <lne id="3052" begin="55" end="55"/>
+ <lne id="3053" begin="57" end="57"/>
+ <lne id="3054" begin="48" end="58"/>
+ <lne id="3055" begin="46" end="60"/>
+ <lne id="3056" begin="66" end="66"/>
+ <lne id="3057" begin="68" end="68"/>
+ <lne id="3058" begin="70" end="70"/>
+ <lne id="3059" begin="63" end="71"/>
+ <lne id="3060" begin="61" end="73"/>
+ <lne id="2962" begin="76" end="76"/>
+ <lne id="2963" begin="76" end="77"/>
+ <lne id="2964" begin="76" end="78"/>
+ <lne id="2965" begin="74" end="80"/>
+ <lne id="2966" begin="83" end="83"/>
+ <lne id="2967" begin="81" end="85"/>
+ <lne id="2968" begin="88" end="88"/>
+ <lne id="2969" begin="86" end="90"/>
+ <lne id="2932" begin="40" end="91"/>
+ <lne id="2979" begin="95" end="95"/>
+ <lne id="2980" begin="93" end="97"/>
+ <lne id="2981" begin="100" end="100"/>
+ <lne id="2982" begin="98" end="102"/>
+ <lne id="2913" begin="92" end="103"/>
+ <lne id="2983" begin="107" end="107"/>
+ <lne id="2984" begin="105" end="109"/>
+ <lne id="2985" begin="112" end="112"/>
+ <lne id="2986" begin="112" end="113"/>
+ <lne id="2987" begin="110" end="115"/>
+ <lne id="2915" begin="104" end="116"/>
+ <lne id="2988" begin="120" end="120"/>
+ <lne id="2989" begin="118" end="122"/>
+ <lne id="2990" begin="125" end="125"/>
+ <lne id="2991" begin="125" end="126"/>
+ <lne id="2992" begin="123" end="128"/>
+ <lne id="2917" begin="117" end="129"/>
+ <lne id="2993" begin="133" end="133"/>
+ <lne id="2994" begin="131" end="135"/>
+ <lne id="2995" begin="138" end="138"/>
+ <lne id="2996" begin="139" end="139"/>
+ <lne id="2997" begin="139" end="140"/>
+ <lne id="2998" begin="141" end="141"/>
+ <lne id="2999" begin="141" end="142"/>
+ <lne id="3000" begin="143" end="143"/>
+ <lne id="3001" begin="138" end="144"/>
+ <lne id="3002" begin="136" end="146"/>
+ <lne id="3003" begin="149" end="149"/>
+ <lne id="3004" begin="149" end="150"/>
+ <lne id="3005" begin="147" end="152"/>
+ <lne id="2919" begin="130" end="153"/>
+ <lne id="3006" begin="157" end="157"/>
+ <lne id="3007" begin="158" end="158"/>
+ <lne id="3008" begin="158" end="159"/>
+ <lne id="3009" begin="158" end="160"/>
+ <lne id="3010" begin="157" end="161"/>
+ <lne id="3011" begin="162" end="162"/>
+ <lne id="3012" begin="157" end="163"/>
+ <lne id="3013" begin="155" end="165"/>
+ <lne id="2921" begin="154" end="166"/>
+ <lne id="3014" begin="170" end="170"/>
+ <lne id="3015" begin="170" end="171"/>
+ <lne id="3016" begin="170" end="172"/>
+ <lne id="3017" begin="174" end="174"/>
+ <lne id="3018" begin="175" end="175"/>
+ <lne id="3019" begin="175" end="176"/>
+ <lne id="3020" begin="174" end="177"/>
+ <lne id="3021" begin="178" end="178"/>
+ <lne id="3022" begin="174" end="179"/>
+ <lne id="3023" begin="181" end="181"/>
+ <lne id="3024" begin="170" end="181"/>
+ <lne id="3025" begin="168" end="183"/>
+ <lne id="2923" begin="167" end="184"/>
+ <lne id="3026" begin="188" end="188"/>
+ <lne id="3027" begin="189" end="189"/>
+ <lne id="3028" begin="189" end="190"/>
+ <lne id="3029" begin="188" end="191"/>
+ <lne id="3030" begin="192" end="192"/>
+ <lne id="3031" begin="188" end="193"/>
+ <lne id="3032" begin="186" end="195"/>
+ <lne id="2925" begin="185" end="196"/>
+ <lne id="3033" begin="200" end="200"/>
+ <lne id="3034" begin="200" end="201"/>
+ <lne id="3035" begin="203" end="203"/>
+ <lne id="3036" begin="203" end="204"/>
+ <lne id="3037" begin="207" end="207"/>
+ <lne id="3038" begin="207" end="208"/>
+ <lne id="3039" begin="202" end="210"/>
+ <lne id="3040" begin="200" end="211"/>
+ <lne id="3041" begin="213" end="213"/>
+ <lne id="3042" begin="215" end="215"/>
+ <lne id="3043" begin="215" end="216"/>
+ <lne id="3044" begin="200" end="216"/>
+ <lne id="3045" begin="198" end="218"/>
+ <lne id="2927" begin="197" end="219"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="12" name="148" begin="206" end="209"/>
+ <lve slot="3" name="1421" begin="7" end="219"/>
+ <lve slot="4" name="2899" begin="11" end="219"/>
+ <lve slot="5" name="2900" begin="15" end="219"/>
+ <lve slot="6" name="2901" begin="19" end="219"/>
+ <lve slot="7" name="329" begin="23" end="219"/>
+ <lve slot="8" name="1471" begin="27" end="219"/>
+ <lve slot="9" name="2902" begin="31" end="219"/>
+ <lve slot="10" name="2903" begin="35" end="219"/>
+ <lve slot="11" name="1473" begin="39" end="219"/>
+ <lve slot="2" name="623" begin="3" end="219"/>
+ <lve slot="0" name="132" begin="0" end="219"/>
+ <lve slot="1" name="652" begin="0" end="219"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3061">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="3062"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="251"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="3063"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1421"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1015"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="329"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="777"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="3064"/>
+ <push arg="1122"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="3065" begin="21" end="23"/>
+ <lne id="3066" begin="19" end="24"/>
+ <lne id="3067" begin="27" end="29"/>
+ <lne id="3068" begin="25" end="30"/>
+ <lne id="3069" begin="33" end="35"/>
+ <lne id="3070" begin="31" end="36"/>
+ <lne id="3071" begin="39" end="41"/>
+ <lne id="3072" begin="37" end="42"/>
+ <lne id="3073" begin="45" end="47"/>
+ <lne id="3074" begin="43" end="48"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="3063" begin="6" end="50"/>
+ <lve slot="0" name="132" begin="0" end="51"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3075">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="3063"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1421"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="1015"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="329"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="777"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="3064"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="1431"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <pusht/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <load arg="745"/>
+ <call arg="145"/>
+ <set arg="1226"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="746"/>
+ <call arg="288"/>
+ <load arg="144"/>
+ <get arg="3076"/>
+ <if arg="340"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <goto arg="3077"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="2409"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="283"/>
+ <iterate/>
+ <store arg="564"/>
+ <getasm/>
+ <load arg="564"/>
+ <call arg="3078"/>
+ <call arg="288"/>
+ <enditerate/>
+ <pushf/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="1715"/>
+ <get arg="1098"/>
+ <iterate/>
+ <store arg="564"/>
+ <load arg="564"/>
+ <push arg="3062"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="1713"/>
+ <load arg="564"/>
+ <call arg="288"/>
+ <enditerate/>
+ <iterate/>
+ <store arg="564"/>
+ <load arg="564"/>
+ <get arg="3079"/>
+ <push arg="3080"/>
+ <call arg="286"/>
+ <call arg="3081"/>
+ <enditerate/>
+ <store arg="564"/>
+ <load arg="564"/>
+ <if arg="3082"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <goto arg="3083"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <getasm/>
+ <load arg="144"/>
+ <call arg="3084"/>
+ <call arg="288"/>
+ <call arg="490"/>
+ <call arg="490"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <push arg="1435"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <push arg="3085"/>
+ <load arg="144"/>
+ <get arg="149"/>
+ <push arg="3086"/>
+ <push arg="3087"/>
+ <call arg="1195"/>
+ <call arg="316"/>
+ <push arg="3088"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="3079"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="3089"/>
+ <call arg="145"/>
+ <set arg="3090"/>
+ <dup/>
+ <getasm/>
+ <load arg="563"/>
+ <call arg="145"/>
+ <set arg="806"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="3091" begin="27" end="27"/>
+ <lne id="3092" begin="27" end="28"/>
+ <lne id="3093" begin="27" end="29"/>
+ <lne id="3094" begin="25" end="31"/>
+ <lne id="3095" begin="34" end="34"/>
+ <lne id="3096" begin="32" end="36"/>
+ <lne id="3097" begin="39" end="39"/>
+ <lne id="3098" begin="37" end="41"/>
+ <lne id="3099" begin="44" end="44"/>
+ <lne id="3100" begin="42" end="46"/>
+ <lne id="3066" begin="24" end="47"/>
+ <lne id="3101" begin="54" end="54"/>
+ <lne id="3102" begin="51" end="55"/>
+ <lne id="3103" begin="56" end="56"/>
+ <lne id="3104" begin="56" end="57"/>
+ <lne id="3105" begin="59" end="61"/>
+ <lne id="3106" begin="66" end="68"/>
+ <lne id="3107" begin="69" end="69"/>
+ <lne id="3108" begin="66" end="70"/>
+ <lne id="3109" begin="73" end="73"/>
+ <lne id="3110" begin="74" end="74"/>
+ <lne id="3111" begin="73" end="75"/>
+ <lne id="3112" begin="63" end="77"/>
+ <lne id="3113" begin="82" end="82"/>
+ <lne id="3114" begin="82" end="83"/>
+ <lne id="3115" begin="82" end="84"/>
+ <lne id="3116" begin="87" end="87"/>
+ <lne id="3117" begin="88" end="90"/>
+ <lne id="3118" begin="87" end="91"/>
+ <lne id="3119" begin="79" end="96"/>
+ <lne id="3120" begin="99" end="99"/>
+ <lne id="3121" begin="99" end="100"/>
+ <lne id="3122" begin="101" end="101"/>
+ <lne id="3123" begin="99" end="102"/>
+ <lne id="3124" begin="78" end="104"/>
+ <lne id="3125" begin="106" end="106"/>
+ <lne id="3126" begin="108" end="110"/>
+ <lne id="3127" begin="115" end="115"/>
+ <lne id="3128" begin="116" end="116"/>
+ <lne id="3129" begin="115" end="117"/>
+ <lne id="3130" begin="112" end="118"/>
+ <lne id="3131" begin="106" end="118"/>
+ <lne id="3132" begin="78" end="118"/>
+ <lne id="3133" begin="63" end="119"/>
+ <lne id="3134" begin="56" end="119"/>
+ <lne id="3135" begin="51" end="120"/>
+ <lne id="3136" begin="49" end="122"/>
+ <lne id="3068" begin="48" end="123"/>
+ <lne id="3137" begin="127" end="127"/>
+ <lne id="3138" begin="125" end="129"/>
+ <lne id="3139" begin="132" end="132"/>
+ <lne id="3140" begin="130" end="134"/>
+ <lne id="3141" begin="137" end="137"/>
+ <lne id="3142" begin="135" end="139"/>
+ <lne id="3070" begin="124" end="140"/>
+ <lne id="3143" begin="144" end="144"/>
+ <lne id="3144" begin="145" end="145"/>
+ <lne id="3145" begin="145" end="146"/>
+ <lne id="3146" begin="147" end="147"/>
+ <lne id="3147" begin="148" end="148"/>
+ <lne id="3148" begin="145" end="149"/>
+ <lne id="3149" begin="144" end="150"/>
+ <lne id="3150" begin="151" end="151"/>
+ <lne id="3151" begin="144" end="152"/>
+ <lne id="3152" begin="142" end="154"/>
+ <lne id="3072" begin="141" end="155"/>
+ <lne id="3153" begin="159" end="159"/>
+ <lne id="3154" begin="159" end="160"/>
+ <lne id="3155" begin="157" end="162"/>
+ <lne id="3156" begin="165" end="165"/>
+ <lne id="3157" begin="163" end="167"/>
+ <lne id="3158" begin="170" end="170"/>
+ <lne id="3159" begin="168" end="172"/>
+ <lne id="3074" begin="156" end="173"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="8" name="148" begin="72" end="76"/>
+ <lve slot="8" name="148" begin="86" end="95"/>
+ <lve slot="8" name="148" begin="98" end="103"/>
+ <lve slot="8" name="3160" begin="105" end="118"/>
+ <lve slot="3" name="1421" begin="7" end="173"/>
+ <lve slot="4" name="1015" begin="11" end="173"/>
+ <lve slot="5" name="329" begin="15" end="173"/>
+ <lve slot="6" name="777" begin="19" end="173"/>
+ <lve slot="7" name="3064" begin="23" end="173"/>
+ <lve slot="2" name="3063" begin="3" end="173"/>
+ <lve slot="0" name="132" begin="0" end="173"/>
+ <lve slot="1" name="652" begin="0" end="173"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3161">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="3162"/>
+ </parameters>
+ <code>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="3161"/>
+ <load arg="134"/>
+ <call arg="3163"/>
+ <dup/>
+ <call arg="138"/>
+ <if arg="501"/>
+ <load arg="134"/>
+ <call arg="140"/>
+ <goto arg="338"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="3161"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="621"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="627"/>
+ <push arg="625"/>
+ <new/>
+ <dup/>
+ <store arg="144"/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="777"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <dup/>
+ <store arg="284"/>
+ <call arg="626"/>
+ <pushf/>
+ <call arg="628"/>
+ <load arg="144"/>
+ <dup/>
+ <getasm/>
+ <load arg="134"/>
+ <get arg="149"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <dup/>
+ <getasm/>
+ <load arg="284"/>
+ <call arg="145"/>
+ <set arg="806"/>
+ <pop/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <push arg="3164"/>
+ <load arg="134"/>
+ <get arg="149"/>
+ <call arg="316"/>
+ <push arg="2483"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="144"/>
+ </code>
+ <linenumbertable>
+ <lne id="3165" begin="44" end="44"/>
+ <lne id="3166" begin="44" end="45"/>
+ <lne id="3167" begin="42" end="47"/>
+ <lne id="3168" begin="50" end="50"/>
+ <lne id="3169" begin="48" end="52"/>
+ <lne id="3170" begin="41" end="53"/>
+ <lne id="3171" begin="57" end="57"/>
+ <lne id="3172" begin="58" end="58"/>
+ <lne id="3173" begin="58" end="59"/>
+ <lne id="3174" begin="57" end="60"/>
+ <lne id="3175" begin="61" end="61"/>
+ <lne id="3176" begin="57" end="62"/>
+ <lne id="3177" begin="55" end="64"/>
+ <lne id="3178" begin="54" end="65"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="623" begin="29" end="66"/>
+ <lve slot="3" name="777" begin="37" end="66"/>
+ <lve slot="0" name="132" begin="0" end="66"/>
+ <lve slot="1" name="621" begin="0" end="66"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3179">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="3180"/>
+ </parameters>
+ <code>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="3179"/>
+ <load arg="134"/>
+ <call arg="3163"/>
+ <dup/>
+ <call arg="138"/>
+ <if arg="501"/>
+ <load arg="134"/>
+ <call arg="140"/>
+ <goto arg="355"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="3179"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="3063"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="3064"/>
+ <push arg="1122"/>
+ <push arg="625"/>
+ <new/>
+ <dup/>
+ <store arg="144"/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="777"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <dup/>
+ <store arg="284"/>
+ <call arg="626"/>
+ <pushf/>
+ <call arg="628"/>
+ <load arg="144"/>
+ <dup/>
+ <getasm/>
+ <push arg="3080"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="3181"/>
+ <call arg="145"/>
+ <set arg="3090"/>
+ <dup/>
+ <getasm/>
+ <load arg="284"/>
+ <call arg="145"/>
+ <set arg="806"/>
+ <pop/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <push arg="3182"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="144"/>
+ </code>
+ <linenumbertable>
+ <lne id="3183" begin="44" end="44"/>
+ <lne id="3184" begin="42" end="46"/>
+ <lne id="3185" begin="49" end="49"/>
+ <lne id="3186" begin="47" end="51"/>
+ <lne id="3187" begin="54" end="54"/>
+ <lne id="3188" begin="52" end="56"/>
+ <lne id="3189" begin="41" end="57"/>
+ <lne id="3190" begin="61" end="61"/>
+ <lne id="3191" begin="59" end="63"/>
+ <lne id="3192" begin="58" end="64"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="3064" begin="29" end="65"/>
+ <lve slot="3" name="777" begin="37" end="65"/>
+ <lve slot="0" name="132" begin="0" end="65"/>
+ <lve slot="1" name="3063" begin="0" end="65"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3193">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="3194"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="253"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="3195"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1421"/>
+ <push arg="624"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="329"/>
+ <push arg="1127"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1015"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="3196" begin="21" end="23"/>
+ <lne id="3197" begin="19" end="24"/>
+ <lne id="3198" begin="27" end="29"/>
+ <lne id="3199" begin="25" end="30"/>
+ <lne id="3200" begin="33" end="35"/>
+ <lne id="3201" begin="31" end="36"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="3195" begin="6" end="38"/>
+ <lve slot="0" name="132" begin="0" end="39"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3202">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="3195"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1421"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="329"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="1015"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="153"/>
+ <call arg="1431"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <pusht/>
+ <call arg="145"/>
+ <set arg="639"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="1226"/>
+ <dup/>
+ <getasm/>
+ <load arg="745"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <dup/>
+ <getasm/>
+ <push arg="1227"/>
+ <call arg="145"/>
+ <set arg="1228"/>
+ <dup/>
+ <getasm/>
+ <push arg="1435"/>
+ <call arg="145"/>
+ <set arg="1230"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="3203"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="3204" begin="19" end="19"/>
+ <lne id="3205" begin="19" end="20"/>
+ <lne id="3206" begin="19" end="21"/>
+ <lne id="3207" begin="17" end="23"/>
+ <lne id="3208" begin="26" end="26"/>
+ <lne id="3209" begin="24" end="28"/>
+ <lne id="3210" begin="31" end="31"/>
+ <lne id="3211" begin="29" end="33"/>
+ <lne id="3212" begin="36" end="36"/>
+ <lne id="3213" begin="34" end="38"/>
+ <lne id="3197" begin="16" end="39"/>
+ <lne id="3214" begin="43" end="43"/>
+ <lne id="3215" begin="41" end="45"/>
+ <lne id="3216" begin="48" end="48"/>
+ <lne id="3217" begin="46" end="50"/>
+ <lne id="3218" begin="53" end="53"/>
+ <lne id="3219" begin="51" end="55"/>
+ <lne id="3199" begin="40" end="56"/>
+ <lne id="3220" begin="60" end="60"/>
+ <lne id="3221" begin="60" end="61"/>
+ <lne id="3222" begin="58" end="63"/>
+ <lne id="3201" begin="57" end="64"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="1421" begin="7" end="64"/>
+ <lve slot="4" name="329" begin="11" end="64"/>
+ <lve slot="5" name="1015" begin="15" end="64"/>
+ <lve slot="2" name="3195" begin="3" end="64"/>
+ <lve slot="0" name="132" begin="0" end="64"/>
+ <lve slot="1" name="652" begin="0" end="64"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3223">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="3224"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="255"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="3225"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1118"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="777"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="3226" begin="21" end="23"/>
+ <lne id="3227" begin="19" end="24"/>
+ <lne id="3228" begin="27" end="29"/>
+ <lne id="3229" begin="25" end="30"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="3225" begin="6" end="32"/>
+ <lve slot="0" name="132" begin="0" end="33"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3230">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="3225"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1118"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="777"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="3231"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="806"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <push arg="3232"/>
+ <load arg="144"/>
+ <get arg="2406"/>
+ <get arg="153"/>
+ <call arg="316"/>
+ <push arg="3233"/>
+ <call arg="316"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="3234" begin="15" end="15"/>
+ <lne id="3235" begin="15" end="16"/>
+ <lne id="3236" begin="13" end="18"/>
+ <lne id="3237" begin="21" end="21"/>
+ <lne id="3238" begin="19" end="23"/>
+ <lne id="3227" begin="12" end="24"/>
+ <lne id="3239" begin="28" end="28"/>
+ <lne id="3240" begin="29" end="29"/>
+ <lne id="3241" begin="29" end="30"/>
+ <lne id="3242" begin="29" end="31"/>
+ <lne id="3243" begin="28" end="32"/>
+ <lne id="3244" begin="33" end="33"/>
+ <lne id="3245" begin="28" end="34"/>
+ <lne id="3246" begin="26" end="36"/>
+ <lne id="3229" begin="25" end="37"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="1118" begin="7" end="37"/>
+ <lve slot="4" name="777" begin="11" end="37"/>
+ <lve slot="2" name="3225" begin="3" end="37"/>
+ <lve slot="0" name="132" begin="0" end="37"/>
+ <lve slot="1" name="652" begin="0" end="37"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3247">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="257"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="621"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1118"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="3248" begin="21" end="23"/>
+ <lne id="3249" begin="19" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="621" begin="6" end="26"/>
+ <lve slot="0" name="132" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3250">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="621"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1118"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="3251"/>
+ <iterate/>
+ <store arg="637"/>
+ <load arg="637"/>
+ <push arg="3252"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <if arg="565"/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="3253" begin="11" end="11"/>
+ <lne id="3254" begin="11" end="12"/>
+ <lne id="3255" begin="9" end="14"/>
+ <lne id="3256" begin="20" end="20"/>
+ <lne id="3257" begin="20" end="21"/>
+ <lne id="3258" begin="24" end="24"/>
+ <lne id="3259" begin="25" end="27"/>
+ <lne id="3260" begin="24" end="28"/>
+ <lne id="3261" begin="17" end="32"/>
+ <lne id="3262" begin="15" end="34"/>
+ <lne id="3249" begin="8" end="35"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="4" name="148" begin="23" end="31"/>
+ <lve slot="3" name="1118" begin="7" end="35"/>
+ <lve slot="2" name="621" begin="3" end="35"/>
+ <lve slot="0" name="132" begin="0" end="35"/>
+ <lve slot="1" name="652" begin="0" end="35"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3263">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="3264"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="3265"/>
+ <push arg="617"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="3266"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="259"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="3267"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="3268"/>
+ <push arg="1122"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="3269" begin="7" end="7"/>
+ <lne id="3270" begin="7" end="8"/>
+ <lne id="3271" begin="9" end="11"/>
+ <lne id="3272" begin="7" end="12"/>
+ <lne id="3273" begin="29" end="31"/>
+ <lne id="3274" begin="27" end="32"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="3267" begin="6" end="34"/>
+ <lve slot="0" name="132" begin="0" end="35"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3275">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="3267"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="3268"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="3265"/>
+ <get arg="153"/>
+ <call arg="638"/>
+ <call arg="145"/>
+ <set arg="153"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="3276" begin="11" end="11"/>
+ <lne id="3277" begin="11" end="12"/>
+ <lne id="3278" begin="9" end="14"/>
+ <lne id="3279" begin="17" end="17"/>
+ <lne id="3280" begin="17" end="18"/>
+ <lne id="3281" begin="17" end="19"/>
+ <lne id="3282" begin="17" end="20"/>
+ <lne id="3283" begin="15" end="22"/>
+ <lne id="3274" begin="8" end="23"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="3268" begin="7" end="23"/>
+ <lve slot="2" name="3267" begin="3" end="23"/>
+ <lve slot="0" name="132" begin="0" end="23"/>
+ <lve slot="1" name="652" begin="0" end="23"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3284">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="3264"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="3265"/>
+ <push arg="2409"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="3266"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="261"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="3267"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="623"/>
+ <push arg="627"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="3285" begin="7" end="7"/>
+ <lne id="3286" begin="7" end="8"/>
+ <lne id="3287" begin="9" end="11"/>
+ <lne id="3288" begin="7" end="12"/>
+ <lne id="3289" begin="29" end="31"/>
+ <lne id="3290" begin="27" end="32"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="3267" begin="6" end="34"/>
+ <lve slot="0" name="132" begin="0" end="35"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3291">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="3267"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="623"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="3265"/>
+ <get arg="149"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="3292" begin="11" end="11"/>
+ <lne id="3293" begin="11" end="12"/>
+ <lne id="3294" begin="9" end="14"/>
+ <lne id="3295" begin="17" end="17"/>
+ <lne id="3296" begin="17" end="18"/>
+ <lne id="3297" begin="17" end="19"/>
+ <lne id="3298" begin="15" end="21"/>
+ <lne id="3290" begin="8" end="22"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="623" begin="7" end="22"/>
+ <lve slot="2" name="3267" begin="3" end="22"/>
+ <lve slot="0" name="132" begin="0" end="22"/>
+ <lve slot="1" name="652" begin="0" end="22"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3299">
+ <context type="3300"/>
+ <parameters>
+ <parameter name="134" type="4"/>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="1230"/>
+ <get arg="153"/>
+ <store arg="144"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="3062"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="283"/>
+ <call arg="289"/>
+ <iterate/>
+ <store arg="284"/>
+ <load arg="284"/>
+ <get arg="3301"/>
+ <load arg="144"/>
+ <call arg="286"/>
+ <call arg="287"/>
+ <if arg="2045"/>
+ <load arg="284"/>
+ <call arg="288"/>
+ <enditerate/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <call arg="1112"/>
+ <pushi arg="281"/>
+ <call arg="286"/>
+ <if arg="427"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="284"/>
+ <iterate/>
+ <store arg="637"/>
+ <load arg="637"/>
+ <get arg="153"/>
+ <load arg="134"/>
+ <call arg="286"/>
+ <call arg="287"/>
+ <if arg="799"/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="303"/>
+ <goto arg="340"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="284"/>
+ <iterate/>
+ <store arg="637"/>
+ <load arg="637"/>
+ <get arg="3302"/>
+ <pusht/>
+ <call arg="286"/>
+ <call arg="287"/>
+ <if arg="3303"/>
+ <load arg="637"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="303"/>
+ </code>
+ <linenumbertable>
+ <lne id="3304" begin="0" end="0"/>
+ <lne id="3305" begin="0" end="1"/>
+ <lne id="3306" begin="0" end="2"/>
+ <lne id="3307" begin="7" end="9"/>
+ <lne id="3308" begin="10" end="10"/>
+ <lne id="3309" begin="7" end="11"/>
+ <lne id="3310" begin="7" end="12"/>
+ <lne id="3311" begin="15" end="15"/>
+ <lne id="3312" begin="15" end="16"/>
+ <lne id="3313" begin="17" end="17"/>
+ <lne id="3314" begin="15" end="18"/>
+ <lne id="3315" begin="4" end="23"/>
+ <lne id="3316" begin="25" end="25"/>
+ <lne id="3317" begin="25" end="26"/>
+ <lne id="3318" begin="27" end="27"/>
+ <lne id="3319" begin="25" end="28"/>
+ <lne id="3320" begin="33" end="33"/>
+ <lne id="3321" begin="36" end="36"/>
+ <lne id="3322" begin="36" end="37"/>
+ <lne id="3323" begin="38" end="38"/>
+ <lne id="3324" begin="36" end="39"/>
+ <lne id="3325" begin="30" end="44"/>
+ <lne id="3326" begin="30" end="45"/>
+ <lne id="3327" begin="50" end="50"/>
+ <lne id="3328" begin="53" end="53"/>
+ <lne id="3329" begin="53" end="54"/>
+ <lne id="3330" begin="55" end="55"/>
+ <lne id="3331" begin="53" end="56"/>
+ <lne id="3332" begin="47" end="61"/>
+ <lne id="3333" begin="47" end="62"/>
+ <lne id="3334" begin="25" end="62"/>
+ <lne id="3335" begin="4" end="62"/>
+ <lne id="3336" begin="0" end="62"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="148" begin="14" end="22"/>
+ <lve slot="4" name="148" begin="35" end="43"/>
+ <lve slot="4" name="148" begin="52" end="60"/>
+ <lve slot="3" name="3337" begin="24" end="62"/>
+ <lve slot="2" name="3338" begin="3" end="62"/>
+ <lve slot="0" name="132" begin="0" end="62"/>
+ <lve slot="1" name="153" begin="0" end="62"/>
+ </localvariabletable>
+ </operation>
+ <operation name="67">
+ <context type="3339"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <load arg="281"/>
+ <get arg="153"/>
+ <call arg="3340"/>
+ </code>
+ <linenumbertable>
+ <lne id="3341" begin="0" end="0"/>
+ <lne id="3342" begin="1" end="1"/>
+ <lne id="3343" begin="1" end="2"/>
+ <lne id="3344" begin="0" end="3"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="3"/>
+ </localvariabletable>
+ </operation>
+ <operation name="69">
+ <context type="3339"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="66"/>
+ <get arg="68"/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <pushi arg="134"/>
+ <call arg="286"/>
+ <if arg="348"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="19"/>
+ <iterate/>
+ <store arg="144"/>
+ <load arg="144"/>
+ <push arg="3345"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="3346"/>
+ <load arg="144"/>
+ <call arg="288"/>
+ <enditerate/>
+ <iterate/>
+ <store arg="144"/>
+ <load arg="144"/>
+ <get arg="3347"/>
+ <load arg="281"/>
+ <get arg="153"/>
+ <call arg="286"/>
+ <call arg="287"/>
+ <if arg="3348"/>
+ <load arg="144"/>
+ <call arg="288"/>
+ <enditerate/>
+ <store arg="144"/>
+ <load arg="144"/>
+ <call arg="3349"/>
+ <if arg="429"/>
+ <load arg="134"/>
+ <goto arg="427"/>
+ <pushi arg="134"/>
+ <goto arg="3350"/>
+ <pushi arg="134"/>
+ </code>
+ <linenumbertable>
+ <lne id="3351" begin="0" end="0"/>
+ <lne id="3352" begin="0" end="1"/>
+ <lne id="3353" begin="0" end="2"/>
+ <lne id="3354" begin="4" end="4"/>
+ <lne id="3355" begin="5" end="5"/>
+ <lne id="3356" begin="4" end="6"/>
+ <lne id="3357" begin="14" end="14"/>
+ <lne id="3358" begin="14" end="15"/>
+ <lne id="3359" begin="18" end="18"/>
+ <lne id="3360" begin="19" end="21"/>
+ <lne id="3361" begin="18" end="22"/>
+ <lne id="3362" begin="11" end="27"/>
+ <lne id="3363" begin="30" end="30"/>
+ <lne id="3364" begin="30" end="31"/>
+ <lne id="3365" begin="32" end="32"/>
+ <lne id="3366" begin="32" end="33"/>
+ <lne id="3367" begin="30" end="34"/>
+ <lne id="3368" begin="8" end="39"/>
+ <lne id="3369" begin="41" end="41"/>
+ <lne id="3370" begin="41" end="42"/>
+ <lne id="3371" begin="44" end="44"/>
+ <lne id="3372" begin="46" end="46"/>
+ <lne id="3373" begin="41" end="46"/>
+ <lne id="3374" begin="8" end="46"/>
+ <lne id="3375" begin="48" end="48"/>
+ <lne id="3376" begin="4" end="48"/>
+ <lne id="3377" begin="0" end="48"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="148" begin="17" end="26"/>
+ <lve slot="2" name="148" begin="29" end="38"/>
+ <lve slot="2" name="3378" begin="40" end="46"/>
+ <lve slot="1" name="3379" begin="3" end="48"/>
+ <lve slot="0" name="132" begin="0" end="48"/>
+ </localvariabletable>
+ </operation>
+ <operation name="71">
+ <context type="3339"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="3380"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="3381"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="1377"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="3349"/>
+ </code>
+ <linenumbertable>
+ <lne id="3382" begin="3" end="3"/>
+ <lne id="3383" begin="3" end="4"/>
+ <lne id="3384" begin="7" end="7"/>
+ <lne id="3385" begin="8" end="10"/>
+ <lne id="3386" begin="7" end="11"/>
+ <lne id="3387" begin="0" end="16"/>
+ <lne id="3388" begin="0" end="17"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="6" end="15"/>
+ <lve slot="0" name="132" begin="0" end="17"/>
+ </localvariabletable>
+ </operation>
+ <operation name="73">
+ <context type="3339"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="3380"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="3389"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="1377"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="303"/>
+ </code>
+ <linenumbertable>
+ <lne id="3390" begin="3" end="3"/>
+ <lne id="3391" begin="3" end="4"/>
+ <lne id="3392" begin="7" end="7"/>
+ <lne id="3393" begin="8" end="10"/>
+ <lne id="3394" begin="7" end="11"/>
+ <lne id="3395" begin="0" end="16"/>
+ <lne id="3396" begin="0" end="17"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="6" end="15"/>
+ <lve slot="0" name="132" begin="0" end="17"/>
+ </localvariabletable>
+ </operation>
+ <operation name="75">
+ <context type="3339"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="3380"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="3397"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="1377"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="303"/>
+ </code>
+ <linenumbertable>
+ <lne id="3398" begin="3" end="3"/>
+ <lne id="3399" begin="3" end="4"/>
+ <lne id="3400" begin="7" end="7"/>
+ <lne id="3401" begin="8" end="10"/>
+ <lne id="3402" begin="7" end="11"/>
+ <lne id="3403" begin="0" end="16"/>
+ <lne id="3404" begin="0" end="17"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="6" end="15"/>
+ <lve slot="0" name="132" begin="0" end="17"/>
+ </localvariabletable>
+ </operation>
+ <operation name="77">
+ <context type="3339"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="3380"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="3405"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="1377"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="303"/>
+ </code>
+ <linenumbertable>
+ <lne id="3406" begin="3" end="3"/>
+ <lne id="3407" begin="3" end="4"/>
+ <lne id="3408" begin="7" end="7"/>
+ <lne id="3409" begin="8" end="10"/>
+ <lne id="3410" begin="7" end="11"/>
+ <lne id="3411" begin="0" end="16"/>
+ <lne id="3412" begin="0" end="17"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="6" end="15"/>
+ <lve slot="0" name="132" begin="0" end="17"/>
+ </localvariabletable>
+ </operation>
+ <operation name="79">
+ <context type="3339"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="3380"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="3413"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="1377"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="303"/>
+ </code>
+ <linenumbertable>
+ <lne id="3414" begin="3" end="3"/>
+ <lne id="3415" begin="3" end="4"/>
+ <lne id="3416" begin="7" end="7"/>
+ <lne id="3417" begin="8" end="10"/>
+ <lne id="3418" begin="7" end="11"/>
+ <lne id="3419" begin="0" end="16"/>
+ <lne id="3420" begin="0" end="17"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="6" end="15"/>
+ <lve slot="0" name="132" begin="0" end="17"/>
+ </localvariabletable>
+ </operation>
+ <operation name="81">
+ <context type="3339"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="3380"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="3421"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="1377"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="303"/>
+ </code>
+ <linenumbertable>
+ <lne id="3422" begin="3" end="3"/>
+ <lne id="3423" begin="3" end="4"/>
+ <lne id="3424" begin="7" end="7"/>
+ <lne id="3425" begin="8" end="10"/>
+ <lne id="3426" begin="7" end="11"/>
+ <lne id="3427" begin="0" end="16"/>
+ <lne id="3428" begin="0" end="17"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="6" end="15"/>
+ <lve slot="0" name="132" begin="0" end="17"/>
+ </localvariabletable>
+ </operation>
+ <operation name="83">
+ <context type="3339"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="3380"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="3429"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="1377"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="303"/>
+ </code>
+ <linenumbertable>
+ <lne id="3430" begin="3" end="3"/>
+ <lne id="3431" begin="3" end="4"/>
+ <lne id="3432" begin="7" end="7"/>
+ <lne id="3433" begin="8" end="10"/>
+ <lne id="3434" begin="7" end="11"/>
+ <lne id="3435" begin="0" end="16"/>
+ <lne id="3436" begin="0" end="17"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="6" end="15"/>
+ <lve slot="0" name="132" begin="0" end="17"/>
+ </localvariabletable>
+ </operation>
+ <operation name="85">
+ <context type="3339"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="78"/>
+ <call arg="138"/>
+ <if arg="899"/>
+ <load arg="281"/>
+ <get arg="66"/>
+ <get arg="1230"/>
+ <load arg="281"/>
+ <get arg="78"/>
+ <get arg="3347"/>
+ <call arg="603"/>
+ <goto arg="900"/>
+ <load arg="281"/>
+ <get arg="66"/>
+ </code>
+ <linenumbertable>
+ <lne id="3437" begin="0" end="0"/>
+ <lne id="3438" begin="0" end="1"/>
+ <lne id="3439" begin="0" end="2"/>
+ <lne id="3440" begin="4" end="4"/>
+ <lne id="3441" begin="4" end="5"/>
+ <lne id="3442" begin="4" end="6"/>
+ <lne id="3443" begin="7" end="7"/>
+ <lne id="3444" begin="7" end="8"/>
+ <lne id="3445" begin="7" end="9"/>
+ <lne id="3446" begin="4" end="10"/>
+ <lne id="3447" begin="12" end="12"/>
+ <lne id="3448" begin="12" end="13"/>
+ <lne id="3449" begin="0" end="13"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="13"/>
+ </localvariabletable>
+ </operation>
+ <operation name="87">
+ <context type="3339"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="3380"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="3450"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="1377"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="303"/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <call arg="138"/>
+ <if arg="2052"/>
+ <load arg="134"/>
+ <get arg="86"/>
+ <goto arg="3451"/>
+ <load arg="134"/>
+ </code>
+ <linenumbertable>
+ <lne id="3452" begin="3" end="3"/>
+ <lne id="3453" begin="3" end="4"/>
+ <lne id="3454" begin="7" end="7"/>
+ <lne id="3455" begin="8" end="10"/>
+ <lne id="3456" begin="7" end="11"/>
+ <lne id="3457" begin="0" end="16"/>
+ <lne id="3458" begin="0" end="17"/>
+ <lne id="3459" begin="19" end="19"/>
+ <lne id="3460" begin="19" end="20"/>
+ <lne id="3461" begin="22" end="22"/>
+ <lne id="3462" begin="22" end="23"/>
+ <lne id="3463" begin="25" end="25"/>
+ <lne id="3464" begin="19" end="25"/>
+ <lne id="3465" begin="0" end="25"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="6" end="15"/>
+ <lve slot="1" name="329" begin="18" end="25"/>
+ <lve slot="0" name="132" begin="0" end="25"/>
+ </localvariabletable>
+ </operation>
+ <operation name="89">
+ <context type="3339"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="84"/>
+ <get arg="1230"/>
+ <push arg="503"/>
+ <push arg="504"/>
+ <findme/>
+ <call arg="499"/>
+ <if arg="3348"/>
+ <load arg="281"/>
+ <get arg="84"/>
+ <get arg="1230"/>
+ <push arg="3466"/>
+ <push arg="504"/>
+ <findme/>
+ <call arg="499"/>
+ <if arg="3451"/>
+ <push arg="3194"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="153"/>
+ <load arg="281"/>
+ <get arg="84"/>
+ <get arg="1230"/>
+ <get arg="153"/>
+ <call arg="3467"/>
+ <goto arg="3468"/>
+ <load arg="281"/>
+ <get arg="84"/>
+ <load arg="281"/>
+ <get arg="72"/>
+ <call arg="138"/>
+ <if arg="3469"/>
+ <load arg="281"/>
+ <get arg="72"/>
+ <get arg="149"/>
+ <goto arg="566"/>
+ <push arg="1198"/>
+ <call arg="3470"/>
+ <goto arg="901"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="153"/>
+ <load arg="281"/>
+ <get arg="84"/>
+ <get arg="1230"/>
+ <get arg="153"/>
+ <call arg="302"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="86"/>
+ <load arg="281"/>
+ <get arg="86"/>
+ <call arg="286"/>
+ <call arg="287"/>
+ <if arg="354"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="303"/>
+ </code>
+ <linenumbertable>
+ <lne id="3471" begin="0" end="0"/>
+ <lne id="3472" begin="0" end="1"/>
+ <lne id="3473" begin="0" end="2"/>
+ <lne id="3474" begin="3" end="5"/>
+ <lne id="3475" begin="0" end="6"/>
+ <lne id="3476" begin="8" end="8"/>
+ <lne id="3477" begin="8" end="9"/>
+ <lne id="3478" begin="8" end="10"/>
+ <lne id="3479" begin="11" end="13"/>
+ <lne id="3480" begin="8" end="14"/>
+ <lne id="3481" begin="16" end="18"/>
+ <lne id="3482" begin="19" end="19"/>
+ <lne id="3483" begin="20" end="20"/>
+ <lne id="3484" begin="20" end="21"/>
+ <lne id="3485" begin="20" end="22"/>
+ <lne id="3486" begin="20" end="23"/>
+ <lne id="3487" begin="16" end="24"/>
+ <lne id="3488" begin="26" end="26"/>
+ <lne id="3489" begin="26" end="27"/>
+ <lne id="3490" begin="28" end="28"/>
+ <lne id="3491" begin="28" end="29"/>
+ <lne id="3492" begin="28" end="30"/>
+ <lne id="3493" begin="32" end="32"/>
+ <lne id="3494" begin="32" end="33"/>
+ <lne id="3495" begin="32" end="34"/>
+ <lne id="3496" begin="36" end="36"/>
+ <lne id="3497" begin="28" end="36"/>
+ <lne id="3498" begin="26" end="37"/>
+ <lne id="3499" begin="8" end="37"/>
+ <lne id="3500" begin="42" end="44"/>
+ <lne id="3501" begin="45" end="45"/>
+ <lne id="3502" begin="46" end="46"/>
+ <lne id="3503" begin="46" end="47"/>
+ <lne id="3504" begin="46" end="48"/>
+ <lne id="3505" begin="46" end="49"/>
+ <lne id="3506" begin="42" end="50"/>
+ <lne id="3507" begin="53" end="53"/>
+ <lne id="3508" begin="53" end="54"/>
+ <lne id="3509" begin="55" end="55"/>
+ <lne id="3510" begin="55" end="56"/>
+ <lne id="3511" begin="53" end="57"/>
+ <lne id="3512" begin="39" end="62"/>
+ <lne id="3513" begin="39" end="63"/>
+ <lne id="3514" begin="0" end="63"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="52" end="61"/>
+ <lve slot="0" name="132" begin="0" end="63"/>
+ </localvariabletable>
+ </operation>
+ <operation name="91">
+ <context type="3339"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="281"/>
+ <get arg="66"/>
+ <load arg="281"/>
+ <get arg="84"/>
+ <call arg="286"/>
+ <if arg="3515"/>
+ <push arg="3516"/>
+ <load arg="281"/>
+ <get arg="153"/>
+ <call arg="316"/>
+ <push arg="3517"/>
+ <call arg="316"/>
+ <load arg="281"/>
+ <get arg="66"/>
+ <get arg="1230"/>
+ <get arg="153"/>
+ <call arg="316"/>
+ <push arg="3517"/>
+ <call arg="316"/>
+ <load arg="281"/>
+ <get arg="78"/>
+ <get arg="3347"/>
+ <call arg="316"/>
+ <push arg="3518"/>
+ <call arg="316"/>
+ <load arg="281"/>
+ <get arg="80"/>
+ <call arg="138"/>
+ <if arg="344"/>
+ <push arg="3519"/>
+ <push arg="1198"/>
+ <store arg="134"/>
+ <load arg="281"/>
+ <get arg="80"/>
+ <get arg="3347"/>
+ <iterate/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <load arg="134"/>
+ <push arg="1198"/>
+ <call arg="286"/>
+ <if arg="799"/>
+ <push arg="3520"/>
+ <goto arg="3521"/>
+ <push arg="1198"/>
+ <call arg="316"/>
+ <load arg="144"/>
+ <call arg="316"/>
+ <store arg="134"/>
+ <enditerate/>
+ <load arg="134"/>
+ <call arg="316"/>
+ <push arg="3519"/>
+ <call arg="316"/>
+ <goto arg="802"/>
+ <push arg="1227"/>
+ <call arg="316"/>
+ <push arg="3522"/>
+ <call arg="316"/>
+ <load arg="281"/>
+ <get arg="74"/>
+ <call arg="138"/>
+ <if arg="357"/>
+ <push arg="3519"/>
+ <load arg="281"/>
+ <get arg="74"/>
+ <get arg="149"/>
+ <call arg="1552"/>
+ <call arg="316"/>
+ <push arg="3519"/>
+ <call arg="316"/>
+ <goto arg="334"/>
+ <push arg="3523"/>
+ <call arg="316"/>
+ <push arg="3522"/>
+ <call arg="316"/>
+ <load arg="281"/>
+ <get arg="76"/>
+ <call arg="138"/>
+ <if arg="2198"/>
+ <push arg="3519"/>
+ <load arg="281"/>
+ <get arg="76"/>
+ <get arg="153"/>
+ <call arg="316"/>
+ <push arg="3519"/>
+ <call arg="316"/>
+ <goto arg="1546"/>
+ <push arg="1227"/>
+ <call arg="316"/>
+ <push arg="3522"/>
+ <call arg="316"/>
+ <load arg="281"/>
+ <get arg="70"/>
+ <call arg="1552"/>
+ <call arg="316"/>
+ <push arg="3522"/>
+ <call arg="316"/>
+ <load arg="281"/>
+ <get arg="82"/>
+ <call arg="138"/>
+ <if arg="3524"/>
+ <push arg="3519"/>
+ <push arg="1198"/>
+ <store arg="134"/>
+ <load arg="281"/>
+ <get arg="82"/>
+ <get arg="3347"/>
+ <iterate/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <load arg="134"/>
+ <push arg="1198"/>
+ <call arg="286"/>
+ <if arg="3525"/>
+ <push arg="3520"/>
+ <goto arg="3526"/>
+ <push arg="1198"/>
+ <call arg="316"/>
+ <load arg="144"/>
+ <call arg="316"/>
+ <store arg="134"/>
+ <enditerate/>
+ <load arg="134"/>
+ <call arg="316"/>
+ <push arg="3519"/>
+ <call arg="316"/>
+ <goto arg="3527"/>
+ <push arg="1227"/>
+ <call arg="316"/>
+ <push arg="1553"/>
+ <call arg="316"/>
+ <goto arg="2640"/>
+ <push arg="2503"/>
+ <load arg="281"/>
+ <get arg="153"/>
+ <call arg="316"/>
+ <push arg="3528"/>
+ <call arg="316"/>
+ </code>
+ <linenumbertable>
+ <lne id="3529" begin="0" end="0"/>
+ <lne id="3530" begin="0" end="1"/>
+ <lne id="3531" begin="2" end="2"/>
+ <lne id="3532" begin="2" end="3"/>
+ <lne id="3533" begin="0" end="4"/>
+ <lne id="3534" begin="6" end="6"/>
+ <lne id="3535" begin="7" end="7"/>
+ <lne id="3536" begin="7" end="8"/>
+ <lne id="3537" begin="6" end="9"/>
+ <lne id="3538" begin="10" end="10"/>
+ <lne id="3539" begin="6" end="11"/>
+ <lne id="3540" begin="12" end="12"/>
+ <lne id="3541" begin="12" end="13"/>
+ <lne id="3542" begin="12" end="14"/>
+ <lne id="3543" begin="12" end="15"/>
+ <lne id="3544" begin="6" end="16"/>
+ <lne id="3545" begin="17" end="17"/>
+ <lne id="3546" begin="6" end="18"/>
+ <lne id="3547" begin="19" end="19"/>
+ <lne id="3548" begin="19" end="20"/>
+ <lne id="3549" begin="19" end="21"/>
+ <lne id="3550" begin="6" end="22"/>
+ <lne id="3551" begin="23" end="23"/>
+ <lne id="3552" begin="6" end="24"/>
+ <lne id="3553" begin="25" end="25"/>
+ <lne id="3554" begin="25" end="26"/>
+ <lne id="3555" begin="25" end="27"/>
+ <lne id="3556" begin="29" end="29"/>
+ <lne id="3557" begin="30" end="30"/>
+ <lne id="3558" begin="32" end="32"/>
+ <lne id="3559" begin="32" end="33"/>
+ <lne id="3560" begin="32" end="34"/>
+ <lne id="3561" begin="37" end="37"/>
+ <lne id="3562" begin="38" end="38"/>
+ <lne id="3563" begin="39" end="39"/>
+ <lne id="3564" begin="38" end="40"/>
+ <lne id="3565" begin="42" end="42"/>
+ <lne id="3566" begin="44" end="44"/>
+ <lne id="3567" begin="38" end="44"/>
+ <lne id="3568" begin="37" end="45"/>
+ <lne id="3569" begin="46" end="46"/>
+ <lne id="3570" begin="37" end="47"/>
+ <lne id="3571" begin="30" end="50"/>
+ <lne id="3572" begin="29" end="51"/>
+ <lne id="3573" begin="52" end="52"/>
+ <lne id="3574" begin="29" end="53"/>
+ <lne id="3575" begin="55" end="55"/>
+ <lne id="3576" begin="25" end="55"/>
+ <lne id="3577" begin="6" end="56"/>
+ <lne id="3578" begin="57" end="57"/>
+ <lne id="3579" begin="6" end="58"/>
+ <lne id="3580" begin="59" end="59"/>
+ <lne id="3581" begin="59" end="60"/>
+ <lne id="3582" begin="59" end="61"/>
+ <lne id="3583" begin="63" end="63"/>
+ <lne id="3584" begin="64" end="64"/>
+ <lne id="3585" begin="64" end="65"/>
+ <lne id="3586" begin="64" end="66"/>
+ <lne id="3587" begin="64" end="67"/>
+ <lne id="3588" begin="63" end="68"/>
+ <lne id="3589" begin="69" end="69"/>
+ <lne id="3590" begin="63" end="70"/>
+ <lne id="3591" begin="72" end="72"/>
+ <lne id="3592" begin="59" end="72"/>
+ <lne id="3593" begin="6" end="73"/>
+ <lne id="3594" begin="74" end="74"/>
+ <lne id="3595" begin="6" end="75"/>
+ <lne id="3596" begin="76" end="76"/>
+ <lne id="3597" begin="76" end="77"/>
+ <lne id="3598" begin="76" end="78"/>
+ <lne id="3599" begin="80" end="80"/>
+ <lne id="3600" begin="81" end="81"/>
+ <lne id="3601" begin="81" end="82"/>
+ <lne id="3602" begin="81" end="83"/>
+ <lne id="3603" begin="80" end="84"/>
+ <lne id="3604" begin="85" end="85"/>
+ <lne id="3605" begin="80" end="86"/>
+ <lne id="3606" begin="88" end="88"/>
+ <lne id="3607" begin="76" end="88"/>
+ <lne id="3608" begin="6" end="89"/>
+ <lne id="3609" begin="90" end="90"/>
+ <lne id="3610" begin="6" end="91"/>
+ <lne id="3611" begin="92" end="92"/>
+ <lne id="3612" begin="92" end="93"/>
+ <lne id="3613" begin="92" end="94"/>
+ <lne id="3614" begin="6" end="95"/>
+ <lne id="3615" begin="96" end="96"/>
+ <lne id="3616" begin="6" end="97"/>
+ <lne id="3617" begin="98" end="98"/>
+ <lne id="3618" begin="98" end="99"/>
+ <lne id="3619" begin="98" end="100"/>
+ <lne id="3620" begin="102" end="102"/>
+ <lne id="3621" begin="103" end="103"/>
+ <lne id="3622" begin="105" end="105"/>
+ <lne id="3623" begin="105" end="106"/>
+ <lne id="3624" begin="105" end="107"/>
+ <lne id="3625" begin="110" end="110"/>
+ <lne id="3626" begin="111" end="111"/>
+ <lne id="3627" begin="112" end="112"/>
+ <lne id="3628" begin="111" end="113"/>
+ <lne id="3629" begin="115" end="115"/>
+ <lne id="3630" begin="117" end="117"/>
+ <lne id="3631" begin="111" end="117"/>
+ <lne id="3632" begin="110" end="118"/>
+ <lne id="3633" begin="119" end="119"/>
+ <lne id="3634" begin="110" end="120"/>
+ <lne id="3635" begin="103" end="123"/>
+ <lne id="3636" begin="102" end="124"/>
+ <lne id="3637" begin="125" end="125"/>
+ <lne id="3638" begin="102" end="126"/>
+ <lne id="3639" begin="128" end="128"/>
+ <lne id="3640" begin="98" end="128"/>
+ <lne id="3641" begin="6" end="129"/>
+ <lne id="3642" begin="130" end="130"/>
+ <lne id="3643" begin="6" end="131"/>
+ <lne id="3644" begin="133" end="133"/>
+ <lne id="3645" begin="134" end="134"/>
+ <lne id="3646" begin="134" end="135"/>
+ <lne id="3647" begin="133" end="136"/>
+ <lne id="3648" begin="137" end="137"/>
+ <lne id="3649" begin="133" end="138"/>
+ <lne id="3650" begin="0" end="138"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="148" begin="36" end="48"/>
+ <lve slot="1" name="2038" begin="31" end="50"/>
+ <lve slot="2" name="148" begin="109" end="121"/>
+ <lve slot="1" name="2038" begin="104" end="123"/>
+ <lve slot="0" name="132" begin="0" end="138"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3651">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="65"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="68"/>
+ <pushi arg="134"/>
+ <call arg="286"/>
+ <call arg="287"/>
+ <if arg="3521"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="263"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="2195"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1119"/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1649"/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="777"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="3652" begin="7" end="7"/>
+ <lne id="3653" begin="7" end="8"/>
+ <lne id="3654" begin="9" end="9"/>
+ <lne id="3655" begin="7" end="10"/>
+ <lne id="3656" begin="27" end="29"/>
+ <lne id="3657" begin="25" end="30"/>
+ <lne id="3658" begin="33" end="35"/>
+ <lne id="3659" begin="31" end="36"/>
+ <lne id="3660" begin="39" end="41"/>
+ <lne id="3661" begin="37" end="42"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="2195" begin="6" end="44"/>
+ <lve slot="0" name="132" begin="0" end="45"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3662">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="2195"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1119"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="1649"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="777"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="88"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="88"/>
+ <get arg="1650"/>
+ <call arg="145"/>
+ <set arg="1651"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <dup/>
+ <getasm/>
+ <load arg="745"/>
+ <call arg="145"/>
+ <set arg="806"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="16"/>
+ <push arg="1422"/>
+ <call arg="1652"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="90"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="3663" begin="19" end="19"/>
+ <lne id="3664" begin="19" end="20"/>
+ <lne id="3665" begin="17" end="22"/>
+ <lne id="3666" begin="25" end="25"/>
+ <lne id="3667" begin="25" end="26"/>
+ <lne id="3668" begin="23" end="28"/>
+ <lne id="3669" begin="31" end="31"/>
+ <lne id="3670" begin="31" end="32"/>
+ <lne id="3671" begin="31" end="33"/>
+ <lne id="3672" begin="29" end="35"/>
+ <lne id="3673" begin="38" end="38"/>
+ <lne id="3674" begin="36" end="40"/>
+ <lne id="3675" begin="43" end="43"/>
+ <lne id="3676" begin="41" end="45"/>
+ <lne id="3657" begin="16" end="46"/>
+ <lne id="3677" begin="50" end="50"/>
+ <lne id="3678" begin="50" end="51"/>
+ <lne id="3679" begin="48" end="53"/>
+ <lne id="3680" begin="56" end="56"/>
+ <lne id="3681" begin="57" end="57"/>
+ <lne id="3682" begin="57" end="58"/>
+ <lne id="3683" begin="59" end="59"/>
+ <lne id="3684" begin="56" end="60"/>
+ <lne id="3685" begin="54" end="62"/>
+ <lne id="3659" begin="47" end="63"/>
+ <lne id="3686" begin="67" end="67"/>
+ <lne id="3687" begin="67" end="68"/>
+ <lne id="3688" begin="65" end="70"/>
+ <lne id="3689" begin="73" end="73"/>
+ <lne id="3690" begin="73" end="74"/>
+ <lne id="3691" begin="71" end="76"/>
+ <lne id="3661" begin="64" end="77"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="1119" begin="7" end="77"/>
+ <lve slot="4" name="1649" begin="11" end="77"/>
+ <lve slot="5" name="777" begin="15" end="77"/>
+ <lve slot="2" name="2195" begin="3" end="77"/>
+ <lve slot="0" name="132" begin="0" end="77"/>
+ <lve slot="1" name="652" begin="0" end="77"/>
+ </localvariabletable>
+ </operation>
+ <operation name="93">
+ <context type="3339"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="281"/>
+ <get arg="3380"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="3692"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="1377"/>
+ <load arg="134"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="303"/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <call arg="138"/>
+ <if arg="2052"/>
+ <load arg="134"/>
+ <get arg="149"/>
+ <goto arg="1100"/>
+ <load arg="281"/>
+ <get arg="66"/>
+ <get arg="92"/>
+ </code>
+ <linenumbertable>
+ <lne id="3693" begin="3" end="3"/>
+ <lne id="3694" begin="3" end="4"/>
+ <lne id="3695" begin="7" end="7"/>
+ <lne id="3696" begin="8" end="10"/>
+ <lne id="3697" begin="7" end="11"/>
+ <lne id="3698" begin="0" end="16"/>
+ <lne id="3699" begin="0" end="17"/>
+ <lne id="3700" begin="19" end="19"/>
+ <lne id="3701" begin="19" end="20"/>
+ <lne id="3702" begin="22" end="22"/>
+ <lne id="3703" begin="22" end="23"/>
+ <lne id="3704" begin="25" end="25"/>
+ <lne id="3705" begin="25" end="26"/>
+ <lne id="3706" begin="25" end="27"/>
+ <lne id="3707" begin="19" end="27"/>
+ <lne id="3708" begin="0" end="27"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="148" begin="6" end="15"/>
+ <lve slot="1" name="3709" begin="18" end="27"/>
+ <lve slot="0" name="132" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3710">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="65"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <get arg="68"/>
+ <pushi arg="134"/>
+ <call arg="1129"/>
+ <load arg="134"/>
+ <get arg="68"/>
+ <pushi arg="281"/>
+ <pushi arg="134"/>
+ <call arg="699"/>
+ <call arg="286"/>
+ <call arg="2171"/>
+ <call arg="287"/>
+ <if arg="3711"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="265"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="2195"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="621"/>
+ <push arg="690"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="3712"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="3713"/>
+ <push arg="690"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="3714"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="3715"/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="3716"/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="3717"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="3718"/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="3719"/>
+ <push arg="1124"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="3720"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="3721" begin="7" end="7"/>
+ <lne id="3722" begin="7" end="8"/>
+ <lne id="3723" begin="9" end="9"/>
+ <lne id="3724" begin="7" end="10"/>
+ <lne id="3725" begin="11" end="11"/>
+ <lne id="3726" begin="11" end="12"/>
+ <lne id="3727" begin="13" end="13"/>
+ <lne id="3728" begin="14" end="14"/>
+ <lne id="3729" begin="13" end="15"/>
+ <lne id="3730" begin="11" end="16"/>
+ <lne id="3731" begin="7" end="17"/>
+ <lne id="3732" begin="34" end="36"/>
+ <lne id="3733" begin="32" end="37"/>
+ <lne id="3734" begin="40" end="42"/>
+ <lne id="3735" begin="38" end="43"/>
+ <lne id="3736" begin="46" end="48"/>
+ <lne id="3737" begin="44" end="49"/>
+ <lne id="3738" begin="52" end="54"/>
+ <lne id="3739" begin="50" end="55"/>
+ <lne id="3740" begin="58" end="60"/>
+ <lne id="3741" begin="56" end="61"/>
+ <lne id="3742" begin="64" end="66"/>
+ <lne id="3743" begin="62" end="67"/>
+ <lne id="3744" begin="70" end="72"/>
+ <lne id="3745" begin="68" end="73"/>
+ <lne id="3746" begin="76" end="78"/>
+ <lne id="3747" begin="74" end="79"/>
+ <lne id="3748" begin="82" end="84"/>
+ <lne id="3749" begin="80" end="85"/>
+ <lne id="3750" begin="88" end="90"/>
+ <lne id="3751" begin="86" end="91"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="2195" begin="6" end="93"/>
+ <lve slot="0" name="132" begin="0" end="94"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3752">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="2195"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="621"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="3712"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="3713"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="3714"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="134"/>
+ <push arg="3715"/>
+ <call arg="636"/>
+ <store arg="746"/>
+ <load arg="134"/>
+ <push arg="3716"/>
+ <call arg="636"/>
+ <store arg="564"/>
+ <load arg="134"/>
+ <push arg="3717"/>
+ <call arg="636"/>
+ <store arg="500"/>
+ <load arg="134"/>
+ <push arg="3718"/>
+ <call arg="636"/>
+ <store arg="313"/>
+ <load arg="134"/>
+ <push arg="3719"/>
+ <call arg="636"/>
+ <store arg="501"/>
+ <load arg="134"/>
+ <push arg="3720"/>
+ <call arg="636"/>
+ <store arg="899"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="92"/>
+ <pushi arg="281"/>
+ <call arg="286"/>
+ <if arg="3753"/>
+ <pushi arg="134"/>
+ <goto arg="3303"/>
+ <pushi arg="281"/>
+ <call arg="145"/>
+ <set arg="92"/>
+ <dup/>
+ <getasm/>
+ <pushi arg="134"/>
+ <call arg="145"/>
+ <set arg="68"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="746"/>
+ <call arg="288"/>
+ <load arg="745"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="92"/>
+ <pushi arg="281"/>
+ <call arg="286"/>
+ <if arg="2103"/>
+ <load arg="144"/>
+ <get arg="92"/>
+ <pushi arg="134"/>
+ <call arg="699"/>
+ <goto arg="2101"/>
+ <pushi arg="281"/>
+ <call arg="145"/>
+ <set arg="92"/>
+ <dup/>
+ <getasm/>
+ <pushi arg="281"/>
+ <pushi arg="134"/>
+ <call arg="699"/>
+ <call arg="145"/>
+ <set arg="68"/>
+ <dup/>
+ <getasm/>
+ <load arg="563"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="3380"/>
+ <iterate/>
+ <store arg="314"/>
+ <load arg="314"/>
+ <push arg="3754"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <call arg="287"/>
+ <if arg="3755"/>
+ <load arg="314"/>
+ <call arg="288"/>
+ <enditerate/>
+ <call arg="303"/>
+ <store arg="314"/>
+ <load arg="314"/>
+ <call arg="138"/>
+ <if arg="3756"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="314"/>
+ <get arg="3757"/>
+ <call arg="288"/>
+ <load arg="313"/>
+ <call arg="288"/>
+ <goto arg="1928"/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="313"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ <load arg="746"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="88"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="88"/>
+ <get arg="1650"/>
+ <call arg="145"/>
+ <set arg="1651"/>
+ <dup/>
+ <getasm/>
+ <load arg="564"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <dup/>
+ <getasm/>
+ <load arg="500"/>
+ <call arg="145"/>
+ <set arg="806"/>
+ <pop/>
+ <load arg="564"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="16"/>
+ <push arg="1422"/>
+ <call arg="1652"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="500"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="90"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="313"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="88"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="88"/>
+ <get arg="1650"/>
+ <call arg="145"/>
+ <set arg="1651"/>
+ <dup/>
+ <getasm/>
+ <load arg="501"/>
+ <call arg="145"/>
+ <set arg="1221"/>
+ <dup/>
+ <getasm/>
+ <load arg="899"/>
+ <call arg="145"/>
+ <set arg="806"/>
+ <pop/>
+ <load arg="501"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="16"/>
+ <push arg="1422"/>
+ <call arg="1652"/>
+ <call arg="145"/>
+ <set arg="1223"/>
+ <pop/>
+ <load arg="899"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="90"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="3758" begin="47" end="47"/>
+ <lne id="3759" begin="47" end="48"/>
+ <lne id="3760" begin="45" end="50"/>
+ <lne id="3761" begin="53" end="53"/>
+ <lne id="3762" begin="53" end="54"/>
+ <lne id="3763" begin="55" end="55"/>
+ <lne id="3764" begin="53" end="56"/>
+ <lne id="3765" begin="58" end="58"/>
+ <lne id="3766" begin="60" end="60"/>
+ <lne id="3767" begin="53" end="60"/>
+ <lne id="3768" begin="51" end="62"/>
+ <lne id="3769" begin="65" end="65"/>
+ <lne id="3770" begin="63" end="67"/>
+ <lne id="3771" begin="70" end="70"/>
+ <lne id="3772" begin="68" end="72"/>
+ <lne id="3733" begin="44" end="73"/>
+ <lne id="3773" begin="77" end="77"/>
+ <lne id="3774" begin="77" end="78"/>
+ <lne id="3775" begin="75" end="80"/>
+ <lne id="3776" begin="86" end="86"/>
+ <lne id="3777" begin="88" end="88"/>
+ <lne id="3778" begin="83" end="89"/>
+ <lne id="3779" begin="81" end="91"/>
+ <lne id="3735" begin="74" end="92"/>
+ <lne id="3780" begin="96" end="96"/>
+ <lne id="3781" begin="96" end="97"/>
+ <lne id="3782" begin="98" end="98"/>
+ <lne id="3783" begin="96" end="99"/>
+ <lne id="3784" begin="101" end="101"/>
+ <lne id="3785" begin="101" end="102"/>
+ <lne id="3786" begin="103" end="103"/>
+ <lne id="3787" begin="101" end="104"/>
+ <lne id="3788" begin="106" end="106"/>
+ <lne id="3789" begin="96" end="106"/>
+ <lne id="3790" begin="94" end="108"/>
+ <lne id="3791" begin="111" end="111"/>
+ <lne id="3792" begin="112" end="112"/>
+ <lne id="3793" begin="111" end="113"/>
+ <lne id="3794" begin="109" end="115"/>
+ <lne id="3795" begin="118" end="118"/>
+ <lne id="3796" begin="116" end="120"/>
+ <lne id="3737" begin="93" end="121"/>
+ <lne id="3797" begin="125" end="125"/>
+ <lne id="3798" begin="125" end="126"/>
+ <lne id="3799" begin="123" end="128"/>
+ <lne id="3800" begin="134" end="134"/>
+ <lne id="3801" begin="134" end="135"/>
+ <lne id="3802" begin="138" end="138"/>
+ <lne id="3803" begin="139" end="141"/>
+ <lne id="3804" begin="138" end="142"/>
+ <lne id="3805" begin="131" end="147"/>
+ <lne id="3806" begin="131" end="148"/>
+ <lne id="3807" begin="150" end="150"/>
+ <lne id="3808" begin="150" end="151"/>
+ <lne id="3809" begin="156" end="156"/>
+ <lne id="3810" begin="156" end="157"/>
+ <lne id="3811" begin="159" end="159"/>
+ <lne id="3812" begin="153" end="160"/>
+ <lne id="3813" begin="165" end="165"/>
+ <lne id="3814" begin="162" end="166"/>
+ <lne id="3815" begin="150" end="166"/>
+ <lne id="3816" begin="131" end="166"/>
+ <lne id="3817" begin="129" end="168"/>
+ <lne id="3739" begin="122" end="169"/>
+ <lne id="3818" begin="173" end="173"/>
+ <lne id="3819" begin="173" end="174"/>
+ <lne id="3820" begin="171" end="176"/>
+ <lne id="3821" begin="179" end="179"/>
+ <lne id="3822" begin="179" end="180"/>
+ <lne id="3823" begin="177" end="182"/>
+ <lne id="3824" begin="185" end="185"/>
+ <lne id="3825" begin="185" end="186"/>
+ <lne id="3826" begin="185" end="187"/>
+ <lne id="3827" begin="183" end="189"/>
+ <lne id="3828" begin="192" end="192"/>
+ <lne id="3829" begin="190" end="194"/>
+ <lne id="3830" begin="197" end="197"/>
+ <lne id="3831" begin="195" end="199"/>
+ <lne id="3741" begin="170" end="200"/>
+ <lne id="3832" begin="204" end="204"/>
+ <lne id="3833" begin="204" end="205"/>
+ <lne id="3834" begin="202" end="207"/>
+ <lne id="3835" begin="210" end="210"/>
+ <lne id="3836" begin="211" end="211"/>
+ <lne id="3837" begin="211" end="212"/>
+ <lne id="3838" begin="213" end="213"/>
+ <lne id="3839" begin="210" end="214"/>
+ <lne id="3840" begin="208" end="216"/>
+ <lne id="3743" begin="201" end="217"/>
+ <lne id="3841" begin="221" end="221"/>
+ <lne id="3842" begin="221" end="222"/>
+ <lne id="3843" begin="219" end="224"/>
+ <lne id="3844" begin="227" end="227"/>
+ <lne id="3845" begin="227" end="228"/>
+ <lne id="3846" begin="225" end="230"/>
+ <lne id="3745" begin="218" end="231"/>
+ <lne id="3847" begin="235" end="235"/>
+ <lne id="3848" begin="235" end="236"/>
+ <lne id="3849" begin="233" end="238"/>
+ <lne id="3850" begin="241" end="241"/>
+ <lne id="3851" begin="241" end="242"/>
+ <lne id="3852" begin="239" end="244"/>
+ <lne id="3853" begin="247" end="247"/>
+ <lne id="3854" begin="247" end="248"/>
+ <lne id="3855" begin="247" end="249"/>
+ <lne id="3856" begin="245" end="251"/>
+ <lne id="3857" begin="254" end="254"/>
+ <lne id="3858" begin="252" end="256"/>
+ <lne id="3859" begin="259" end="259"/>
+ <lne id="3860" begin="257" end="261"/>
+ <lne id="3747" begin="232" end="262"/>
+ <lne id="3861" begin="266" end="266"/>
+ <lne id="3862" begin="266" end="267"/>
+ <lne id="3863" begin="264" end="269"/>
+ <lne id="3864" begin="272" end="272"/>
+ <lne id="3865" begin="273" end="273"/>
+ <lne id="3866" begin="273" end="274"/>
+ <lne id="3867" begin="275" end="275"/>
+ <lne id="3868" begin="272" end="276"/>
+ <lne id="3869" begin="270" end="278"/>
+ <lne id="3749" begin="263" end="279"/>
+ <lne id="3870" begin="283" end="283"/>
+ <lne id="3871" begin="283" end="284"/>
+ <lne id="3872" begin="281" end="286"/>
+ <lne id="3873" begin="289" end="289"/>
+ <lne id="3874" begin="289" end="290"/>
+ <lne id="3875" begin="287" end="292"/>
+ <lne id="3751" begin="280" end="293"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="13" name="148" begin="137" end="146"/>
+ <lve slot="13" name="3876" begin="149" end="166"/>
+ <lve slot="3" name="621" begin="7" end="293"/>
+ <lve slot="4" name="3712" begin="11" end="293"/>
+ <lve slot="5" name="3713" begin="15" end="293"/>
+ <lve slot="6" name="3714" begin="19" end="293"/>
+ <lve slot="7" name="3715" begin="23" end="293"/>
+ <lve slot="8" name="3716" begin="27" end="293"/>
+ <lve slot="9" name="3717" begin="31" end="293"/>
+ <lve slot="10" name="3718" begin="35" end="293"/>
+ <lve slot="11" name="3719" begin="39" end="293"/>
+ <lve slot="12" name="3720" begin="43" end="293"/>
+ <lve slot="2" name="2195" begin="3" end="293"/>
+ <lve slot="0" name="132" begin="0" end="293"/>
+ <lve slot="1" name="652" begin="0" end="293"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3877">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="3878"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="267"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="2342"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1118"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="3879" begin="21" end="23"/>
+ <lne id="3880" begin="19" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="2342" begin="6" end="26"/>
+ <lve slot="0" name="132" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3881">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="2342"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1118"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="3882"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="3883" begin="11" end="11"/>
+ <lne id="3884" begin="11" end="12"/>
+ <lne id="3885" begin="9" end="14"/>
+ <lne id="3886" begin="17" end="17"/>
+ <lne id="3887" begin="17" end="18"/>
+ <lne id="3888" begin="15" end="20"/>
+ <lne id="3880" begin="8" end="21"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="1118" begin="7" end="21"/>
+ <lve slot="2" name="2342" begin="3" end="21"/>
+ <lve slot="0" name="132" begin="0" end="21"/>
+ <lve slot="1" name="652" begin="0" end="21"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3889">
+ <context type="3890"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="3519"/>
+ <load arg="281"/>
+ <get arg="3891"/>
+ <call arg="316"/>
+ <push arg="3519"/>
+ <call arg="316"/>
+ </code>
+ <linenumbertable>
+ <lne id="3892" begin="0" end="0"/>
+ <lne id="3893" begin="1" end="1"/>
+ <lne id="3894" begin="1" end="2"/>
+ <lne id="3895" begin="0" end="3"/>
+ <lne id="3896" begin="4" end="4"/>
+ <lne id="3897" begin="0" end="5"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="5"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3889">
+ <context type="3898"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="3899"/>
+ <load arg="281"/>
+ <get arg="3891"/>
+ <call arg="1552"/>
+ <call arg="316"/>
+ <push arg="3900"/>
+ <call arg="316"/>
+ </code>
+ <linenumbertable>
+ <lne id="3901" begin="0" end="0"/>
+ <lne id="3902" begin="1" end="1"/>
+ <lne id="3903" begin="1" end="2"/>
+ <lne id="3904" begin="1" end="3"/>
+ <lne id="3905" begin="0" end="4"/>
+ <lne id="3906" begin="5" end="5"/>
+ <lne id="3907" begin="0" end="6"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="6"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3889">
+ <context type="3908"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="3909"/>
+ <load arg="281"/>
+ <get arg="3891"/>
+ <call arg="1552"/>
+ <call arg="316"/>
+ <push arg="3900"/>
+ <call arg="316"/>
+ </code>
+ <linenumbertable>
+ <lne id="3910" begin="0" end="0"/>
+ <lne id="3911" begin="1" end="1"/>
+ <lne id="3912" begin="1" end="2"/>
+ <lne id="3913" begin="1" end="3"/>
+ <lne id="3914" begin="0" end="4"/>
+ <lne id="3915" begin="5" end="5"/>
+ <lne id="3916" begin="0" end="6"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="6"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3889">
+ <context type="3917"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="3918"/>
+ <load arg="281"/>
+ <get arg="153"/>
+ <call arg="316"/>
+ <push arg="3919"/>
+ <call arg="316"/>
+ </code>
+ <linenumbertable>
+ <lne id="3920" begin="0" end="0"/>
+ <lne id="3921" begin="1" end="1"/>
+ <lne id="3922" begin="1" end="2"/>
+ <lne id="3923" begin="0" end="3"/>
+ <lne id="3924" begin="4" end="4"/>
+ <lne id="3925" begin="0" end="5"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="132" begin="0" end="5"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3926">
+ <context type="487"/>
+ <parameters>
+ <parameter name="134" type="4"/>
+ </parameters>
+ <code>
+ <push arg="1198"/>
+ <store arg="144"/>
+ <load arg="281"/>
+ <get arg="488"/>
+ <get arg="489"/>
+ <iterate/>
+ <store arg="284"/>
+ <load arg="144"/>
+ <load arg="144"/>
+ <push arg="1198"/>
+ <call arg="286"/>
+ <if arg="900"/>
+ <push arg="3927"/>
+ <goto arg="139"/>
+ <push arg="1198"/>
+ <call arg="316"/>
+ <load arg="284"/>
+ <push arg="3928"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <if arg="427"/>
+ <load arg="284"/>
+ <push arg="3929"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="499"/>
+ <if arg="142"/>
+ <push arg="1198"/>
+ <goto arg="429"/>
+ <load arg="134"/>
+ <if arg="698"/>
+ <push arg="1198"/>
+ <goto arg="429"/>
+ <push arg="2503"/>
+ <load arg="284"/>
+ <get arg="3347"/>
+ <call arg="316"/>
+ <push arg="3930"/>
+ <call arg="316"/>
+ <load arg="284"/>
+ <get arg="149"/>
+ <call arg="3931"/>
+ <call arg="316"/>
+ <push arg="1553"/>
+ <call arg="316"/>
+ <goto arg="3303"/>
+ <push arg="2503"/>
+ <load arg="284"/>
+ <get arg="3347"/>
+ <call arg="316"/>
+ <push arg="3932"/>
+ <call arg="316"/>
+ <load arg="134"/>
+ <if arg="2096"/>
+ <push arg="3933"/>
+ <goto arg="353"/>
+ <push arg="3934"/>
+ <call arg="316"/>
+ <push arg="1553"/>
+ <call arg="316"/>
+ <call arg="316"/>
+ <store arg="144"/>
+ <enditerate/>
+ <load arg="144"/>
+ </code>
+ <linenumbertable>
+ <lne id="3935" begin="0" end="0"/>
+ <lne id="3936" begin="2" end="2"/>
+ <lne id="3937" begin="2" end="3"/>
+ <lne id="3938" begin="2" end="4"/>
+ <lne id="3939" begin="7" end="7"/>
+ <lne id="3940" begin="8" end="8"/>
+ <lne id="3941" begin="9" end="9"/>
+ <lne id="3942" begin="8" end="10"/>
+ <lne id="3943" begin="12" end="12"/>
+ <lne id="3944" begin="14" end="14"/>
+ <lne id="3945" begin="8" end="14"/>
+ <lne id="3946" begin="7" end="15"/>
+ <lne id="3947" begin="16" end="16"/>
+ <lne id="3948" begin="17" end="19"/>
+ <lne id="3949" begin="16" end="20"/>
+ <lne id="3950" begin="22" end="22"/>
+ <lne id="3951" begin="23" end="25"/>
+ <lne id="3952" begin="22" end="26"/>
+ <lne id="3953" begin="28" end="28"/>
+ <lne id="3954" begin="30" end="30"/>
+ <lne id="3955" begin="32" end="32"/>
+ <lne id="3956" begin="34" end="34"/>
+ <lne id="3957" begin="35" end="35"/>
+ <lne id="3958" begin="35" end="36"/>
+ <lne id="3959" begin="34" end="37"/>
+ <lne id="3960" begin="38" end="38"/>
+ <lne id="3961" begin="34" end="39"/>
+ <lne id="3962" begin="40" end="40"/>
+ <lne id="3963" begin="40" end="41"/>
+ <lne id="3964" begin="40" end="42"/>
+ <lne id="3965" begin="34" end="43"/>
+ <lne id="3966" begin="44" end="44"/>
+ <lne id="3967" begin="34" end="45"/>
+ <lne id="3968" begin="30" end="45"/>
+ <lne id="3969" begin="22" end="45"/>
+ <lne id="3970" begin="47" end="47"/>
+ <lne id="3971" begin="48" end="48"/>
+ <lne id="3972" begin="48" end="49"/>
+ <lne id="3973" begin="47" end="50"/>
+ <lne id="3974" begin="51" end="51"/>
+ <lne id="3975" begin="47" end="52"/>
+ <lne id="3976" begin="53" end="53"/>
+ <lne id="3977" begin="55" end="55"/>
+ <lne id="3978" begin="57" end="57"/>
+ <lne id="3979" begin="53" end="57"/>
+ <lne id="3980" begin="47" end="58"/>
+ <lne id="3981" begin="59" end="59"/>
+ <lne id="3982" begin="47" end="60"/>
+ <lne id="3983" begin="16" end="60"/>
+ <lne id="3984" begin="7" end="61"/>
+ <lne id="3985" begin="0" end="64"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="148" begin="6" end="62"/>
+ <lve slot="2" name="2038" begin="1" end="64"/>
+ <lve slot="0" name="132" begin="0" end="64"/>
+ <lve slot="1" name="3986" begin="0" end="64"/>
+ </localvariabletable>
+ </operation>
+ <operation name="3987">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="21"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <load arg="134"/>
+ <push arg="21"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="353"/>
+ <load arg="134"/>
+ <get arg="3988"/>
+ <call arg="138"/>
+ <call arg="287"/>
+ <if arg="353"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="271"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="3989"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="3990"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="1118"/>
+ <push arg="679"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="3991"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="3992"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <goto arg="1111"/>
+ <load arg="134"/>
+ <push arg="21"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="135"/>
+ <call arg="287"/>
+ <if arg="1111"/>
+ <load arg="134"/>
+ <get arg="3988"/>
+ <call arg="138"/>
+ <call arg="333"/>
+ <call arg="287"/>
+ <if arg="1111"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="273"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="3989"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="3990"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="3992"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="3991"/>
+ <push arg="778"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <goto arg="1111"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="3993" begin="14" end="14"/>
+ <lne id="3994" begin="14" end="15"/>
+ <lne id="3995" begin="14" end="16"/>
+ <lne id="3996" begin="33" end="35"/>
+ <lne id="3997" begin="31" end="36"/>
+ <lne id="3998" begin="39" end="41"/>
+ <lne id="3999" begin="37" end="42"/>
+ <lne id="4000" begin="45" end="47"/>
+ <lne id="4001" begin="43" end="48"/>
+ <lne id="4002" begin="51" end="53"/>
+ <lne id="4003" begin="49" end="54"/>
+ <lne id="4004" begin="65" end="65"/>
+ <lne id="4005" begin="65" end="66"/>
+ <lne id="4006" begin="65" end="67"/>
+ <lne id="4007" begin="65" end="68"/>
+ <lne id="4008" begin="85" end="87"/>
+ <lne id="4009" begin="83" end="88"/>
+ <lne id="4010" begin="91" end="93"/>
+ <lne id="4011" begin="89" end="94"/>
+ <lne id="4000" begin="97" end="99"/>
+ <lne id="4001" begin="95" end="100"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="3989" begin="6" end="103"/>
+ <lve slot="0" name="132" begin="0" end="104"/>
+ </localvariabletable>
+ </operation>
+ <operation name="4012">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="3989"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="3990"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="3991"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="3992"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="134"/>
+ <push arg="1118"/>
+ <call arg="636"/>
+ <store arg="563"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="4013"/>
+ <call arg="288"/>
+ <load arg="563"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <pop/>
+ <load arg="563"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="745"/>
+ <call arg="145"/>
+ <set arg="806"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="4013"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <pusht/>
+ <call arg="4014"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <pushf/>
+ <call arg="4014"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="4015" begin="26" end="26"/>
+ <lne id="4016" begin="26" end="27"/>
+ <lne id="4017" begin="29" end="29"/>
+ <lne id="4018" begin="23" end="30"/>
+ <lne id="4019" begin="21" end="32"/>
+ <lne id="4020" begin="35" end="35"/>
+ <lne id="4021" begin="35" end="36"/>
+ <lne id="4022" begin="33" end="38"/>
+ <lne id="3997" begin="20" end="39"/>
+ <lne id="4023" begin="43" end="43"/>
+ <lne id="4024" begin="43" end="44"/>
+ <lne id="4025" begin="41" end="46"/>
+ <lne id="4026" begin="49" end="49"/>
+ <lne id="4027" begin="47" end="51"/>
+ <lne id="3999" begin="40" end="52"/>
+ <lne id="4028" begin="56" end="56"/>
+ <lne id="4029" begin="56" end="57"/>
+ <lne id="4030" begin="54" end="59"/>
+ <lne id="4031" begin="62" end="62"/>
+ <lne id="4032" begin="63" end="63"/>
+ <lne id="4033" begin="62" end="64"/>
+ <lne id="4034" begin="60" end="66"/>
+ <lne id="4001" begin="53" end="67"/>
+ <lne id="4035" begin="71" end="71"/>
+ <lne id="4036" begin="72" end="72"/>
+ <lne id="4037" begin="71" end="73"/>
+ <lne id="4038" begin="69" end="75"/>
+ <lne id="4003" begin="68" end="76"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="3990" begin="7" end="76"/>
+ <lve slot="4" name="3991" begin="11" end="76"/>
+ <lve slot="5" name="3992" begin="15" end="76"/>
+ <lve slot="6" name="1118" begin="19" end="76"/>
+ <lve slot="2" name="3989" begin="3" end="76"/>
+ <lve slot="0" name="132" begin="0" end="76"/>
+ <lve slot="1" name="652" begin="0" end="76"/>
+ </localvariabletable>
+ </operation>
+ <operation name="4039">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="3989"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="3990"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="3991"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="134"/>
+ <push arg="3992"/>
+ <call arg="636"/>
+ <store arg="745"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <push arg="143"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="144"/>
+ <get arg="4013"/>
+ <call arg="288"/>
+ <load arg="144"/>
+ <get arg="3988"/>
+ <call arg="288"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <pop/>
+ <load arg="745"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="3988"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <pushf/>
+ <call arg="4014"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="4013"/>
+ <call arg="145"/>
+ <set arg="640"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <pusht/>
+ <call arg="4014"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="4040" begin="22" end="22"/>
+ <lne id="4041" begin="22" end="23"/>
+ <lne id="4042" begin="25" end="25"/>
+ <lne id="4043" begin="25" end="26"/>
+ <lne id="4044" begin="19" end="27"/>
+ <lne id="4045" begin="17" end="29"/>
+ <lne id="4020" begin="32" end="32"/>
+ <lne id="4021" begin="32" end="33"/>
+ <lne id="4022" begin="30" end="35"/>
+ <lne id="4009" begin="16" end="36"/>
+ <lne id="4046" begin="40" end="40"/>
+ <lne id="4047" begin="40" end="41"/>
+ <lne id="4048" begin="38" end="43"/>
+ <lne id="4035" begin="46" end="46"/>
+ <lne id="4036" begin="47" end="47"/>
+ <lne id="4037" begin="46" end="48"/>
+ <lne id="4038" begin="44" end="50"/>
+ <lne id="4011" begin="37" end="51"/>
+ <lne id="4028" begin="55" end="55"/>
+ <lne id="4029" begin="55" end="56"/>
+ <lne id="4030" begin="53" end="58"/>
+ <lne id="4031" begin="61" end="61"/>
+ <lne id="4032" begin="62" end="62"/>
+ <lne id="4033" begin="61" end="63"/>
+ <lne id="4034" begin="59" end="65"/>
+ <lne id="4001" begin="52" end="66"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="3990" begin="7" end="66"/>
+ <lve slot="4" name="3991" begin="11" end="66"/>
+ <lve slot="5" name="3992" begin="15" end="66"/>
+ <lve slot="2" name="3989" begin="3" end="66"/>
+ <lve slot="0" name="132" begin="0" end="66"/>
+ <lve slot="1" name="652" begin="0" end="66"/>
+ </localvariabletable>
+ </operation>
+ <operation name="4049">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="669"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="275"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="3989"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="3990"/>
+ <push arg="669"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="4050" begin="21" end="23"/>
+ <lne id="4051" begin="19" end="24"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="3989" begin="6" end="26"/>
+ <lve slot="0" name="132" begin="0" end="27"/>
+ </localvariabletable>
+ </operation>
+ <operation name="4052">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="3989"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="3990"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="1181"/>
+ <call arg="145"/>
+ <set arg="1182"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="4053"/>
+ <call arg="145"/>
+ <set arg="489"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="4054" begin="11" end="11"/>
+ <lne id="4055" begin="11" end="12"/>
+ <lne id="4056" begin="9" end="14"/>
+ <lne id="4057" begin="17" end="17"/>
+ <lne id="4058" begin="17" end="18"/>
+ <lne id="4059" begin="15" end="20"/>
+ <lne id="4051" begin="8" end="21"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="3990" begin="7" end="21"/>
+ <lve slot="2" name="3989" begin="3" end="21"/>
+ <lve slot="0" name="132" begin="0" end="21"/>
+ <lve slot="1" name="652" begin="0" end="21"/>
+ </localvariabletable>
+ </operation>
+ <operation name="4060">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="4061"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="282"/>
+ <call arg="618"/>
+ <iterate/>
+ <store arg="134"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="619"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="277"/>
+ <call arg="620"/>
+ <dup/>
+ <push arg="4062"/>
+ <load arg="134"/>
+ <call arg="622"/>
+ <dup/>
+ <push arg="1119"/>
+ <push arg="1120"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <dup/>
+ <push arg="4063"/>
+ <push arg="2414"/>
+ <push arg="625"/>
+ <new/>
+ <call arg="626"/>
+ <pusht/>
+ <call arg="628"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="4064" begin="21" end="23"/>
+ <lne id="4065" begin="19" end="24"/>
+ <lne id="4066" begin="27" end="29"/>
+ <lne id="4067" begin="25" end="30"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="4062" begin="6" end="32"/>
+ <lve slot="0" name="132" begin="0" end="33"/>
+ </localvariabletable>
+ </operation>
+ <operation name="4068">
+ <context type="6"/>
+ <parameters>
+ <parameter name="134" type="634"/>
+ </parameters>
+ <code>
+ <load arg="134"/>
+ <push arg="4062"/>
+ <call arg="635"/>
+ <store arg="144"/>
+ <load arg="134"/>
+ <push arg="1119"/>
+ <call arg="636"/>
+ <store arg="284"/>
+ <load arg="134"/>
+ <push arg="4063"/>
+ <call arg="636"/>
+ <store arg="637"/>
+ <load arg="284"/>
+ <dup/>
+ <getasm/>
+ <load arg="144"/>
+ <get arg="4069"/>
+ <call arg="145"/>
+ <set arg="1220"/>
+ <dup/>
+ <getasm/>
+ <load arg="637"/>
+ <call arg="145"/>
+ <set arg="2488"/>
+ <pop/>
+ <load arg="637"/>
+ <dup/>
+ <getasm/>
+ <push arg="329"/>
+ <call arg="145"/>
+ <set arg="149"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="4070" begin="15" end="15"/>
+ <lne id="4071" begin="15" end="16"/>
+ <lne id="4072" begin="13" end="18"/>
+ <lne id="4073" begin="21" end="21"/>
+ <lne id="4074" begin="19" end="23"/>
+ <lne id="4065" begin="12" end="24"/>
+ <lne id="4075" begin="28" end="28"/>
+ <lne id="4076" begin="26" end="30"/>
+ <lne id="4067" begin="25" end="31"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="1119" begin="7" end="31"/>
+ <lve slot="4" name="4063" begin="11" end="31"/>
+ <lve slot="2" name="4062" begin="3" end="31"/>
+ <lve slot="0" name="132" begin="0" end="31"/>
+ <lve slot="1" name="652" begin="0" end="31"/>
+ </localvariabletable>
+ </operation>
+</asm>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Compiler/TCS2ANTLRv3Actions.asm b/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Compiler/TCS2ANTLRv3Actions.asm
new file mode 100644
index 0000000..2d3df7a
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Compiler/TCS2ANTLRv3Actions.asm
@@ -0,0 +1,335 @@
+<?xml version = '1.0' encoding = 'ISO-8859-1' ?>
+<asm name="0">
+ <cp>
+ <constant value="TCS2ANTLRActions"/>
+ <constant value="reserved"/>
+ <constant value="J"/>
+ <constant value="literalDelim"/>
+ <constant value="typeModelElement"/>
+ <constant value="postActions"/>
+ <constant value="nextTokenValue"/>
+ <constant value="tokenType"/>
+ <constant value="lexerFragmentKeyword"/>
+ <constant value="lexerActionSetText"/>
+ <constant value="lexerActionGetText"/>
+ <constant value="lexerHeader"/>
+ <constant value="lexerV2Replacement"/>
+ <constant value="lexerV3Replacement"/>
+ <constant value="errorReportingAction"/>
+ <constant value="main"/>
+ <constant value="A"/>
+ <constant value="Sequence"/>
+ <constant value="#native"/>
+ <constant value="case"/>
+ <constant value="CJ.including(J):CJ"/>
+ <constant value="class"/>
+ <constant value="clone"/>
+ <constant value="final"/>
+ <constant value="import"/>
+ <constant value="interface"/>
+ <constant value="package"/>
+ <constant value="super"/>
+ <constant value="void"/>
+ <constant value="grammar"/>
+ <constant value="J.union(J):J"/>
+ <constant value="'"/>
+ <constant value="Object"/>
+ <constant value="if(input.LT(-1) != null) ei.setLocation(ret, firstToken.getLine() + &quot;:&quot; + (firstToken.getCharPositionInLine() + 1) + &quot;-&quot; + ((org.eclipse.gmt.tcs.injector.wrappers.antlr3.ANTLR3LocationToken)input.LT(-1)).getEndLine() + &quot;:&quot; + (((org.eclipse.gmt.tcs.injector.wrappers.antlr3.ANTLR3LocationToken)input.LT(-1)).getEndColumn() + 1));"/>
+ <constant value="ei.setCommentsBefore(ret, new Object[] {input, firstToken});&#10;&#9; ei.setCommentsAfter(ret, new Object[] {input, input.LT(-1)});"/>
+ <constant value="J.+(J):J"/>
+ <constant value="input.LT(1)"/>
+ <constant value="org.antlr.runtime.Token"/>
+ <constant value="fragment"/>
+ <constant value="setText"/>
+ <constant value="getText()"/>
+ <constant value="&#10;&#9;"/>
+ <constant value="//"/>
+ <constant value=""/>
+ <constant value="&#10;//&#9;public void reportError(RecognitionException ex) {&#10;//&#9;&#9;ei.reportError((Exception)ex);&#10;//&#9;}&#10;&#9;&#10;//&#9;public void emitErrorMessage(String s) {&#10;//&#9;&#9;ei.reportError(s);&#10;//&#9;}&#10;&#10;&#9;public void displayRecognitionError(String[] tokenNames, RecognitionException e) {&#10;&#9;&#9;ei.reportError((Exception)e);&#10;&#9;}&#10;&#10;&#9;//TODO: what about warnings?&#10;//&#9;public void reportWarning(String s) {&#10;//&#9;&#9;ei.reportWarning(s);&#10;//&#9;}&#10;&#9;"/>
+ <constant value="5:12-5:18"/>
+ <constant value="5:20-5:27"/>
+ <constant value="5:29-5:36"/>
+ <constant value="5:38-5:45"/>
+ <constant value="5:47-5:55"/>
+ <constant value="5:57-5:68"/>
+ <constant value="5:70-5:79"/>
+ <constant value="5:81-5:88"/>
+ <constant value="5:90-5:96"/>
+ <constant value="5:2-5:97"/>
+ <constant value="6:13-6:22"/>
+ <constant value="6:3-6:23"/>
+ <constant value="5:2-7:3"/>
+ <constant value="10:2-10:6"/>
+ <constant value="14:2-14:10"/>
+ <constant value="20:2-20:338"/>
+ <constant value="23:5-24:67"/>
+ <constant value="20:2-24:67"/>
+ <constant value="27:2-27:15"/>
+ <constant value="30:2-30:27"/>
+ <constant value="37:2-37:12"/>
+ <constant value="40:2-40:11"/>
+ <constant value="43:2-43:13"/>
+ <constant value="47:2-48:3"/>
+ <constant value="51:2-51:6"/>
+ <constant value="54:2-54:4"/>
+ <constant value="68:2-85:3"/>
+ <constant value="self"/>
+ <constant value="createAction"/>
+ <constant value="1"/>
+ <constant value="2"/>
+ <constant value="3"/>
+ <constant value="(backtracking==0) ? ei.create(&quot;"/>
+ <constant value="&quot;, "/>
+ <constant value="J.toString():J"/>
+ <constant value=", "/>
+ <constant value=") : null"/>
+ <constant value="34:2-34:36"/>
+ <constant value="34:39-34:47"/>
+ <constant value="34:2-34:47"/>
+ <constant value="34:50-34:56"/>
+ <constant value="34:2-34:56"/>
+ <constant value="34:59-34:68"/>
+ <constant value="34:59-34:79"/>
+ <constant value="34:2-34:79"/>
+ <constant value="34:82-34:86"/>
+ <constant value="34:2-34:86"/>
+ <constant value="34:89-34:103"/>
+ <constant value="34:89-34:114"/>
+ <constant value="34:2-34:114"/>
+ <constant value="34:117-34:127"/>
+ <constant value="34:2-34:127"/>
+ <constant value="typeName"/>
+ <constant value="isContext"/>
+ <constant value="isAddToContext"/>
+ <constant value="getGrammarOptions"/>
+ <constant value="J.oclIsUndefined():J"/>
+ <constant value="14"/>
+ <constant value="0"/>
+ <constant value="J.=(J):J"/>
+ <constant value="12"/>
+ <constant value="QJ.first():J"/>
+ <constant value="13"/>
+ <constant value="backtrack = true;&#10;"/>
+ <constant value="18"/>
+ <constant value="57:5-57:6"/>
+ <constant value="57:5-57:23"/>
+ <constant value="60:6-60:7"/>
+ <constant value="60:10-60:11"/>
+ <constant value="60:6-60:11"/>
+ <constant value="63:4-63:16"/>
+ <constant value="61:4-61:25"/>
+ <constant value="60:3-64:8"/>
+ <constant value="58:3-58:15"/>
+ <constant value="57:2-65:7"/>
+ <constant value="k"/>
+ </cp>
+ <field name="1" type="2"/>
+ <field name="3" type="2"/>
+ <field name="4" type="2"/>
+ <field name="5" type="2"/>
+ <field name="6" type="2"/>
+ <field name="7" type="2"/>
+ <field name="8" type="2"/>
+ <field name="9" type="2"/>
+ <field name="10" type="2"/>
+ <field name="11" type="2"/>
+ <field name="12" type="2"/>
+ <field name="13" type="2"/>
+ <field name="14" type="2"/>
+ <operation name="15">
+ <context type="16"/>
+ <parameters>
+ </parameters>
+ <code>
+ <getasm/>
+ <push arg="17"/>
+ <push arg="18"/>
+ <new/>
+ <push arg="19"/>
+ <call arg="20"/>
+ <push arg="21"/>
+ <call arg="20"/>
+ <push arg="22"/>
+ <call arg="20"/>
+ <push arg="23"/>
+ <call arg="20"/>
+ <push arg="24"/>
+ <call arg="20"/>
+ <push arg="25"/>
+ <call arg="20"/>
+ <push arg="26"/>
+ <call arg="20"/>
+ <push arg="27"/>
+ <call arg="20"/>
+ <push arg="28"/>
+ <call arg="20"/>
+ <push arg="17"/>
+ <push arg="18"/>
+ <new/>
+ <push arg="29"/>
+ <call arg="20"/>
+ <call arg="30"/>
+ <set arg="1"/>
+ <getasm/>
+ <push arg="31"/>
+ <set arg="3"/>
+ <getasm/>
+ <push arg="32"/>
+ <set arg="4"/>
+ <getasm/>
+ <push arg="33"/>
+ <push arg="34"/>
+ <call arg="35"/>
+ <set arg="5"/>
+ <getasm/>
+ <push arg="36"/>
+ <set arg="6"/>
+ <getasm/>
+ <push arg="37"/>
+ <set arg="7"/>
+ <getasm/>
+ <push arg="38"/>
+ <set arg="8"/>
+ <getasm/>
+ <push arg="39"/>
+ <set arg="9"/>
+ <getasm/>
+ <push arg="40"/>
+ <set arg="10"/>
+ <getasm/>
+ <push arg="41"/>
+ <set arg="11"/>
+ <getasm/>
+ <push arg="42"/>
+ <set arg="12"/>
+ <getasm/>
+ <push arg="43"/>
+ <set arg="13"/>
+ <getasm/>
+ <push arg="44"/>
+ <set arg="14"/>
+ </code>
+ <linenumbertable>
+ <lne id="45" begin="4" end="4"/>
+ <lne id="46" begin="6" end="6"/>
+ <lne id="47" begin="8" end="8"/>
+ <lne id="48" begin="10" end="10"/>
+ <lne id="49" begin="12" end="12"/>
+ <lne id="50" begin="14" end="14"/>
+ <lne id="51" begin="16" end="16"/>
+ <lne id="52" begin="18" end="18"/>
+ <lne id="53" begin="20" end="20"/>
+ <lne id="54" begin="1" end="21"/>
+ <lne id="55" begin="25" end="25"/>
+ <lne id="56" begin="22" end="26"/>
+ <lne id="57" begin="1" end="27"/>
+ <lne id="58" begin="30" end="30"/>
+ <lne id="59" begin="33" end="33"/>
+ <lne id="60" begin="36" end="36"/>
+ <lne id="61" begin="37" end="37"/>
+ <lne id="62" begin="36" end="38"/>
+ <lne id="63" begin="41" end="41"/>
+ <lne id="64" begin="44" end="44"/>
+ <lne id="65" begin="47" end="47"/>
+ <lne id="66" begin="50" end="50"/>
+ <lne id="67" begin="53" end="53"/>
+ <lne id="68" begin="56" end="56"/>
+ <lne id="69" begin="59" end="59"/>
+ <lne id="70" begin="62" end="62"/>
+ <lne id="71" begin="65" end="65"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="72" begin="0" end="66"/>
+ </localvariabletable>
+ </operation>
+ <operation name="73">
+ <context type="16"/>
+ <parameters>
+ <parameter name="74" type="2"/>
+ <parameter name="75" type="2"/>
+ <parameter name="76" type="2"/>
+ </parameters>
+ <code>
+ <push arg="77"/>
+ <load arg="74"/>
+ <call arg="35"/>
+ <push arg="78"/>
+ <call arg="35"/>
+ <load arg="75"/>
+ <call arg="79"/>
+ <call arg="35"/>
+ <push arg="80"/>
+ <call arg="35"/>
+ <load arg="76"/>
+ <call arg="79"/>
+ <call arg="35"/>
+ <push arg="81"/>
+ <call arg="35"/>
+ </code>
+ <linenumbertable>
+ <lne id="82" begin="0" end="0"/>
+ <lne id="83" begin="1" end="1"/>
+ <lne id="84" begin="0" end="2"/>
+ <lne id="85" begin="3" end="3"/>
+ <lne id="86" begin="0" end="4"/>
+ <lne id="87" begin="5" end="5"/>
+ <lne id="88" begin="5" end="6"/>
+ <lne id="89" begin="0" end="7"/>
+ <lne id="90" begin="8" end="8"/>
+ <lne id="91" begin="0" end="9"/>
+ <lne id="92" begin="10" end="10"/>
+ <lne id="93" begin="10" end="11"/>
+ <lne id="94" begin="0" end="12"/>
+ <lne id="95" begin="13" end="13"/>
+ <lne id="96" begin="0" end="14"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="72" begin="0" end="14"/>
+ <lve slot="1" name="97" begin="0" end="14"/>
+ <lve slot="2" name="98" begin="0" end="14"/>
+ <lve slot="3" name="99" begin="0" end="14"/>
+ </localvariabletable>
+ </operation>
+ <operation name="100">
+ <context type="16"/>
+ <parameters>
+ <parameter name="74" type="2"/>
+ </parameters>
+ <code>
+ <load arg="74"/>
+ <call arg="101"/>
+ <if arg="102"/>
+ <load arg="74"/>
+ <pushi arg="103"/>
+ <call arg="104"/>
+ <if arg="105"/>
+ <push arg="17"/>
+ <push arg="18"/>
+ <new/>
+ <call arg="106"/>
+ <goto arg="107"/>
+ <push arg="108"/>
+ <goto arg="109"/>
+ <push arg="17"/>
+ <push arg="18"/>
+ <new/>
+ <call arg="106"/>
+ </code>
+ <linenumbertable>
+ <lne id="110" begin="0" end="0"/>
+ <lne id="111" begin="0" end="1"/>
+ <lne id="112" begin="3" end="3"/>
+ <lne id="113" begin="4" end="4"/>
+ <lne id="114" begin="3" end="5"/>
+ <lne id="115" begin="7" end="10"/>
+ <lne id="116" begin="12" end="12"/>
+ <lne id="117" begin="3" end="12"/>
+ <lne id="118" begin="14" end="17"/>
+ <lne id="119" begin="0" end="17"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="72" begin="0" end="17"/>
+ <lve slot="1" name="120" begin="0" end="17"/>
+ </localvariabletable>
+ </operation>
+</asm>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Editor/TCS-Editor.xmi b/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Editor/TCS-Editor.xmi
new file mode 100644
index 0000000..659f384
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Editor/TCS-Editor.xmi
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<Editor xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns="Editor" extension="mgm">
+ <block type="string" blockbegin="&quot;" blockend="&quot;">
+ <format>
+ <color red="0" green="0" blue="255"/>
+ <font font="times"/>
+ </format>
+ </block>
+ <block type="CommentsLine" blockbegin="--" blockend="">
+ <format>
+ <color red="0" green="130" blue="0"/>
+ <font font="times" italic="true"/>
+ </format>
+ </block>
+ <group type="symbols">
+ <format>
+ <color red="127" green="0" blue="85"/>
+ <font font="times" bold="true"/>
+ </format>
+ <element element="("/>
+ <element element="@"/>
+ <element element="&lt;-"/>
+ <element element="]"/>
+ <element element="/"/>
+ <element element="$"/>
+ <element element="#"/>
+ <element element="{{"/>
+ <element element="}"/>
+ <element element=","/>
+ <element element="."/>
+ <element element="[["/>
+ <element element="{"/>
+ <element element=">="/>
+ <element element="&lt;>"/>
+ <element element="&lt;="/>
+ <element element="->"/>
+ <element element="+"/>
+ <element element=">"/>
+ <element element="}}"/>
+ <element element=";"/>
+ <element element="!"/>
+ <element element="="/>
+ <element element="-"/>
+ <element element="["/>
+ <element element="*"/>
+ <element element="]]"/>
+ <element element="?"/>
+ <element element=")"/>
+ <element element="|"/>
+ <element element="&lt;"/>
+ <element element=":"/>
+ </group>
+ <group type="types">
+ <format>
+ <color red="42" green="0" blue="255"/>
+ <font font="times" bold="true"/>
+ </format>
+ <element element="String"/>
+ <element element="String"/>
+ <element element="String"/>
+ <element element="Integer"/>
+ <element element="Double"/>
+ <element element="Boolean"/>
+ </group>
+ <group type="keywords">
+ <format>
+ <color red="127" green="0" blue="85"/>
+ <font font="times" bold="true"/>
+ </format>
+ <element element="startNbNL"/>
+ <element element="prefix"/>
+ <element element="esc"/>
+ <element element="endNL"/>
+ <element element="as"/>
+ <element element="postfix"/>
+ <element element="value"/>
+ <element element="syntax"/>
+ <element element="startNL"/>
+ <element element="forcedLower"/>
+ <element element="serializer"/>
+ <element element="leftSpace"/>
+ <element element="never"/>
+ <element element="createAs"/>
+ <element element="word"/>
+ <element element="operatored"/>
+ <element element="lookIn"/>
+ <element element="nonPrimary"/>
+ <element element="lexer"/>
+ <element element="storeRightTo"/>
+ <element element="refersToKey"/>
+ <element element="disambiguate"/>
+ <element element="nbNL"/>
+ <element element="multi"/>
+ <element element="primitiveTemplate"/>
+ <element element="priority"/>
+ <element element="using"/>
+ <element element="default"/>
+ <element element="left"/>
+ <element element="operators"/>
+ <element element="endOfLine"/>
+ <element element="token"/>
+ <element element="for"/>
+ <element element="addToContext"/>
+ <element element="right"/>
+ <element element="enumerationTemplate"/>
+ <element element="one"/>
+ <element element="context"/>
+ <element element="leftNone"/>
+ <element element="and"/>
+ <element element="refersTo"/>
+ <element element="template"/>
+ <element element="end"/>
+ <element element="autoCreate"/>
+ <element element="all"/>
+ <element element="operatorTemplate"/>
+ <element element="k"/>
+ <element element="auto"/>
+ <element element="words"/>
+ <element element="source"/>
+ <element element="always"/>
+ <element element="multiLine"/>
+ <element element="start"/>
+ <element element="keywords"/>
+ <element element="indentIncr"/>
+ <element element="function"/>
+ <element element="ifmissing"/>
+ <element element="storeOpTo"/>
+ <element element="createIn"/>
+ <element element="rightNone"/>
+ <element element="main"/>
+ <element element="orKeyword"/>
+ <element element="part"/>
+ <element element="isDefined"/>
+ <element element="separator"/>
+ <element element="importContext"/>
+ <element element="symbols"/>
+ <element element="rightSpace"/>
+ <element element="abstract"/>
+ </group>
+</Editor>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Metamodel/TCS.ecore b/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Metamodel/TCS.ecore
new file mode 100644
index 0000000..546f477
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Metamodel/TCS.ecore
@@ -0,0 +1,300 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore">
+ <ecore:EPackage name="TCS" nsURI="http://www.eclipse.org/gmt/tcs/2007/TCS" nsPrefix="tcs">
+ <eClassifiers xsi:type="ecore:EClass" name="LocatedElement" abstract="true">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="location" ordered="false" unique="false" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="commentsBefore" unique="false" upperBound="-1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="commentsAfter" unique="false" upperBound="-1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConcreteSyntax" eSuperTypes="/0/NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="k" ordered="false" unique="false" eType="/1/Integer"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="templates" upperBound="-1" eType="/0/Template" containment="true" eOpposite="/0/Template/concreteSyntax"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="keywords" upperBound="-1" eType="/0/Keyword" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="symbols" upperBound="-1" eType="/0/Symbol" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operatorLists" upperBound="-1" eType="/0/OperatorList" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="tokens" upperBound="-1" eType="/0/Token" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="lexer" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Template" abstract="true" eSuperTypes="/0/NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="concreteSyntax" ordered="false" lowerBound="1" eType="/0/ConcreteSyntax" eOpposite="/0/ConcreteSyntax/templates"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="disambiguate" ordered="false" unique="false" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="disambiguateV3" ordered="false" unique="false" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FunctionTemplate" eSuperTypes="/0/Template">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="className" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="functionSequence" ordered="false" lowerBound="1" eType="/0/Sequence" containment="true" eOpposite="/0/Sequence/functionContainer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ClassTemplate" eSuperTypes="/0/Template">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="templateSequence" ordered="false" eType="/0/Sequence" containment="true" eOpposite="/0/Sequence/templateContainer"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="modifiers" ordered="false" unique="false" upperBound="-1" eType="/0/TemplateModifiers"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isAbstract" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDeep" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="prefixSequence" ordered="false" lowerBound="1" eType="/0/Sequence" containment="true" eOpposite="/0/Sequence/prefixContainer"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isOperatored" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operatorList" ordered="false" eType="/0/OperatorList"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="parentheses" ordered="false" eType="/0/Parentheses" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isMain" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isMulti" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isContext" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isAddToContext" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isNonPrimary" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" ordered="false" unique="false" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Parentheses" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isOff" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="left" ordered="false" eType="/0/Sequence" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="right" ordered="false" eType="/0/Sequence" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="TemplateModifiers">
+ <eLiterals name="abstract" value="1" literal="abstract"/>
+ <eLiterals name="operatored" value="2" literal="operatored"/>
+ <eLiterals name="main" value="3" literal="main"/>
+ <eLiterals name="context" value="4" literal="context"/>
+ <eLiterals name="addToContext" value="5" literal="addToContext"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PrimitiveTemplate" eSuperTypes="/0/Template">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="typeName" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isDefault" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="tokenName" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="serializer" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="orKeyword" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OperatorTemplate" eSuperTypes="/0/Template">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operators" ordered="false" upperBound="-1" eType="/0/Operator" eOpposite="/0/Operator/templates"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="source" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="storeOpTo" ordered="false" unique="false" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="storeRightTo" ordered="false" unique="false" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="otSequence" ordered="false" eType="/0/Sequence" containment="true" eOpposite="/0/Sequence/otContainer"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isContext" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EnumerationTemplate" eSuperTypes="/0/Template">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="automatic" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="mappings" upperBound="-1" eType="/0/EnumLiteralMapping" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EnumLiteralMapping" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="literal" ordered="false" lowerBound="1" eType="/0/EnumLiteralVal" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="element" ordered="false" lowerBound="1" eType="/0/SequenceElement" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Literal" abstract="true" eSuperTypes="/0/NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operators" ordered="false" upperBound="-1" eType="/0/Operator" eOpposite="/0/Operator/literal"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="literalRefs" ordered="false" upperBound="-1" eType="/0/LiteralRef" eOpposite="/0/LiteralRef/referredLiteral"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Symbol" eSuperTypes="/0/Literal">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="spaces" ordered="false" unique="false" upperBound="-1" eType="/0/SpaceKind"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="SpaceKind">
+ <eLiterals name="leftSpace" value="1" literal="leftSpace"/>
+ <eLiterals name="leftNone" value="2" literal="leftNone"/>
+ <eLiterals name="rightSpace" value="3" literal="rightSpace"/>
+ <eLiterals name="rightNone" value="4" literal="rightNone"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Keyword" eSuperTypes="/0/Literal"/>
+ <eClassifiers xsi:type="ecore:EClass" name="OperatorList" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="priorities" upperBound="-1" eType="/0/Priority" containment="true" eOpposite="/0/Priority/list"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Priority" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="list" ordered="false" lowerBound="1" eType="/0/OperatorList" eOpposite="/0/OperatorList/priorities"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/1/Integer"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="associativity" ordered="false" unique="false" lowerBound="1" eType="/0/Associativity"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="operators" ordered="false" upperBound="-1" eType="/0/Operator" containment="true" eOpposite="/0/Operator/priority"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Operator" eSuperTypes="/0/NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isPostfix" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="arity" ordered="false" unique="false" lowerBound="1" eType="/1/Integer"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="literal" ordered="false" eType="/0/Literal" eOpposite="/0/Literal/operators"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="priority" ordered="false" lowerBound="1" eType="/0/Priority" eOpposite="/0/Priority/operators"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="templates" ordered="false" upperBound="-1" eType="/0/OperatorTemplate" eOpposite="/0/OperatorTemplate/operators"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="Associativity">
+ <eLiterals name="left" value="1" literal="left"/>
+ <eLiterals name="right" value="2" literal="right"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Sequence" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1" eType="/0/SequenceElement" containment="true" eOpposite="/0/SequenceElement/elementSequence"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="templateContainer" ordered="false" eType="/0/ClassTemplate" eOpposite="/0/ClassTemplate/templateSequence"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="prefixContainer" ordered="false" eType="/0/ClassTemplate" eOpposite="/0/ClassTemplate/prefixSequence"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="functionContainer" ordered="false" eType="/0/FunctionTemplate" eOpposite="/0/FunctionTemplate/functionSequence"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="blockContainer" ordered="false" eType="/0/Block" eOpposite="/0/Block/blockSequence"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="thenContainer" ordered="false" eType="/0/ConditionalElement" eOpposite="/0/ConditionalElement/thenSequence"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elseContainer" ordered="false" eType="/0/ConditionalElement" eOpposite="/0/ConditionalElement/elseSequence"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="separatorContainer" ordered="false" eType="/0/SeparatorPArg" eOpposite="/0/SeparatorPArg/separatorSequence"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="otContainer" ordered="false" eType="/0/OperatorTemplate" eOpposite="/0/OperatorTemplate/otSequence"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="alternativeContainer" ordered="false" eType="/0/Alternative" eOpposite="/0/Alternative/sequences"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SequenceElement" abstract="true" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elementSequence" ordered="false" lowerBound="1" eType="/0/Sequence" eOpposite="/0/Sequence/elements"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LiteralRef" eSuperTypes="/0/SequenceElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="referredLiteral" ordered="false" lowerBound="1" eType="/0/Literal" eOpposite="/0/Literal/literalRefs"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="/0/SequenceElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="propertyArgs" upperBound="-1" eType="/0/PropertyArg" containment="true" eOpposite="/0/PropertyArg/property"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CustomSeparator" eSuperTypes="/0/SequenceElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Block" eSuperTypes="/0/SequenceElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="blockSequence" ordered="false" lowerBound="1" eType="/0/Sequence" containment="true" eOpposite="/0/Sequence/blockContainer"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="blockArgs" upperBound="-1" eType="/0/BlockArg" containment="true" eOpposite="/0/BlockArg/block"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ConditionalElement" eSuperTypes="/0/SequenceElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="condition" ordered="false" lowerBound="1" eType="/0/Expression" containment="true" eOpposite="/0/Expression/conditionalElement"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="thenSequence" ordered="false" lowerBound="1" eType="/0/Sequence" containment="true" eOpposite="/0/Sequence/thenContainer"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="elseSequence" ordered="false" lowerBound="1" eType="/0/Sequence" containment="true" eOpposite="/0/Sequence/elseContainer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PropertyInit" eSuperTypes="/0/SequenceElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false" lowerBound="1" eType="/0/Value" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Alternative" eSuperTypes="/0/SequenceElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="sequences" lowerBound="2" upperBound="-1" eType="/0/Sequence" containment="true" eOpposite="/0/Sequence/alternativeContainer"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="isMulti" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="FunctionCall" eSuperTypes="/0/SequenceElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="calledFunction" ordered="false" lowerBound="1" eType="/0/FunctionTemplate"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PropertyArg" abstract="true" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="property" ordered="false" lowerBound="1" eType="/0/Property" eOpposite="/0/Property/propertyArgs"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RefersToPArg" eSuperTypes="/0/PropertyArg">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="propertyName" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="LookInPArg" eSuperTypes="/0/PropertyArg">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="propertyName" unique="false" lowerBound="1" upperBound="-1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CreateInPArg" eSuperTypes="/0/PropertyArg">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="propertyName" unique="false" lowerBound="1" upperBound="-1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="RefersToKeyPArg" eSuperTypes="/0/PropertyArg">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SeparatorPArg" eSuperTypes="/0/PropertyArg">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="separatorSequence" ordered="false" lowerBound="1" eType="/0/Sequence" containment="true" eOpposite="/0/Sequence/separatorContainer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AutoCreatePArg" eSuperTypes="/0/PropertyArg">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/0/AutoCreateKind"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ImportContextPArg" eSuperTypes="/0/PropertyArg"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ForcedLowerPArg" eSuperTypes="/0/PropertyArg">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/1/Integer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EEnum" name="AutoCreateKind">
+ <eLiterals name="always" value="1" literal="always"/>
+ <eLiterals name="ifmissing" value="2" literal="ifmissing"/>
+ <eLiterals name="never" value="3" literal="never"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="CreateAsPArg" eSuperTypes="/0/PropertyArg">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AsPArg" eSuperTypes="/0/PropertyArg">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="ModePArg" eSuperTypes="/0/PropertyArg">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BlockArg" abstract="true" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="block" ordered="false" lowerBound="1" eType="/0/Block" eOpposite="/0/Block/blockArgs"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NbNLBArg" eSuperTypes="/0/BlockArg">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/1/Integer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IndentIncrBArg" eSuperTypes="/0/BlockArg">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/1/Integer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StartNLBArg" eSuperTypes="/0/BlockArg">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="StartNbNLBArg" eSuperTypes="/0/BlockArg">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/1/Integer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EndNLBArg" eSuperTypes="/0/BlockArg">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Expression" abstract="true" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="conditionalElement" ordered="false" lowerBound="1" eType="/0/ConditionalElement" eOpposite="/0/ConditionalElement/condition"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AndExp" eSuperTypes="/0/Expression">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="expressions" upperBound="-1" eType="/0/AtomExp" containment="true" eOpposite="/0/AtomExp/andExp"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="AtomExp" abstract="true" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="andExp" ordered="false" lowerBound="1" eType="/0/AndExp" eOpposite="/0/AndExp/expressions"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="propertyName" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EqualsExp" eSuperTypes="/0/AtomExp">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="value" ordered="false" lowerBound="1" eType="/0/Value" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="BooleanPropertyExp" eSuperTypes="/0/AtomExp"/>
+ <eClassifiers xsi:type="ecore:EClass" name="IsDefinedExp" eSuperTypes="/0/AtomExp"/>
+ <eClassifiers xsi:type="ecore:EClass" name="OneExp" eSuperTypes="/0/AtomExp"/>
+ <eClassifiers xsi:type="ecore:EClass" name="Value" abstract="true" eSuperTypes="/0/LocatedElement"/>
+ <eClassifiers xsi:type="ecore:EClass" name="StringVal" eSuperTypes="/0/Value">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="symbol" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="IntegerVal" eSuperTypes="/0/Value">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="symbol" ordered="false" unique="false" lowerBound="1" eType="/1/Integer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="NegativeIntegerVal" eSuperTypes="/0/Value">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="symbol" ordered="false" unique="false" lowerBound="1" eType="/1/Integer"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EnumLiteralVal" eSuperTypes="/0/Value">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="PropertyVal" eSuperTypes="/0/Value">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="propertyName" ordered="false" unique="false" lowerBound="1" upperBound="-1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Token" eSuperTypes="/0/NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="pattern" ordered="false" lowerBound="1" eType="/0/OrPattern" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="OrPattern" eSuperTypes="/0/LocatedElement">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="simplePatterns" lowerBound="1" upperBound="-1" eType="/0/SimplePattern" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SimplePattern" abstract="true" eSuperTypes="/0/NamedElement"/>
+ <eClassifiers xsi:type="ecore:EClass" name="RulePattern" eSuperTypes="/0/SimplePattern">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="rule" ordered="false" lowerBound="1" eType="/0/Rule" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Rule" abstract="true" eSuperTypes="/0/LocatedElement"/>
+ <eClassifiers xsi:type="ecore:EClass" name="WordRule" eSuperTypes="/0/Rule">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="start" ordered="false" lowerBound="1" eType="/0/OrPattern" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="part" ordered="false" lowerBound="1" eType="/0/OrPattern" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" eType="/0/OrPattern" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="words" ordered="false" upperBound="-1" eType="/0/Word" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Word" eSuperTypes="/0/NamedElement">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="token" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="EndOfLineRule" eSuperTypes="/0/Rule">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="start" ordered="false" lowerBound="1" eType="/0/StringPattern" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="dropStart" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="MultiLineRule" eSuperTypes="/0/Rule">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="start" ordered="false" lowerBound="1" eType="/0/StringPattern" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="dropStart" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="end" ordered="false" lowerBound="1" eType="/0/StringPattern" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="dropEnd" ordered="false" unique="false" lowerBound="1" eType="/1/Boolean"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="esc" ordered="false" eType="/0/StringPattern" containment="true"/>
+ <eStructuralFeatures xsi:type="ecore:EReference" name="escMappings" ordered="false" upperBound="-1" eType="/0/Mapping" containment="true"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Mapping" abstract="true" eSuperTypes="/0/LocatedElement"/>
+ <eClassifiers xsi:type="ecore:EClass" name="SimpleMapping" eSuperTypes="/0/Mapping">
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="key" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false" unique="false" lowerBound="1" eType="/1/String"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="WildcardMapping" eSuperTypes="/0/Mapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="OctalMapping" eSuperTypes="/0/Mapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="HexadecimalMapping" eSuperTypes="/0/Mapping"/>
+ <eClassifiers xsi:type="ecore:EClass" name="StringPattern" eSuperTypes="/0/SimplePattern"/>
+ <eClassifiers xsi:type="ecore:EClass" name="ClassPattern" eSuperTypes="/0/SimplePattern"/>
+ </ecore:EPackage>
+ <ecore:EPackage name="PrimitiveTypes" nsURI="http://www.eclipse.org/gmt/tcs/2007/TCS-PrimitiveTypes" nsPrefix="pt">
+ <eClassifiers xsi:type="ecore:EDataType" name="Boolean" instanceClassName="boolean"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="Integer" instanceClassName="int"/>
+ <eClassifiers xsi:type="ecore:EDataType" name="String" instanceClassName="java.lang.String"/>
+ </ecore:EPackage>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Outline/TCS-Outline.xmi b/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Outline/TCS-Outline.xmi
new file mode 100644
index 0000000..1cec1f6
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Outline/TCS-Outline.xmi
@@ -0,0 +1,336 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<Outline xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns="Outline">
+ <nodes name="LocatedElement" icon="dummy">
+ <label label="LocatedElement"/>
+ <mapping mapString="LocatedElement"/>
+ </nodes>
+ <nodes name="NamedElement" icon="dummy">
+ <label label="NamedElement">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="NamedElement"/>
+ </nodes>
+ <nodes name="ConcreteSyntax" icon="dummy">
+ <label label="ConcreteSyntax">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="ConcreteSyntax"/>
+ </nodes>
+ <nodes name="Template" icon="dummy">
+ <label label="Template">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="Template"/>
+ </nodes>
+ <nodes name="FunctionTemplate" icon="dummy">
+ <label label="FunctionTemplate">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="FunctionTemplate"/>
+ </nodes>
+ <nodes name="ClassTemplate" icon="dummy">
+ <label label="ClassTemplate">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="ClassTemplate"/>
+ </nodes>
+ <nodes name="PrimitiveTemplate" icon="dummy">
+ <label label="PrimitiveTemplate">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="PrimitiveTemplate"/>
+ </nodes>
+ <nodes name="OperatorTemplate" icon="dummy">
+ <label label="OperatorTemplate">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="OperatorTemplate"/>
+ </nodes>
+ <nodes name="EnumerationTemplate" icon="dummy">
+ <label label="EnumerationTemplate">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="EnumerationTemplate"/>
+ </nodes>
+ <nodes name="EnumLiteralMapping" icon="dummy">
+ <label label="EnumLiteralMapping"/>
+ <mapping mapString="EnumLiteralMapping"/>
+ </nodes>
+ <nodes name="Literal" icon="dummy">
+ <label label="Literal">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="Literal"/>
+ </nodes>
+ <nodes name="Symbol" icon="dummy">
+ <label label="Symbol">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="Symbol"/>
+ </nodes>
+ <nodes name="Keyword" icon="dummy">
+ <label label="Keyword">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="Keyword"/>
+ </nodes>
+ <nodes name="Priority" icon="dummy">
+ <label label="Priority"/>
+ <mapping mapString="Priority"/>
+ </nodes>
+ <nodes name="Operator" icon="dummy">
+ <label label="Operator">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="Operator"/>
+ </nodes>
+ <nodes name="Sequence" icon="dummy">
+ <label label="Sequence"/>
+ <mapping mapString="Sequence"/>
+ </nodes>
+ <nodes name="SequenceElement" icon="dummy">
+ <label label="SequenceElement"/>
+ <mapping mapString="SequenceElement"/>
+ </nodes>
+ <nodes name="LiteralRef" icon="dummy">
+ <label label="LiteralRef"/>
+ <mapping mapString="LiteralRef"/>
+ </nodes>
+ <nodes name="Property" icon="dummy">
+ <label label="Property">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="Property"/>
+ </nodes>
+ <nodes name="CustomSeparator" icon="dummy">
+ <label label="CustomSeparator">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="CustomSeparator"/>
+ </nodes>
+ <nodes name="Block" icon="dummy">
+ <label label="Block"/>
+ <mapping mapString="Block"/>
+ </nodes>
+ <nodes name="ConditionalElement" icon="dummy">
+ <label label="ConditionalElement"/>
+ <mapping mapString="ConditionalElement"/>
+ </nodes>
+ <nodes name="PropertyInit" icon="dummy">
+ <label label="PropertyInit">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="PropertyInit"/>
+ </nodes>
+ <nodes name="Alternative" icon="dummy">
+ <label label="Alternative"/>
+ <mapping mapString="Alternative"/>
+ </nodes>
+ <nodes name="FunctionCall" icon="dummy">
+ <label label="FunctionCall"/>
+ <mapping mapString="FunctionCall"/>
+ </nodes>
+ <nodes name="PropertyArg" icon="dummy">
+ <label label="PropertyArg"/>
+ <mapping mapString="PropertyArg"/>
+ </nodes>
+ <nodes name="RefersToPArg" icon="dummy">
+ <label label="RefersToPArg"/>
+ <mapping mapString="RefersToPArg"/>
+ </nodes>
+ <nodes name="LookInPArg" icon="dummy">
+ <label label="LookInPArg"/>
+ <mapping mapString="LookInPArg"/>
+ </nodes>
+ <nodes name="CreateInPArg" icon="dummy">
+ <label label="CreateInPArg"/>
+ <mapping mapString="CreateInPArg"/>
+ </nodes>
+ <nodes name="RefersToKeyPArg" icon="dummy">
+ <label label="RefersToKeyPArg"/>
+ <mapping mapString="RefersToKeyPArg"/>
+ </nodes>
+ <nodes name="SeparatorPArg" icon="dummy">
+ <label label="SeparatorPArg"/>
+ <mapping mapString="SeparatorPArg"/>
+ </nodes>
+ <nodes name="AutoCreatePArg" icon="dummy">
+ <label label="AutoCreatePArg"/>
+ <mapping mapString="AutoCreatePArg"/>
+ </nodes>
+ <nodes name="ImportContextPArg" icon="dummy">
+ <label label="ImportContextPArg"/>
+ <mapping mapString="ImportContextPArg"/>
+ </nodes>
+ <nodes name="ForcedLowerPArg" icon="dummy">
+ <label label="ForcedLowerPArg"/>
+ <mapping mapString="ForcedLowerPArg"/>
+ </nodes>
+ <nodes name="CreateAsPArg" icon="dummy">
+ <label label="CreateAsPArg">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="CreateAsPArg"/>
+ </nodes>
+ <nodes name="AsPArg" icon="dummy">
+ <label label="AsPArg"/>
+ <mapping mapString="AsPArg"/>
+ </nodes>
+ <nodes name="BlockArg" icon="dummy">
+ <label label="BlockArg"/>
+ <mapping mapString="BlockArg"/>
+ </nodes>
+ <nodes name="NbNLBArg" icon="dummy">
+ <label label="NbNLBArg"/>
+ <mapping mapString="NbNLBArg"/>
+ </nodes>
+ <nodes name="IndentIncrBArg" icon="dummy">
+ <label label="IndentIncrBArg"/>
+ <mapping mapString="IndentIncrBArg"/>
+ </nodes>
+ <nodes name="StartNLBArg" icon="dummy">
+ <label label="StartNLBArg"/>
+ <mapping mapString="StartNLBArg"/>
+ </nodes>
+ <nodes name="StartNbNLBArg" icon="dummy">
+ <label label="StartNbNLBArg"/>
+ <mapping mapString="StartNbNLBArg"/>
+ </nodes>
+ <nodes name="EndNLBArg" icon="dummy">
+ <label label="EndNLBArg"/>
+ <mapping mapString="EndNLBArg"/>
+ </nodes>
+ <nodes name="Expression" icon="dummy">
+ <label label="Expression"/>
+ <mapping mapString="Expression"/>
+ </nodes>
+ <nodes name="AndExp" icon="dummy">
+ <label label="AndExp"/>
+ <mapping mapString="AndExp"/>
+ </nodes>
+ <nodes name="AtomExp" icon="dummy">
+ <label label="AtomExp"/>
+ <mapping mapString="AtomExp"/>
+ </nodes>
+ <nodes name="EqualsExp" icon="dummy">
+ <label label="EqualsExp"/>
+ <mapping mapString="EqualsExp"/>
+ </nodes>
+ <nodes name="BooleanPropertyExp" icon="dummy">
+ <label label="BooleanPropertyExp"/>
+ <mapping mapString="BooleanPropertyExp"/>
+ </nodes>
+ <nodes name="IsDefinedExp" icon="dummy">
+ <label label="IsDefinedExp"/>
+ <mapping mapString="IsDefinedExp"/>
+ </nodes>
+ <nodes name="OneExp" icon="dummy">
+ <label label="OneExp"/>
+ <mapping mapString="OneExp"/>
+ </nodes>
+ <nodes name="Value" icon="dummy">
+ <label label="Value"/>
+ <mapping mapString="Value"/>
+ </nodes>
+ <nodes name="StringVal" icon="dummy">
+ <label label="StringVal"/>
+ <mapping mapString="StringVal"/>
+ </nodes>
+ <nodes name="IntegerVal" icon="dummy">
+ <label label="IntegerVal"/>
+ <mapping mapString="IntegerVal"/>
+ </nodes>
+ <nodes name="NegativeIntegerVal" icon="dummy">
+ <label label="NegativeIntegerVal"/>
+ <mapping mapString="NegativeIntegerVal"/>
+ </nodes>
+ <nodes name="EnumLiteralVal" icon="dummy">
+ <label label="EnumLiteralVal">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="EnumLiteralVal"/>
+ </nodes>
+ <nodes name="PropertyVal" icon="dummy">
+ <label label="PropertyVal"/>
+ <mapping mapString="PropertyVal"/>
+ </nodes>
+ <nodes name="Token" icon="dummy">
+ <label label="Token">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="Token"/>
+ </nodes>
+ <nodes name="OrPattern" icon="dummy">
+ <label label="OrPattern"/>
+ <mapping mapString="OrPattern"/>
+ </nodes>
+ <nodes name="SimplePattern" icon="dummy">
+ <label label="SimplePattern">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="SimplePattern"/>
+ </nodes>
+ <nodes name="RulePattern" icon="dummy">
+ <label label="RulePattern">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="RulePattern"/>
+ </nodes>
+ <nodes name="Rule" icon="dummy">
+ <label label="Rule"/>
+ <mapping mapString="Rule"/>
+ </nodes>
+ <nodes name="WordRule" icon="dummy">
+ <label label="WordRule"/>
+ <mapping mapString="WordRule"/>
+ </nodes>
+ <nodes name="Word" icon="dummy">
+ <label label="Word">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="Word"/>
+ </nodes>
+ <nodes name="EndOfLineRule" icon="dummy">
+ <label label="EndOfLineRule"/>
+ <mapping mapString="EndOfLineRule"/>
+ </nodes>
+ <nodes name="MultiLineRule" icon="dummy">
+ <label label="MultiLineRule"/>
+ <mapping mapString="MultiLineRule"/>
+ </nodes>
+ <nodes name="StringPattern" icon="dummy">
+ <label label="StringPattern">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="StringPattern"/>
+ </nodes>
+ <nodes name="ClassPattern" icon="dummy">
+ <label label="ClassPattern">
+ <labelSuite label=" : "/>
+ <labelSuite methodCall="name"/>
+ </label>
+ <mapping mapString="ClassPattern"/>
+ </nodes>
+</Outline>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Syntax/TCS-TCS.xmi b/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Syntax/TCS-TCS.xmi
new file mode 100644
index 0000000..2993a07
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/Syntax/TCS-TCS.xmi
@@ -0,0 +1,1376 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tcs="http://www.eclipse.org/gmt/tcs/2007/TCS">
+ <tcs:ConcreteSyntax location="9:1-583:2" name="TCS" lexer="&#xD;&#xA;%options testLiterals = false;&#xD;&#xA;&#xD;&#xA;NL&#xD;&#xA;&#x9;:&#x9;(&#x9;'\r' '\n'&#xD;&#xA;&#x9;&#x9;|&#x9;'\n' '\r'&#x9;//Improbable&#xD;&#xA;&#x9;&#x9;|&#x9;'\r'&#xD;&#xA;&#x9;&#x9;|&#x9;'\n'&#xD;&#xA;&#x9;&#x9;)&#xD;&#xA;&#x9;{newline();}&#xD;&#xA;&#x9;;&#xD;&#xA;&#xD;&#xA;WS&#xD;&#xA;&#x9;:&#x9;(&#x9;' '&#xD;&#xA;&#x9;&#x9;|&#x9;'\t'&#xD;&#xA;&#x9;&#x9;)&#xD;&#xA;&#x9;;&#xD;&#xA;&#xD;&#xA;%protected&#xD;&#xA;DIGIT&#xD;&#xA;&#x9;:&#x9;'0'..'9'&#xD;&#xA;&#x9;;&#xD;&#xA;&#xD;&#xA;%protected&#xD;&#xA;ALPHA&#xD;&#xA;&#x9;:&#x9;'a'..'z'&#xD;&#xA;&#x9;|&#x9;'A'..'Z'&#xD;&#xA;&#x9;|&#x9;'_'&#xD;&#xA;&#x9;//For Unicode compatibility (from 0000 to 00ff)&#xD;&#xA;&#x9;|&#x9;'\u00C0' .. '\u00D6'&#xD;&#xA;&#x9;|&#x9;'\u00D8' .. '\u00F6'&#xD;&#xA;&#x9;|&#x9;'\u00F8' .. '\u00FF'&#xD;&#xA;&#x9;;&#xD;&#xA;&#xD;&#xA;%protected&#xD;&#xA;SNAME&#xD;&#xA;%v2&#x9;options {&#xD;&#xA;%v2&#x9;&#x9;testLiterals = true;&#xD;&#xA;%v2&#x9;}&#xD;&#xA;&#x9;:&#x9;(ALPHA) (ALPHA | DIGIT)*&#xD;&#xA;;&#xD;&#xA;&#xD;&#xA;NAME&#xD;&#xA;&#x9;:&#x9;(&#xD;&#xA;%v3&#x9;&#x9;&#x9;SNAME&#xD;&#xA;%v2&#x9;&#x9;&#x9;s:SNAME {if(s.getType() != SNAME) $setType(s.getType());}&#xD;&#xA;&#x9;&#x9;|&#x9;'\''!&#xD;&#xA;&#x9;&#x9;&#x9;(&#x9;ESC&#xD;&#xA;&#x9;&#x9;&#x9;|&#x9;'\n' {newline();}&#xD;&#xA;&#x9;&#x9;&#x9;|&#x9;~('\\'|'\''|'\n')&#xD;&#xA;&#x9;&#x9;&#x9;)*&#xD;&#xA;&#x9;&#x9;&#x9;'\''!&#xD;&#xA;%v3&#x9;&#x9;{setText(ei.unescapeString(getText(), 1));}&#xD;&#xA;&#x9;&#x9;)&#xD;&#xA;&#x9;;&#xD;&#xA;&#xD;&#xA;INT&#xD;&#xA;&#x9;:&#x9;(DIGIT)+&#xD;&#xA;%v2&#x9;&#x9;(('.' DIGIT)=> '.' (DIGIT)+ {$setType(FLOAT);})?&#xD;&#xA;&#x9;;&#xD;&#xA;&#xD;&#xA;%v3&#x9;FLOAT&#x9;:&#x9;DIGIT+ '.' DIGIT*&#x9;;&#xD;&#xA;&#xD;&#xA;%protected&#xD;&#xA;ESC&#xD;&#xA;&#x9;:&#x9;'\\'!&#xD;&#xA;&#x9;&#x9;(&#x9;'n' %v2{%setText(&quot;\n&quot;);}&#xD;&#xA;&#x9;&#x9;|&#x9;'r' %v2{%setText(&quot;\r&quot;);}&#xD;&#xA;&#x9;&#x9;|&#x9;'t' %v2{%setText(&quot;\t&quot;);}&#xD;&#xA;&#x9;&#x9;|&#x9;'b' %v2{%setText(&quot;\b&quot;);}&#xD;&#xA;&#x9;&#x9;|&#x9;'f' %v2{%setText(&quot;\f&quot;);}&#xD;&#xA;&#x9;&#x9;|&#x9;'&quot;' %v2{%setText(&quot;\&quot;&quot;);}&#xD;&#xA;&#x9;&#x9;|&#x9;'\'' %v2{%setText(&quot;\'&quot;);}&#xD;&#xA;&#x9;&#x9;|&#x9;'\\' %v2{%setText(&quot;\\&quot;);}&#xD;&#xA;&#x9;&#x9;|&#x9;(&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;('0'..'3')&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;(&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;options {&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;warnWhenFollowAmbig = false;&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;:&#x9;('0'..'7')&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;(&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;options {&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;warnWhenFollowAmbig = false;&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;:&#x9;'0'..'7'&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;)?&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;)?&#xD;&#xA;&#x9;&#x9;&#x9;|&#x9;('4'..'7')&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;(&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;options {&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;warnWhenFollowAmbig = false;&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;:&#x9;('0'..'7')&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;)?&#xD;&#xA;&#x9;&#x9;&#x9;)&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;{&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;String s = %getText;&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;int i;&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;int ret = 0;&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;String ans;&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;for (i=0; i&lt;s.length(); ++i)&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;&#x9;ret = ret*8 + s.charAt(i) - '0';&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;ans = String.valueOf((char) ret);&#xD;&#xA;%v2&#x9;&#x9;&#x9;&#x9;&#x9;%setText(ans);&#xD;&#xA;&#x9;&#x9;&#x9;&#x9;}&#xD;&#xA;&#x9;&#x9;)&#xD;&#xA;&#x9;;&#xD;&#xA;&#xD;&#xA;STRING&#xD;&#xA;&#x9;:&#x9;'&quot;'!&#xD;&#xA;&#x9;&#x9;(&#x9;ESC&#xD;&#xA;&#x9;&#x9;|&#x9;'\n' {newline();}&#xD;&#xA;&#x9;&#x9;|&#x9;~('\\'|'&quot;'|'\n')&#xD;&#xA;&#x9;&#x9;)*&#xD;&#xA;&#x9;&#x9;'&quot;'!&#xD;&#xA;%v3&#x9;&#x9;{setText(ei.unescapeString(getText(), 1));}&#xD;&#xA;&#xD;&#xA;&#x9;;&#xD;&#xA;&#xD;&#xA;&#x9;">
+ <commentsBefore>-- @date&#x9;&#x9;2007/09/19</commentsBefore>
+ <commentsBefore>-- @description&#x9;This TCS model defines the syntax of the TCS language.</commentsBefore>
+ <commentsBefore>-- REMARK: to use this tcs for extraction: remove the alternatives for keywords</commentsBefore>
+ <commentsBefore>-- Identifiers are ALPHA (ALPHA | DIGIT)* with a special form between single quote to escape them in case they are the same as a keywords of TCS</commentsBefore>
+ <commentsBefore>-- Strings are double quoted</commentsBefore>
+ <commentsBefore>-- Comments begin with -- and end with the end of the line</commentsBefore>
+ <templates xsi:type="tcs:PrimitiveTemplate" location="11:2-12:21" name="identifier" typeName="String" isDefault="true" tokenName="NAME" value="%token%"/>
+ <templates xsi:type="tcs:PrimitiveTemplate" location="14:2-15:21" name="identifierOrKeyword" typeName="String" tokenName="NAME" value="%token%" orKeyword="true"/>
+ <templates xsi:type="tcs:PrimitiveTemplate" location="17:2-19:54" name="stringSymbol" typeName="String" tokenName="STRING" value="%token%" serializer="'\&quot;' + %value%.toCString() + '\&quot;'"/>
+ <templates xsi:type="tcs:PrimitiveTemplate" location="21:2-22:38" name="integerSymbol" typeName="Integer" isDefault="true" tokenName="INT" value="Integer.valueOf(%token%)"/>
+ <templates xsi:type="tcs:PrimitiveTemplate" location="24:2-25:37" name="floatSymbol" typeName="Double" isDefault="true" tokenName="FLOAT" value="Double.valueOf(%token%)"/>
+ <templates xsi:type="tcs:ClassTemplate" location="27:2-36:4" name="ConcreteSyntax" isMain="true" isContext="true">
+ <commentsAfter>-- @begin Templates</commentsAfter>
+ <templateSequence location="28:5-35:20">
+ <elements xsi:type="tcs:LiteralRef" location="28:5-28:13" referredLiteral="/1"/>
+ <elements xsi:type="tcs:Property" location="28:14-28:18" name="name"/>
+ <elements xsi:type="tcs:ConditionalElement" location="28:19-28:54">
+ <condition xsi:type="tcs:AndExp" location="28:20-28:32">
+ <expressions xsi:type="tcs:IsDefinedExp" location="28:20-28:32" propertyName="k"/>
+ </condition>
+ <thenSequence location="28:36-28:53">
+ <elements xsi:type="tcs:LiteralRef" location="28:36-28:39" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:LiteralRef" location="28:40-28:43" referredLiteral="/2"/>
+ <elements xsi:type="tcs:LiteralRef" location="28:44-28:47" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="28:48-28:49" name="k"/>
+ <elements xsi:type="tcs:LiteralRef" location="28:50-28:53" referredLiteral="/0/@symbols.7"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="28:55-28:58" referredLiteral="/0/@symbols.8"/>
+ <elements xsi:type="tcs:Block" location="28:59-35:16">
+ <blockSequence location="29:5-34:66">
+ <elements xsi:type="tcs:Property" location="29:5-29:14" name="templates"/>
+ <elements xsi:type="tcs:ConditionalElement" location="30:5-30:60">
+ <condition xsi:type="tcs:AndExp" location="30:6-30:25">
+ <expressions xsi:type="tcs:IsDefinedExp" location="30:6-30:25" propertyName="keywords"/>
+ </condition>
+ <thenSequence location="30:28-30:59">
+ <elements xsi:type="tcs:LiteralRef" location="30:28-30:38" referredLiteral="/3"/>
+ <elements xsi:type="tcs:LiteralRef" location="30:39-30:42" referredLiteral="/0/@symbols.8"/>
+ <elements xsi:type="tcs:Block" location="30:43-30:55">
+ <blockSequence location="30:45-30:53">
+ <elements xsi:type="tcs:Property" location="30:45-30:53" name="keywords"/>
+ </blockSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="30:56-30:59" referredLiteral="/0/@symbols.9"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="31:5-31:57">
+ <condition xsi:type="tcs:AndExp" location="31:6-31:24">
+ <expressions xsi:type="tcs:IsDefinedExp" location="31:6-31:24" propertyName="symbols"/>
+ </condition>
+ <thenSequence location="31:27-31:56">
+ <elements xsi:type="tcs:LiteralRef" location="31:27-31:36" referredLiteral="/4"/>
+ <elements xsi:type="tcs:LiteralRef" location="31:37-31:40" referredLiteral="/0/@symbols.8"/>
+ <elements xsi:type="tcs:Block" location="31:41-31:52">
+ <blockSequence location="31:43-31:50">
+ <elements xsi:type="tcs:Property" location="31:43-31:50" name="symbols"/>
+ </blockSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="31:53-31:56" referredLiteral="/0/@symbols.9"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:Property" location="32:5-32:18" name="operatorLists"/>
+ <elements xsi:type="tcs:Property" location="33:5-33:11" name="tokens"/>
+ <elements xsi:type="tcs:ConditionalElement" location="34:5-34:66">
+ <condition xsi:type="tcs:AndExp" location="34:6-34:22">
+ <expressions xsi:type="tcs:IsDefinedExp" location="34:6-34:22" propertyName="lexer"/>
+ </condition>
+ <thenSequence location="34:25-34:65">
+ <elements xsi:type="tcs:LiteralRef" location="34:25-34:32" referredLiteral="/5"/>
+ <elements xsi:type="tcs:LiteralRef" location="34:33-34:36" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="34:37-34:61" name="lexer">
+ <propertyArgs xsi:type="tcs:AsPArg" location="34:43-34:60" value="stringSymbol"/>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="34:62-34:65" referredLiteral="/0/@symbols.12"/>
+ </thenSequence>
+ </elements>
+ </blockSequence>
+ <blockArgs xsi:type="tcs:NbNLBArg" location="35:7-35:15" value="2"/>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="35:17-35:20" referredLiteral="/0/@symbols.9"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="39:2-39:29" name="Template" isAbstract="true">
+ <commentsBefore>-- @begin Templates</commentsBefore>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="41:2-52:4" name="PrimitiveTemplate">
+ <templateSequence location="42:5-51:7">
+ <elements xsi:type="tcs:LiteralRef" location="42:5-42:24" referredLiteral="/6"/>
+ <elements xsi:type="tcs:Property" location="42:25-42:29" name="name"/>
+ <elements xsi:type="tcs:LiteralRef" location="42:30-42:35" referredLiteral="/7"/>
+ <elements xsi:type="tcs:Property" location="42:36-42:44" name="typeName"/>
+ <elements xsi:type="tcs:ConditionalElement" location="43:5-43:28">
+ <condition xsi:type="tcs:AndExp" location="43:6-43:15">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="43:6-43:15" propertyName="isDefault"/>
+ </condition>
+ <thenSequence location="43:18-43:27">
+ <elements xsi:type="tcs:LiteralRef" location="43:18-43:27" referredLiteral="/8"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="44:5-44:12" referredLiteral="/9"/>
+ <elements xsi:type="tcs:Property" location="44:13-44:22" name="tokenName"/>
+ <elements xsi:type="tcs:ConditionalElement" location="45:5-45:30">
+ <condition xsi:type="tcs:AndExp" location="45:6-45:15">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="45:6-45:15" propertyName="orKeyword"/>
+ </condition>
+ <thenSequence location="45:18-45:29">
+ <elements xsi:type="tcs:LiteralRef" location="45:18-45:29" referredLiteral="/10"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="46:4-46:7" referredLiteral="/0/@symbols.13"/>
+ <elements xsi:type="tcs:LiteralRef" location="47:5-47:12" referredLiteral="/11"/>
+ <elements xsi:type="tcs:LiteralRef" location="47:13-47:16" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="47:17-47:41" name="value">
+ <propertyArgs xsi:type="tcs:AsPArg" location="47:23-47:40" value="stringSymbol"/>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="48:5-50:6">
+ <condition xsi:type="tcs:AndExp" location="48:6-48:27">
+ <expressions xsi:type="tcs:IsDefinedExp" location="48:6-48:27" propertyName="serializer"/>
+ </condition>
+ <thenSequence location="49:6-49:56">
+ <elements xsi:type="tcs:LiteralRef" location="49:6-49:9" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:LiteralRef" location="49:10-49:22" referredLiteral="/12"/>
+ <elements xsi:type="tcs:LiteralRef" location="49:23-49:26" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="49:27-49:56" name="serializer">
+ <propertyArgs xsi:type="tcs:AsPArg" location="49:38-49:55" value="stringSymbol"/>
+ </elements>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="51:4-51:7" referredLiteral="/0/@symbols.12"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="54:2-63:4" name="EnumerationTemplate">
+ <templateSequence location="55:5-62:5">
+ <elements xsi:type="tcs:LiteralRef" location="55:5-55:26" referredLiteral="/13"/>
+ <elements xsi:type="tcs:Property" location="55:27-55:31" name="name"/>
+ <elements xsi:type="tcs:ConditionalElement" location="55:32-55:52">
+ <condition xsi:type="tcs:AndExp" location="55:33-55:42">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="55:33-55:42" propertyName="automatic"/>
+ </condition>
+ <thenSequence location="55:45-55:51">
+ <elements xsi:type="tcs:LiteralRef" location="55:45-55:51" referredLiteral="/14"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="56:4-62:5">
+ <condition xsi:type="tcs:AndExp" location="56:5-56:24">
+ <expressions xsi:type="tcs:IsDefinedExp" location="56:5-56:24" propertyName="mappings"/>
+ </condition>
+ <thenSequence location="57:6-59:31">
+ <elements xsi:type="tcs:Block" location="57:6-59:31">
+ <blockSequence location="57:8-59:29">
+ <elements xsi:type="tcs:LiteralRef" location="57:8-57:11" referredLiteral="/0/@symbols.13"/>
+ <elements xsi:type="tcs:Block" location="57:12-59:25">
+ <blockSequence location="58:7-58:32">
+ <elements xsi:type="tcs:Property" location="58:7-58:32" name="mappings">
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="58:16-58:31">
+ <separatorSequence location="58:28-58:31">
+ <elements xsi:type="tcs:LiteralRef" location="58:28-58:31" referredLiteral="/0/@symbols.5"/>
+ </separatorSequence>
+ </propertyArgs>
+ </elements>
+ </blockSequence>
+ <blockArgs xsi:type="tcs:StartNLBArg" location="59:9-59:24"/>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="59:26-59:29" referredLiteral="/0/@symbols.12"/>
+ </blockSequence>
+ </elements>
+ </thenSequence>
+ <elseSequence location="61:6-61:9">
+ <elements xsi:type="tcs:LiteralRef" location="61:6-61:9" referredLiteral="/0/@symbols.12"/>
+ </elseSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="65:2-67:4" name="EnumLiteralMapping">
+ <templateSequence location="66:5-66:24">
+ <elements xsi:type="tcs:Property" location="66:5-66:12" name="literal"/>
+ <elements xsi:type="tcs:LiteralRef" location="66:13-66:16" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="66:17-66:24" name="element"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="69:2-82:4" name="ClassTemplate">
+ <templateSequence location="70:5-81:92">
+ <elements xsi:type="tcs:LiteralRef" location="70:5-70:15" referredLiteral="/15"/>
+ <elements xsi:type="tcs:Property" location="70:16-70:20" name="name"/>
+ <elements xsi:type="tcs:ConditionalElement" location="71:4-71:32">
+ <condition xsi:type="tcs:AndExp" location="71:5-71:20">
+ <expressions xsi:type="tcs:IsDefinedExp" location="71:5-71:20" propertyName="mode"/>
+ </condition>
+ <thenSequence location="71:23-71:31">
+ <elements xsi:type="tcs:LiteralRef" location="71:23-71:26" referredLiteral="/0/@symbols.15"/>
+ <elements xsi:type="tcs:Property" location="71:27-71:31" name="mode"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="72:4-72:90">
+ <condition xsi:type="tcs:AndExp" location="72:5-72:28">
+ <expressions xsi:type="tcs:IsDefinedExp" location="72:5-72:28" propertyName="disambiguate"/>
+ </condition>
+ <thenSequence location="72:31-72:89">
+ <elements xsi:type="tcs:LiteralRef" location="72:31-72:34" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:LiteralRef" location="72:35-72:49" referredLiteral="/16"/>
+ <elements xsi:type="tcs:LiteralRef" location="72:50-72:53" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="72:54-72:85" name="disambiguate">
+ <propertyArgs xsi:type="tcs:AsPArg" location="72:67-72:84" value="stringSymbol"/>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="72:86-72:89" referredLiteral="/0/@symbols.7"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="73:4-73:23">
+ <condition xsi:type="tcs:AndExp" location="73:5-73:12">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="73:5-73:12" propertyName="isMulti"/>
+ </condition>
+ <thenSequence location="73:15-73:22">
+ <elements xsi:type="tcs:LiteralRef" location="73:15-73:22" referredLiteral="/17"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="74:4-74:21">
+ <condition xsi:type="tcs:AndExp" location="74:5-74:11">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="74:5-74:11" propertyName="isMain"/>
+ </condition>
+ <thenSequence location="74:14-74:20">
+ <elements xsi:type="tcs:LiteralRef" location="74:14-74:20" referredLiteral="/18"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="75:4-75:47">
+ <condition xsi:type="tcs:AndExp" location="75:5-75:15">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="75:5-75:15" propertyName="isAbstract"/>
+ </condition>
+ <thenSequence location="75:18-75:46">
+ <elements xsi:type="tcs:ConditionalElement" location="75:18-75:35">
+ <condition xsi:type="tcs:AndExp" location="75:19-75:25">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="75:19-75:25" propertyName="isDeep"/>
+ </condition>
+ <thenSequence location="75:28-75:34">
+ <elements xsi:type="tcs:LiteralRef" location="75:28-75:34" referredLiteral="/19"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="75:36-75:46" referredLiteral="/20"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="76:4-76:99">
+ <condition xsi:type="tcs:AndExp" location="76:5-76:17">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="76:5-76:17" propertyName="isOperatored"/>
+ </condition>
+ <thenSequence location="76:20-76:98">
+ <elements xsi:type="tcs:LiteralRef" location="76:20-76:32" referredLiteral="/21"/>
+ <elements xsi:type="tcs:ConditionalElement" location="76:33-76:98">
+ <condition xsi:type="tcs:AndExp" location="76:34-76:57">
+ <expressions xsi:type="tcs:IsDefinedExp" location="76:34-76:57" propertyName="operatorList"/>
+ </condition>
+ <thenSequence location="76:60-76:97">
+ <elements xsi:type="tcs:LiteralRef" location="76:60-76:63" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="76:64-76:93" name="operatorList">
+ <propertyArgs xsi:type="tcs:RefersToPArg" location="76:77-76:92" propertyName="name"/>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="76:94-76:97" referredLiteral="/0/@symbols.7"/>
+ </thenSequence>
+ </elements>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="77:4-77:27">
+ <condition xsi:type="tcs:AndExp" location="77:5-77:14">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="77:5-77:14" propertyName="isContext"/>
+ </condition>
+ <thenSequence location="77:17-77:26">
+ <elements xsi:type="tcs:LiteralRef" location="77:17-77:26" referredLiteral="/22"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="78:4-78:37">
+ <condition xsi:type="tcs:AndExp" location="78:5-78:19">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="78:5-78:19" propertyName="isAddToContext"/>
+ </condition>
+ <thenSequence location="78:22-78:36">
+ <elements xsi:type="tcs:LiteralRef" location="78:22-78:36" referredLiteral="/23"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="79:4-79:33">
+ <condition xsi:type="tcs:AndExp" location="79:5-79:17">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="79:5-79:17" propertyName="isNonPrimary"/>
+ </condition>
+ <thenSequence location="79:20-79:32">
+ <elements xsi:type="tcs:LiteralRef" location="79:20-79:32" referredLiteral="/24"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="80:4-80:87">
+ <condition xsi:type="tcs:AndExp" location="80:5-80:30">
+ <expressions xsi:type="tcs:IsDefinedExp" location="80:5-80:30" propertyName="prefixSequence"/>
+ </condition>
+ <thenSequence location="80:33-80:86">
+ <elements xsi:type="tcs:LiteralRef" location="80:33-80:41" referredLiteral="/25"/>
+ <elements xsi:type="tcs:Block" location="80:42-80:86">
+ <blockSequence location="80:44-80:84">
+ <elements xsi:type="tcs:LiteralRef" location="80:44-80:47" referredLiteral="/0/@symbols.13"/>
+ <elements xsi:type="tcs:Block" location="80:48-80:84">
+ <blockSequence location="80:50-80:64">
+ <elements xsi:type="tcs:Property" location="80:50-80:64" name="prefixSequence"/>
+ </blockSequence>
+ <blockArgs xsi:type="tcs:StartNLBArg" location="80:68-80:83"/>
+ </elements>
+ </blockSequence>
+ </elements>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="81:4-81:92">
+ <condition xsi:type="tcs:AndExp" location="81:5-81:32">
+ <expressions xsi:type="tcs:IsDefinedExp" location="81:5-81:32" propertyName="templateSequence"/>
+ </condition>
+ <thenSequence location="81:35-81:85">
+ <elements xsi:type="tcs:Block" location="81:35-81:85">
+ <blockSequence location="81:37-81:83">
+ <elements xsi:type="tcs:LiteralRef" location="81:37-81:40" referredLiteral="/0/@symbols.13"/>
+ <elements xsi:type="tcs:Block" location="81:41-81:79">
+ <blockSequence location="81:43-81:59">
+ <elements xsi:type="tcs:Property" location="81:43-81:59" name="templateSequence"/>
+ </blockSequence>
+ <blockArgs xsi:type="tcs:StartNLBArg" location="81:63-81:78"/>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="81:80-81:83" referredLiteral="/0/@symbols.12"/>
+ </blockSequence>
+ </elements>
+ </thenSequence>
+ <elseSequence location="81:88-81:91">
+ <elements xsi:type="tcs:LiteralRef" location="81:88-81:91" referredLiteral="/0/@symbols.12"/>
+ </elseSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="84:2-95:4" name="OperatorTemplate">
+ <templateSequence location="85:5-94:80">
+ <elements xsi:type="tcs:LiteralRef" location="85:5-85:23" referredLiteral="/26"/>
+ <elements xsi:type="tcs:Property" location="85:24-85:28" name="name"/>
+ <elements xsi:type="tcs:LiteralRef" location="85:29-85:32" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:LiteralRef" location="86:5-86:16" referredLiteral="/27"/>
+ <elements xsi:type="tcs:LiteralRef" location="86:17-86:20" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="86:21-86:47" name="operators">
+ <propertyArgs xsi:type="tcs:RefersToPArg" location="86:31-86:46" propertyName="name"/>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="87:5-87:8" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:LiteralRef" location="87:9-87:17" referredLiteral="/28"/>
+ <elements xsi:type="tcs:LiteralRef" location="87:18-87:21" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="87:22-87:28" name="source"/>
+ <elements xsi:type="tcs:ConditionalElement" location="88:5-88:59">
+ <condition xsi:type="tcs:AndExp" location="88:6-88:26">
+ <expressions xsi:type="tcs:IsDefinedExp" location="88:6-88:26" propertyName="storeOpTo"/>
+ </condition>
+ <thenSequence location="88:29-88:58">
+ <elements xsi:type="tcs:LiteralRef" location="88:29-88:32" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:LiteralRef" location="88:33-88:44" referredLiteral="/29"/>
+ <elements xsi:type="tcs:LiteralRef" location="88:45-88:48" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="88:49-88:58" name="storeOpTo"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="89:5-89:68">
+ <condition xsi:type="tcs:AndExp" location="89:6-89:29">
+ <expressions xsi:type="tcs:IsDefinedExp" location="89:6-89:29" propertyName="storeRightTo"/>
+ </condition>
+ <thenSequence location="89:32-89:67">
+ <elements xsi:type="tcs:LiteralRef" location="89:32-89:35" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:LiteralRef" location="89:36-89:50" referredLiteral="/30"/>
+ <elements xsi:type="tcs:LiteralRef" location="89:51-89:54" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="89:55-89:67" name="storeRightTo"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="90:5-90:87">
+ <condition xsi:type="tcs:AndExp" location="90:6-90:29">
+ <expressions xsi:type="tcs:IsDefinedExp" location="90:6-90:29" propertyName="disambiguate"/>
+ </condition>
+ <thenSequence location="90:32-90:86">
+ <elements xsi:type="tcs:LiteralRef" location="90:32-90:35" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:LiteralRef" location="90:36-90:50" referredLiteral="/16"/>
+ <elements xsi:type="tcs:LiteralRef" location="90:51-90:54" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="90:55-90:86" name="disambiguate">
+ <propertyArgs xsi:type="tcs:AsPArg" location="90:68-90:85" value="stringSymbol"/>
+ </elements>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="91:5-91:93">
+ <condition xsi:type="tcs:AndExp" location="91:6-91:31">
+ <expressions xsi:type="tcs:IsDefinedExp" location="91:6-91:31" propertyName="disambiguateV3"/>
+ </condition>
+ <thenSequence location="91:34-91:92">
+ <elements xsi:type="tcs:LiteralRef" location="91:34-91:37" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:LiteralRef" location="91:38-91:54" referredLiteral="/31"/>
+ <elements xsi:type="tcs:LiteralRef" location="91:55-91:58" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="91:59-91:92" name="disambiguateV3">
+ <propertyArgs xsi:type="tcs:AsPArg" location="91:74-91:91" value="stringSymbol"/>
+ </elements>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="92:4-92:7" referredLiteral="/0/@symbols.7"/>
+ <elements xsi:type="tcs:ConditionalElement" location="93:4-93:27">
+ <condition xsi:type="tcs:AndExp" location="93:5-93:14">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="93:5-93:14" propertyName="isContext"/>
+ </condition>
+ <thenSequence location="93:17-93:26">
+ <elements xsi:type="tcs:LiteralRef" location="93:17-93:26" referredLiteral="/22"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="94:4-94:80">
+ <condition xsi:type="tcs:AndExp" location="94:5-94:26">
+ <expressions xsi:type="tcs:IsDefinedExp" location="94:5-94:26" propertyName="otSequence"/>
+ </condition>
+ <thenSequence location="94:29-94:73">
+ <elements xsi:type="tcs:Block" location="94:29-94:73">
+ <blockSequence location="94:31-94:71">
+ <elements xsi:type="tcs:LiteralRef" location="94:31-94:34" referredLiteral="/0/@symbols.13"/>
+ <elements xsi:type="tcs:Block" location="94:35-94:67">
+ <blockSequence location="94:37-94:47">
+ <elements xsi:type="tcs:Property" location="94:37-94:47" name="otSequence"/>
+ </blockSequence>
+ <blockArgs xsi:type="tcs:StartNLBArg" location="94:51-94:66"/>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="94:68-94:71" referredLiteral="/0/@symbols.12"/>
+ </blockSequence>
+ </elements>
+ </thenSequence>
+ <elseSequence location="94:76-94:79">
+ <elements xsi:type="tcs:LiteralRef" location="94:76-94:79" referredLiteral="/0/@symbols.12"/>
+ </elseSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="97:2-102:4" name="FunctionTemplate" isAddToContext="true">
+ <commentsAfter>-- @end Templates</commentsAfter>
+ <templateSequence location="98:5-101:10">
+ <elements xsi:type="tcs:LiteralRef" location="98:5-98:15" referredLiteral="/32"/>
+ <elements xsi:type="tcs:Property" location="98:16-98:20" name="name"/>
+ <elements xsi:type="tcs:LiteralRef" location="98:21-98:24" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="98:25-98:34" name="className"/>
+ <elements xsi:type="tcs:LiteralRef" location="98:35-98:38" referredLiteral="/0/@symbols.7"/>
+ <elements xsi:type="tcs:Block" location="99:5-101:10">
+ <blockSequence location="99:7-101:8">
+ <elements xsi:type="tcs:LiteralRef" location="99:7-99:10" referredLiteral="/0/@symbols.13"/>
+ <elements xsi:type="tcs:Block" location="100:6-100:44">
+ <blockSequence location="100:8-100:24">
+ <elements xsi:type="tcs:Property" location="100:8-100:24" name="functionSequence"/>
+ </blockSequence>
+ <blockArgs xsi:type="tcs:StartNLBArg" location="100:28-100:43"/>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="101:5-101:8" referredLiteral="/0/@symbols.12"/>
+ </blockSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="105:2-107:4" name="Sequence">
+ <commentsBefore>-- @end Templates</commentsBefore>
+ <commentsAfter>-- @begin Sequence Elements</commentsAfter>
+ <templateSequence location="106:5-106:13">
+ <elements xsi:type="tcs:Property" location="106:5-106:13" name="elements"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="110:2-110:36" name="SequenceElement" isAbstract="true">
+ <commentsBefore>-- @begin Sequence Elements</commentsBefore>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="112:2-120:4" name="LiteralRef">
+ <templateSequence location="116:5-116:116">
+ <commentsBefore>-- COMMENT FOR EXTRACTOR</commentsBefore>
+ <commentsBefore>--&#x9;&#x9;&#x9;[[</commentsBefore>
+ <commentsAfter>--&#x9;&#x9;&#x9;|</commentsAfter>
+ <commentsAfter>--&#x9;&#x9;&#x9;&#x9;&quot;@&quot; referredLiteral{refersTo = name}</commentsAfter>
+ <commentsAfter>--&#x9;&#x9;&#x9;]]</commentsAfter>
+ <elements xsi:type="tcs:Property" location="116:5-116:116" name="referredLiteral">
+ <commentsBefore>-- COMMENT FOR EXTRACTOR</commentsBefore>
+ <commentsBefore>--&#x9;&#x9;&#x9;[[</commentsBefore>
+ <commentsAfter>--&#x9;&#x9;&#x9;|</commentsAfter>
+ <commentsAfter>--&#x9;&#x9;&#x9;&#x9;&quot;@&quot; referredLiteral{refersTo = name}</commentsAfter>
+ <commentsAfter>--&#x9;&#x9;&#x9;]]</commentsAfter>
+ <propertyArgs xsi:type="tcs:RefersToPArg" location="116:21-116:37" propertyName="value"/>
+ <propertyArgs xsi:type="tcs:LookInPArg" location="116:39-116:52">
+ <propertyName>#all</propertyName>
+ </propertyArgs>
+ <propertyArgs xsi:type="tcs:AsPArg" location="116:54-116:71" value="stringSymbol"/>
+ <propertyArgs xsi:type="tcs:AutoCreatePArg" location="116:73-116:95" value="ifmissing"/>
+ <propertyArgs xsi:type="tcs:CreateAsPArg" location="116:97-116:115" name="Keyword"/>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="122:2-124:4" name="Property">
+ <templateSequence location="123:5-123:101">
+ <elements xsi:type="tcs:Property" location="123:5-123:35" name="name">
+ <propertyArgs xsi:type="tcs:AsPArg" location="123:10-123:34" value="identifierOrKeyword"/>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="123:36-123:101">
+ <condition xsi:type="tcs:AndExp" location="123:37-123:60">
+ <expressions xsi:type="tcs:IsDefinedExp" location="123:37-123:60" propertyName="propertyArgs"/>
+ </condition>
+ <thenSequence location="123:63-123:100">
+ <elements xsi:type="tcs:LiteralRef" location="123:63-123:66" referredLiteral="/0/@symbols.8"/>
+ <elements xsi:type="tcs:Property" location="123:67-123:96" name="propertyArgs">
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="123:80-123:95">
+ <separatorSequence location="123:92-123:95">
+ <elements xsi:type="tcs:LiteralRef" location="123:92-123:95" referredLiteral="/0/@symbols.5"/>
+ </separatorSequence>
+ </propertyArgs>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="123:97-123:100" referredLiteral="/0/@symbols.9"/>
+ </thenSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="126:2-128:4" name="CustomSeparator">
+ <templateSequence location="127:5-127:17">
+ <elements xsi:type="tcs:LiteralRef" location="127:5-127:8" referredLiteral="/0/@symbols.27"/>
+ <elements xsi:type="tcs:Property" location="127:9-127:13" name="name"/>
+ <elements xsi:type="tcs:LiteralRef" location="127:14-127:17" referredLiteral="/0/@symbols.26"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="130:2-132:4" name="Block">
+ <templateSequence location="131:5-131:86">
+ <elements xsi:type="tcs:LiteralRef" location="131:5-131:8" referredLiteral="/0/@symbols.0"/>
+ <elements xsi:type="tcs:Property" location="131:9-131:22" name="blockSequence"/>
+ <elements xsi:type="tcs:LiteralRef" location="131:23-131:26" referredLiteral="/0/@symbols.1"/>
+ <elements xsi:type="tcs:ConditionalElement" location="131:27-131:86">
+ <condition xsi:type="tcs:AndExp" location="131:28-131:48">
+ <expressions xsi:type="tcs:IsDefinedExp" location="131:28-131:48" propertyName="blockArgs"/>
+ </condition>
+ <thenSequence location="131:51-131:85">
+ <elements xsi:type="tcs:LiteralRef" location="131:51-131:54" referredLiteral="/0/@symbols.8"/>
+ <elements xsi:type="tcs:Property" location="131:55-131:81" name="blockArgs">
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="131:65-131:80">
+ <separatorSequence location="131:77-131:80">
+ <elements xsi:type="tcs:LiteralRef" location="131:77-131:80" referredLiteral="/0/@symbols.5"/>
+ </separatorSequence>
+ </propertyArgs>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="131:82-131:85" referredLiteral="/0/@symbols.9"/>
+ </thenSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="134:2-136:4" name="ConditionalElement">
+ <templateSequence location="135:5-135:84">
+ <elements xsi:type="tcs:LiteralRef" location="135:5-135:8" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="135:9-135:18" name="condition"/>
+ <elements xsi:type="tcs:LiteralRef" location="135:19-135:22" referredLiteral="/0/@symbols.16"/>
+ <elements xsi:type="tcs:Property" location="135:23-135:35" name="thenSequence"/>
+ <elements xsi:type="tcs:ConditionalElement" location="135:36-135:80">
+ <condition xsi:type="tcs:AndExp" location="135:37-135:60">
+ <expressions xsi:type="tcs:IsDefinedExp" location="135:37-135:60" propertyName="elseSequence"/>
+ </condition>
+ <thenSequence location="135:63-135:79">
+ <elements xsi:type="tcs:LiteralRef" location="135:63-135:66" referredLiteral="/0/@symbols.13"/>
+ <elements xsi:type="tcs:Property" location="135:67-135:79" name="elseSequence"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="135:81-135:84" referredLiteral="/0/@symbols.7"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="138:2-140:4" name="PropertyInit">
+ <templateSequence location="139:5-139:30">
+ <elements xsi:type="tcs:LiteralRef" location="139:5-139:9" referredLiteral="/0/@symbols.10"/>
+ <elements xsi:type="tcs:Property" location="139:10-139:14" name="name"/>
+ <elements xsi:type="tcs:LiteralRef" location="139:15-139:19" referredLiteral="/0/@symbols.31"/>
+ <elements xsi:type="tcs:Property" location="139:20-139:25" name="value"/>
+ <elements xsi:type="tcs:LiteralRef" location="139:26-139:30" referredLiteral="/0/@symbols.11"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="142:2-144:4" name="Alternative">
+ <templateSequence location="143:5-143:57">
+ <elements xsi:type="tcs:LiteralRef" location="143:5-143:9" referredLiteral="/0/@symbols.2"/>
+ <elements xsi:type="tcs:Property" location="143:10-143:36" name="sequences">
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="143:20-143:35">
+ <separatorSequence location="143:32-143:35">
+ <elements xsi:type="tcs:LiteralRef" location="143:32-143:35" referredLiteral="/0/@symbols.14"/>
+ </separatorSequence>
+ </propertyArgs>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="143:37-143:41" referredLiteral="/0/@symbols.3"/>
+ <elements xsi:type="tcs:ConditionalElement" location="143:42-143:57">
+ <condition xsi:type="tcs:AndExp" location="143:43-143:50">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="143:43-143:50" propertyName="isMulti"/>
+ </condition>
+ <thenSequence location="143:53-143:56">
+ <elements xsi:type="tcs:LiteralRef" location="143:53-143:56" referredLiteral="/0/@symbols.22"/>
+ </thenSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="146:2-148:4" name="FunctionCall">
+ <commentsAfter>-- @end Sequence Elements</commentsAfter>
+ <commentsAfter>-- @begin Property Arguments</commentsAfter>
+ <templateSequence location="147:5-147:40">
+ <elements xsi:type="tcs:LiteralRef" location="147:5-147:8" referredLiteral="/0/@symbols.17"/>
+ <elements xsi:type="tcs:Property" location="147:9-147:40" name="calledFunction">
+ <propertyArgs xsi:type="tcs:RefersToPArg" location="147:24-147:39" propertyName="name"/>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="153:2-153:32" name="PropertyArg" isAbstract="true">
+ <commentsBefore>-- @end Sequence Elements</commentsBefore>
+ <commentsBefore>-- @begin Property Arguments</commentsBefore>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="155:2-157:4" name="RefersToPArg">
+ <templateSequence location="156:5-156:58">
+ <elements xsi:type="tcs:LiteralRef" location="156:5-156:15" referredLiteral="/33"/>
+ <elements xsi:type="tcs:LiteralRef" location="156:16-156:19" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="156:20-156:58" name="propertyName">
+ <propertyArgs xsi:type="tcs:AsPArg" location="156:33-156:57" value="identifierOrKeyword"/>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="159:2-161:4" name="LookInPArg">
+ <templateSequence location="160:5-160:111">
+ <elements xsi:type="tcs:LiteralRef" location="160:5-160:13" referredLiteral="/34"/>
+ <elements xsi:type="tcs:LiteralRef" location="160:14-160:17" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:ConditionalElement" location="160:18-160:111">
+ <condition xsi:type="tcs:AndExp" location="160:19-160:40">
+ <expressions xsi:type="tcs:EqualsExp" location="160:19-160:40" propertyName="propertyName">
+ <value xsi:type="tcs:StringVal" location="160:34-160:40" symbol="#all"/>
+ </expressions>
+ </condition>
+ <thenSequence location="160:43-160:52">
+ <elements xsi:type="tcs:LiteralRef" location="160:43-160:46" referredLiteral="/0/@symbols.15"/>
+ <elements xsi:type="tcs:LiteralRef" location="160:47-160:52" referredLiteral="/35"/>
+ </thenSequence>
+ <elseSequence location="160:55-160:110">
+ <elements xsi:type="tcs:Property" location="160:55-160:110" name="propertyName">
+ <propertyArgs xsi:type="tcs:AsPArg" location="160:68-160:92" value="identifierOrKeyword"/>
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="160:94-160:109">
+ <separatorSequence location="160:106-160:109">
+ <elements xsi:type="tcs:LiteralRef" location="160:106-160:109" referredLiteral="/0/@symbols.19"/>
+ </separatorSequence>
+ </propertyArgs>
+ </elements>
+ </elseSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="163:2-165:4" name="CreateInPArg">
+ <templateSequence location="164:5-164:75">
+ <elements xsi:type="tcs:LiteralRef" location="164:5-164:15" referredLiteral="/36"/>
+ <elements xsi:type="tcs:LiteralRef" location="164:16-164:19" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="164:20-164:75" name="propertyName">
+ <propertyArgs xsi:type="tcs:AsPArg" location="164:33-164:57" value="identifierOrKeyword"/>
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="164:59-164:74">
+ <separatorSequence location="164:71-164:74">
+ <elements xsi:type="tcs:LiteralRef" location="164:71-164:74" referredLiteral="/0/@symbols.19"/>
+ </separatorSequence>
+ </propertyArgs>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="167:2-169:4" name="AsPArg">
+ <templateSequence location="168:5-168:19">
+ <elements xsi:type="tcs:LiteralRef" location="168:5-168:9" referredLiteral="/37"/>
+ <elements xsi:type="tcs:LiteralRef" location="168:10-168:13" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="168:14-168:19" name="value"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="171:2-173:4" name="RefersToKeyPArg">
+ <templateSequence location="172:5-172:49">
+ <elements xsi:type="tcs:LiteralRef" location="172:5-172:18" referredLiteral="/38"/>
+ <elements xsi:type="tcs:LiteralRef" location="172:19-172:22" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:ConditionalElement" location="172:23-172:49">
+ <condition xsi:type="tcs:AndExp" location="172:24-172:29">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="172:24-172:29" propertyName="value"/>
+ </condition>
+ <thenSequence location="172:32-172:38">
+ <elements xsi:type="tcs:LiteralRef" location="172:32-172:38" referredLiteral="/39"/>
+ </thenSequence>
+ <elseSequence location="172:41-172:48">
+ <elements xsi:type="tcs:LiteralRef" location="172:41-172:48" referredLiteral="/40"/>
+ </elseSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="175:2-177:4" name="SeparatorPArg">
+ <templateSequence location="176:5-176:38">
+ <elements xsi:type="tcs:LiteralRef" location="176:5-176:16" referredLiteral="/41"/>
+ <elements xsi:type="tcs:LiteralRef" location="176:17-176:20" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="176:21-176:38" name="separatorSequence"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="179:2-181:4" name="AutoCreatePArg">
+ <templateSequence location="180:5-180:27">
+ <elements xsi:type="tcs:LiteralRef" location="180:5-180:17" referredLiteral="/42"/>
+ <elements xsi:type="tcs:LiteralRef" location="180:18-180:21" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="180:22-180:27" name="value"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:EnumerationTemplate" location="183:2-187:4" name="AutoCreateKind">
+ <mappings location="184:5-184:24">
+ <literal location="184:5-184:12" name="always"/>
+ <element xsi:type="tcs:LiteralRef" location="184:16-184:24" referredLiteral="/43"/>
+ </mappings>
+ <mappings location="185:4-185:28">
+ <literal location="185:4-185:14" name="ifmissing"/>
+ <element xsi:type="tcs:LiteralRef" location="185:17-185:28" referredLiteral="/44"/>
+ </mappings>
+ <mappings location="186:4-186:21">
+ <literal location="186:4-186:10" name="never"/>
+ <element xsi:type="tcs:LiteralRef" location="186:14-186:21" referredLiteral="/45"/>
+ </mappings>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="189:2-191:4" name="ImportContextPArg">
+ <templateSequence location="190:5-190:20">
+ <elements xsi:type="tcs:LiteralRef" location="190:5-190:20" referredLiteral="/46"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="193:2-195:4" name="ForcedLowerPArg">
+ <templateSequence location="194:5-194:28">
+ <elements xsi:type="tcs:LiteralRef" location="194:5-194:18" referredLiteral="/47"/>
+ <elements xsi:type="tcs:LiteralRef" location="194:19-194:22" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="194:23-194:28" name="value"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="197:2-199:4" name="CreateAsPArg">
+ <templateSequence location="198:5-198:50">
+ <elements xsi:type="tcs:LiteralRef" location="198:5-198:15" referredLiteral="/48"/>
+ <elements xsi:type="tcs:LiteralRef" location="198:16-198:19" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="198:20-198:50" name="name">
+ <propertyArgs xsi:type="tcs:AsPArg" location="198:25-198:49" value="identifierOrKeyword"/>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="201:2-203:4" name="ModePArg">
+ <commentsAfter>-- @end Property Arguments</commentsAfter>
+ <commentsAfter>-- @begin Block Arguments</commentsAfter>
+ <templateSequence location="202:5-202:46">
+ <elements xsi:type="tcs:LiteralRef" location="202:5-202:11" referredLiteral="/49"/>
+ <elements xsi:type="tcs:LiteralRef" location="202:12-202:15" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="202:16-202:46" name="mode">
+ <propertyArgs xsi:type="tcs:AsPArg" location="202:21-202:45" value="identifierOrKeyword"/>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="208:2-208:29" name="BlockArg" isAbstract="true">
+ <commentsBefore>-- @end Property Arguments</commentsBefore>
+ <commentsBefore>-- @begin Block Arguments</commentsBefore>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="210:2-212:4" name="NbNLBArg">
+ <templateSequence location="211:5-211:21">
+ <elements xsi:type="tcs:LiteralRef" location="211:5-211:11" referredLiteral="/50"/>
+ <elements xsi:type="tcs:LiteralRef" location="211:12-211:15" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="211:16-211:21" name="value"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="214:2-216:4" name="IndentIncrBArg">
+ <templateSequence location="215:5-215:27">
+ <elements xsi:type="tcs:LiteralRef" location="215:5-215:17" referredLiteral="/51"/>
+ <elements xsi:type="tcs:LiteralRef" location="215:18-215:21" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="215:22-215:27" name="value"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="218:2-220:4" name="StartNLBArg">
+ <templateSequence location="219:5-219:45">
+ <elements xsi:type="tcs:LiteralRef" location="219:5-219:14" referredLiteral="/52"/>
+ <elements xsi:type="tcs:LiteralRef" location="219:15-219:18" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:ConditionalElement" location="219:19-219:45">
+ <condition xsi:type="tcs:AndExp" location="219:20-219:25">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="219:20-219:25" propertyName="value"/>
+ </condition>
+ <thenSequence location="219:28-219:34">
+ <elements xsi:type="tcs:LiteralRef" location="219:28-219:34" referredLiteral="/39"/>
+ </thenSequence>
+ <elseSequence location="219:37-219:44">
+ <elements xsi:type="tcs:LiteralRef" location="219:37-219:44" referredLiteral="/40"/>
+ </elseSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="222:2-224:4" name="StartNbNLBArg">
+ <templateSequence location="223:5-223:26">
+ <elements xsi:type="tcs:LiteralRef" location="223:5-223:16" referredLiteral="/53"/>
+ <elements xsi:type="tcs:LiteralRef" location="223:17-223:20" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="223:21-223:26" name="value"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="226:2-228:4" name="EndNLBArg">
+ <commentsAfter>-- @end Block Arguments</commentsAfter>
+ <commentsAfter>-- @begin Literals</commentsAfter>
+ <commentsAfter>--&#x9;template Literal abstract;</commentsAfter>
+ <templateSequence location="227:5-227:43">
+ <elements xsi:type="tcs:LiteralRef" location="227:5-227:12" referredLiteral="/54"/>
+ <elements xsi:type="tcs:LiteralRef" location="227:13-227:16" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:ConditionalElement" location="227:17-227:43">
+ <condition xsi:type="tcs:AndExp" location="227:18-227:23">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="227:18-227:23" propertyName="value"/>
+ </condition>
+ <thenSequence location="227:26-227:32">
+ <elements xsi:type="tcs:LiteralRef" location="227:26-227:32" referredLiteral="/39"/>
+ </thenSequence>
+ <elseSequence location="227:35-227:42">
+ <elements xsi:type="tcs:LiteralRef" location="227:35-227:42" referredLiteral="/40"/>
+ </elseSequence>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="235:2-237:4" name="Symbol" isAddToContext="true">
+ <commentsBefore>-- @end Block Arguments</commentsBefore>
+ <commentsBefore>-- @begin Literals</commentsBefore>
+ <commentsBefore>--&#x9;template Literal abstract;</commentsBefore>
+ <templateSequence location="236:5-236:92">
+ <elements xsi:type="tcs:Property" location="236:5-236:9" name="name"/>
+ <elements xsi:type="tcs:LiteralRef" location="236:10-236:13" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="236:14-236:38" name="value">
+ <propertyArgs xsi:type="tcs:AsPArg" location="236:20-236:37" value="stringSymbol"/>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="236:39-236:88">
+ <condition xsi:type="tcs:AndExp" location="236:40-236:57">
+ <expressions xsi:type="tcs:IsDefinedExp" location="236:40-236:57" propertyName="spaces"/>
+ </condition>
+ <thenSequence location="236:60-236:87">
+ <elements xsi:type="tcs:LiteralRef" location="236:60-236:63" referredLiteral="/0/@symbols.13"/>
+ <elements xsi:type="tcs:Property" location="236:64-236:87" name="spaces">
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="236:71-236:86">
+ <separatorSequence location="236:83-236:86">
+ <elements xsi:type="tcs:LiteralRef" location="236:83-236:86" referredLiteral="/0/@symbols.5"/>
+ </separatorSequence>
+ </propertyArgs>
+ </elements>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="236:89-236:92" referredLiteral="/0/@symbols.12"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:EnumerationTemplate" location="239:2-244:4" name="SpaceKind">
+ <mappings location="240:5-240:29">
+ <literal location="240:5-240:15" name="leftSpace"/>
+ <element xsi:type="tcs:LiteralRef" location="240:18-240:29" referredLiteral="/55"/>
+ </mappings>
+ <mappings location="241:4-241:26">
+ <literal location="241:4-241:13" name="leftNone"/>
+ <element xsi:type="tcs:LiteralRef" location="241:16-241:26" referredLiteral="/56"/>
+ </mappings>
+ <mappings location="242:4-242:30">
+ <literal location="242:4-242:15" name="rightSpace"/>
+ <element xsi:type="tcs:LiteralRef" location="242:18-242:30" referredLiteral="/57"/>
+ </mappings>
+ <mappings location="243:4-243:28">
+ <literal location="243:4-243:14" name="rightNone"/>
+ <element xsi:type="tcs:LiteralRef" location="243:17-243:28" referredLiteral="/58"/>
+ </mappings>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="246:2-248:4" name="Keyword" isAddToContext="true">
+ <commentsAfter>-- @end Literals</commentsAfter>
+ <commentsAfter>-- @begin Operators</commentsAfter>
+ <templateSequence location="247:5-247:42">
+ <elements xsi:type="tcs:Property" location="247:5-247:9" name="name"/>
+ <elements xsi:type="tcs:LiteralRef" location="247:10-247:13" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="247:14-247:38" name="value">
+ <propertyArgs xsi:type="tcs:AsPArg" location="247:20-247:37" value="stringSymbol"/>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="247:39-247:42" referredLiteral="/0/@symbols.12"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="252:2-256:4" name="OperatorList" isAddToContext="true">
+ <commentsBefore>-- @end Literals</commentsBefore>
+ <commentsBefore>-- @begin Operators</commentsBefore>
+ <templateSequence location="253:5-255:9">
+ <elements xsi:type="tcs:LiteralRef" location="253:5-253:16" referredLiteral="/27"/>
+ <elements xsi:type="tcs:ConditionalElement" location="253:17-253:41">
+ <condition xsi:type="tcs:AndExp" location="253:18-253:33">
+ <expressions xsi:type="tcs:IsDefinedExp" location="253:18-253:33" propertyName="name"/>
+ </condition>
+ <thenSequence location="253:36-253:40">
+ <elements xsi:type="tcs:Property" location="253:36-253:40" name="name"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="253:42-253:45" referredLiteral="/0/@symbols.8"/>
+ <elements xsi:type="tcs:Block" location="253:46-255:5">
+ <blockSequence location="254:5-254:15">
+ <elements xsi:type="tcs:Property" location="254:5-254:15" name="priorities"/>
+ </blockSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="255:6-255:9" referredLiteral="/0/@symbols.9"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="258:2-268:4" name="Priority">
+ <templateSequence location="259:5-267:9">
+ <elements xsi:type="tcs:LiteralRef" location="259:5-259:15" referredLiteral="/59"/>
+ <elements xsi:type="tcs:Property" location="259:16-259:21" name="value"/>
+ <elements xsi:type="tcs:ConditionalElement" location="260:4-264:5">
+ <condition xsi:type="tcs:AndExp" location="260:5-260:26">
+ <expressions xsi:type="tcs:EqualsExp" location="260:5-260:26" propertyName="associativity">
+ <value xsi:type="tcs:EnumLiteralVal" location="260:21-260:26" name="left"/>
+ </expressions>
+ </condition>
+ <thenSequence location="262:5-260:28">
+ <commentsBefore>-- nothing</commentsBefore>
+ <commentsAfter>-- nothing</commentsAfter>
+ </thenSequence>
+ <elseSequence location="263:6-263:23">
+ <elements xsi:type="tcs:LiteralRef" location="263:6-263:9" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:Property" location="263:10-263:23" name="associativity"/>
+ </elseSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="265:4-265:7" referredLiteral="/0/@symbols.8"/>
+ <elements xsi:type="tcs:Block" location="265:8-267:5">
+ <blockSequence location="266:5-266:14">
+ <elements xsi:type="tcs:Property" location="266:5-266:14" name="operators"/>
+ </blockSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="267:6-267:9" referredLiteral="/0/@symbols.9"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="270:2-278:4" name="Operator" isAddToContext="true">
+ <templateSequence location="271:5-277:17">
+ <elements xsi:type="tcs:ConditionalElement" location="271:5-271:28">
+ <condition xsi:type="tcs:AndExp" location="271:6-271:15">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="271:6-271:15" propertyName="isPostfix"/>
+ </condition>
+ <thenSequence location="271:18-271:27">
+ <elements xsi:type="tcs:LiteralRef" location="271:18-271:27" referredLiteral="/60"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:Property" location="271:29-271:33" name="name"/>
+ <elements xsi:type="tcs:LiteralRef" location="271:34-271:37" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:ConditionalElement" location="272:4-276:7">
+ <condition xsi:type="tcs:AndExp" location="272:5-272:23">
+ <expressions xsi:type="tcs:IsDefinedExp" location="272:5-272:23" propertyName="literal"/>
+ </condition>
+ <thenSequence location="272:26-276:6">
+ <elements xsi:type="tcs:Alternative" location="272:26-276:6">
+ <sequences location="273:5-273:29">
+ <elements xsi:type="tcs:Property" location="273:5-273:29" name="literal">
+ <propertyArgs xsi:type="tcs:RefersToPArg" location="273:13-273:28" propertyName="name"/>
+ </elements>
+ </sequences>
+ <sequences location="275:5-275:108">
+ <elements xsi:type="tcs:Property" location="275:5-275:108" name="literal">
+ <propertyArgs xsi:type="tcs:RefersToPArg" location="275:13-275:29" propertyName="value"/>
+ <propertyArgs xsi:type="tcs:LookInPArg" location="275:31-275:44">
+ <propertyName>#all</propertyName>
+ </propertyArgs>
+ <propertyArgs xsi:type="tcs:AsPArg" location="275:46-275:63" value="stringSymbol"/>
+ <propertyArgs xsi:type="tcs:AutoCreatePArg" location="275:65-275:87" value="ifmissing"/>
+ <propertyArgs xsi:type="tcs:CreateAsPArg" location="275:89-275:107" name="Keyword"/>
+ </elements>
+ </sequences>
+ </elements>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="277:4-277:7" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:Property" location="277:8-277:13" name="arity"/>
+ <elements xsi:type="tcs:LiteralRef" location="277:14-277:17" referredLiteral="/0/@symbols.12"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:EnumerationTemplate" location="280:2-283:4" name="Associativity">
+ <commentsAfter>-- @end Operators</commentsAfter>
+ <commentsAfter>-- @begin Expressions</commentsAfter>
+ <mappings location="281:5-281:20">
+ <literal location="281:5-281:10" name="left"/>
+ <element xsi:type="tcs:LiteralRef" location="281:14-281:20" referredLiteral="/61"/>
+ </mappings>
+ <mappings location="282:4-282:21">
+ <literal location="282:4-282:10" name="right"/>
+ <element xsi:type="tcs:LiteralRef" location="282:14-282:21" referredLiteral="/62"/>
+ </mappings>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="287:2-287:31" name="Expression" isAbstract="true">
+ <commentsBefore>-- @end Operators</commentsBefore>
+ <commentsBefore>-- @begin Expressions</commentsBefore>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="289:2-291:4" name="AndExp">
+ <templateSequence location="290:5-290:35">
+ <elements xsi:type="tcs:Property" location="290:5-290:35" name="expressions">
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="290:17-290:34">
+ <separatorSequence location="290:29-290:34">
+ <elements xsi:type="tcs:LiteralRef" location="290:29-290:34" referredLiteral="/63"/>
+ </separatorSequence>
+ </propertyArgs>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="293:2-293:28" name="AtomExp" isAbstract="true"/>
+ <templates xsi:type="tcs:ClassTemplate" location="295:2-297:4" name="EqualsExp">
+ <templateSequence location="296:5-296:53">
+ <elements xsi:type="tcs:Property" location="296:5-296:43" name="propertyName">
+ <propertyArgs xsi:type="tcs:AsPArg" location="296:18-296:42" value="identifierOrKeyword"/>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="296:44-296:47" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="296:48-296:53" name="value"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="299:2-301:4" name="BooleanPropertyExp">
+ <templateSequence location="300:5-300:43">
+ <elements xsi:type="tcs:Property" location="300:5-300:43" name="propertyName">
+ <propertyArgs xsi:type="tcs:AsPArg" location="300:18-300:42" value="identifierOrKeyword"/>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="303:2-305:4" name="IsDefinedExp">
+ <templateSequence location="304:5-304:63">
+ <elements xsi:type="tcs:LiteralRef" location="304:5-304:16" referredLiteral="/64"/>
+ <elements xsi:type="tcs:LiteralRef" location="304:17-304:20" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="304:21-304:59" name="propertyName">
+ <propertyArgs xsi:type="tcs:AsPArg" location="304:34-304:58" value="identifierOrKeyword"/>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="304:60-304:63" referredLiteral="/0/@symbols.7"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="307:2-309:4" name="OneExp">
+ <commentsAfter>--@end Expressions</commentsAfter>
+ <commentsAfter>-- @begin Values</commentsAfter>
+ <templateSequence location="308:5-308:57">
+ <elements xsi:type="tcs:LiteralRef" location="308:5-308:10" referredLiteral="/65"/>
+ <elements xsi:type="tcs:LiteralRef" location="308:11-308:14" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="308:15-308:53" name="propertyName">
+ <propertyArgs xsi:type="tcs:AsPArg" location="308:28-308:52" value="identifierOrKeyword"/>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="308:54-308:57" referredLiteral="/0/@symbols.7"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="313:2-313:26" name="Value" isAbstract="true">
+ <commentsBefore>--@end Expressions</commentsBefore>
+ <commentsBefore>-- @begin Values</commentsBefore>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="315:2-317:4" name="StringVal">
+ <templateSequence location="316:5-316:30">
+ <elements xsi:type="tcs:Property" location="316:5-316:30" name="symbol">
+ <propertyArgs xsi:type="tcs:AsPArg" location="316:12-316:29" value="stringSymbol"/>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="319:2-321:4" name="IntegerVal">
+ <templateSequence location="320:5-320:11">
+ <elements xsi:type="tcs:Property" location="320:5-320:11" name="symbol"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="323:2-325:4" name="NegativeIntegerVal">
+ <templateSequence location="324:5-324:15">
+ <elements xsi:type="tcs:LiteralRef" location="324:5-324:8" referredLiteral="/0/@symbols.21"/>
+ <elements xsi:type="tcs:Property" location="324:9-324:15" name="symbol"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="327:2-329:4" name="EnumLiteralVal">
+ <commentsAfter>-- @end Values</commentsAfter>
+ <commentsAfter>-- @begin Tokens</commentsAfter>
+ <templateSequence location="328:5-328:39">
+ <elements xsi:type="tcs:LiteralRef" location="328:5-328:8" referredLiteral="/0/@symbols.15"/>
+ <elements xsi:type="tcs:Property" location="328:9-328:39" name="name">
+ <propertyArgs xsi:type="tcs:AsPArg" location="328:14-328:38" value="identifierOrKeyword"/>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="334:2-336:4" name="Token">
+ <commentsBefore>-- @end Values</commentsBefore>
+ <commentsBefore>-- @begin Tokens</commentsBefore>
+ <templateSequence location="335:5-335:33">
+ <elements xsi:type="tcs:LiteralRef" location="335:5-335:12" referredLiteral="/66"/>
+ <elements xsi:type="tcs:Property" location="335:13-335:17" name="name"/>
+ <elements xsi:type="tcs:LiteralRef" location="335:18-335:21" referredLiteral="/0/@symbols.13"/>
+ <elements xsi:type="tcs:Property" location="335:22-335:29" name="pattern"/>
+ <elements xsi:type="tcs:LiteralRef" location="335:30-335:33" referredLiteral="/0/@symbols.12"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="338:2-340:4" name="OrPattern">
+ <commentsAfter>-- @begin SimplePatterns</commentsAfter>
+ <templateSequence location="339:5-339:36">
+ <elements xsi:type="tcs:Property" location="339:5-339:36" name="simplePatterns">
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="339:20-339:35">
+ <separatorSequence location="339:32-339:35">
+ <elements xsi:type="tcs:LiteralRef" location="339:32-339:35" referredLiteral="/0/@symbols.14"/>
+ </separatorSequence>
+ </propertyArgs>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="343:2-343:34" name="SimplePattern" isAbstract="true">
+ <commentsBefore>-- @begin SimplePatterns</commentsBefore>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="345:2-348:4" name="RulePattern">
+ <commentsAfter>-- @begin Rules</commentsAfter>
+ <templateSequence location="347:5-347:9">
+ <elements xsi:type="tcs:Property" location="347:5-347:9" name="rule"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="351:2-351:25" name="Rule" isAbstract="true">
+ <commentsBefore>-- @begin Rules</commentsBefore>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="353:2-364:4" name="WordRule">
+ <templateSequence location="354:5-363:7">
+ <elements xsi:type="tcs:LiteralRef" location="354:5-354:11" referredLiteral="/67"/>
+ <elements xsi:type="tcs:LiteralRef" location="354:12-354:15" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:LiteralRef" location="355:5-355:12" referredLiteral="/68"/>
+ <elements xsi:type="tcs:LiteralRef" location="355:13-355:16" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="355:17-355:22" name="start"/>
+ <elements xsi:type="tcs:LiteralRef" location="355:23-355:26" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:LiteralRef" location="356:5-356:11" referredLiteral="/69"/>
+ <elements xsi:type="tcs:LiteralRef" location="356:12-356:15" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="356:16-356:20" name="part"/>
+ <elements xsi:type="tcs:ConditionalElement" location="357:5-359:6">
+ <condition xsi:type="tcs:AndExp" location="357:6-357:20">
+ <expressions xsi:type="tcs:IsDefinedExp" location="357:6-357:20" propertyName="end"/>
+ </condition>
+ <thenSequence location="358:6-358:23">
+ <elements xsi:type="tcs:LiteralRef" location="358:6-358:9" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:LiteralRef" location="358:10-358:15" referredLiteral="/70"/>
+ <elements xsi:type="tcs:LiteralRef" location="358:16-358:19" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="358:20-358:23" name="end"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:ConditionalElement" location="360:5-362:6">
+ <condition xsi:type="tcs:AndExp" location="360:6-360:22">
+ <expressions xsi:type="tcs:IsDefinedExp" location="360:6-360:22" propertyName="words"/>
+ </condition>
+ <thenSequence location="361:6-361:52">
+ <elements xsi:type="tcs:LiteralRef" location="361:6-361:9" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:LiteralRef" location="361:10-361:17" referredLiteral="/71"/>
+ <elements xsi:type="tcs:LiteralRef" location="361:18-361:21" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:LiteralRef" location="361:22-361:25" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="361:26-361:48" name="words">
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="361:32-361:47">
+ <separatorSequence location="361:44-361:47">
+ <elements xsi:type="tcs:LiteralRef" location="361:44-361:47" referredLiteral="/0/@symbols.5"/>
+ </separatorSequence>
+ </propertyArgs>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="361:49-361:52" referredLiteral="/0/@symbols.7"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="363:4-363:7" referredLiteral="/0/@symbols.7"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="366:2-368:4" name="Word">
+ <templateSequence location="367:5-367:38">
+ <elements xsi:type="tcs:Property" location="367:5-367:28" name="name">
+ <propertyArgs xsi:type="tcs:AsPArg" location="367:10-367:27" value="stringSymbol"/>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="367:29-367:32" referredLiteral="/0/@symbols.13"/>
+ <elements xsi:type="tcs:Property" location="367:33-367:38" name="token"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="370:2-374:4" name="EndOfLineRule">
+ <templateSequence location="371:5-373:7">
+ <elements xsi:type="tcs:LiteralRef" location="371:5-371:16" referredLiteral="/72"/>
+ <elements xsi:type="tcs:LiteralRef" location="371:17-371:20" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:LiteralRef" location="372:5-372:12" referredLiteral="/68"/>
+ <elements xsi:type="tcs:LiteralRef" location="372:13-372:16" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:ConditionalElement" location="372:17-372:37">
+ <condition xsi:type="tcs:AndExp" location="372:18-372:27">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="372:18-372:27" propertyName="dropStart"/>
+ </condition>
+ <thenSequence location="372:30-372:36">
+ <elements xsi:type="tcs:LiteralRef" location="372:30-372:36" referredLiteral="/73"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:Property" location="372:38-372:43" name="start"/>
+ <elements xsi:type="tcs:LiteralRef" location="373:4-373:7" referredLiteral="/0/@symbols.7"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="376:2-387:4" name="MultiLineRule">
+ <templateSequence location="377:5-386:7">
+ <elements xsi:type="tcs:LiteralRef" location="377:5-377:16" referredLiteral="/74"/>
+ <elements xsi:type="tcs:LiteralRef" location="377:17-377:20" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:LiteralRef" location="378:5-378:12" referredLiteral="/68"/>
+ <elements xsi:type="tcs:LiteralRef" location="378:13-378:16" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:ConditionalElement" location="378:17-378:37">
+ <condition xsi:type="tcs:AndExp" location="378:18-378:27">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="378:18-378:27" propertyName="dropStart"/>
+ </condition>
+ <thenSequence location="378:30-378:36">
+ <elements xsi:type="tcs:LiteralRef" location="378:30-378:36" referredLiteral="/73"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:Property" location="378:38-378:43" name="start"/>
+ <elements xsi:type="tcs:LiteralRef" location="378:44-378:47" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:LiteralRef" location="379:5-379:10" referredLiteral="/70"/>
+ <elements xsi:type="tcs:LiteralRef" location="379:11-379:14" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:ConditionalElement" location="379:15-379:33">
+ <condition xsi:type="tcs:AndExp" location="379:16-379:23">
+ <expressions xsi:type="tcs:BooleanPropertyExp" location="379:16-379:23" propertyName="dropEnd"/>
+ </condition>
+ <thenSequence location="379:26-379:32">
+ <elements xsi:type="tcs:LiteralRef" location="379:26-379:32" referredLiteral="/73"/>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:Property" location="379:34-379:37" name="end"/>
+ <elements xsi:type="tcs:ConditionalElement" location="380:5-385:6">
+ <condition xsi:type="tcs:AndExp" location="380:6-380:20">
+ <expressions xsi:type="tcs:IsDefinedExp" location="380:6-380:20" propertyName="esc"/>
+ </condition>
+ <thenSequence location="381:6-384:7">
+ <elements xsi:type="tcs:LiteralRef" location="381:6-381:9" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:LiteralRef" location="381:10-381:15" referredLiteral="/75"/>
+ <elements xsi:type="tcs:LiteralRef" location="381:16-381:19" referredLiteral="/0/@symbols.25"/>
+ <elements xsi:type="tcs:Property" location="381:20-381:23" name="esc"/>
+ <elements xsi:type="tcs:ConditionalElement" location="382:6-384:7">
+ <condition xsi:type="tcs:AndExp" location="382:7-382:29">
+ <expressions xsi:type="tcs:IsDefinedExp" location="382:7-382:29" propertyName="escMappings"/>
+ </condition>
+ <thenSequence location="383:7-383:47">
+ <elements xsi:type="tcs:LiteralRef" location="383:7-383:10" referredLiteral="/0/@symbols.5"/>
+ <elements xsi:type="tcs:LiteralRef" location="383:11-383:14" referredLiteral="/0/@symbols.6"/>
+ <elements xsi:type="tcs:Property" location="383:15-383:43" name="escMappings">
+ <propertyArgs xsi:type="tcs:SeparatorPArg" location="383:27-383:42">
+ <separatorSequence location="383:39-383:42">
+ <elements xsi:type="tcs:LiteralRef" location="383:39-383:42" referredLiteral="/0/@symbols.5"/>
+ </separatorSequence>
+ </propertyArgs>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="383:44-383:47" referredLiteral="/0/@symbols.7"/>
+ </thenSequence>
+ </elements>
+ </thenSequence>
+ </elements>
+ <elements xsi:type="tcs:LiteralRef" location="386:4-386:7" referredLiteral="/0/@symbols.7"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="389:2-389:28" name="Mapping" isAbstract="true"/>
+ <templates xsi:type="tcs:ClassTemplate" location="391:2-393:4" name="SimpleMapping">
+ <templateSequence location="392:5-392:19">
+ <elements xsi:type="tcs:Property" location="392:5-392:8" name="key"/>
+ <elements xsi:type="tcs:LiteralRef" location="392:9-392:13" referredLiteral="/0/@symbols.20"/>
+ <elements xsi:type="tcs:Property" location="392:14-392:19" name="value"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="395:2-397:4" name="WildcardMapping">
+ <templateSequence location="396:5-396:17">
+ <elements xsi:type="tcs:LiteralRef" location="396:5-396:8" referredLiteral="/0/@symbols.19"/>
+ <elements xsi:type="tcs:LiteralRef" location="396:9-396:13" referredLiteral="/0/@symbols.20"/>
+ <elements xsi:type="tcs:LiteralRef" location="396:14-396:17" referredLiteral="/0/@symbols.19"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="399:2-401:4" name="OctalMapping">
+ <templateSequence location="400:5-400:12">
+ <elements xsi:type="tcs:LiteralRef" location="400:5-400:12" referredLiteral="/76"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="403:2-405:4" name="HexadecimalMapping">
+ <commentsAfter>-- @end Rules</commentsAfter>
+ <commentsAfter>--&#x9;template RuleArgument</commentsAfter>
+ <commentsAfter>--&#x9;&#x9;:&#x9;name &quot;=&quot; value</commentsAfter>
+ <commentsAfter>--&#x9;&#x9;;</commentsAfter>
+ <templateSequence location="404:5-404:10">
+ <elements xsi:type="tcs:LiteralRef" location="404:5-404:10" referredLiteral="/77"/>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="412:2-414:4" name="StringPattern">
+ <commentsBefore>-- @end Rules</commentsBefore>
+ <commentsBefore>--&#x9;template RuleArgument</commentsBefore>
+ <commentsBefore>--&#x9;&#x9;:&#x9;name &quot;=&quot; value</commentsBefore>
+ <commentsBefore>--&#x9;&#x9;;</commentsBefore>
+ <templateSequence location="413:5-413:28">
+ <elements xsi:type="tcs:Property" location="413:5-413:28" name="name">
+ <propertyArgs xsi:type="tcs:AsPArg" location="413:10-413:27" value="stringSymbol"/>
+ </elements>
+ </templateSequence>
+ </templates>
+ <templates xsi:type="tcs:ClassTemplate" location="416:2-418:4" name="ClassPattern">
+ <commentsAfter>-- @end SimplePatterns</commentsAfter>
+ <commentsAfter>-- @end Tokens</commentsAfter>
+ <templateSequence location="417:5-417:17">
+ <elements xsi:type="tcs:LiteralRef" location="417:5-417:8" referredLiteral="/0/@symbols.0"/>
+ <elements xsi:type="tcs:Property" location="417:9-417:13" name="name"/>
+ <elements xsi:type="tcs:LiteralRef" location="417:14-417:17" referredLiteral="/0/@symbols.1"/>
+ </templateSequence>
+ </templates>
+ <symbols location="423:3-423:18" name="lsquare" literalRefs="/0/@templates.18/@templateSequence/@elements.0 /0/@templates.76/@templateSequence/@elements.0" value="["/>
+ <symbols location="424:3-424:18" name="rsquare" literalRefs="/0/@templates.18/@templateSequence/@elements.2 /0/@templates.76/@templateSequence/@elements.2" value="]"/>
+ <symbols location="425:3-425:19" name="dlsquare" literalRefs="/0/@templates.21/@templateSequence/@elements.0" value="[["/>
+ <symbols location="426:3-426:19" name="drsquare" literalRefs="/0/@templates.21/@templateSequence/@elements.2" value="]]"/>
+ <symbols location="427:3-427:15" name="excl" value="!"/>
+ <symbols location="428:3-428:15" name="coma" literalRefs="/0/@templates.7/@templateSequence/@elements.12/@thenSequence/@elements.0 /0/@templates.8/@templateSequence/@elements.3/@thenSequence/@elements.0/@blockSequence/@elements.1/@blockSequence/@elements.0/@propertyArgs.0/@separatorSequence/@elements.0 /0/@templates.11/@templateSequence/@elements.6 /0/@templates.11/@templateSequence/@elements.10/@thenSequence/@elements.0 /0/@templates.11/@templateSequence/@elements.11/@thenSequence/@elements.0 /0/@templates.11/@templateSequence/@elements.12/@thenSequence/@elements.0 /0/@templates.11/@templateSequence/@elements.13/@thenSequence/@elements.0 /0/@templates.16/@templateSequence/@elements.1/@thenSequence/@elements.1/@propertyArgs.0/@separatorSequence/@elements.0 /0/@templates.18/@templateSequence/@elements.3/@thenSequence/@elements.1/@propertyArgs.0/@separatorSequence/@elements.0 /0/@templates.42/@templateSequence/@elements.3/@thenSequence/@elements.1/@propertyArgs.0/@separatorSequence/@elements.0 /0/@templates.46/@templateSequence/@elements.2/@elseSequence/@elements.0 /0/@templates.47/@templateSequence/@elements.4 /0/@templates.66/@templateSequence/@elements.5 /0/@templates.66/@templateSequence/@elements.9/@thenSequence/@elements.0 /0/@templates.66/@templateSequence/@elements.10/@thenSequence/@elements.0 /0/@templates.66/@templateSequence/@elements.10/@thenSequence/@elements.4/@propertyArgs.0/@separatorSequence/@elements.0 /0/@templates.69/@templateSequence/@elements.6 /0/@templates.69/@templateSequence/@elements.11/@thenSequence/@elements.0 /0/@templates.69/@templateSequence/@elements.11/@thenSequence/@elements.4/@thenSequence/@elements.0 /0/@templates.69/@templateSequence/@elements.11/@thenSequence/@elements.4/@thenSequence/@elements.2/@propertyArgs.0/@separatorSequence/@elements.0" value=","/>
+ <symbols location="429:3-429:17" name="lparen" literalRefs="/0/@templates.5/@templateSequence/@elements.2/@thenSequence/@elements.0 /0/@templates.10/@templateSequence/@elements.3/@thenSequence/@elements.0 /0/@templates.10/@templateSequence/@elements.7/@thenSequence/@elements.1/@thenSequence/@elements.0 /0/@templates.11/@templateSequence/@elements.2 /0/@templates.12/@templateSequence/@elements.2 /0/@templates.19/@templateSequence/@elements.0 /0/@templates.54/@templateSequence/@elements.1 /0/@templates.55/@templateSequence/@elements.1 /0/@templates.66/@templateSequence/@elements.1 /0/@templates.66/@templateSequence/@elements.10/@thenSequence/@elements.3 /0/@templates.68/@templateSequence/@elements.1 /0/@templates.69/@templateSequence/@elements.1 /0/@templates.69/@templateSequence/@elements.11/@thenSequence/@elements.4/@thenSequence/@elements.1" value="("/>
+ <symbols location="430:3-430:17" name="rparen" literalRefs="/0/@templates.5/@templateSequence/@elements.2/@thenSequence/@elements.4 /0/@templates.10/@templateSequence/@elements.3/@thenSequence/@elements.4 /0/@templates.10/@templateSequence/@elements.7/@thenSequence/@elements.1/@thenSequence/@elements.2 /0/@templates.11/@templateSequence/@elements.14 /0/@templates.12/@templateSequence/@elements.4 /0/@templates.19/@templateSequence/@elements.5 /0/@templates.54/@templateSequence/@elements.3 /0/@templates.55/@templateSequence/@elements.3 /0/@templates.66/@templateSequence/@elements.10/@thenSequence/@elements.5 /0/@templates.66/@templateSequence/@elements.11 /0/@templates.68/@templateSequence/@elements.6 /0/@templates.69/@templateSequence/@elements.11/@thenSequence/@elements.4/@thenSequence/@elements.3 /0/@templates.69/@templateSequence/@elements.12" value=")"/>
+ <symbols location="431:3-431:17" name="lcurly" literalRefs="/0/@templates.5/@templateSequence/@elements.3 /0/@templates.5/@templateSequence/@elements.4/@blockSequence/@elements.1/@thenSequence/@elements.1 /0/@templates.5/@templateSequence/@elements.4/@blockSequence/@elements.2/@thenSequence/@elements.1 /0/@templates.16/@templateSequence/@elements.1/@thenSequence/@elements.0 /0/@templates.18/@templateSequence/@elements.3/@thenSequence/@elements.0 /0/@templates.45/@templateSequence/@elements.2 /0/@templates.46/@templateSequence/@elements.3" value="{"/>
+ <symbols location="432:3-432:17" name="rcurly" literalRefs="/0/@templates.5/@templateSequence/@elements.4/@blockSequence/@elements.1/@thenSequence/@elements.3 /0/@templates.5/@templateSequence/@elements.4/@blockSequence/@elements.2/@thenSequence/@elements.3 /0/@templates.5/@templateSequence/@elements.5 /0/@templates.16/@templateSequence/@elements.1/@thenSequence/@elements.2 /0/@templates.18/@templateSequence/@elements.3/@thenSequence/@elements.2 /0/@templates.45/@templateSequence/@elements.4 /0/@templates.46/@templateSequence/@elements.5" value="}"/>
+ <symbols location="433:3-433:19" name="dlcurly" literalRefs="/0/@templates.20/@templateSequence/@elements.0" value="{{"/>
+ <symbols location="434:3-434:19" name="drcurly" literalRefs="/0/@templates.20/@templateSequence/@elements.4" value="}}"/>
+ <symbols location="435:3-435:15" name="semi" literalRefs="/0/@templates.5/@templateSequence/@elements.4/@blockSequence/@elements.5/@thenSequence/@elements.3 /0/@templates.7/@templateSequence/@elements.13 /0/@templates.8/@templateSequence/@elements.3/@thenSequence/@elements.0/@blockSequence/@elements.2 /0/@templates.8/@templateSequence/@elements.3/@elseSequence/@elements.0 /0/@templates.10/@templateSequence/@elements.12/@thenSequence/@elements.0/@blockSequence/@elements.2 /0/@templates.10/@templateSequence/@elements.12/@elseSequence/@elements.0 /0/@templates.11/@templateSequence/@elements.16/@thenSequence/@elements.0/@blockSequence/@elements.2 /0/@templates.11/@templateSequence/@elements.16/@elseSequence/@elements.0 /0/@templates.12/@templateSequence/@elements.5/@blockSequence/@elements.2 /0/@templates.42/@templateSequence/@elements.4 /0/@templates.44/@templateSequence/@elements.3 /0/@templates.47/@templateSequence/@elements.6 /0/@templates.61/@templateSequence/@elements.4" value=";"/>
+ <symbols location="436:3-436:16" name="colon" literalRefs="/0/@templates.7/@templateSequence/@elements.8 /0/@templates.8/@templateSequence/@elements.3/@thenSequence/@elements.0/@blockSequence/@elements.0 /0/@templates.10/@templateSequence/@elements.11/@thenSequence/@elements.1/@blockSequence/@elements.0 /0/@templates.10/@templateSequence/@elements.12/@thenSequence/@elements.0/@blockSequence/@elements.0 /0/@templates.11/@templateSequence/@elements.16/@thenSequence/@elements.0/@blockSequence/@elements.0 /0/@templates.12/@templateSequence/@elements.5/@blockSequence/@elements.0 /0/@templates.19/@templateSequence/@elements.4/@thenSequence/@elements.0 /0/@templates.42/@templateSequence/@elements.3/@thenSequence/@elements.0 /0/@templates.61/@templateSequence/@elements.2 /0/@templates.67/@templateSequence/@elements.1" value=":"/>
+ <symbols location="437:3-437:15" name="pipe" literalRefs="/0/@templates.21/@templateSequence/@elements.1/@propertyArgs.0/@separatorSequence/@elements.0 /0/@templates.62/@templateSequence/@elements.0/@propertyArgs.0/@separatorSequence/@elements.0" value="|"/>
+ <symbols location="438:3-438:16" name="sharp" literalRefs="/0/@templates.10/@templateSequence/@elements.2/@thenSequence/@elements.0 /0/@templates.25/@templateSequence/@elements.2/@thenSequence/@elements.0 /0/@templates.60/@templateSequence/@elements.0" value="#"/>
+ <symbols location="439:3-439:16" name="qmark" literalRefs="/0/@templates.19/@templateSequence/@elements.2" value="?"/>
+ <symbols location="440:3-440:17" name="dollar" literalRefs="/0/@templates.22/@templateSequence/@elements.0" value="$"/>
+ <symbols location="441:3-441:17" name="arobas" value="@">
+ <commentsAfter>-- operator symbols</commentsAfter>
+ </symbols>
+ <symbols location="444:3-444:16" name="point" literalRefs="/0/@templates.25/@templateSequence/@elements.2/@elseSequence/@elements.0/@propertyArgs.1/@separatorSequence/@elements.0 /0/@templates.26/@templateSequence/@elements.2/@propertyArgs.1/@separatorSequence/@elements.0 /0/@templates.72/@templateSequence/@elements.0 /0/@templates.72/@templateSequence/@elements.2" value=".">
+ <commentsBefore>-- operator symbols</commentsBefore>
+ </symbols>
+ <symbols location="445:3-445:18" name="rarrow" literalRefs="/0/@templates.71/@templateSequence/@elements.1 /0/@templates.72/@templateSequence/@elements.1" value="->"/>
+ <symbols location="446:3-446:16" name="minus" literalRefs="/0/@templates.59/@templateSequence/@elements.0" value="-"/>
+ <symbols location="447:3-447:15" name="star" literalRefs="/0/@templates.21/@templateSequence/@elements.3/@thenSequence/@elements.0" value="*"/>
+ <symbols location="448:3-448:16" name="slash" value="/"/>
+ <symbols location="449:3-449:15" name="plus" value="+"/>
+ <symbols location="450:3-450:13" name="eq" literalRefs="/0/@templates.5/@templateSequence/@elements.2/@thenSequence/@elements.2 /0/@templates.5/@templateSequence/@elements.4/@blockSequence/@elements.5/@thenSequence/@elements.1 /0/@templates.7/@templateSequence/@elements.10 /0/@templates.7/@templateSequence/@elements.12/@thenSequence/@elements.2 /0/@templates.9/@templateSequence/@elements.1 /0/@templates.10/@templateSequence/@elements.3/@thenSequence/@elements.2 /0/@templates.11/@templateSequence/@elements.4 /0/@templates.11/@templateSequence/@elements.8 /0/@templates.11/@templateSequence/@elements.10/@thenSequence/@elements.2 /0/@templates.11/@templateSequence/@elements.11/@thenSequence/@elements.2 /0/@templates.11/@templateSequence/@elements.12/@thenSequence/@elements.2 /0/@templates.11/@templateSequence/@elements.13/@thenSequence/@elements.2 /0/@templates.24/@templateSequence/@elements.1 /0/@templates.25/@templateSequence/@elements.1 /0/@templates.26/@templateSequence/@elements.1 /0/@templates.27/@templateSequence/@elements.1 /0/@templates.28/@templateSequence/@elements.1 /0/@templates.29/@templateSequence/@elements.1 /0/@templates.30/@templateSequence/@elements.1 /0/@templates.33/@templateSequence/@elements.1 /0/@templates.34/@templateSequence/@elements.1 /0/@templates.35/@templateSequence/@elements.1 /0/@templates.37/@templateSequence/@elements.1 /0/@templates.38/@templateSequence/@elements.1 /0/@templates.39/@templateSequence/@elements.1 /0/@templates.40/@templateSequence/@elements.1 /0/@templates.41/@templateSequence/@elements.1 /0/@templates.42/@templateSequence/@elements.1 /0/@templates.44/@templateSequence/@elements.1 /0/@templates.47/@templateSequence/@elements.2 /0/@templates.52/@templateSequence/@elements.1 /0/@templates.66/@templateSequence/@elements.3 /0/@templates.66/@templateSequence/@elements.7 /0/@templates.66/@templateSequence/@elements.9/@thenSequence/@elements.2 /0/@templates.66/@templateSequence/@elements.10/@thenSequence/@elements.2 /0/@templates.68/@templateSequence/@elements.3 /0/@templates.69/@templateSequence/@elements.3 /0/@templates.69/@templateSequence/@elements.8 /0/@templates.69/@templateSequence/@elements.11/@thenSequence/@elements.2" value="="/>
+ <symbols location="451:3-451:13" name="gt" literalRefs="/0/@templates.17/@templateSequence/@elements.2" value=">"/>
+ <symbols location="452:3-452:13" name="lt" literalRefs="/0/@templates.17/@templateSequence/@elements.0" value="&lt;"/>
+ <symbols location="453:3-453:14" name="ge" value=">="/>
+ <symbols location="454:3-454:14" name="le" value="&lt;="/>
+ <symbols location="455:3-455:14" name="ne" value="&lt;>"/>
+ <symbols location="456:3-456:18" name="larrow" literalRefs="/0/@templates.20/@templateSequence/@elements.2" value="&lt;-"/>
+ <tokens location="459:2-459:42" name="COMMENT">
+ <pattern location="459:18-459:41">
+ <simplePatterns xsi:type="tcs:RulePattern" location="459:18-459:41">
+ <rule xsi:type="tcs:EndOfLineRule" location="459:18-459:41">
+ <start location="459:36-459:40" name="--"/>
+ </rule>
+ </simplePatterns>
+ </pattern>
+ </tokens>
+ </tcs:ConcreteSyntax>
+ <tcs:Keyword location="28:4-28:12" literalRefs="/0/@templates.5/@templateSequence/@elements.0" value="syntax"/>
+ <tcs:Keyword location="28:39-28:42" literalRefs="/0/@templates.5/@templateSequence/@elements.2/@thenSequence/@elements.1" value="k"/>
+ <tcs:Keyword location="30:27-30:37" literalRefs="/0/@templates.5/@templateSequence/@elements.4/@blockSequence/@elements.1/@thenSequence/@elements.0" value="keywords"/>
+ <tcs:Keyword location="31:26-31:35" literalRefs="/0/@templates.5/@templateSequence/@elements.4/@blockSequence/@elements.2/@thenSequence/@elements.0" value="symbols"/>
+ <tcs:Keyword location="34:24-34:31" literalRefs="/0/@templates.5/@templateSequence/@elements.4/@blockSequence/@elements.5/@thenSequence/@elements.0" value="lexer"/>
+ <tcs:Keyword location="42:4-42:23" literalRefs="/0/@templates.7/@templateSequence/@elements.0" value="primitiveTemplate"/>
+ <tcs:Keyword location="42:29-42:34" literalRefs="/0/@templates.7/@templateSequence/@elements.2" value="for"/>
+ <tcs:Keyword location="43:17-43:26" literalRefs="/0/@templates.7/@templateSequence/@elements.4/@thenSequence/@elements.0" value="default"/>
+ <tcs:Keyword location="44:4-44:11" literalRefs="/0/@templates.7/@templateSequence/@elements.5" value="using"/>
+ <tcs:Keyword location="45:17-45:28" literalRefs="/0/@templates.7/@templateSequence/@elements.7/@thenSequence/@elements.0" value="orKeyword"/>
+ <tcs:Keyword location="47:4-47:11" literalRefs="/0/@templates.7/@templateSequence/@elements.9" value="value"/>
+ <tcs:Keyword location="49:9-49:21" literalRefs="/0/@templates.7/@templateSequence/@elements.12/@thenSequence/@elements.1" value="serializer"/>
+ <tcs:Keyword location="55:4-55:25" literalRefs="/0/@templates.8/@templateSequence/@elements.0" value="enumerationTemplate"/>
+ <tcs:Keyword location="55:44-55:50" literalRefs="/0/@templates.8/@templateSequence/@elements.2/@thenSequence/@elements.0" value="auto"/>
+ <tcs:Keyword location="70:4-70:14" literalRefs="/0/@templates.10/@templateSequence/@elements.0" value="template"/>
+ <tcs:Keyword location="72:34-72:48" literalRefs="/0/@templates.10/@templateSequence/@elements.3/@thenSequence/@elements.1 /0/@templates.11/@templateSequence/@elements.12/@thenSequence/@elements.1" value="disambiguate"/>
+ <tcs:Keyword location="73:14-73:21" literalRefs="/0/@templates.10/@templateSequence/@elements.4/@thenSequence/@elements.0" value="multi"/>
+ <tcs:Keyword location="74:13-74:19" literalRefs="/0/@templates.10/@templateSequence/@elements.5/@thenSequence/@elements.0" value="main"/>
+ <tcs:Keyword location="75:27-75:33" literalRefs="/0/@templates.10/@templateSequence/@elements.6/@thenSequence/@elements.0/@thenSequence/@elements.0" value="deep"/>
+ <tcs:Keyword location="75:35-75:45" literalRefs="/0/@templates.10/@templateSequence/@elements.6/@thenSequence/@elements.1" value="abstract"/>
+ <tcs:Keyword location="76:19-76:31" literalRefs="/0/@templates.10/@templateSequence/@elements.7/@thenSequence/@elements.0" value="operatored"/>
+ <tcs:Keyword location="77:16-77:25" literalRefs="/0/@templates.10/@templateSequence/@elements.8/@thenSequence/@elements.0 /0/@templates.11/@templateSequence/@elements.15/@thenSequence/@elements.0" value="context"/>
+ <tcs:Keyword location="78:21-78:35" literalRefs="/0/@templates.10/@templateSequence/@elements.9/@thenSequence/@elements.0" value="addToContext"/>
+ <tcs:Keyword location="79:19-79:31" literalRefs="/0/@templates.10/@templateSequence/@elements.10/@thenSequence/@elements.0" value="nonPrimary"/>
+ <tcs:Keyword location="80:32-80:40" literalRefs="/0/@templates.10/@templateSequence/@elements.11/@thenSequence/@elements.0" value="prefix"/>
+ <tcs:Keyword location="85:4-85:22" literalRefs="/0/@templates.11/@templateSequence/@elements.0" value="operatorTemplate"/>
+ <tcs:Keyword location="86:4-86:15" literalRefs="/0/@templates.11/@templateSequence/@elements.3 /0/@templates.45/@templateSequence/@elements.0" value="operators"/>
+ <tcs:Keyword location="87:8-87:16" literalRefs="/0/@templates.11/@templateSequence/@elements.7" value="source"/>
+ <tcs:Keyword location="88:32-88:43" literalRefs="/0/@templates.11/@templateSequence/@elements.10/@thenSequence/@elements.1" value="storeOpTo"/>
+ <tcs:Keyword location="89:35-89:49" literalRefs="/0/@templates.11/@templateSequence/@elements.11/@thenSequence/@elements.1" value="storeRightTo"/>
+ <tcs:Keyword location="91:37-91:53" literalRefs="/0/@templates.11/@templateSequence/@elements.13/@thenSequence/@elements.1" value="disambiguateV3"/>
+ <tcs:Keyword location="98:4-98:14" literalRefs="/0/@templates.12/@templateSequence/@elements.0" value="function"/>
+ <tcs:Keyword location="156:4-156:14" literalRefs="/0/@templates.24/@templateSequence/@elements.0" value="refersTo"/>
+ <tcs:Keyword location="160:4-160:12" literalRefs="/0/@templates.25/@templateSequence/@elements.0" value="lookIn"/>
+ <tcs:Keyword location="160:46-160:51" literalRefs="/0/@templates.25/@templateSequence/@elements.2/@thenSequence/@elements.1" value="all"/>
+ <tcs:Keyword location="164:4-164:14" literalRefs="/0/@templates.26/@templateSequence/@elements.0" value="createIn"/>
+ <tcs:Keyword location="168:4-168:8" literalRefs="/0/@templates.27/@templateSequence/@elements.0" value="as"/>
+ <tcs:Keyword location="172:4-172:17" literalRefs="/0/@templates.28/@templateSequence/@elements.0" value="refersToKey"/>
+ <tcs:Keyword location="172:31-172:37" literalRefs="/0/@templates.28/@templateSequence/@elements.2/@thenSequence/@elements.0 /0/@templates.39/@templateSequence/@elements.2/@thenSequence/@elements.0 /0/@templates.41/@templateSequence/@elements.2/@thenSequence/@elements.0" value="true"/>
+ <tcs:Keyword location="172:40-172:47" literalRefs="/0/@templates.28/@templateSequence/@elements.2/@elseSequence/@elements.0 /0/@templates.39/@templateSequence/@elements.2/@elseSequence/@elements.0 /0/@templates.41/@templateSequence/@elements.2/@elseSequence/@elements.0" value="false"/>
+ <tcs:Keyword location="176:4-176:15" literalRefs="/0/@templates.29/@templateSequence/@elements.0" value="separator"/>
+ <tcs:Keyword location="180:4-180:16" literalRefs="/0/@templates.30/@templateSequence/@elements.0" value="autoCreate"/>
+ <tcs:Keyword location="184:15-184:23" literalRefs="/0/@templates.31/@mappings.0/@element" value="always"/>
+ <tcs:Keyword location="185:16-185:27" literalRefs="/0/@templates.31/@mappings.1/@element" value="ifmissing"/>
+ <tcs:Keyword location="186:13-186:20" literalRefs="/0/@templates.31/@mappings.2/@element" value="never"/>
+ <tcs:Keyword location="190:4-190:19" literalRefs="/0/@templates.32/@templateSequence/@elements.0" value="importContext"/>
+ <tcs:Keyword location="194:4-194:17" literalRefs="/0/@templates.33/@templateSequence/@elements.0" value="forcedLower"/>
+ <tcs:Keyword location="198:4-198:14" literalRefs="/0/@templates.34/@templateSequence/@elements.0" value="createAs"/>
+ <tcs:Keyword location="202:4-202:10" literalRefs="/0/@templates.35/@templateSequence/@elements.0" value="mode"/>
+ <tcs:Keyword location="211:4-211:10" literalRefs="/0/@templates.37/@templateSequence/@elements.0" value="nbNL"/>
+ <tcs:Keyword location="215:4-215:16" literalRefs="/0/@templates.38/@templateSequence/@elements.0" value="indentIncr"/>
+ <tcs:Keyword location="219:4-219:13" literalRefs="/0/@templates.39/@templateSequence/@elements.0" value="startNL"/>
+ <tcs:Keyword location="223:4-223:15" literalRefs="/0/@templates.40/@templateSequence/@elements.0" value="startNbNL"/>
+ <tcs:Keyword location="227:4-227:11" literalRefs="/0/@templates.41/@templateSequence/@elements.0" value="endNL"/>
+ <tcs:Keyword location="240:17-240:28" literalRefs="/0/@templates.43/@mappings.0/@element" value="leftSpace"/>
+ <tcs:Keyword location="241:15-241:25" literalRefs="/0/@templates.43/@mappings.1/@element" value="leftNone"/>
+ <tcs:Keyword location="242:17-242:29" literalRefs="/0/@templates.43/@mappings.2/@element" value="rightSpace"/>
+ <tcs:Keyword location="243:16-243:27" literalRefs="/0/@templates.43/@mappings.3/@element" value="rightNone"/>
+ <tcs:Keyword location="259:4-259:14" literalRefs="/0/@templates.46/@templateSequence/@elements.0" value="priority"/>
+ <tcs:Keyword location="271:17-271:26" literalRefs="/0/@templates.47/@templateSequence/@elements.0/@thenSequence/@elements.0" value="postfix"/>
+ <tcs:Keyword location="281:13-281:19" literalRefs="/0/@templates.48/@mappings.0/@element" value="left"/>
+ <tcs:Keyword location="282:13-282:20" literalRefs="/0/@templates.48/@mappings.1/@element" value="right"/>
+ <tcs:Keyword location="290:28-290:33" literalRefs="/0/@templates.50/@templateSequence/@elements.0/@propertyArgs.0/@separatorSequence/@elements.0" value="and"/>
+ <tcs:Keyword location="304:4-304:15" literalRefs="/0/@templates.54/@templateSequence/@elements.0" value="isDefined"/>
+ <tcs:Keyword location="308:4-308:9" literalRefs="/0/@templates.55/@templateSequence/@elements.0" value="one"/>
+ <tcs:Keyword location="335:4-335:11" literalRefs="/0/@templates.61/@templateSequence/@elements.0" value="token"/>
+ <tcs:Keyword location="354:4-354:10" literalRefs="/0/@templates.66/@templateSequence/@elements.0" value="word"/>
+ <tcs:Keyword location="355:4-355:11" literalRefs="/0/@templates.66/@templateSequence/@elements.2 /0/@templates.68/@templateSequence/@elements.2 /0/@templates.69/@templateSequence/@elements.2" value="start"/>
+ <tcs:Keyword location="356:4-356:10" literalRefs="/0/@templates.66/@templateSequence/@elements.6" value="part"/>
+ <tcs:Keyword location="358:9-358:14" literalRefs="/0/@templates.66/@templateSequence/@elements.9/@thenSequence/@elements.1 /0/@templates.69/@templateSequence/@elements.7" value="end"/>
+ <tcs:Keyword location="361:9-361:16" literalRefs="/0/@templates.66/@templateSequence/@elements.10/@thenSequence/@elements.1" value="words"/>
+ <tcs:Keyword location="371:4-371:15" literalRefs="/0/@templates.68/@templateSequence/@elements.0" value="endOfLine"/>
+ <tcs:Keyword location="372:29-372:35" literalRefs="/0/@templates.68/@templateSequence/@elements.4/@thenSequence/@elements.0 /0/@templates.69/@templateSequence/@elements.4/@thenSequence/@elements.0 /0/@templates.69/@templateSequence/@elements.9/@thenSequence/@elements.0" value="drop"/>
+ <tcs:Keyword location="377:4-377:15" literalRefs="/0/@templates.69/@templateSequence/@elements.0" value="multiLine"/>
+ <tcs:Keyword location="381:9-381:14" literalRefs="/0/@templates.69/@templateSequence/@elements.11/@thenSequence/@elements.1" value="esc"/>
+ <tcs:Keyword location="400:4-400:11" literalRefs="/0/@templates.73/@templateSequence/@elements.0" value="octal"/>
+ <tcs:Keyword location="404:4-404:9" literalRefs="/0/@templates.74/@templateSequence/@elements.0" value="hex"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/WFR/TCS2Problem.asm b/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/WFR/TCS2Problem.asm
new file mode 100644
index 0000000..f1b7a54
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/TCS/WFR/TCS2Problem.asm
@@ -0,0 +1,3155 @@
+<?xml version = '1.0' encoding = 'ISO-8859-1' ?>
+<asm name="0">
+ <cp>
+ <constant value="TCS2Problem"/>
+ <constant value="links"/>
+ <constant value="NTransientLinkSet;"/>
+ <constant value="col"/>
+ <constant value="J"/>
+ <constant value="main"/>
+ <constant value="A"/>
+ <constant value="OclParametrizedType"/>
+ <constant value="#native"/>
+ <constant value="Collection"/>
+ <constant value="J.setName(S):V"/>
+ <constant value="OclSimpleType"/>
+ <constant value="OclAny"/>
+ <constant value="J.setElementType(J):V"/>
+ <constant value="Template"/>
+ <constant value="TCS"/>
+ <constant value="classes"/>
+ <constant value="__initclasses"/>
+ <constant value="J.registerHelperAttribute(SS):V"/>
+ <constant value="FunctionTemplate"/>
+ <constant value="PrimitiveTemplate"/>
+ <constant value="class"/>
+ <constant value="__initclass"/>
+ <constant value="Class"/>
+ <constant value="KM3"/>
+ <constant value="template"/>
+ <constant value="__inittemplate"/>
+ <constant value="DataType"/>
+ <constant value="Enumeration"/>
+ <constant value="LocatedElement"/>
+ <constant value="Property"/>
+ <constant value="hasClass"/>
+ <constant value="__inithasClass"/>
+ <constant value="feature"/>
+ <constant value="__initfeature"/>
+ <constant value="RefersToPArg"/>
+ <constant value="AtomExp"/>
+ <constant value="TransientLinkSet"/>
+ <constant value="A.__matcher__():V"/>
+ <constant value="A.__exec__():V"/>
+ <constant value="9:16-9:28"/>
+ <constant value="12:16-12:36"/>
+ <constant value="15:16-15:37"/>
+ <constant value="20:16-20:28"/>
+ <constant value="24:16-24:25"/>
+ <constant value="27:16-27:28"/>
+ <constant value="30:16-30:31"/>
+ <constant value="86:16-86:34"/>
+ <constant value="94:16-94:28"/>
+ <constant value="105:16-105:28"/>
+ <constant value="154:16-154:32"/>
+ <constant value="186:16-186:27"/>
+ <constant value="198:16-198:27"/>
+ <constant value="self"/>
+ <constant value="__resolve__"/>
+ <constant value="1"/>
+ <constant value="J.oclIsKindOf(J):B"/>
+ <constant value="18"/>
+ <constant value="NTransientLinkSet;.getLinkBySourceElement(S):QNTransientLink;"/>
+ <constant value="J.oclIsUndefined():J"/>
+ <constant value="15"/>
+ <constant value="NTransientLink;.getTargetFromSource(J):J"/>
+ <constant value="17"/>
+ <constant value="30"/>
+ <constant value="Sequence"/>
+ <constant value="2"/>
+ <constant value="A.__resolve__(J):J"/>
+ <constant value="QJ.including(J):QJ"/>
+ <constant value="QJ.flatten():QJ"/>
+ <constant value="e"/>
+ <constant value="value"/>
+ <constant value="resolveTemp"/>
+ <constant value="S"/>
+ <constant value="NTransientLink;.getNamedTargetFromSource(JS):J"/>
+ <constant value="name"/>
+ <constant value="__matcher__"/>
+ <constant value="A.__matchAtLeastOneClassByClassTemplate():V"/>
+ <constant value="A.__matchAtMostOneClassByClassTemplate():V"/>
+ <constant value="A.__matchTemplateNamesUnique():V"/>
+ <constant value="A.__matchAtLeastOneStructuralFeatureByProperty():V"/>
+ <constant value="A.__matchAtLeastOneTemplateByPropertyType():V"/>
+ <constant value="A.__matchAtLeastOneStructuralFeatureByRefersToPArg():V"/>
+ <constant value="A.__matchAtLeastOneStructuralFeatureByAtomExp():V"/>
+ <constant value="A.__matchAtLeastOneClassByFunctionTemplate():V"/>
+ <constant value="A.__matchAtMostOneClassByFunctionTemplate():V"/>
+ <constant value="A.__matchNonContainerReferenceShouldBeReferredTo():V"/>
+ <constant value="A.__matchPrimitiveTypesCannotBeReferredTo():V"/>
+ <constant value="__exec__"/>
+ <constant value="AtLeastOneClassByClassTemplate"/>
+ <constant value="NTransientLinkSet;.getLinksByRule(S):QNTransientLink;"/>
+ <constant value="A.__applyAtLeastOneClassByClassTemplate(NTransientLink;):V"/>
+ <constant value="AtMostOneClassByClassTemplate"/>
+ <constant value="A.__applyAtMostOneClassByClassTemplate(NTransientLink;):V"/>
+ <constant value="TemplateNamesUnique"/>
+ <constant value="A.__applyTemplateNamesUnique(NTransientLink;):V"/>
+ <constant value="AtLeastOneStructuralFeatureByProperty"/>
+ <constant value="A.__applyAtLeastOneStructuralFeatureByProperty(NTransientLink;):V"/>
+ <constant value="AtLeastOneTemplateByPropertyType"/>
+ <constant value="A.__applyAtLeastOneTemplateByPropertyType(NTransientLink;):V"/>
+ <constant value="AtLeastOneStructuralFeatureByRefersToPArg"/>
+ <constant value="A.__applyAtLeastOneStructuralFeatureByRefersToPArg(NTransientLink;):V"/>
+ <constant value="AtLeastOneStructuralFeatureByAtomExp"/>
+ <constant value="A.__applyAtLeastOneStructuralFeatureByAtomExp(NTransientLink;):V"/>
+ <constant value="AtLeastOneClassByFunctionTemplate"/>
+ <constant value="A.__applyAtLeastOneClassByFunctionTemplate(NTransientLink;):V"/>
+ <constant value="AtMostOneClassByFunctionTemplate"/>
+ <constant value="A.__applyAtMostOneClassByFunctionTemplate(NTransientLink;):V"/>
+ <constant value="NonContainerReferenceShouldBeReferredTo"/>
+ <constant value="A.__applyNonContainerReferenceShouldBeReferredTo(NTransientLink;):V"/>
+ <constant value="PrimitiveTypesCannotBeReferredTo"/>
+ <constant value="A.__applyPrimitiveTypesCannotBeReferredTo(NTransientLink;):V"/>
+ <constant value="MTCS!Template;"/>
+ <constant value="Classifier"/>
+ <constant value="MM"/>
+ <constant value="J.allInstancesFrom(J):J"/>
+ <constant value="0"/>
+ <constant value="J.=(J):J"/>
+ <constant value="B.not():B"/>
+ <constant value="19"/>
+ <constant value="CJ.including(J):CJ"/>
+ <constant value="J.asSequence():J"/>
+ <constant value="10:2-10:16"/>
+ <constant value="10:34-10:38"/>
+ <constant value="10:2-10:39"/>
+ <constant value="10:52-10:53"/>
+ <constant value="10:52-10:58"/>
+ <constant value="10:61-10:65"/>
+ <constant value="10:61-10:70"/>
+ <constant value="10:52-10:70"/>
+ <constant value="10:2-10:71"/>
+ <constant value="10:2-10:85"/>
+ <constant value="MTCS!FunctionTemplate;"/>
+ <constant value="className"/>
+ <constant value="13:2-13:16"/>
+ <constant value="13:34-13:38"/>
+ <constant value="13:2-13:39"/>
+ <constant value="13:52-13:53"/>
+ <constant value="13:52-13:58"/>
+ <constant value="13:61-13:65"/>
+ <constant value="13:61-13:75"/>
+ <constant value="13:52-13:75"/>
+ <constant value="13:2-13:76"/>
+ <constant value="13:2-13:90"/>
+ <constant value="MTCS!PrimitiveTemplate;"/>
+ <constant value="typeName"/>
+ <constant value="16:2-16:16"/>
+ <constant value="16:34-16:38"/>
+ <constant value="16:2-16:39"/>
+ <constant value="16:52-16:53"/>
+ <constant value="16:52-16:58"/>
+ <constant value="16:61-16:65"/>
+ <constant value="16:61-16:74"/>
+ <constant value="16:52-16:74"/>
+ <constant value="16:2-16:75"/>
+ <constant value="16:2-16:89"/>
+ <constant value="J.first():J"/>
+ <constant value="21:2-21:6"/>
+ <constant value="21:2-21:14"/>
+ <constant value="21:2-21:23"/>
+ <constant value="MKM3!Class;"/>
+ <constant value="ClassTemplate"/>
+ <constant value="IN"/>
+ <constant value="25:2-25:19"/>
+ <constant value="25:37-25:41"/>
+ <constant value="25:2-25:42"/>
+ <constant value="25:55-25:56"/>
+ <constant value="25:55-25:61"/>
+ <constant value="25:64-25:68"/>
+ <constant value="25:64-25:73"/>
+ <constant value="25:55-25:73"/>
+ <constant value="25:2-25:74"/>
+ <constant value="25:2-25:88"/>
+ <constant value="25:2-25:97"/>
+ <constant value="MKM3!DataType;"/>
+ <constant value="28:2-28:23"/>
+ <constant value="28:41-28:45"/>
+ <constant value="28:2-28:46"/>
+ <constant value="28:59-28:60"/>
+ <constant value="28:59-28:69"/>
+ <constant value="28:72-28:76"/>
+ <constant value="28:72-28:81"/>
+ <constant value="28:59-28:81"/>
+ <constant value="28:2-28:82"/>
+ <constant value="28:2-28:96"/>
+ <constant value="28:2-28:105"/>
+ <constant value="MKM3!Enumeration;"/>
+ <constant value="EnumerationTemplate"/>
+ <constant value="31:2-31:25"/>
+ <constant value="31:43-31:47"/>
+ <constant value="31:2-31:48"/>
+ <constant value="31:61-31:62"/>
+ <constant value="31:61-31:67"/>
+ <constant value="31:70-31:74"/>
+ <constant value="31:70-31:79"/>
+ <constant value="31:61-31:79"/>
+ <constant value="31:2-31:80"/>
+ <constant value="31:2-31:94"/>
+ <constant value="31:2-31:103"/>
+ <constant value="__matchAtLeastOneClassByClassTemplate"/>
+ <constant value="MMOF!Classifier;.allInstancesFrom(S):QJ"/>
+ <constant value="32"/>
+ <constant value="TransientLink"/>
+ <constant value="NTransientLink;.setRule(MATL!Rule;):V"/>
+ <constant value="s"/>
+ <constant value="NTransientLink;.addSourceElement(SJ):V"/>
+ <constant value="t"/>
+ <constant value="Problem"/>
+ <constant value="NTransientLink;.addTargetElement(SJ):V"/>
+ <constant value="NTransientLinkSet;.addLink2(NTransientLink;B):V"/>
+ <constant value="38:4-38:5"/>
+ <constant value="38:4-38:11"/>
+ <constant value="38:4-38:28"/>
+ <constant value="41:7-41:22"/>
+ <constant value="41:3-45:4"/>
+ <constant value="__applyAtLeastOneClassByClassTemplate"/>
+ <constant value="NTransientLink;"/>
+ <constant value="NTransientLink;.getSourceElement(S):J"/>
+ <constant value="NTransientLink;.getTargetElement(S):J"/>
+ <constant value="3"/>
+ <constant value="EnumLiteral"/>
+ <constant value="error"/>
+ <constant value="severity"/>
+ <constant value="[C-1] There is no metamodel Class corresponding to ClassTemplate "/>
+ <constant value="J.+(J):J"/>
+ <constant value="description"/>
+ <constant value="location"/>
+ <constant value="42:16-42:22"/>
+ <constant value="42:4-42:22"/>
+ <constant value="43:19-43:86"/>
+ <constant value="43:89-43:90"/>
+ <constant value="43:89-43:95"/>
+ <constant value="43:19-43:95"/>
+ <constant value="43:4-43:95"/>
+ <constant value="44:16-44:17"/>
+ <constant value="44:16-44:26"/>
+ <constant value="44:4-44:26"/>
+ <constant value="link"/>
+ <constant value="__matchAtMostOneClassByClassTemplate"/>
+ <constant value="J.size():J"/>
+ <constant value="J.&gt;(J):J"/>
+ <constant value="34"/>
+ <constant value="55:4-55:5"/>
+ <constant value="55:4-55:13"/>
+ <constant value="55:4-55:21"/>
+ <constant value="55:24-55:25"/>
+ <constant value="55:4-55:25"/>
+ <constant value="58:7-58:22"/>
+ <constant value="58:3-62:4"/>
+ <constant value="__applyAtMostOneClassByClassTemplate"/>
+ <constant value="[C-2] There are several metamodel Classes corresponding to ClassTemplate "/>
+ <constant value="59:16-59:22"/>
+ <constant value="59:4-59:22"/>
+ <constant value="60:19-60:94"/>
+ <constant value="60:97-60:98"/>
+ <constant value="60:97-60:103"/>
+ <constant value="60:19-60:103"/>
+ <constant value="60:4-60:103"/>
+ <constant value="61:16-61:17"/>
+ <constant value="61:16-61:26"/>
+ <constant value="61:4-61:26"/>
+ <constant value="__matchTemplateNamesUnique"/>
+ <constant value="J.oclIsKindOf(J):J"/>
+ <constant value="J.and(J):J"/>
+ <constant value="36"/>
+ <constant value="41"/>
+ <constant value="mode"/>
+ <constant value="46"/>
+ <constant value="72"/>
+ <constant value="69:4-69:16"/>
+ <constant value="69:34-69:38"/>
+ <constant value="69:4-69:39"/>
+ <constant value="70:5-70:6"/>
+ <constant value="70:5-70:11"/>
+ <constant value="70:14-70:15"/>
+ <constant value="70:14-70:20"/>
+ <constant value="70:5-70:20"/>
+ <constant value="71:8-71:9"/>
+ <constant value="71:22-71:39"/>
+ <constant value="71:8-71:40"/>
+ <constant value="71:45-71:46"/>
+ <constant value="71:59-71:76"/>
+ <constant value="71:45-71:77"/>
+ <constant value="71:8-71:77"/>
+ <constant value="74:6-74:10"/>
+ <constant value="72:6-72:7"/>
+ <constant value="72:6-72:12"/>
+ <constant value="72:15-72:16"/>
+ <constant value="72:15-72:21"/>
+ <constant value="72:6-72:21"/>
+ <constant value="71:5-75:10"/>
+ <constant value="70:5-75:10"/>
+ <constant value="69:4-76:5"/>
+ <constant value="69:4-76:13"/>
+ <constant value="76:16-76:17"/>
+ <constant value="69:4-76:17"/>
+ <constant value="79:7-79:22"/>
+ <constant value="79:3-83:4"/>
+ <constant value="__applyTemplateNamesUnique"/>
+ <constant value="[C-3] There are several Templates with the same name: "/>
+ <constant value="80:16-80:22"/>
+ <constant value="80:4-80:22"/>
+ <constant value="81:19-81:75"/>
+ <constant value="81:78-81:79"/>
+ <constant value="81:78-81:84"/>
+ <constant value="81:19-81:84"/>
+ <constant value="81:4-81:84"/>
+ <constant value="82:16-82:17"/>
+ <constant value="82:16-82:26"/>
+ <constant value="82:4-82:26"/>
+ <constant value="MTCS!LocatedElement;"/>
+ <constant value="J.refImmediateComposite():J"/>
+ <constant value="12"/>
+ <constant value="13"/>
+ <constant value="87:20-87:24"/>
+ <constant value="87:20-87:48"/>
+ <constant value="88:5-88:7"/>
+ <constant value="88:20-88:32"/>
+ <constant value="88:5-88:33"/>
+ <constant value="91:3-91:5"/>
+ <constant value="91:3-91:14"/>
+ <constant value="89:3-89:5"/>
+ <constant value="88:2-92:7"/>
+ <constant value="87:2-92:7"/>
+ <constant value="ic"/>
+ <constant value="MTCS!Property;"/>
+ <constant value="11"/>
+ <constant value="14"/>
+ <constant value="95:5-95:9"/>
+ <constant value="95:5-95:18"/>
+ <constant value="95:5-95:35"/>
+ <constant value="98:6-98:10"/>
+ <constant value="98:6-98:19"/>
+ <constant value="98:6-98:25"/>
+ <constant value="98:6-98:42"/>
+ <constant value="101:4-101:8"/>
+ <constant value="99:4-99:9"/>
+ <constant value="98:3-102:8"/>
+ <constant value="96:3-96:8"/>
+ <constant value="95:2-103:7"/>
+ <constant value="J.not():J"/>
+ <constant value="26"/>
+ <constant value="allStructuralFeatures"/>
+ <constant value="22"/>
+ <constant value="QJ.first():J"/>
+ <constant value="106:9-106:13"/>
+ <constant value="106:9-106:22"/>
+ <constant value="106:5-106:22"/>
+ <constant value="109:3-109:7"/>
+ <constant value="109:3-109:16"/>
+ <constant value="109:3-109:22"/>
+ <constant value="109:3-109:44"/>
+ <constant value="110:4-110:5"/>
+ <constant value="110:4-110:10"/>
+ <constant value="110:13-110:17"/>
+ <constant value="110:13-110:22"/>
+ <constant value="110:4-110:22"/>
+ <constant value="109:3-111:4"/>
+ <constant value="109:3-111:18"/>
+ <constant value="109:3-111:27"/>
+ <constant value="107:3-107:15"/>
+ <constant value="106:2-112:7"/>
+ <constant value="__matchAtLeastOneStructuralFeatureByProperty"/>
+ <constant value="37"/>
+ <constant value="119:7-119:8"/>
+ <constant value="119:7-119:17"/>
+ <constant value="122:5-122:10"/>
+ <constant value="120:5-120:6"/>
+ <constant value="120:5-120:14"/>
+ <constant value="120:5-120:31"/>
+ <constant value="119:4-123:9"/>
+ <constant value="126:7-126:22"/>
+ <constant value="126:3-130:4"/>
+ <constant value="__applyAtLeastOneStructuralFeatureByProperty"/>
+ <constant value="[C-4] There is no metamodel StructuralFeature corresponding to property "/>
+ <constant value="127:16-127:22"/>
+ <constant value="127:4-127:22"/>
+ <constant value="128:19-128:93"/>
+ <constant value="128:96-128:97"/>
+ <constant value="128:96-128:102"/>
+ <constant value="128:19-128:102"/>
+ <constant value="128:4-128:102"/>
+ <constant value="129:16-129:17"/>
+ <constant value="129:16-129:26"/>
+ <constant value="129:4-129:26"/>
+ <constant value="__matchAtLeastOneTemplateByPropertyType"/>
+ <constant value="propertyArgs"/>
+ <constant value="B.or(B):B"/>
+ <constant value="type"/>
+ <constant value="31"/>
+ <constant value="33"/>
+ <constant value="55"/>
+ <constant value="138:7-138:8"/>
+ <constant value="138:7-138:16"/>
+ <constant value="138:7-138:33"/>
+ <constant value="140:12-140:13"/>
+ <constant value="140:12-140:26"/>
+ <constant value="140:39-140:40"/>
+ <constant value="140:53-140:69"/>
+ <constant value="140:39-140:70"/>
+ <constant value="140:12-140:71"/>
+ <constant value="143:5-143:6"/>
+ <constant value="143:5-143:14"/>
+ <constant value="143:5-143:19"/>
+ <constant value="143:5-143:28"/>
+ <constant value="143:5-143:45"/>
+ <constant value="141:5-141:10"/>
+ <constant value="140:9-144:9"/>
+ <constant value="139:5-139:10"/>
+ <constant value="138:4-144:15"/>
+ <constant value="147:7-147:22"/>
+ <constant value="147:3-151:4"/>
+ <constant value="__applyAtLeastOneTemplateByPropertyType"/>
+ <constant value="[C-5] There is no TCS Template corresponding to the type of property "/>
+ <constant value="148:16-148:22"/>
+ <constant value="148:4-148:22"/>
+ <constant value="149:19-149:90"/>
+ <constant value="149:93-149:94"/>
+ <constant value="149:93-149:99"/>
+ <constant value="149:19-149:99"/>
+ <constant value="149:4-149:99"/>
+ <constant value="150:16-150:17"/>
+ <constant value="150:16-150:26"/>
+ <constant value="150:4-150:26"/>
+ <constant value="MTCS!RefersToPArg;"/>
+ <constant value="property"/>
+ <constant value="28"/>
+ <constant value="propertyName"/>
+ <constant value="24"/>
+ <constant value="155:5-155:9"/>
+ <constant value="155:5-155:18"/>
+ <constant value="155:5-155:26"/>
+ <constant value="155:5-155:43"/>
+ <constant value="158:3-158:7"/>
+ <constant value="158:3-158:16"/>
+ <constant value="158:3-158:24"/>
+ <constant value="158:3-158:29"/>
+ <constant value="158:3-158:51"/>
+ <constant value="159:4-159:5"/>
+ <constant value="159:4-159:10"/>
+ <constant value="159:13-159:17"/>
+ <constant value="159:13-159:30"/>
+ <constant value="159:4-159:30"/>
+ <constant value="158:3-160:4"/>
+ <constant value="158:3-160:18"/>
+ <constant value="158:3-160:27"/>
+ <constant value="156:3-156:15"/>
+ <constant value="155:2-161:7"/>
+ <constant value="__matchAtLeastOneStructuralFeatureByRefersToPArg"/>
+ <constant value="23"/>
+ <constant value="45"/>
+ <constant value="168:7-168:8"/>
+ <constant value="168:7-168:17"/>
+ <constant value="168:7-168:26"/>
+ <constant value="175:5-175:10"/>
+ <constant value="169:8-169:9"/>
+ <constant value="169:8-169:18"/>
+ <constant value="169:8-169:26"/>
+ <constant value="169:8-169:43"/>
+ <constant value="172:6-172:7"/>
+ <constant value="172:6-172:15"/>
+ <constant value="172:6-172:32"/>
+ <constant value="170:6-170:11"/>
+ <constant value="169:5-173:10"/>
+ <constant value="168:4-176:9"/>
+ <constant value="179:7-179:22"/>
+ <constant value="179:3-183:4"/>
+ <constant value="__applyAtLeastOneStructuralFeatureByRefersToPArg"/>
+ <constant value="There is no metamodel StructuralFeature corresponding to referredTo property "/>
+ <constant value=" in "/>
+ <constant value="180:16-180:22"/>
+ <constant value="180:4-180:22"/>
+ <constant value="181:19-181:98"/>
+ <constant value="181:101-181:102"/>
+ <constant value="181:101-181:115"/>
+ <constant value="181:19-181:115"/>
+ <constant value="181:118-181:124"/>
+ <constant value="181:19-181:124"/>
+ <constant value="181:127-181:128"/>
+ <constant value="181:127-181:137"/>
+ <constant value="181:127-181:145"/>
+ <constant value="181:127-181:150"/>
+ <constant value="181:127-181:155"/>
+ <constant value="181:19-181:155"/>
+ <constant value="181:4-181:155"/>
+ <constant value="182:16-182:17"/>
+ <constant value="182:16-182:26"/>
+ <constant value="182:4-182:26"/>
+ <constant value="MTCS!AtomExp;"/>
+ <constant value="andExp"/>
+ <constant value="conditionalElement"/>
+ <constant value="16"/>
+ <constant value="187:36-187:40"/>
+ <constant value="187:36-187:47"/>
+ <constant value="187:36-187:66"/>
+ <constant value="188:5-188:7"/>
+ <constant value="188:5-188:16"/>
+ <constant value="188:5-188:33"/>
+ <constant value="191:6-191:8"/>
+ <constant value="191:6-191:17"/>
+ <constant value="191:6-191:23"/>
+ <constant value="191:6-191:40"/>
+ <constant value="194:4-194:8"/>
+ <constant value="192:4-192:9"/>
+ <constant value="191:3-195:8"/>
+ <constant value="189:3-189:8"/>
+ <constant value="188:2-196:7"/>
+ <constant value="187:2-196:7"/>
+ <constant value="ce"/>
+ <constant value="199:9-199:13"/>
+ <constant value="199:9-199:22"/>
+ <constant value="199:5-199:22"/>
+ <constant value="202:3-202:7"/>
+ <constant value="202:3-202:14"/>
+ <constant value="202:3-202:33"/>
+ <constant value="202:3-202:42"/>
+ <constant value="202:3-202:48"/>
+ <constant value="202:3-202:70"/>
+ <constant value="203:4-203:5"/>
+ <constant value="203:4-203:10"/>
+ <constant value="203:13-203:17"/>
+ <constant value="203:13-203:30"/>
+ <constant value="203:4-203:30"/>
+ <constant value="202:3-204:4"/>
+ <constant value="202:3-204:18"/>
+ <constant value="202:3-204:27"/>
+ <constant value="200:3-200:15"/>
+ <constant value="199:2-205:7"/>
+ <constant value="__matchAtLeastOneStructuralFeatureByAtomExp"/>
+ <constant value="212:7-212:8"/>
+ <constant value="212:7-212:17"/>
+ <constant value="215:5-215:10"/>
+ <constant value="213:5-213:6"/>
+ <constant value="213:5-213:14"/>
+ <constant value="213:5-213:31"/>
+ <constant value="212:4-216:9"/>
+ <constant value="219:7-219:22"/>
+ <constant value="219:3-223:4"/>
+ <constant value="__applyAtLeastOneStructuralFeatureByAtomExp"/>
+ <constant value="There is no metamodel StructuralFeature corresponding to property "/>
+ <constant value="220:16-220:22"/>
+ <constant value="220:4-220:22"/>
+ <constant value="221:19-221:87"/>
+ <constant value="221:90-221:91"/>
+ <constant value="221:90-221:104"/>
+ <constant value="221:19-221:104"/>
+ <constant value="221:4-221:104"/>
+ <constant value="222:16-222:17"/>
+ <constant value="222:16-222:26"/>
+ <constant value="222:4-222:26"/>
+ <constant value="__matchAtLeastOneClassByFunctionTemplate"/>
+ <constant value="230:4-230:5"/>
+ <constant value="230:4-230:11"/>
+ <constant value="230:4-230:28"/>
+ <constant value="233:7-233:22"/>
+ <constant value="233:3-237:4"/>
+ <constant value="__applyAtLeastOneClassByFunctionTemplate"/>
+ <constant value="There is no metamodel Class corresponding to FunctionTemplate "/>
+ <constant value="234:16-234:22"/>
+ <constant value="234:4-234:22"/>
+ <constant value="235:19-235:83"/>
+ <constant value="235:86-235:87"/>
+ <constant value="235:86-235:92"/>
+ <constant value="235:19-235:92"/>
+ <constant value="235:4-235:92"/>
+ <constant value="236:16-236:17"/>
+ <constant value="236:16-236:26"/>
+ <constant value="236:4-236:26"/>
+ <constant value="__matchAtMostOneClassByFunctionTemplate"/>
+ <constant value="247:4-247:5"/>
+ <constant value="247:4-247:13"/>
+ <constant value="247:4-247:21"/>
+ <constant value="247:24-247:25"/>
+ <constant value="247:4-247:25"/>
+ <constant value="250:7-250:22"/>
+ <constant value="250:3-254:4"/>
+ <constant value="__applyAtMostOneClassByFunctionTemplate"/>
+ <constant value="There are several metamodel Classes corresponding to FunctionTemplate "/>
+ <constant value="251:16-251:22"/>
+ <constant value="251:4-251:22"/>
+ <constant value="252:19-252:91"/>
+ <constant value="252:94-252:95"/>
+ <constant value="252:94-252:100"/>
+ <constant value="252:19-252:100"/>
+ <constant value="252:4-252:100"/>
+ <constant value="253:16-253:17"/>
+ <constant value="253:16-253:26"/>
+ <constant value="253:4-253:26"/>
+ <constant value="__matchNonContainerReferenceShouldBeReferredTo"/>
+ <constant value="38"/>
+ <constant value="Reference"/>
+ <constant value="20"/>
+ <constant value="isContainer"/>
+ <constant value="J.or(J):J"/>
+ <constant value="39"/>
+ <constant value="61"/>
+ <constant value="261:7-261:8"/>
+ <constant value="261:7-261:16"/>
+ <constant value="261:7-261:33"/>
+ <constant value="263:12-263:13"/>
+ <constant value="263:12-263:21"/>
+ <constant value="263:34-263:47"/>
+ <constant value="263:12-263:48"/>
+ <constant value="266:5-266:10"/>
+ <constant value="264:9-264:10"/>
+ <constant value="264:9-264:23"/>
+ <constant value="264:36-264:37"/>
+ <constant value="264:50-264:66"/>
+ <constant value="264:36-264:67"/>
+ <constant value="264:9-264:68"/>
+ <constant value="264:72-264:73"/>
+ <constant value="264:72-264:81"/>
+ <constant value="264:72-264:93"/>
+ <constant value="264:9-264:93"/>
+ <constant value="264:5-264:94"/>
+ <constant value="263:9-267:9"/>
+ <constant value="262:5-262:10"/>
+ <constant value="261:4-267:15"/>
+ <constant value="270:7-270:22"/>
+ <constant value="270:3-274:4"/>
+ <constant value="__applyNonContainerReferenceShouldBeReferredTo"/>
+ <constant value="warning"/>
+ <constant value="Property "/>
+ <constant value=", which corresponds to a non-container Reference, should referTo"/>
+ <constant value="271:16-271:24"/>
+ <constant value="271:4-271:24"/>
+ <constant value="272:19-272:30"/>
+ <constant value="272:33-272:34"/>
+ <constant value="272:33-272:39"/>
+ <constant value="272:19-272:39"/>
+ <constant value="272:42-272:108"/>
+ <constant value="272:19-272:108"/>
+ <constant value="272:4-272:108"/>
+ <constant value="273:16-273:17"/>
+ <constant value="273:16-273:26"/>
+ <constant value="273:4-273:26"/>
+ <constant value="__matchPrimitiveTypesCannotBeReferredTo"/>
+ <constant value="281:7-281:8"/>
+ <constant value="281:7-281:16"/>
+ <constant value="281:7-281:33"/>
+ <constant value="284:5-284:6"/>
+ <constant value="284:5-284:19"/>
+ <constant value="284:32-284:33"/>
+ <constant value="284:46-284:62"/>
+ <constant value="284:32-284:63"/>
+ <constant value="284:5-284:64"/>
+ <constant value="284:69-284:70"/>
+ <constant value="284:69-284:78"/>
+ <constant value="284:69-284:83"/>
+ <constant value="284:96-284:108"/>
+ <constant value="284:69-284:109"/>
+ <constant value="284:5-284:109"/>
+ <constant value="282:5-282:10"/>
+ <constant value="281:4-285:9"/>
+ <constant value="288:7-288:22"/>
+ <constant value="288:3-292:4"/>
+ <constant value="__applyPrimitiveTypesCannotBeReferredTo"/>
+ <constant value=", which corresponds to a StructuralFeature of type "/>
+ <constant value=" should not referTo"/>
+ <constant value="289:16-289:22"/>
+ <constant value="289:4-289:22"/>
+ <constant value="290:19-290:30"/>
+ <constant value="290:33-290:34"/>
+ <constant value="290:33-290:39"/>
+ <constant value="290:19-290:39"/>
+ <constant value="290:42-290:95"/>
+ <constant value="290:19-290:95"/>
+ <constant value="290:98-290:99"/>
+ <constant value="290:98-290:107"/>
+ <constant value="290:98-290:112"/>
+ <constant value="290:98-290:117"/>
+ <constant value="290:19-290:117"/>
+ <constant value="290:120-290:141"/>
+ <constant value="290:19-290:141"/>
+ <constant value="290:4-290:141"/>
+ <constant value="291:16-291:17"/>
+ <constant value="291:16-291:26"/>
+ <constant value="291:4-291:26"/>
+ </cp>
+ <field name="1" type="2"/>
+ <field name="3" type="4"/>
+ <operation name="5">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <getasm/>
+ <push arg="7"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="9"/>
+ <call arg="10"/>
+ <dup/>
+ <push arg="11"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="12"/>
+ <call arg="10"/>
+ <call arg="13"/>
+ <set arg="3"/>
+ <push arg="14"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="16"/>
+ <push arg="17"/>
+ <call arg="18"/>
+ <push arg="19"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="16"/>
+ <push arg="17"/>
+ <call arg="18"/>
+ <push arg="20"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="16"/>
+ <push arg="17"/>
+ <call arg="18"/>
+ <push arg="14"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="21"/>
+ <push arg="22"/>
+ <call arg="18"/>
+ <push arg="23"/>
+ <push arg="24"/>
+ <findme/>
+ <push arg="25"/>
+ <push arg="26"/>
+ <call arg="18"/>
+ <push arg="27"/>
+ <push arg="24"/>
+ <findme/>
+ <push arg="25"/>
+ <push arg="26"/>
+ <call arg="18"/>
+ <push arg="28"/>
+ <push arg="24"/>
+ <findme/>
+ <push arg="25"/>
+ <push arg="26"/>
+ <call arg="18"/>
+ <push arg="29"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="25"/>
+ <push arg="26"/>
+ <call arg="18"/>
+ <push arg="30"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="31"/>
+ <push arg="32"/>
+ <call arg="18"/>
+ <push arg="30"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="33"/>
+ <push arg="34"/>
+ <call arg="18"/>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="33"/>
+ <push arg="34"/>
+ <call arg="18"/>
+ <push arg="36"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="31"/>
+ <push arg="32"/>
+ <call arg="18"/>
+ <push arg="36"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="33"/>
+ <push arg="34"/>
+ <call arg="18"/>
+ <getasm/>
+ <push arg="37"/>
+ <push arg="8"/>
+ <new/>
+ <set arg="1"/>
+ <getasm/>
+ <call arg="38"/>
+ <getasm/>
+ <call arg="39"/>
+ </code>
+ <linenumbertable>
+ <lne id="40" begin="16" end="18"/>
+ <lne id="41" begin="22" end="24"/>
+ <lne id="42" begin="28" end="30"/>
+ <lne id="43" begin="34" end="36"/>
+ <lne id="44" begin="40" end="42"/>
+ <lne id="45" begin="46" end="48"/>
+ <lne id="46" begin="52" end="54"/>
+ <lne id="47" begin="58" end="60"/>
+ <lne id="48" begin="64" end="66"/>
+ <lne id="49" begin="70" end="72"/>
+ <lne id="50" begin="76" end="78"/>
+ <lne id="51" begin="82" end="84"/>
+ <lne id="52" begin="88" end="90"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="53" begin="0" end="102"/>
+ </localvariabletable>
+ </operation>
+ <operation name="54">
+ <context type="6"/>
+ <parameters>
+ <parameter name="55" type="4"/>
+ </parameters>
+ <code>
+ <load arg="55"/>
+ <getasm/>
+ <get arg="3"/>
+ <call arg="56"/>
+ <if arg="57"/>
+ <getasm/>
+ <get arg="1"/>
+ <load arg="55"/>
+ <call arg="58"/>
+ <dup/>
+ <call arg="59"/>
+ <if arg="60"/>
+ <load arg="55"/>
+ <call arg="61"/>
+ <goto arg="62"/>
+ <pop/>
+ <load arg="55"/>
+ <goto arg="63"/>
+ <push arg="64"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="55"/>
+ <iterate/>
+ <store arg="65"/>
+ <getasm/>
+ <load arg="65"/>
+ <call arg="66"/>
+ <call arg="67"/>
+ <enditerate/>
+ <call arg="68"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="69" begin="23" end="27"/>
+ <lve slot="0" name="53" begin="0" end="29"/>
+ <lve slot="1" name="70" begin="0" end="29"/>
+ </localvariabletable>
+ </operation>
+ <operation name="71">
+ <context type="6"/>
+ <parameters>
+ <parameter name="55" type="4"/>
+ <parameter name="65" type="72"/>
+ </parameters>
+ <code>
+ <getasm/>
+ <get arg="1"/>
+ <load arg="55"/>
+ <call arg="58"/>
+ <load arg="55"/>
+ <load arg="65"/>
+ <call arg="73"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="53" begin="0" end="6"/>
+ <lve slot="1" name="70" begin="0" end="6"/>
+ <lve slot="2" name="74" begin="0" end="6"/>
+ </localvariabletable>
+ </operation>
+ <operation name="75">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <getasm/>
+ <call arg="76"/>
+ <getasm/>
+ <call arg="77"/>
+ <getasm/>
+ <call arg="78"/>
+ <getasm/>
+ <call arg="79"/>
+ <getasm/>
+ <call arg="80"/>
+ <getasm/>
+ <call arg="81"/>
+ <getasm/>
+ <call arg="82"/>
+ <getasm/>
+ <call arg="83"/>
+ <getasm/>
+ <call arg="84"/>
+ <getasm/>
+ <call arg="85"/>
+ <getasm/>
+ <call arg="86"/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="53" begin="0" end="21"/>
+ </localvariabletable>
+ </operation>
+ <operation name="87">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="88"/>
+ <call arg="89"/>
+ <iterate/>
+ <store arg="55"/>
+ <getasm/>
+ <load arg="55"/>
+ <call arg="90"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="91"/>
+ <call arg="89"/>
+ <iterate/>
+ <store arg="55"/>
+ <getasm/>
+ <load arg="55"/>
+ <call arg="92"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="93"/>
+ <call arg="89"/>
+ <iterate/>
+ <store arg="55"/>
+ <getasm/>
+ <load arg="55"/>
+ <call arg="94"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="95"/>
+ <call arg="89"/>
+ <iterate/>
+ <store arg="55"/>
+ <getasm/>
+ <load arg="55"/>
+ <call arg="96"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="97"/>
+ <call arg="89"/>
+ <iterate/>
+ <store arg="55"/>
+ <getasm/>
+ <load arg="55"/>
+ <call arg="98"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="99"/>
+ <call arg="89"/>
+ <iterate/>
+ <store arg="55"/>
+ <getasm/>
+ <load arg="55"/>
+ <call arg="100"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="101"/>
+ <call arg="89"/>
+ <iterate/>
+ <store arg="55"/>
+ <getasm/>
+ <load arg="55"/>
+ <call arg="102"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="103"/>
+ <call arg="89"/>
+ <iterate/>
+ <store arg="55"/>
+ <getasm/>
+ <load arg="55"/>
+ <call arg="104"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="105"/>
+ <call arg="89"/>
+ <iterate/>
+ <store arg="55"/>
+ <getasm/>
+ <load arg="55"/>
+ <call arg="106"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="107"/>
+ <call arg="89"/>
+ <iterate/>
+ <store arg="55"/>
+ <getasm/>
+ <load arg="55"/>
+ <call arg="108"/>
+ <enditerate/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="109"/>
+ <call arg="89"/>
+ <iterate/>
+ <store arg="55"/>
+ <getasm/>
+ <load arg="55"/>
+ <call arg="110"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="69" begin="5" end="8"/>
+ <lve slot="1" name="69" begin="15" end="18"/>
+ <lve slot="1" name="69" begin="25" end="28"/>
+ <lve slot="1" name="69" begin="35" end="38"/>
+ <lve slot="1" name="69" begin="45" end="48"/>
+ <lve slot="1" name="69" begin="55" end="58"/>
+ <lve slot="1" name="69" begin="65" end="68"/>
+ <lve slot="1" name="69" begin="75" end="78"/>
+ <lve slot="1" name="69" begin="85" end="88"/>
+ <lve slot="1" name="69" begin="95" end="98"/>
+ <lve slot="1" name="69" begin="105" end="108"/>
+ <lve slot="0" name="53" begin="0" end="109"/>
+ </localvariabletable>
+ </operation>
+ <operation name="17">
+ <context type="111"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="64"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="112"/>
+ <push arg="24"/>
+ <findme/>
+ <push arg="113"/>
+ <call arg="114"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="74"/>
+ <load arg="115"/>
+ <get arg="74"/>
+ <call arg="116"/>
+ <call arg="117"/>
+ <if arg="118"/>
+ <load arg="55"/>
+ <call arg="119"/>
+ <enditerate/>
+ <call arg="120"/>
+ </code>
+ <linenumbertable>
+ <lne id="121" begin="3" end="5"/>
+ <lne id="122" begin="6" end="6"/>
+ <lne id="123" begin="3" end="7"/>
+ <lne id="124" begin="10" end="10"/>
+ <lne id="125" begin="10" end="11"/>
+ <lne id="126" begin="12" end="12"/>
+ <lne id="127" begin="12" end="13"/>
+ <lne id="128" begin="10" end="14"/>
+ <lne id="129" begin="0" end="19"/>
+ <lne id="130" begin="0" end="20"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="69" begin="9" end="18"/>
+ <lve slot="0" name="53" begin="0" end="20"/>
+ </localvariabletable>
+ </operation>
+ <operation name="17">
+ <context type="131"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="64"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="112"/>
+ <push arg="24"/>
+ <findme/>
+ <push arg="113"/>
+ <call arg="114"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="74"/>
+ <load arg="115"/>
+ <get arg="132"/>
+ <call arg="116"/>
+ <call arg="117"/>
+ <if arg="118"/>
+ <load arg="55"/>
+ <call arg="119"/>
+ <enditerate/>
+ <call arg="120"/>
+ </code>
+ <linenumbertable>
+ <lne id="133" begin="3" end="5"/>
+ <lne id="134" begin="6" end="6"/>
+ <lne id="135" begin="3" end="7"/>
+ <lne id="136" begin="10" end="10"/>
+ <lne id="137" begin="10" end="11"/>
+ <lne id="138" begin="12" end="12"/>
+ <lne id="139" begin="12" end="13"/>
+ <lne id="140" begin="10" end="14"/>
+ <lne id="141" begin="0" end="19"/>
+ <lne id="142" begin="0" end="20"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="69" begin="9" end="18"/>
+ <lve slot="0" name="53" begin="0" end="20"/>
+ </localvariabletable>
+ </operation>
+ <operation name="17">
+ <context type="143"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="64"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="112"/>
+ <push arg="24"/>
+ <findme/>
+ <push arg="113"/>
+ <call arg="114"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="74"/>
+ <load arg="115"/>
+ <get arg="144"/>
+ <call arg="116"/>
+ <call arg="117"/>
+ <if arg="118"/>
+ <load arg="55"/>
+ <call arg="119"/>
+ <enditerate/>
+ <call arg="120"/>
+ </code>
+ <linenumbertable>
+ <lne id="145" begin="3" end="5"/>
+ <lne id="146" begin="6" end="6"/>
+ <lne id="147" begin="3" end="7"/>
+ <lne id="148" begin="10" end="10"/>
+ <lne id="149" begin="10" end="11"/>
+ <lne id="150" begin="12" end="12"/>
+ <lne id="151" begin="12" end="13"/>
+ <lne id="152" begin="10" end="14"/>
+ <lne id="153" begin="0" end="19"/>
+ <lne id="154" begin="0" end="20"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="69" begin="9" end="18"/>
+ <lve slot="0" name="53" begin="0" end="20"/>
+ </localvariabletable>
+ </operation>
+ <operation name="22">
+ <context type="111"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="115"/>
+ <get arg="16"/>
+ <call arg="155"/>
+ </code>
+ <linenumbertable>
+ <lne id="156" begin="0" end="0"/>
+ <lne id="157" begin="0" end="1"/>
+ <lne id="158" begin="0" end="2"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="53" begin="0" end="2"/>
+ </localvariabletable>
+ </operation>
+ <operation name="26">
+ <context type="159"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="64"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="160"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="161"/>
+ <call arg="114"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="74"/>
+ <load arg="115"/>
+ <get arg="74"/>
+ <call arg="116"/>
+ <call arg="117"/>
+ <if arg="118"/>
+ <load arg="55"/>
+ <call arg="119"/>
+ <enditerate/>
+ <call arg="120"/>
+ <call arg="155"/>
+ </code>
+ <linenumbertable>
+ <lne id="162" begin="3" end="5"/>
+ <lne id="163" begin="6" end="6"/>
+ <lne id="164" begin="3" end="7"/>
+ <lne id="165" begin="10" end="10"/>
+ <lne id="166" begin="10" end="11"/>
+ <lne id="167" begin="12" end="12"/>
+ <lne id="168" begin="12" end="13"/>
+ <lne id="169" begin="10" end="14"/>
+ <lne id="170" begin="0" end="19"/>
+ <lne id="171" begin="0" end="20"/>
+ <lne id="172" begin="0" end="21"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="69" begin="9" end="18"/>
+ <lve slot="0" name="53" begin="0" end="21"/>
+ </localvariabletable>
+ </operation>
+ <operation name="26">
+ <context type="173"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="64"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="20"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="161"/>
+ <call arg="114"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="144"/>
+ <load arg="115"/>
+ <get arg="74"/>
+ <call arg="116"/>
+ <call arg="117"/>
+ <if arg="118"/>
+ <load arg="55"/>
+ <call arg="119"/>
+ <enditerate/>
+ <call arg="120"/>
+ <call arg="155"/>
+ </code>
+ <linenumbertable>
+ <lne id="174" begin="3" end="5"/>
+ <lne id="175" begin="6" end="6"/>
+ <lne id="176" begin="3" end="7"/>
+ <lne id="177" begin="10" end="10"/>
+ <lne id="178" begin="10" end="11"/>
+ <lne id="179" begin="12" end="12"/>
+ <lne id="180" begin="12" end="13"/>
+ <lne id="181" begin="10" end="14"/>
+ <lne id="182" begin="0" end="19"/>
+ <lne id="183" begin="0" end="20"/>
+ <lne id="184" begin="0" end="21"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="69" begin="9" end="18"/>
+ <lve slot="0" name="53" begin="0" end="21"/>
+ </localvariabletable>
+ </operation>
+ <operation name="26">
+ <context type="185"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="64"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="186"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="161"/>
+ <call arg="114"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="74"/>
+ <load arg="115"/>
+ <get arg="74"/>
+ <call arg="116"/>
+ <call arg="117"/>
+ <if arg="118"/>
+ <load arg="55"/>
+ <call arg="119"/>
+ <enditerate/>
+ <call arg="120"/>
+ <call arg="155"/>
+ </code>
+ <linenumbertable>
+ <lne id="187" begin="3" end="5"/>
+ <lne id="188" begin="6" end="6"/>
+ <lne id="189" begin="3" end="7"/>
+ <lne id="190" begin="10" end="10"/>
+ <lne id="191" begin="10" end="11"/>
+ <lne id="192" begin="12" end="12"/>
+ <lne id="193" begin="12" end="13"/>
+ <lne id="194" begin="10" end="14"/>
+ <lne id="195" begin="0" end="19"/>
+ <lne id="196" begin="0" end="20"/>
+ <lne id="197" begin="0" end="21"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="69" begin="9" end="18"/>
+ <lve slot="0" name="53" begin="0" end="21"/>
+ </localvariabletable>
+ </operation>
+ <operation name="198">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="160"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="161"/>
+ <call arg="199"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="21"/>
+ <call arg="59"/>
+ <call arg="117"/>
+ <if arg="200"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="201"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="88"/>
+ <call arg="202"/>
+ <dup/>
+ <push arg="203"/>
+ <load arg="55"/>
+ <call arg="204"/>
+ <dup/>
+ <push arg="205"/>
+ <push arg="206"/>
+ <push arg="206"/>
+ <new/>
+ <call arg="207"/>
+ <pushf/>
+ <call arg="208"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="209" begin="7" end="7"/>
+ <lne id="210" begin="7" end="8"/>
+ <lne id="211" begin="7" end="9"/>
+ <lne id="212" begin="26" end="28"/>
+ <lne id="213" begin="24" end="29"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="203" begin="6" end="31"/>
+ <lve slot="0" name="53" begin="0" end="32"/>
+ </localvariabletable>
+ </operation>
+ <operation name="214">
+ <context type="6"/>
+ <parameters>
+ <parameter name="55" type="215"/>
+ </parameters>
+ <code>
+ <load arg="55"/>
+ <push arg="203"/>
+ <call arg="216"/>
+ <store arg="65"/>
+ <load arg="55"/>
+ <push arg="205"/>
+ <call arg="217"/>
+ <store arg="218"/>
+ <load arg="218"/>
+ <dup/>
+ <getasm/>
+ <push arg="219"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="220"/>
+ <set arg="74"/>
+ <call arg="66"/>
+ <set arg="221"/>
+ <dup/>
+ <getasm/>
+ <push arg="222"/>
+ <load arg="65"/>
+ <get arg="74"/>
+ <call arg="223"/>
+ <call arg="66"/>
+ <set arg="224"/>
+ <dup/>
+ <getasm/>
+ <load arg="65"/>
+ <get arg="225"/>
+ <call arg="66"/>
+ <set arg="225"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="226" begin="11" end="16"/>
+ <lne id="227" begin="9" end="18"/>
+ <lne id="228" begin="21" end="21"/>
+ <lne id="229" begin="22" end="22"/>
+ <lne id="230" begin="22" end="23"/>
+ <lne id="231" begin="21" end="24"/>
+ <lne id="232" begin="19" end="26"/>
+ <lne id="233" begin="29" end="29"/>
+ <lne id="234" begin="29" end="30"/>
+ <lne id="235" begin="27" end="32"/>
+ <lne id="213" begin="8" end="33"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="205" begin="7" end="33"/>
+ <lve slot="2" name="203" begin="3" end="33"/>
+ <lve slot="0" name="53" begin="0" end="33"/>
+ <lve slot="1" name="236" begin="0" end="33"/>
+ </localvariabletable>
+ </operation>
+ <operation name="237">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="160"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="161"/>
+ <call arg="199"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="16"/>
+ <call arg="238"/>
+ <pushi arg="55"/>
+ <call arg="239"/>
+ <call arg="117"/>
+ <if arg="240"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="201"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="91"/>
+ <call arg="202"/>
+ <dup/>
+ <push arg="203"/>
+ <load arg="55"/>
+ <call arg="204"/>
+ <dup/>
+ <push arg="205"/>
+ <push arg="206"/>
+ <push arg="206"/>
+ <new/>
+ <call arg="207"/>
+ <pushf/>
+ <call arg="208"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="241" begin="7" end="7"/>
+ <lne id="242" begin="7" end="8"/>
+ <lne id="243" begin="7" end="9"/>
+ <lne id="244" begin="10" end="10"/>
+ <lne id="245" begin="7" end="11"/>
+ <lne id="246" begin="28" end="30"/>
+ <lne id="247" begin="26" end="31"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="203" begin="6" end="33"/>
+ <lve slot="0" name="53" begin="0" end="34"/>
+ </localvariabletable>
+ </operation>
+ <operation name="248">
+ <context type="6"/>
+ <parameters>
+ <parameter name="55" type="215"/>
+ </parameters>
+ <code>
+ <load arg="55"/>
+ <push arg="203"/>
+ <call arg="216"/>
+ <store arg="65"/>
+ <load arg="55"/>
+ <push arg="205"/>
+ <call arg="217"/>
+ <store arg="218"/>
+ <load arg="218"/>
+ <dup/>
+ <getasm/>
+ <push arg="219"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="220"/>
+ <set arg="74"/>
+ <call arg="66"/>
+ <set arg="221"/>
+ <dup/>
+ <getasm/>
+ <push arg="249"/>
+ <load arg="65"/>
+ <get arg="74"/>
+ <call arg="223"/>
+ <call arg="66"/>
+ <set arg="224"/>
+ <dup/>
+ <getasm/>
+ <load arg="65"/>
+ <get arg="225"/>
+ <call arg="66"/>
+ <set arg="225"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="250" begin="11" end="16"/>
+ <lne id="251" begin="9" end="18"/>
+ <lne id="252" begin="21" end="21"/>
+ <lne id="253" begin="22" end="22"/>
+ <lne id="254" begin="22" end="23"/>
+ <lne id="255" begin="21" end="24"/>
+ <lne id="256" begin="19" end="26"/>
+ <lne id="257" begin="29" end="29"/>
+ <lne id="258" begin="29" end="30"/>
+ <lne id="259" begin="27" end="32"/>
+ <lne id="247" begin="8" end="33"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="205" begin="7" end="33"/>
+ <lve slot="2" name="203" begin="3" end="33"/>
+ <lve slot="0" name="53" begin="0" end="33"/>
+ <lve slot="1" name="236" begin="0" end="33"/>
+ </localvariabletable>
+ </operation>
+ <operation name="260">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="14"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="161"/>
+ <call arg="199"/>
+ <iterate/>
+ <store arg="55"/>
+ <push arg="64"/>
+ <push arg="8"/>
+ <new/>
+ <push arg="14"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="161"/>
+ <call arg="114"/>
+ <iterate/>
+ <store arg="65"/>
+ <load arg="65"/>
+ <get arg="74"/>
+ <load arg="55"/>
+ <get arg="74"/>
+ <call arg="116"/>
+ <load arg="65"/>
+ <push arg="160"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="261"/>
+ <load arg="55"/>
+ <push arg="160"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="261"/>
+ <call arg="262"/>
+ <if arg="263"/>
+ <pusht/>
+ <goto arg="264"/>
+ <load arg="65"/>
+ <get arg="265"/>
+ <load arg="55"/>
+ <get arg="265"/>
+ <call arg="116"/>
+ <call arg="262"/>
+ <call arg="117"/>
+ <if arg="266"/>
+ <load arg="65"/>
+ <call arg="119"/>
+ <enditerate/>
+ <call arg="238"/>
+ <pushi arg="55"/>
+ <call arg="239"/>
+ <call arg="117"/>
+ <if arg="267"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="201"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="93"/>
+ <call arg="202"/>
+ <dup/>
+ <push arg="203"/>
+ <load arg="55"/>
+ <call arg="204"/>
+ <dup/>
+ <push arg="205"/>
+ <push arg="206"/>
+ <push arg="206"/>
+ <new/>
+ <call arg="207"/>
+ <pushf/>
+ <call arg="208"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="268" begin="10" end="12"/>
+ <lne id="269" begin="13" end="13"/>
+ <lne id="270" begin="10" end="14"/>
+ <lne id="271" begin="17" end="17"/>
+ <lne id="272" begin="17" end="18"/>
+ <lne id="273" begin="19" end="19"/>
+ <lne id="274" begin="19" end="20"/>
+ <lne id="275" begin="17" end="21"/>
+ <lne id="276" begin="22" end="22"/>
+ <lne id="277" begin="23" end="25"/>
+ <lne id="278" begin="22" end="26"/>
+ <lne id="279" begin="27" end="27"/>
+ <lne id="280" begin="28" end="30"/>
+ <lne id="281" begin="27" end="31"/>
+ <lne id="282" begin="22" end="32"/>
+ <lne id="283" begin="34" end="34"/>
+ <lne id="284" begin="36" end="36"/>
+ <lne id="285" begin="36" end="37"/>
+ <lne id="286" begin="38" end="38"/>
+ <lne id="287" begin="38" end="39"/>
+ <lne id="288" begin="36" end="40"/>
+ <lne id="289" begin="22" end="40"/>
+ <lne id="290" begin="17" end="41"/>
+ <lne id="291" begin="7" end="46"/>
+ <lne id="292" begin="7" end="47"/>
+ <lne id="293" begin="48" end="48"/>
+ <lne id="294" begin="7" end="49"/>
+ <lne id="295" begin="66" end="68"/>
+ <lne id="296" begin="64" end="69"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="69" begin="16" end="45"/>
+ <lve slot="1" name="203" begin="6" end="71"/>
+ <lve slot="0" name="53" begin="0" end="72"/>
+ </localvariabletable>
+ </operation>
+ <operation name="297">
+ <context type="6"/>
+ <parameters>
+ <parameter name="55" type="215"/>
+ </parameters>
+ <code>
+ <load arg="55"/>
+ <push arg="203"/>
+ <call arg="216"/>
+ <store arg="65"/>
+ <load arg="55"/>
+ <push arg="205"/>
+ <call arg="217"/>
+ <store arg="218"/>
+ <load arg="218"/>
+ <dup/>
+ <getasm/>
+ <push arg="219"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="220"/>
+ <set arg="74"/>
+ <call arg="66"/>
+ <set arg="221"/>
+ <dup/>
+ <getasm/>
+ <push arg="298"/>
+ <load arg="65"/>
+ <get arg="74"/>
+ <call arg="223"/>
+ <call arg="66"/>
+ <set arg="224"/>
+ <dup/>
+ <getasm/>
+ <load arg="65"/>
+ <get arg="225"/>
+ <call arg="66"/>
+ <set arg="225"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="299" begin="11" end="16"/>
+ <lne id="300" begin="9" end="18"/>
+ <lne id="301" begin="21" end="21"/>
+ <lne id="302" begin="22" end="22"/>
+ <lne id="303" begin="22" end="23"/>
+ <lne id="304" begin="21" end="24"/>
+ <lne id="305" begin="19" end="26"/>
+ <lne id="306" begin="29" end="29"/>
+ <lne id="307" begin="29" end="30"/>
+ <lne id="308" begin="27" end="32"/>
+ <lne id="296" begin="8" end="33"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="205" begin="7" end="33"/>
+ <lve slot="2" name="203" begin="3" end="33"/>
+ <lve slot="0" name="53" begin="0" end="33"/>
+ <lve slot="1" name="236" begin="0" end="33"/>
+ </localvariabletable>
+ </operation>
+ <operation name="26">
+ <context type="309"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="115"/>
+ <call arg="310"/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <push arg="14"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="261"/>
+ <if arg="311"/>
+ <load arg="55"/>
+ <get arg="25"/>
+ <goto arg="312"/>
+ <load arg="55"/>
+ </code>
+ <linenumbertable>
+ <lne id="313" begin="0" end="0"/>
+ <lne id="314" begin="0" end="1"/>
+ <lne id="315" begin="3" end="3"/>
+ <lne id="316" begin="4" end="6"/>
+ <lne id="317" begin="3" end="7"/>
+ <lne id="318" begin="9" end="9"/>
+ <lne id="319" begin="9" end="10"/>
+ <lne id="320" begin="12" end="12"/>
+ <lne id="321" begin="3" end="12"/>
+ <lne id="322" begin="0" end="12"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="323" begin="2" end="12"/>
+ <lve slot="0" name="53" begin="0" end="12"/>
+ </localvariabletable>
+ </operation>
+ <operation name="32">
+ <context type="324"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="115"/>
+ <get arg="25"/>
+ <call arg="59"/>
+ <if arg="312"/>
+ <load arg="115"/>
+ <get arg="25"/>
+ <get arg="21"/>
+ <call arg="59"/>
+ <if arg="325"/>
+ <pusht/>
+ <goto arg="311"/>
+ <pushf/>
+ <goto arg="326"/>
+ <pushf/>
+ </code>
+ <linenumbertable>
+ <lne id="327" begin="0" end="0"/>
+ <lne id="328" begin="0" end="1"/>
+ <lne id="329" begin="0" end="2"/>
+ <lne id="330" begin="4" end="4"/>
+ <lne id="331" begin="4" end="5"/>
+ <lne id="332" begin="4" end="6"/>
+ <lne id="333" begin="4" end="7"/>
+ <lne id="334" begin="9" end="9"/>
+ <lne id="335" begin="11" end="11"/>
+ <lne id="336" begin="4" end="11"/>
+ <lne id="337" begin="13" end="13"/>
+ <lne id="338" begin="0" end="13"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="53" begin="0" end="13"/>
+ </localvariabletable>
+ </operation>
+ <operation name="34">
+ <context type="324"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="115"/>
+ <get arg="31"/>
+ <call arg="339"/>
+ <if arg="340"/>
+ <push arg="64"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="115"/>
+ <get arg="25"/>
+ <get arg="21"/>
+ <get arg="341"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="74"/>
+ <load arg="115"/>
+ <get arg="74"/>
+ <call arg="116"/>
+ <call arg="117"/>
+ <if arg="342"/>
+ <load arg="55"/>
+ <call arg="119"/>
+ <enditerate/>
+ <call arg="120"/>
+ <call arg="155"/>
+ <goto arg="63"/>
+ <push arg="64"/>
+ <push arg="8"/>
+ <new/>
+ <call arg="343"/>
+ </code>
+ <linenumbertable>
+ <lne id="344" begin="0" end="0"/>
+ <lne id="345" begin="0" end="1"/>
+ <lne id="346" begin="0" end="2"/>
+ <lne id="347" begin="7" end="7"/>
+ <lne id="348" begin="7" end="8"/>
+ <lne id="349" begin="7" end="9"/>
+ <lne id="350" begin="7" end="10"/>
+ <lne id="351" begin="13" end="13"/>
+ <lne id="352" begin="13" end="14"/>
+ <lne id="353" begin="15" end="15"/>
+ <lne id="354" begin="15" end="16"/>
+ <lne id="355" begin="13" end="17"/>
+ <lne id="356" begin="4" end="22"/>
+ <lne id="357" begin="4" end="23"/>
+ <lne id="358" begin="4" end="24"/>
+ <lne id="359" begin="26" end="29"/>
+ <lne id="360" begin="0" end="29"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="69" begin="12" end="21"/>
+ <lve slot="0" name="53" begin="0" end="29"/>
+ </localvariabletable>
+ </operation>
+ <operation name="361">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="30"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="161"/>
+ <call arg="199"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="31"/>
+ <if arg="311"/>
+ <pushf/>
+ <goto arg="60"/>
+ <load arg="55"/>
+ <get arg="33"/>
+ <call arg="59"/>
+ <call arg="117"/>
+ <if arg="362"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="201"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="95"/>
+ <call arg="202"/>
+ <dup/>
+ <push arg="203"/>
+ <load arg="55"/>
+ <call arg="204"/>
+ <dup/>
+ <push arg="205"/>
+ <push arg="206"/>
+ <push arg="206"/>
+ <new/>
+ <call arg="207"/>
+ <pushf/>
+ <call arg="208"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="363" begin="7" end="7"/>
+ <lne id="364" begin="7" end="8"/>
+ <lne id="365" begin="10" end="10"/>
+ <lne id="366" begin="12" end="12"/>
+ <lne id="367" begin="12" end="13"/>
+ <lne id="368" begin="12" end="14"/>
+ <lne id="369" begin="7" end="14"/>
+ <lne id="370" begin="31" end="33"/>
+ <lne id="371" begin="29" end="34"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="203" begin="6" end="36"/>
+ <lve slot="0" name="53" begin="0" end="37"/>
+ </localvariabletable>
+ </operation>
+ <operation name="372">
+ <context type="6"/>
+ <parameters>
+ <parameter name="55" type="215"/>
+ </parameters>
+ <code>
+ <load arg="55"/>
+ <push arg="203"/>
+ <call arg="216"/>
+ <store arg="65"/>
+ <load arg="55"/>
+ <push arg="205"/>
+ <call arg="217"/>
+ <store arg="218"/>
+ <load arg="218"/>
+ <dup/>
+ <getasm/>
+ <push arg="219"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="220"/>
+ <set arg="74"/>
+ <call arg="66"/>
+ <set arg="221"/>
+ <dup/>
+ <getasm/>
+ <push arg="373"/>
+ <load arg="65"/>
+ <get arg="74"/>
+ <call arg="223"/>
+ <call arg="66"/>
+ <set arg="224"/>
+ <dup/>
+ <getasm/>
+ <load arg="65"/>
+ <get arg="225"/>
+ <call arg="66"/>
+ <set arg="225"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="374" begin="11" end="16"/>
+ <lne id="375" begin="9" end="18"/>
+ <lne id="376" begin="21" end="21"/>
+ <lne id="377" begin="22" end="22"/>
+ <lne id="378" begin="22" end="23"/>
+ <lne id="379" begin="21" end="24"/>
+ <lne id="380" begin="19" end="26"/>
+ <lne id="381" begin="29" end="29"/>
+ <lne id="382" begin="29" end="30"/>
+ <lne id="383" begin="27" end="32"/>
+ <lne id="371" begin="8" end="33"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="205" begin="7" end="33"/>
+ <lve slot="2" name="203" begin="3" end="33"/>
+ <lve slot="0" name="53" begin="0" end="33"/>
+ <lve slot="1" name="236" begin="0" end="33"/>
+ </localvariabletable>
+ </operation>
+ <operation name="384">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="30"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="161"/>
+ <call arg="199"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="33"/>
+ <call arg="59"/>
+ <if arg="200"/>
+ <pushf/>
+ <load arg="55"/>
+ <get arg="385"/>
+ <iterate/>
+ <store arg="65"/>
+ <load arg="65"/>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="261"/>
+ <call arg="386"/>
+ <enditerate/>
+ <if arg="63"/>
+ <load arg="55"/>
+ <get arg="33"/>
+ <get arg="387"/>
+ <get arg="25"/>
+ <call arg="59"/>
+ <goto arg="388"/>
+ <pushf/>
+ <goto arg="389"/>
+ <pushf/>
+ <call arg="117"/>
+ <if arg="390"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="201"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="97"/>
+ <call arg="202"/>
+ <dup/>
+ <push arg="203"/>
+ <load arg="55"/>
+ <call arg="204"/>
+ <dup/>
+ <push arg="205"/>
+ <push arg="206"/>
+ <push arg="206"/>
+ <new/>
+ <call arg="207"/>
+ <pushf/>
+ <call arg="208"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="391" begin="7" end="7"/>
+ <lne id="392" begin="7" end="8"/>
+ <lne id="393" begin="7" end="9"/>
+ <lne id="394" begin="12" end="12"/>
+ <lne id="395" begin="12" end="13"/>
+ <lne id="396" begin="16" end="16"/>
+ <lne id="397" begin="17" end="19"/>
+ <lne id="398" begin="16" end="20"/>
+ <lne id="399" begin="11" end="22"/>
+ <lne id="400" begin="24" end="24"/>
+ <lne id="401" begin="24" end="25"/>
+ <lne id="402" begin="24" end="26"/>
+ <lne id="403" begin="24" end="27"/>
+ <lne id="404" begin="24" end="28"/>
+ <lne id="405" begin="30" end="30"/>
+ <lne id="406" begin="11" end="30"/>
+ <lne id="407" begin="32" end="32"/>
+ <lne id="408" begin="7" end="32"/>
+ <lne id="409" begin="49" end="51"/>
+ <lne id="410" begin="47" end="52"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="69" begin="15" end="21"/>
+ <lve slot="1" name="203" begin="6" end="54"/>
+ <lve slot="0" name="53" begin="0" end="55"/>
+ </localvariabletable>
+ </operation>
+ <operation name="411">
+ <context type="6"/>
+ <parameters>
+ <parameter name="55" type="215"/>
+ </parameters>
+ <code>
+ <load arg="55"/>
+ <push arg="203"/>
+ <call arg="216"/>
+ <store arg="65"/>
+ <load arg="55"/>
+ <push arg="205"/>
+ <call arg="217"/>
+ <store arg="218"/>
+ <load arg="218"/>
+ <dup/>
+ <getasm/>
+ <push arg="219"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="220"/>
+ <set arg="74"/>
+ <call arg="66"/>
+ <set arg="221"/>
+ <dup/>
+ <getasm/>
+ <push arg="412"/>
+ <load arg="65"/>
+ <get arg="74"/>
+ <call arg="223"/>
+ <call arg="66"/>
+ <set arg="224"/>
+ <dup/>
+ <getasm/>
+ <load arg="65"/>
+ <get arg="225"/>
+ <call arg="66"/>
+ <set arg="225"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="413" begin="11" end="16"/>
+ <lne id="414" begin="9" end="18"/>
+ <lne id="415" begin="21" end="21"/>
+ <lne id="416" begin="22" end="22"/>
+ <lne id="417" begin="22" end="23"/>
+ <lne id="418" begin="21" end="24"/>
+ <lne id="419" begin="19" end="26"/>
+ <lne id="420" begin="29" end="29"/>
+ <lne id="421" begin="29" end="30"/>
+ <lne id="422" begin="27" end="32"/>
+ <lne id="410" begin="8" end="33"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="205" begin="7" end="33"/>
+ <lve slot="2" name="203" begin="3" end="33"/>
+ <lve slot="0" name="53" begin="0" end="33"/>
+ <lve slot="1" name="236" begin="0" end="33"/>
+ </localvariabletable>
+ </operation>
+ <operation name="34">
+ <context type="423"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="115"/>
+ <get arg="424"/>
+ <get arg="33"/>
+ <call arg="59"/>
+ <if arg="425"/>
+ <push arg="64"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="115"/>
+ <get arg="424"/>
+ <get arg="33"/>
+ <get arg="387"/>
+ <get arg="341"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="74"/>
+ <load arg="115"/>
+ <get arg="426"/>
+ <call arg="116"/>
+ <call arg="117"/>
+ <if arg="427"/>
+ <load arg="55"/>
+ <call arg="119"/>
+ <enditerate/>
+ <call arg="120"/>
+ <call arg="155"/>
+ <goto arg="200"/>
+ <push arg="64"/>
+ <push arg="8"/>
+ <new/>
+ <call arg="343"/>
+ </code>
+ <linenumbertable>
+ <lne id="428" begin="0" end="0"/>
+ <lne id="429" begin="0" end="1"/>
+ <lne id="430" begin="0" end="2"/>
+ <lne id="431" begin="0" end="3"/>
+ <lne id="432" begin="8" end="8"/>
+ <lne id="433" begin="8" end="9"/>
+ <lne id="434" begin="8" end="10"/>
+ <lne id="435" begin="8" end="11"/>
+ <lne id="436" begin="8" end="12"/>
+ <lne id="437" begin="15" end="15"/>
+ <lne id="438" begin="15" end="16"/>
+ <lne id="439" begin="17" end="17"/>
+ <lne id="440" begin="17" end="18"/>
+ <lne id="441" begin="15" end="19"/>
+ <lne id="442" begin="5" end="24"/>
+ <lne id="443" begin="5" end="25"/>
+ <lne id="444" begin="5" end="26"/>
+ <lne id="445" begin="28" end="31"/>
+ <lne id="446" begin="0" end="31"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="69" begin="14" end="23"/>
+ <lve slot="0" name="53" begin="0" end="31"/>
+ </localvariabletable>
+ </operation>
+ <operation name="447">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="161"/>
+ <call arg="199"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="424"/>
+ <get arg="31"/>
+ <if arg="312"/>
+ <pushf/>
+ <goto arg="448"/>
+ <load arg="55"/>
+ <get arg="424"/>
+ <get arg="33"/>
+ <call arg="59"/>
+ <if arg="342"/>
+ <load arg="55"/>
+ <get arg="33"/>
+ <call arg="59"/>
+ <goto arg="448"/>
+ <pushf/>
+ <call arg="117"/>
+ <if arg="449"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="201"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="99"/>
+ <call arg="202"/>
+ <dup/>
+ <push arg="203"/>
+ <load arg="55"/>
+ <call arg="204"/>
+ <dup/>
+ <push arg="205"/>
+ <push arg="206"/>
+ <push arg="206"/>
+ <new/>
+ <call arg="207"/>
+ <pushf/>
+ <call arg="208"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="450" begin="7" end="7"/>
+ <lne id="451" begin="7" end="8"/>
+ <lne id="452" begin="7" end="9"/>
+ <lne id="453" begin="11" end="11"/>
+ <lne id="454" begin="13" end="13"/>
+ <lne id="455" begin="13" end="14"/>
+ <lne id="456" begin="13" end="15"/>
+ <lne id="457" begin="13" end="16"/>
+ <lne id="458" begin="18" end="18"/>
+ <lne id="459" begin="18" end="19"/>
+ <lne id="460" begin="18" end="20"/>
+ <lne id="461" begin="22" end="22"/>
+ <lne id="462" begin="13" end="22"/>
+ <lne id="463" begin="7" end="22"/>
+ <lne id="464" begin="39" end="41"/>
+ <lne id="465" begin="37" end="42"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="203" begin="6" end="44"/>
+ <lve slot="0" name="53" begin="0" end="45"/>
+ </localvariabletable>
+ </operation>
+ <operation name="466">
+ <context type="6"/>
+ <parameters>
+ <parameter name="55" type="215"/>
+ </parameters>
+ <code>
+ <load arg="55"/>
+ <push arg="203"/>
+ <call arg="216"/>
+ <store arg="65"/>
+ <load arg="55"/>
+ <push arg="205"/>
+ <call arg="217"/>
+ <store arg="218"/>
+ <load arg="218"/>
+ <dup/>
+ <getasm/>
+ <push arg="219"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="220"/>
+ <set arg="74"/>
+ <call arg="66"/>
+ <set arg="221"/>
+ <dup/>
+ <getasm/>
+ <push arg="467"/>
+ <load arg="65"/>
+ <get arg="426"/>
+ <call arg="223"/>
+ <push arg="468"/>
+ <call arg="223"/>
+ <load arg="65"/>
+ <get arg="424"/>
+ <get arg="33"/>
+ <get arg="387"/>
+ <get arg="74"/>
+ <call arg="223"/>
+ <call arg="66"/>
+ <set arg="224"/>
+ <dup/>
+ <getasm/>
+ <load arg="65"/>
+ <get arg="225"/>
+ <call arg="66"/>
+ <set arg="225"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="469" begin="11" end="16"/>
+ <lne id="470" begin="9" end="18"/>
+ <lne id="471" begin="21" end="21"/>
+ <lne id="472" begin="22" end="22"/>
+ <lne id="473" begin="22" end="23"/>
+ <lne id="474" begin="21" end="24"/>
+ <lne id="475" begin="25" end="25"/>
+ <lne id="476" begin="21" end="26"/>
+ <lne id="477" begin="27" end="27"/>
+ <lne id="478" begin="27" end="28"/>
+ <lne id="479" begin="27" end="29"/>
+ <lne id="480" begin="27" end="30"/>
+ <lne id="481" begin="27" end="31"/>
+ <lne id="482" begin="21" end="32"/>
+ <lne id="483" begin="19" end="34"/>
+ <lne id="484" begin="37" end="37"/>
+ <lne id="485" begin="37" end="38"/>
+ <lne id="486" begin="35" end="40"/>
+ <lne id="465" begin="8" end="41"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="205" begin="7" end="41"/>
+ <lve slot="2" name="203" begin="3" end="41"/>
+ <lve slot="0" name="53" begin="0" end="41"/>
+ <lve slot="1" name="236" begin="0" end="41"/>
+ </localvariabletable>
+ </operation>
+ <operation name="32">
+ <context type="487"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="115"/>
+ <get arg="488"/>
+ <get arg="489"/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="25"/>
+ <call arg="59"/>
+ <if arg="62"/>
+ <load arg="55"/>
+ <get arg="25"/>
+ <get arg="21"/>
+ <call arg="59"/>
+ <if arg="60"/>
+ <pusht/>
+ <goto arg="490"/>
+ <pushf/>
+ <goto arg="57"/>
+ <pushf/>
+ </code>
+ <linenumbertable>
+ <lne id="491" begin="0" end="0"/>
+ <lne id="492" begin="0" end="1"/>
+ <lne id="493" begin="0" end="2"/>
+ <lne id="494" begin="4" end="4"/>
+ <lne id="495" begin="4" end="5"/>
+ <lne id="496" begin="4" end="6"/>
+ <lne id="497" begin="8" end="8"/>
+ <lne id="498" begin="8" end="9"/>
+ <lne id="499" begin="8" end="10"/>
+ <lne id="500" begin="8" end="11"/>
+ <lne id="501" begin="13" end="13"/>
+ <lne id="502" begin="15" end="15"/>
+ <lne id="503" begin="8" end="15"/>
+ <lne id="504" begin="17" end="17"/>
+ <lne id="505" begin="4" end="17"/>
+ <lne id="506" begin="0" end="17"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="507" begin="3" end="17"/>
+ <lve slot="0" name="53" begin="0" end="17"/>
+ </localvariabletable>
+ </operation>
+ <operation name="34">
+ <context type="487"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="115"/>
+ <get arg="31"/>
+ <call arg="339"/>
+ <if arg="425"/>
+ <push arg="64"/>
+ <push arg="8"/>
+ <new/>
+ <load arg="115"/>
+ <get arg="488"/>
+ <get arg="489"/>
+ <get arg="25"/>
+ <get arg="21"/>
+ <get arg="341"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="74"/>
+ <load arg="115"/>
+ <get arg="426"/>
+ <call arg="116"/>
+ <call arg="117"/>
+ <if arg="427"/>
+ <load arg="55"/>
+ <call arg="119"/>
+ <enditerate/>
+ <call arg="120"/>
+ <call arg="155"/>
+ <goto arg="200"/>
+ <push arg="64"/>
+ <push arg="8"/>
+ <new/>
+ <call arg="343"/>
+ </code>
+ <linenumbertable>
+ <lne id="508" begin="0" end="0"/>
+ <lne id="509" begin="0" end="1"/>
+ <lne id="510" begin="0" end="2"/>
+ <lne id="511" begin="7" end="7"/>
+ <lne id="512" begin="7" end="8"/>
+ <lne id="513" begin="7" end="9"/>
+ <lne id="514" begin="7" end="10"/>
+ <lne id="515" begin="7" end="11"/>
+ <lne id="516" begin="7" end="12"/>
+ <lne id="517" begin="15" end="15"/>
+ <lne id="518" begin="15" end="16"/>
+ <lne id="519" begin="17" end="17"/>
+ <lne id="520" begin="17" end="18"/>
+ <lne id="521" begin="15" end="19"/>
+ <lne id="522" begin="4" end="24"/>
+ <lne id="523" begin="4" end="25"/>
+ <lne id="524" begin="4" end="26"/>
+ <lne id="525" begin="28" end="31"/>
+ <lne id="526" begin="0" end="31"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="69" begin="14" end="23"/>
+ <lve slot="0" name="53" begin="0" end="31"/>
+ </localvariabletable>
+ </operation>
+ <operation name="527">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="36"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="161"/>
+ <call arg="199"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="31"/>
+ <if arg="311"/>
+ <pushf/>
+ <goto arg="60"/>
+ <load arg="55"/>
+ <get arg="33"/>
+ <call arg="59"/>
+ <call arg="117"/>
+ <if arg="362"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="201"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="101"/>
+ <call arg="202"/>
+ <dup/>
+ <push arg="203"/>
+ <load arg="55"/>
+ <call arg="204"/>
+ <dup/>
+ <push arg="205"/>
+ <push arg="206"/>
+ <push arg="206"/>
+ <new/>
+ <call arg="207"/>
+ <pushf/>
+ <call arg="208"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="528" begin="7" end="7"/>
+ <lne id="529" begin="7" end="8"/>
+ <lne id="530" begin="10" end="10"/>
+ <lne id="531" begin="12" end="12"/>
+ <lne id="532" begin="12" end="13"/>
+ <lne id="533" begin="12" end="14"/>
+ <lne id="534" begin="7" end="14"/>
+ <lne id="535" begin="31" end="33"/>
+ <lne id="536" begin="29" end="34"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="203" begin="6" end="36"/>
+ <lve slot="0" name="53" begin="0" end="37"/>
+ </localvariabletable>
+ </operation>
+ <operation name="537">
+ <context type="6"/>
+ <parameters>
+ <parameter name="55" type="215"/>
+ </parameters>
+ <code>
+ <load arg="55"/>
+ <push arg="203"/>
+ <call arg="216"/>
+ <store arg="65"/>
+ <load arg="55"/>
+ <push arg="205"/>
+ <call arg="217"/>
+ <store arg="218"/>
+ <load arg="218"/>
+ <dup/>
+ <getasm/>
+ <push arg="219"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="220"/>
+ <set arg="74"/>
+ <call arg="66"/>
+ <set arg="221"/>
+ <dup/>
+ <getasm/>
+ <push arg="538"/>
+ <load arg="65"/>
+ <get arg="426"/>
+ <call arg="223"/>
+ <call arg="66"/>
+ <set arg="224"/>
+ <dup/>
+ <getasm/>
+ <load arg="65"/>
+ <get arg="225"/>
+ <call arg="66"/>
+ <set arg="225"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="539" begin="11" end="16"/>
+ <lne id="540" begin="9" end="18"/>
+ <lne id="541" begin="21" end="21"/>
+ <lne id="542" begin="22" end="22"/>
+ <lne id="543" begin="22" end="23"/>
+ <lne id="544" begin="21" end="24"/>
+ <lne id="545" begin="19" end="26"/>
+ <lne id="546" begin="29" end="29"/>
+ <lne id="547" begin="29" end="30"/>
+ <lne id="548" begin="27" end="32"/>
+ <lne id="536" begin="8" end="33"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="205" begin="7" end="33"/>
+ <lve slot="2" name="203" begin="3" end="33"/>
+ <lve slot="0" name="53" begin="0" end="33"/>
+ <lve slot="1" name="236" begin="0" end="33"/>
+ </localvariabletable>
+ </operation>
+ <operation name="549">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="19"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="161"/>
+ <call arg="199"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="21"/>
+ <call arg="59"/>
+ <call arg="117"/>
+ <if arg="200"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="201"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="103"/>
+ <call arg="202"/>
+ <dup/>
+ <push arg="203"/>
+ <load arg="55"/>
+ <call arg="204"/>
+ <dup/>
+ <push arg="205"/>
+ <push arg="206"/>
+ <push arg="206"/>
+ <new/>
+ <call arg="207"/>
+ <pushf/>
+ <call arg="208"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="550" begin="7" end="7"/>
+ <lne id="551" begin="7" end="8"/>
+ <lne id="552" begin="7" end="9"/>
+ <lne id="553" begin="26" end="28"/>
+ <lne id="554" begin="24" end="29"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="203" begin="6" end="31"/>
+ <lve slot="0" name="53" begin="0" end="32"/>
+ </localvariabletable>
+ </operation>
+ <operation name="555">
+ <context type="6"/>
+ <parameters>
+ <parameter name="55" type="215"/>
+ </parameters>
+ <code>
+ <load arg="55"/>
+ <push arg="203"/>
+ <call arg="216"/>
+ <store arg="65"/>
+ <load arg="55"/>
+ <push arg="205"/>
+ <call arg="217"/>
+ <store arg="218"/>
+ <load arg="218"/>
+ <dup/>
+ <getasm/>
+ <push arg="219"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="220"/>
+ <set arg="74"/>
+ <call arg="66"/>
+ <set arg="221"/>
+ <dup/>
+ <getasm/>
+ <push arg="556"/>
+ <load arg="65"/>
+ <get arg="74"/>
+ <call arg="223"/>
+ <call arg="66"/>
+ <set arg="224"/>
+ <dup/>
+ <getasm/>
+ <load arg="65"/>
+ <get arg="225"/>
+ <call arg="66"/>
+ <set arg="225"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="557" begin="11" end="16"/>
+ <lne id="558" begin="9" end="18"/>
+ <lne id="559" begin="21" end="21"/>
+ <lne id="560" begin="22" end="22"/>
+ <lne id="561" begin="22" end="23"/>
+ <lne id="562" begin="21" end="24"/>
+ <lne id="563" begin="19" end="26"/>
+ <lne id="564" begin="29" end="29"/>
+ <lne id="565" begin="29" end="30"/>
+ <lne id="566" begin="27" end="32"/>
+ <lne id="554" begin="8" end="33"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="205" begin="7" end="33"/>
+ <lve slot="2" name="203" begin="3" end="33"/>
+ <lve slot="0" name="53" begin="0" end="33"/>
+ <lve slot="1" name="236" begin="0" end="33"/>
+ </localvariabletable>
+ </operation>
+ <operation name="567">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="19"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="161"/>
+ <call arg="199"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="16"/>
+ <call arg="238"/>
+ <pushi arg="55"/>
+ <call arg="239"/>
+ <call arg="117"/>
+ <if arg="240"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="201"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="105"/>
+ <call arg="202"/>
+ <dup/>
+ <push arg="203"/>
+ <load arg="55"/>
+ <call arg="204"/>
+ <dup/>
+ <push arg="205"/>
+ <push arg="206"/>
+ <push arg="206"/>
+ <new/>
+ <call arg="207"/>
+ <pushf/>
+ <call arg="208"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="568" begin="7" end="7"/>
+ <lne id="569" begin="7" end="8"/>
+ <lne id="570" begin="7" end="9"/>
+ <lne id="571" begin="10" end="10"/>
+ <lne id="572" begin="7" end="11"/>
+ <lne id="573" begin="28" end="30"/>
+ <lne id="574" begin="26" end="31"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="203" begin="6" end="33"/>
+ <lve slot="0" name="53" begin="0" end="34"/>
+ </localvariabletable>
+ </operation>
+ <operation name="575">
+ <context type="6"/>
+ <parameters>
+ <parameter name="55" type="215"/>
+ </parameters>
+ <code>
+ <load arg="55"/>
+ <push arg="203"/>
+ <call arg="216"/>
+ <store arg="65"/>
+ <load arg="55"/>
+ <push arg="205"/>
+ <call arg="217"/>
+ <store arg="218"/>
+ <load arg="218"/>
+ <dup/>
+ <getasm/>
+ <push arg="219"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="220"/>
+ <set arg="74"/>
+ <call arg="66"/>
+ <set arg="221"/>
+ <dup/>
+ <getasm/>
+ <push arg="576"/>
+ <load arg="65"/>
+ <get arg="74"/>
+ <call arg="223"/>
+ <call arg="66"/>
+ <set arg="224"/>
+ <dup/>
+ <getasm/>
+ <load arg="65"/>
+ <get arg="225"/>
+ <call arg="66"/>
+ <set arg="225"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="577" begin="11" end="16"/>
+ <lne id="578" begin="9" end="18"/>
+ <lne id="579" begin="21" end="21"/>
+ <lne id="580" begin="22" end="22"/>
+ <lne id="581" begin="22" end="23"/>
+ <lne id="582" begin="21" end="24"/>
+ <lne id="583" begin="19" end="26"/>
+ <lne id="584" begin="29" end="29"/>
+ <lne id="585" begin="29" end="30"/>
+ <lne id="586" begin="27" end="32"/>
+ <lne id="574" begin="8" end="33"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="205" begin="7" end="33"/>
+ <lve slot="2" name="203" begin="3" end="33"/>
+ <lve slot="0" name="53" begin="0" end="33"/>
+ <lve slot="1" name="236" begin="0" end="33"/>
+ </localvariabletable>
+ </operation>
+ <operation name="587">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="30"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="161"/>
+ <call arg="199"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="33"/>
+ <call arg="59"/>
+ <if arg="588"/>
+ <load arg="55"/>
+ <get arg="33"/>
+ <push arg="589"/>
+ <push arg="24"/>
+ <findme/>
+ <call arg="261"/>
+ <if arg="590"/>
+ <pushf/>
+ <goto arg="362"/>
+ <pushf/>
+ <load arg="55"/>
+ <get arg="385"/>
+ <iterate/>
+ <store arg="65"/>
+ <load arg="65"/>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="261"/>
+ <call arg="386"/>
+ <enditerate/>
+ <load arg="55"/>
+ <get arg="33"/>
+ <get arg="591"/>
+ <call arg="592"/>
+ <call arg="339"/>
+ <goto arg="593"/>
+ <pushf/>
+ <call arg="117"/>
+ <if arg="594"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="201"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="107"/>
+ <call arg="202"/>
+ <dup/>
+ <push arg="203"/>
+ <load arg="55"/>
+ <call arg="204"/>
+ <dup/>
+ <push arg="205"/>
+ <push arg="206"/>
+ <push arg="206"/>
+ <new/>
+ <call arg="207"/>
+ <pushf/>
+ <call arg="208"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="595" begin="7" end="7"/>
+ <lne id="596" begin="7" end="8"/>
+ <lne id="597" begin="7" end="9"/>
+ <lne id="598" begin="11" end="11"/>
+ <lne id="599" begin="11" end="12"/>
+ <lne id="600" begin="13" end="15"/>
+ <lne id="601" begin="11" end="16"/>
+ <lne id="602" begin="18" end="18"/>
+ <lne id="603" begin="21" end="21"/>
+ <lne id="604" begin="21" end="22"/>
+ <lne id="605" begin="25" end="25"/>
+ <lne id="606" begin="26" end="28"/>
+ <lne id="607" begin="25" end="29"/>
+ <lne id="608" begin="20" end="31"/>
+ <lne id="609" begin="32" end="32"/>
+ <lne id="610" begin="32" end="33"/>
+ <lne id="611" begin="32" end="34"/>
+ <lne id="612" begin="20" end="35"/>
+ <lne id="613" begin="20" end="36"/>
+ <lne id="614" begin="11" end="36"/>
+ <lne id="615" begin="38" end="38"/>
+ <lne id="616" begin="7" end="38"/>
+ <lne id="617" begin="55" end="57"/>
+ <lne id="618" begin="53" end="58"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="69" begin="24" end="30"/>
+ <lve slot="1" name="203" begin="6" end="60"/>
+ <lve slot="0" name="53" begin="0" end="61"/>
+ </localvariabletable>
+ </operation>
+ <operation name="619">
+ <context type="6"/>
+ <parameters>
+ <parameter name="55" type="215"/>
+ </parameters>
+ <code>
+ <load arg="55"/>
+ <push arg="203"/>
+ <call arg="216"/>
+ <store arg="65"/>
+ <load arg="55"/>
+ <push arg="205"/>
+ <call arg="217"/>
+ <store arg="218"/>
+ <load arg="218"/>
+ <dup/>
+ <getasm/>
+ <push arg="219"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="620"/>
+ <set arg="74"/>
+ <call arg="66"/>
+ <set arg="221"/>
+ <dup/>
+ <getasm/>
+ <push arg="621"/>
+ <load arg="65"/>
+ <get arg="74"/>
+ <call arg="223"/>
+ <push arg="622"/>
+ <call arg="223"/>
+ <call arg="66"/>
+ <set arg="224"/>
+ <dup/>
+ <getasm/>
+ <load arg="65"/>
+ <get arg="225"/>
+ <call arg="66"/>
+ <set arg="225"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="623" begin="11" end="16"/>
+ <lne id="624" begin="9" end="18"/>
+ <lne id="625" begin="21" end="21"/>
+ <lne id="626" begin="22" end="22"/>
+ <lne id="627" begin="22" end="23"/>
+ <lne id="628" begin="21" end="24"/>
+ <lne id="629" begin="25" end="25"/>
+ <lne id="630" begin="21" end="26"/>
+ <lne id="631" begin="19" end="28"/>
+ <lne id="632" begin="31" end="31"/>
+ <lne id="633" begin="31" end="32"/>
+ <lne id="634" begin="29" end="34"/>
+ <lne id="618" begin="8" end="35"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="205" begin="7" end="35"/>
+ <lve slot="2" name="203" begin="3" end="35"/>
+ <lve slot="0" name="53" begin="0" end="35"/>
+ <lve slot="1" name="236" begin="0" end="35"/>
+ </localvariabletable>
+ </operation>
+ <operation name="635">
+ <context type="6"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="30"/>
+ <push arg="15"/>
+ <findme/>
+ <push arg="161"/>
+ <call arg="199"/>
+ <iterate/>
+ <store arg="55"/>
+ <load arg="55"/>
+ <get arg="33"/>
+ <call arg="59"/>
+ <if arg="200"/>
+ <pushf/>
+ <load arg="55"/>
+ <get arg="385"/>
+ <iterate/>
+ <store arg="65"/>
+ <load arg="65"/>
+ <push arg="35"/>
+ <push arg="15"/>
+ <findme/>
+ <call arg="261"/>
+ <call arg="386"/>
+ <enditerate/>
+ <load arg="55"/>
+ <get arg="33"/>
+ <get arg="387"/>
+ <push arg="27"/>
+ <push arg="24"/>
+ <findme/>
+ <call arg="261"/>
+ <call arg="262"/>
+ <goto arg="389"/>
+ <pushf/>
+ <call arg="117"/>
+ <if arg="390"/>
+ <getasm/>
+ <get arg="1"/>
+ <push arg="201"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="109"/>
+ <call arg="202"/>
+ <dup/>
+ <push arg="203"/>
+ <load arg="55"/>
+ <call arg="204"/>
+ <dup/>
+ <push arg="205"/>
+ <push arg="206"/>
+ <push arg="206"/>
+ <new/>
+ <call arg="207"/>
+ <pushf/>
+ <call arg="208"/>
+ <enditerate/>
+ </code>
+ <linenumbertable>
+ <lne id="636" begin="7" end="7"/>
+ <lne id="637" begin="7" end="8"/>
+ <lne id="638" begin="7" end="9"/>
+ <lne id="639" begin="12" end="12"/>
+ <lne id="640" begin="12" end="13"/>
+ <lne id="641" begin="16" end="16"/>
+ <lne id="642" begin="17" end="19"/>
+ <lne id="643" begin="16" end="20"/>
+ <lne id="644" begin="11" end="22"/>
+ <lne id="645" begin="23" end="23"/>
+ <lne id="646" begin="23" end="24"/>
+ <lne id="647" begin="23" end="25"/>
+ <lne id="648" begin="26" end="28"/>
+ <lne id="649" begin="23" end="29"/>
+ <lne id="650" begin="11" end="30"/>
+ <lne id="651" begin="32" end="32"/>
+ <lne id="652" begin="7" end="32"/>
+ <lne id="653" begin="49" end="51"/>
+ <lne id="654" begin="47" end="52"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="69" begin="15" end="21"/>
+ <lve slot="1" name="203" begin="6" end="54"/>
+ <lve slot="0" name="53" begin="0" end="55"/>
+ </localvariabletable>
+ </operation>
+ <operation name="655">
+ <context type="6"/>
+ <parameters>
+ <parameter name="55" type="215"/>
+ </parameters>
+ <code>
+ <load arg="55"/>
+ <push arg="203"/>
+ <call arg="216"/>
+ <store arg="65"/>
+ <load arg="55"/>
+ <push arg="205"/>
+ <call arg="217"/>
+ <store arg="218"/>
+ <load arg="218"/>
+ <dup/>
+ <getasm/>
+ <push arg="219"/>
+ <push arg="8"/>
+ <new/>
+ <dup/>
+ <push arg="220"/>
+ <set arg="74"/>
+ <call arg="66"/>
+ <set arg="221"/>
+ <dup/>
+ <getasm/>
+ <push arg="621"/>
+ <load arg="65"/>
+ <get arg="74"/>
+ <call arg="223"/>
+ <push arg="656"/>
+ <call arg="223"/>
+ <load arg="65"/>
+ <get arg="33"/>
+ <get arg="387"/>
+ <get arg="74"/>
+ <call arg="223"/>
+ <push arg="657"/>
+ <call arg="223"/>
+ <call arg="66"/>
+ <set arg="224"/>
+ <dup/>
+ <getasm/>
+ <load arg="65"/>
+ <get arg="225"/>
+ <call arg="66"/>
+ <set arg="225"/>
+ <pop/>
+ </code>
+ <linenumbertable>
+ <lne id="658" begin="11" end="16"/>
+ <lne id="659" begin="9" end="18"/>
+ <lne id="660" begin="21" end="21"/>
+ <lne id="661" begin="22" end="22"/>
+ <lne id="662" begin="22" end="23"/>
+ <lne id="663" begin="21" end="24"/>
+ <lne id="664" begin="25" end="25"/>
+ <lne id="665" begin="21" end="26"/>
+ <lne id="666" begin="27" end="27"/>
+ <lne id="667" begin="27" end="28"/>
+ <lne id="668" begin="27" end="29"/>
+ <lne id="669" begin="27" end="30"/>
+ <lne id="670" begin="21" end="31"/>
+ <lne id="671" begin="32" end="32"/>
+ <lne id="672" begin="21" end="33"/>
+ <lne id="673" begin="19" end="35"/>
+ <lne id="674" begin="38" end="38"/>
+ <lne id="675" begin="38" end="39"/>
+ <lne id="676" begin="36" end="41"/>
+ <lne id="654" begin="8" end="42"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="205" begin="7" end="42"/>
+ <lve slot="2" name="203" begin="3" end="42"/>
+ <lve slot="0" name="53" begin="0" end="42"/>
+ <lve slot="1" name="236" begin="0" end="42"/>
+ </localvariabletable>
+ </operation>
+</asm>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/contents.list b/plugins/org.eclipse.gmt.tcs.dsls/resources/contents.list
new file mode 100644
index 0000000..d0498b2
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/contents.list
@@ -0,0 +1,34 @@
+Annotation/Metamodel/Annotation.ecore
+Annotation/Syntax/Annotation-parser.jar
+Annotation/Compiler/ApplyAnnotations2Ecore.asm
+
+TCS/Metamodel/TCS.ecore
+TCS/Syntax/TCS-parser.jar
+TCS/Syntax/TCS-TCS.xmi
+TCS/Compiler/TCS2ANTLR.asm
+TCS/Compiler/TCS2ANTLRv3Actions.asm
+TCS/WFR/TCS2Problem.asm
+TCS/Editor/TCS-Editor.xmi
+TCS/Outline/TCS-Outline.xmi
+
+ANTLR/Metamodel/ANTLR.ecore
+ANTLR/Syntax/ANTLR-TCS.xmi
+
+KM3-2005/Metamodel/KM3.ecore
+KM3-2005/Syntax/KM3-parser.jar
+KM3-2005/Syntax/KM3-TCS.xmi
+KM3-2005/Helpers/KM3Helpers.asm
+KM3-2005/WFR/KM32Problem.asm
+KM3-2005/Compiler/KM32Ecore.asm
+KM3-2005/Editor/KM3-Editor.xmi
+KM3-2005/Outline/KM3-Outline.xmi
+
+Editor/Metamodel/Editor.ecore
+Editor/Compiler/TCS2Editor.asm
+
+Outline/Metamodel/Outline.ecore
+Outline/Compiler/KM32Outline.asm
+
+Problem/Metamodel/Problem.ecore
+
+libs/strings.asm \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/resources/libs/strings.asm b/plugins/org.eclipse.gmt.tcs.dsls/resources/libs/strings.asm
new file mode 100644
index 0000000..4ca5c0d
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/resources/libs/strings.asm
@@ -0,0 +1,2403 @@
+<?xml version = '1.0' encoding = 'ISO-8859-1' ?>
+<asm name="0">
+ <cp>
+ <constant value="strings"/>
+ <constant value="startsWith"/>
+ <constant value="S"/>
+ <constant value="1"/>
+ <constant value="J.size():J"/>
+ <constant value="0"/>
+ <constant value="J.&lt;=(J):J"/>
+ <constant value="8"/>
+ <constant value="15"/>
+ <constant value="J.substring(JJ):J"/>
+ <constant value="J.=(J):J"/>
+ <constant value="8:12-8:13"/>
+ <constant value="8:12-8:20"/>
+ <constant value="8:24-8:28"/>
+ <constant value="8:24-8:35"/>
+ <constant value="8:12-8:35"/>
+ <constant value="11:17-11:22"/>
+ <constant value="9:17-9:21"/>
+ <constant value="9:32-9:33"/>
+ <constant value="9:35-9:36"/>
+ <constant value="9:35-9:43"/>
+ <constant value="9:17-9:44"/>
+ <constant value="9:47-9:48"/>
+ <constant value="9:17-9:48"/>
+ <constant value="8:9-12:14"/>
+ <constant value="self"/>
+ <constant value="s"/>
+ <constant value="firstToUpper"/>
+ <constant value="J.toUpper():J"/>
+ <constant value="2"/>
+ <constant value="J.+(J):J"/>
+ <constant value="16:9-16:13"/>
+ <constant value="16:24-16:25"/>
+ <constant value="16:27-16:28"/>
+ <constant value="16:9-16:29"/>
+ <constant value="16:9-16:39"/>
+ <constant value="16:42-16:46"/>
+ <constant value="16:57-16:58"/>
+ <constant value="16:60-16:64"/>
+ <constant value="16:60-16:71"/>
+ <constant value="16:42-16:72"/>
+ <constant value="16:9-16:72"/>
+ <constant value="firstToLower"/>
+ <constant value="J.toLower():J"/>
+ <constant value="19:9-19:13"/>
+ <constant value="19:24-19:25"/>
+ <constant value="19:27-19:28"/>
+ <constant value="19:9-19:29"/>
+ <constant value="19:9-19:39"/>
+ <constant value="19:42-19:46"/>
+ <constant value="19:57-19:58"/>
+ <constant value="19:60-19:64"/>
+ <constant value="19:60-19:71"/>
+ <constant value="19:42-19:72"/>
+ <constant value="19:9-19:72"/>
+ <constant value="indexOf"/>
+ <constant value="J.toSequence():J"/>
+ <constant value="J.indexOf(J):J"/>
+ <constant value="85:9-85:13"/>
+ <constant value="85:9-85:26"/>
+ <constant value="85:36-85:37"/>
+ <constant value="85:9-85:38"/>
+ <constant value="lastIndexOf"/>
+ <constant value="Tuple"/>
+ <constant value="#native"/>
+ <constant value="J.-():J"/>
+ <constant value="ret"/>
+ <constant value="index"/>
+ <constant value="3"/>
+ <constant value="28"/>
+ <constant value="30"/>
+ <constant value="88:103-88:104"/>
+ <constant value="88:102-88:104"/>
+ <constant value="88:96-88:104"/>
+ <constant value="88:114-88:115"/>
+ <constant value="88:106-88:115"/>
+ <constant value="88:89-88:116"/>
+ <constant value="88:39-88:116"/>
+ <constant value="88:9-88:13"/>
+ <constant value="88:9-88:26"/>
+ <constant value="90:34-90:35"/>
+ <constant value="90:38-90:39"/>
+ <constant value="90:34-90:39"/>
+ <constant value="93:33-93:36"/>
+ <constant value="93:33-93:40"/>
+ <constant value="91:33-91:36"/>
+ <constant value="91:33-91:42"/>
+ <constant value="90:31-94:30"/>
+ <constant value="90:25-94:30"/>
+ <constant value="95:33-95:36"/>
+ <constant value="95:33-95:42"/>
+ <constant value="95:45-95:46"/>
+ <constant value="95:33-95:46"/>
+ <constant value="95:25-95:46"/>
+ <constant value="89:17-96:18"/>
+ <constant value="88:9-97:10"/>
+ <constant value="88:9-97:14"/>
+ <constant value="e"/>
+ <constant value="acc"/>
+ <constant value="replaceAll"/>
+ <constant value=""/>
+ <constant value="4"/>
+ <constant value="14"/>
+ <constant value="17"/>
+ <constant value="100:54-100:56"/>
+ <constant value="100:39-100:56"/>
+ <constant value="100:9-100:13"/>
+ <constant value="100:9-100:26"/>
+ <constant value="101:20-101:21"/>
+ <constant value="101:24-101:28"/>
+ <constant value="101:20-101:28"/>
+ <constant value="104:25-104:28"/>
+ <constant value="104:31-104:32"/>
+ <constant value="104:25-104:32"/>
+ <constant value="102:25-102:28"/>
+ <constant value="102:31-102:33"/>
+ <constant value="102:25-102:33"/>
+ <constant value="101:17-105:22"/>
+ <constant value="100:9-106:10"/>
+ <constant value="what"/>
+ <constant value="by"/>
+ <constant value="reverse"/>
+ <constant value="109:54-109:56"/>
+ <constant value="109:39-109:56"/>
+ <constant value="109:9-109:13"/>
+ <constant value="109:9-109:26"/>
+ <constant value="110:17-110:18"/>
+ <constant value="110:21-110:24"/>
+ <constant value="110:17-110:24"/>
+ <constant value="109:9-111:10"/>
+ <constant value="toIntegerFromRoman"/>
+ <constant value="Sequence"/>
+ <constant value="I"/>
+ <constant value="CJ.including(J):CJ"/>
+ <constant value="V"/>
+ <constant value="X"/>
+ <constant value="L"/>
+ <constant value="C"/>
+ <constant value="D"/>
+ <constant value="M"/>
+ <constant value="5"/>
+ <constant value="10"/>
+ <constant value="50"/>
+ <constant value="100"/>
+ <constant value="500"/>
+ <constant value="1000"/>
+ <constant value="prev"/>
+ <constant value="J.at(J):J"/>
+ <constant value="102"/>
+ <constant value="J.&lt;(J):J"/>
+ <constant value="86"/>
+ <constant value="101"/>
+ <constant value="J.-(J):J"/>
+ <constant value="113"/>
+ <constant value="130:47-130:50"/>
+ <constant value="130:52-130:55"/>
+ <constant value="130:57-130:60"/>
+ <constant value="130:62-130:65"/>
+ <constant value="130:67-130:70"/>
+ <constant value="130:72-130:75"/>
+ <constant value="130:77-130:80"/>
+ <constant value="130:37-130:81"/>
+ <constant value="130:13-130:81"/>
+ <constant value="131:48-131:49"/>
+ <constant value="131:51-131:52"/>
+ <constant value="131:54-131:56"/>
+ <constant value="131:58-131:60"/>
+ <constant value="131:62-131:65"/>
+ <constant value="131:67-131:70"/>
+ <constant value="131:72-131:76"/>
+ <constant value="131:38-131:77"/>
+ <constant value="131:13-131:77"/>
+ <constant value="132:152-132:153"/>
+ <constant value="132:146-132:153"/>
+ <constant value="132:163-132:164"/>
+ <constant value="132:162-132:164"/>
+ <constant value="132:155-132:164"/>
+ <constant value="132:139-132:165"/>
+ <constant value="132:90-132:165"/>
+ <constant value="132:60-132:64"/>
+ <constant value="132:60-132:77"/>
+ <constant value="133:37-133:39"/>
+ <constant value="133:43-133:45"/>
+ <constant value="133:55-133:56"/>
+ <constant value="133:43-133:57"/>
+ <constant value="133:37-133:58"/>
+ <constant value="133:21-133:58"/>
+ <constant value="134:20-134:23"/>
+ <constant value="134:20-134:28"/>
+ <constant value="134:32-134:33"/>
+ <constant value="134:31-134:33"/>
+ <constant value="134:20-134:33"/>
+ <constant value="136:25-136:28"/>
+ <constant value="136:25-136:33"/>
+ <constant value="136:36-136:39"/>
+ <constant value="136:25-136:39"/>
+ <constant value="139:38-139:41"/>
+ <constant value="139:38-139:45"/>
+ <constant value="139:48-139:51"/>
+ <constant value="139:48-139:56"/>
+ <constant value="139:38-139:56"/>
+ <constant value="139:32-139:56"/>
+ <constant value="139:65-139:68"/>
+ <constant value="139:58-139:68"/>
+ <constant value="139:25-139:69"/>
+ <constant value="137:38-137:41"/>
+ <constant value="137:38-137:45"/>
+ <constant value="137:48-137:51"/>
+ <constant value="137:48-137:56"/>
+ <constant value="137:38-137:56"/>
+ <constant value="137:32-137:56"/>
+ <constant value="137:65-137:68"/>
+ <constant value="137:58-137:68"/>
+ <constant value="137:25-137:69"/>
+ <constant value="136:22-140:22"/>
+ <constant value="135:38-135:39"/>
+ <constant value="135:32-135:39"/>
+ <constant value="135:48-135:51"/>
+ <constant value="135:41-135:51"/>
+ <constant value="135:25-135:52"/>
+ <constant value="134:17-140:28"/>
+ <constant value="133:17-140:28"/>
+ <constant value="132:60-141:10"/>
+ <constant value="132:13-141:10"/>
+ <constant value="141:14-141:15"/>
+ <constant value="141:14-141:19"/>
+ <constant value="141:22-141:23"/>
+ <constant value="141:22-141:28"/>
+ <constant value="141:14-141:28"/>
+ <constant value="132:9-141:28"/>
+ <constant value="131:9-141:28"/>
+ <constant value="130:9-141:28"/>
+ <constant value="val"/>
+ <constant value="r"/>
+ <constant value="rv"/>
+ <constant value="rd"/>
+ <constant value="toBase64"/>
+ <constant value="A"/>
+ <constant value="B"/>
+ <constant value="E"/>
+ <constant value="F"/>
+ <constant value="G"/>
+ <constant value="H"/>
+ <constant value="J"/>
+ <constant value="K"/>
+ <constant value="N"/>
+ <constant value="O"/>
+ <constant value="P"/>
+ <constant value="Q"/>
+ <constant value="R"/>
+ <constant value="T"/>
+ <constant value="U"/>
+ <constant value="W"/>
+ <constant value="Y"/>
+ <constant value="Z"/>
+ <constant value="a"/>
+ <constant value="b"/>
+ <constant value="c"/>
+ <constant value="d"/>
+ <constant value="f"/>
+ <constant value="g"/>
+ <constant value="h"/>
+ <constant value="i"/>
+ <constant value="j"/>
+ <constant value="k"/>
+ <constant value="l"/>
+ <constant value="m"/>
+ <constant value="n"/>
+ <constant value="o"/>
+ <constant value="p"/>
+ <constant value="q"/>
+ <constant value="t"/>
+ <constant value="u"/>
+ <constant value="v"/>
+ <constant value="w"/>
+ <constant value="x"/>
+ <constant value="y"/>
+ <constant value="z"/>
+ <constant value="6"/>
+ <constant value="7"/>
+ <constant value="9"/>
+ <constant value="+"/>
+ <constant value="/"/>
+ <constant value="state"/>
+ <constant value="latent"/>
+ <constant value="J.toByte():J"/>
+ <constant value="236"/>
+ <constant value="205"/>
+ <constant value="64"/>
+ <constant value="J.div(J):J"/>
+ <constant value="J.mod(J):J"/>
+ <constant value="235"/>
+ <constant value="16"/>
+ <constant value="J.*(J):J"/>
+ <constant value="263"/>
+ <constant value="290"/>
+ <constant value="281"/>
+ <constant value="289"/>
+ <constant value="="/>
+ <constant value="298"/>
+ <constant value="=="/>
+ <constant value="170:51-170:54"/>
+ <constant value="170:56-170:59"/>
+ <constant value="170:61-170:64"/>
+ <constant value="170:66-170:69"/>
+ <constant value="170:71-170:74"/>
+ <constant value="170:76-170:79"/>
+ <constant value="170:81-170:84"/>
+ <constant value="170:86-170:89"/>
+ <constant value="170:91-170:94"/>
+ <constant value="170:96-170:99"/>
+ <constant value="170:101-170:104"/>
+ <constant value="170:106-170:109"/>
+ <constant value="170:111-170:114"/>
+ <constant value="170:116-170:119"/>
+ <constant value="170:121-170:124"/>
+ <constant value="170:126-170:129"/>
+ <constant value="170:131-170:134"/>
+ <constant value="170:136-170:139"/>
+ <constant value="170:141-170:144"/>
+ <constant value="170:146-170:149"/>
+ <constant value="170:151-170:154"/>
+ <constant value="170:156-170:159"/>
+ <constant value="170:161-170:164"/>
+ <constant value="170:166-170:169"/>
+ <constant value="170:171-170:174"/>
+ <constant value="170:176-170:179"/>
+ <constant value="170:181-170:184"/>
+ <constant value="170:186-170:189"/>
+ <constant value="170:191-170:194"/>
+ <constant value="170:196-170:199"/>
+ <constant value="170:201-170:204"/>
+ <constant value="170:206-170:209"/>
+ <constant value="170:211-170:214"/>
+ <constant value="170:216-170:219"/>
+ <constant value="170:221-170:224"/>
+ <constant value="170:226-170:229"/>
+ <constant value="170:231-170:234"/>
+ <constant value="170:236-170:239"/>
+ <constant value="170:241-170:244"/>
+ <constant value="170:246-170:249"/>
+ <constant value="170:251-170:254"/>
+ <constant value="170:256-170:259"/>
+ <constant value="170:261-170:264"/>
+ <constant value="170:266-170:269"/>
+ <constant value="170:271-170:274"/>
+ <constant value="170:276-170:279"/>
+ <constant value="170:281-170:284"/>
+ <constant value="170:286-170:289"/>
+ <constant value="170:291-170:294"/>
+ <constant value="170:296-170:299"/>
+ <constant value="170:301-170:304"/>
+ <constant value="170:306-170:309"/>
+ <constant value="170:311-170:314"/>
+ <constant value="170:316-170:319"/>
+ <constant value="170:321-170:324"/>
+ <constant value="170:326-170:329"/>
+ <constant value="170:331-170:334"/>
+ <constant value="170:336-170:339"/>
+ <constant value="170:341-170:344"/>
+ <constant value="170:346-170:349"/>
+ <constant value="170:351-170:354"/>
+ <constant value="170:356-170:359"/>
+ <constant value="170:361-170:364"/>
+ <constant value="170:366-170:369"/>
+ <constant value="170:41-170:370"/>
+ <constant value="170:13-170:370"/>
+ <constant value="173:119-173:121"/>
+ <constant value="173:113-173:121"/>
+ <constant value="173:131-173:132"/>
+ <constant value="173:123-173:132"/>
+ <constant value="173:143-173:144"/>
+ <constant value="173:134-173:144"/>
+ <constant value="173:106-173:145"/>
+ <constant value="173:39-173:145"/>
+ <constant value="171:78-171:82"/>
+ <constant value="171:78-171:95"/>
+ <constant value="172:33-172:34"/>
+ <constant value="172:33-172:43"/>
+ <constant value="171:78-173:26"/>
+ <constant value="174:20-174:23"/>
+ <constant value="174:20-174:29"/>
+ <constant value="174:32-174:33"/>
+ <constant value="174:20-174:33"/>
+ <constant value="176:25-176:28"/>
+ <constant value="176:25-176:34"/>
+ <constant value="176:37-176:38"/>
+ <constant value="176:25-176:38"/>
+ <constant value="179:38-179:41"/>
+ <constant value="179:38-179:45"/>
+ <constant value="179:48-179:54"/>
+ <constant value="179:59-179:62"/>
+ <constant value="179:59-179:69"/>
+ <constant value="179:73-179:74"/>
+ <constant value="179:79-179:81"/>
+ <constant value="179:73-179:81"/>
+ <constant value="179:59-179:82"/>
+ <constant value="179:85-179:86"/>
+ <constant value="179:59-179:86"/>
+ <constant value="179:48-179:87"/>
+ <constant value="179:38-179:87"/>
+ <constant value="179:90-179:96"/>
+ <constant value="179:101-179:102"/>
+ <constant value="179:107-179:109"/>
+ <constant value="179:101-179:109"/>
+ <constant value="179:112-179:113"/>
+ <constant value="179:101-179:113"/>
+ <constant value="179:90-179:114"/>
+ <constant value="179:38-179:114"/>
+ <constant value="179:32-179:114"/>
+ <constant value="179:124-179:125"/>
+ <constant value="179:116-179:125"/>
+ <constant value="179:136-179:137"/>
+ <constant value="179:127-179:137"/>
+ <constant value="179:25-179:138"/>
+ <constant value="177:38-177:41"/>
+ <constant value="177:38-177:45"/>
+ <constant value="177:48-177:54"/>
+ <constant value="177:59-177:62"/>
+ <constant value="177:59-177:69"/>
+ <constant value="177:73-177:74"/>
+ <constant value="177:79-177:81"/>
+ <constant value="177:73-177:81"/>
+ <constant value="177:59-177:82"/>
+ <constant value="177:85-177:86"/>
+ <constant value="177:59-177:86"/>
+ <constant value="177:48-177:87"/>
+ <constant value="177:38-177:87"/>
+ <constant value="177:32-177:87"/>
+ <constant value="177:97-177:98"/>
+ <constant value="177:89-177:98"/>
+ <constant value="177:110-177:111"/>
+ <constant value="177:116-177:118"/>
+ <constant value="177:110-177:118"/>
+ <constant value="177:122-177:123"/>
+ <constant value="177:109-177:123"/>
+ <constant value="177:100-177:123"/>
+ <constant value="177:25-177:124"/>
+ <constant value="176:22-180:22"/>
+ <constant value="175:38-175:41"/>
+ <constant value="175:38-175:45"/>
+ <constant value="175:48-175:54"/>
+ <constant value="175:59-175:60"/>
+ <constant value="175:65-175:66"/>
+ <constant value="175:59-175:66"/>
+ <constant value="175:69-175:70"/>
+ <constant value="175:59-175:70"/>
+ <constant value="175:48-175:71"/>
+ <constant value="175:38-175:71"/>
+ <constant value="175:32-175:71"/>
+ <constant value="175:81-175:82"/>
+ <constant value="175:73-175:82"/>
+ <constant value="175:94-175:95"/>
+ <constant value="175:100-175:101"/>
+ <constant value="175:94-175:101"/>
+ <constant value="175:105-175:107"/>
+ <constant value="175:93-175:107"/>
+ <constant value="175:84-175:107"/>
+ <constant value="175:25-175:108"/>
+ <constant value="174:17-180:28"/>
+ <constant value="171:78-181:10"/>
+ <constant value="171:13-181:10"/>
+ <constant value="182:9-182:10"/>
+ <constant value="182:9-182:14"/>
+ <constant value="183:12-183:13"/>
+ <constant value="183:12-183:19"/>
+ <constant value="183:22-183:23"/>
+ <constant value="183:12-183:23"/>
+ <constant value="185:17-185:18"/>
+ <constant value="185:17-185:24"/>
+ <constant value="185:27-185:28"/>
+ <constant value="185:17-185:28"/>
+ <constant value="188:17-188:19"/>
+ <constant value="186:17-186:23"/>
+ <constant value="186:27-186:28"/>
+ <constant value="186:27-186:35"/>
+ <constant value="186:38-186:39"/>
+ <constant value="186:27-186:39"/>
+ <constant value="186:17-186:40"/>
+ <constant value="186:43-186:46"/>
+ <constant value="186:17-186:46"/>
+ <constant value="185:14-189:14"/>
+ <constant value="184:17-184:23"/>
+ <constant value="184:27-184:28"/>
+ <constant value="184:27-184:35"/>
+ <constant value="184:38-184:39"/>
+ <constant value="184:27-184:39"/>
+ <constant value="184:17-184:40"/>
+ <constant value="184:43-184:47"/>
+ <constant value="184:17-184:47"/>
+ <constant value="183:9-189:20"/>
+ <constant value="182:9-189:20"/>
+ <constant value="171:9-189:20"/>
+ <constant value="170:9-189:20"/>
+ <constant value="digits"/>
+ <constant value="fromBase64"/>
+ <constant value="280"/>
+ <constant value="262"/>
+ <constant value="234"/>
+ <constant value="206"/>
+ <constant value="J.toChar():J"/>
+ <constant value="233"/>
+ <constant value="261"/>
+ <constant value="279"/>
+ <constant value="192:51-192:54"/>
+ <constant value="192:56-192:59"/>
+ <constant value="192:61-192:64"/>
+ <constant value="192:66-192:69"/>
+ <constant value="192:71-192:74"/>
+ <constant value="192:76-192:79"/>
+ <constant value="192:81-192:84"/>
+ <constant value="192:86-192:89"/>
+ <constant value="192:91-192:94"/>
+ <constant value="192:96-192:99"/>
+ <constant value="192:101-192:104"/>
+ <constant value="192:106-192:109"/>
+ <constant value="192:111-192:114"/>
+ <constant value="192:116-192:119"/>
+ <constant value="192:121-192:124"/>
+ <constant value="192:126-192:129"/>
+ <constant value="192:131-192:134"/>
+ <constant value="192:136-192:139"/>
+ <constant value="192:141-192:144"/>
+ <constant value="192:146-192:149"/>
+ <constant value="192:151-192:154"/>
+ <constant value="192:156-192:159"/>
+ <constant value="192:161-192:164"/>
+ <constant value="192:166-192:169"/>
+ <constant value="192:171-192:174"/>
+ <constant value="192:176-192:179"/>
+ <constant value="192:181-192:184"/>
+ <constant value="192:186-192:189"/>
+ <constant value="192:191-192:194"/>
+ <constant value="192:196-192:199"/>
+ <constant value="192:201-192:204"/>
+ <constant value="192:206-192:209"/>
+ <constant value="192:211-192:214"/>
+ <constant value="192:216-192:219"/>
+ <constant value="192:221-192:224"/>
+ <constant value="192:226-192:229"/>
+ <constant value="192:231-192:234"/>
+ <constant value="192:236-192:239"/>
+ <constant value="192:241-192:244"/>
+ <constant value="192:246-192:249"/>
+ <constant value="192:251-192:254"/>
+ <constant value="192:256-192:259"/>
+ <constant value="192:261-192:264"/>
+ <constant value="192:266-192:269"/>
+ <constant value="192:271-192:274"/>
+ <constant value="192:276-192:279"/>
+ <constant value="192:281-192:284"/>
+ <constant value="192:286-192:289"/>
+ <constant value="192:291-192:294"/>
+ <constant value="192:296-192:299"/>
+ <constant value="192:301-192:304"/>
+ <constant value="192:306-192:309"/>
+ <constant value="192:311-192:314"/>
+ <constant value="192:316-192:319"/>
+ <constant value="192:321-192:324"/>
+ <constant value="192:326-192:329"/>
+ <constant value="192:331-192:334"/>
+ <constant value="192:336-192:339"/>
+ <constant value="192:341-192:344"/>
+ <constant value="192:346-192:349"/>
+ <constant value="192:351-192:354"/>
+ <constant value="192:356-192:359"/>
+ <constant value="192:361-192:364"/>
+ <constant value="192:366-192:369"/>
+ <constant value="192:371-192:374"/>
+ <constant value="192:41-192:375"/>
+ <constant value="192:13-192:375"/>
+ <constant value="195:119-195:121"/>
+ <constant value="195:113-195:121"/>
+ <constant value="195:131-195:132"/>
+ <constant value="195:123-195:132"/>
+ <constant value="195:143-195:144"/>
+ <constant value="195:134-195:144"/>
+ <constant value="195:106-195:145"/>
+ <constant value="195:39-195:145"/>
+ <constant value="193:78-193:82"/>
+ <constant value="193:78-193:95"/>
+ <constant value="194:33-194:39"/>
+ <constant value="194:49-194:50"/>
+ <constant value="194:33-194:51"/>
+ <constant value="194:54-194:55"/>
+ <constant value="194:33-194:55"/>
+ <constant value="193:78-195:26"/>
+ <constant value="196:20-196:21"/>
+ <constant value="196:24-196:26"/>
+ <constant value="196:20-196:26"/>
+ <constant value="199:28-199:31"/>
+ <constant value="199:28-199:37"/>
+ <constant value="199:40-199:41"/>
+ <constant value="199:28-199:41"/>
+ <constant value="201:33-201:36"/>
+ <constant value="201:33-201:42"/>
+ <constant value="201:45-201:46"/>
+ <constant value="201:33-201:46"/>
+ <constant value="203:33-203:36"/>
+ <constant value="203:33-203:42"/>
+ <constant value="203:45-203:46"/>
+ <constant value="203:33-203:46"/>
+ <constant value="206:46-206:49"/>
+ <constant value="206:46-206:53"/>
+ <constant value="206:57-206:60"/>
+ <constant value="206:57-206:67"/>
+ <constant value="206:70-206:71"/>
+ <constant value="206:57-206:71"/>
+ <constant value="206:56-206:81"/>
+ <constant value="206:46-206:81"/>
+ <constant value="206:40-206:81"/>
+ <constant value="206:91-206:92"/>
+ <constant value="206:83-206:92"/>
+ <constant value="206:103-206:104"/>
+ <constant value="206:94-206:104"/>
+ <constant value="206:33-206:105"/>
+ <constant value="204:46-204:49"/>
+ <constant value="204:46-204:53"/>
+ <constant value="204:57-204:60"/>
+ <constant value="204:57-204:67"/>
+ <constant value="204:71-204:72"/>
+ <constant value="204:77-204:78"/>
+ <constant value="204:71-204:78"/>
+ <constant value="204:57-204:79"/>
+ <constant value="204:56-204:89"/>
+ <constant value="204:46-204:89"/>
+ <constant value="204:40-204:89"/>
+ <constant value="204:99-204:100"/>
+ <constant value="204:91-204:100"/>
+ <constant value="204:112-204:113"/>
+ <constant value="204:118-204:119"/>
+ <constant value="204:112-204:119"/>
+ <constant value="204:123-204:125"/>
+ <constant value="204:111-204:125"/>
+ <constant value="204:102-204:125"/>
+ <constant value="204:33-204:126"/>
+ <constant value="203:30-207:30"/>
+ <constant value="202:46-202:49"/>
+ <constant value="202:46-202:53"/>
+ <constant value="202:57-202:60"/>
+ <constant value="202:57-202:67"/>
+ <constant value="202:71-202:72"/>
+ <constant value="202:77-202:79"/>
+ <constant value="202:71-202:79"/>
+ <constant value="202:57-202:81"/>
+ <constant value="202:56-202:91"/>
+ <constant value="202:46-202:91"/>
+ <constant value="202:40-202:91"/>
+ <constant value="202:101-202:102"/>
+ <constant value="202:93-202:102"/>
+ <constant value="202:114-202:115"/>
+ <constant value="202:120-202:122"/>
+ <constant value="202:114-202:122"/>
+ <constant value="202:126-202:128"/>
+ <constant value="202:113-202:128"/>
+ <constant value="202:104-202:128"/>
+ <constant value="202:33-202:129"/>
+ <constant value="201:30-207:36"/>
+ <constant value="200:46-200:49"/>
+ <constant value="200:46-200:53"/>
+ <constant value="200:40-200:53"/>
+ <constant value="200:63-200:64"/>
+ <constant value="200:55-200:64"/>
+ <constant value="200:75-200:76"/>
+ <constant value="200:79-200:80"/>
+ <constant value="200:75-200:80"/>
+ <constant value="200:66-200:80"/>
+ <constant value="200:33-200:81"/>
+ <constant value="199:25-207:42"/>
+ <constant value="197:25-197:28"/>
+ <constant value="196:17-208:22"/>
+ <constant value="193:78-209:10"/>
+ <constant value="193:13-209:10"/>
+ <constant value="210:9-210:10"/>
+ <constant value="210:9-210:14"/>
+ <constant value="193:9-210:14"/>
+ <constant value="192:9-210:14"/>
+ <constant value="ltrim"/>
+ <constant value=" "/>
+ <constant value="&#9;"/>
+ <constant value="&#10;"/>
+ <constant value="&#13;"/>
+ <constant value="J.includes(J):J"/>
+ <constant value="21"/>
+ <constant value="27"/>
+ <constant value="J.ltrim():J"/>
+ <constant value="213:48-213:51"/>
+ <constant value="213:53-213:57"/>
+ <constant value="213:59-213:63"/>
+ <constant value="213:65-213:69"/>
+ <constant value="213:38-213:70"/>
+ <constant value="213:13-213:70"/>
+ <constant value="214:12-214:15"/>
+ <constant value="214:26-214:30"/>
+ <constant value="214:41-214:42"/>
+ <constant value="214:44-214:45"/>
+ <constant value="214:26-214:46"/>
+ <constant value="214:12-214:47"/>
+ <constant value="217:17-217:21"/>
+ <constant value="215:17-215:21"/>
+ <constant value="215:32-215:33"/>
+ <constant value="215:35-215:39"/>
+ <constant value="215:35-215:46"/>
+ <constant value="215:17-215:47"/>
+ <constant value="215:17-215:55"/>
+ <constant value="214:9-218:14"/>
+ <constant value="213:9-218:14"/>
+ <constant value="sep"/>
+ <constant value="rtrim"/>
+ <constant value="23"/>
+ <constant value="31"/>
+ <constant value="J.rtrim():J"/>
+ <constant value="221:48-221:51"/>
+ <constant value="221:53-221:57"/>
+ <constant value="221:59-221:63"/>
+ <constant value="221:65-221:69"/>
+ <constant value="221:38-221:70"/>
+ <constant value="221:13-221:70"/>
+ <constant value="222:12-222:15"/>
+ <constant value="222:26-222:30"/>
+ <constant value="222:41-222:45"/>
+ <constant value="222:41-222:52"/>
+ <constant value="222:54-222:58"/>
+ <constant value="222:54-222:65"/>
+ <constant value="222:26-222:66"/>
+ <constant value="222:12-222:67"/>
+ <constant value="225:17-225:21"/>
+ <constant value="223:17-223:21"/>
+ <constant value="223:32-223:33"/>
+ <constant value="223:35-223:39"/>
+ <constant value="223:35-223:46"/>
+ <constant value="223:49-223:50"/>
+ <constant value="223:35-223:50"/>
+ <constant value="223:17-223:51"/>
+ <constant value="223:17-223:59"/>
+ <constant value="222:9-226:14"/>
+ <constant value="221:9-226:14"/>
+ <constant value="trim"/>
+ <constant value="229:9-229:13"/>
+ <constant value="229:9-229:21"/>
+ <constant value="229:9-229:29"/>
+ </cp>
+ <operation name="1">
+ <context type="2"/>
+ <parameters>
+ <parameter name="3" type="2"/>
+ </parameters>
+ <code>
+ <load arg="3"/>
+ <call arg="4"/>
+ <load arg="5"/>
+ <call arg="4"/>
+ <call arg="6"/>
+ <if arg="7"/>
+ <pushf/>
+ <goto arg="8"/>
+ <load arg="5"/>
+ <pushi arg="3"/>
+ <load arg="3"/>
+ <call arg="4"/>
+ <call arg="9"/>
+ <load arg="3"/>
+ <call arg="10"/>
+ </code>
+ <linenumbertable>
+ <lne id="11" begin="0" end="0"/>
+ <lne id="12" begin="0" end="1"/>
+ <lne id="13" begin="2" end="2"/>
+ <lne id="14" begin="2" end="3"/>
+ <lne id="15" begin="0" end="4"/>
+ <lne id="16" begin="6" end="6"/>
+ <lne id="17" begin="8" end="8"/>
+ <lne id="18" begin="9" end="9"/>
+ <lne id="19" begin="10" end="10"/>
+ <lne id="20" begin="10" end="11"/>
+ <lne id="21" begin="8" end="12"/>
+ <lne id="22" begin="13" end="13"/>
+ <lne id="23" begin="8" end="14"/>
+ <lne id="24" begin="0" end="14"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="25" begin="0" end="14"/>
+ <lve slot="1" name="26" begin="0" end="14"/>
+ </localvariabletable>
+ </operation>
+ <operation name="27">
+ <context type="2"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="5"/>
+ <pushi arg="3"/>
+ <pushi arg="3"/>
+ <call arg="9"/>
+ <call arg="28"/>
+ <load arg="5"/>
+ <pushi arg="29"/>
+ <load arg="5"/>
+ <call arg="4"/>
+ <call arg="9"/>
+ <call arg="30"/>
+ </code>
+ <linenumbertable>
+ <lne id="31" begin="0" end="0"/>
+ <lne id="32" begin="1" end="1"/>
+ <lne id="33" begin="2" end="2"/>
+ <lne id="34" begin="0" end="3"/>
+ <lne id="35" begin="0" end="4"/>
+ <lne id="36" begin="5" end="5"/>
+ <lne id="37" begin="6" end="6"/>
+ <lne id="38" begin="7" end="7"/>
+ <lne id="39" begin="7" end="8"/>
+ <lne id="40" begin="5" end="9"/>
+ <lne id="41" begin="0" end="10"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="25" begin="0" end="10"/>
+ </localvariabletable>
+ </operation>
+ <operation name="42">
+ <context type="2"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="5"/>
+ <pushi arg="3"/>
+ <pushi arg="3"/>
+ <call arg="9"/>
+ <call arg="43"/>
+ <load arg="5"/>
+ <pushi arg="29"/>
+ <load arg="5"/>
+ <call arg="4"/>
+ <call arg="9"/>
+ <call arg="30"/>
+ </code>
+ <linenumbertable>
+ <lne id="44" begin="0" end="0"/>
+ <lne id="45" begin="1" end="1"/>
+ <lne id="46" begin="2" end="2"/>
+ <lne id="47" begin="0" end="3"/>
+ <lne id="48" begin="0" end="4"/>
+ <lne id="49" begin="5" end="5"/>
+ <lne id="50" begin="6" end="6"/>
+ <lne id="51" begin="7" end="7"/>
+ <lne id="52" begin="7" end="8"/>
+ <lne id="53" begin="5" end="9"/>
+ <lne id="54" begin="0" end="10"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="25" begin="0" end="10"/>
+ </localvariabletable>
+ </operation>
+ <operation name="55">
+ <context type="2"/>
+ <parameters>
+ <parameter name="3" type="2"/>
+ </parameters>
+ <code>
+ <load arg="5"/>
+ <call arg="56"/>
+ <load arg="3"/>
+ <call arg="57"/>
+ </code>
+ <linenumbertable>
+ <lne id="58" begin="0" end="0"/>
+ <lne id="59" begin="0" end="1"/>
+ <lne id="60" begin="2" end="2"/>
+ <lne id="61" begin="0" end="3"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="25" begin="0" end="3"/>
+ <lve slot="1" name="26" begin="0" end="3"/>
+ </localvariabletable>
+ </operation>
+ <operation name="62">
+ <context type="2"/>
+ <parameters>
+ <parameter name="3" type="2"/>
+ </parameters>
+ <code>
+ <push arg="63"/>
+ <push arg="64"/>
+ <new/>
+ <dup/>
+ <pushi arg="3"/>
+ <call arg="65"/>
+ <set arg="66"/>
+ <dup/>
+ <pushi arg="3"/>
+ <set arg="67"/>
+ <dup/>
+ <pop/>
+ <store arg="29"/>
+ <load arg="5"/>
+ <call arg="56"/>
+ <iterate/>
+ <store arg="68"/>
+ <push arg="63"/>
+ <push arg="64"/>
+ <new/>
+ <dup/>
+ <load arg="68"/>
+ <load arg="3"/>
+ <call arg="10"/>
+ <if arg="69"/>
+ <load arg="29"/>
+ <get arg="66"/>
+ <goto arg="70"/>
+ <load arg="29"/>
+ <get arg="67"/>
+ <set arg="66"/>
+ <dup/>
+ <load arg="29"/>
+ <get arg="67"/>
+ <pushi arg="3"/>
+ <call arg="30"/>
+ <set arg="67"/>
+ <dup/>
+ <pop/>
+ <store arg="29"/>
+ <enditerate/>
+ <load arg="29"/>
+ <get arg="66"/>
+ </code>
+ <linenumbertable>
+ <lne id="71" begin="4" end="4"/>
+ <lne id="72" begin="4" end="5"/>
+ <lne id="73" begin="4" end="7"/>
+ <lne id="74" begin="8" end="8"/>
+ <lne id="75" begin="8" end="10"/>
+ <lne id="76" begin="0" end="11"/>
+ <lne id="77" begin="0" end="11"/>
+ <lne id="78" begin="13" end="13"/>
+ <lne id="79" begin="13" end="14"/>
+ <lne id="80" begin="21" end="21"/>
+ <lne id="81" begin="22" end="22"/>
+ <lne id="82" begin="21" end="23"/>
+ <lne id="83" begin="25" end="25"/>
+ <lne id="84" begin="25" end="26"/>
+ <lne id="85" begin="28" end="28"/>
+ <lne id="86" begin="28" end="29"/>
+ <lne id="87" begin="21" end="29"/>
+ <lne id="88" begin="21" end="31"/>
+ <lne id="89" begin="32" end="32"/>
+ <lne id="90" begin="32" end="33"/>
+ <lne id="91" begin="34" end="34"/>
+ <lne id="92" begin="32" end="35"/>
+ <lne id="93" begin="32" end="37"/>
+ <lne id="94" begin="17" end="38"/>
+ <lne id="95" begin="0" end="41"/>
+ <lne id="96" begin="0" end="42"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="97" begin="16" end="39"/>
+ <lve slot="2" name="98" begin="12" end="41"/>
+ <lve slot="0" name="25" begin="0" end="42"/>
+ <lve slot="1" name="26" begin="0" end="42"/>
+ </localvariabletable>
+ </operation>
+ <operation name="99">
+ <context type="2"/>
+ <parameters>
+ <parameter name="3" type="2"/>
+ <parameter name="29" type="2"/>
+ </parameters>
+ <code>
+ <push arg="100"/>
+ <store arg="68"/>
+ <load arg="5"/>
+ <call arg="56"/>
+ <iterate/>
+ <store arg="101"/>
+ <load arg="101"/>
+ <load arg="3"/>
+ <call arg="10"/>
+ <if arg="102"/>
+ <load arg="68"/>
+ <load arg="101"/>
+ <call arg="30"/>
+ <goto arg="103"/>
+ <load arg="68"/>
+ <load arg="29"/>
+ <call arg="30"/>
+ <store arg="68"/>
+ <enditerate/>
+ <load arg="68"/>
+ </code>
+ <linenumbertable>
+ <lne id="104" begin="0" end="0"/>
+ <lne id="105" begin="0" end="0"/>
+ <lne id="106" begin="2" end="2"/>
+ <lne id="107" begin="2" end="3"/>
+ <lne id="108" begin="6" end="6"/>
+ <lne id="109" begin="7" end="7"/>
+ <lne id="110" begin="6" end="8"/>
+ <lne id="111" begin="10" end="10"/>
+ <lne id="112" begin="11" end="11"/>
+ <lne id="113" begin="10" end="12"/>
+ <lne id="114" begin="14" end="14"/>
+ <lne id="115" begin="15" end="15"/>
+ <lne id="116" begin="14" end="16"/>
+ <lne id="117" begin="6" end="16"/>
+ <lne id="118" begin="0" end="19"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="4" name="97" begin="5" end="17"/>
+ <lve slot="3" name="98" begin="1" end="19"/>
+ <lve slot="0" name="25" begin="0" end="19"/>
+ <lve slot="1" name="119" begin="0" end="19"/>
+ <lve slot="2" name="120" begin="0" end="19"/>
+ </localvariabletable>
+ </operation>
+ <operation name="121">
+ <context type="2"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="100"/>
+ <store arg="3"/>
+ <load arg="5"/>
+ <call arg="56"/>
+ <iterate/>
+ <store arg="29"/>
+ <load arg="29"/>
+ <load arg="3"/>
+ <call arg="30"/>
+ <store arg="3"/>
+ <enditerate/>
+ <load arg="3"/>
+ </code>
+ <linenumbertable>
+ <lne id="122" begin="0" end="0"/>
+ <lne id="123" begin="0" end="0"/>
+ <lne id="124" begin="2" end="2"/>
+ <lne id="125" begin="2" end="3"/>
+ <lne id="126" begin="6" end="6"/>
+ <lne id="127" begin="7" end="7"/>
+ <lne id="128" begin="6" end="8"/>
+ <lne id="129" begin="0" end="11"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="2" name="97" begin="5" end="9"/>
+ <lve slot="1" name="98" begin="1" end="11"/>
+ <lve slot="0" name="25" begin="0" end="11"/>
+ </localvariabletable>
+ </operation>
+ <operation name="130">
+ <context type="2"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="131"/>
+ <push arg="64"/>
+ <new/>
+ <push arg="132"/>
+ <call arg="133"/>
+ <push arg="134"/>
+ <call arg="133"/>
+ <push arg="135"/>
+ <call arg="133"/>
+ <push arg="136"/>
+ <call arg="133"/>
+ <push arg="137"/>
+ <call arg="133"/>
+ <push arg="138"/>
+ <call arg="133"/>
+ <push arg="139"/>
+ <call arg="133"/>
+ <store arg="3"/>
+ <push arg="131"/>
+ <push arg="64"/>
+ <new/>
+ <pushi arg="3"/>
+ <call arg="133"/>
+ <pushi arg="140"/>
+ <call arg="133"/>
+ <pushi arg="141"/>
+ <call arg="133"/>
+ <pushi arg="142"/>
+ <call arg="133"/>
+ <pushi arg="143"/>
+ <call arg="133"/>
+ <pushi arg="144"/>
+ <call arg="133"/>
+ <pushi arg="145"/>
+ <call arg="133"/>
+ <store arg="29"/>
+ <push arg="63"/>
+ <push arg="64"/>
+ <new/>
+ <dup/>
+ <pushi arg="5"/>
+ <set arg="66"/>
+ <dup/>
+ <pushi arg="3"/>
+ <call arg="65"/>
+ <set arg="146"/>
+ <dup/>
+ <pop/>
+ <store arg="68"/>
+ <load arg="5"/>
+ <call arg="56"/>
+ <iterate/>
+ <store arg="101"/>
+ <load arg="29"/>
+ <load arg="3"/>
+ <load arg="101"/>
+ <call arg="57"/>
+ <call arg="147"/>
+ <store arg="140"/>
+ <load arg="68"/>
+ <get arg="146"/>
+ <pushi arg="3"/>
+ <call arg="65"/>
+ <call arg="10"/>
+ <if arg="148"/>
+ <load arg="68"/>
+ <get arg="146"/>
+ <load arg="140"/>
+ <call arg="149"/>
+ <if arg="150"/>
+ <push arg="63"/>
+ <push arg="64"/>
+ <new/>
+ <dup/>
+ <load arg="68"/>
+ <get arg="66"/>
+ <load arg="68"/>
+ <get arg="146"/>
+ <call arg="30"/>
+ <set arg="66"/>
+ <dup/>
+ <load arg="140"/>
+ <set arg="146"/>
+ <dup/>
+ <pop/>
+ <goto arg="151"/>
+ <push arg="63"/>
+ <push arg="64"/>
+ <new/>
+ <dup/>
+ <load arg="68"/>
+ <get arg="66"/>
+ <load arg="68"/>
+ <get arg="146"/>
+ <call arg="152"/>
+ <set arg="66"/>
+ <dup/>
+ <load arg="140"/>
+ <set arg="146"/>
+ <dup/>
+ <pop/>
+ <goto arg="153"/>
+ <push arg="63"/>
+ <push arg="64"/>
+ <new/>
+ <dup/>
+ <pushi arg="5"/>
+ <set arg="66"/>
+ <dup/>
+ <load arg="140"/>
+ <set arg="146"/>
+ <dup/>
+ <pop/>
+ <store arg="68"/>
+ <enditerate/>
+ <load arg="68"/>
+ <store arg="68"/>
+ <load arg="68"/>
+ <get arg="66"/>
+ <load arg="68"/>
+ <get arg="146"/>
+ <call arg="30"/>
+ </code>
+ <linenumbertable>
+ <lne id="154" begin="3" end="3"/>
+ <lne id="155" begin="5" end="5"/>
+ <lne id="156" begin="7" end="7"/>
+ <lne id="157" begin="9" end="9"/>
+ <lne id="158" begin="11" end="11"/>
+ <lne id="159" begin="13" end="13"/>
+ <lne id="160" begin="15" end="15"/>
+ <lne id="161" begin="0" end="16"/>
+ <lne id="162" begin="0" end="16"/>
+ <lne id="163" begin="21" end="21"/>
+ <lne id="164" begin="23" end="23"/>
+ <lne id="165" begin="25" end="25"/>
+ <lne id="166" begin="27" end="27"/>
+ <lne id="167" begin="29" end="29"/>
+ <lne id="168" begin="31" end="31"/>
+ <lne id="169" begin="33" end="33"/>
+ <lne id="170" begin="18" end="34"/>
+ <lne id="171" begin="18" end="34"/>
+ <lne id="172" begin="40" end="40"/>
+ <lne id="173" begin="40" end="42"/>
+ <lne id="174" begin="43" end="43"/>
+ <lne id="175" begin="43" end="44"/>
+ <lne id="176" begin="43" end="46"/>
+ <lne id="177" begin="36" end="47"/>
+ <lne id="178" begin="36" end="47"/>
+ <lne id="179" begin="49" end="49"/>
+ <lne id="180" begin="49" end="50"/>
+ <lne id="181" begin="53" end="53"/>
+ <lne id="182" begin="54" end="54"/>
+ <lne id="183" begin="55" end="55"/>
+ <lne id="184" begin="54" end="56"/>
+ <lne id="185" begin="53" end="57"/>
+ <lne id="186" begin="53" end="57"/>
+ <lne id="187" begin="59" end="59"/>
+ <lne id="188" begin="59" end="60"/>
+ <lne id="189" begin="61" end="61"/>
+ <lne id="190" begin="61" end="62"/>
+ <lne id="191" begin="59" end="63"/>
+ <lne id="192" begin="65" end="65"/>
+ <lne id="193" begin="65" end="66"/>
+ <lne id="194" begin="67" end="67"/>
+ <lne id="195" begin="65" end="68"/>
+ <lne id="196" begin="74" end="74"/>
+ <lne id="197" begin="74" end="75"/>
+ <lne id="198" begin="76" end="76"/>
+ <lne id="199" begin="76" end="77"/>
+ <lne id="200" begin="74" end="78"/>
+ <lne id="201" begin="74" end="80"/>
+ <lne id="202" begin="81" end="81"/>
+ <lne id="203" begin="81" end="83"/>
+ <lne id="204" begin="70" end="84"/>
+ <lne id="205" begin="90" end="90"/>
+ <lne id="206" begin="90" end="91"/>
+ <lne id="207" begin="92" end="92"/>
+ <lne id="208" begin="92" end="93"/>
+ <lne id="209" begin="90" end="94"/>
+ <lne id="210" begin="90" end="96"/>
+ <lne id="211" begin="97" end="97"/>
+ <lne id="212" begin="97" end="99"/>
+ <lne id="213" begin="86" end="100"/>
+ <lne id="214" begin="65" end="100"/>
+ <lne id="215" begin="106" end="106"/>
+ <lne id="216" begin="106" end="108"/>
+ <lne id="217" begin="109" end="109"/>
+ <lne id="218" begin="109" end="111"/>
+ <lne id="219" begin="102" end="112"/>
+ <lne id="220" begin="59" end="112"/>
+ <lne id="221" begin="53" end="112"/>
+ <lne id="222" begin="36" end="115"/>
+ <lne id="223" begin="36" end="115"/>
+ <lne id="224" begin="117" end="117"/>
+ <lne id="225" begin="117" end="118"/>
+ <lne id="226" begin="119" end="119"/>
+ <lne id="227" begin="119" end="120"/>
+ <lne id="228" begin="117" end="121"/>
+ <lne id="229" begin="36" end="121"/>
+ <lne id="230" begin="18" end="121"/>
+ <lne id="231" begin="0" end="121"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="5" name="232" begin="58" end="112"/>
+ <lve slot="4" name="97" begin="52" end="113"/>
+ <lve slot="3" name="98" begin="48" end="115"/>
+ <lve slot="3" name="233" begin="116" end="121"/>
+ <lve slot="2" name="234" begin="35" end="121"/>
+ <lve slot="1" name="235" begin="17" end="121"/>
+ <lve slot="0" name="25" begin="0" end="121"/>
+ </localvariabletable>
+ </operation>
+ <operation name="236">
+ <context type="2"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="131"/>
+ <push arg="64"/>
+ <new/>
+ <push arg="237"/>
+ <call arg="133"/>
+ <push arg="238"/>
+ <call arg="133"/>
+ <push arg="137"/>
+ <call arg="133"/>
+ <push arg="138"/>
+ <call arg="133"/>
+ <push arg="239"/>
+ <call arg="133"/>
+ <push arg="240"/>
+ <call arg="133"/>
+ <push arg="241"/>
+ <call arg="133"/>
+ <push arg="242"/>
+ <call arg="133"/>
+ <push arg="132"/>
+ <call arg="133"/>
+ <push arg="243"/>
+ <call arg="133"/>
+ <push arg="244"/>
+ <call arg="133"/>
+ <push arg="136"/>
+ <call arg="133"/>
+ <push arg="139"/>
+ <call arg="133"/>
+ <push arg="245"/>
+ <call arg="133"/>
+ <push arg="246"/>
+ <call arg="133"/>
+ <push arg="247"/>
+ <call arg="133"/>
+ <push arg="248"/>
+ <call arg="133"/>
+ <push arg="249"/>
+ <call arg="133"/>
+ <push arg="2"/>
+ <call arg="133"/>
+ <push arg="250"/>
+ <call arg="133"/>
+ <push arg="251"/>
+ <call arg="133"/>
+ <push arg="134"/>
+ <call arg="133"/>
+ <push arg="252"/>
+ <call arg="133"/>
+ <push arg="135"/>
+ <call arg="133"/>
+ <push arg="253"/>
+ <call arg="133"/>
+ <push arg="254"/>
+ <call arg="133"/>
+ <push arg="255"/>
+ <call arg="133"/>
+ <push arg="256"/>
+ <call arg="133"/>
+ <push arg="257"/>
+ <call arg="133"/>
+ <push arg="258"/>
+ <call arg="133"/>
+ <push arg="97"/>
+ <call arg="133"/>
+ <push arg="259"/>
+ <call arg="133"/>
+ <push arg="260"/>
+ <call arg="133"/>
+ <push arg="261"/>
+ <call arg="133"/>
+ <push arg="262"/>
+ <call arg="133"/>
+ <push arg="263"/>
+ <call arg="133"/>
+ <push arg="264"/>
+ <call arg="133"/>
+ <push arg="265"/>
+ <call arg="133"/>
+ <push arg="266"/>
+ <call arg="133"/>
+ <push arg="267"/>
+ <call arg="133"/>
+ <push arg="268"/>
+ <call arg="133"/>
+ <push arg="269"/>
+ <call arg="133"/>
+ <push arg="270"/>
+ <call arg="133"/>
+ <push arg="233"/>
+ <call arg="133"/>
+ <push arg="26"/>
+ <call arg="133"/>
+ <push arg="271"/>
+ <call arg="133"/>
+ <push arg="272"/>
+ <call arg="133"/>
+ <push arg="273"/>
+ <call arg="133"/>
+ <push arg="274"/>
+ <call arg="133"/>
+ <push arg="275"/>
+ <call arg="133"/>
+ <push arg="276"/>
+ <call arg="133"/>
+ <push arg="277"/>
+ <call arg="133"/>
+ <push arg="5"/>
+ <call arg="133"/>
+ <push arg="3"/>
+ <call arg="133"/>
+ <push arg="29"/>
+ <call arg="133"/>
+ <push arg="68"/>
+ <call arg="133"/>
+ <push arg="101"/>
+ <call arg="133"/>
+ <push arg="140"/>
+ <call arg="133"/>
+ <push arg="278"/>
+ <call arg="133"/>
+ <push arg="279"/>
+ <call arg="133"/>
+ <push arg="7"/>
+ <call arg="133"/>
+ <push arg="280"/>
+ <call arg="133"/>
+ <push arg="281"/>
+ <call arg="133"/>
+ <push arg="282"/>
+ <call arg="133"/>
+ <store arg="3"/>
+ <push arg="63"/>
+ <push arg="64"/>
+ <new/>
+ <dup/>
+ <push arg="100"/>
+ <set arg="66"/>
+ <dup/>
+ <pushi arg="5"/>
+ <set arg="283"/>
+ <dup/>
+ <pushi arg="5"/>
+ <set arg="284"/>
+ <dup/>
+ <pop/>
+ <store arg="29"/>
+ <push arg="131"/>
+ <push arg="64"/>
+ <new/>
+ <load arg="5"/>
+ <call arg="56"/>
+ <iterate/>
+ <store arg="68"/>
+ <load arg="68"/>
+ <call arg="285"/>
+ <call arg="133"/>
+ <enditerate/>
+ <iterate/>
+ <store arg="68"/>
+ <load arg="29"/>
+ <get arg="283"/>
+ <pushi arg="5"/>
+ <call arg="10"/>
+ <if arg="286"/>
+ <load arg="29"/>
+ <get arg="283"/>
+ <pushi arg="3"/>
+ <call arg="10"/>
+ <if arg="287"/>
+ <push arg="63"/>
+ <push arg="64"/>
+ <new/>
+ <dup/>
+ <load arg="29"/>
+ <get arg="66"/>
+ <load arg="3"/>
+ <load arg="29"/>
+ <get arg="284"/>
+ <load arg="68"/>
+ <pushi arg="288"/>
+ <call arg="289"/>
+ <call arg="30"/>
+ <pushi arg="3"/>
+ <call arg="30"/>
+ <call arg="147"/>
+ <call arg="30"/>
+ <load arg="3"/>
+ <load arg="68"/>
+ <pushi arg="288"/>
+ <call arg="290"/>
+ <pushi arg="3"/>
+ <call arg="30"/>
+ <call arg="147"/>
+ <call arg="30"/>
+ <set arg="66"/>
+ <dup/>
+ <pushi arg="5"/>
+ <set arg="283"/>
+ <dup/>
+ <pushi arg="5"/>
+ <set arg="284"/>
+ <dup/>
+ <pop/>
+ <goto arg="291"/>
+ <push arg="63"/>
+ <push arg="64"/>
+ <new/>
+ <dup/>
+ <load arg="29"/>
+ <get arg="66"/>
+ <load arg="3"/>
+ <load arg="29"/>
+ <get arg="284"/>
+ <load arg="68"/>
+ <pushi arg="292"/>
+ <call arg="289"/>
+ <call arg="30"/>
+ <pushi arg="3"/>
+ <call arg="30"/>
+ <call arg="147"/>
+ <call arg="30"/>
+ <set arg="66"/>
+ <dup/>
+ <pushi arg="29"/>
+ <set arg="283"/>
+ <dup/>
+ <load arg="68"/>
+ <pushi arg="292"/>
+ <call arg="290"/>
+ <pushi arg="101"/>
+ <call arg="293"/>
+ <set arg="284"/>
+ <dup/>
+ <pop/>
+ <goto arg="294"/>
+ <push arg="63"/>
+ <push arg="64"/>
+ <new/>
+ <dup/>
+ <load arg="29"/>
+ <get arg="66"/>
+ <load arg="3"/>
+ <load arg="68"/>
+ <pushi arg="101"/>
+ <call arg="289"/>
+ <pushi arg="3"/>
+ <call arg="30"/>
+ <call arg="147"/>
+ <call arg="30"/>
+ <set arg="66"/>
+ <dup/>
+ <pushi arg="3"/>
+ <set arg="283"/>
+ <dup/>
+ <load arg="68"/>
+ <pushi arg="101"/>
+ <call arg="290"/>
+ <pushi arg="292"/>
+ <call arg="293"/>
+ <set arg="284"/>
+ <dup/>
+ <pop/>
+ <store arg="29"/>
+ <enditerate/>
+ <load arg="29"/>
+ <store arg="29"/>
+ <load arg="29"/>
+ <get arg="66"/>
+ <load arg="29"/>
+ <get arg="283"/>
+ <pushi arg="3"/>
+ <call arg="10"/>
+ <if arg="295"/>
+ <load arg="29"/>
+ <get arg="283"/>
+ <pushi arg="29"/>
+ <call arg="10"/>
+ <if arg="296"/>
+ <push arg="100"/>
+ <goto arg="297"/>
+ <load arg="3"/>
+ <load arg="29"/>
+ <get arg="284"/>
+ <pushi arg="3"/>
+ <call arg="30"/>
+ <call arg="147"/>
+ <push arg="298"/>
+ <call arg="30"/>
+ <goto arg="299"/>
+ <load arg="3"/>
+ <load arg="29"/>
+ <get arg="284"/>
+ <pushi arg="3"/>
+ <call arg="30"/>
+ <call arg="147"/>
+ <push arg="300"/>
+ <call arg="30"/>
+ <call arg="30"/>
+ </code>
+ <linenumbertable>
+ <lne id="301" begin="3" end="3"/>
+ <lne id="302" begin="5" end="5"/>
+ <lne id="303" begin="7" end="7"/>
+ <lne id="304" begin="9" end="9"/>
+ <lne id="305" begin="11" end="11"/>
+ <lne id="306" begin="13" end="13"/>
+ <lne id="307" begin="15" end="15"/>
+ <lne id="308" begin="17" end="17"/>
+ <lne id="309" begin="19" end="19"/>
+ <lne id="310" begin="21" end="21"/>
+ <lne id="311" begin="23" end="23"/>
+ <lne id="312" begin="25" end="25"/>
+ <lne id="313" begin="27" end="27"/>
+ <lne id="314" begin="29" end="29"/>
+ <lne id="315" begin="31" end="31"/>
+ <lne id="316" begin="33" end="33"/>
+ <lne id="317" begin="35" end="35"/>
+ <lne id="318" begin="37" end="37"/>
+ <lne id="319" begin="39" end="39"/>
+ <lne id="320" begin="41" end="41"/>
+ <lne id="321" begin="43" end="43"/>
+ <lne id="322" begin="45" end="45"/>
+ <lne id="323" begin="47" end="47"/>
+ <lne id="324" begin="49" end="49"/>
+ <lne id="325" begin="51" end="51"/>
+ <lne id="326" begin="53" end="53"/>
+ <lne id="327" begin="55" end="55"/>
+ <lne id="328" begin="57" end="57"/>
+ <lne id="329" begin="59" end="59"/>
+ <lne id="330" begin="61" end="61"/>
+ <lne id="331" begin="63" end="63"/>
+ <lne id="332" begin="65" end="65"/>
+ <lne id="333" begin="67" end="67"/>
+ <lne id="334" begin="69" end="69"/>
+ <lne id="335" begin="71" end="71"/>
+ <lne id="336" begin="73" end="73"/>
+ <lne id="337" begin="75" end="75"/>
+ <lne id="338" begin="77" end="77"/>
+ <lne id="339" begin="79" end="79"/>
+ <lne id="340" begin="81" end="81"/>
+ <lne id="341" begin="83" end="83"/>
+ <lne id="342" begin="85" end="85"/>
+ <lne id="343" begin="87" end="87"/>
+ <lne id="344" begin="89" end="89"/>
+ <lne id="345" begin="91" end="91"/>
+ <lne id="346" begin="93" end="93"/>
+ <lne id="347" begin="95" end="95"/>
+ <lne id="348" begin="97" end="97"/>
+ <lne id="349" begin="99" end="99"/>
+ <lne id="350" begin="101" end="101"/>
+ <lne id="351" begin="103" end="103"/>
+ <lne id="352" begin="105" end="105"/>
+ <lne id="353" begin="107" end="107"/>
+ <lne id="354" begin="109" end="109"/>
+ <lne id="355" begin="111" end="111"/>
+ <lne id="356" begin="113" end="113"/>
+ <lne id="357" begin="115" end="115"/>
+ <lne id="358" begin="117" end="117"/>
+ <lne id="359" begin="119" end="119"/>
+ <lne id="360" begin="121" end="121"/>
+ <lne id="361" begin="123" end="123"/>
+ <lne id="362" begin="125" end="125"/>
+ <lne id="363" begin="127" end="127"/>
+ <lne id="364" begin="129" end="129"/>
+ <lne id="365" begin="0" end="130"/>
+ <lne id="366" begin="0" end="130"/>
+ <lne id="367" begin="136" end="136"/>
+ <lne id="368" begin="136" end="138"/>
+ <lne id="369" begin="139" end="139"/>
+ <lne id="370" begin="139" end="141"/>
+ <lne id="371" begin="142" end="142"/>
+ <lne id="372" begin="142" end="144"/>
+ <lne id="373" begin="132" end="145"/>
+ <lne id="374" begin="132" end="145"/>
+ <lne id="375" begin="150" end="150"/>
+ <lne id="376" begin="150" end="151"/>
+ <lne id="377" begin="154" end="154"/>
+ <lne id="378" begin="154" end="155"/>
+ <lne id="379" begin="147" end="157"/>
+ <lne id="380" begin="160" end="160"/>
+ <lne id="381" begin="160" end="161"/>
+ <lne id="382" begin="162" end="162"/>
+ <lne id="383" begin="160" end="163"/>
+ <lne id="384" begin="165" end="165"/>
+ <lne id="385" begin="165" end="166"/>
+ <lne id="386" begin="167" end="167"/>
+ <lne id="387" begin="165" end="168"/>
+ <lne id="388" begin="174" end="174"/>
+ <lne id="389" begin="174" end="175"/>
+ <lne id="390" begin="176" end="176"/>
+ <lne id="391" begin="177" end="177"/>
+ <lne id="392" begin="177" end="178"/>
+ <lne id="393" begin="179" end="179"/>
+ <lne id="394" begin="180" end="180"/>
+ <lne id="395" begin="179" end="181"/>
+ <lne id="396" begin="177" end="182"/>
+ <lne id="397" begin="183" end="183"/>
+ <lne id="398" begin="177" end="184"/>
+ <lne id="399" begin="176" end="185"/>
+ <lne id="400" begin="174" end="186"/>
+ <lne id="401" begin="187" end="187"/>
+ <lne id="402" begin="188" end="188"/>
+ <lne id="403" begin="189" end="189"/>
+ <lne id="404" begin="188" end="190"/>
+ <lne id="405" begin="191" end="191"/>
+ <lne id="406" begin="188" end="192"/>
+ <lne id="407" begin="187" end="193"/>
+ <lne id="408" begin="174" end="194"/>
+ <lne id="409" begin="174" end="196"/>
+ <lne id="410" begin="197" end="197"/>
+ <lne id="411" begin="197" end="199"/>
+ <lne id="412" begin="200" end="200"/>
+ <lne id="413" begin="200" end="202"/>
+ <lne id="414" begin="170" end="203"/>
+ <lne id="415" begin="209" end="209"/>
+ <lne id="416" begin="209" end="210"/>
+ <lne id="417" begin="211" end="211"/>
+ <lne id="418" begin="212" end="212"/>
+ <lne id="419" begin="212" end="213"/>
+ <lne id="420" begin="214" end="214"/>
+ <lne id="421" begin="215" end="215"/>
+ <lne id="422" begin="214" end="216"/>
+ <lne id="423" begin="212" end="217"/>
+ <lne id="424" begin="218" end="218"/>
+ <lne id="425" begin="212" end="219"/>
+ <lne id="426" begin="211" end="220"/>
+ <lne id="427" begin="209" end="221"/>
+ <lne id="428" begin="209" end="223"/>
+ <lne id="429" begin="224" end="224"/>
+ <lne id="430" begin="224" end="226"/>
+ <lne id="431" begin="227" end="227"/>
+ <lne id="432" begin="228" end="228"/>
+ <lne id="433" begin="227" end="229"/>
+ <lne id="434" begin="230" end="230"/>
+ <lne id="435" begin="227" end="231"/>
+ <lne id="436" begin="227" end="233"/>
+ <lne id="437" begin="205" end="234"/>
+ <lne id="438" begin="165" end="234"/>
+ <lne id="439" begin="240" end="240"/>
+ <lne id="440" begin="240" end="241"/>
+ <lne id="441" begin="242" end="242"/>
+ <lne id="442" begin="243" end="243"/>
+ <lne id="443" begin="244" end="244"/>
+ <lne id="444" begin="243" end="245"/>
+ <lne id="445" begin="246" end="246"/>
+ <lne id="446" begin="243" end="247"/>
+ <lne id="447" begin="242" end="248"/>
+ <lne id="448" begin="240" end="249"/>
+ <lne id="449" begin="240" end="251"/>
+ <lne id="450" begin="252" end="252"/>
+ <lne id="451" begin="252" end="254"/>
+ <lne id="452" begin="255" end="255"/>
+ <lne id="453" begin="256" end="256"/>
+ <lne id="454" begin="255" end="257"/>
+ <lne id="455" begin="258" end="258"/>
+ <lne id="456" begin="255" end="259"/>
+ <lne id="457" begin="255" end="261"/>
+ <lne id="458" begin="236" end="262"/>
+ <lne id="459" begin="160" end="262"/>
+ <lne id="460" begin="132" end="265"/>
+ <lne id="461" begin="132" end="265"/>
+ <lne id="462" begin="267" end="267"/>
+ <lne id="463" begin="267" end="268"/>
+ <lne id="464" begin="269" end="269"/>
+ <lne id="465" begin="269" end="270"/>
+ <lne id="466" begin="271" end="271"/>
+ <lne id="467" begin="269" end="272"/>
+ <lne id="468" begin="274" end="274"/>
+ <lne id="469" begin="274" end="275"/>
+ <lne id="470" begin="276" end="276"/>
+ <lne id="471" begin="274" end="277"/>
+ <lne id="472" begin="279" end="279"/>
+ <lne id="473" begin="281" end="281"/>
+ <lne id="474" begin="282" end="282"/>
+ <lne id="475" begin="282" end="283"/>
+ <lne id="476" begin="284" end="284"/>
+ <lne id="477" begin="282" end="285"/>
+ <lne id="478" begin="281" end="286"/>
+ <lne id="479" begin="287" end="287"/>
+ <lne id="480" begin="281" end="288"/>
+ <lne id="481" begin="274" end="288"/>
+ <lne id="482" begin="290" end="290"/>
+ <lne id="483" begin="291" end="291"/>
+ <lne id="484" begin="291" end="292"/>
+ <lne id="485" begin="293" end="293"/>
+ <lne id="486" begin="291" end="294"/>
+ <lne id="487" begin="290" end="295"/>
+ <lne id="488" begin="296" end="296"/>
+ <lne id="489" begin="290" end="297"/>
+ <lne id="490" begin="269" end="297"/>
+ <lne id="491" begin="267" end="298"/>
+ <lne id="492" begin="132" end="298"/>
+ <lne id="493" begin="0" end="298"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="97" begin="153" end="156"/>
+ <lve slot="3" name="97" begin="159" end="263"/>
+ <lve slot="2" name="98" begin="146" end="265"/>
+ <lve slot="2" name="233" begin="266" end="298"/>
+ <lve slot="1" name="494" begin="131" end="298"/>
+ <lve slot="0" name="25" begin="0" end="298"/>
+ </localvariabletable>
+ </operation>
+ <operation name="495">
+ <context type="2"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="131"/>
+ <push arg="64"/>
+ <new/>
+ <push arg="237"/>
+ <call arg="133"/>
+ <push arg="238"/>
+ <call arg="133"/>
+ <push arg="137"/>
+ <call arg="133"/>
+ <push arg="138"/>
+ <call arg="133"/>
+ <push arg="239"/>
+ <call arg="133"/>
+ <push arg="240"/>
+ <call arg="133"/>
+ <push arg="241"/>
+ <call arg="133"/>
+ <push arg="242"/>
+ <call arg="133"/>
+ <push arg="132"/>
+ <call arg="133"/>
+ <push arg="243"/>
+ <call arg="133"/>
+ <push arg="244"/>
+ <call arg="133"/>
+ <push arg="136"/>
+ <call arg="133"/>
+ <push arg="139"/>
+ <call arg="133"/>
+ <push arg="245"/>
+ <call arg="133"/>
+ <push arg="246"/>
+ <call arg="133"/>
+ <push arg="247"/>
+ <call arg="133"/>
+ <push arg="248"/>
+ <call arg="133"/>
+ <push arg="249"/>
+ <call arg="133"/>
+ <push arg="2"/>
+ <call arg="133"/>
+ <push arg="250"/>
+ <call arg="133"/>
+ <push arg="251"/>
+ <call arg="133"/>
+ <push arg="134"/>
+ <call arg="133"/>
+ <push arg="252"/>
+ <call arg="133"/>
+ <push arg="135"/>
+ <call arg="133"/>
+ <push arg="253"/>
+ <call arg="133"/>
+ <push arg="254"/>
+ <call arg="133"/>
+ <push arg="255"/>
+ <call arg="133"/>
+ <push arg="256"/>
+ <call arg="133"/>
+ <push arg="257"/>
+ <call arg="133"/>
+ <push arg="258"/>
+ <call arg="133"/>
+ <push arg="97"/>
+ <call arg="133"/>
+ <push arg="259"/>
+ <call arg="133"/>
+ <push arg="260"/>
+ <call arg="133"/>
+ <push arg="261"/>
+ <call arg="133"/>
+ <push arg="262"/>
+ <call arg="133"/>
+ <push arg="263"/>
+ <call arg="133"/>
+ <push arg="264"/>
+ <call arg="133"/>
+ <push arg="265"/>
+ <call arg="133"/>
+ <push arg="266"/>
+ <call arg="133"/>
+ <push arg="267"/>
+ <call arg="133"/>
+ <push arg="268"/>
+ <call arg="133"/>
+ <push arg="269"/>
+ <call arg="133"/>
+ <push arg="270"/>
+ <call arg="133"/>
+ <push arg="233"/>
+ <call arg="133"/>
+ <push arg="26"/>
+ <call arg="133"/>
+ <push arg="271"/>
+ <call arg="133"/>
+ <push arg="272"/>
+ <call arg="133"/>
+ <push arg="273"/>
+ <call arg="133"/>
+ <push arg="274"/>
+ <call arg="133"/>
+ <push arg="275"/>
+ <call arg="133"/>
+ <push arg="276"/>
+ <call arg="133"/>
+ <push arg="277"/>
+ <call arg="133"/>
+ <push arg="5"/>
+ <call arg="133"/>
+ <push arg="3"/>
+ <call arg="133"/>
+ <push arg="29"/>
+ <call arg="133"/>
+ <push arg="68"/>
+ <call arg="133"/>
+ <push arg="101"/>
+ <call arg="133"/>
+ <push arg="140"/>
+ <call arg="133"/>
+ <push arg="278"/>
+ <call arg="133"/>
+ <push arg="279"/>
+ <call arg="133"/>
+ <push arg="7"/>
+ <call arg="133"/>
+ <push arg="280"/>
+ <call arg="133"/>
+ <push arg="281"/>
+ <call arg="133"/>
+ <push arg="282"/>
+ <call arg="133"/>
+ <push arg="298"/>
+ <call arg="133"/>
+ <store arg="3"/>
+ <push arg="63"/>
+ <push arg="64"/>
+ <new/>
+ <dup/>
+ <push arg="100"/>
+ <set arg="66"/>
+ <dup/>
+ <pushi arg="5"/>
+ <set arg="283"/>
+ <dup/>
+ <pushi arg="5"/>
+ <set arg="284"/>
+ <dup/>
+ <pop/>
+ <store arg="29"/>
+ <push arg="131"/>
+ <push arg="64"/>
+ <new/>
+ <load arg="5"/>
+ <call arg="56"/>
+ <iterate/>
+ <store arg="68"/>
+ <load arg="3"/>
+ <load arg="68"/>
+ <call arg="57"/>
+ <pushi arg="3"/>
+ <call arg="152"/>
+ <call arg="133"/>
+ <enditerate/>
+ <iterate/>
+ <store arg="68"/>
+ <load arg="68"/>
+ <pushi arg="288"/>
+ <call arg="10"/>
+ <if arg="496"/>
+ <load arg="29"/>
+ <get arg="283"/>
+ <pushi arg="5"/>
+ <call arg="10"/>
+ <if arg="497"/>
+ <load arg="29"/>
+ <get arg="283"/>
+ <pushi arg="3"/>
+ <call arg="10"/>
+ <if arg="498"/>
+ <load arg="29"/>
+ <get arg="283"/>
+ <pushi arg="29"/>
+ <call arg="10"/>
+ <if arg="499"/>
+ <push arg="63"/>
+ <push arg="64"/>
+ <new/>
+ <dup/>
+ <load arg="29"/>
+ <get arg="66"/>
+ <load arg="29"/>
+ <get arg="284"/>
+ <load arg="68"/>
+ <call arg="30"/>
+ <call arg="500"/>
+ <call arg="30"/>
+ <set arg="66"/>
+ <dup/>
+ <pushi arg="5"/>
+ <set arg="283"/>
+ <dup/>
+ <pushi arg="5"/>
+ <set arg="284"/>
+ <dup/>
+ <pop/>
+ <goto arg="501"/>
+ <push arg="63"/>
+ <push arg="64"/>
+ <new/>
+ <dup/>
+ <load arg="29"/>
+ <get arg="66"/>
+ <load arg="29"/>
+ <get arg="284"/>
+ <load arg="68"/>
+ <pushi arg="101"/>
+ <call arg="289"/>
+ <call arg="30"/>
+ <call arg="500"/>
+ <call arg="30"/>
+ <set arg="66"/>
+ <dup/>
+ <pushi arg="68"/>
+ <set arg="283"/>
+ <dup/>
+ <load arg="68"/>
+ <pushi arg="101"/>
+ <call arg="290"/>
+ <pushi arg="288"/>
+ <call arg="293"/>
+ <set arg="284"/>
+ <dup/>
+ <pop/>
+ <goto arg="502"/>
+ <push arg="63"/>
+ <push arg="64"/>
+ <new/>
+ <dup/>
+ <load arg="29"/>
+ <get arg="66"/>
+ <load arg="29"/>
+ <get arg="284"/>
+ <load arg="68"/>
+ <pushi arg="292"/>
+ <call arg="289"/>
+ <call arg="30"/>
+ <call arg="500"/>
+ <call arg="30"/>
+ <set arg="66"/>
+ <dup/>
+ <pushi arg="29"/>
+ <set arg="283"/>
+ <dup/>
+ <load arg="68"/>
+ <pushi arg="292"/>
+ <call arg="290"/>
+ <pushi arg="292"/>
+ <call arg="293"/>
+ <set arg="284"/>
+ <dup/>
+ <pop/>
+ <goto arg="503"/>
+ <push arg="63"/>
+ <push arg="64"/>
+ <new/>
+ <dup/>
+ <load arg="29"/>
+ <get arg="66"/>
+ <set arg="66"/>
+ <dup/>
+ <pushi arg="3"/>
+ <set arg="283"/>
+ <dup/>
+ <load arg="68"/>
+ <pushi arg="101"/>
+ <call arg="293"/>
+ <set arg="284"/>
+ <dup/>
+ <pop/>
+ <goto arg="296"/>
+ <load arg="29"/>
+ <store arg="29"/>
+ <enditerate/>
+ <load arg="29"/>
+ <store arg="29"/>
+ <load arg="29"/>
+ <get arg="66"/>
+ </code>
+ <linenumbertable>
+ <lne id="504" begin="3" end="3"/>
+ <lne id="505" begin="5" end="5"/>
+ <lne id="506" begin="7" end="7"/>
+ <lne id="507" begin="9" end="9"/>
+ <lne id="508" begin="11" end="11"/>
+ <lne id="509" begin="13" end="13"/>
+ <lne id="510" begin="15" end="15"/>
+ <lne id="511" begin="17" end="17"/>
+ <lne id="512" begin="19" end="19"/>
+ <lne id="513" begin="21" end="21"/>
+ <lne id="514" begin="23" end="23"/>
+ <lne id="515" begin="25" end="25"/>
+ <lne id="516" begin="27" end="27"/>
+ <lne id="517" begin="29" end="29"/>
+ <lne id="518" begin="31" end="31"/>
+ <lne id="519" begin="33" end="33"/>
+ <lne id="520" begin="35" end="35"/>
+ <lne id="521" begin="37" end="37"/>
+ <lne id="522" begin="39" end="39"/>
+ <lne id="523" begin="41" end="41"/>
+ <lne id="524" begin="43" end="43"/>
+ <lne id="525" begin="45" end="45"/>
+ <lne id="526" begin="47" end="47"/>
+ <lne id="527" begin="49" end="49"/>
+ <lne id="528" begin="51" end="51"/>
+ <lne id="529" begin="53" end="53"/>
+ <lne id="530" begin="55" end="55"/>
+ <lne id="531" begin="57" end="57"/>
+ <lne id="532" begin="59" end="59"/>
+ <lne id="533" begin="61" end="61"/>
+ <lne id="534" begin="63" end="63"/>
+ <lne id="535" begin="65" end="65"/>
+ <lne id="536" begin="67" end="67"/>
+ <lne id="537" begin="69" end="69"/>
+ <lne id="538" begin="71" end="71"/>
+ <lne id="539" begin="73" end="73"/>
+ <lne id="540" begin="75" end="75"/>
+ <lne id="541" begin="77" end="77"/>
+ <lne id="542" begin="79" end="79"/>
+ <lne id="543" begin="81" end="81"/>
+ <lne id="544" begin="83" end="83"/>
+ <lne id="545" begin="85" end="85"/>
+ <lne id="546" begin="87" end="87"/>
+ <lne id="547" begin="89" end="89"/>
+ <lne id="548" begin="91" end="91"/>
+ <lne id="549" begin="93" end="93"/>
+ <lne id="550" begin="95" end="95"/>
+ <lne id="551" begin="97" end="97"/>
+ <lne id="552" begin="99" end="99"/>
+ <lne id="553" begin="101" end="101"/>
+ <lne id="554" begin="103" end="103"/>
+ <lne id="555" begin="105" end="105"/>
+ <lne id="556" begin="107" end="107"/>
+ <lne id="557" begin="109" end="109"/>
+ <lne id="558" begin="111" end="111"/>
+ <lne id="559" begin="113" end="113"/>
+ <lne id="560" begin="115" end="115"/>
+ <lne id="561" begin="117" end="117"/>
+ <lne id="562" begin="119" end="119"/>
+ <lne id="563" begin="121" end="121"/>
+ <lne id="564" begin="123" end="123"/>
+ <lne id="565" begin="125" end="125"/>
+ <lne id="566" begin="127" end="127"/>
+ <lne id="567" begin="129" end="129"/>
+ <lne id="568" begin="131" end="131"/>
+ <lne id="569" begin="0" end="132"/>
+ <lne id="570" begin="0" end="132"/>
+ <lne id="571" begin="138" end="138"/>
+ <lne id="572" begin="138" end="140"/>
+ <lne id="573" begin="141" end="141"/>
+ <lne id="574" begin="141" end="143"/>
+ <lne id="575" begin="144" end="144"/>
+ <lne id="576" begin="144" end="146"/>
+ <lne id="577" begin="134" end="147"/>
+ <lne id="578" begin="134" end="147"/>
+ <lne id="579" begin="152" end="152"/>
+ <lne id="580" begin="152" end="153"/>
+ <lne id="581" begin="156" end="156"/>
+ <lne id="582" begin="157" end="157"/>
+ <lne id="583" begin="156" end="158"/>
+ <lne id="584" begin="159" end="159"/>
+ <lne id="585" begin="156" end="160"/>
+ <lne id="586" begin="149" end="162"/>
+ <lne id="587" begin="165" end="165"/>
+ <lne id="588" begin="166" end="166"/>
+ <lne id="589" begin="165" end="167"/>
+ <lne id="590" begin="169" end="169"/>
+ <lne id="591" begin="169" end="170"/>
+ <lne id="592" begin="171" end="171"/>
+ <lne id="593" begin="169" end="172"/>
+ <lne id="594" begin="174" end="174"/>
+ <lne id="595" begin="174" end="175"/>
+ <lne id="596" begin="176" end="176"/>
+ <lne id="597" begin="174" end="177"/>
+ <lne id="598" begin="179" end="179"/>
+ <lne id="599" begin="179" end="180"/>
+ <lne id="600" begin="181" end="181"/>
+ <lne id="601" begin="179" end="182"/>
+ <lne id="602" begin="188" end="188"/>
+ <lne id="603" begin="188" end="189"/>
+ <lne id="604" begin="190" end="190"/>
+ <lne id="605" begin="190" end="191"/>
+ <lne id="606" begin="192" end="192"/>
+ <lne id="607" begin="190" end="193"/>
+ <lne id="608" begin="190" end="194"/>
+ <lne id="609" begin="188" end="195"/>
+ <lne id="610" begin="188" end="197"/>
+ <lne id="611" begin="198" end="198"/>
+ <lne id="612" begin="198" end="200"/>
+ <lne id="613" begin="201" end="201"/>
+ <lne id="614" begin="201" end="203"/>
+ <lne id="615" begin="184" end="204"/>
+ <lne id="616" begin="210" end="210"/>
+ <lne id="617" begin="210" end="211"/>
+ <lne id="618" begin="212" end="212"/>
+ <lne id="619" begin="212" end="213"/>
+ <lne id="620" begin="214" end="214"/>
+ <lne id="621" begin="215" end="215"/>
+ <lne id="622" begin="214" end="216"/>
+ <lne id="623" begin="212" end="217"/>
+ <lne id="624" begin="212" end="218"/>
+ <lne id="625" begin="210" end="219"/>
+ <lne id="626" begin="210" end="221"/>
+ <lne id="627" begin="222" end="222"/>
+ <lne id="628" begin="222" end="224"/>
+ <lne id="629" begin="225" end="225"/>
+ <lne id="630" begin="226" end="226"/>
+ <lne id="631" begin="225" end="227"/>
+ <lne id="632" begin="228" end="228"/>
+ <lne id="633" begin="225" end="229"/>
+ <lne id="634" begin="225" end="231"/>
+ <lne id="635" begin="206" end="232"/>
+ <lne id="636" begin="179" end="232"/>
+ <lne id="637" begin="238" end="238"/>
+ <lne id="638" begin="238" end="239"/>
+ <lne id="639" begin="240" end="240"/>
+ <lne id="640" begin="240" end="241"/>
+ <lne id="641" begin="242" end="242"/>
+ <lne id="642" begin="243" end="243"/>
+ <lne id="643" begin="242" end="244"/>
+ <lne id="644" begin="240" end="245"/>
+ <lne id="645" begin="240" end="246"/>
+ <lne id="646" begin="238" end="247"/>
+ <lne id="647" begin="238" end="249"/>
+ <lne id="648" begin="250" end="250"/>
+ <lne id="649" begin="250" end="252"/>
+ <lne id="650" begin="253" end="253"/>
+ <lne id="651" begin="254" end="254"/>
+ <lne id="652" begin="253" end="255"/>
+ <lne id="653" begin="256" end="256"/>
+ <lne id="654" begin="253" end="257"/>
+ <lne id="655" begin="253" end="259"/>
+ <lne id="656" begin="234" end="260"/>
+ <lne id="657" begin="174" end="260"/>
+ <lne id="658" begin="266" end="266"/>
+ <lne id="659" begin="266" end="267"/>
+ <lne id="660" begin="266" end="269"/>
+ <lne id="661" begin="270" end="270"/>
+ <lne id="662" begin="270" end="272"/>
+ <lne id="663" begin="273" end="273"/>
+ <lne id="664" begin="274" end="274"/>
+ <lne id="665" begin="273" end="275"/>
+ <lne id="666" begin="273" end="277"/>
+ <lne id="667" begin="262" end="278"/>
+ <lne id="668" begin="169" end="278"/>
+ <lne id="669" begin="280" end="280"/>
+ <lne id="670" begin="165" end="280"/>
+ <lne id="671" begin="134" end="283"/>
+ <lne id="672" begin="134" end="283"/>
+ <lne id="673" begin="285" end="285"/>
+ <lne id="674" begin="285" end="286"/>
+ <lne id="675" begin="134" end="286"/>
+ <lne id="676" begin="0" end="286"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="3" name="97" begin="155" end="161"/>
+ <lve slot="3" name="97" begin="164" end="281"/>
+ <lve slot="2" name="98" begin="148" end="283"/>
+ <lve slot="2" name="233" begin="284" end="286"/>
+ <lve slot="1" name="494" begin="133" end="286"/>
+ <lve slot="0" name="25" begin="0" end="286"/>
+ </localvariabletable>
+ </operation>
+ <operation name="677">
+ <context type="2"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="131"/>
+ <push arg="64"/>
+ <new/>
+ <push arg="678"/>
+ <call arg="133"/>
+ <push arg="679"/>
+ <call arg="133"/>
+ <push arg="680"/>
+ <call arg="133"/>
+ <push arg="681"/>
+ <call arg="133"/>
+ <store arg="3"/>
+ <load arg="3"/>
+ <load arg="5"/>
+ <pushi arg="3"/>
+ <pushi arg="3"/>
+ <call arg="9"/>
+ <call arg="682"/>
+ <if arg="683"/>
+ <load arg="5"/>
+ <goto arg="684"/>
+ <load arg="5"/>
+ <pushi arg="29"/>
+ <load arg="5"/>
+ <call arg="4"/>
+ <call arg="9"/>
+ <call arg="685"/>
+ </code>
+ <linenumbertable>
+ <lne id="686" begin="3" end="3"/>
+ <lne id="687" begin="5" end="5"/>
+ <lne id="688" begin="7" end="7"/>
+ <lne id="689" begin="9" end="9"/>
+ <lne id="690" begin="0" end="10"/>
+ <lne id="691" begin="0" end="10"/>
+ <lne id="692" begin="12" end="12"/>
+ <lne id="693" begin="13" end="13"/>
+ <lne id="694" begin="14" end="14"/>
+ <lne id="695" begin="15" end="15"/>
+ <lne id="696" begin="13" end="16"/>
+ <lne id="697" begin="12" end="17"/>
+ <lne id="698" begin="19" end="19"/>
+ <lne id="699" begin="21" end="21"/>
+ <lne id="700" begin="22" end="22"/>
+ <lne id="701" begin="23" end="23"/>
+ <lne id="702" begin="23" end="24"/>
+ <lne id="703" begin="21" end="25"/>
+ <lne id="704" begin="21" end="26"/>
+ <lne id="705" begin="12" end="26"/>
+ <lne id="706" begin="0" end="26"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="707" begin="11" end="26"/>
+ <lve slot="0" name="25" begin="0" end="26"/>
+ </localvariabletable>
+ </operation>
+ <operation name="708">
+ <context type="2"/>
+ <parameters>
+ </parameters>
+ <code>
+ <push arg="131"/>
+ <push arg="64"/>
+ <new/>
+ <push arg="678"/>
+ <call arg="133"/>
+ <push arg="679"/>
+ <call arg="133"/>
+ <push arg="680"/>
+ <call arg="133"/>
+ <push arg="681"/>
+ <call arg="133"/>
+ <store arg="3"/>
+ <load arg="3"/>
+ <load arg="5"/>
+ <load arg="5"/>
+ <call arg="4"/>
+ <load arg="5"/>
+ <call arg="4"/>
+ <call arg="9"/>
+ <call arg="682"/>
+ <if arg="709"/>
+ <load arg="5"/>
+ <goto arg="710"/>
+ <load arg="5"/>
+ <pushi arg="3"/>
+ <load arg="5"/>
+ <call arg="4"/>
+ <pushi arg="3"/>
+ <call arg="152"/>
+ <call arg="9"/>
+ <call arg="711"/>
+ </code>
+ <linenumbertable>
+ <lne id="712" begin="3" end="3"/>
+ <lne id="713" begin="5" end="5"/>
+ <lne id="714" begin="7" end="7"/>
+ <lne id="715" begin="9" end="9"/>
+ <lne id="716" begin="0" end="10"/>
+ <lne id="717" begin="0" end="10"/>
+ <lne id="718" begin="12" end="12"/>
+ <lne id="719" begin="13" end="13"/>
+ <lne id="720" begin="14" end="14"/>
+ <lne id="721" begin="14" end="15"/>
+ <lne id="722" begin="16" end="16"/>
+ <lne id="723" begin="16" end="17"/>
+ <lne id="724" begin="13" end="18"/>
+ <lne id="725" begin="12" end="19"/>
+ <lne id="726" begin="21" end="21"/>
+ <lne id="727" begin="23" end="23"/>
+ <lne id="728" begin="24" end="24"/>
+ <lne id="729" begin="25" end="25"/>
+ <lne id="730" begin="25" end="26"/>
+ <lne id="731" begin="27" end="27"/>
+ <lne id="732" begin="25" end="28"/>
+ <lne id="733" begin="23" end="29"/>
+ <lne id="734" begin="23" end="30"/>
+ <lne id="735" begin="12" end="30"/>
+ <lne id="736" begin="0" end="30"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="1" name="707" begin="11" end="30"/>
+ <lve slot="0" name="25" begin="0" end="30"/>
+ </localvariabletable>
+ </operation>
+ <operation name="737">
+ <context type="2"/>
+ <parameters>
+ </parameters>
+ <code>
+ <load arg="5"/>
+ <call arg="685"/>
+ <call arg="711"/>
+ </code>
+ <linenumbertable>
+ <lne id="738" begin="0" end="0"/>
+ <lne id="739" begin="0" end="1"/>
+ <lne id="740" begin="0" end="2"/>
+ </linenumbertable>
+ <localvariabletable>
+ <lve slot="0" name="25" begin="0" end="2"/>
+ </localvariabletable>
+ </operation>
+</asm>
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/src/org/eclipse/gmt/tcs/dsls/Activator.java b/plugins/org.eclipse.gmt.tcs.dsls/src/org/eclipse/gmt/tcs/dsls/Activator.java
new file mode 100644
index 0000000..bfa268c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/src/org/eclipse/gmt/tcs/dsls/Activator.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: Activator.java,v 1.2 2008/06/25 12:50:28 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.dsls;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ *
+ * @author Frédéric Jouault
+ * @author Mikaël Barbero
+ *
+ */
+public class Activator extends Plugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.gmt.tcs.dsls";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.dsls/src/org/eclipse/gmt/tcs/dsls/DSLResourceProvider.java b/plugins/org.eclipse.gmt.tcs.dsls/src/org/eclipse/gmt/tcs/dsls/DSLResourceProvider.java
new file mode 100644
index 0000000..b533e6c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.dsls/src/org/eclipse/gmt/tcs/dsls/DSLResourceProvider.java
@@ -0,0 +1,33 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: DSLResourceProvider.java,v 1.4 2008/06/25 12:50:28 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.dsls;
+
+import org.osgi.framework.Bundle;
+
+/**
+ *
+ * @author Frédéric Jouault
+ * @author Mikaël Barbero
+ *
+ */
+public class DSLResourceProvider extends
+ org.eclipse.m2m.atl.dsls.DSLResourceProvider {
+
+ public Bundle getBundle() {
+ return Activator.getDefault().getBundle();
+ }
+
+ public String getPluginId() {
+ return Activator.PLUGIN_ID;
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.emfresource/.classpath b/plugins/org.eclipse.gmt.tcs.emfresource/.classpath
new file mode 100644
index 0000000..f1b3ad8
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.emfresource/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.gmt.tcs.emfresource/.project b/plugins/org.eclipse.gmt.tcs.emfresource/.project
new file mode 100644
index 0000000..572912b
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.emfresource/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.gmt.tcs.emfresource</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.gmt.tcs.emfresource/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.gmt.tcs.emfresource/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..1d2ae5f
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.emfresource/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Tue Apr 01 16:39:59 CEST 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/plugins/org.eclipse.gmt.tcs.emfresource/META-INF/MANIFEST.MF b/plugins/org.eclipse.gmt.tcs.emfresource/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..50289a1
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.emfresource/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.gmt.tcs.emfresource;singleton:=true
+Bundle-Version: 0.8.0
+Bundle-Activator: org.eclipse.gmt.tcs.emfresource.Activator
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.gmt.tcs.metadata,
+ org.eclipse.emf.ecore,
+ org.eclipse.m2m.atl.engine,
+ org.eclipse.emf.ecore.xmi
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.gmt.tcs.emfresource/about.html b/plugins/org.eclipse.gmt.tcs.emfresource/about.html
new file mode 100644
index 0000000..7cc291c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.emfresource/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>January 21, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.emfresource/bin/org/eclipse/gmt/tcs/emfresource/Activator.class b/plugins/org.eclipse.gmt.tcs.emfresource/bin/org/eclipse/gmt/tcs/emfresource/Activator.class
new file mode 100644
index 0000000..875fc50
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.emfresource/bin/org/eclipse/gmt/tcs/emfresource/Activator.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.emfresource/bin/org/eclipse/gmt/tcs/emfresource/LanguageRegistryListener.class b/plugins/org.eclipse.gmt.tcs.emfresource/bin/org/eclipse/gmt/tcs/emfresource/LanguageRegistryListener.class
new file mode 100644
index 0000000..08be2ba
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.emfresource/bin/org/eclipse/gmt/tcs/emfresource/LanguageRegistryListener.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.emfresource/bin/org/eclipse/gmt/tcs/emfresource/TCSResource.class b/plugins/org.eclipse.gmt.tcs.emfresource/bin/org/eclipse/gmt/tcs/emfresource/TCSResource.class
new file mode 100644
index 0000000..6eb6440
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.emfresource/bin/org/eclipse/gmt/tcs/emfresource/TCSResource.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.emfresource/bin/org/eclipse/gmt/tcs/emfresource/TCSResourceFactoryImpl.class b/plugins/org.eclipse.gmt.tcs.emfresource/bin/org/eclipse/gmt/tcs/emfresource/TCSResourceFactoryImpl.class
new file mode 100644
index 0000000..c4614be
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.emfresource/bin/org/eclipse/gmt/tcs/emfresource/TCSResourceFactoryImpl.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.emfresource/build.properties b/plugins/org.eclipse.gmt.tcs.emfresource/build.properties
new file mode 100644
index 0000000..3d3dffb
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.emfresource/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ plugin.xml
+src.includes = about.html
diff --git a/plugins/org.eclipse.gmt.tcs.emfresource/plugin.properties b/plugins/org.eclipse.gmt.tcs.emfresource/plugin.properties
new file mode 100644
index 0000000..1a89f53
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.emfresource/plugin.properties
@@ -0,0 +1,3 @@
+# NLS_MESSAGEFORMAT_VAR
+pluginName=TCS EMF Resource (Incubation)
+providerName=Eclipse.org
diff --git a/plugins/org.eclipse.gmt.tcs.emfresource/plugin.xml b/plugins/org.eclipse.gmt.tcs.emfresource/plugin.xml
new file mode 100644
index 0000000..0c3481f
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.emfresource/plugin.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ point="org.eclipse.gmt.tcs.metadata.registryListener">
+ <registryListener
+ class="org.eclipse.gmt.tcs.emfresource.LanguageRegistryListener"></registryListener>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.gmt.tcs.emfresource/src/org/eclipse/gmt/tcs/emfresource/Activator.java b/plugins/org.eclipse.gmt.tcs.emfresource/src/org/eclipse/gmt/tcs/emfresource/Activator.java
new file mode 100644
index 0000000..373f901
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.emfresource/src/org/eclipse/gmt/tcs/emfresource/Activator.java
@@ -0,0 +1,65 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: Activator.java,v 1.1 2008/04/01 18:33:06 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.emfresource;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class Activator extends Plugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.gmt.tcs.emfresource";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.emfresource/src/org/eclipse/gmt/tcs/emfresource/LanguageRegistryListener.java b/plugins/org.eclipse.gmt.tcs.emfresource/src/org/eclipse/gmt/tcs/emfresource/LanguageRegistryListener.java
new file mode 100644
index 0000000..3f68aee
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.emfresource/src/org/eclipse/gmt/tcs/emfresource/LanguageRegistryListener.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: LanguageRegistryListener.java,v 1.2 2008/04/13 21:45:58 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.emfresource;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.gmt.tcs.metadata.Language;
+import org.eclipse.gmt.tcs.metadata.Utils;
+
+/**
+ * @author Frédéric Jouault
+ *
+ */
+public class LanguageRegistryListener implements org.eclipse.gmt.tcs.metadata.LanguageRegistryListener {
+
+ public void registered(Language language) {
+ String extension = language.getExtension();
+ Utils.registerEditorForExtension("org.eclipse.emf.ecore.presentation.ReflectiveEditorID", extension, false);
+ Map etfm = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap();
+ etfm.put(extension, new TCSResourceFactoryImpl());
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.emfresource/src/org/eclipse/gmt/tcs/emfresource/TCSResource.java b/plugins/org.eclipse.gmt.tcs.emfresource/src/org/eclipse/gmt/tcs/emfresource/TCSResource.java
new file mode 100644
index 0000000..67ace5d
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.emfresource/src/org/eclipse/gmt/tcs/emfresource/TCSResource.java
@@ -0,0 +1,131 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TCSResource.java,v 1.3 2008/07/04 12:17:22 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.emfresource;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.impl.ResourceImpl;
+import org.eclipse.gmt.tcs.metadata.ASMModelFactory;
+import org.eclipse.gmt.tcs.metadata.Language;
+import org.eclipse.gmt.tcs.metadata.LanguageRegistry;
+import org.eclipse.gmt.tcs.metadata.ModelFactory;
+import org.eclipse.gmt.tcs.metadata.RegularVMLauncher;
+import org.eclipse.m2m.atl.drivers.emf4atl.ASMEMFModel;
+import org.eclipse.m2m.atl.dsls.textsource.TextSource;
+import org.eclipse.m2m.atl.engine.AtlEMFModelHandler;
+import org.eclipse.m2m.atl.engine.AtlModelHandler;
+import org.eclipse.m2m.atl.engine.vm.nativelib.AMN;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModelElement;
+
+/**
+ *
+ * @author Frederic Jouault
+ */
+public class TCSResource extends ResourceImpl {
+
+ private boolean reportProblems = false;
+
+ public TCSResource(URI uri) {
+ super(uri);
+ }
+
+ protected void doLoad(final InputStream in, Map arg1) throws IOException {
+ URI uri = getURI();
+ Map uriMap = this.getURIConverter().getURIMap();
+ if(uriMap.containsKey(uri)) {
+ uri = (URI)uriMap.get(uri);
+ }
+ Language language = LanguageRegistry.getDefault().getLanguage(uri.fileExtension());
+ if(language != null) {
+ Map params = new HashMap();
+ AtlEMFModelHandler amh = (AtlEMFModelHandler)AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
+ ModelFactory factory = ASMModelFactory.getDefault();
+ ASMEMFModel metamodel = (ASMEMFModel)language.getMetamodel(factory);
+ ASMModel pbs = amh.newModel("pbs", "pbs.xmi", amh.getBuiltInMetaModel("Problem"));
+ params.put("problems", pbs);
+ params.put("vmLauncher", new RegularVMLauncher());
+ try {
+ language.inject(factory, ASMEMFModel.loadASMEMFModel("model.xmi", metamodel, this, null), new TextSource() {
+ public InputStream openStream() throws IOException {
+ return in;
+ }
+ }, params);
+ } catch (Exception e) {
+ IOException ioe = new IOException("injection error");
+ ioe.initCause(e);
+ throw ioe;
+ }
+ int nbErrors = 0;
+ if(reportProblems) {
+ for(Iterator i = pbs.getElementsByType("Problem").iterator() ; i.hasNext() ; ) {
+ ASMModelElement ame = (ASMModelElement)i.next();
+ String severity = AMN.getString(ame, "severity");
+ List list = null;
+ if("error".equals(severity)) {
+ list = getErrors();
+ nbErrors++;
+ } else if("warning".equals(severity)) {
+ list = getWarnings();
+ }
+ if(list != null) {
+ final String message = AMN.getString(ame, "description");
+ String location = AMN.getString(ame, "location");
+ String parts[] = location.split("-")[0].split(":");
+ final int line = Integer.parseInt(parts[0]);
+ final int column = Integer.parseInt(parts[1]);
+ list.add(new Diagnostic() {
+ public int getColumn() {
+ return column;
+ }
+
+ public int getLine() {
+ return line;
+ }
+
+ public String getLocation() {
+ return getURI().toString();
+ }
+
+ public String getMessage() {
+ return message;
+ }
+ });
+ }
+ }
+ if(nbErrors == 0) {
+ getWarnings().clear(); // because the EMF editor fails when there are warnings
+ }
+ }
+ } else {
+ throw new RuntimeException("Unknown extension: " + uri.fileExtension());
+ }
+ }
+
+ protected void doSave(OutputStream arg0, Map arg1) throws IOException {
+// String fileName = uri.lastSegment();
+// String parts[] = fileName.split("\\.");
+// if(parts.length > 2) {
+// if(parts[])
+// }
+ throw new RuntimeException("cannot save");
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.emfresource/src/org/eclipse/gmt/tcs/emfresource/TCSResourceFactoryImpl.java b/plugins/org.eclipse.gmt.tcs.emfresource/src/org/eclipse/gmt/tcs/emfresource/TCSResourceFactoryImpl.java
new file mode 100644
index 0000000..ca4e76c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.emfresource/src/org/eclipse/gmt/tcs/emfresource/TCSResourceFactoryImpl.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TCSResourceFactoryImpl.java,v 1.2 2008/04/08 15:11:31 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.emfresource;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceImpl;
+
+/**
+ *
+ * @author Frederic Jouault
+ */
+public class TCSResourceFactoryImpl implements Resource.Factory {
+
+ public Resource createResource(URI uri) {
+ if(uri.scheme() != null) {
+ return new TCSResource(uri);
+ } else {
+ // if there is no scheme, then it may have been created by ant tasks
+ return new XMIResourceImpl(uri);
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/.classpath b/plugins/org.eclipse.gmt.tcs.extractor/.classpath
new file mode 100644
index 0000000..18a194d
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/.project b/plugins/org.eclipse.gmt.tcs.extractor/.project
new file mode 100644
index 0000000..41263ed
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.gmt.tcs.extractor</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.gmt.tcs.extractor/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..dd135fe
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Mon Feb 18 17:45:19 CET 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/META-INF/MANIFEST.MF b/plugins/org.eclipse.gmt.tcs.extractor/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..5896ab7
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.gmt.tcs.extractor
+Bundle-Version: 0.8.0
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.m2m.atl.engine.vm
+Export-Package: org.eclipse.gmt.tcs.extractor
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/about.html b/plugins/org.eclipse.gmt.tcs.extractor/about.html
new file mode 100644
index 0000000..7cc291c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>January 21, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/ASMModelAdapter.class b/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/ASMModelAdapter.class
new file mode 100644
index 0000000..5aff44b
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/ASMModelAdapter.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/ModelAdapter.class b/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/ModelAdapter.class
new file mode 100644
index 0000000..85ac2ad
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/ModelAdapter.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/PrettyPrinter.class b/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/PrettyPrinter.class
new file mode 100644
index 0000000..f3b0419
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/PrettyPrinter.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/TCSExtractionException.class b/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/TCSExtractionException.class
new file mode 100644
index 0000000..d7b5baa
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/TCSExtractionException.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/TCSExtractor.class b/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/TCSExtractor.class
new file mode 100644
index 0000000..5312eaa
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/TCSExtractor.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/TCSExtractorPrintStream.class b/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/TCSExtractorPrintStream.class
new file mode 100644
index 0000000..a791ab5
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/TCSExtractorPrintStream.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/TCSExtractorStream.class b/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/TCSExtractorStream.class
new file mode 100644
index 0000000..e8aa60d
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/bin/org/eclipse/gmt/tcs/extractor/TCSExtractorStream.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/build.properties b/plugins/org.eclipse.gmt.tcs.extractor/build.properties
new file mode 100644
index 0000000..a32ff48
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/build.properties
@@ -0,0 +1,13 @@
+output.org.eclipse.gmt.tcs.extractor.jar = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties
+src.includes = src/,\
+ build.properties,\
+ .project,\
+ .classpath,\
+ META-INF/,\
+ about.html
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/plugin.properties b/plugins/org.eclipse.gmt.tcs.extractor/plugin.properties
new file mode 100644
index 0000000..dc4ec45
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/plugin.properties
@@ -0,0 +1,3 @@
+# NLS_MESSAGEFORMAT_VAR
+pluginName=TCS Extractor (Incubation)
+providerName=Eclipse.org
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/ASMModelAdapter.java b/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/ASMModelAdapter.java
new file mode 100644
index 0000000..73dbefc
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/ASMModelAdapter.java
@@ -0,0 +1,133 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ASMModelAdapter.java,v 1.2 2008/05/05 16:55:13 fjouault Exp $
+ */
+
+package org.eclipse.gmt.tcs.extractor;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.eclipse.m2m.atl.engine.vm.nativelib.AMN;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMBoolean;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMCollection;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMEnumLiteral;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMInteger;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModelElement;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMReal;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMString;
+
+/**
+ * @author Frédéric Jouault
+ * @author Mikaël Barbero
+ *
+ */
+public class ASMModelAdapter implements ModelAdapter {
+
+ public Object get(Object me, String propName) {
+ Object ret = AMN.get((ASMModelElement)me, propName);
+
+ return asm2java(ret);
+ }
+
+ private Object asm2java(Object value) {
+ if (value instanceof ASMCollection) {
+ Collection newC = new ArrayList();
+ for(Iterator i = ((ASMCollection)value).iterator() ; i.hasNext() ; ) {
+ newC.add(asm2java(i.next()));
+ }
+ return newC;
+ } else if (value instanceof ASMString) {
+ return ((ASMString)value).getSymbol();
+ } else if(value instanceof ASMInteger) {
+ return new Integer((((ASMInteger)value).getSymbol()));
+ } else if(value instanceof ASMReal) {
+ return new Double((((ASMReal)value).getSymbol()));
+ } else if(value instanceof ASMBoolean) {
+ return new Boolean((((ASMBoolean)value).getSymbol()));
+ }
+ return value;
+ }
+
+ public boolean getBool(Object me, String propName) {
+ return AMN.getBool((ASMModelElement)me, propName);
+ }
+
+ public boolean getBoolUndefinedIsFalse(Object me, String propName) {
+ return AMN.getBoolUndefinedIsFalse((ASMModelElement)me, propName);
+ }
+
+ public Iterator getCol(Object me, String propName) {
+ return AMN.getCol((ASMModelElement)me, propName);
+ }
+
+ public Set getElementsByType(Object model, String typeName) {
+ return ((ASMModel)model).getElementsByType(typeName);
+ }
+
+ public int getInt(Object me, String propName) {
+ return AMN.getInt((ASMModelElement)me, propName);
+ }
+
+ public Object getME(Object me, String propName) {
+ return AMN.getME((ASMModelElement)me, propName);
+ }
+
+ public Object getMetaobject(Object me) {
+ return ((ASMModelElement)me).getMetaobject();
+ }
+
+ public String getString(Object me, String propName) {
+ return AMN.getString((ASMModelElement)me, propName);
+ }
+
+ public String getTypeName(Object me) {
+ return AMN.getTypeName((ASMModelElement)me);
+ }
+
+ public Object refImmediateComposite(Object me) {
+ return ((ASMModelElement)me).refImmediateComposite();
+ }
+
+ public boolean isAModelElement(Object o) {
+ return (o instanceof ASMModelElement);
+ }
+
+ public Object getPropertyType(Object f, String propName) {
+ return ((ASMModelElement)f).getPropertyType(propName);
+ }
+
+ public String getName(Object me) {
+ return this.getString(me, "name");
+ }
+
+ public boolean isPrimitive(Object value) {
+ return ((value instanceof String) ||
+ (value instanceof Boolean) ||
+ (value instanceof Double) ||
+ (value instanceof Integer));
+ }
+
+ public boolean isEnumLiteral(Object value) {
+ return (value instanceof ASMEnumLiteral);
+ }
+
+ public String getEnumLiteralName(Object me) {
+ return ((ASMEnumLiteral)me).getName();
+ }
+
+ public String nextString(Iterator i) {
+ return AMN.nextString(i);
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/ModelAdapter.java b/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/ModelAdapter.java
new file mode 100644
index 0000000..b2db524
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/ModelAdapter.java
@@ -0,0 +1,53 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ModelAdapter.java,v 1.3 2008/06/25 12:48:35 fjouault Exp $
+ */
+
+package org.eclipse.gmt.tcs.extractor;
+
+import java.util.Iterator;
+import java.util.Set;
+
+
+/**
+ *
+ * @author Frédéric Jouault
+ * @author Mikaël Barbero
+ *
+ */
+public interface ModelAdapter {
+
+ public String getString(Object me, String propName);
+ public boolean getBool(Object me, String propName);
+ public boolean getBoolUndefinedIsFalse(Object me, String propName);
+ public int getInt(Object me, String propName);
+ public Iterator getCol(Object me, String propName);
+ public Object getME(Object me, String propName);
+ public String getName(Object me);
+ public String getEnumLiteralName(Object me);
+ public Object get(Object me, String propName);
+
+ public Set getElementsByType(Object model, String typeName);
+
+ public String getTypeName(Object me);
+ public Object getMetaobject(Object me);
+
+ public Object refImmediateComposite(Object me);
+
+ public boolean isAModelElement(Object o);
+ public Object getPropertyType(Object f, String propName);
+
+ public boolean isPrimitive(Object value);
+ public boolean isEnumLiteral(Object value);
+
+ public String nextString(Iterator i);
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/PrettyPrinter.java b/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/PrettyPrinter.java
new file mode 100644
index 0000000..d0085a6
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/PrettyPrinter.java
@@ -0,0 +1,962 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: PrettyPrinter.java,v 1.7 2008/07/02 18:33:39 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.extractor;
+
+import java.io.OutputStream;
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Stack;
+
+
+/**
+ * @author Frédéric Jouault
+ * @author Mikaël Barbero
+ *
+ */
+public class PrettyPrinter {
+
+ private Map templates = new HashMap();
+ private Map primitiveTemplates = new HashMap();
+ private Map tokens = new HashMap();
+ private Collection keywords = new ArrayList();
+ private boolean kwCheckIgnoreCase;
+ private String identEscStart = "\"";
+ private String identEscEnd = "\"";
+ private String stringDelim = "\'";
+ private boolean serializeComments = true;
+ private boolean usePrimitiveTemplates = false;
+ private static DecimalFormatSymbols dfs = new DecimalFormatSymbols();
+ private DecimalFormat df = new DecimalFormat("0.##############", dfs);
+
+ private TCSExtractorStream out;
+
+ private Stack priorities = new Stack();
+ private Stack currentSeparator = new Stack();
+ private int indentLevel = 0;
+ private String indentString = " ";
+ private String curIndent = "";
+ private String standardSeparator = " ";
+ private String lineFeed = "\n";
+
+ private ModelAdapter modelAdapter;
+
+ public void prettyPrint(Object source, ModelAdapter ma, OutputStream target, Map arguments) {
+ this.modelAdapter = ma;
+
+ out = (TCSExtractorStream)arguments.get("stream");
+ if(out == null)
+ out = new TCSExtractorPrintStream(target);
+
+ String newIndentString = (String)arguments.get("indentString");
+ String newStandardSeparator = (String)arguments.get("standardSeparator");
+ kwCheckIgnoreCase = "true".equals(arguments.get("kwCheckIgnoreCase"));
+ debug = "true".equals(arguments.get("debug"));
+ debugws = "true".equals(arguments.get("debugws"));
+ serializeComments = !"false".equals(arguments.get("serializeComments"));
+ usePrimitiveTemplates = "true".equals(arguments.get("usePrimitiveTemplates"));
+ String identEscStart = (String)arguments.get("identEscStart");
+ if(identEscStart != null) {
+ this.identEscStart = identEscStart;
+ }
+ String identEscEnd = (String)arguments.get("identEscEnd");
+ if(identEscEnd != null) {
+ this.identEscEnd = identEscEnd;
+ }
+ String identEsc = (String)arguments.get("identEsc");
+ if(identEsc != null) {
+ this.identEscStart = identEsc;
+ this.identEscEnd = identEsc;
+ }
+ String stringDelim = (String)arguments.get("stringDelim");
+ if(stringDelim != null) {
+ this.stringDelim = stringDelim;
+ }
+ String decimalFormat = (String)arguments.get("decimalFormat");
+ if(decimalFormat != null) {
+ this.df = new DecimalFormat(decimalFormat, dfs);
+ }
+
+
+ if(newIndentString != null)
+ indentString = newIndentString;
+
+ if(newStandardSeparator != null)
+ standardSeparator = newStandardSeparator;
+
+ Object format = arguments.get("format");
+ String rootName = null;
+ Object rootTemplate = null;
+ for(Iterator i = modelAdapter.getElementsByType(format, "Template").iterator() ; i.hasNext() ; ) {
+ Object ame = i.next();
+ String name = this.modelAdapter.getString(ame, "name");
+ boolean isMain = false;
+ if("ClassTemplate".equals(this.modelAdapter.getTypeName(ame))) {
+ isMain = this.modelAdapter.getBool(ame, "isMain");
+ }
+ if(isMain) {
+ rootName = name;
+ rootTemplate = ame;
+ }
+
+ if(this.modelAdapter.getTypeName(ame).equals("EnumerationTemplate")) {
+ Map mappings = new HashMap();
+ for(Iterator j = this.modelAdapter.getCol(ame, "mappings") ; j.hasNext() ; ) {
+ Object mapping = j.next();
+ mappings.put(this.modelAdapter.getString(this.modelAdapter.getME(mapping, "literal"), "name"), this.modelAdapter.getME(mapping, "element"));
+ }
+ templates.put(name, mappings);
+ } else if(this.modelAdapter.getTypeName(ame).equals("PrimitiveTemplate")) {
+ primitiveTemplates.put(name, ame);
+ name = this.modelAdapter.getString(ame, "typeName");
+ Collection c = (Collection)templates.get(name);
+ if(c == null) {
+ c = new ArrayList();
+ templates.put(name, c);
+ }
+ c.add(ame);
+ } else {
+ templates.put(name, ame);
+ }
+ }
+ for(Iterator i = modelAdapter.getElementsByType(format, "Keyword").iterator() ; i.hasNext() ; ) {
+ Object ame = i.next();
+ String value = this.modelAdapter.getString(ame, "value");
+ if(kwCheckIgnoreCase)
+ value = value.toUpperCase();
+ keywords.add(value);
+ }
+ for(Iterator i = modelAdapter.getElementsByType(format, "Token").iterator() ; i.hasNext() ; ) {
+ Object ame = i.next();
+ String name = this.modelAdapter.getString(ame, "name");
+ tokens.put(name, ame);
+//TODO:
+// if("COMMENT".equals(name)) {
+// this.modelAdapter.getCol(this.modelAdapter.getME(ame, "pattern"), "simplePatterns");
+// AMN.isa(ame, "");
+// commentToken = ame;
+// }
+ }
+ for(Iterator i = modelAdapter.getElementsByType(format, "Symbol").iterator() ; i.hasNext() ; ) {
+ Object ame = i.next();
+ String value = this.modelAdapter.getString(ame, "value");
+ debug("Symbol: " + value);
+ int type = TYPE_SYMBOL;
+ for(Iterator j = this.modelAdapter.getCol(ame, "spaces") ; j.hasNext() ; ) {
+ String l = this.modelAdapter.getEnumLiteralName(j.next());
+ debug("\tLiteral: " + l);
+ if(l.equals("leftSpace"))
+ type += SYMBOL_LS;
+ else if(l.equals("leftNone"))
+ type += SYMBOL_LN;
+ if(l.equals("rightSpace"))
+ type += SYMBOL_RS;
+ else if(l.equals("rightNone"))
+ type += SYMBOL_RN;
+ }
+ symbols.put(value, new Integer(type));
+ }
+
+ Iterator possibleRoots = this.modelAdapter.getElementsByType(source, rootName).iterator();
+ boolean isMulti = this.modelAdapter.getBool(rootTemplate, "isMulti");
+ boolean first = true;
+ while(possibleRoots.hasNext()) {
+ Object root = possibleRoots.next();
+ if(this.modelAdapter.isAModelElement(this.modelAdapter.refImmediateComposite(root)))
+ continue; // not a real root
+ if((!isMulti) && (!first)) {
+ System.out.println("Error: multiple possible roots found.");
+ break;
+ }
+ priorities.push(new Integer(Integer.MAX_VALUE));
+ //pushSep(" ");
+ serialize(root);
+ first = false;
+ }
+ if(first && !isMulti) {
+ System.out.println("Error: no root found.");
+ }
+ out.close();
+ }
+
+ private void pushSep(String sep) {
+ currentSeparator.push(sep);
+ debug("PUSHING SEPARATOR: \"" + sep + "\"");
+ }
+
+ private void popSep() {
+ String old = (String)currentSeparator.pop();
+ debug("POPING SEPARATOR: \"" + old + "\"");
+ }
+
+ private void serialize(Object ame) {
+ pushSep(standardSeparator);
+ String typeName = this.modelAdapter.getTypeName(ame);
+ debug("processing " + typeName);
+ Object template = templates.get(typeName);
+ if(template == null) {
+ throw new TCSExtractionException("cannot find mathing template for: " + typeName, null);
+ }
+ String templateTypeName = this.modelAdapter.getTypeName(template);
+ debug("Applying template type " + templateTypeName);
+
+ if(serializeComments) {
+ try {
+ boolean first = true;
+ boolean nl = false;
+ for(Iterator i = this.modelAdapter.getCol(ame, "commentsBefore") ; i.hasNext() ; ) {
+ String c = this.modelAdapter.nextString(i);
+ if(c.equals("\n")) {
+ nl = true;
+ } else {
+ debug("printing comment: \"" + c + "\"");
+ if(first && !nl) {
+ printComment(c);
+ //out.print("SHOULD-BE-NONL");
+ } else {
+ printComment(c);
+ }
+ printWS(lineFeed + curIndent);
+ first = false;
+ }
+ }
+ } catch(Exception e) {
+ System.out.println("Warning: could not get comments of " + ame + ", disabling further comments serialization");
+ serializeComments = false;
+ }
+ }
+ if(templateTypeName.equals("ClassTemplate")) {
+ priorities.push(new Integer(Integer.MAX_VALUE));
+ serializeSeq(ame, this.modelAdapter.getME(template, "templateSequence"));
+ priorities.pop();
+ } else if(templateTypeName.equals("OperatorTemplate")) {
+ String sourcePropName = this.modelAdapter.getString(template, "source");
+ String opPropName = this.modelAdapter.getString(template, "storeOpTo");
+ String rightPropName = this.modelAdapter.getString(template, "storeRightTo");
+ debug("OperatorTemplate: source = " + sourcePropName + " ; operator = " + opPropName + " ; right = " + rightPropName);
+
+ Object r = null;
+ boolean isPostfix = false; // only valid for unary operators
+ boolean isUnary = false;
+ if(rightPropName != null) {
+ r = this.modelAdapter.get(ame, rightPropName);
+ if(r instanceof Collection) {
+ isUnary = (((Collection)r).size() == 0);
+ } else {
+ isUnary = r == null;
+ }
+ } else {
+ isUnary = true;
+ }
+ debug("rightPropName = " + rightPropName + " ; isUnary = " + isUnary);
+
+ Object operator = null;
+ if(opPropName != null) {
+ String op = this.modelAdapter.getString(ame, opPropName);
+ if (op == null) {
+ throw new RuntimeException("Property " + opPropName + " has not been set in " + ame + " (" + this.modelAdapter.getMetaobject(ame) + ")");
+ }
+ for(Iterator i = this.modelAdapter.getCol(template, "operators") ; i.hasNext() && (operator == null) ; ) {
+ Object opme = i.next();
+ Object literal = this.modelAdapter.getME(opme, "literal");
+ String opmes = null;
+ if(literal == null)
+ opmes = "";
+ else
+ opmes = this.modelAdapter.getString(literal, "value");
+ int arity = this.modelAdapter.getInt(opme, "arity");
+ if(op.equals(opmes)) {
+ if(rightPropName != null) {
+ if((isUnary && (arity == 1)) ||
+ ((!isUnary) && (arity == 2))) {
+ operator = opme;
+ }
+ } else {
+ operator = opme;
+ isPostfix = this.modelAdapter.getBool(opme, "isPostfix");
+ }
+ }
+ }
+ if(operator == null) {
+ System.err.println("Error: could not find operator \"" + op + "\"");
+ }
+ } else {
+ operator = this.modelAdapter.getCol(template, "operators").next();
+ isUnary = this.modelAdapter.getInt(operator, "arity") == 1;
+ if(isUnary) {
+ isPostfix = this.modelAdapter.getBool(operator, "isPostfix");
+ }
+ }
+ int curPrio = ((Integer)priorities.peek()).intValue();
+ int priority = this.modelAdapter.getInt(this.modelAdapter.getME(operator, "priority"), "value");
+ boolean paren = priority > curPrio;
+ priorities.push(new Integer(priority));
+ Object literal = this.modelAdapter.getME(operator, "literal");
+ debug("PRIORITY = " + priority + " ; CURPRIO = " + curPrio + " ; OPERATOR = " + ((literal != null) ? this.modelAdapter.getString(literal, "value") : "") + " ; paren = " + paren);
+
+ if(paren)
+ printSymbol("(");
+
+ Object source = this.modelAdapter.getME(ame, sourcePropName);
+ if(isUnary) {
+ if(isPostfix) {
+ serialize(source);
+
+ if(literal != null)
+ printLiteral(literal);
+ } else {
+ if(literal != null)
+ printLiteral(literal);
+
+ serialize(source);
+ }
+ } else {
+ serialize(source);
+
+ if(literal != null)
+ printLiteral(literal);
+ }
+
+ Object seq = this.modelAdapter.getME(template, "otSequence");
+ if(rightPropName == null) {
+ priorities.push(new Integer(Integer.MAX_VALUE));
+ serializeSeq(ame, seq);
+ priorities.pop();
+ } else {
+ if(seq != null)
+ serializeSeq(ame, seq);
+ if(r instanceof Collection) {
+ for(Iterator i = ((Collection)r).iterator() ; i.hasNext() ; ) {
+ serialize(i.next());
+ }
+ } else {
+ if(!isUnary)
+ serialize(r);
+ }
+ }
+ priorities.pop();
+ if(paren)
+ printSymbol(")");
+ } else {
+ error("unsupported template type: " + templateTypeName);
+ }
+ if(serializeComments) {
+ try {
+ for(Iterator i = this.modelAdapter.getCol(ame, "commentsAfter") ; i.hasNext() ; ) {
+ String c = this.modelAdapter.nextString(i);
+ if(c.equals("\n")) {
+
+ } else {
+ printComment(c);
+ printWS(lineFeed + curIndent);
+ }
+ }
+ } catch(Exception e) {
+ System.out.println("Warning: could not get comments of " + ame + ", disabling further comments serialization");
+ serializeComments = false;
+ }
+ }
+ popSep();
+ }
+ private void serializeSeq(Object ame, Object seq) {
+ if(seq != null) {
+ for(Iterator i = this.modelAdapter.getCol(seq, "elements") ; i.hasNext() ; ) {
+ Object e = i.next();
+ serializeSeqElem(ame, e);
+ }
+ }
+ }
+
+ private String getLineFeeds(int n) {
+ String ret = "";
+
+ for(int i = 0 ; i < n ; i++) {
+ ret += lineFeed;
+ }
+
+ return ret;
+ }
+
+
+ /**
+ *
+ * @param element Context model element of which to serialize a part (from source model).
+ * @param seqElem SequenceElement specifying a part of element to serialize.
+ */
+ private void serializeSeqElem(Object element, Object seqElem) {
+ String tn = this.modelAdapter.getTypeName(seqElem);
+ debug("serializing seq elem " + tn);
+ if(tn.equals("LiteralRef")) {
+ Object literal = this.modelAdapter.getME(seqElem, "referredLiteral");
+ printLiteral(literal);
+ } else if(tn.equals("CustomSeparator")) {
+ String name = this.modelAdapter.getString(seqElem, "name");
+ if(name.equals("no_space")) {
+ typeLast = TYPE_SYMBOL + SYMBOL_RN;
+ } else if(name.equals("space")) {
+ printWS(" ");
+ } else if(name.equals("newline")) {
+ printWS(lineFeed);
+ } else if(name.equals("tab")) {
+ printWS("\t");
+ }
+ } else if(tn.equals("Property")) {
+ Object v = this.modelAdapter.get(element, this.modelAdapter.getString(seqElem, "name"));
+ serializeProperty(element, v, seqElem);
+ } else if(tn.equals("Block")) {
+if(debugws) out.debug("<block>");
+ Object nbNLBArg = getBArg(this.modelAdapter, seqElem, "NbNL");
+ Object startNbNLBArg = getBArg(this.modelAdapter, seqElem, "StartNbNL");
+ Object indentIncrBArg = getBArg(this.modelAdapter, seqElem, "IndentIncr");
+ Object startNLBArg = getBArg(this.modelAdapter, seqElem, "StartNL");
+ Object endNLBArg = getBArg(this.modelAdapter, seqElem, "EndNL");
+ int indentIncr = 1;
+ int nbNL = 1;
+ boolean startNL = true;
+ boolean endNL = true;
+
+ if(nbNLBArg != null) {
+ nbNL = this.modelAdapter.getInt(nbNLBArg, "value");
+ }
+ int startNbNL = nbNL; // by default, startNbNL = nbNL
+ if(startNbNLBArg != null) {
+ startNbNL = this.modelAdapter.getInt(startNbNLBArg, "value");
+ }
+ if(indentIncrBArg != null) {
+ indentIncr = this.modelAdapter.getInt(indentIncrBArg, "value");
+ }
+ if(startNLBArg != null) {
+ startNL = this.modelAdapter.getBool(startNLBArg, "value");
+ }
+ if(endNLBArg != null) {
+ endNL = this.modelAdapter.getBool(endNLBArg, "value");
+ }
+ debug("nbNL = " + nbNL + " ; indentIncr = " + indentIncr);
+ indentLevel += indentIncr;
+
+ for(int i = 0 ; i < indentIncr ; i++) {
+ curIndent += indentString;
+ }
+ String nls = getLineFeeds(nbNL);
+/*TODO: this was removed because of ATL filter but why was it necessary?
+ if(!" ".equals(currentSeparator.peek())) {
+ printWS();
+ }
+*/
+ pushSep(nls + ((nbNL == 0) ? standardSeparator : curIndent));
+if(debugws) out.debug("<BeforeFirstWS/>");
+ if(startNL) {
+ if(startNbNL == 0) {
+ printWS("");
+ } else if(nbNL == startNbNL) {
+ printWS();
+ } else {
+ printWS(getLineFeeds(startNbNL) + curIndent);
+ }
+ } else {
+if(debugws) out.debug("<BeforeNonStartNLWS/>");
+ printWS(""); // to make sure the last item was a TYPE_SPACE
+if(debugws) out.debug("<AfterNonStartNLWS/>");
+ }
+if(debugws) out.debug("<blockContent>");
+ serializeSeq(element, this.modelAdapter.getME(seqElem, "blockSequence"));
+if(debugws) out.debug("</blockContent>");
+
+ indentLevel -= indentIncr;
+ curIndent = curIndent.substring(0, curIndent.length() - indentString.length() * indentIncr);
+ if(endNL) {
+ printWS(lineFeed + curIndent);
+ }
+ popSep();
+if(debugws) out.debug("</block>");
+ } else if(tn.equals("FunctionCall")) {
+ serializeSeq(element, this.modelAdapter.getME(this.modelAdapter.getME(seqElem, "calledFunction"), "functionSequence"));
+ } else if(tn.equals("ConditionalElement")) {
+ Object condition = this.modelAdapter.getME(seqElem, "condition");
+ if(eval(element, condition)) {
+ Object tseq = this.modelAdapter.getME(seqElem, "thenSequence");
+ if(tseq != null) printWSBlockNoDup();
+ serializeSeq(element, tseq);
+ } else {
+ Object eseq = this.modelAdapter.getME(seqElem, "elseSequence");
+ debug("ELSE SEQ = " + eseq);
+ if(eseq != null) printWSBlockNoDup();
+ serializeSeq(element, eseq);
+ }
+ } else {
+ error("unsupported: " + tn);
+ }
+ }
+
+ private boolean eval(Object context, Object condition) {
+ boolean ret = true;
+
+ String ctn = this.modelAdapter.getTypeName(condition);
+ if(ctn.equals("AndExp")) {
+ ret = true;
+ for(Iterator i = this.modelAdapter.getCol(condition, "expressions") ; i.hasNext() ; ) {
+ ret &= eval(context, i.next());
+ }
+ } else if(ctn.equals("BooleanPropertyExp")) {
+ ret = this.modelAdapter.getBool(context, this.modelAdapter.getString(condition, "propertyName"));
+ } else if(ctn.equals("IsDefinedExp")) {
+ Object val = this.modelAdapter.get(context, this.modelAdapter.getString(condition, "propertyName"));
+ if (val == null) {
+ ret = false;
+ } else if(val instanceof Collection) {
+ ret = (((Collection)val).size() > 0);
+ } else {
+ ret = true;
+ }
+ if(this.modelAdapter.getString(condition, "propertyName").equals("superRule"))
+ debug("!!!superRule: " + ret + " " + val);
+ } else if(ctn.equals("OneExp")) {
+ Object val = this.modelAdapter.get(context, this.modelAdapter.getString(condition, "propertyName"));
+ if (val == null) {
+ ret = false;
+ } else if(val instanceof Collection) {
+ ret = (((Collection)val).size() == 1);
+ } else {
+ ret = true;
+ }
+ if(this.modelAdapter.getString(condition, "propertyName").equals("superRule"))
+ debug("!!!superRule: " + ret + " " + val);
+ } else if(ctn.equals("EqualsExp")) {
+ Object value = this.modelAdapter.getME(condition, "value");
+ String vtn = this.modelAdapter.getTypeName(value);
+ if(vtn.equals("IntegerVal")) {
+ int lv = this.modelAdapter.getInt(value, "symbol");
+ int pv = this.modelAdapter.getInt(context, this.modelAdapter.getString(condition, "propertyName"));
+ ret = (lv == pv);
+ } else if(vtn.equals("NegativeIntegerVal")) {
+ int lv = -this.modelAdapter.getInt(value, "symbol");
+ int pv = this.modelAdapter.getInt(context, this.modelAdapter.getString(condition, "propertyName"));
+ ret = (lv == pv);
+ } else if(vtn.equals("StringVal")) {
+ String lv = this.modelAdapter.getString(value, "symbol");
+ String pv = this.modelAdapter.getString(context, this.modelAdapter.getString(condition, "propertyName"));
+ ret = (lv.equals(pv));
+ } else if(vtn.equals("EnumLiteralVal")) {
+ String lv = this.modelAdapter.getString(value, "name");
+ String pv = this.modelAdapter.getString(context, this.modelAdapter.getString(condition, "propertyName"));
+ ret = (lv.equals(pv));
+ } else {
+ error(vtn + " unsupported.");
+ }
+ //TODO: PropertyVal
+ }
+
+ return ret;
+ }
+
+ private void serializeProperty(Object element, Object value, Object property) {
+ if(value == null) return;
+ if(value instanceof Collection) {
+ Object sep = getPArg(this.modelAdapter, property, "Separator");
+ if(sep != null) sep = this.modelAdapter.getME(sep, "separatorSequence");
+ boolean first = true;
+ for(Iterator i = ((Collection)value).iterator() ; i.hasNext() ; ) {
+ if(first) {
+ printWSBlockNoDup();
+ first = false;
+ } else {
+ if(typeLast != TYPE_SPACE)
+ printWS();
+ }
+ serializeProperty(element, i.next(), property);
+ if(i.hasNext()) {
+ if(sep != null) {
+ serializeSeq(null, sep);
+ }
+ }
+ }
+ } else if(this.modelAdapter.isEnumLiteral(value)) {
+ //error("enumeration literals cannot be properly serialized at the present time (" + enumName + ")");
+ String enumName = this.modelAdapter.getName(this.modelAdapter.getPropertyType(this.modelAdapter.getMetaobject(element), this.modelAdapter.getName(property)));
+ Map mappings = (Map)templates.get(enumName);
+ Object seqElem = mappings.get(this.modelAdapter.getEnumLiteralName(value));
+ serializeSeqElem(element, seqElem);
+ } else if (this.modelAdapter.isAModelElement(value)) {
+ printWSBlockNoDup();
+ Object refersTo = getPArg(this.modelAdapter, property, "RefersTo");
+ if(refersTo == null) {
+ serialize(value);
+ } else {
+ Object v = this.modelAdapter.get(value, this.modelAdapter.getString(refersTo, "propertyName"));
+ Object asp = getPArg(this.modelAdapter, property, "As");
+ String as = null;
+ if(asp != null) {
+ as = this.modelAdapter.getString(asp, "value");
+ }
+ serializePrimitive(v, as);
+ }
+ } else if(this.modelAdapter.isPrimitive(value)) {
+ printWSBlockNoDup();
+ Object asp = getPArg(this.modelAdapter, property, "As");
+ String as = null;
+ if(asp != null) {
+ as = this.modelAdapter.getString(asp, "value");
+ }
+ serializePrimitive(value, as);
+ } else {
+ error("unsupported " + ((value == null) ? null : value.getClass()));
+ }
+ }
+
+ private void serializePrimitive(Object value, String as) {
+ if(value instanceof String) {
+ boolean doDefault = true;
+ if(usePrimitiveTemplates) {
+ Collection c = (Collection)templates.get("String");
+ Object t = null;
+ for(Iterator i = c.iterator() ; i.hasNext() && (t == null) ; ) {
+ Object ame = i.next();
+ if((as == null) && this.modelAdapter.getBool(ame, "isDefault")) {
+ t = ame;
+ } else if(this.modelAdapter.getString(ame, "name").equals(as)) {
+ t = ame;
+ }
+ }
+ if(t == null) {
+ System.out.println("warning: no primitive template found for String" + ((as == null) ? "" : "as " + as));
+ } else {
+ String tokenName = this.modelAdapter.getString(t, "tokenName");
+ Object token = tokens.get(tokenName);
+ if(token != null) {
+ System.out.println("Token found: " + tokenName);
+ Object pattern = this.modelAdapter.getME(token, "pattern");
+ String regex = "^" + buildRegex(pattern) + "$";
+ System.out.println(regex);
+ String val = (String)value;
+ System.out.println(val);
+ System.out.println(val.matches(regex));
+ }
+ }
+ }
+ if(doDefault) {
+ if("stringSymbol".equals(as)) {
+ printStringLiteral(cString((String)value));
+ } else {
+ Object template = primitiveTemplates.get(as);
+ boolean orKeyword = false;
+ if(template != null)
+ orKeyword = this.modelAdapter.getBoolUndefinedIsFalse(template, "orKeyword");
+ printIdentifier((String)value, orKeyword);
+ }
+ }
+ } else if(value instanceof Integer) {
+ printIntegerLiteral(((Integer)value).intValue());
+ } else if(value instanceof Double) {
+ printRealLiteral(((Double)value).doubleValue());
+ } else if(value instanceof Boolean) {
+ printBooleanLiteral(((Boolean)value).booleanValue());
+ }
+ }
+
+ private static String cString(String s) {
+ StringBuffer ret = new StringBuffer();
+
+ for(int i = 0 ; i < s.length() ; i++) {
+ char c = s.charAt(i);
+ if(c == '\n') {
+ ret.append("\\n");
+ } else if(c == '\r') {
+ ret.append("\\r");
+ } else if(c == '\t') {
+ ret.append("\\t");
+ } else if(c == '\b') {
+ ret.append("\\b");
+ } else if(c == '\f') {
+ ret.append("\\f");
+ } else if((c < ' ') || ((c > '~') && (c < 'Ą'))) {
+ ret.append("\\");
+ if(c < 010)
+ ret.append("0");
+ if(c < 0100)
+ ret.append("0");
+ ret.append(java.lang.Integer.toOctalString(c));
+ } else if(c == '\'') {
+ ret.append("\\'");
+ } else if(c == '\"') {
+ ret.append("\\\"");
+ } else if(c == '\\') {
+ ret.append("\\\\");
+ } else {
+ ret.append(c);
+ }
+ }
+
+ return "" + ret;
+ }
+
+ private String buildRegex(Object pattern) {
+ String ret = null;
+
+ String typeName = this.modelAdapter.getTypeName(pattern);
+
+ if(typeName.equals("OrPattern")) {
+ boolean paren = false;
+ for(Iterator i = this.modelAdapter.getCol(pattern, "simplePatterns") ; i.hasNext() ; ) {
+ Object p = i.next();
+ if(ret == null) {
+ ret = buildRegex(p);
+ } else {
+ paren = true;
+ ret += "|" + buildRegex(p);
+ }
+ }
+ if(paren) ret = "(" + ret + ")";
+ } else if(typeName.equals("RulePattern")) {
+ Object rule = this.modelAdapter.getME(pattern, "rule");
+ String rtn = this.modelAdapter.getTypeName(rule);
+ if(rtn.equals("WordRule")) {
+ ret = "(";
+ ret += buildRegex(this.modelAdapter.getME(rule, "start"));
+ ret += buildRegex(this.modelAdapter.getME(rule, "part")) + "*";
+ Object end = this.modelAdapter.getME(rule, "end");
+ if(end != null) {
+ ret += buildRegex(end);
+ }
+ ret += ")";
+// } else if(rtn.equals("EndsOfLineRule")) {
+ } else if(rtn.equals("MultiLineRule")) {
+ ret = "(";
+//startIsNotKept ret += buildRegex(getME(rule, "start"));
+ String endRegex = buildRegex(this.modelAdapter.getME(rule, "end"));
+ String middleRegex = "[^" + endRegex + "]";
+ Object esc = this.modelAdapter.getME(rule, "esc");
+ if(esc != null) {
+ String escRegex = buildRegex(esc);
+ middleRegex = "(" + middleRegex + "|" + escRegex + ".)";
+ }
+ ret += middleRegex + "*";
+//endIsNotKept ret += endRegex;
+ ret += ")";
+ } else {
+ error("unsupported rule type: " + rtn);
+ }
+ } else if(typeName.equals("StringPattern")) {
+ String name = this.modelAdapter.getString(pattern, "name");
+ ret = name
+ .replaceAll("\\\\", "\\\\\\\\")
+ .replaceAll("\\*", "\\\\*")
+ .replaceAll("\\{", "\\\\{")
+ .replaceAll("\\}", "\\\\}")
+ .replaceAll("\\(", "\\\\(")
+ .replaceAll("\\)", "\\\\)")
+ .replaceAll("\\+", "\\\\+");
+ } else if(typeName.equals("ClassPattern")) {
+ String name = this.modelAdapter.getString(pattern, "name");
+ ret = "\\p{" + ("" + name.charAt(0)).toUpperCase() + name.substring(1) + "}";
+ } else {
+ error("unsupported pattern type: " + typeName);
+ }
+
+ return ret;
+ }
+
+ // Low-level serialization
+
+ private final static int TYPE_KEYWORD = 1;
+ private final static int TYPE_SYMBOL = 2;
+ private final static int TYPE_IDENT = 3;
+ private final static int TYPE_BOOL = 4;
+ private final static int TYPE_INT = 5;
+ private final static int TYPE_REAL = 6;
+ private final static int TYPE_STRING = 7;
+ private final static int TYPE_SPACE = 8;
+ private final static int TYPE_COMMENT = 9;
+
+
+ private final static int SYMBOL_LS = 16; // symbol with a space before (on the Left)
+ private final static int SYMBOL_RS = 32; // symbol with a space after (on the Right)
+ private final static int SYMBOL_BS = SYMBOL_LS + SYMBOL_RS; // symbol with spaces Both before and after
+ private final static int SYMBOL_LN = 64; // symbol with no space before (even if preceding symbol is RS or BS)
+ private final static int SYMBOL_RN = 128; // symbol with no space after (even if following symbol is LS or BS)
+
+ private int typeLast = 0;
+
+ private void printLiteral(Object literal) {
+ String s = this.modelAdapter.getString(literal, "value");
+ String ltn = this.modelAdapter.getTypeName(literal);
+ if(ltn.equals("Keyword")) {
+ printKeyword(s);
+ } else {
+ printSymbol(s);
+ }
+ }
+
+ private void printWS(String ws) {
+ debug("printing WS = \"" + ws + "\"");
+ out.printWhiteSpace(ws);
+ typeLast = TYPE_SPACE;
+ //new Exception().printStackTrace(out);
+ }
+
+ private void printWS() {
+ printWS((String)currentSeparator.peek());
+ }
+
+ private boolean isSymbol(int type, int test) {
+ test += TYPE_SYMBOL;
+ return (type & test) == test;
+ }
+
+ private void printDisambiguationWS() {
+ if((typeLast == TYPE_KEYWORD) ||
+ (typeLast == TYPE_IDENT) ||
+ (typeLast == TYPE_INT) ||
+ (typeLast == TYPE_REAL) ||
+ (typeLast == TYPE_STRING) ||
+ (typeLast == TYPE_BOOL) ||
+ (isSymbol(typeLast, SYMBOL_BS)) ||
+ (isSymbol(typeLast, SYMBOL_RS))) {
+// out.print("<typeLast=" + typeLast + ">");
+ printWS();
+ }
+ }
+
+ private void printWSBlockNoDup() {
+ if(typeLast != TYPE_SPACE)
+ if(!currentSeparator.peek().equals(" "))
+ printWS();
+ }
+
+ private void printWSNoDup() {
+ if(typeLast != TYPE_SPACE)
+ printWS();
+ }
+
+ private void printKeyword(String keyword) {
+ printDisambiguationWS();
+ out.printKeyword(keyword);
+ typeLast = TYPE_KEYWORD;
+ }
+
+ private Map symbols = new HashMap();
+
+ private void printSymbol(String symbol) {
+ Integer type = (Integer)symbols.get(symbol);
+ int typeCurrent = -1;
+ if(type == null) {
+ typeCurrent = TYPE_SYMBOL;
+ } else {
+ typeCurrent = type.intValue();
+ }
+ if(
+ ((isSymbol(typeCurrent, SYMBOL_LS) || isSymbol(typeCurrent, SYMBOL_BS)) && !isSymbol(typeLast, SYMBOL_RN)) ||
+ ((isSymbol(typeLast, SYMBOL_RS) || isSymbol(typeLast, SYMBOL_BS)) && !isSymbol(typeCurrent, SYMBOL_LN))
+ ) {
+
+ printWSNoDup();
+ }
+ out.printSymbol(symbol);
+ typeLast = typeCurrent;
+ }
+
+// private void printIdentifier(String ident) {
+// printIdentifier(ident, false);
+// }
+
+ private void printIdentifier(String ident, boolean orKeyword) {
+ printDisambiguationWS();
+ boolean simpleIdent = ident.matches("[_a-zA-Z][_a-zA-Z0-9]*");
+ if(simpleIdent && !orKeyword)
+ simpleIdent = !keywords.contains(ident);
+ if((!orKeyword) && kwCheckIgnoreCase && keywords.contains(ident.toUpperCase())) {
+ simpleIdent = false;
+ }
+ if(simpleIdent) {
+ out.printIdentifier(ident);
+ } else {
+ out.printEscapedIdentifier(identEscStart, ident, identEscEnd);
+ }
+ typeLast = TYPE_IDENT;
+ }
+
+ private void printBooleanLiteral(boolean v) {
+ printDisambiguationWS();
+ out.printBoolean(v);
+ typeLast = TYPE_BOOL;
+ }
+
+ private void printIntegerLiteral(int v) {
+ printDisambiguationWS();
+ out.printInteger(v);
+ typeLast = TYPE_INT;
+ }
+
+ static {
+ dfs.setDecimalSeparator('.');
+ }
+
+ private void printRealLiteral(double v) {
+ printDisambiguationWS();
+ out.printReal(df.format(v)); // TODO: format properly
+ typeLast = TYPE_REAL;
+ }
+
+ private void printStringLiteral(String v) {
+ printDisambiguationWS();
+ out.printString(stringDelim, v);
+ typeLast = TYPE_STRING;
+ }
+
+ private void printComment(String c) {
+ printDisambiguationWS();
+ out.printComment(c);
+ typeLast = TYPE_COMMENT;
+ }
+
+ // Source model navigation helpers.
+
+ private static Object getPArg(ModelAdapter ma, Object ame, String name) {
+ Object ret = null;
+
+ for(Iterator i = ma.getCol(ame, "propertyArgs") ; i.hasNext() && (ret == null) ; ) {
+ Object arg = i.next();
+ if(ma.getTypeName(arg).equals(name + "PArg"))
+ ret = arg;
+ }
+
+ return ret;
+ }
+
+ private static Object getBArg(ModelAdapter ma, Object ame, String name) {
+ Object ret = null;
+
+ for(Iterator i = ma.getCol(ame, "blockArgs") ; i.hasNext() && (ret == null) ; ) {
+ Object arg = i.next();
+ if(ma.getTypeName(arg).equals(name + "BArg"))
+ ret = arg;
+ }
+
+ return ret;
+ }
+
+ private boolean debug = false;
+ private boolean debugws = false;
+
+ private void debug(String msg) {
+ if(debug)
+ System.out.println(msg);
+ }
+
+ private void error(String msg) {
+ System.out.println("ERROR: " + msg);
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/TCSExtractionException.java b/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/TCSExtractionException.java
new file mode 100644
index 0000000..c5d523f
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/TCSExtractionException.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2007 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TCSExtractionException.java,v 1.2 2008/06/25 12:48:35 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.extractor;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class TCSExtractionException extends RuntimeException {
+
+ private static final long serialVersionUID = 8291141709543223208L;
+
+ public TCSExtractionException(String msg, Throwable cause) {
+ super(msg, cause);
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/TCSExtractor.java b/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/TCSExtractor.java
new file mode 100644
index 0000000..023e936
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/TCSExtractor.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2005, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TCSExtractor.java,v 1.4 2008/06/25 12:48:34 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.extractor;
+
+import java.io.OutputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.m2m.atl.engine.extractors.Extractor;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+
+/**
+ * Created on 9 mars 2005
+ * @author Frédéric Jouault
+ * @author Mikaël Barbero
+ */
+public class TCSExtractor implements Extractor {
+
+ private static Map parameterTypes = new HashMap();
+
+ static {
+ parameterTypes.put("format", "Model:TCS"); // required
+ parameterTypes.put("indentString", "String"); // optional, default = " "
+ parameterTypes.put("standardSeparator", "String"); // optional, default = " "
+ parameterTypes.put("kwCheckIgnoreCase", "String"); // optional, default = false
+ parameterTypes.put("identEsc", "String"); // optional, default = "\"", has priority over the two others below
+ parameterTypes.put("identEscStart", "String"); // optional, default = "\""
+ parameterTypes.put("identEscEnd", "String"); // optional, default = "\""
+ parameterTypes.put("stringDelim", "String"); // optional, default = "\'"
+ parameterTypes.put("debug", "String"); // optional, default = false
+ parameterTypes.put("debugws", "String"); // optional, default = false
+ parameterTypes.put("serializeComments", "String"); // optional, default = true
+ parameterTypes.put("usePrimitiveTemplates", "String"); // optional, default = false
+ parameterTypes.put("decimalFormat", "String"); // optional, default = "0.##############"
+ parameterTypes.put("stream", "TCSExtractorStream");// optional, default = new TCSExtractorPrintStream(target);
+ }
+
+ public Map getParameterTypes() {
+ return parameterTypes;
+ }
+
+ public void extract(ASMModel source, OutputStream target, Map params) {
+ new PrettyPrinter().prettyPrint(source, new ASMModelAdapter(), target, params);
+ }
+
+ public void extract(ASMModel format, ASMModel extent, OutputStream out) {
+ throw new UnsupportedOperationException("Was deprecated a long time ago. It is now unsupported");
+ }
+
+ public String getPrefix() {
+ return "ebnf";
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/TCSExtractorPrintStream.java b/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/TCSExtractorPrintStream.java
new file mode 100644
index 0000000..f4fa44c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/TCSExtractorPrintStream.java
@@ -0,0 +1,83 @@
+/**
+ * Copyright (c) 2007 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TCSExtractorPrintStream.java,v 1.2 2008/06/25 12:48:35 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.extractor;
+
+import java.io.OutputStream;
+import java.io.PrintStream;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class TCSExtractorPrintStream implements TCSExtractorStream {
+
+ private PrintStream out;
+
+ public TCSExtractorPrintStream(OutputStream target) {
+ out = new PrintStream(target);
+ }
+
+ public void close() {
+ out.close();
+ }
+
+ public void debug(String string) {
+ out.print(string);
+ }
+
+ public void printBoolean(boolean v) {
+ out.print(v);
+ }
+
+ public void printComment(String c) {
+ out.print(c);
+ }
+
+ public void printEscapedIdentifier(String identEscStart, String ident, String identEscEnd) {
+ out.print(identEscStart);
+ out.print(ident);
+ out.print(identEscEnd);
+ }
+
+ public void printIdentifier(String ident) {
+ out.print(ident);
+ }
+
+ public void printInteger(int v) {
+ out.print(v);
+ }
+
+ public void printKeyword(String keyword) {
+ out.print(keyword);
+ }
+
+ public void printReal(String string) {
+ out.print(string);
+ }
+
+ public void printString(String stringDelim, String v) {
+ out.print(stringDelim);
+ out.print(v);
+ out.print(stringDelim);
+ }
+
+ public void printSymbol(String symbol) {
+ out.print(symbol);
+ }
+
+ public void printWhiteSpace(String ws) {
+ out.print(ws);
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/TCSExtractorStream.java b/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/TCSExtractorStream.java
new file mode 100644
index 0000000..f97c07e
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.extractor/src/org/eclipse/gmt/tcs/extractor/TCSExtractorStream.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2007 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TCSExtractorStream.java,v 1.2 2008/06/25 12:48:34 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.extractor;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public interface TCSExtractorStream {
+
+ void close();
+
+ void debug(String string);
+
+ void printWhiteSpace(String ws);
+
+ void printKeyword(String keyword);
+
+ void printSymbol(String symbol);
+
+ void printIdentifier(String ident);
+
+ void printEscapedIdentifier(String identEscStart, String ident, String identEscEnd);
+
+ void printBoolean(boolean v);
+
+ void printInteger(int v);
+
+ void printReal(String string);
+
+ void printString(String stringDelim, String v);
+
+ void printComment(String c);
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.injector/.classpath b/plugins/org.eclipse.gmt.tcs.injector/.classpath
new file mode 100644
index 0000000..18a194d
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.gmt.tcs.injector/.project b/plugins/org.eclipse.gmt.tcs.injector/.project
new file mode 100644
index 0000000..1192221
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.gmt.tcs.injector</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.gmt.tcs.injector/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.gmt.tcs.injector/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..586a6d8
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Fri Feb 08 17:20:10 CET 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/plugins/org.eclipse.gmt.tcs.injector/META-INF/MANIFEST.MF b/plugins/org.eclipse.gmt.tcs.injector/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..a06641e
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.gmt.tcs.injector
+Bundle-Version: 0.8.0
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.m2m.atl.dsls;bundle-version="0.0.1"
+Bundle-Vendor: %providerName
+Export-Package: org.eclipse.gmt.tcs.injector,
+ org.eclipse.gmt.tcs.injector.wrappers,
+ org.eclipse.gmt.tcs.injector.wrappers.antlr3
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Eclipse-LazyStart: true
diff --git a/plugins/org.eclipse.gmt.tcs.injector/about.html b/plugins/org.eclipse.gmt.tcs.injector/about.html
new file mode 100644
index 0000000..7cc291c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>January 21, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ASMModelAdapter.class b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ASMModelAdapter.class
new file mode 100644
index 0000000..74c6b2e
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ASMModelAdapter.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/CompletionInformation.class b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/CompletionInformation.class
new file mode 100644
index 0000000..7c1f41c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/CompletionInformation.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ElementTrace.class b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ElementTrace.class
new file mode 100644
index 0000000..504658f
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ElementTrace.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ModelAdapter.class b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ModelAdapter.class
new file mode 100644
index 0000000..2e71cf9
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ModelAdapter.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ParserLauncher$1.class b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ParserLauncher$1.class
new file mode 100644
index 0000000..5dc7e36
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ParserLauncher$1.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ParserLauncher.class b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ParserLauncher.class
new file mode 100644
index 0000000..139af39
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ParserLauncher.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ReferenceLocation.class b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ReferenceLocation.class
new file mode 100644
index 0000000..679afe5
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/ReferenceLocation.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSClassLoader.class b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSClassLoader.class
new file mode 100644
index 0000000..8c40b93
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSClassLoader.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSInjector.class b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSInjector.class
new file mode 100644
index 0000000..1e51fd8
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSInjector.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSRuntime$Context.class b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSRuntime$Context.class
new file mode 100644
index 0000000..2260f44
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSRuntime$Context.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSRuntime$RefSetting.class b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSRuntime$RefSetting.class
new file mode 100644
index 0000000..d685d33
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSRuntime$RefSetting.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSRuntime.class b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSRuntime.class
new file mode 100644
index 0000000..6a24091
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/TCSRuntime.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/wrappers/ParserWrapper.class b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/wrappers/ParserWrapper.class
new file mode 100644
index 0000000..02ff7cc
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/wrappers/ParserWrapper.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/wrappers/antlr3/ANTLR3LocationToken.class b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/wrappers/antlr3/ANTLR3LocationToken.class
new file mode 100644
index 0000000..dcf67f9
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/wrappers/antlr3/ANTLR3LocationToken.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/wrappers/antlr3/ParserWrapper.class b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/wrappers/antlr3/ParserWrapper.class
new file mode 100644
index 0000000..34b4845
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/bin/org/eclipse/gmt/tcs/injector/wrappers/antlr3/ParserWrapper.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.injector/build.properties b/plugins/org.eclipse.gmt.tcs.injector/build.properties
new file mode 100644
index 0000000..575b39b
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/build.properties
@@ -0,0 +1,13 @@
+output.org.eclipse.gmt.tcs.injector.jar = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties
+src.includes = src/,\
+ build.properties,\
+ META-INF/,\
+ .project,\
+ .classpath,\
+ about.html
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/plugins/org.eclipse.gmt.tcs.injector/plugin.properties b/plugins/org.eclipse.gmt.tcs.injector/plugin.properties
new file mode 100644
index 0000000..0f480d4
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/plugin.properties
@@ -0,0 +1,3 @@
+# NLS_MESSAGEFORMAT_VAR
+pluginName=TCS Injector (Incubation)
+providerName=Eclipse.org
diff --git a/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ASMModelAdapter.java b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ASMModelAdapter.java
new file mode 100644
index 0000000..6e83f6e
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ASMModelAdapter.java
@@ -0,0 +1,146 @@
+/**
+ * Copyright (c) 2004, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ASMModelAdapter.java,v 1.3 2008/06/25 12:27:04 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.injector;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Set;
+
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMBoolean;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMCollection;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMEnumLiteral;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMInteger;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModelElement;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMOclAny;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMReal;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMSequence;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMString;
+
+/**
+ * @author Frédéric Jouault
+ * @author Mikaël Barbero
+ */
+public class ASMModelAdapter implements ModelAdapter {
+
+ private ASMModel model;
+
+ public ASMModelAdapter(Object model) {
+ this.model = (ASMModel)model;
+ }
+
+ public Object getModel() {
+ return this.model;
+ }
+
+ private void actualSet(Object ame_, String propertyName, Object value) {
+ ASMModelElement ame = (ASMModelElement)ame_;
+ ame.set(null, propertyName, (ASMOclAny)value);
+ }
+
+ public Object get(Object ame_, String propertyName) {
+ Object ret = null;
+
+ ASMModelElement ame = (ASMModelElement)ame_;
+
+ ret = ame.get(null, propertyName); // TODO: adapt get
+
+ if(ret instanceof ASMInteger) {
+ ret = new Integer(((ASMInteger)ret).getSymbol());
+ } else if(ret instanceof ASMReal) {
+ ret = new Double(((ASMReal)ret).getSymbol());
+ } else if(ret instanceof ASMBoolean) {
+ ret = (((ASMBoolean)ret).getSymbol() ? Boolean.TRUE : Boolean.FALSE);
+ } else if(ret instanceof ASMString) {
+ ret = ((ASMString)ret).getSymbol();
+ }
+
+ return ret;
+ }
+
+ public Object createElement(String typeName) {
+ ASMModelElement ret = null;
+
+ ret = model.newModelElement(typeName);
+
+ return ret;
+ }
+
+ public Set getElementsByType(String typeName) { // TODO: adapt getElementsByType
+ ASMModelElement valueType = model.getMetamodel().findModelElement(typeName);
+ return model.getElementsByType(valueType);
+ }
+
+ public void set(Object ame, String prop, Object value) {
+ ASMOclAny v = java2asm(value);
+ if(v != null)
+ actualSet(ame, prop, v);
+ }
+
+ private ASMOclAny java2asm(Object value) {
+ ASMOclAny ret = null;
+
+ if(value instanceof ASMModelElement) {
+ ret = (ASMModelElement)value;
+ } else if(value instanceof ASMEnumLiteral) {
+ ret = (ASMEnumLiteral)value;
+ } else if(value instanceof ASMCollection) {
+ ret = (ASMCollection)value;
+ } else if(value instanceof Collection) {
+ ASMSequence seq = new ASMSequence();
+ for(Iterator i = ((Collection)value).iterator() ; i.hasNext() ; ) {
+ seq.add(java2asm(i.next()));
+ }
+ ret = seq;
+ } else if(value instanceof Integer) {
+ ret = new ASMInteger(((Integer)value).intValue());
+ } else if(value instanceof Double) {
+ ret = new ASMReal(((Double)value).doubleValue());
+ } else if(value instanceof Boolean) {
+ ret = new ASMBoolean(((Boolean)value).booleanValue());
+ } else if(value instanceof String) {
+ ret = new ASMString((String)value);
+ } else if(value == null) {
+ } else {
+ //model.reportProblem("Error", "unsupported type " + value.getClass(), "?");
+ }
+
+ return ret;
+ }
+
+ public boolean isCandidate(Object ame, String typeName) {
+ boolean ret = false;
+
+ ASMModelElement valueType = model.getMetamodel().findModelElement(typeName);
+ ret = ((ASMModelElement)ame).getType().conformsTo(valueType).getSymbol();
+
+ return ret;
+ }
+
+ public Object getType(Object me_) {
+ return ((ASMModelElement)me_).getType();
+ }
+
+ public boolean isAModelElement(Object me) {
+ return (me instanceof ASMModelElement);
+ }
+
+ public String getString(Object ame, String propName) {
+ return ((ASMString)get(ame, propName)).getSymbol();
+ }
+
+ public Object createEnumLiteral(String name) {
+ ASMEnumLiteral ret = new ASMEnumLiteral(name);
+ return ret;
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/CompletionInformation.java b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/CompletionInformation.java
new file mode 100644
index 0000000..0527c06
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/CompletionInformation.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: CompletionInformation.java,v 1.3 2008/06/25 12:27:04 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.injector;
+
+import java.util.List;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public interface CompletionInformation {
+
+ public int getOffset();
+ public List getProposals();
+ public void setPrefix(String prefix);
+ public String getPrefix();
+}
diff --git a/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ElementTrace.java b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ElementTrace.java
new file mode 100644
index 0000000..778fa5b
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ElementTrace.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ElementTrace.java,v 1.1 2008/04/22 11:17:56 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.injector;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @author Frédéric Jouault
+ *
+ */
+public class ElementTrace {
+
+ private Object element;
+ private Object location;
+ private Map propertyLocations = null;
+
+ public ElementTrace(Object element) {
+ this.element = element;
+ }
+
+ public void addPropertyLocation(String propertyName, Object location) {
+ if(propertyLocations == null) {
+ propertyLocations = new HashMap();
+ }
+ Object previousLocation = propertyLocations.get(propertyName);
+ if(previousLocation == null) {
+ propertyLocations.put(propertyName, location);
+ } else if(previousLocation instanceof Collection) {
+ ((Collection)previousLocation).add(location);
+ } else {
+ Collection c = new ArrayList();
+ c.add(previousLocation);
+ c.add(location);
+ propertyLocations.put(propertyName, c);
+ }
+ }
+
+ public Object getElement() {
+ return element;
+ }
+
+ public void setLocation(Object location) {
+ this.location = location;
+ }
+
+ public Object getLocation() {
+ return location;
+ }
+
+ public Object getPropertyLocation(String propertyName) {
+ return propertyLocations.get(propertyName);
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ModelAdapter.java b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ModelAdapter.java
new file mode 100644
index 0000000..6f0a05e
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ModelAdapter.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) 2004, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ModelAdapter.java,v 1.3 2008/06/25 12:27:04 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.injector;
+
+import java.util.Set;
+
+/**
+ * @author Frédéric Jouault
+ */
+public interface ModelAdapter {
+
+ public Object get(Object ame_, String propertyName);
+
+ public Object createElement(String typeName);
+
+ public Set getElementsByType(String typeName);
+
+ public Object getType(Object me_);
+
+ public boolean isCandidate(Object ame, String typeName);
+
+ public void set(Object ame, String prop, Object value);
+
+ public String getString(Object ame, String propName);
+
+ public boolean isAModelElement(Object me);
+
+ public Object createEnumLiteral(String name);
+
+ public Object getModel();
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ParserLauncher.java b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ParserLauncher.java
new file mode 100644
index 0000000..6306152
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ParserLauncher.java
@@ -0,0 +1,114 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ParserLauncher.java,v 1.3 2008/06/28 17:12:25 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.injector;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.gmt.tcs.injector.TCSRuntime.RefSetting;
+import org.eclipse.gmt.tcs.injector.wrappers.ParserWrapper;
+
+/**
+ *
+ * @author Mikaël Barbero
+ * @author Frédéric Jouault
+ *
+ */
+public class ParserLauncher {
+
+ private final static int DEFAULT_TAB_SIZE = 8;
+
+ private List refSettings;
+ private ParserWrapper parserWrapper;
+
+ public Object parse(ModelAdapter target, InputStream in, Map arguments) {
+ Object ret = null;
+
+ refSettings = new ArrayList();
+
+ int tabSize = arguments.get("tabSize") == null ? DEFAULT_TAB_SIZE : Integer.parseInt((String)arguments.get("tabSize"));
+
+ String parserGeneratorClassName = (String)arguments.get("parserGenerator");
+ if(parserGeneratorClassName != null) {
+ try {
+ parserWrapper = (ParserWrapper)Class.forName("org.eclipse.gmt.tcs.injector.wrappers." + parserGeneratorClassName + ".ParserWrapper", true, Thread.currentThread().getContextClassLoader()).newInstance();
+ } catch (InstantiationException e) {
+ throw new IllegalArgumentException("Unable to instanciate parser generator with name " + parserGeneratorClassName, e);
+ } catch (IllegalAccessException e) {
+ throw new IllegalArgumentException("Unable to access to parser generator with name " + parserGeneratorClassName, e);
+ } catch (ClassNotFoundException e) {
+ throw new IllegalArgumentException("Unable to locate parser generator with name " + parserGeneratorClassName, e);
+ }
+ } else {
+ // default parser generator
+ parserWrapper = new org.eclipse.gmt.tcs.injector.wrappers.antlr3.ParserWrapper();
+ }
+
+ String nameAndProductionRule = (String)arguments.get("name");
+ String ss[] = nameAndProductionRule.split("-");
+ String name = ss[0];
+
+ String productionRule = "main";
+ if(ss.length > 1) {
+ productionRule = ss[1];
+ }
+
+ TCSRuntime runtime = new TCSRuntime(target, parserWrapper, refSettings, arguments);
+ parserWrapper.setRuntime(runtime);
+
+ try {
+ ret = parserWrapper.parse(tabSize, name, productionRule, in, arguments);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+// if(runtime.getNbErrors() == 0) {
+ // A RefSetting that relies on imported contexts can only be executed after
+ // the RefSetting importing the corresponding context (and this, recursively).
+ // For now, we sort RefSettings so that all those that import a context
+ // are executed first.
+ // If a RefSetting that imports a context relies on imported contexts,
+ // then this solution is not enough.
+ // The concept of imported context should be defined cleanly first.
+ Collections.sort(refSettings, new Comparator() {
+ public int compare(Object o1, Object o2) {
+ RefSetting rs1 = (RefSetting)o1;
+ RefSetting rs2 = (RefSetting)o2;
+ if(rs1.importContext && !rs2.importContext)
+ return -1; // importContext first
+ else if(rs2.importContext && !rs1.importContext)
+ return 1; // importContext first
+ else // both or none are importContext
+ return 0; // don't care
+ }
+ });
+
+ for(Iterator i = refSettings.iterator() ; i.hasNext() ; ) {
+ RefSetting rs = (RefSetting)i.next();
+ try {
+ rs.doIt();
+ } catch(Exception e) {
+ System.out.println("Warning: one refSetting crashed:");
+ e.printStackTrace(System.out);
+ }
+ }
+// }
+
+ return ret;
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ReferenceLocation.java b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ReferenceLocation.java
new file mode 100644
index 0000000..c41ab91
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/ReferenceLocation.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ReferenceLocation.java,v 1.1 2008/04/22 11:17:56 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.injector;
+
+/**
+ * @author Frédéric Jouault
+ *
+ */
+public class ReferenceLocation {
+
+ private Object sourceLocation;
+ private Object target;
+
+ /**
+ * @param location
+ * @param object
+ */
+ public ReferenceLocation(Object sourceLocation, Object target) {
+ this.sourceLocation = sourceLocation;
+ this.target = target;
+ }
+
+ public Object getSourceLocation() {
+ return sourceLocation;
+ }
+
+ public Object getTarget() {
+ return target;
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/TCSClassLoader.java b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/TCSClassLoader.java
new file mode 100644
index 0000000..6093590
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/TCSClassLoader.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TCSClassLoader.java,v 1.1 2008/07/03 14:40:19 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.injector;
+
+import java.net.URL;
+import java.net.URLClassLoader;
+
+/**
+ *
+ * @author Frédéric Jouault
+ */
+public class TCSClassLoader extends URLClassLoader {
+ private ClassLoader parent;
+
+ public TCSClassLoader(URL[] urls, ClassLoader parent) {
+ super(urls, null);//ClassLoader.getSystemClassLoader());
+ this.parent = parent;
+ }
+
+ public Class loadClass(String name) throws ClassNotFoundException {
+ try {
+ return super.loadClass(name);
+ } catch(ClassNotFoundException e) {
+ return parent.loadClass(name);
+ }
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/TCSInjector.java b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/TCSInjector.java
new file mode 100644
index 0000000..f7bec59
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/TCSInjector.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2004, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TCSInjector.java,v 1.7 2008/06/25 12:27:04 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.injector;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.m2m.atl.engine.injectors.Injector;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModelElement;
+
+/**
+ * @author Frédéric Jouault
+ * @author Mikaël Barbero
+ */
+public class TCSInjector implements Injector {
+
+ private static Map parameterTypes = new HashMap();
+
+ static {
+ parameterTypes.put("name", "String"); // required
+ parameterTypes.put("keepNL", "String"); // optional, default = false
+ parameterTypes.put("keepLocation", "String"); // optional, default = true
+ parameterTypes.put("keepComments", "String"); // optional, default = true
+ parameterTypes.put("tabSize", "String"); // optional, default = 8
+ parameterTypes.put("parserGenerator", "String");// optional, default = "antlr3"
+ parameterTypes.put("hyperlinks", "Map"); // optional, default = null
+ parameterTypes.put("trace", "Map"); // optional, default = null
+ parameterTypes.put("locationByElement", "Map"); // optional, default = null
+ parameterTypes.put("problems", "Model:Problem");// optional, default = null
+
+ // Useful when the lexer and/or parser cannot be resolved from here
+ parameterTypes.put("lexerClass", "Class"); // optional, default = null
+ parameterTypes.put("parserClass", "Class"); // optional, default = null
+ }
+
+ public Map getParameterTypes() {
+ return parameterTypes;
+ }
+
+ public ASMModelElement inject(ASMModel target, InputStream source, Map params) throws IOException {
+ this.targetModelAdapter = new ASMModelAdapter(target);
+
+ ASMModel problems = (ASMModel)params.get("problems");
+ if (problems != null) {
+ this.problemsModelAdapter = new ASMModelAdapter(problems);
+ params.put("problems", this.problemsModelAdapter);
+ }
+
+ ASMModelElement root = (ASMModelElement)new ParserLauncher().parse(targetModelAdapter, source, params);
+
+ return root;
+ }
+
+ public String getPrefix() {
+ return "ebnf2";
+ }
+
+ private ModelAdapter problemsModelAdapter;
+ private ModelAdapter targetModelAdapter;
+
+
+ public void performImportation(ASMModel format, ASMModel extent, InputStream in, String other) throws IOException {
+ throw new UnsupportedOperationException("Was deprecated a long time ago. It is now unsupported");
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/TCSRuntime.java b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/TCSRuntime.java
new file mode 100644
index 0000000..249e30d
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/TCSRuntime.java
@@ -0,0 +1,710 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TCSRuntime.java,v 1.7 2008/06/25 12:27:04 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.injector;
+
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.Stack;
+
+import org.eclipse.gmt.tcs.injector.wrappers.ParserWrapper;
+
+/**
+ * @author Frédéric Jouault
+ * @author Mikaël Barbero
+ */
+public class TCSRuntime {
+
+ // begin arguments
+ private ModelAdapter targetModelAdapter;
+ private ModelAdapter problemsModelAdapter;
+
+ private boolean keepLocation;
+ private boolean keepNL;
+ private boolean keepComments;
+
+ private Map locationByElement;
+ private Map hyperlinks;
+ private Map trace;
+ // end arguments
+
+ private ParserWrapper parserWrapper;
+ private Context currentContext;
+ private Map contextByElement;
+ private Stack previousElement;
+ private boolean lastWasCreation;
+ private List refSettings;
+ private Object lastToken;
+ private CompletionInformation completionInformation = null;
+ private int nbErrors = 0;
+
+
+ public TCSRuntime(ModelAdapter targetModelAdapter, ParserWrapper parserWrapper, List refSettings, Map arguments) {
+ this.targetModelAdapter = targetModelAdapter;
+ this.problemsModelAdapter = (ModelAdapter)arguments.get("problems");
+ this.parserWrapper = parserWrapper;
+ this.refSettings = refSettings;
+
+ this.keepNL = ("true".equals(arguments.get("keepNL"))) ? true : false;
+ this.keepLocation = ("false".equals(arguments.get("keepLocation"))) ? false : true;
+ this.keepComments = ("false".equals(arguments.get("keepComments"))) ? false : true;
+ this.completionInformation = (CompletionInformation)arguments.get("completionInformation");
+
+ // hyperlinks can be null
+ this.hyperlinks = (Map)arguments.get("hyperlinks");
+ // trace can be null
+ this.trace = (Map)arguments.get("trace");
+ this.locationByElement = arguments.get("locationByElement") == null ? new HashMap() : (Map)arguments.get("locationByElement");
+
+ previousElement = new Stack();
+ currentContext = new Context();
+ contextByElement = new HashMap();
+
+ lastWasCreation = true;
+ }
+
+ public int getNbErrors() {
+ return nbErrors;
+ }
+
+ /**
+ * @return the targetModelAdapter
+ */
+ public ModelAdapter getTargetModelAdapter() {
+ return targetModelAdapter;
+ }
+
+ public boolean isKeepNL() {
+ return keepNL;
+ }
+
+ public Object createEnumLiteral(String name) {
+ return getTargetModelAdapter().createEnumLiteral(name);
+ }
+
+ public Object create(String name, boolean context, boolean addToContext) {
+ Object ret = null;
+
+ if(debug) debug("creating " + name);
+
+ ret = getTargetModelAdapter().createElement(name);
+
+ if(addToContext) currentContext.add(ret);
+ if(context) currentContext = currentContext.enterContext(ret);
+ if(lastWasCreation) {
+ previousElement.push(null);
+// prevType.push(name);
+ }/* else {
+ prevType.pop();
+ prevType.push(name);
+ }*/
+ lastWasCreation = true;
+
+ return ret;
+ }
+
+ public void leaveContext(boolean leave) {
+ if(leave) currentContext = currentContext.parent();
+ }
+
+ // Usefull? at least, it is called by grammars
+ public void addToContext(Object ame, boolean addToContext) {
+ if(addToContext) currentContext.add(ame);
+ }
+
+ public void setLocation(Object ame, String location) {
+ if(location.matches("^0:0-.+")) {
+ location = location.split("-")[1];
+ location = location + "-" + location;
+ }
+ locationByElement.put(ame, location);
+ if(keepLocation) {
+ try {
+ getTargetModelAdapter().set(ame, "location", location);
+ } catch(Exception e) {
+ reportProblem("Warning", "could not set location of " + ame + ", disabling further location settings", location);
+ keepLocation = false;
+ }
+ }
+ }
+
+ public void setCommentsBefore(Object ame, Object token) {
+ parserWrapper.setCommentsBefore(ame, token);
+ }
+
+ public void setCommentsAfter(Object ame, Object token) {
+ parserWrapper.setCommentsAfter(ame, token);
+ }
+
+ public void set(Object ame, String prop, Object value) {
+ getTargetModelAdapter().set(ame, prop, value);
+ if(trace != null) {
+ ElementTrace et = (ElementTrace)trace.get(ame);
+ if(et == null) {
+ et = new ElementTrace(ame);
+ trace.put(ame, et);
+ }
+ Object lastToken = parserWrapper.getLastToken();
+ et.addPropertyLocation(prop, parserWrapper.getLocation(lastToken));
+ }
+ }
+
+ public void setRef(Object object,
+ String propertyName,
+ String valueTypeName,
+ String keyName,
+ Object keyValue,
+ String lookIn,
+ String autoCreate,
+ String createAs,
+ boolean importContext,
+ String createIn) {
+ if(keyValue == null) return;
+
+ new RefSetting(currentContext,
+ object,
+ propertyName,
+ valueTypeName,
+ keyName,
+ keyValue,
+ lookIn,
+ autoCreate,
+ createAs,
+ importContext,
+ createIn, lastToken);
+ }
+
+ public void reportProblem(String severity, String msg, Object ame) {
+ String location = "<unknown location>";
+// if(keepLocation) {
+// try {
+// location = targetModelAdapter.getString(ame, "location");
+// } catch(Exception e) {
+// e.printStackTrace();
+// }
+// }
+ if(locationByElement.containsKey(ame))
+ location = (String)locationByElement.get(ame);
+ reportProblem(severity, msg, location);
+ }
+
+ public void reportProblem(String severity, String msg, String location) {
+ if("error".equals(severity.toLowerCase())) {
+ nbErrors++;
+ }
+ if(problemsModelAdapter == null) {
+ System.err.println(severity + ": " + location + ": " + msg + ".");
+ } else {
+ Object ame = problemsModelAdapter.createElement("Problem");
+ problemsModelAdapter.set(ame, "severity", problemsModelAdapter.createEnumLiteral(severity.toLowerCase()));
+ problemsModelAdapter.set(ame, "location", location);
+ problemsModelAdapter.set(ame, "description", msg);
+ }
+ }
+
+ public void reportError(Exception re) {
+ parserWrapper.reportError(re);
+ }
+
+ public void reportError(String msg) {
+ reportProblem("Error", msg, "?");
+ }
+
+ public void reportWarning(String msg) {
+ reportProblem("Warning", msg, "?");
+ }
+
+ protected class Context {
+
+ public Context enterContext(Object element) {
+ Context ret = new Context(element, this);
+
+ contextByElement.put(element, ret);
+
+ return ret;
+ }
+
+ // Only for root Context
+ public Context() {
+ this.parent = null;
+ }
+
+ private Context(Object element, Context parent) {
+ this.parent = parent;
+ this.element = element;
+ }
+
+ // cannot be called once RefSettings have started populating mapByTypeAndKey,
+ // add(Object, String, Object) must be called instead
+ public void add(Object e) {
+ if(debug) debug("adding " + e + "to context");
+ contents.add(e);
+ }
+
+ // to add an element after population of mapByTypeAndKey has started,
+ // Note that the element does not get added in imported contexts
+ public void add(Object e, String valueTypeName, String keyName, Object keyVal) {
+ add(e); // might be necessary
+ Map elementByVal = getElementByVal(valueTypeName, keyName);
+ addElementByVal(elementByVal, e, keyVal);
+ }
+
+ private void addElementByVal(Map elementByVal, Object ame, Object val) {
+ Object element = elementByVal.get(val);
+ if(element == null) {
+ elementByVal.put(val, ame);
+ } else if(element instanceof Collection){
+ ((Collection)element).add(ame);
+ } else {
+ Collection c = new ArrayList();
+ c.add(element);
+ c.add(ame);
+ elementByVal.put(val, c);
+ }
+ }
+// public ContextIterator iterator() {
+// return new ContextIterator(this, contents.iterator(), importedContexts);
+// }
+
+// public ContextIterator iterator(Set traversed) {
+// return new ContextIterator(traversed, this, contents.iterator(), importedContexts);
+// }
+
+ public Context parent() {
+ return parent;
+ }
+
+ public void importContext(Context c) {
+ importedContexts.add(c);
+ }
+
+ public Object getElement() {
+ return element;
+ }
+
+ private Object element;
+ private Context parent;
+ private Set contents = new HashSet();
+ private Set importedContexts = new HashSet();
+
+ private Map mapByTypeAndKey = new HashMap();
+ /**
+ * @param valueTypeName
+ * @param keyName
+ * @param keyVal
+ */
+ public Map getElementByVal(String valueTypeName, String keyName) {
+ String key = "__" + valueTypeName + "_" + keyName;
+ Map elementByVal = (Map)mapByTypeAndKey.get(key);
+ if(elementByVal == null) {
+ elementByVal = new HashMap();
+ for(Iterator i = contents.iterator() ; i.hasNext() ; ) {
+ Object ame = i.next();
+// if(debug) debug("\t" + ame + " : " + getTargetModelAdapter().get(getTargetModelAdapter().getType(ame), "name"));
+ if(isCandidate(ame, valueTypeName)) { // check type
+ Object val = getTargetModelAdapter().get(ame, keyName);
+ addElementByVal(elementByVal, ame, val);
+ }
+ }
+ mapByTypeAndKey.put(key, elementByVal);
+ for(Iterator i = importedContexts.iterator() ; i.hasNext() ; ) {
+ Context importedContext = (Context)i.next();
+ Map map = importedContext.getElementByVal(valueTypeName, keyName);
+ for(Iterator j = map.entrySet().iterator() ; j.hasNext() ; ) {
+ Map.Entry entry = (Map.Entry)j.next();
+ if(!elementByVal.containsKey(entry.getKey())) {
+ elementByVal.put(entry.getKey(), entry.getValue());
+ }
+ }
+ }
+ }
+ return elementByVal;
+ }
+
+ private boolean isCandidate(Object ame, String valueTypeName) {
+ return getTargetModelAdapter().isCandidate(ame, valueTypeName);
+ }
+ }
+
+// protected class ContextIterator implements Iterator {
+//
+// private Iterator i;
+// private ContextIterator currentIterator = null;
+// private Iterator importedContexts;
+// private Set traversed;
+// private boolean finishCurrent = false;
+//
+// public void finishCurrent() {
+// finishCurrent = true;
+// if(currentIterator != null)
+// currentIterator.finishCurrent();
+// }
+//
+// public ContextIterator(Context c, Iterator i, Set imported) {
+// this(new HashSet(), c, i, imported);
+// }
+//
+// public ContextIterator(Set traversed, Context c, Iterator i, Set imported) {
+// this.traversed = traversed;
+// traversed.add(c);
+// this.i = i;
+// this.importedContexts = imported.iterator();
+// }
+//
+// public boolean hasNext() {
+// while(importedContexts.hasNext() && (!i.hasNext()) && !finishCurrent){
+// Context c = (Context)importedContexts.next();
+// if(!traversed.contains(c)) {
+// traversed.add(c);
+// currentIterator = c.iterator(traversed);
+// i = currentIterator;
+// } else {
+// System.out.println("ERROR: recursive contexts");
+// }
+// }
+//
+// return i.hasNext();
+// }
+//
+// public Object next() {
+// return i.next();
+// }
+//
+// public void remove() {
+// throw new UnsupportedOperationException();
+// }
+// }
+
+ protected class RefSetting {
+
+ public RefSetting(
+ Context currentContext,
+ Object object,
+ String propertyName,
+ String valueTypeName,
+ String keyName,
+ Object keyValue,
+ String lookIn,
+ String autoCreate,
+ String createAs,
+ boolean importContext,
+ String createIn,
+ Object token) {
+ this.currentContext = currentContext;
+ this.object = object;
+ this.propertyName = propertyName;
+ this.valueTypeName = valueTypeName;
+ this.keyName = keyName;
+ this.keyValue = keyValue;
+ this.lookIn = lookIn;
+ this.autoCreate = autoCreate;
+ this.createAs = createAs;
+ this.importContext = importContext;
+ this.createIn = createIn;
+ this.token = token;
+
+ refSettings.add(this);
+ }
+
+ private boolean doItForContext(Context context) {
+ boolean done = false;
+ Object keyVal = keyValue;
+
+ Map elementByVal = context.getElementByVal(valueTypeName, keyName);
+
+ int offset = -1;
+ Collection proposals = null;
+ if(completionInformation != null) {
+ offset = completionInformation.getOffset();
+ if(
+ (offset >= parserWrapper.getStartOffset(token) - 1) &&
+ (offset <= parserWrapper.getEndOffset(token))) {
+ proposals = completionInformation.getProposals();
+ proposals.addAll(elementByVal.keySet());
+ if(completionInformation.getPrefix() == null) {
+ if(keyVal instanceof String) {
+ completionInformation.setPrefix(
+ ((String)keyVal).substring(0, offset - parserWrapper.getStartOffset(token) + 1)
+ );
+ }
+ }
+ }
+ }
+
+ Object ame = elementByVal.get(keyVal);
+ if(ame instanceof Collection) {
+ for(Iterator i = ((Collection)ame).iterator() ; i.hasNext() ; ) {
+ reportProblem("Error", "found several " + valueTypeName + " with the same " + keyName + " equals to " + keyVal, i.next());
+ }
+ done = true;
+ } else if(ame != null) {
+ realValue = ame;
+ getTargetModelAdapter().set(object, propertyName, ame);
+// if(keepLocation && (hyperlinks != null)) {
+// try {
+// String location = parserWrapper.getLocation(token);
+// hyperlinks.put(location, targetModelAdapter.getString(ame, "location"));
+// } catch(Exception e) {}
+// }
+ if(hyperlinks != null) {
+ String location = parserWrapper.getLocation(token);
+ hyperlinks.put(location, locationByElement.get(ame));
+ }
+ if(trace != null) {
+ ElementTrace et = (ElementTrace)trace.get(object);
+ if(et == null) {
+ et = new ElementTrace(object);
+ trace.put(object, et);
+ }
+ ReferenceLocation location = new ReferenceLocation(parserWrapper.getLocation(token), ame);
+ et.addPropertyLocation(propertyName, location);
+ }
+ done = true;
+ }
+ if(!done) {
+ context = context.parent();
+ if(context != null)
+ done = doItForContext(context);
+ }
+
+ return done;
+ }
+
+ private void create() {
+ Object ro = null;
+ if(createAs != null) {
+ ro = getTargetModelAdapter().createElement(createAs);
+ } else {
+ ro = getTargetModelAdapter().createElement(valueTypeName);
+ }
+ realValue = ro;
+// do not need this with the model handler
+// ASMOclAny realKeyValue = null;
+// if(keyValue instanceof String) {
+// realKeyValue = new ASMString((String)keyValue);
+// } else {
+// realKeyValue = (ASMOclAny)keyValue;
+// }
+ getTargetModelAdapter().set(ro, keyName, keyValue);
+ getTargetModelAdapter().set(object, propertyName, ro);
+ try {
+ String location = parserWrapper.getLocation(token);
+ setLocation(ro, location);
+ } catch(Exception e) {}
+
+ if(createIn != null) {
+ String path[] = createIn.split("\\.");
+ Object e = navigateLookIn(path, false);
+ if(e != null) {
+ getTargetModelAdapter().set(e, path[path.length - 1], ro);
+ currentContext.add(ro, valueTypeName, keyName, keyValue);
+ }
+ } else if((lookIn != null) && !lookIn.equals("#all")) {
+ String path[] = lookIn.split("\\.");
+ Object e = navigateLookIn(path, false);
+ if(e != null) {
+ getTargetModelAdapter().set(e, path[path.length - 1], ro);
+ currentContext.add(ro, valueTypeName, keyName, keyValue);
+ }
+ }
+ }
+
+ private Object navigateLookIn(String path[], boolean navigateLast) {
+ Object ret = object;
+ for(int i = 0 ; (i < path.length - (navigateLast ? 0 : 1)) && (ret != null) ; i++) {
+ if(path[i].equals("#context")) {
+ ret = currentContext.getElement();
+ } else {
+ Object v = getTargetModelAdapter().get(ret, path[i]);
+ if(getTargetModelAdapter().isAModelElement(v)) {
+ ret = v;
+ } else {
+ ret = null;
+ }
+ }
+ }
+ return ret;
+ }
+
+ public void doIt() {
+ boolean done = false;
+
+ if(debug) debug("setRef(" +
+ currentContext + ", " +
+ object + ", " +
+ propertyName + ", " +
+ valueTypeName + ", " +
+ keyName + ", " +
+ keyValue + ", " +
+ lookIn + ", " +
+ autoCreate + ") : "
+ );
+
+ if(autoCreate.equals("always")) {
+ create();
+ done = true;
+ } else {
+ Context context = currentContext;
+ if("#all".equals(lookIn)) {
+ Object val = null;
+ for(Iterator i = getTargetModelAdapter().getElementsByType(valueTypeName).iterator() ; i.hasNext() && (val == null) ; ) {
+ Object ame = i.next();
+ if(debug) debug("\t" + ame + " : " + getTargetModelAdapter().get(getTargetModelAdapter().getType(ame), "name"));
+ //if(targetModelAdapter.get(ame, keyName).equals(new ASMString((String)keyValue))) {
+ // this may not work (we should have to override equals of ASMString to compare it to a String)
+ if(getTargetModelAdapter().get(ame, keyName).equals(keyValue)) {
+ val = ame;
+ }
+ }
+
+ if(val != null) {
+ realValue = val;
+ getTargetModelAdapter().set(object, propertyName, val);
+ done = true;
+ }
+ } else if((lookIn != null) && !lookIn.equals("#all")) {
+ String path[] = lookIn.split("\\.");
+ Object e = navigateLookIn(path, true);
+
+ if(e != null) {
+ context = (Context)contextByElement.get(e);
+ done = doItForContext(context);
+ }
+ } else {
+ done = doItForContext(context);
+ }
+ }
+ if(!done) {
+ if(debug) debug("not found");
+
+ if(!autoCreate.equals("never")) {
+ create();
+ } else {
+ reportProblem("Error", valueTypeName + " with " + keyName + " = " + keyValue + " was not found for " + propertyName + " of " + getTargetModelAdapter().getType(object), object);
+ }
+ }
+
+ if(realValue != null) {
+ Context context = (Context)contextByElement.get(realValue);
+ if(importContext && (context != null)) {
+ ((Context)contextByElement.get(object)).importContext(context);
+ }
+ }
+ }
+
+ private Context currentContext;
+ private Object object;
+ private String propertyName;
+ private String valueTypeName;
+ private String keyName;
+ private Object keyValue;
+ private String lookIn;
+ private String autoCreate;
+ private String createAs;
+ protected boolean importContext;
+ private String createIn;
+ private Object token;
+
+ private Object realValue = null;
+ }
+
+ public void setToken(Object token) {
+ lastToken = token;
+ }
+
+ // TODO: remove once TCS-importer.jar is bootstrapped
+// public void setToken(Token token) {
+// lastToken = token;
+// }
+
+ public String unescapeString(String s, int delimLength) {
+ StringBuffer ret = new StringBuffer();
+ // get rid of the starting and ending delimiters (e.g., '\'', '"')
+ s = s.substring(delimLength, s.length()-(delimLength * 2 - 1));
+
+ CharacterIterator ci = new StringCharacterIterator(s);
+ char c = ci.first();
+ while(c != CharacterIterator.DONE) {
+ char tc = 0;
+ switch(c) {
+ case '\\':
+ c = ci.next();
+ switch(c) {
+ case 'n':
+ tc = '\n';
+ break;
+ case 'r':
+ tc = '\r';
+ break;
+ case 't':
+ tc = '\t';
+ break;
+ case 'b':
+ tc = '\b';
+ break;
+ case 'f':
+ tc = '\f';
+ break;
+ case '"':
+ tc = '"';
+ break;
+ case '\'':
+ tc = '\'';
+ break;
+ case '\\':
+ tc = '\\';
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ throw new RuntimeException("octal escape sequences not supported yet");
+ default:
+ throw new RuntimeException("unknown escape sequence: '\\" + c + "'");
+ }
+ break;
+ default:
+ tc = c;
+ break;
+ }
+ ret.append(tc);
+ c = ci.next();
+ }
+ return ret.toString();
+ }
+
+
+ private final static boolean debug = false;
+ private void debug(String msg) {
+ System.out.println(msg);
+ }
+
+ public void setKeepComments(boolean keepComments) {
+ this.keepComments = keepComments;
+ }
+
+ public boolean isKeepComments() {
+ return keepComments;
+ }
+
+ public void setLastWasCreation(boolean lastWasCreation) {
+ this.lastWasCreation = lastWasCreation;
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/wrappers/ParserWrapper.java b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/wrappers/ParserWrapper.java
new file mode 100644
index 0000000..263e7ba
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/wrappers/ParserWrapper.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2004, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ParserWrapper.java,v 1.6 2008/06/28 17:12:25 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.injector.wrappers;
+
+import java.io.InputStream;
+import java.util.Map;
+
+import org.eclipse.gmt.tcs.injector.TCSRuntime;
+
+/**
+ * @author Frédéric Jouault
+ * @author Mikaël Barbero
+ */
+public abstract class ParserWrapper {
+ // Token Types
+ protected int TT_NL = -1;
+ protected int TT_WS = -1;
+ protected int TT_COMMENT = -1;
+ protected final String pack = "org.eclipse.gmt.tcs.injector.";
+ protected TCSRuntime runtime;
+
+ public abstract Object parse(int tabSize, String name, String productionRule, InputStream in, Map params) throws Exception;
+
+ public abstract void reportError(Exception re);
+
+ public abstract void setCommentsBefore(Object ame, Object token);
+
+ public abstract void setCommentsAfter(Object ame_, Object token_);
+
+ public abstract Object getLastToken();
+
+ public abstract String getLocation(Object token);
+
+ public abstract int getStartOffset(Object token);
+
+ public abstract int getEndOffset(Object token);
+
+ public void setRuntime(TCSRuntime runtime) {
+ this.runtime = runtime;
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/wrappers/antlr3/ANTLR3LocationToken.java b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/wrappers/antlr3/ANTLR3LocationToken.java
new file mode 100644
index 0000000..56f1699
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/wrappers/antlr3/ANTLR3LocationToken.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2004, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ANTLR3LocationToken.java,v 1.2 2008/06/25 12:27:05 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.injector.wrappers.antlr3;
+
+import org.antlr.runtime.CharStream;
+import org.antlr.runtime.CommonToken;
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class ANTLR3LocationToken extends CommonToken {
+
+ private static final long serialVersionUID = 1779004710570761428L;
+
+ public ANTLR3LocationToken(CharStream input, int type, int channel, int start, int stop) {
+ super(input, type, channel, start, stop);
+ }
+
+ public void setEndLine(int endLine) {
+ this.endLine = endLine;
+ }
+
+ public int getEndLine() {
+ return endLine;
+ }
+
+ public void setEndColumn(int endColumn) {
+ this.endColumn = endColumn;
+ }
+
+ public int getEndColumn() {
+ return endColumn;
+ }
+
+ private int endLine;
+ private int endColumn;
+}
diff --git a/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/wrappers/antlr3/ParserWrapper.java b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/wrappers/antlr3/ParserWrapper.java
new file mode 100644
index 0000000..e2a0246
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.injector/src/org/eclipse/gmt/tcs/injector/wrappers/antlr3/ParserWrapper.java
@@ -0,0 +1,252 @@
+/**
+ * Copyright (c) 2004, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ParserWrapper.java,v 1.14 2008/07/04 13:03:24 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.injector.wrappers.antlr3;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.antlr.runtime.ANTLRStringStream;
+import org.antlr.runtime.CharStream;
+import org.antlr.runtime.CommonToken;
+import org.antlr.runtime.CommonTokenStream;
+import org.antlr.runtime.Lexer;
+import org.antlr.runtime.Parser;
+import org.antlr.runtime.RecognitionException;
+import org.antlr.runtime.Token;
+import org.antlr.runtime.TokenStream;
+import org.eclipse.gmt.tcs.injector.TCSClassLoader;
+
+/**
+ * @author Frédéric Jouault
+ * @author Mikaël Barbero
+ */
+public class ParserWrapper extends org.eclipse.gmt.tcs.injector.wrappers.ParserWrapper {
+
+ private Parser parser;
+ private Lexer lexer;
+
+ public ParserWrapper() {
+ }
+
+ public Object parse(int tabSize, String name, String productionRule, InputStream in, Map params) throws Exception {
+ Class lexerClass = (Class)params.get("lexerClass");
+ Class parserClass = (Class)params.get("parserClass");
+ if((lexerClass == null) || (parserClass == null)) {
+ URL extraClasspath[] = (URL[])params.get("extraClasspath");
+ ClassLoader cl = ParserWrapper.class.getClassLoader();
+ if(extraClasspath != null) {
+ cl = new TCSClassLoader(extraClasspath, cl);
+ }
+ if(lexerClass == null) {
+ try {
+ lexerClass = cl.loadClass(pack + name + "_ANTLR3Lexer");
+ } catch (ClassNotFoundException e) {
+ throw new IllegalArgumentException("Unable to locate lexer class with name " + name, e);
+ }
+ }
+ if(parserClass == null) {
+ try {
+ parserClass = cl.loadClass(pack + name + "_ANTLR3Parser");
+ } catch (ClassNotFoundException e) {
+ throw new IllegalArgumentException("Unable to locate parser class with name " + name, e);
+ }
+ }
+ }
+
+
+ Object ret = null;
+ InputStreamReader isr = new InputStreamReader(in);
+ StringBuffer s = new StringBuffer();
+ char buffer[] = new char[10000];
+ int size;
+ while((size = isr.read(buffer)) > 0) {
+ s.append(buffer, 0, size);
+ }
+ ANTLRStringStream stream = new ANTLRStringStream(s.toString());
+
+ lexer = (Lexer)lexerClass.getDeclaredConstructor(new Class[] {CharStream.class}).newInstance(new Object[] {stream});
+
+ CommonTokenStream tokens = new CommonTokenStream(lexer);
+ try {
+ TT_NL = ((Integer)parserClass.getField("NL").get(null)).intValue();
+ tokens.setTokenTypeChannel(TT_NL, 99);
+ //tokens.discardTokenType(TT_NL);
+ } catch(Exception e) {
+ }
+ try {
+ TT_WS = ((Integer)parserClass.getField("WS").get(null)).intValue();
+ tokens.discardTokenType(TT_WS);
+ } catch(Exception e) {
+ }
+ try {
+ TT_COMMENT = ((Integer)parserClass.getField("COMMENT").get(null)).intValue();
+ tokens.setTokenTypeChannel(TT_COMMENT, 99);
+ //tokens.discardTokenType(TT_COMMENT);
+ } catch(Exception e) {
+ }
+
+ parser = (Parser)parserClass.getDeclaredConstructor(new Class[] {TokenStream.class}).newInstance(new Object[] {tokens});
+
+ Field f = parserClass.getField("ei");
+ f.set(parser, runtime);
+
+ f = lexerClass.getField("ei");
+ f.set(lexer, runtime);
+
+ Method m = parserClass.getMethod(productionRule, new Class[] {});
+ try {
+ ret = m.invoke(parser, new Object[] {});
+ } catch(java.lang.reflect.InvocationTargetException ite) {
+ ite.getCause().printStackTrace(System.out);
+ }
+
+ return ret;
+ }
+
+ public void reportError(Exception e) {
+ RecognitionException re = (RecognitionException)e;
+ String msg = null;
+ if(re.input instanceof ANTLRStringStream) {
+ msg = lexer.getErrorMessage(re, lexer.getTokenNames());
+ } else {
+ msg = parser.getErrorMessage(re, parser.getTokenNames());
+ }
+ // TODO: try to use re.token to get a complete location (may not always be possible, like for lexer errors)
+ runtime.reportProblem("Error", msg, re.line + ":" + (re.charPositionInLine + 1));
+ }
+
+ /**
+ * set up a list with the comments before a model element. The list contains a set of tokens
+ * @param input
+ * @param index
+ * @return
+ */
+ private List setTokenListBefore (TokenStream input, int index ){
+ List cb = new ArrayList();
+ if (index - 1 > 0 ) {
+ for (int i = index - 1 ; i >= 0 && (
+ input.get(i).getType() == TT_COMMENT || input.get(i).getType() == TT_NL) ; i--) {
+ cb.add(input.get(i));
+ }
+ }
+ return cb;
+ }
+
+ /**
+ * sets the comments before a model element.
+ * the input is the current stream. the index is the index of the current token
+ */
+ public void setCommentsBefore(Object ame, Object params_) {
+ if(params_ instanceof Object[]) {
+ Object params[] = (Object[])params_;
+ if((params[0] == null) || (params[1] == null)) return;
+ TokenStream input = (TokenStream)params[0];
+ int index = ((Token)params[1]).getTokenIndex();
+
+ setComments(setTokenListBefore(input, index), ame, true, "commentsBefore");
+ }
+ }
+ /**
+ * set us a list with the comments after a model element.
+ * @param input
+ * @param index
+ * @return set of tokens
+ */
+ private List setTokenListAfter (TokenStream input, int index){
+ List ca = new ArrayList();
+ if (index + 1 > 0 ) {
+ for (int i = index + 1;
+ i < input.size() && (
+ input.get(i).getType() == TT_COMMENT || input.get(i).getType() == TT_NL)
+ ; i++) {
+ ca.add(input.get(i));
+ }
+ }
+ return ca;
+ }
+ /**
+ *
+ * @param commentList a list with a set of tokens
+ * @param ame an ASM model element
+ * @param inverseOrder indicates if the elements of the list should be created in a normal order or on the inverse order
+ * @param elementName the name of the element that stores the comments
+ */
+ private void setComments (List commentList, Object ame, boolean inverseOrder, String elementName){
+ if(runtime.isKeepComments()) {
+ if(commentList.size() > 0) {
+ List aList = new ArrayList();
+ for (Iterator tokens = commentList.iterator(); tokens.hasNext();) {
+ Token token = (Token) tokens.next();
+ if(token.getType() == TT_COMMENT) {
+ if (inverseOrder)
+ aList.add(0, token.getText());
+ else
+ aList.add(token.getText());
+ } else if(token.getType() == TT_NL) {
+ if(runtime.isKeepNL())
+ if (inverseOrder)
+ aList.add(0, "\n");
+ else
+ aList.add("\n");
+ }
+ }
+ try {
+ runtime.getTargetModelAdapter().set(ame, elementName, aList);
+ } catch(Exception e) {
+ runtime.reportProblem("Warning", "could not set comments of " + ame + ", disabling further comments setting", ame);
+ runtime.setKeepComments(false);
+ }
+ }
+ }
+
+ }
+ public void setCommentsAfter(Object ame, Object params_) {
+ if(params_ instanceof Object[]) {
+ Object params[] = (Object[])params_;
+ if((params[0] == null) || (params[1] == null)) return;
+
+ TokenStream input = (TokenStream)params[0];
+ int index = ((Token)params[1]).getTokenIndex();
+
+ setComments(setTokenListAfter(input, index), ame, false,"commentsAfter");
+
+ runtime.setLastWasCreation(false);
+ }
+ }
+
+ public String getLocation(Object token) {
+ ANTLR3LocationToken lt = ((ANTLR3LocationToken)token);
+ return lt.getLine() + ":" + (lt.getCharPositionInLine() + 1) + "-" + lt.getEndLine() + ":" + (lt.getEndColumn() + 1);
+ }
+
+ public int getStartOffset(Object token) {
+ CommonToken t = ((CommonToken)token);
+ return t.getStartIndex();
+ }
+
+ public int getEndOffset(Object token) {
+ CommonToken t = ((CommonToken)token);
+ return t.getStopIndex();
+ }
+
+ public Object getLastToken() {
+ return parser.getTokenStream().LT(-1);
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/.classpath b/plugins/org.eclipse.gmt.tcs.metadata/.classpath
new file mode 100644
index 0000000..f1b3ad8
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/.project b/plugins/org.eclipse.gmt.tcs.metadata/.project
new file mode 100644
index 0000000..c5bfe29
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.gmt.tcs.metadata</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.gmt.tcs.metadata/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..f010b5e
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Tue Mar 25 10:54:03 CET 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/META-INF/MANIFEST.MF b/plugins/org.eclipse.gmt.tcs.metadata/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..badb8d2
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.gmt.tcs.metadata;singleton:=true
+Bundle-Version: 0.8.0
+Bundle-Activator: org.eclipse.gmt.tcs.metadata.Activator
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.m2m.atl.dsls;visibility:=reexport,
+ org.eclipse.emf.common;visibility:=reexport,
+ org.eclipse.m2m.atl.engine,
+ org.eclipse.ui,
+ org.eclipse.emf.ecore
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
+Eclipse-LazyStart: true
+Export-Package: org.eclipse.gmt.tcs.metadata
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/about.html b/plugins/org.eclipse.gmt.tcs.metadata/about.html
new file mode 100644
index 0000000..7cc291c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>January 21, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/ASMModelFactory.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/ASMModelFactory.class
new file mode 100644
index 0000000..f0911b8
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/ASMModelFactory.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/Activator.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/Activator.class
new file mode 100644
index 0000000..e75c112
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/Activator.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/Language.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/Language.class
new file mode 100644
index 0000000..49a4909
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/Language.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/LanguageRegistry.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/LanguageRegistry.class
new file mode 100644
index 0000000..ea06a14
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/LanguageRegistry.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/LanguageRegistryListener.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/LanguageRegistryListener.class
new file mode 100644
index 0000000..825ea24
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/LanguageRegistryListener.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/LanguageSource.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/LanguageSource.class
new file mode 100644
index 0000000..3e1b917
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/LanguageSource.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/ModelFactory.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/ModelFactory.class
new file mode 100644
index 0000000..ff4eee1
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/ModelFactory.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/RegularVMLauncher.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/RegularVMLauncher.class
new file mode 100644
index 0000000..034b62d
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/RegularVMLauncher.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/Utils$1.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/Utils$1.class
new file mode 100644
index 0000000..2edbf25
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/Utils$1.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/Utils.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/Utils.class
new file mode 100644
index 0000000..7939f9b
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/Utils.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/VMLauncher.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/VMLauncher.class
new file mode 100644
index 0000000..87e643a
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/VMLauncher.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/AdHocLanguageRegistry.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/AdHocLanguageRegistry.class
new file mode 100644
index 0000000..cc68446
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/AdHocLanguageRegistry.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/ModelCache.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/ModelCache.class
new file mode 100644
index 0000000..b959b86
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/ModelCache.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/PluginLanguage$ModelCacheFromURL.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/PluginLanguage$ModelCacheFromURL.class
new file mode 100644
index 0000000..cae98a2
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/PluginLanguage$ModelCacheFromURL.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/PluginLanguage.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/PluginLanguage.class
new file mode 100644
index 0000000..5aecad5
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/PluginLanguage.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/Startup.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/Startup.class
new file mode 100644
index 0000000..dc7e719
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/Startup.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/TCSInjection.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/TCSInjection.class
new file mode 100644
index 0000000..878622b
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/TCSInjection.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage$ModelCacheFromIFile.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage$ModelCacheFromIFile.class
new file mode 100644
index 0000000..16d433c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage$ModelCacheFromIFile.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage.class b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage.class
new file mode 100644
index 0000000..e9c683a
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/bin/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage.class
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/build.properties b/plugins/org.eclipse.gmt.tcs.metadata/build.properties
new file mode 100644
index 0000000..0227f00
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/build.properties
@@ -0,0 +1,14 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties,\
+ plugin.xml
+src.includes = schema/,\
+ src/,\
+ .classpath,\
+ .project,\
+ .settings/,\
+ build.properties,\
+ about.html
+
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/plugin.properties b/plugins/org.eclipse.gmt.tcs.metadata/plugin.properties
new file mode 100644
index 0000000..7e7f095
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/plugin.properties
@@ -0,0 +1,3 @@
+# NLS_MESSAGEFORMAT_VAR
+pluginName=TCS Metadata (Incubation)
+providerName=Eclipse.org
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/plugin.xml b/plugins/org.eclipse.gmt.tcs.metadata/plugin.xml
new file mode 100644
index 0000000..eab56d7
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/plugin.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension-point id="language" name="Language" schema="schema/language.exsd"/>
+ <extension-point id="registryListener" name="Language Registry Listener" schema="schema/registryListener.exsd"/>
+ <extension
+ point="org.eclipse.ui.startup">
+ <startup
+ class="org.eclipse.gmt.tcs.metadata.adhoc.Startup">
+ </startup>
+ </extension>
+</plugin>
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/schema/language.exsd b/plugins/org.eclipse.gmt.tcs.metadata/schema/language.exsd
new file mode 100644
index 0000000..d1b1208
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/schema/language.exsd
@@ -0,0 +1,151 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.gmt.tcs.metadata">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.gmt.tcs.metadata" id="language" name="Language"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <complexType>
+ <sequence minOccurs="1" maxOccurs="unbounded">
+ <element ref="language"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="language">
+ <complexType>
+ <attribute name="extension" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="metamodel" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="resource"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="editor" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="resource"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="outline" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="resource"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="parser" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="resource"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ <attribute name="syntax" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="resource"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/schema/registryListener.exsd b/plugins/org.eclipse.gmt.tcs.metadata/schema/registryListener.exsd
new file mode 100644
index 0000000..b13faaf
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/schema/registryListener.exsd
@@ -0,0 +1,97 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.gmt.tcs.metadata">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.gmt.tcs.metadata" id="registryListener" name="Language Registry Listener"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <complexType>
+ <sequence>
+ <element ref="registryListener"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="registryListener">
+ <complexType>
+ <attribute name="class" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.gmt.tcs.metadata.LanguageRegistryListener"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiInfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/ASMModelFactory.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/ASMModelFactory.java
new file mode 100644
index 0000000..14530e6
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/ASMModelFactory.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ASMModelFactory.java,v 1.2 2008/04/16 11:55:17 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.metadata;
+
+import java.io.InputStream;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.m2m.atl.engine.AtlEMFModelHandler;
+import org.eclipse.m2m.atl.engine.AtlModelHandler;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+
+/**
+ * @author Frédéric Jouault
+ *
+ */
+public class ASMModelFactory implements ModelFactory {
+
+ private static ModelFactory INSTANCE = new ASMModelFactory();
+
+ public static ModelFactory getDefault() {
+ return INSTANCE;
+ }
+
+ private AtlEMFModelHandler amh;
+
+ private ASMModelFactory() {
+ amh = (AtlEMFModelHandler)AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
+ }
+
+ public Object newModel(String name, Object metamodel) {
+ return amh.newModel(name, name + ".xmi", (ASMModel)metamodel);
+ }
+
+ public Object loadMetamodel(String name, Object location) {
+ return loadModel(name, amh.getMof(), location);
+ }
+
+ public Object loadModel(String name, Object metamodel, Object location) {
+ if(location instanceof URI) {
+ return amh.loadModel(name, (ASMModel)metamodel, (URI)location);
+ } else {
+ return amh.loadModel(name, (ASMModel)metamodel, (InputStream)location);
+ }
+ }
+
+ public Object metamodelOf(Object model) {
+ return ((ASMModel)model).getMetamodel();
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/Activator.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/Activator.java
new file mode 100644
index 0000000..879c4ea
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/Activator.java
@@ -0,0 +1,63 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: Activator.java,v 1.1 2008/04/01 17:47:40 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.metadata;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ * @author Frédéric Jouault
+ */
+public class Activator extends Plugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.gmt.tcs.metadata";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugins#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.core.runtime.Plugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/Language.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/Language.java
new file mode 100644
index 0000000..9bd5b37
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/Language.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: Language.java,v 1.2 2008/04/08 15:03:26 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.metadata;
+
+import java.io.OutputStream;
+import java.util.Map;
+
+import org.eclipse.m2m.atl.dsls.textsource.TextSource;
+import org.eclipse.m2m.atl.engine.vm.ASM;
+
+/**
+ *
+ * @author Frédéric Jouault
+ */
+public interface Language {
+
+ public String getName();
+
+ public String getExtension();
+
+ public Object getOutlineModel(ModelFactory factory);
+
+ public Object getEditorModel(ModelFactory factory);
+
+ public Object getMetamodel(ModelFactory factory);
+
+ /**
+ *
+ * @return the ASM of the compiler, or null if none exists.
+ */
+ public ASM getCompiler();
+
+ /**
+ *
+ * @param factory
+ * @param model the model to populate or null, in which case a new model will
+ * be created using the factory.
+ * @param source
+ * @param params
+ * @return the injected model.
+ */
+ public Object inject(ModelFactory factory, Object model, TextSource source, Map params);
+
+ public void extract(ModelFactory factory, Object model, OutputStream out, Map params);
+
+ /**
+ * @return the LanguageSource from which this Language
+ * is compiled, or null if no source is available (e.g., when the
+ * Language is provided by a plugin.
+ */
+ public LanguageSource getSource();
+}
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/LanguageRegistry.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/LanguageRegistry.java
new file mode 100644
index 0000000..6420b7c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/LanguageRegistry.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: LanguageRegistry.java,v 1.1 2008/04/01 17:47:40 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.metadata;
+
+import org.eclipse.core.resources.IResource;
+import org.eclipse.gmt.tcs.metadata.adhoc.AdHocLanguageRegistry;
+
+/**
+ *
+ * @author Frédéric Jouault
+ */
+public abstract class LanguageRegistry {
+
+ private static LanguageRegistry DEFAULT = new AdHocLanguageRegistry();
+
+ public static LanguageRegistry getDefault() {
+ return DEFAULT;
+ }
+
+ /**
+ * To be used by any Language user (e.g., TGE).
+ * TODO: Handle multiple Languages per extension.
+ */
+ public abstract Language getLanguage(String extension);
+
+ /**
+ * To be used by TCS builder.
+ * TODO: Handle multiple Languages per file
+ * (e.g., if resource is a KM3 metamodel, it may be associated to
+ * several TCS models).
+ * @param resource the resource (e.g., KM3 or TCS IFile,
+ * TCS Language IProject) identifying one of the source resource of the
+ * Language.
+ * @return the Language of which resource is a part of the source,
+ * or null if there is no corresponding Language.
+ */
+ public abstract Language getLanguageFromSource(IResource resource);
+}
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/LanguageRegistryListener.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/LanguageRegistryListener.java
new file mode 100644
index 0000000..8c101b3
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/LanguageRegistryListener.java
@@ -0,0 +1,22 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: LanguageRegistryListener.java,v 1.1 2008/04/01 17:47:40 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.metadata;
+
+/**
+ * @author Frédéric Jouault
+ *
+ */
+public interface LanguageRegistryListener {
+
+ public void registered(Language language);
+}
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/LanguageSource.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/LanguageSource.java
new file mode 100644
index 0000000..c2db32f
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/LanguageSource.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: LanguageSource.java,v 1.3 2008/06/24 14:27:32 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.metadata;
+
+import org.eclipse.core.resources.IFile;
+
+/**
+ *
+ * @author Frédéric Jouault
+ */
+public interface LanguageSource {
+
+ public IFile getTCSSourceFile();
+
+ public IFile getKM3SourceFile();
+
+ public IFile getAnnotationSourceFile();
+
+ public String getProperty(String key);
+
+ public IFile getEditorFile();
+
+ public IFile getOutlineFile();
+
+ public IFile getMetamodelFile();
+
+ public IFile getGrammarFile();
+
+ public String getParserGenerator();
+
+ public IFile getParserFile();
+
+ public IFile getACGSourceFile();
+
+ public IFile getCompilerFile();
+}
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/ModelFactory.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/ModelFactory.java
new file mode 100644
index 0000000..f143dd8
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/ModelFactory.java
@@ -0,0 +1,36 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ModelFactory.java,v 1.2 2008/04/16 11:55:17 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.metadata;
+
+/**
+ * @author Frédéric Jouault
+ *
+ */
+public interface ModelFactory {
+
+ /**
+ * @param metamodel
+ * @return
+ */
+ public Object newModel(String name, Object metamodel);
+
+ public Object loadMetamodel(String name, Object location);
+
+ public Object loadModel(String name, Object metamodel, Object location);
+
+ /**
+ * @param model
+ * @return the metamodel of the model passed as parameter.
+ */
+ public Object metamodelOf(Object model);
+}
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/RegularVMLauncher.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/RegularVMLauncher.java
new file mode 100644
index 0000000..dda6d06
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/RegularVMLauncher.java
@@ -0,0 +1,39 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: RegularVMLauncher.java,v 1.2 2008/04/16 20:19:35 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.metadata;
+
+import java.net.URL;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.m2m.atl.engine.AtlLauncher;
+
+/**
+ * @author Frédéric Jouault
+ *
+ */
+public class RegularVMLauncher implements VMLauncher {
+
+ public Object launch(Object asm, Map models, Map libraries) {
+ Map asmParams = Collections.EMPTY_MAP;
+ List superimpose = Collections.EMPTY_LIST;
+ Map options = Collections.EMPTY_MAP;
+ if(asm instanceof URL) {
+ return AtlLauncher.getDefault().launch((URL)asm, libraries, models, asmParams, superimpose, options);
+ } else {
+ throw new RuntimeException("unsupported kind of asm: " + asm.getClass().getName());
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/Utils.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/Utils.java
new file mode 100644
index 0000000..cb9ceda
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/Utils.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: Utils.java,v 1.3 2008/04/13 21:45:55 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.metadata;
+
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorDescriptor;
+import org.eclipse.ui.IEditorRegistry;
+import org.eclipse.ui.IFileEditorMapping;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.internal.registry.EditorDescriptor;
+import org.eclipse.ui.internal.registry.EditorRegistry;
+import org.eclipse.ui.internal.registry.FileEditorMapping;
+
+/**
+ * @author Frédéric Jouault
+ *
+ */
+public class Utils {
+ public static void registerEditorForExtension(final String editorId, final String ext, final boolean isDefault) {
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ String dummyFileName = "test." + ext;
+ IEditorDescriptor previousDefaultEditorDescriptor = PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor(dummyFileName);
+ String previousDefaultEditorId = (previousDefaultEditorDescriptor == null) ? null : previousDefaultEditorDescriptor.getId();
+ actualRegisterEditorForExtension(editorId, ext);
+ if(isDefault) {
+ PlatformUI.getWorkbench().getEditorRegistry().setDefaultEditor(dummyFileName, editorId);
+ } else if(previousDefaultEditorDescriptor != null) {
+ PlatformUI.getWorkbench().getEditorRegistry().setDefaultEditor(dummyFileName, previousDefaultEditorId);
+ }
+ }
+ });
+ }
+
+ private static void actualRegisterEditorForExtension(String editorId, String ext) {
+ IEditorRegistry editorRegistry = PlatformUI.getWorkbench().getEditorRegistry();
+ IEditorDescriptor editorDescriptor = editorRegistry.findEditor(editorId);
+ if (editorDescriptor != null) {
+ IFileEditorMapping fileEditorMappings[] = editorRegistry.getFileEditorMappings();
+ IFileEditorMapping fileEditorMapping = null;
+ for (int i = 0 ; i < fileEditorMappings.length ; i++) {
+ IFileEditorMapping aFileEditorMapping = fileEditorMappings[i];
+ if(aFileEditorMapping.getExtension().equals(ext)) {
+ fileEditorMapping = aFileEditorMapping;
+ break;
+ }
+ }
+
+ if (fileEditorMapping != null) {
+ IEditorDescriptor[] editorDescriptors = fileEditorMapping.getEditors();
+ IEditorDescriptor mappedEditorDescriptor = null;
+ for (int i = 0 ; i < editorDescriptors.length ; i++) {
+ if (editorDescriptors[i].getId().equals(editorId)) {
+ mappedEditorDescriptor = editorDescriptors[i];
+ break;
+ }
+ }
+
+ if(mappedEditorDescriptor == null) {
+ ((FileEditorMapping)fileEditorMapping).addEditor((EditorDescriptor)editorDescriptor);
+ try {
+ ((EditorRegistry)editorRegistry).setFileEditorMappings((FileEditorMapping[])fileEditorMappings);
+ } catch(Exception e) {
+ // an exception will not prevent saving associations
+ }
+ ((EditorRegistry)editorRegistry).saveAssociations();
+ }
+
+ } else {
+ fileEditorMapping = new FileEditorMapping(ext);
+ FileEditorMapping[] newFileEditorMappings = new FileEditorMapping[fileEditorMappings.length + 1];
+ ((FileEditorMapping)fileEditorMapping).addEditor((EditorDescriptor)editorDescriptor);
+
+ System.arraycopy(fileEditorMappings, 0, newFileEditorMappings, 0, fileEditorMappings.length);
+ newFileEditorMappings[fileEditorMappings.length] = (FileEditorMapping)fileEditorMapping;
+ try {
+ ((EditorRegistry)editorRegistry).setFileEditorMappings((FileEditorMapping[])newFileEditorMappings);
+ } catch(Exception e) {
+ // an exception will not prevent saving associations
+ }
+ ((EditorRegistry)editorRegistry).saveAssociations();
+ }
+ }
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/VMLauncher.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/VMLauncher.java
new file mode 100644
index 0000000..74dd792
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/VMLauncher.java
@@ -0,0 +1,24 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: VMLauncher.java,v 1.2 2008/04/16 20:19:35 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.metadata;
+
+import java.util.Map;
+
+/**
+ * @author Frédéric Jouault
+ *
+ */
+public interface VMLauncher {
+
+ public Object launch(Object asm, Map models, Map libraries);
+}
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/AdHocLanguageRegistry.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/AdHocLanguageRegistry.java
new file mode 100644
index 0000000..265baa9
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/AdHocLanguageRegistry.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: AdHocLanguageRegistry.java,v 1.4 2008/04/08 15:08:10 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.metadata.adhoc;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmt.tcs.metadata.Language;
+import org.eclipse.gmt.tcs.metadata.LanguageRegistry;
+import org.eclipse.gmt.tcs.metadata.LanguageRegistryListener;
+import org.osgi.framework.Bundle;
+
+/**
+ *
+ * @author Frédéric Jouault
+ */
+public class AdHocLanguageRegistry extends LanguageRegistry {
+
+ private boolean traversedAllProjects = false;
+ private Map languageByExtension;
+ private Map languageBySourceProject;
+ private List listeners = new ArrayList();
+
+ public AdHocLanguageRegistry() {
+ languageByExtension = new HashMap();
+
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ if (registry == null) {
+ throw new RuntimeException("Extension registry not found");
+ }
+
+ IExtensionPoint point = registry.getExtensionPoint("org.eclipse.gmt.tcs.metadata.registryListener");//$NON-NLS-1$
+
+ IExtension[] extensions = point.getExtensions();
+ for(int i = 0 ; i < extensions.length ; i++){
+ IConfigurationElement[] elements = extensions[i].getConfigurationElements();
+ for(int j = 0 ; j < elements.length ; j++){
+ try {
+ LanguageRegistryListener registryListener = (LanguageRegistryListener)elements[j].createExecutableExtension("class");
+ listeners.add(registryListener);
+ } catch (CoreException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+
+ point = registry.getExtensionPoint("org.eclipse.gmt.tcs.metadata.language");//$NON-NLS-1$
+
+ extensions = point.getExtensions();
+ for(int i = 0 ; i < extensions.length ; i++){
+ IConfigurationElement[] elements = extensions[i].getConfigurationElements();
+ for(int j = 0 ; j < elements.length ; j++){
+ String pluginId = elements[j].getContributor().getName();
+ Bundle bundle = Platform.getBundle(pluginId);
+ String extension = elements[j].getAttribute("extension");
+ String name = elements[j].getAttribute("name");
+ URI metamodel = getURI(bundle, elements[j].getAttribute("metamodel"));
+ URL editor = getURL(bundle, elements[j], "editor");
+ URL outline = getURL(bundle, elements[j], "outline");
+ URL syntax = getURL(bundle, elements[j], "syntax");
+ URL parser = getURL(bundle, elements[j], "parser");
+ Language language = new PluginLanguage(
+ extension, name, metamodel, syntax, editor, outline, parser
+ );
+ languageByExtension.put(extension, language);
+ register(language);
+ }
+ }
+
+ languageBySourceProject = new HashMap();
+ }
+
+ private URL getURL(Bundle bundle, IConfigurationElement element, String name) {
+ return FileLocator.find(bundle, new Path(element.getAttribute(name)), Collections.EMPTY_MAP);
+ }
+
+ private URI getURI(Bundle bundle, String path) {
+ // The following line is not compatible with Eclipse 2.2.x
+ //return URI.createPlatformPluginURI(pluginId + "/" + path, true);
+ return URI.createURI(FileLocator.find(bundle, new Path(path), Collections.EMPTY_MAP).toString());
+ }
+
+ public Language getLanguage(String extension) {
+ Language ret = (Language)languageByExtension.get(extension);
+
+ if((ret == null) && !traversedAllProjects) {
+ IProject projects[] = ResourcesPlugin.getWorkspace().getRoot().getProjects();
+
+ LanguageRegistry tsr = LanguageRegistry.getDefault();
+ for(int i = 0 ; i < projects.length ; i++) {
+ Language ts = tsr.getLanguageFromSource(projects[i]);
+ // ts == null if the project is not a language project or is closed
+ if(ts != null) {
+ register(ts);
+ }
+ }
+ traversedAllProjects = true;
+ ret = (Language)languageByExtension.get(extension);
+ }
+
+ return ret;
+ }
+
+ public Language getLanguageFromSource(IResource resource) {
+ IProject project = resource.getProject();
+ Language ret = (Language)languageBySourceProject.get(project);
+
+ if(ret == null) {
+ try {
+ ret = new WorkspaceLanguage(project);
+ languageBySourceProject.put(project, ret);
+
+ Language other = (Language)languageByExtension.get(ret.getExtension());
+ try {
+ project.deleteMarkers(IMarker.PROBLEM, true, 0);
+ if(other != null) {
+ IMarker marker = project.createMarker(IMarker.PROBLEM);
+ if(other.getSource() != null) {
+ marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_ERROR);
+ marker.setAttribute(IMarker.MESSAGE, "Language " + other.getName() + " defines another language with the same extension as this project");
+ } else {
+ marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
+ marker.setAttribute(IMarker.MESSAGE, "The extension defined by this project masks language " + other.getName() + " registered by a plugin");
+ }
+ }
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ languageByExtension.put(ret.getExtension(), ret);
+ register(ret);
+ } catch(RuntimeException re) {
+ // we get here when the project is not valid
+ }
+ }
+
+ return ret;
+ }
+
+ private void register(Language language) {
+ for(Iterator i = listeners.iterator() ; i.hasNext() ; ) {
+ LanguageRegistryListener registryListener = (LanguageRegistryListener)i.next();
+ registryListener.registered(language);
+ }
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/ModelCache.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/ModelCache.java
new file mode 100644
index 0000000..a40becf
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/ModelCache.java
@@ -0,0 +1,61 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: ModelCache.java,v 1.1 2008/04/08 15:04:35 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.metadata.adhoc;
+
+import java.lang.ref.SoftReference;
+import java.util.Map;
+import java.util.WeakHashMap;
+
+import org.eclipse.gmt.tcs.metadata.ModelFactory;
+
+/**
+ * @author Frédéric Jouault
+ *
+ */
+public abstract class ModelCache {
+
+ private Map modelByModelFactory = null;
+
+ public final synchronized Object getModel(ModelFactory factory) {
+ Object ret = null;
+
+ if(!shouldReload()) {
+ if(modelByModelFactory != null) {
+ SoftReference sr = (SoftReference)modelByModelFactory.get(factory);
+ if(sr != null) {
+ ret = sr.get();
+ }
+ }
+ }
+
+ if(ret == null) {
+ ret = loadModel(factory);
+ putModel(factory, ret);
+ }
+
+ return ret;
+ }
+
+ private void putModel(ModelFactory factory, Object model) {
+ if(modelByModelFactory == null) {
+ modelByModelFactory = new WeakHashMap();
+ }
+ modelByModelFactory.put(factory, new SoftReference(model));
+ }
+
+ protected abstract Object loadModel(ModelFactory factory);
+
+ protected boolean shouldReload() {
+ return false;
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/PluginLanguage.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/PluginLanguage.java
new file mode 100644
index 0000000..813743b
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/PluginLanguage.java
@@ -0,0 +1,129 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: PluginLanguage.java,v 1.2 2008/04/08 15:06:05 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.metadata.adhoc;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.net.URL;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmt.tcs.extractor.TCSExtractor;
+import org.eclipse.gmt.tcs.metadata.Language;
+import org.eclipse.gmt.tcs.metadata.LanguageSource;
+import org.eclipse.gmt.tcs.metadata.ModelFactory;
+import org.eclipse.m2m.atl.dsls.DSLResourceProvider;
+import org.eclipse.m2m.atl.dsls.textsource.TextSource;
+import org.eclipse.m2m.atl.engine.vm.ASM;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+
+/**
+ *
+ * @author Frédéric Jouault
+ */
+public class PluginLanguage implements Language {
+
+ private static class ModelCacheFromURL extends ModelCache {
+ private String metamodelName;
+ private URI metamodelURI;
+ private String modelName;
+ private URL modelURL;
+
+ public ModelCacheFromURL(String metamodelName, URI metamodelURI, String modelName, URL modelURL) {
+ this.metamodelName = metamodelName;
+ this.metamodelURI = metamodelURI;
+ this.modelName = modelName;
+ this.modelURL = modelURL;
+ }
+
+ protected Object loadModel(ModelFactory factory) {
+ Object metamodel = factory.loadMetamodel(metamodelName, metamodelURI);
+ Object ret;
+ try {
+ ret = factory.loadModel(modelName + "-" + metamodelName, metamodel, modelURL.openStream());
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ return ret;
+ }
+ }
+
+ private String name;
+ private String extension;
+ private URI metamodelURI;
+ private ModelCache metamodelCache = new ModelCache() {
+ protected Object loadModel(ModelFactory factory) {
+ return factory.loadMetamodel(name, metamodelURI);
+ }
+ };
+ private ModelCache syntaxCache;
+ private ModelCache editorCache;
+ private ModelCache outlineCache;
+ private URL parser;
+
+ public PluginLanguage(String extension, String name, URI metamodel,
+ URL syntax, URL editor, URL outline, URL parser) {
+ this.extension = extension;
+ this.name = name;
+ this.metamodelURI = metamodel;
+ syntaxCache = new ModelCacheFromURL("TCS", DSLResourceProvider.getDefault().getResource("TCS/Metamodel/TCS.ecore").asEMFURI(), name, syntax);
+ editorCache = new ModelCacheFromURL("Editor", DSLResourceProvider.getDefault().getResource("Editor/Metamodel/Editor.ecore").asEMFURI(), name, editor);
+ outlineCache = new ModelCacheFromURL("Outline", DSLResourceProvider.getDefault().getResource("Outline/Metamodel/Outline.ecore").asEMFURI(), name, outline);
+ this.parser = parser;
+ }
+
+ public LanguageSource getSource() {
+ return null; // no associated source
+ }
+
+ public Object inject(ModelFactory factory, Object model, TextSource source, Map params) {
+ params.put("name", name);
+ // TODO: support multiple parserGenerators
+ params.put("parserGenerator", "antlr3");
+ return TCSInjection.inject(factory, model, getMetamodel(factory), source, params, parser);
+ }
+
+ public void extract(ModelFactory factory, Object model, OutputStream out, Map params) {
+ Object format = getSyntax(factory);
+ params.put("format", format);
+ new TCSExtractor().extract((ASMModel)model, out, params);
+ }
+
+ private Object getSyntax(ModelFactory factory) {
+ return syntaxCache.getModel(factory);
+ }
+
+ public Object getEditorModel(ModelFactory factory) {
+ return editorCache.getModel(factory);
+ }
+
+ public Object getOutlineModel(ModelFactory factory) {
+ return outlineCache.getModel(factory);
+ }
+
+ public Object getMetamodel(ModelFactory factory) {
+ return metamodelCache.getModel(factory);
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getExtension() {
+ return extension;
+ }
+
+ public ASM getCompiler() {
+ return null;
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/Startup.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/Startup.java
new file mode 100644
index 0000000..5ff97b3
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/Startup.java
@@ -0,0 +1,34 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: Startup.java,v 1.2 2008/06/25 12:22:26 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.metadata.adhoc;
+
+import org.eclipse.gmt.tcs.metadata.LanguageRegistry;
+import org.eclipse.ui.IStartup;
+
+/**
+ *
+ * @author Frédéric Jouault
+ */
+public class Startup implements IStartup {
+
+ public void earlyStartup() {
+ // force traversal of all projects
+ LanguageRegistry.getDefault().getLanguage("<dummy>");
+ // TODO: listen to workspace changes? For instance:
+// ResourcesPlugin.getWorkspace().addResourceChangeListener(new IResourceChangeListener() {
+// public void resourceChanged(IResourceChangeEvent event) {
+// event.getDelta()...
+// }
+// }, IResourceChangeEvent.POST_CHANGE);
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/TCSInjection.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/TCSInjection.java
new file mode 100644
index 0000000..b614c74
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/TCSInjection.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TCSInjection.java,v 1.3 2008/06/28 17:12:56 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.metadata.adhoc;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Map;
+
+import org.eclipse.gmt.tcs.injector.TCSInjector;
+import org.eclipse.gmt.tcs.metadata.ModelFactory;
+import org.eclipse.m2m.atl.dsls.textsource.TextSource;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+
+/**
+ *
+ * @author Frédéric Jouault
+ */
+public class TCSInjection {
+
+// /**
+// *
+// * @param uriJar
+// * @return an URLClassLoader containing
+// */
+// private static ClassLoader createLoader(URL jarURL) {
+// return new TCSClassLoader(new URL[] {jarURL}, TCSInjection.class.getClassLoader());
+// }
+
+ public static Object inject(ModelFactory factory, Object model, Object metamodel, TextSource source, Map params, URL parserURL) {
+ if(model == null) {
+ model = factory.newModel("model.xmi", metamodel);
+ }
+// ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ try {
+// ClassLoader jcl = createLoader(parserURL);
+// Thread.currentThread().setContextClassLoader(jcl);
+ InputStream in = new BufferedInputStream(source.openStream());
+ params.put("extraClasspath", new URL[] {parserURL});
+ new TCSInjector().inject((ASMModel)model, in, params);
+ in.close();
+ } catch(IOException e) {
+ throw new RuntimeException("Could not inject", e);
+ } finally {
+// Thread.currentThread().setContextClassLoader(cl);
+ }
+ return model;
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage.java b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage.java
new file mode 100644
index 0000000..670cfa1
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.metadata/src/org/eclipse/gmt/tcs/metadata/adhoc/WorkspaceLanguage.java
@@ -0,0 +1,330 @@
+/**
+ * Copyright (c) 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: WorkspaceLanguage.java,v 1.9 2008/06/24 14:27:32 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.metadata.adhoc;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.gmt.tcs.extractor.TCSExtractor;
+import org.eclipse.gmt.tcs.metadata.Language;
+import org.eclipse.gmt.tcs.metadata.LanguageSource;
+import org.eclipse.gmt.tcs.metadata.ModelFactory;
+import org.eclipse.gmt.tcs.metadata.VMLauncher;
+import org.eclipse.m2m.atl.dsls.DSLResourceProvider;
+import org.eclipse.m2m.atl.dsls.textsource.IFileTextSource;
+import org.eclipse.m2m.atl.dsls.textsource.TextSource;
+import org.eclipse.m2m.atl.engine.AtlEMFModelHandler;
+import org.eclipse.m2m.atl.engine.AtlModelHandler;
+import org.eclipse.m2m.atl.engine.vm.ASM;
+import org.eclipse.m2m.atl.engine.vm.ASMXMLReader;
+import org.eclipse.m2m.atl.engine.vm.nativelib.ASMModel;
+
+/**
+ *
+ * @author Frédéric Jouault
+ */
+public class WorkspaceLanguage implements Language, LanguageSource {
+
+ private static class ModelCacheFromIFile extends ModelCache {
+ private String metamodelName;
+ private URI metamodelURI;
+ private String modelName;
+ private IFile modelFile;
+ private long timestamp;
+
+ public ModelCacheFromIFile(String metamodelName, URI metamodelURI, String modelName, IFile modelFile) {
+ this.metamodelName = metamodelName;
+ this.metamodelURI = metamodelURI;
+ this.modelName = modelName;
+ this.modelFile = modelFile;
+ }
+
+ protected Object loadModel(ModelFactory factory) {
+ Object metamodel = factory.loadMetamodel(metamodelName, metamodelURI);
+ Object ret = null;
+ try {
+ ret = factory.loadModel(modelName + "-" + metamodelName, metamodel, modelFile.getContents());
+ this.timestamp = modelFile.getModificationStamp();
+ } catch (CoreException e) {
+ throw new RuntimeException(e);
+ }
+ return ret;
+ }
+
+ protected boolean shouldReload() {
+ return modelFile.getModificationStamp() != timestamp;
+ }
+ }
+
+ private static final String DEFAULT_PARSER_GENERATOR_NAME = "antlr3";
+
+ private IProject project;
+ private String name;
+ private String extension;
+ // TODO: properties timestamp
+ private long propertiesTimestamp;
+ private IFile propertiesFile;
+ private Properties properties;
+ private IFile editorFile;
+ private ModelCache editorCache;
+ private IFile outlineFile;
+ private ModelCache outlineCache;
+ private IFile ecoreFile;
+ private ModelCache metamodelCache;
+ private IFile compilerFile;
+
+ private IFile jarFile;
+ private IFile km3File;
+ private IFile annotationFile;
+ private IFile tcsFile;
+ private IFile antlrFile;
+ private IFile acgFile;
+
+ public WorkspaceLanguage(IProject project) {
+ this.project = project;
+ propertiesFile = project.getFile("build.properties");
+
+ if(!propertiesFile.exists()) {
+ throw new RuntimeException("Missing property file");
+ }
+
+ try {
+ properties = new Properties();
+ InputStream in = propertiesFile.getContents();
+ properties.load(in);
+ in.close();
+ propertiesTimestamp = propertiesFile.getModificationStamp();
+ } catch(IOException e) {
+ throw new RuntimeException("Error reading properties file", e);
+ } catch(CoreException e) {
+ throw new RuntimeException("Error reading properties file", e);
+ }
+
+ name = properties.getProperty("dsl.name");
+ extension = properties.getProperty("dsl.ext");
+ if(extension == null) {
+ throw new RuntimeException("Missing extension");
+ }
+
+ if(name == null) {
+ throw new RuntimeException("Missing name");
+ }
+
+ km3File = project.getFile("Metamodel/" + name + ".km3");
+ annotationFile = project.getFile("Metamodel/" + name + ".ann");
+ tcsFile = project.getFile("Syntax/" + name + ".tcs");
+
+ if(!km3File.exists()) {
+ throw new RuntimeException("Missing KM3 file");
+ }
+
+ if(!tcsFile.exists()) {
+ throw new RuntimeException("Missing TCS file");
+ }
+
+ editorFile = project.getFile("TGE/" + name + "-Editor.xmi");
+ editorCache = new ModelCacheFromIFile("Editor", DSLResourceProvider.getDefault().getResource("Editor/Metamodel/Editor.ecore").asEMFURI(), name, editorFile);
+
+ outlineFile = project.getFile("TGE/" + name + "-Outline.xmi");
+ outlineCache = new ModelCacheFromIFile("Outline", DSLResourceProvider.getDefault().getResource("Outline/Metamodel/Outline.ecore").asEMFURI(), name, outlineFile);
+
+ ecoreFile = project.getFile("Metamodel/" + name + ".ecore");
+ metamodelCache = new ModelCache() {
+ private long timestamp;
+
+ protected Object loadModel(ModelFactory factory) {
+ try {
+ Object ret = factory.loadMetamodel(name, ecoreFile.getContents());
+ this.timestamp = ecoreFile.getModificationStamp();
+ return ret;
+ } catch (CoreException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ protected boolean shouldReload() {
+ return ecoreFile.getModificationStamp() != timestamp;
+ }
+ };
+
+ antlrFile = project.getFile("Syntax/" + name + "_ANTLR3.g");
+ jarFile = project.getFile("Syntax/" + name + "-parser.jar");
+
+ acgFile = project.getFile("Compiler/" + name + ".acg");
+ compilerFile = project.getFile("Compiler/" + name + ".asm");
+ }
+
+ public Object getEditorModel(ModelFactory factory) {
+ return editorCache.getModel(factory);
+ }
+
+ public Object getOutlineModel(ModelFactory factory) {
+ return outlineCache.getModel(factory);
+ }
+
+ public Object getMetamodel(ModelFactory factory) {
+ return metamodelCache.getModel(factory);
+ }
+
+ public LanguageSource getSource() {
+ return this;
+ }
+
+ public Object inject(ModelFactory factory, Object model, TextSource source, Map params) {
+ try {
+ params.put("name", name);
+ // TODO: support multiple parserGenerators
+ params.put("parserGenerator", getParserGenerator());
+ Object metamodel = getMetamodel(factory);
+ Object problemModel = params.get("problems"); // if we get it after the injection, it may have been replaced by a model adapter
+ Object ret = TCSInjection.inject(factory, model, metamodel, source, params, jarFile.getLocationURI().toURL());
+ if(problemModel != null) {
+ // TODO: if no parsing error
+ VMLauncher vmLauncher = (VMLauncher)params.get("vmLauncher");
+ if(vmLauncher != null) {
+ IFile wfrFile = project.getFile("WFR/" + name + ".asm");
+ if(wfrFile.exists()) {
+ Map libraries = new HashMap();
+ String libNameAndPathsCSV = getProperty("wfr.libraries");
+ if(libNameAndPathsCSV != null) {
+ String libNameAndPaths[] = libNameAndPathsCSV.split(",");
+ for(int i = 0 ; i < libNameAndPaths.length ; i++) {
+ String parts[] = libNameAndPaths[i].split("=");
+ libraries.put(parts[0], project.getFile(parts[1]).getLocationURI().toURL());
+ }
+ }
+ Map models = new HashMap();
+ models.put(name, metamodel);
+ models.put("IN", ret);
+ models.put("Problem", factory.metamodelOf(problemModel));
+ models.put("OUT", problemModel);
+ vmLauncher.launch(wfrFile.getLocationURI().toURL(), models, libraries);
+ }
+ }
+ }
+ return ret;
+ } catch (MalformedURLException e) {
+ throw new RuntimeException("Could not inject", e);
+ }
+ }
+
+ public void extract(ModelFactory factory, Object model, OutputStream out, Map params) {
+ AtlEMFModelHandler amh = (AtlEMFModelHandler)AtlModelHandler.getDefault(AtlModelHandler.AMH_EMF);
+ ASMModel tcsMetamodel = amh.loadModel("TCS", amh.getMof(), DSLResourceProvider.getDefault().getResource("TCS/Metamodel/TCS.ecore").asEMFURI());
+ ASMModel format = amh.newModel("syntax", "model.xmi", tcsMetamodel);
+ Map oparams = new HashMap();
+ oparams.put("name", "TCS");
+ TCSInjection.inject(factory, format, tcsMetamodel, new IFileTextSource(tcsFile), oparams, DSLResourceProvider.getDefault().getResource("TCS/Syntax/TCS-parser.jar").asURL());
+ params.put("format", format);
+ new TCSExtractor().extract((ASMModel)model, out, params);
+ }
+
+ public String getExtension() {
+ return extension;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public ASM getCompiler() {
+ ASM ret = null;
+ if(compilerFile != null && compilerFile.exists()) {
+ try {
+ ret = new ASMXMLReader().read(new BufferedInputStream(compilerFile.getContents()));
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+ }
+ return ret;
+ }
+
+ public String getProperty(String key) {
+ if(propertiesFile.getModificationStamp() != propertiesTimestamp) {
+ properties = new Properties();
+ try {
+ properties.load(propertiesFile.getContents());
+ } catch (IOException e) {
+ throw new RuntimeException("Error reading properties file", e);
+ } catch (CoreException e) {
+ throw new RuntimeException("Error reading properties file", e);
+ }
+ propertiesTimestamp = propertiesFile.getModificationStamp();
+ if(!name.equals(properties.getProperty("dsl.name"))) {
+ throw new RuntimeException("Language name changed, restart Eclipse");
+ }
+ if(!extension.equals(properties.getProperty("dsl.ext"))) {
+ throw new RuntimeException("language extension changed, restart Eclipse");
+ }
+ }
+ return properties.getProperty(key);
+ }
+
+ public IFile getEditorFile() {
+ return editorFile;
+ }
+
+ public IFile getKM3SourceFile() {
+ return km3File;
+ }
+
+ public IFile getAnnotationSourceFile() {
+ return annotationFile;
+ }
+
+ public IFile getOutlineFile() {
+ return outlineFile;
+ }
+
+ public IFile getTCSSourceFile() {
+ return tcsFile;
+ }
+
+ public IFile getMetamodelFile() {
+ return ecoreFile;
+ }
+
+ public IFile getGrammarFile() {
+ return antlrFile;
+ }
+
+ public String getParserGenerator() {
+ String ret = getProperty("parser.generator.name");
+ if(ret == null) {
+ ret = DEFAULT_PARSER_GENERATOR_NAME;
+ }
+ return ret;
+ }
+
+ public IFile getParserFile() {
+ return jarFile;
+ }
+
+ public IFile getACGSourceFile() {
+ return acgFile;
+ }
+
+ public IFile getCompilerFile() {
+ return compilerFile;
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.wizard/.classpath b/plugins/org.eclipse.gmt.tcs.wizard/.classpath
new file mode 100644
index 0000000..18a194d
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.wizard/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.gmt.tcs.wizard/.project b/plugins/org.eclipse.gmt.tcs.wizard/.project
new file mode 100644
index 0000000..c1e26f0
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.wizard/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.gmt.tcs.wizard</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.gmt.tcs.wizard/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.gmt.tcs.wizard/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..3b2a4e6
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.wizard/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Fri Mar 28 02:01:09 CET 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
+org.eclipse.jdt.core.compiler.source=1.3
diff --git a/plugins/org.eclipse.gmt.tcs.wizard/META-INF/MANIFEST.MF b/plugins/org.eclipse.gmt.tcs.wizard/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..76030a4
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.wizard/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.gmt.tcs.wizard;singleton:=true
+Bundle-Version: 0.8.0
+Bundle-Activator: org.eclipse.gmt.tcs.wizard.Activator
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.gmt.tcs.builder,
+ org.eclipse.gmt.tcs.metadata
+Eclipse-LazyStart: true
+Bundle-RequiredExecutionEnvironment: J2SE-1.4
diff --git a/plugins/org.eclipse.gmt.tcs.wizard/about.html b/plugins/org.eclipse.gmt.tcs.wizard/about.html
new file mode 100644
index 0000000..7cc291c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.wizard/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>January 21, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.wizard/build.properties b/plugins/org.eclipse.gmt.tcs.wizard/build.properties
new file mode 100644
index 0000000..79edf33
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.wizard/build.properties
@@ -0,0 +1,8 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ resources/,\
+ plugin.properties
+src.includes = about.html
diff --git a/plugins/org.eclipse.gmt.tcs.wizard/plugin.properties b/plugins/org.eclipse.gmt.tcs.wizard/plugin.properties
new file mode 100644
index 0000000..8ef13df
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.wizard/plugin.properties
@@ -0,0 +1,2 @@
+pluginName = TCS Wizard (Incubation)
+providerName = Eclipse.org \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs.wizard/plugin.xml b/plugins/org.eclipse.gmt.tcs.wizard/plugin.xml
new file mode 100644
index 0000000..18cc812
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.wizard/plugin.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+ <extension
+ id="Wizards"
+ point="org.eclipse.ui.newWizards">
+ <wizard
+ category="atlWizard"
+ class="org.eclipse.gmt.tcs.wizard.TCSProjectWizard"
+ hasPages="true"
+ icon="resources/tcsicon.png"
+ id="org.eclipse.gmt.tcs.wizard.TCSProject"
+ name="TCS Language Project"
+ preferredPerspectives="org.atl.eclipse.adt.atlPerspective"
+ project="true">
+ <description>
+ Create a TCS Language Project
+ </description>
+ </wizard>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.gmt.tcs.wizard/resources/tcsicon.png b/plugins/org.eclipse.gmt.tcs.wizard/resources/tcsicon.png
new file mode 100644
index 0000000..33c9015
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.wizard/resources/tcsicon.png
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs.wizard/src/org/eclipse/gmt/tcs/wizard/Activator.java b/plugins/org.eclipse.gmt.tcs.wizard/src/org/eclipse/gmt/tcs/wizard/Activator.java
new file mode 100644
index 0000000..407b827
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.wizard/src/org/eclipse/gmt/tcs/wizard/Activator.java
@@ -0,0 +1,64 @@
+/**
+ * Copyright (c) 2007, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: Activator.java,v 1.2 2008/06/25 12:12:42 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.wizard;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ * @author Frédéric Jouault
+ *
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.gmt.tcs.wizard";
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/plugins/org.eclipse.gmt.tcs.wizard/src/org/eclipse/gmt/tcs/wizard/TCSProjectWizard.java b/plugins/org.eclipse.gmt.tcs.wizard/src/org/eclipse/gmt/tcs/wizard/TCSProjectWizard.java
new file mode 100644
index 0000000..444e489
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.wizard/src/org/eclipse/gmt/tcs/wizard/TCSProjectWizard.java
@@ -0,0 +1,188 @@
+/**
+ * Copyright (c) 2007, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TCSProjectWizard.java,v 1.8 2008/07/03 14:43:34 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.wizard;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.core.resources.ICommand;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.gmt.tcs.builder.TCSBuilder;
+import org.eclipse.gmt.tcs.metadata.LanguageRegistry;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.ui.INewWizard;
+import org.eclipse.ui.IWorkbench;
+
+/**
+ *
+ * @author Frédéric Jouault
+ * @author Mikaël Barbero
+ *
+ */
+public class TCSProjectWizard extends Wizard implements INewWizard {
+
+ // TODO create TCS-specific nature
+ private static final String ATL_NATURE_ID = "org.eclipse.m2m.atl.adt.builder.atlNature";
+ private TCSProjectWizardPage page;
+
+ public void addPages() {
+ page = new TCSProjectWizardPage(null);
+ addPage(page);
+ }
+
+ public TCSProjectWizard() {
+ // TODO Auto-generated constructor stub
+ }
+
+ public boolean performFinish() {
+ String name = page.getProjectName();
+ String ext = page.getExtension();
+
+ try{
+ // Get the worskspace container (IWorkspaceRoot)
+ IWorkspace wks = ResourcesPlugin.getWorkspace();
+ IWorkspaceRoot wksroot = wks.getRoot();
+
+ // Create a project model instance
+ IProject project = wksroot.getProject(name);
+ if(!project.exists())
+ project.create(null);
+
+ // open project if necessary
+ if(!project.isOpen())
+ project.open(null);
+
+ createFolder(project, "Metamodel");
+ Map subst = new HashMap();
+ subst.put("dsl.name", name);
+ subst.put("dsl.ext", ext);
+ subst.put("author", System.getProperty("user.name"));
+ subst.put("date", new SimpleDateFormat("yyyy/MM/dd").format(new Date()));
+
+ createFile(project, "Metamodel/" + name + ".km3",
+ TCSBuilder.getTemplate("templates/metamodel.km3", subst)
+ );
+ createFile(project, "Metamodel/" + name + ".ann",
+ TCSBuilder.getTemplate("templates/annotations.ann", subst)
+ );
+
+ createFolder(project, "Syntax");
+ createFile(project, "Syntax/" + name + ".tcs",
+ TCSBuilder.getTemplate("templates/syntax.tcs", subst)
+ );
+ createFile(project, "build.properties",
+ TCSBuilder.getTemplate("templates/build.properties", subst)
+ );
+
+ createFolder(project, "Samples");
+ createFile(project, "Samples/Test1." + ext, "{\n\ta,\n\tb\n}");
+
+ addNature(project, TCSProjectWizard.ATL_NATURE_ID);
+ addBuilder(project, TCSBuilder.ID);
+ LanguageRegistry.getDefault().getLanguageFromSource(project);
+
+
+/* TODO: support Plugin projects
+ createFolder(project, "META-INF");
+ createFile(project, "META-INF/MANIFEST.MF", TCSBuilder.getTemplate("templates/MANIFEST.MF", subst));
+ createFile(project, "plugin.xml", TCSBuilder.getTemplate("templates/plugin.xml", subst));
+ addNature(project, JavaCore.NATURE_ID);
+ IJavaProject javaProject = JavaCore.create(project);
+ IFolder parserSrcFolder = createFolder(project, "Syntax/parser_src");
+ IFolder parserBinFolder = project.getFolder("Syntax/parser_bin");
+ IClasspathEntry sourceEntry = JavaCore.newSourceEntry(parserSrcFolder.getFullPath(), new IPath[] {}, parserBinFolder.getFullPath());
+// sourceEntry.
+ javaProject.setRawClasspath(new IClasspathEntry[] {
+ sourceEntry,
+ JavaRuntime.getDefaultJREContainerEntry()
+ }, null);
+
+ //javaProject.setOutputLocation(path, null);
+*/
+ }
+ catch(CoreException ce){
+ System.out.println("core exception caught..." + ce.getMessage());
+ } catch (IOException e) {
+ System.out.println("io exception caught..." + e.getMessage());
+ }
+
+ return true;
+ }
+
+ private IFolder createFolder(IProject project, String path) throws CoreException {
+ IFolder folder = project.getFolder(path);
+ if(!folder.exists())
+ folder.create(true, true, null);
+ return folder;
+ }
+
+ private IFile createFile(IProject project, String path, String contents) throws CoreException {
+ IFile file = project.getFile(path);
+ if(!file.exists())
+ file.create(new ByteArrayInputStream(contents.getBytes()), true, null);
+ return file;
+ }
+
+ public void init(IWorkbench workbench, IStructuredSelection selection) {
+ // TODO Auto-generated method stub
+
+ }
+
+ /**
+ * Adds a nature to a project
+ * @param project the project to add a nature to
+ * @param natureId the natureId of the nature to be added to the project
+ */
+ public void addNature(IProject project, String natureId) {
+ try {
+ IProjectDescription description = project.getDescription();
+ String[] natures = description.getNatureIds();
+ String[] newNatures = new String[natures.length + 1];
+ System.arraycopy(natures, 0, newNatures, 0, natures.length);
+ newNatures[natures.length] = natureId;
+ description.setNatureIds(newNatures);
+ project.setDescription(description, null);
+ } catch (CoreException e) {
+ System.err.println(e);
+ }
+ }
+
+ private void addBuilder(IProject project, String id) throws CoreException {
+ IProjectDescription desc = project.getDescription();
+ ICommand[] commands = desc.getBuildSpec();
+ for (int i = 0; i < commands.length; ++i)
+ if (commands[i].getBuilderName().equals(id))
+ return;
+ //add builder to project
+ ICommand command = desc.newCommand();
+ command.setBuilderName(id);
+ ICommand[] nc = new ICommand[commands.length + 1];
+ // Add it before other builders.
+ System.arraycopy(commands, 0, nc, 1, commands.length);
+ nc[0] = command;
+ desc.setBuildSpec(nc);
+ project.setDescription(desc, null);
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs.wizard/src/org/eclipse/gmt/tcs/wizard/TCSProjectWizardPage.java b/plugins/org.eclipse.gmt.tcs.wizard/src/org/eclipse/gmt/tcs/wizard/TCSProjectWizardPage.java
new file mode 100644
index 0000000..eee33c5
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs.wizard/src/org/eclipse/gmt/tcs/wizard/TCSProjectWizardPage.java
@@ -0,0 +1,121 @@
+/**
+ * Copyright (c) 2007, 2008 INRIA.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * INRIA - initial API and implementation
+ *
+ * $Id: TCSProjectWizardPage.java,v 1.3 2008/06/25 12:12:42 fjouault Exp $
+ */
+package org.eclipse.gmt.tcs.wizard;
+
+import org.eclipse.jface.dialogs.IDialogPage;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+
+/**
+ *
+ * @author Frédéric Jouault
+ *
+ */
+public class TCSProjectWizardPage extends WizardPage {
+
+// private ISelection selection;
+ private Composite container;
+ private Text textProjectName;
+ private Text textExtension;
+ private Group groupProject;
+
+ /**
+ * Constructor
+ */
+ public TCSProjectWizardPage(ISelection selection) {
+ super("wizardPage");
+ setTitle("TCS Language Project");
+ setDescription("A name and extension are required for your project");
+// this.selection = selection;
+ this.setPageComplete(false);
+ }
+
+ /**
+ * @see IDialogPage#createControl(Composite)
+ * In this method, the GUI is created
+ */
+ public void createControl(Composite parent) {
+ container = new Composite(parent, SWT.NULL);
+
+ GridLayout layout = new GridLayout();
+ container.setLayout(layout);
+ layout.numColumns = 1;
+ layout.verticalSpacing = 9;
+
+ /* Instantiation of all the components */
+
+ groupProject = new Group(container,SWT.CENTER);
+ groupProject.setText("TCS LANGUAGE PROJECT");
+ groupProject.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ layout = new GridLayout();
+ layout.numColumns = 2;
+ layout.verticalSpacing = 9;
+ groupProject.setLayout(layout);
+
+ new Label(groupProject,SWT.NULL).setText("Project and Language name");
+ textProjectName = new Text(groupProject,SWT.BORDER);
+ textProjectName.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ textProjectName.addKeyListener( new KeyAdapter() {
+ public void keyReleased(KeyEvent evt) {
+ validate();
+ }
+ });
+
+ new Label(groupProject,SWT.NULL).setText("Associated file extension");
+ textExtension = new Text(groupProject,SWT.BORDER);
+ textExtension.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+ textExtension.addKeyListener( new KeyAdapter() {
+ public void keyReleased(KeyEvent evt) {
+ validate();
+ }
+ });
+
+ container.layout();
+ setControl(container);
+ }
+
+ public String getProjectName() {
+ return textProjectName.getText();
+ }
+
+ public String getExtension() {
+ return textExtension.getText();
+ }
+
+ private void validate() {
+ boolean isPageComplete = false;
+
+ if (textProjectName.getText().equals("")) {
+ setErrorMessage("Enter a project name");
+ } else if(textExtension.getText().equals("")) {
+ setErrorMessage("Enter a file extension");
+ } else if(textExtension.getText().indexOf('.') >= 0) {
+ setErrorMessage("File extension should not contain a dot ('.')");
+ } else {
+ isPageComplete = true;
+ setErrorMessage(null);
+ }
+
+ this.setPageComplete(isPageComplete);
+ }
+}
diff --git a/plugins/org.eclipse.gmt.tcs/.project b/plugins/org.eclipse.gmt.tcs/.project
new file mode 100644
index 0000000..17e38af
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs/.project
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.gmt.tcs</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ </natures>
+</projectDescription>
diff --git a/plugins/org.eclipse.gmt.tcs/META-INF/MANIFEST.MF b/plugins/org.eclipse.gmt.tcs/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7bf1b1e
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.gmt.tcs
+Bundle-Version: 0.8.0
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.gmt.tcs/about.html b/plugins/org.eclipse.gmt.tcs/about.html
new file mode 100644
index 0000000..7cc291c
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>January 21, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs/about.ini b/plugins/org.eclipse.gmt.tcs/about.ini
new file mode 100644
index 0000000..24eab49
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs/about.ini
@@ -0,0 +1,17 @@
+# about.ini
+# contains information about a feature
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# "%key" are externalized strings defined in about.properties
+# This file does not need to be translated.
+
+# Property "aboutText" contains blurb for "About" dialog (translated)
+aboutText=%featureText
+
+# Property "featureImage" contains path to feature image (32x32)
+featureImage=tcs32.png
+
+# Property "appName" contains name of the application (translated)
+appName=%featureName
+
+# Property "welcomePage" contains path to welcome page (special XML-based format)
+welcomePage=$nl$/welcome.xml
diff --git a/plugins/org.eclipse.gmt.tcs/about.mappings b/plugins/org.eclipse.gmt.tcs/about.mappings
new file mode 100644
index 0000000..720ca87
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs/about.mappings
@@ -0,0 +1,6 @@
+# about.mappings
+# contains fill-ins for about.properties
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# This file does not need to be translated.
+
+0=@build@ \ No newline at end of file
diff --git a/plugins/org.eclipse.gmt.tcs/about.properties b/plugins/org.eclipse.gmt.tcs/about.properties
new file mode 100644
index 0000000..4ad8d68
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs/about.properties
@@ -0,0 +1,22 @@
+# about.properties
+# contains externalized strings for about.ini
+# java.io.Properties file (ISO 8859-1 with "\" escapes)
+# fill-ins are supplied by about.mappings
+# This file should be translated.
+
+featureName=TCS
+
+featureText=TCS (Textual Concrete Syntax)\n\
+Version: {featureVersion}\n\
+Build id: {0}\n\
+\n\
+(c) Copyright INRIA. 2007-2008. All rights reserved.\n\
+\n\
+TCS (Textual Concrete Syntax) enables the specification of textual concrete syntaxes for Domain-Specific
+Languages (DSLs) by attaching syntactic information to metamodels.\n\
+Visit http://www.eclipse.org/gmt/tcs/
+
+# ==============================================================================
+# %%% END OF TRANSLATED PROPERTIES %%%
+# The above properties have been shipped for translation.
+# ==============================================================================
diff --git a/plugins/org.eclipse.gmt.tcs/build.properties b/plugins/org.eclipse.gmt.tcs/build.properties
new file mode 100644
index 0000000..2e3132f
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs/build.properties
@@ -0,0 +1,8 @@
+bin.includes = META-INF/,\
+ about.ini,\
+ about.mappings,\
+ about.properties,\
+ modeling32.png,\
+ plugin.properties,\
+ tcs32.png
+src.includes = about.html
diff --git a/plugins/org.eclipse.gmt.tcs/modeling32.png b/plugins/org.eclipse.gmt.tcs/modeling32.png
new file mode 100644
index 0000000..6b08de2
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs/modeling32.png
Binary files differ
diff --git a/plugins/org.eclipse.gmt.tcs/plugin.properties b/plugins/org.eclipse.gmt.tcs/plugin.properties
new file mode 100644
index 0000000..49797ca
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs/plugin.properties
@@ -0,0 +1,3 @@
+# NLS_MESSAGEFORMAT_VAR
+pluginName=TCS (Incubation)
+providerName=Eclipse.org
diff --git a/plugins/org.eclipse.gmt.tcs/tcs32.png b/plugins/org.eclipse.gmt.tcs/tcs32.png
new file mode 100644
index 0000000..33c9015
--- /dev/null
+++ b/plugins/org.eclipse.gmt.tcs/tcs32.png
Binary files differ

Back to the top