commit c3e2de482be0fa692a5133cf77e0e3dc86357b6e Author: Rinjae Date: Fri Sep 5 18:37:58 2025 +0900 init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a19458b --- /dev/null +++ b/.gitignore @@ -0,0 +1,233 @@ +gradle.properties + +# Package Files # +*.war + +src/main/generated + +# Eclipse # +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +.classpath +.project + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ +.apt_generated_test/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +# Uncomment this line if you wish to ignore the project description file. +# Typically, this file would be tracked if it contains build/dependency configurations: +#.project +### Intellij ### +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm +# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 +.idea +# User-specific stuff +.idea/**/workspace.xml +.idea/**/tasks.xml +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf + +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files +.idea/**/dataSources/ +.idea/**/dataSources.ids +.idea/**/dataSources.local.xml +.idea/**/sqlDataSources.xml +.idea/**/dynamic.xml +.idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml + +# Gradle +.idea/**/gradle.xml +.idea/**/libraries + +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + +# CMake +cmake-build-*/ + +# Mongo Explorer plugin +.idea/**/mongoSettings.xml + +# File-based project format +*.iws + +# IntelliJ +out/ + +# mpeltonen/sbt-idea plugin +.idea_modules/ + +# JIRA plugin +atlassian-ide-plugin.xml + +# Cursive Clojure plugin +.idea/replstate.xml + +# Crashlytics plugin (for Android Studio and IntelliJ) +com_crashlytics_export_strings.xml +crashlytics.properties +crashlytics-build.properties +fabric.properties + +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + +### Intellij Patch ### +# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 + +# *.iml +# modules.xml +# .idea/misc.xml +# *.ipr + +# Sonarlint plugin +.idea/**/sonarlint/ + +# SonarQube Plugin +.idea/**/sonarIssues.xml + +# Markdown Navigator plugin +.idea/**/markdown-navigator.xml +.idea/**/markdown-navigator/ + +### Java ### +# Compiled class file +*.class + +# Log file +*.log + +# BlueJ files +*.ctxt + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.war +*.nar +*.ear +*.zip +*.tar.gz +*.rar + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Gradle ### +.gradle +build/ + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +# Cache of project +.gradletasknamecache + +# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 +# gradle/wrapper/gradle-wrapper.properties + +### Gradle Patch ### +**/build/ + +# End of https://www.gitignore.io/api/java,macos,gradle,intellij +/EAISIMWeb/ +/.apt_generated_tests/ diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..14bb34c --- /dev/null +++ b/build.gradle @@ -0,0 +1,167 @@ +plugins { + id 'java-library' + id 'maven-publish' + id 'eclipse-wtp' + id 'idea' + id 'com.diffplug.eclipse.apt' version '3.41.1' +} + +group 'com.eactive' +version '4.5.1-SNAPSHOT' + +def nexusUrl = "https://nexus.eactive.synology.me:8090" +def springVersion = "5.3.27" +def queryDslVersion = "5.0.0" +def hibernateVersion = "5.6.15.Final" +def generatedJavaDir = "$buildDir/generated/java" + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(8) + } +} + +compileJava { + options.encoding = 'UTF-8' + sourceSets.main.java { srcDir generatedJavaDir } + options.generatedSourceOutputDirectory = project.file(generatedJavaDir) + + aptOptions { + processorArgs = [ 'querydsl.generatedAnnotationClass' : 'com.querydsl.core.annotations.Generated' ] + } +} + +jar { + exclude '**/persistence.xml' +} + +tasks.withType(JavaCompile) { + options.encoding = 'UTF-8' +} + +dependencies { + + // project > properties > Java Compiler > Annoation Processing + annotationProcessor "org.projectlombok:lombok:1.18.28", "org.projectlombok:lombok-mapstruct-binding:0.2.0", "org.mapstruct:mapstruct-processor:1.5.5.Final" + annotationProcessor "com.querydsl:querydsl-apt:${queryDslVersion}:jpa", "jakarta.persistence:jakarta.persistence-api:2.2.3", "jakarta.annotation:jakarta.annotation-api:1.3.5" + + api project(':elink-online-core') + + compileOnly fileTree(dir: 'libs', include: ['*.jar']) + + api 'commons-collections:commons-collections:3.2.2' + + api 'org.apache.poi:poi-excelant:3.9' + + api group: 'org.apache.commons', name: 'commons-pool2', version: '2.11.1' + api 'commons-codec:commons-codec:1.15' + + //api group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-xml', version: '2.13.1' + compileOnly group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-xml', version: '2.13.1' + + + compileOnly group: 'xalan', name: 'xalan', version: '2.6.0' + api 'net.sf.j8583:j8583:1.18.0' +// +// //삼성페이 penta + //api 'com.eactive:scphost:1.0' + //api 'com.eactive:xdsp_java:1.0' + //api 'com.eactive:jep-4.j18-md:1.0' + + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' + testRuntimeOnly 'com.h2database:h2:2.1.214' + testImplementation 'org.springframework.boot:spring-boot-starter-test:2.6.15' + testImplementation 'org.junit.platform:junit-platform-suite-api:1.8.2' + testImplementation 'org.junit.platform:junit-platform-launcher:1.8.2' + + //testImplementation files("libs/json-simple-1.1.1-custom-1.2.jar") + //testImplementation files("libs/jep-4.j18-md-1.0.jar") + testImplementation fileTree(dir: 'libs', include: ['*.jar']) + testImplementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-xml', version: '2.13.1' + testImplementation 'junit:junit:4.4' + +} + +test { + useJUnitPlatform() +} + +publishing { + repositories { + maven { + name = 'eactiveRepository' + def releasesRepoUrl = "${nexusUrl}/repository/maven-releases/" + def snapshotsRepoUrl = "${nexusUrl}/repository/maven-snapshots/" + url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl + credentials(PasswordCredentials) + } + } + + publications { + mavenJava(MavenPublication) { + from components.java + pom { + description = "eLink Transformer module" + licenses { + license { + name = "Commercial License" + url = "http://eactive.co.kr" + } + } + } + } + } +} + +task sourcesJar(type: Jar, dependsOn: classes) { + archiveClassifier = 'sources' + from sourceSets.main.allSource +} + +artifacts { + archives sourcesJar +} + +configurations.all { + resolutionStrategy { + // 동적 버전 탐색을 10분 캐시 + cacheDynamicVersionsFor 10, 'minutes' + // 변하는 모듈(Changing Module)을 캐시하지 않음 + cacheChangingModulesFor 0, 'seconds' + } +} + +task settingEclipseEncoding { + if (project.file('.settings').exists()) { + File f = file('.settings/org.eclipse.core.resources.prefs') + f.write('eclipse.preferences.version=1\n') + f.append('encoding/=utf-8') + } +} + +task initDirs() { + file(generatedJavaDir).mkdirs() +} + +eclipse { + synchronizationTasks settingEclipseEncoding, initDirs + jdt { + apt { + // generated 된 패스 경로를 .setting/org.eclipse.jdt.apt.core.prefs 의 org.eclipse.jdt.apt.genSrcDir에 적용한다. + // project > properties > Java Compiler > Annoation Processing 화면에서 확인 가능하다. + genSrcDir = file(generatedJavaDir) + } + } + project { + natures = ['org.eclipse.buildship.core.gradleprojectnature', + 'org.eclipse.jdt.core.javanature', + 'org.eclipse.wst.common.project.facet.core.nature', + 'org.eclipse.wst.common.modulecore.ModuleCoreNature', + 'org.eclipse.jem.workbench.JavaEMFNature'] + buildCommand 'org.eclipse.buildship.core.gradleprojectbuilder' + buildCommand 'org.eclipse.wst.validation.validationbuilder' + buildCommand 'org.eclipse.wst.common.project.facet.core.builder' + buildCommand 'org.eclipse.jdt.core.javabuilder' + } +} diff --git a/config/database.properties b/config/database.properties new file mode 100644 index 0000000..8eb3ebd --- /dev/null +++ b/config/database.properties @@ -0,0 +1,87 @@ +################################################################################ +# JDBC PROPERTIES +################################################################################ +jdbc.driver=oracle.jdbc.driver.OracleDriver +#jdbc.driver=com.tmax.tibero.jdbc.TbDriver +#jdbc.driver=com.ibm.db2.jcc.DB2Driver +jdbc.debug=true + +################################################################################ +# local mcc - oracle +################################################################################ +local.mcc.oracle.jdbc.driver=oracle.jdbc.driver.OracleDriver +local.mcc.oracle.jdbc.url=jdbc:oracle:thin:@192.168.120.216:1522:XE +local.mcc.oracle.jdbc.username=IIAPKG +local.mcc.oracle.jdbc.password=elink + +################################################################################ +# local mcu - oracle +################################################################################ +local.mcu.oracle.jdbc.driver=oracle.jdbc.driver.OracleDriver +local.mcu.oracle.jdbc.url=jdbc:oracle:thin:@192.168.120.216:1522:XE +local.mcu.oracle.jdbc.username=IIUPKG +local.mcu.oracle.jdbc.password=elink + +################################################################################ +# local fep - oracle +################################################################################ +local.fep.oracle.jdbc.driver=oracle.jdbc.driver.OracleDriver +local.fep.oracle.jdbc.url=jdbc:oracle:thin:@192.168.120.216:1522:XE +local.fep.oracle.jdbc.username=IIBPKG +local.fep.oracle.jdbc.password=elink + +################################################################################ +# local eai - oracle +################################################################################ +local.eai.oracle.jdbc.driver=oracle.jdbc.driver.OracleDriver +local.eai.oracle.jdbc.url=jdbc:oracle:thin:@192.168.120.216:1522:XE +local.eai.oracle.jdbc.username=IICPKG +local.eai.oracle.jdbc.password=elink + + +################################################################################ +# dev mcc - oracle +################################################################################ +dev.mcc.oracle.jdbc.driver=oracle.jdbc.OracleDriver +dev.mcc.oracle.jdbc.url=jdbc:oracle:thin:@172.16.141.11:11521:DMCCDB +dev.mcc.oracle.jdbc.username=IIAPKG +dev.mcc.oracle.jdbc.password=iiapkg2021! + +################################################################################ +# dev mcu - oracle +################################################################################ +dev.mcu.oracle.jdbc.driver=oracle.jdbc.OracleDriver +dev.mcu.oracle.jdbc.url=jdbc:oracle:thin:@172.16.141.21:11521:DMCUDB +dev.mcu.oracle.jdbc.username=IIAPKG +dev.mcu.oracle.jdbc.password=iiapkg2021! + +################################################################################ +# dev fep - oracle +################################################################################ +dev.fep.oracle.jdbc.driver=oracle.jdbc.OracleDriver +dev.fep.oracle.jdbc.url=jdbc:oracle:thin:@172.16.142.11:11521:DFEPDB +dev.fep.oracle.jdbc.username=IIBPKG +dev.fep.oracle.jdbc.password=iibpkg2021! + +################################################################################ +# dev eai - oracle +################################################################################ +dev.eai.oracle.jdbc.driver=oracle.jdbc.OracleDriver +dev.eai.oracle.jdbc.url=jdbc:oracle:thin:@172.16.141.31:11521:DEAIDB +dev.eai.oracle.jdbc.username=IICPKG +dev.eai.oracle.jdbc.password=iicpkg2021! + +################################################################################ +# eai local - db2 +################################################################################ +localold.eai.db2.jdbc.driver=com.ibm.db2.jcc.DB2Driver +localold.eai.db2.jdbc.url=jdbc:db2://192.168.241.96:50000/DSEAIW +localold.eai.db2.jdbc.username=eai000 +localold.eai.db2.jdbc.password=Eoss01!! + +################################################################################ +# eai local - mariadb +################################################################################ +local.eai.mariadb.jdbc.driver=com.mysql.jdbc.Driver +local.eai.mariadb.jdbc.url=jdbc:mysql://192.168.8.21:4306/eai?useSSL=false&characterEncoding=euckr +local.eai.mariadb.jdbc.username=eai \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..41d9927 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..54228ea --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +networkTimeout=10000 diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..1b6c787 --- /dev/null +++ b/gradlew @@ -0,0 +1,234 @@ +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +APP_NAME="Gradle" +APP_BASE_NAME=${0##*/} + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/libs/jep-4.j18-md-1.0.jar b/libs/jep-4.j18-md-1.0.jar new file mode 100644 index 0000000..4c24131 Binary files /dev/null and b/libs/jep-4.j18-md-1.0.jar differ diff --git a/libs/json-simple-1.1.1-custom-1.2.jar b/libs/json-simple-1.1.1-custom-1.2.jar new file mode 100644 index 0000000..d7fd255 Binary files /dev/null and b/libs/json-simple-1.1.1-custom-1.2.jar differ diff --git a/libs/scphost-1.0.jar b/libs/scphost-1.0.jar new file mode 100644 index 0000000..b24cf9b Binary files /dev/null and b/libs/scphost-1.0.jar differ diff --git a/libs/xdsp_java-1.0.jar b/libs/xdsp_java-1.0.jar new file mode 100644 index 0000000..5f80454 Binary files /dev/null and b/libs/xdsp_java-1.0.jar differ diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..4ef5146 --- /dev/null +++ b/readme.md @@ -0,0 +1,9 @@ +# eLink 온라인 전문 및 변환 관련 모듈 +전문 레이아웃 및 변환 관련 모듈 + +### nexus password +대상파일 : gradle.properties +```ini +eactiveRepositoryUsername={사용자명} +eactiveRepositoryPassword={비밀번호} +``` \ No newline at end of file diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..01fed12 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,7 @@ +rootProject.name = 'elink-online-transformer' + +include 'elink-online-core' +include 'elink-online-core-jpa' + +project (':elink-online-core').projectDir = new File(settingsDir, "../elink-online-core") +project (':elink-online-core-jpa').projectDir = new File(settingsDir, "../elink-online-core-jpa") \ No newline at end of file diff --git a/src/main/java/com/eactive/eai/transformer/Main.java b/src/main/java/com/eactive/eai/transformer/Main.java new file mode 100644 index 0000000..7cbb8c2 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/Main.java @@ -0,0 +1,16 @@ +package com.eactive.eai.transformer; + + +import org.springframework.context.support.ClassPathXmlApplicationContext; + + +public class Main { + @SuppressWarnings("resource") + static public void main(String[] args) throws Exception { + new ClassPathXmlApplicationContext( + new String[] { + "com/eactive/eai/transformer/springconfig-jetty6.xml", + "com/eactive/eai/transformer/springconfig-transformer.xml", + }); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/SystemKeys.java b/src/main/java/com/eactive/eai/transformer/SystemKeys.java new file mode 100644 index 0000000..973f3bb --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/SystemKeys.java @@ -0,0 +1,99 @@ +package com.eactive.eai.transformer; + +public class SystemKeys { + public static final String TRANSFROMER_BYTESMESSAGE_CHARSET = "transformer.bytesmessage.charset"; + public static final String TRANSFROMER_BYTESMESSAGE_CHARSET_DEFAULT = "utf-8"; + + public static final String TRANSFROMER_STRING_TRIMEND = "transformer.string.trimend"; + public static final String TRANSFROMER_VALIDATION = "transformer.validation"; + public static final String TRANSFROMER_DECIMALPOINT_ADD = "transformer.decimalpoint.add"; + + public static final String TRANSFROMER_LAYOUT_CACHE_INIT_ONSTARTUP = "transformer.layout.cache.init.onstartup"; + public static final String TRANSFROMER_LAYOUT_CACHE_SIZE = "transformer.layout.cache.size"; + public static final String TRANSFROMER_LAYOUT_CACHE_IDLE_SEC = "transformer.layout.cache.idle.sec"; + public static final String TRANSFROMER_LAYOUT_PERMCACHE_SIZE = "transformer.layout.permcache.size"; + + public static final String TRANSFROMER_PARSER_CACHE_SIZE = "transformer.parser.cache.size"; + + public static final String LAYOUT_CACHE_SIZE_DEFAULT = "400"; + public static final String LAYOUT_PERMCACHE_SIZE_DEFAULT = "200"; + public static final String LAYOUT_CACHE_IDLE_DEFAULT = "3600"; // 1시간 + public static final String TRANSFROMER_PARSER_CACHE_DEFAULT = "10000"; + + public static final String TRANSFROMER_XML_CACHE_SIZE = "transformer.xml.cache.size"; + public static final String TRANSFROMER_XML_CACHE_IDLE_SEC = "transformer.xml.cache.idle.sec"; + public static final String XML_CACHE_SIZE_DEFAULT = "4000"; + public static final String XML_CACHE_IDLE_DEFAULT = "3600"; // 1시간 + + private static String bytesMessageCharset = TRANSFROMER_BYTESMESSAGE_CHARSET_DEFAULT; + + private static boolean stringTrimEnd = true; + private static boolean validationEnabled = true; + private static boolean addDecimalpoint = false; + + private static boolean layoutCacheOnStartup = false; + + static { + reload(); + } + + private SystemKeys() { + + } + public static void reload() { + // BytesMessage에 대한 cahrset + bytesMessageCharset = System.getProperty(TRANSFROMER_BYTESMESSAGE_CHARSET, TRANSFROMER_BYTESMESSAGE_CHARSET_DEFAULT); + + String sBoolean = System.getProperty(TRANSFROMER_STRING_TRIMEND, "true"); + try { + stringTrimEnd = Boolean.valueOf(sBoolean); + } catch (Exception ex) { + stringTrimEnd = true; + } + + sBoolean = System.getProperty(TRANSFROMER_VALIDATION, "true"); + try { + validationEnabled = Boolean.valueOf(sBoolean); + } catch (Exception ex) { + validationEnabled = true; + } + + sBoolean = System.getProperty(TRANSFROMER_DECIMALPOINT_ADD, "false"); + try { + addDecimalpoint = Boolean.valueOf(sBoolean); + } catch (Exception ex) { + addDecimalpoint = false; + } + + sBoolean = System.getProperty(TRANSFROMER_LAYOUT_CACHE_INIT_ONSTARTUP, "false"); + try { + layoutCacheOnStartup = Boolean.valueOf(sBoolean); + } catch (Exception ex) { + layoutCacheOnStartup = false; + } + } + + public static String getBytesMessageCharset() { + return bytesMessageCharset; + } + + public static void setBytesMessageCharset(String bytesMessageCharset) { + SystemKeys.bytesMessageCharset = bytesMessageCharset; + } + + public static boolean isStringTrimEnd() { + return stringTrimEnd; + } + + public static boolean isValidationEnabled() { + return validationEnabled; + } + + public static boolean isAddDecimalPointEnabled() { + return addDecimalpoint; + } + + public static boolean isLayoutCacheOnStartup() { + return layoutCacheOnStartup; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/TransformService.java b/src/main/java/com/eactive/eai/transformer/TransformService.java new file mode 100644 index 0000000..b332d00 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/TransformService.java @@ -0,0 +1,357 @@ +package com.eactive.eai.transformer; + +import java.util.Iterator; + +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.TransformException; +import com.eactive.eai.transformer.engine.TransformResult; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.layout.LayoutManager; +import com.eactive.eai.transformer.layout.LayoutTypeKey; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.message.XMLMessage; +import com.eactive.eai.transformer.transform.Transform; +import com.eactive.eai.transformer.transform.TransformManager; +import com.eactive.eai.transformer.util.Logger; +import com.eactive.eai.transformer.util.MemoryLogger; +import com.eactive.eai.transformer.util.XmlUtil; + +public class TransformService { + protected static Logger logger = Logger.getLogger("transformer"); + + private TransformService() { + + } + + @SuppressWarnings("unchecked") + public static Object transform(String infoKey, boolean isReq, String transformName, Object[] sources, boolean isMass) throws java.lang.Exception { + + Transform transform = null; + Message[] sourceMessages = null; + Message targetMessage = null; + + try { + if (transformName == null) + throw new RuntimeException("전문레이아웃매핑(변환)이름을 정의하지 않았습니다. - " + transformName); + + if (sources == null) + throw new RuntimeException("전문레이아웃매핑(변환) 소스 데이터가 NULL 입니다."); + + TransformEngine engine = TransformEngine.getInstance(); + Transformer transformer = engine.getTransformer(); + + sourceMessages = new Message[sources.length]; + + TransformManager manager = TransformManager.getManager(); + transform = manager.getTransform(transformName); + if (transform == null) { + throw new Exception("전문레이아웃매핑(변환)정보를 찾을 수 없음 - " + transformName); + } + + for (int i = 0; i < sources.length; i++) { + Layout l = null; + try { + l = transform.getSourceLayout(i); + } + catch(Exception ex) { + throw new Exception("전문레이아웃매핑(변환) 중 변환등록오류 - 소스레이아웃 미등록"); + } + + if(l == null || l.getName() == null || l.getName().length() == 0) { + throw new Exception("전문레이아웃매핑(변환) 중 소스레이아웃 생성 오류 - 변환정보에 소스레이아웃 명이 없음"); + } + try { + sourceMessages[i] = MessageFactory.getFactory().getMessage(l.getName()); + + String sourceType = l.getLayoutType().getName(); + + if(LayoutTypeKey.JSON.equals(sourceType)) { +// sourceMessages[i].setData((String) sources[i]); + // FIX-ME : Socket으로 JSON이 송수신되는 경우, json bytes가 올 수 있음 + String jsonString = ""; + if (sources[i] instanceof byte[]) { + jsonString = new String((byte[]) sources[i]); + } else { + jsonString = (String) sources[i]; + } + sourceMessages[i].setData(jsonString); + } + else if(LayoutTypeKey.XML.equals(sourceType)) { + String xmlString = ""; + if (sources[i] instanceof byte[]) { + xmlString = new String((byte[]) sources[i]); + } else { + xmlString = (String) sources[i]; + } + + String rootItemName = ((XMLMessage) sourceMessages[i]).getLayout().getRootItem().getName(); + + // 비표준 XML의 경우를 고려하여 XML Header 제거 후 Root 추가 + String xmlAddString = ""; + xmlString = XmlUtil.removeXMLHeader(xmlString); + xmlAddString = "<" + rootItemName + ">" + xmlString + ""; + sourceMessages[i].setData(xmlAddString); + } +// else if (LayoutTypeKey.BYTES.equals(sourceType) || LayoutTypeKey.EBCDIC.equals(sourceType)) { +// sourceMessages[i].setData(sources[i]); +// } + else { + sourceMessages[i].setData(sources[i]); + } + } catch (Exception e) { + throw new TransformerException("전문레이아웃매핑(변환) 중 소스레이아웃 생성 오류 - ", e); + } + } + + try { + Object resultObj =null; + if (isMass){ + Layout t = transform.getTargetLayout(); + targetMessage = MessageFactory.getFactory().getMessage(t.getName()); + //참조정보 제거 + for (Iterator iter = targetMessage.fullIterator(); iter.hasNext(); ) { + Item x = iter.next(); + if (x.getOccRef() !=null && x.getOccRef().trim().length() > 0 ){ + x.setOccRef(""); + logger.info(infoKey+"] Mass 거래 OccRef 제거 target "+ x.getPathName()); + } + } + TransformResult result = transformer.transform(transformName, targetMessage, sourceMessages, null); + resultObj = result.getResultMessage().getData(); + }else{ + targetMessage = transformer.transform(transformName, sourceMessages); + resultObj = targetMessage.getData(); + } + /** + * memory logging + */ + memoryLog(infoKey, isReq, transformName, sourceMessages, targetMessage); + + String targetType = transform.getTargetLayout().getLayoutType().getName(); + + if(LayoutTypeKey.XML.equals(targetType)) { + String resultXml = (String) resultObj; + String rootItemName = ((XMLMessage) targetMessage).getLayout().getRootItem().getName(); + return removeXMLRootItem(resultXml, rootItemName); + } else { + return resultObj; + } + } catch (Exception e) { + throw new TransformException("전문레이아웃매핑(변환) 중 오류 - " + transformName, + transformName, + targetMessage, + sourceMessages, + null, + e); + } + } catch (Exception e) { + logger.error(getErrorSummary(transform, sourceMessages, targetMessage, e, false), e); + MemoryLogger.error(getErrorSummary(transform, sourceMessages, targetMessage, e, true), e); + throw e; + } + } + + private static String removeXMLRootItem(String xmlString, String rootItemName) { + String prefix = "<" + rootItemName + ">"; + String suffix = ""; + + int s_idx = xmlString.indexOf(prefix); + int e_idx = xmlString.indexOf(suffix); + if (s_idx == -1 || e_idx == -1) { + return xmlString; + } else { + return xmlString.substring(s_idx + prefix.length(), e_idx); + } + } + + public static Object transformSingle(String infoKey, boolean isReq, String transformName, + Object sources) throws java.lang.Exception { + return transform(infoKey, isReq, transformName, new Object[] { sources },false); + } + + public static Object transformComp(String infoKey, boolean isReq, String transformName, + Object[] sources, String[] layoutNames) throws Exception { + + Transform transform = null; + Message[] sourceMessages = null; + Message targetMessage = null; + + try { + if (transformName == null) + throw new RuntimeException("전문레이아웃매핑(변환)이름을 정의하지 않았습니다. - " + + transformName); + if (sources == null) + throw new RuntimeException("전문레이아웃매핑(변환) 소스 데이터가 NULL 입니다."); + if (layoutNames == null) + throw new RuntimeException("복합 거래의 결과 레이아웃이 NULL 입니다."); + + TransformEngine engine = TransformEngine.getInstance(); + Transformer transformer = engine.getTransformer(); + + sourceMessages = new Message[sources.length]; + + TransformManager manager = TransformManager.getManager(); + transform = manager.getTransform(transformName); + if (transform == null) { + throw new Exception("전문레이아웃매핑(변환)규칙을 찾을 수 없습니다. - " + transformName); + } + + boolean exsist = false; + // 전문레이아웃매핑(변환)규칙의 소스 레이아웃 정보안에 파라미터로 받은 레이아웃이 있는지 확인함 + for (int i = 0; i < layoutNames.length; i++) { + if (layoutNames[i] != null) { + exsist = false; + for (int j = 0; j < transform.getSourceLayoutCount(); j++) { + Layout layout = transform.getSourceLayout(j); + if (layout != null + && layoutNames[i].equals(layout.getName())) { + exsist = true; + break; + } + } + if (!exsist) { + throw new RuntimeException(transformName + + " 전문레이아웃매핑(변환)규칙에서 복합거래의 결과 레이아웃 [" + layoutNames[i] + "] 이 존재하지 않습니다."); + } + } + } + + for (int i = 0; i < layoutNames.length; i++) { + Layout l = null; + try { + l = LayoutManager.getManager().getLayoutByName(layoutNames[i]); + if (l != null) + sourceMessages[i] = MessageFactory.getFactory().getMessage(l.getName()); + + if (l != null && sources[i] != null) { + String sourceType = l.getLayoutType().getName(); + if (LayoutTypeKey.XML.equals(sourceType)) { + String xmlString = null; + if (sources[i] instanceof byte[]) { + xmlString = new String((byte[]) sources[i]); + } else { + xmlString = (String) sources[i]; + } + String rootItemName = ((XMLMessage) sourceMessages[i]).getLayout() + .getRootItem().getName(); + xmlString = XmlUtil.removeXMLHeader(xmlString); + xmlString = "<" + rootItemName + ">" + xmlString + ""; + sourceMessages[i].setData(xmlString); + } + else if (LayoutTypeKey.JSON.equals(sourceType)) { + sourceMessages[i].setData((String) sources[i]); + } +// else if (LayoutTypeKey.BYTES.equals(sourceType) || LayoutTypeKey.EBCDIC.equals(sourceType)) { +// sourceMessages[i].setData(sources[i]); +// } + else { + sourceMessages[i].setData(sources[i]); + } + } + } catch (Exception e) { + throw new TransformerException("전문레이아웃매핑(변환) 소스 레이아웃을 생성할 수 없습니다", e); + } + } + try { + targetMessage = transformer.transform(transformName, sourceMessages); + Object resultObj = targetMessage.getData(); + + /** + * memory logging + */ + memoryLog(infoKey, isReq, transformName, sourceMessages, targetMessage); + String targetType = transform.getTargetLayout().getLayoutType().getName(); +// if (targetType.equals("XML") || targetType.equals("UXML")) { + if (LayoutTypeKey.XML.equals(targetType)) { + String resultXml = (String) resultObj; + String rootItemName = ((XMLMessage) targetMessage).getLayout().getRootItem().getName(); + return removeXMLRootItem(resultXml, rootItemName); + } else { + return resultObj; + } + } catch (Exception e) { + throw new TransformException("전문레이아웃매핑(변환) 중 오류 - " + transformName, + transformName, + targetMessage, + sourceMessages, + null, + e); + } + } catch (Exception e) { + logger.error(getErrorSummary(transform, sourceMessages, targetMessage, e, false), e); + MemoryLogger.error(getErrorSummary(transform, sourceMessages, targetMessage, e, true), e); + throw e; + } + } + + private static String getErrorSummary(Transform transform, Message[] sourceMessages, Message targetMessage, Exception exception, boolean isHtml) { + StringBuilder sb = new StringBuilder(); + sb.append("전문레이아웃매핑(변환) 중 오류 - " + exception.getMessage()); + try { + if (transform != null) { + sb.append("transform="); + if (isHtml) + sb.append(""); + sb.append(transform.getName()); + if (isHtml) + sb.append(""); + } + + if (sourceMessages != null) { + sb.append(", sources=("); + for (int i=0; i0) + sb.append(","); + if (isHtml) + sb.append(""); + sb.append(sourceMessages[i].getName()); + if (isHtml) + sb.append(""); + } + sb.append(")"); + } + + if (targetMessage != null && transform != null && transform.getTargetLayout() != null) { + if (isHtml) + sb.append(""); + sb.append(", target=(" + transform.getTargetLayout().getName() + ")"); + if (isHtml) + sb.append(""); + } + sb.append("\n"); + return sb.toString(); + } catch(Exception e) { + logger.warn(e.getMessage(), e); + return sb.toString(); + } + } + + private static void memoryLog(String infoKey, boolean isReq, String transformName, + Message[] sources, Message target) { + if (!MemoryLogger.isMemoryLogEnabled()) return; + try { + StringBuilder sb = new StringBuilder(); + sb.append(String.format("infoKey=%s, %-5s, transformName=%s\n", + (infoKey==null ? "" : infoKey.trim()), + isReq ? "REQ" : "RES", + transformName)); + sb.append("transform = " + transformName + "\n"); + sb.append(TransformManager.getManager().getTransform(transformName).toString()); + for (int i=0; isources[" + i + "] = " + sources[i].getName() + ""); + sb.append("\n" + sources[i].toString()); + } + sb.append("\ntarget = " + target.getName() + ""); + sb.append("\n" + target.toString()); + MemoryLogger.txlog(sb.toString()); + } catch(Exception e) { + logger.error(transformName + " | " + e.getMessage(), e); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/TransformerException.java b/src/main/java/com/eactive/eai/transformer/TransformerException.java new file mode 100644 index 0000000..f22c392 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/TransformerException.java @@ -0,0 +1,18 @@ +package com.eactive.eai.transformer; + +public class TransformerException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + public TransformerException(String message) { + super(message); + } + + public TransformerException(Throwable cause) { + super(cause); + } + + public TransformerException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/DaoInterface.java b/src/main/java/com/eactive/eai/transformer/dao/DaoInterface.java new file mode 100644 index 0000000..62d4210 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/DaoInterface.java @@ -0,0 +1,9 @@ +package com.eactive.eai.transformer.dao; + +import java.util.Map; + +public interface DaoInterface { + + public Map load(); + +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/FunctionDao.java b/src/main/java/com/eactive/eai/transformer/dao/FunctionDao.java new file mode 100644 index 0000000..6595e84 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/FunctionDao.java @@ -0,0 +1,13 @@ +package com.eactive.eai.transformer.dao; + +import java.util.Map; + +import com.eactive.eai.transformer.function.FunctionDefinition; + +public interface FunctionDao extends DaoInterface { + + FunctionDefinition findFunctionByName(String functionName); + + Map load(); + +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/LayoutDao.java b/src/main/java/com/eactive/eai/transformer/dao/LayoutDao.java new file mode 100644 index 0000000..8b64eeb --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/LayoutDao.java @@ -0,0 +1,16 @@ +package com.eactive.eai.transformer.dao; + +import java.util.Map; + +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.Layout; + + +public interface LayoutDao extends DaoInterface { + + Map load(); + Item findItemByName(String layoutName); + Layout findLayoutByName(String layoutName); + Map findPermanent(); + +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/LayoutTypeDao.java b/src/main/java/com/eactive/eai/transformer/dao/LayoutTypeDao.java new file mode 100644 index 0000000..0723eb2 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/LayoutTypeDao.java @@ -0,0 +1,14 @@ +package com.eactive.eai.transformer.dao; + +import java.util.Map; + +import com.eactive.eai.transformer.layout.LayoutType; + + +public interface LayoutTypeDao extends DaoInterface { + + Map load(); + + LayoutType findLayoutTypeByName(String typeName); + +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/LoadingUnit.java b/src/main/java/com/eactive/eai/transformer/dao/LoadingUnit.java new file mode 100644 index 0000000..12d76b1 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/LoadingUnit.java @@ -0,0 +1,18 @@ +package com.eactive.eai.transformer.dao; + +import java.io.Serializable; + +public class LoadingUnit implements Serializable { + + private static final long serialVersionUID = 1L; + + boolean overwrite = false; + + public boolean getOverwrite() { + return overwrite; + } + + public void setOverwrite(boolean overwrite) { + this.overwrite = overwrite; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/TransformDao.java b/src/main/java/com/eactive/eai/transformer/dao/TransformDao.java new file mode 100644 index 0000000..3cca81e --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/TransformDao.java @@ -0,0 +1,13 @@ +package com.eactive.eai.transformer.dao; + +import java.util.Map; + +import com.eactive.eai.transformer.transform.Transform; + + +public interface TransformDao extends DaoInterface { + + Map load(); + Transform findTransformByName(String transformName); + +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/TransformerDaoException.java b/src/main/java/com/eactive/eai/transformer/dao/TransformerDaoException.java new file mode 100644 index 0000000..90a0f06 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/TransformerDaoException.java @@ -0,0 +1,16 @@ +package com.eactive.eai.transformer.dao; + +import com.eactive.eai.transformer.TransformerException; + +public class TransformerDaoException extends TransformerException { + + private static final long serialVersionUID = 1L; + + public TransformerDaoException(String message) { + super(message); + } + + public TransformerDaoException(String message, Throwable t) { + super(message, t); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/excel/ArraySheet.java b/src/main/java/com/eactive/eai/transformer/dao/excel/ArraySheet.java new file mode 100644 index 0000000..bb1f3e7 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/excel/ArraySheet.java @@ -0,0 +1,51 @@ +package com.eactive.eai.transformer.dao.excel; + +public class ArraySheet implements Sheet { + String[][] cells; + + public ArraySheet(int row, int col) { + cells = new String[row][col]; + } + + public void setString(int row, int col, String value) { + cells[row][col] = value; + } + + public String getCellString(int row, int col) throws Exception { + return cells[row][col]; + } + + public int getCellInt(int row, int col) throws Exception { + return Integer.parseInt(cells[row][col]); + } + + public boolean existsRow(int row) throws Exception { + return cells.length > row; + } + + public boolean existsCell(int row, int col) throws Exception { + if (!existsRow(row)) + return false; + return cells[row].length > col; + } + + public boolean isEquals(int row, int col, String value) throws Exception { + if (value == null) + return false; + return value.equals(cells[row][col]); + } + + public String getCellValue(int row, int col) { + return cells[row][col]; + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + for (int i=0; i { + protected static Logger logger = Logger.getLogger("transformer.dao"); + + private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"); + + private String baseDir; + + protected BaseExcelDao(String baseDir) { + String rootDir = System.getProperty("transformer.rule.dir", ""); + if ("".equals(rootDir)) { + rootDir = "."; + } + this.baseDir = rootDir + File.separator + baseDir; + } + + public Map load() { + if (logger.isInfoEnabled()) { + logger.info(getClass().getSimpleName() + " | loading dir - " + baseDir); + } + + try { + Map map = new TreeMap<>(); + + File dir = new File(baseDir); + File[] files = dir.listFiles(); + + if (files != null) { + for (int i = 0; i < files.length; i++) { + if (files[i].isFile() && files[i].getName().toLowerCase().endsWith(".xls")) { + map.putAll(loadExcelFile(files[i].getPath())); + } + } + } + + return map; + } catch (Exception e) { + throw new TransformerDaoException(e.getMessage(), e); + } + } + + protected Map loadExcelFile(String fileName) { + File file = new File(fileName); + + if (file.getName().startsWith("-")) { + return new TreeMap<>(); + } + try (InputStream in = new BufferedInputStream(new FileInputStream(fileName))) { + /** + * find sheets + */ + Sheet[] sheets = null; + sheets = ExcelSheet.getExcelSheets(in); + /** + * type & version + */ + String type = sheets[0].getCellString(2, 2); + String version = sheets[0].getCellString(3, 2); + boolean overwrite = sheets[0].isEquals(6, 4, "O"); + + if (logger.isDebugEnabled()) { + String msg = String.format(" - %-25s | %1s, %-10s | %s", "loading excel - " + type, version, + (overwrite ? "overwrite" : ""), file.getName()); + logger.debug(msg); + } + return loadSheets(sheets); + } catch (Exception e) { + throw new TransformerDaoException("error when load excel file '" + fileName + "'", e); + } + } + + public String getCurrentDateTime() { + return DATE_FORMAT.format(ZonedDateTime.now()); + } + + abstract protected Map loadSheets(Sheet[] sheets) throws Exception; + + abstract protected Map removeSheets(Sheet[] sheets) throws Exception; + + abstract protected Map parse(Sheet[] sheets) throws Exception; +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/excel/ExcelSheet.java b/src/main/java/com/eactive/eai/transformer/dao/excel/ExcelSheet.java new file mode 100644 index 0000000..11bfbbb --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/excel/ExcelSheet.java @@ -0,0 +1,137 @@ +package com.eactive.eai.transformer.dao.excel; + +import java.io.InputStream; + +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; + +import com.eactive.eai.common.util.Logger; + + +public class ExcelSheet implements Sheet { + protected static Logger logger = Logger.getLogger("transformer.dao"); + + private HSSFSheet sheet; + + private ExcelSheet(HSSFWorkbook workbook, int sheetIndex) { + this.sheet = workbook.getSheetAt(sheetIndex); + } + + public static ExcelSheet[] getExcelSheets(InputStream in) throws Exception { + HSSFWorkbook workbook = new HSSFWorkbook(in); + ExcelSheet[] sheets = new ExcelSheet[workbook.getNumberOfSheets()]; + + for (int i = 0; i < sheets.length; i++) { + sheets[i] = new ExcelSheet(workbook, i); + } + + return sheets; + } + + public String getCellString(int row, int column) throws Exception { + HSSFRow hrow = sheet.getRow(row); + + if (hrow == null) { + throw new Exception("cannt read excel file line number : " + (row + 1)); + } + + HSSFCell cell = hrow.getCell((short) column); + + if (cell == null) { + return ""; + } + + try { + if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { + return "" + ((int) cell.getNumericCellValue()); + } else { + if (cell.getStringCellValue() == null) { + return ""; + } + return cell.getStringCellValue().trim(); + } + } catch(Exception e) { + throw new Exception("getCellString(" + (row+1) + "," + column + ") operation failed", e); + } + } + + @SuppressWarnings("deprecation") + public int getCellInt(int row, int column) throws Exception { + HSSFCell cell = sheet.getRow(row).getCell((short) column); + try { + if (cell==null) { + throw new Exception("getCellInt(" + row + "," + column + ") operation failed - cell value is null"); + } + if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { + return (int) cell.getNumericCellValue(); + } else { + return Integer.parseInt(cell.getStringCellValue().trim()); + } + } catch(Exception e) { + throw new Exception("getCellInt(" + (row+1) + "," + column + ") operation failed", e); + } + } + + public boolean existsRow(int row) throws Exception { + boolean isExist = true; + if( row > sheet.getLastRowNum() + || this.getCellValue(row, 0) == null + || getCellValue(row, 1) == null) { + isExist = false; + } + return isExist; + } + + public boolean existsCell(int row, int col) throws Exception { + boolean isExist = true; + if (!existsRow(row) || this.getCellValue(row, col) == null) + isExist = false; + return isExist; + } + + public boolean isEquals(int row, int column, String value) throws Exception { + return getCellString(row, column).equals(value); + } + + public String getCellValue(int row, int column) { + HSSFRow hrow = sheet.getRow(row); + if (hrow == null) + return null; + HSSFCell cell = hrow.getCell((short) column); + if (cell == null) + return null; + + switch (cell.getCellType()) { + case HSSFCell.CELL_TYPE_BLANK: + return ""; + + case HSSFCell.CELL_TYPE_BOOLEAN: + return Boolean.toString(cell.getBooleanCellValue()); + + case HSSFCell.CELL_TYPE_ERROR: + return Byte.toString(cell.getErrorCellValue()); + + case HSSFCell.CELL_TYPE_FORMULA: + return cell.getCellFormula(); + + case HSSFCell.CELL_TYPE_NUMERIC: + return Double.toString(cell.getNumericCellValue()); + + case HSSFCell.CELL_TYPE_STRING: + return cell.getStringCellValue(); + default : + return null; + } + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + for (int i=0; i { + + @Autowired + private FunctionLoader functionLoader; + + private static final int DATA_ROW_OFFSET = 10; + private static final int COL_FUNC_NAME = 1; + private static final int COL_FUNC_DESC = 2; + private static final int COL_RETN_TYPE = 3; + private static final int COL_FUNC_TYPE = 4; + private static final int COL_FUNC_CLAS = 5; + private static final int COL_PARA_NAME = 6; + private static final int COL_PARA_DESC = 7; + private static final int COL_PARA_TYPE = 8; + + @Autowired + private FunctionMapper functionMapper; + + public FunctionExcelDao() { + super("function"); + } + + protected Map parse(Sheet[] sheets) { + Sheet sheet = sheets[0]; + + Map map = new TreeMap<>(); + + int pc = 1; + FunctionDefinition fd = null; + ParameterDefinition pd = null; + + try { + for (int currentRow = DATA_ROW_OFFSET; sheet.existsRow(currentRow); currentRow++) { + try { + String funcName = sheet.getCellString(currentRow, COL_FUNC_NAME); + String paraName = sheet.getCellString(currentRow, COL_PARA_NAME); + if (funcName.trim().length() > 0) { + fd = new FunctionDefinition(); + fd.setName(funcName); + fd.setDescription(sheet.getCellString(currentRow, COL_FUNC_DESC)); + fd.setReturnTypeId( + ConstantUtil.getDataTypeId(sheet.getCellString(currentRow, COL_RETN_TYPE), "")); + fd.setFunctionTypeId( + ConstantUtil.getFunctionTypeId(sheet.getCellString(currentRow, COL_FUNC_TYPE))); + fd.setFunctionClass(sheet.getCellString(currentRow, COL_FUNC_CLAS)); + + /** + * set overwrite + */ + boolean overwrite = sheet.isEquals(6, 4, "O"); + fd.setOverwrite(overwrite); + + map.put(fd.getName(), fd); + pc = 1; + + if (paraName.trim().length() > 0) { + pd = new ParameterDefinition(); + pd.setFunctionName(fd.getName()); + pd.setName(sheet.getCellString(currentRow, COL_PARA_NAME)); + pd.setDescription(sheet.getCellString(currentRow, COL_PARA_DESC)); + pd.setTypeId( + ConstantUtil.getDataTypeId(sheet.getCellString(currentRow, COL_PARA_TYPE), "")); + pd.setSeqNo(pc++); + + fd.addParameter(pd); + } + } else if (fd != null && paraName.trim().length() > 0) { + pd = new ParameterDefinition(); + pd.setFunctionName(fd.getName()); + pd.setName(sheet.getCellString(currentRow, COL_PARA_NAME)); + pd.setDescription(sheet.getCellString(currentRow, COL_PARA_DESC)); + pd.setTypeId(ConstantUtil.getDataTypeId(sheet.getCellString(currentRow, COL_PARA_TYPE), "")); + pd.setSeqNo(pc++); + + fd.addParameter(pd); + } else { + break; + } + } catch (Exception e) { + logger.error("[ERROR] !!!!! " + e.getMessage() + " - ROW: " + currentRow, e); + } + } + } catch (Exception e) { + throw new TransformerDaoException(e.getMessage(), e); + } + + return map; + } + + public FunctionDefinition findFunctionByName(String functionName) { + return null; + } + + protected Map loadSheets(Sheet[] sheets) { + Map map = parse(sheets); + return map; + } + + protected Map removeSheets(Sheet[] sheets) { + List functions = functionLoader.findAll(); + int functionSize = functions.size(); + functionLoader.deleteAll(functions); + + if (logger.isInfoEnabled()) { + logger.info("총 " + functionSize + " 개의 FunctionDefinition 데이터를 삭제했습니다."); + } + + return null; + } + + public void save(Map functionMap) { + if (logger.isInfoEnabled()) { + logger.info(" + save functions"); + } + + for (Iterator fitr = functionMap.values().iterator(); fitr.hasNext();) { + FunctionDefinition fd = fitr.next(); + + if (fd.getOverwrite()) { + functionLoader.findById(fd.getName()) + .ifPresent(function -> functionLoader.delete(function)); + } + + Function function = functionMapper.toEntity(fd); + functionLoader.save(function); + } + } + +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/excel/Layout2ExcelDao.java b/src/main/java/com/eactive/eai/transformer/dao/excel/Layout2ExcelDao.java new file mode 100644 index 0000000..2d9d24c --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/excel/Layout2ExcelDao.java @@ -0,0 +1,703 @@ +package com.eactive.eai.transformer.dao.excel; + +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.time.LocalDateTime; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.TreeMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.eactive.eai.transformer.dao.TransformerDaoException; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.ItemFactory; +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.layout.LayoutType; +import com.eactive.eai.transformer.layout.LayoutTypeManager; +import com.eactive.eai.transformer.layout.LayoutValidator; +import com.eactive.eai.transformer.layout.Types; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.util.ConstantUtil; + +@Service +public class Layout2ExcelDao extends BaseExcelDao { + private static String COL_REGEXP_LAYOUT_DESC; + private int COL_LAYOUT_DESC; + + private static String COL_REGEXP_NO; + private int COL_NO; + + private static String COL_REGEXP_DESC; + private int COL_DESC; + + private static String COL_REGEXP_DPTH; + private int COL_DPTH; + + private static String COL_REGEXP_NODE; + private int COL_NODE; + private static String COL_REGEXP_OCC_TYPE; + private int COL_OCC_TYPE; + + private static String COL_REGEXP_OCC_REF; + private int COL_OCC_REF; + + private static String COL_REGEXP_TYPE; + private int COL_TYPE; + + private static String COL_REGEXP_LEN; + private int COL_LEN; + private static String COL_REGEXP_DEC_POINT_LEN; + private int COL_DEC_POINT_LEN; // 소숫점길이 + + private static String COL_REGEXP_CODE; + private int COL_CODE; + + private static String COL_REGEXP_NAME; + private int COL_NAME; + private static int COL_BASE; // EAI(...) 라고 표시된 컬럼 + private static String COL_REGEXP_START_FLAG; + private static String COL_REGEXP_MATCH_FLAG; + + private static String COL_REGEXP_NOTE; + private int COL_NOTE; + + private int COL_DEFAULT; // EAI초기값 + + private int COL_CHANGE_BASE; + + private String SHEET_NAME; + @Autowired + protected LayoutTypeManager layoutTypeManager; + + public Layout2ExcelDao() { + super("layout2"); + LayoutExcelLoadFormatManager manager = LayoutExcelLoadFormatManager.getInstance(); + COL_REGEXP_LAYOUT_DESC = manager.getData("COL_REGEXP_LAYOUT_DESC");// 인터페이스명 + COL_REGEXP_NO = manager.getData("COL_REGEXP_NO");// 일련번호 + COL_REGEXP_DESC = manager.getData("COL_REGEXP_DESC");// 한글명 + COL_REGEXP_DPTH = manager.getData("COL_REGEXP_DPTH");// 깊이 + COL_REGEXP_NODE = manager.getData("COL_REGEXP_NODE");// 항목편진구분코드(GROUP/FIELD/ARRAY) + COL_REGEXP_OCC_TYPE = manager.getData("COL_REGEXP_OCC_TYPE");// 배열최대갯수 + COL_REGEXP_OCC_REF = manager.getData("COL_REGEXP_OCC_REF");// 반복횟수참조정보 + COL_REGEXP_TYPE = manager.getData("COL_REGEXP_TYPE");// 테이터타입(String/Long/BigDecimal) + COL_REGEXP_LEN = manager.getData("COL_REGEXP_LEN");// 데이터길이 + COL_REGEXP_DEC_POINT_LEN = manager.getData("COL_REGEXP_DEC_POINT_LEN");// 소숫점길이 + COL_REGEXP_CODE = manager.getData("COL_REGEXP_CODE");// 코드변환 + COL_REGEXP_NAME = manager.getData("COL_REGEXP_NAME");// 영문명 + COL_REGEXP_NOTE = manager.getData("COL_REGEXP_NOTE");// 비고 + + COL_REGEXP_START_FLAG = manager.getData("COL_REGEXP_START_FLAG"); + COL_REGEXP_MATCH_FLAG = manager.getData("COL_REGEXP_MATCH_FLAG"); + COL_LAYOUT_DESC = manager.getInt("COL_LAYOUT_DESC");// 인터페이스명 + COL_NO = manager.getInt("COL_NO");// 일련번호 + COL_DESC = manager.getInt("COL_DESC");// 한글명 + COL_DPTH = manager.getInt("COL_DPTH");// 깊이 + COL_NODE = manager.getInt("COL_NODE");// 항목편진구분코드(GROUP/FIELD/ARRAY) + COL_OCC_TYPE = manager.getInt("COL_OCC_TYPE");// 배열최대갯수 + COL_OCC_REF = manager.getInt("COL_OCC_REF");// 반복횟수참조정보 + COL_TYPE = manager.getInt("COL_TYPE");// 테이터타입(String/Long/BigDecimal) + COL_LEN = manager.getInt("COL_LEN");// 데이터길이 + COL_DEC_POINT_LEN = manager.getInt("COL_DEC_POINT_LEN");// 소숫점길이 + COL_CODE = manager.getInt("COL_CODE");// 코드변환 + COL_NAME = manager.getInt("COL_NAME");// 영문명 + COL_NOTE = manager.getInt("COL_NOTE");// 비고 + + COL_NOTE = manager.getInt("COL_DEFAULT");// 비고 + COL_BASE = manager.getInt("COL_BASE");// 베이스 + SHEET_NAME = manager.getData("SHEET_NAME");// sheet명 + } + + protected Map loadExcelFile(String filename) { + File file = new File(filename); + + if (file.getName().startsWith("-")) { + return new TreeMap<>(); + } + + InputStream in = null; + + try { + /** + * find sheets + */ + in = new BufferedInputStream(new FileInputStream(filename)); + ExcelSheet[] sheets = null; + + try { + sheets = ExcelSheet.getExcelSheets(in); + } catch (Exception e) { + throw new Exception("sheets 를 얻어낼 수 없읍니다. - '" + filename + "'", e); + } + + if (logger.isDebugEnabled()) { + String msg = String.format(" - %-25s | %s", "loading excel ", filename); + logger.debug(msg); + } + + return loadSheets(sheets); + } catch (Exception e) { + throw new TransformerDaoException("error when load excel file '" + filename + "'", e); + } finally { + if (in != null) { + try { + in.close(); + } catch (Exception e) { + } + } + } + } + + + @Override + protected Map loadSheets(Sheet[] sheets) throws Exception { + return parse(sheets); + } + + @Override + protected Map parse(Sheet[] sheets) throws Exception { + Map map = new TreeMap<>(); + map.putAll(parse(sheets[2])); + if(sheets.length > 3) { + map.putAll(parse(sheets[3])); + } + return map; + } + + protected Map parse(Sheet sheet) throws Exception { + parseColumnMapping(sheet); + + Map treeMap = new TreeMap<>(); + + try { + int columnBase = COL_BASE; + if(!sheet.getCellString(0, COL_CODE).equals(COL_REGEXP_CODE)){ + columnBase = COL_CHANGE_BASE; + } + while (columnBase < 100 && sheet.existsCell(0, columnBase)) { + /** + * EAI(...) 값이 아니면 무시한다. + */ + String eaiFlag = sheet.getCellString(0, columnBase); + String layoutTypeName = sheet.getCellString(2, columnBase).trim(); + if ("ASCII".equals(layoutTypeName)) { + layoutTypeName = "BYTES"; + } + + if ("VASCII".equals(layoutTypeName)) { + layoutTypeName = "VBYTES"; + } + + if (eaiFlag == null) { + break; + } else if (!eaiFlag.matches(COL_REGEXP_START_FLAG) || "".equals(layoutTypeName.trim())) { + columnBase++; + continue; + } + + if (!eaiFlag.matches(COL_REGEXP_MATCH_FLAG)) { + throw new Exception("cell[0, " + columnBase + "] must be like "+ COL_REGEXP_MATCH_FLAG); + } + + /** + * layout type + */ + LayoutType layoutType = layoutTypeManager.getLayoutType(layoutTypeName); + if (layoutType == null) { + throw new TransformerDaoException("LayoutTypeManager에서 LoutPtrnName을 찾을 수 없습니다. - " + layoutTypeName); + } + + /** + * message + */ + StringBuffer sb = new StringBuffer(); + sb.append(sheet.getCellString(1, columnBase).trim() + "_"); + sb.append(sheet.getCellString(3, columnBase).trim() + "_"); + sb.append(eaiFlag.substring(eaiFlag.indexOf('(')+1, eaiFlag.indexOf(')'))); + String layoutName = sb.toString(); + Message root = makeMessage(sheet, layoutTypeName, layoutName); + //Item rootItem = (Item) message; + root.setDepth(1); + + // Default Setting + root.setDataTypeId(Types.TYPE_UNKNOWN); + root.setLength(-1); + + try { + root.setDescription(sheet.getCellString(4, COL_LAYOUT_DESC).trim()); + } catch(Exception e) { + root.setDescription(""); + } + + /** + * build item tree + */ + int rownum = 4; + root.setLayoutName(layoutName); + //rootItem.setDescription(sheet.getCellString(rownum, 3).trim()); + + // 2009.05.29 + // 중복확인 + validateLayout(layoutName, sheet, columnBase, rownum); + + root = (Message) buildTree(layoutName, root, sheet, layoutTypeName, columnBase, rownum); + root.initItemParentId(0, 0); + + /** + * layout + */ + Layout layout = new Layout(); + layout.setName(root.getName()); + layout.setDescription(root.getDescription()); + layout.setBzwkDstcd(sheet.getCellString(1, columnBase).trim()); + layout.setLastUpdateDate(LocalDateTime.now()); + layout.setSystemInterface(sheet.getCellString(3, columnBase).trim()); + + layout.setRootItem(root); + root.setLayout(layout); + layout.setLayoutType(layoutType); + + /** + * set overwrite -> 무조건 한다.. + */ + boolean overwrite = true; //sheet.isEquals(6, 4, "O"); + layout.setOverwrite(overwrite); + + /** + * LayoutValidate + */ + LayoutValidator.validate(layout); + + + /** + * tree map 추가.. + */ + treeMap.put(layout.getName(), layout); + columnBase++; + } + + return treeMap; + } catch(Exception e) { + throw new TransformerDaoException(e.getMessage(), e); + } + } + + private void parseColumnMapping(Sheet sheet) throws Exception { + HashMap columnMap = new HashMap(); + columnMap.put(COL_REGEXP_LAYOUT_DESC, COL_REGEXP_LAYOUT_DESC); + columnMap.put(COL_REGEXP_NO, COL_REGEXP_NO); + columnMap.put(COL_REGEXP_DESC, COL_REGEXP_DESC); + columnMap.put(COL_REGEXP_DPTH, COL_REGEXP_DPTH); + columnMap.put(COL_REGEXP_NODE, COL_REGEXP_NODE); + columnMap.put(COL_REGEXP_OCC_TYPE, COL_REGEXP_OCC_TYPE); + columnMap.put(COL_REGEXP_OCC_REF, COL_REGEXP_OCC_REF); +// columnMap.put(COL_REGEXP_OCC_MIN, COL_REGEXP_OCC_MIN); + columnMap.put(COL_REGEXP_TYPE, COL_REGEXP_TYPE); + columnMap.put(COL_REGEXP_LEN, COL_REGEXP_LEN); + columnMap.put(COL_REGEXP_DEC_POINT_LEN, COL_REGEXP_DEC_POINT_LEN); + columnMap.put(COL_REGEXP_NAME, COL_REGEXP_NAME); + columnMap.put(COL_REGEXP_NOTE, COL_REGEXP_NOTE); + + for (int i=0; i 0) { + StringBuilder sb = new StringBuilder(); + sb.append("excel file does not have columns ["); + for (Iterator iter = columnMap.keySet().iterator(); iter.hasNext(); ) { + sb.append(iter.next() + ","); + } + sb.append("] - check excel file format"); + throw new Exception(sb.toString()); + } + } + + + private Message makeMessage(Sheet sheet, String layoutTypeName, String layoutName) throws Exception { +// String nodeType = "MESSAGE"; + Message message = MessageFactory.getFactory().createMessage(layoutTypeName); + + ((Item) message).setName(layoutName); + ((Item) message).setLayoutName(layoutName); + + return message; + } + + private void validateLayout(String layoutName, Sheet sheet, int columnBase, int rownum) throws Exception { + HashMap map = new HashMap(); + + for (int currentRow = rownum; sheet.existsRow(currentRow); currentRow++) { + String use = sheet.getCellString(currentRow, columnBase); + if (use == null || !use.trim().matches("(o|O|0|○|y|Y)")) { + continue; + } + + // 일련번호 중복 처리 + int seq = (new Double(sheet.getCellValue(currentRow, COL_NO))).intValue(); + if(map.get(seq) != null) { + throw new Exception(layoutName + "의 일련번호가 중복되었습니다 - [row=" + currentRow + ", col=" + COL_NO + "]"); + } + else { + map.put(seq, currentRow); + } + + // 아이템명 중복처리 +// String itemName = sheet.getCellValue(currentRow, COL_NAME); +//System.out.println("itemName===========================>"+itemName); +// if(nameMap.get(itemName) != null) { +// throw new Exception(layoutName + "의 거래(입|출)력항목명(영문)이 중복되었습니다 - [row=" + currentRow + ", col=" + COL_NAME + "]"); +// } +// else { +// nameMap.put(itemName, currentRow); +// } + + // 한글명 필수입력 확인 + String desc = sheet.getCellValue(currentRow, COL_DESC); + + if(desc == null || desc.trim().length() == 0) { + throw new Exception(layoutName + "의 거래(입|출)력항목명(한글)이 입력되지 않았습니다. - [row=" + currentRow + ", col=" + COL_DESC + "]"); + } + } + map.clear(); + } + + private Item buildTree(String layoutName, Item parent, Sheet sheet, String layoutTypeName, int columnBase, int rownum) throws Exception { + Item item = null; + while (rownum < 1000) { + item = makeItem(sheet, layoutTypeName, columnBase, rownum); + if (item != null) { + break; + } else { + rownum++; + } + } + + if (item == null) { + return parent; + } + + Item next = null; + if (sheet.existsRow(rownum+1)) { + next = makeItem(sheet, layoutTypeName, columnBase, rownum+1); + } + + item.setLayoutName(layoutName); + + if (!sheet.existsRow(rownum)) { // 마지막일 경우 + return parent; + } else if (item.getDepth() > parent.getDepth()) { // 그룹의 항목일 경우 + parent.addChild(item); + item.setParent(parent); + + //---------------------------------------------------- + // Layout 로딩시 이중 ARRAY 등록시 에러처리 : 2009.04.08 + //---------------------------------------------------- + if( (item.getNodeTypeId() == Item.NODE_GROUP) && (item.getOccMax() > 1) + && (parent.getNodeTypeId() == Item.NODE_GROUP) && (parent.getOccMax() > 1) ) { + throw new Exception("이중 ARRAY는 지원하지 않습니다. - 다음 layout item 처리시 에러 발생 - " + item.getName()); + } + //---------------------------------------------------- + + if (next == null) { + if (sheet.existsRow(rownum+1)) { + ++rownum; + + // NODE_MESSAGE 또는 NODE_GROUP 일 경우에 대한 Parent ID 오류 수정 : 2009.03.11 + // NODE_GROUP 다음의 필드가 'O' 가 아닐 경우 + if(item.getNodeTypeId() == Item.NODE_MESSAGE || item.getNodeTypeId() == Item.NODE_GROUP) { + item = buildTree(layoutName, item, sheet, layoutTypeName, columnBase, ++rownum); + } + else { + // 2009.06.30 + // Group의 하위항목의 마지막이 'O' 가 아닐 경우 + // parent 계산의 문제가 있음 + + // 2009.10.13 그룹 다음에 'O'가 아닌 항목이 여러 개 올 경우 + //--------------------------------------------------------- + int p = 1; + while(true) { + next = makeItem(sheet, layoutTypeName, columnBase, rownum+p); + if(next != null || (rownum+p) >= 1000) break; + p++; + } +// next = makeItem(sheet, layoutTypeName, columnBase, rownum+1); + //--------------------------------------------------------- + if(next != null) { + if(item.getDepth() > next.getDepth()) { + for (int i=0; i item.getDepth()) { + item = buildTree(layoutName, item, sheet, layoutTypeName, columnBase, ++rownum); + } else if (next.getDepth() == item.getDepth()) { + parent = buildTree(layoutName, parent, sheet, layoutTypeName, columnBase, ++rownum); + } else { + for (int i=0; i -1) { + throw new Exception("거래입/출력항목명에 '.'을 사용할 수 없습니다. [row=" + rownum + ", col=" + COL_NAME + "] - "+name); + } + } + + int nodeTypeId = ConstantUtil.getNodeTypeId(nodeType); + item = ItemFactory.createItem(nodeTypeId); + //item.setNodeTypeId(nodeTypeId); + item.setName(name); + + // 사용여부가 M/m 인 경우 Masking 필드로 설정한다. + if( "M".equalsIgnoreCase(use)) { + item.setMask("Y"); + } + else { + item.setMask(" "); + } + + //---------------------------------------------------------------- + // 2009.05.29 + // 일련번호는 0보다 큰 값이어야 한다. + try { + item.setSeqNo((new Double(sheet.getCellValue(rownum, COL_NO))).intValue()); + } catch (NumberFormatException e) { + throw new Exception("sequence number is invalid value [row=" + rownum + ", col=" + COL_NO + "]='" + sheet.getCellValue(rownum, COL_NO) + + "' - " + e.getMessage()); +// logger.warn("sequence number is invalid value [row=" + rownum + ", col=" + COL_NO + "]='" + sheet.getCellValue(rownum, COL_NO) + +// "' - " + e.getMessage()); +// item.setSeqNo(-1); + } + + if(item.getSeqNo() < 1) { + throw new Exception(item.getName() + " - 일련번호는 0보다 커야 합니다."); + } + //---------------------------------------------------------------- + + + if (sheet.getCellInt(rownum, COL_DPTH) <= 0) { + throw new Exception(item.getName() + "'s DEPTH = '" + sheet.getCellInt(rownum, COL_DPTH) + + "', 'DEPTH' value must be greate than 0"); + } + item.setDepth(sheet.getCellInt(rownum, COL_DPTH) + 1); + + item.setDescription(sheet.getCellString(rownum, COL_DESC).trim()); + item.setDataTypeRef(sheet.getCellString(rownum, COL_TYPE).trim()); + + // 2010.01.18 권세환대리 + // 필드설명에 '비밀'이라는 문자가 있으면 강제 Masking + if(item.getDescription() != null && item.getDescription().indexOf("비밀") != -1) { + item.setMask("Y"); + } + + + // 2009.03.20 + // nodeTypeId 이 NODE_MESSAGE, NODE_GROUP 면 DataTypeId 를 강제로 TYPE_UNKNOWN 설정 + // XLS 등록시 오류방지 + if(nodeTypeId == Item.NODE_MESSAGE || nodeTypeId == Item.NODE_GROUP) { + item.setDataTypeId(Types.TYPE_UNKNOWN); + } + else { + item.setDataTypeId(ConstantUtil.getDataTypeId(sheet.getCellString(rownum, COL_TYPE).trim(), layoutTypeName)); + } + try { + /* + // PIC S9(n)V9(d) 인 경우 길이에 (+1) 하도록 한다. + if( "PIC S9(n)V9(d)".equals(item.getDataTypeRef()) ) { + item.setLength(sheet.getCellInt(rownum, COL_LEN)+1); + } + else { + item.setLength(sheet.getCellInt(rownum, COL_LEN)); + } + */ + + item.setLength(sheet.getCellInt(rownum, COL_LEN)); + + } catch (Exception e) { + item.setLength(0); + } + try { + item.setDecimalPointLength(sheet.getCellInt(rownum, COL_DEC_POINT_LEN)); + } catch (Exception e) { + item.setDecimalPointLength(0); + } + + /** + * occRef + */ + item.setOccRef(sheet.getCellString(rownum, COL_OCC_REF).trim()); + if (!"".equals(item.getOccRef())) { + item.setOccType("+"); + } + + /** + * occType + */ + String occType = sheet.getCellString(rownum, COL_OCC_TYPE).trim(); + item.setOccType(occType); + Matcher m = Pattern.compile("([0-9]+)\\.\\.([0-9]*)").matcher(occType); + if (m.find()) { + item.setOccMin(Integer.parseInt(m.group(1))); + if ("".equals(m.group(2))) { + item.setOccMax(Integer.MAX_VALUE); + } else { + item.setOccMax(Integer.parseInt(m.group(2))); + } + } else if (("?".equals(occType.trim()))) { + item.setOccMin(0); + item.setOccMax(1); + } else if (("*".equals(occType.trim()))) { + item.setOccMin(0); + item.setOccMax(-1); + } else if (("+".equals(occType.trim()))) { + item.setOccMin(1); + item.setOccMax(-1); + } else if (("".equals(occType.trim()))) { + item.setOccMin(1); + item.setOccMax(1); + } else if (occType.trim().matches("[0-9]+")) { + item.setOccMax(Integer.parseInt(occType.trim())); + + //-------------------------------------------------------- + // 2009.09.14 강길수 차장 요청 + // 반복참조회수가 있는 경우 최소값을 0인 가변배열로 정의하도록 수정 + if (item.getOccRef() != null && !"".equals(item.getOccRef().trim())) { + item.setOccMin(0); + } + else { + item.setOccMin(Integer.parseInt(occType.trim())); + } + //-------------------------------------------------------- + } else { + throw new Exception("OccType 값이 잘못 설정되었습니다. - " + occType); + } + + /** + * path + */ + if (layoutTypeName.startsWith("FML")) + item.setPath(sheet.getCellString(rownum, COL_NOTE).trim()); + + if (use.trim().equals("D")){ + item.setDefaultValue(sheet.getCellString(rownum, COL_DEFAULT).trim()); + } + + return item; + } catch(Exception e) { + String itemName = ""; + if(item != null) { + itemName = item.getName(); + } + + throw new Exception("error when read item : " + itemName, e); + } + } + + @Override + protected Map removeSheets(Sheet[] sheets) throws Exception { + return Collections.emptyMap(); + } + + public Layout findLayoutByName(String layoutName) { + return null; + } + + public Item findItemByName(String layoutName) { + return null; + } + public Map findPermanent(){ + return Collections.emptyMap(); + } + + public String getSheetName() { + return SHEET_NAME; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/excel/Layout2ExcelLoadDao.java b/src/main/java/com/eactive/eai/transformer/dao/excel/Layout2ExcelLoadDao.java new file mode 100644 index 0000000..16d2c4e --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/excel/Layout2ExcelLoadDao.java @@ -0,0 +1,32 @@ +package com.eactive.eai.transformer.dao.excel; + +import java.util.Map; + +import com.eactive.eai.common.util.ApplicationContextProvider; +import com.eactive.eai.transformer.dao.jdbc.LayoutTypeJdbcDao; +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.layout.LayoutTypeManager; + + +public class Layout2ExcelLoadDao extends Layout2ExcelDao { + //LayoutTypeManager layoutTypeManager = LayoutTypeManager.getInstance(); + + public Layout2ExcelLoadDao() { + super(); + layoutTypeManager = LayoutTypeManager.getInstance(); + layoutTypeManager.reload(); +// if (!layoutTypeManager.isStarted()) { +// LayoutTypeJdbcDao layoutTypeJdbcDao = ApplicationContextProvider.getContext() +// .getBean(LayoutTypeJdbcDao.class); +// layoutTypeManager.init(layoutTypeJdbcDao.load()); +// } + } + + public Map load(Sheet[] sheets) throws Exception { + return parse(sheets); + } + + public Map load(Sheet sheet) throws Exception { + return parse(sheet); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/excel/LayoutExcelDao.java b/src/main/java/com/eactive/eai/transformer/dao/excel/LayoutExcelDao.java new file mode 100644 index 0000000..4010baa --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/excel/LayoutExcelDao.java @@ -0,0 +1,314 @@ +package com.eactive.eai.transformer.dao.excel; + +import java.time.LocalDateTime; +import java.util.Map; +import java.util.TreeMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.eactive.eai.data.entity.onl.transformer.layout.LayoutEntity; +import com.eactive.eai.transformer.dao.TransformerDaoException; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.ItemFactory; +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.layout.LayoutManager; +import com.eactive.eai.transformer.layout.LayoutType; +import com.eactive.eai.transformer.layout.LayoutTypeManager; +import com.eactive.eai.transformer.layout.LayoutValidator; +import com.eactive.eai.transformer.layout.loader.LayoutLoader; +import com.eactive.eai.transformer.layout.mapper.LayoutMapper; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageException; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.util.ConstantUtil; + +@Service +public class LayoutExcelDao extends BaseExcelDao { + private static final int DATA_ROW_OFFSET = 10; + private static final int COL_NO = 0; + private static final int COL_NODE = 1; + private static final int COL_DPTH = 2; + private static final int COL_NAME = 3; + private static final int COL_DESC = 4; + private static final int COL_TYPE = 5; + private static final int COL_LEN = 6; + private static final int COL_PATH = 7; + private static final int COL_OCC_TYPE = 8; + private static final int COL_OCC_MIN = 9; + private static final int COL_DEF_VAL = 10; + private static final int COL_REF = 11; + private static final int COL_OCC_REF = 12; + private static final int COL_MASK = 13; + private static final int COL_LAYOUT_TYPE_COL = 2; + private static final int COL_LAYOUT_TYPE_ROW = 8; + private static final int COL_DPLEN = 14; + + @Autowired + private LayoutTypeManager layoutTypeManager; + + @Autowired + private LayoutLoader layoutLoader; + + @Autowired + private LayoutMapper layoutMapper; + + public LayoutExcelDao() { + super("layout"); + } + + public Layout findLayoutByName(String layoutName) { + return null; + } + + public Item findItemByName(String layoutName) { + Layout l = LayoutManager.getManager().getLayoutByName(layoutName); + if (l != null) { + return l.getRootItem(); + } else { + return null; + } + } + + protected Map loadSheets(Sheet[] sheets) { + Map map = parse(sheets); + return map; + } + + protected Map removeSheets(Sheet[] sheets) throws Exception { + + Item rootItem = (Item) parse(sheets); + try { + layoutLoader.deleteById(rootItem.getName()); + } catch (Exception e) { + throw e; + } + + return null; + } + + protected Map parse(Sheet[] sheets) { + try { + Sheet sheet = sheets[0]; + + /** + * layout type + */ + String layoutTypeName = sheet.getCellString(COL_LAYOUT_TYPE_ROW, COL_LAYOUT_TYPE_COL).trim(); + + LayoutType layoutType = layoutTypeManager.getLayoutType(layoutTypeName); + if (layoutType == null) { + throw new TransformerDaoException("LayoutTypeManager에서 LoutPtrnName을 찾을 수 없습니다. - " + layoutTypeName); + } + + /** + * build item tree + */ + int rownum = DATA_ROW_OFFSET; + Item top = makeItem(sheet, layoutTypeName, rownum++); + String layoutName = top.getName(); + top.setLayoutName(layoutName); + top = buildTree(layoutName, top, sheet, layoutTypeName, rownum); + top.initItemParentId(0, 0); + + /** + * layout + */ + Layout layout = new Layout(); + layout.setName(top.getName()); + layout.setDescription(top.getDescription()); + // layout.setBzwkDstcd(???); + layout.setLastUpdateDate(LocalDateTime.now()); + + layout.setRootItem(top); + ((Message) top).setLayout(layout); + layout.setLayoutType(layoutType); + + /** + * set overwrite + */ + boolean overwrite = sheet.isEquals(6, 4, "O"); + layout.setOverwrite(overwrite); + + /** + * map + */ + Map treeMap = new TreeMap<>(); + treeMap.put(layout.getName(), layout); + return treeMap; + } catch (Exception e) { + throw new TransformerDaoException(e.getMessage(), e); + } + } + + private Item buildTree(String layoutName, Item parent, Sheet sheet, String messageType, int rownum) + throws Exception { + Item item = makeItem(sheet, messageType, rownum); + Item next = makeItem(sheet, messageType, rownum + 1); + item.setLayoutName(layoutName); + + if (!sheet.existsRow(rownum)) { + return parent; + } else if (item.getDepth() > parent.getDepth()) { + try { + parent.addChild(item); + } catch (UnsupportedOperationException e) { + StringBuffer sb = new StringBuffer(); + sb.append(layoutName); + sb.append(" | cannot add item to parent - "); + sb.append("parent=(" + parent.getNodeType() + ", " + parent.getName() + ", " + parent.getDepth() + ")"); + sb.append(", item=(" + item.getNodeType() + ", " + item.getName() + ", " + item.getDepth() + ")"); + throw new Exception(sb.toString(), e); + } + + item.setParent(parent); + + if (next == null) { + } else if (next.getDepth() > item.getDepth()) { + item = buildTree(layoutName, item, sheet, messageType, ++rownum); + } else if (next.getDepth() == item.getDepth()) { + parent = buildTree(layoutName, parent, sheet, messageType, ++rownum); + } else { + for (int i = 0; i < item.getDepth() - next.getDepth(); i++) + parent = parent.getParent(); + parent = buildTree(layoutName, parent, sheet, messageType, ++rownum); + } + return parent; + } else { + throw new Exception("invalid depth : " + item); + } + } + + private Item makeItem(Sheet sheet, String messageType, int rownum) throws Exception { + if (sheet.getCellValue(rownum, 0) == null || sheet.getCellValue(rownum, 1) == null) + return null; + + Item item = null; + + try { + String nodeType = sheet.getCellString(rownum, COL_NODE).trim(); + String name = sheet.getCellString(rownum, COL_NAME).trim(); + String layoutTypeName = sheet.getCellString(COL_LAYOUT_TYPE_ROW, COL_LAYOUT_TYPE_COL).trim(); + + if (name.trim().length() <= 0) + return null; + + if ("MESSAGE".equals(nodeType) || "INCLUDE".equals(nodeType)) { + item = MessageFactory.getFactory().createMessage(layoutTypeName); + } else { + int nodeTypeId = ConstantUtil.getNodeTypeId(sheet.getCellString(rownum, COL_NODE).trim()); + item = ItemFactory.createItem(nodeTypeId); + } + + item.setName(sheet.getCellString(rownum, COL_NAME).trim()); + if ("MESSAGE".equals(nodeType) || "INCLUDE".equals(nodeType)) { + item.setLayoutName(item.getName()); + } + + try { + item.setSeqNo((new Double(sheet.getCellValue(rownum, COL_NO))).intValue()); + } catch (NumberFormatException e) { + logger.warn("sequence number is invalid value[row=" + rownum + ", col=" + COL_NO + "]='" + + sheet.getCellValue(rownum, COL_NO) + "' - " + e.getMessage()); + item.setSeqNo(-1); + } + item.setDepth(sheet.getCellInt(rownum, COL_DPTH)); + item.setDescription(sheet.getCellString(rownum, COL_DESC).trim()); + item.setDataTypeRef(sheet.getCellString(rownum, COL_TYPE).trim()); + item.setDataTypeId(ConstantUtil.getDataTypeId(sheet.getCellString(rownum, COL_TYPE).trim(), messageType)); + item.setPath(sheet.getCellString(rownum, COL_PATH).trim()); + + try { + item.setLength(sheet.getCellInt(rownum, COL_LEN)); + } catch (Exception e) { + throw new RuntimeException("Length 값이 잘못 설정되었습니다. - " + sheet.getCellString(rownum, COL_LEN).trim(), e); + } + + try { + item.setDecimalPointLength(sheet.getCellInt(rownum, COL_DPLEN)); + } catch (Exception e) { + item.setDecimalPointLength(0); + } + + item.setRefInfo(sheet.getCellString(rownum, COL_REF).trim()); + + /** + * log masking + */ + if (sheet.getCellString(rownum, COL_MASK).trim().matches("(o|O|0|○|y|Y)")) { + item.setMask("Y"); + } + + item.setOccRef(sheet.getCellString(rownum, COL_OCC_REF).trim()); + + String occType = sheet.getCellString(rownum, COL_OCC_TYPE).trim(); + item.setOccType(occType); + Matcher m = Pattern.compile("([0-9]+)\\.\\.([0-9]*)").matcher(occType); + if (m.find()) { + item.setOccMin(Integer.parseInt(m.group(1))); + if ("".equals(m.group(2))) { + item.setOccMax(Integer.MAX_VALUE); + } else { + item.setOccMax(Integer.parseInt(m.group(2))); + } + } else if (("?".equals(occType.trim()))) { + item.setOccMin(sheet.getCellInt(rownum, COL_OCC_MIN)); + item.setOccMax(1); + } else if (("*".equals(occType.trim()))) { + item.setOccMin(sheet.getCellInt(rownum, COL_OCC_MIN)); + item.setOccMax(-1); + } else if (("+".equals(occType.trim()))) { + item.setOccMin(sheet.getCellInt(rownum, COL_OCC_MIN)); + item.setOccMax(-1); + } else if (occType.trim().matches("[0-9]+")) { + item.setOccMin(sheet.getCellInt(rownum, COL_OCC_MIN)); + item.setOccMax(Integer.parseInt(occType.trim())); + } else { + throw new MessageException("발생유형 값이 잘못 설정되었습니다. - '" + occType + "'"); + } + + item.setDefaultValue(sheet.getCellString(rownum, COL_DEF_VAL).trim()); + + return item; + } catch (Exception e) { + throw new Exception("error when read item : " + (item == null ? "" : item.getName()), e); + } + } + + public void save(Map layoutMap) { + layoutMap.values().stream().forEach(this::saveLayout); + } + + public void saveLayout(final Layout layout) { + + if (layout.getName() == null) { + throw new TransformerDaoException("layout name cannot be null"); + } else if (layout.getDescription() == null) { + throw new TransformerDaoException("layout descriptions cannot be null"); + } else if (layout.getLayoutType().getName() == null) { + throw new TransformerDaoException("layout type name cannot be null"); + } + + if (logger.isInfoEnabled()) { + logger.info(String.format(" + %-25s | %s (%s)", "save layout", (layout == null ? "" : layout.getName()), + (layout == null ? "" : layout.getLayoutType().getName()))); + } + + LayoutValidator.validate(layout); + + /** + * overwrite? + */ + if (layout.getOverwrite()) { + layoutLoader.findById(layout.getName()).ifPresent(layoutLoader::delete); + } + + LayoutEntity layoutEntity = layoutMapper.toEntity(layout); + layoutEntity.setUseyn("1"); + + layoutLoader.save(layoutEntity); + } + +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/excel/LayoutExcelLoadFormatManager.java b/src/main/java/com/eactive/eai/transformer/dao/excel/LayoutExcelLoadFormatManager.java new file mode 100644 index 0000000..5805b81 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/excel/LayoutExcelLoadFormatManager.java @@ -0,0 +1,135 @@ +package com.eactive.eai.transformer.dao.excel; + +import java.io.FileInputStream; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +import org.apache.commons.lang3.StringUtils; + +import com.eactive.eai.common.util.Logger; + +public class LayoutExcelLoadFormatManager { + static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT); + + private static LayoutExcelLoadFormatManager instance; + public static String LAYOUT_EXCEL_LOAD_FORMAT_CONFIG = "excel.layout.load.format.config"; + private String DEFAULT_CONFIG_PATH = "./resources/excel-layout-load-format.properties"; + private String DEFAULT_CONFIG_FILE = "excel-layout-load-format.properties"; + + private Map map = new HashMap<>();; + + private LayoutExcelLoadFormatManager() { + map = new HashMap<>(); + } + + public static LayoutExcelLoadFormatManager getInstance() { + if (instance == null) { + instance = new LayoutExcelLoadFormatManager(); + instance.init(); + } + return instance; + } + + public String getData(String name) { + return map.get(name); + } + + public int getInt(String name) { + String s = map.get(name); + int r = 0; + try { + r = Integer.parseInt(s); + } catch (Exception e) { + + } + return r; + } + + @SuppressWarnings("rawtypes") + public void init() { + try { + Properties config = loadConfigFile(); + logger.debug(config.toString()); + map = propertyToMap(config); + } catch (Exception ex) { + ex.printStackTrace(); + logger.error("init failed", ex); + } + } + + private HashMap propertyToMap(Properties prop) { + HashMap retMap = new HashMap<>(); + for (Map.Entry entry : prop.entrySet()) { + retMap.put(String.valueOf(entry.getKey()).trim(), String.valueOf(entry.getValue()).trim()); + } + return retMap; + } + + private Properties loadConfigFile() throws Exception { + String configFile = getConfigFile(); + return loadConfigFileProperties(configFile); + } + + private Properties loadConfigFileProperties(String configFile) throws Exception { + try { + return loadFileProperties(configFile); + } catch (Exception e) { + logger.warn("LayoutExcelLoadFormatManager | loadFileProperties failed. - " + configFile + ", " + + e.getMessage()); + } + // try classpath file + return loadClassPathProperties(configFile); + } + + private Properties loadFileProperties(String filePath) throws Exception { + logger.debug("configFile : ", filePath); + Properties p = new Properties(); + try (InputStream in = new FileInputStream(filePath)) { + p.load(in); + return p; + } catch (Exception e) { + throw new Exception("LayoutExcelLoadFormatManager | Cannot load config file. - " + filePath, e); + } + } + + private Properties loadClassPathProperties(String filePath) throws Exception { + Properties p = new Properties(); + ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); + logger.warn("LayoutExcelLoadFormatManager | ClassLoader : load. - " + filePath); + try (InputStream in = classLoader.getResourceAsStream(filePath)) { + p.load(in); + return p; + } catch (Exception e) { + if (logger.isWarn()) { + logger.warn("LayoutExcelLoadFormatManager | ClassLoader : Cannot load config file. - " + filePath + ", " + + e.getMessage()); + } + } + logger.warn("LayoutExcelLoadFormatManager | ClassLoader : load default - " + DEFAULT_CONFIG_FILE); + try (InputStream in = classLoader.getResourceAsStream(DEFAULT_CONFIG_FILE)) { + p.load(in); + logger.warn("LayoutExcelLoadFormatManager | ClassLoader : load default success - " + DEFAULT_CONFIG_FILE); + return p; + } catch (Exception e) { + logger.error("LayoutExcelLoadFormatManager | ClassLoader : Cannot load default config file. - " + + DEFAULT_CONFIG_FILE, e); + throw new Exception("LayoutExcelLoadFormatManager | ClassLoader : Cannot load default config file. - " + + DEFAULT_CONFIG_FILE, e); + } + } + + private String getConfigFile() { + String configFilePath = System.getProperty(LAYOUT_EXCEL_LOAD_FORMAT_CONFIG); + if (StringUtils.isEmpty(configFilePath)) { + return DEFAULT_CONFIG_PATH; + } else { + return configFilePath; + } + } + + public static void main(String[] args) throws Exception { + LayoutExcelLoadFormatManager.getInstance(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/excel/LayoutTypeExcelDao.java b/src/main/java/com/eactive/eai/transformer/dao/excel/LayoutTypeExcelDao.java new file mode 100644 index 0000000..75337ad --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/excel/LayoutTypeExcelDao.java @@ -0,0 +1,123 @@ +package com.eactive.eai.transformer.dao.excel; + +import java.util.Iterator; +import java.util.Map; +import java.util.TreeMap; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.eactive.eai.data.entity.onl.transformer.layout.LayoutTypeEntity; +import com.eactive.eai.transformer.dao.TransformerDaoException; +import com.eactive.eai.transformer.layout.LayoutType; +import com.eactive.eai.transformer.layout.loader.LayoutTypeLoader; +import com.eactive.eai.transformer.layout.mapper.LayoutTypeMapper; + +@Service +@Transactional +public class LayoutTypeExcelDao extends BaseExcelDao { + + private static final int DATA_ROW_OFFSET = 10; + private static final int COL_NAME = 1; + private static final int COL_DESC = 2; + private static final int COL_CLAS = 3; + + @Autowired + private LayoutTypeLoader layoutTypeLoader; + + @Autowired + private LayoutTypeMapper layoutTypeMapper; + + public LayoutTypeExcelDao() throws TransformerDaoException { + super("layout_type"); + } + + protected Map parse(Sheet[] sheets) throws TransformerDaoException { + Map map = new TreeMap<>(); + + Sheet sheet = sheets[0]; + + LayoutType layoutType = null; + + try { + for (int currentRow = DATA_ROW_OFFSET; sheet.existsRow(currentRow); currentRow++) { + try { + String name = sheet.getCellString(currentRow, COL_NAME); + + if (name.trim().length() > 0) { + layoutType = new LayoutType(); + layoutType.setName(name); + layoutType.setDescription(sheet.getCellString(currentRow, COL_DESC)); + layoutType.setGenClass(sheet.getCellString(currentRow, COL_CLAS)); + + /** + * set overwrite + */ + boolean overwrite = sheet.isEquals(6, 4, "O"); + layoutType.setOverwrite(overwrite); + + map.put(layoutType.getName(), layoutType); + } else { + break; + } + } catch (Exception e) { + logger.error("[ERROR] !!!!! " + e.getMessage() + " - ROW: " + currentRow, e); + } + } + } catch (Exception e) { + throw new TransformerDaoException(e.getMessage(), e); + } + + return map; + } + + /** + * LayoutTypeDao Interface + */ + public LayoutType findLayoutTypeByName(String typeName) throws TransformerDaoException { + return null; + } + + /** + * ExcelJob Interface + */ + protected Map loadSheets(Sheet[] sheets) throws TransformerDaoException { + Map map = parse(sheets); + return map; + } + + @SuppressWarnings("rawtypes") + public void save(Map layouttypeMap) { + if (logger.isInfoEnabled()) { + logger.info(" + save layout types"); + } + + for (Iterator iter = layouttypeMap.values().iterator(); iter.hasNext();) { + LayoutType layoutType = (LayoutType) iter.next(); + if (layoutType == null) { + continue; + } + + if (layoutType.getOverwrite()) { + layoutTypeLoader.findById(layoutType.getName()).ifPresent(layoutTypeLoader::delete); + } + + + LayoutTypeEntity layoutTypeEntity = layoutTypeMapper.toEntity(layoutType); + layoutTypeLoader.save(layoutTypeEntity); + + } + } + + @Override + protected Map removeSheets(Sheet[] sheets) throws TransformerDaoException { + try { + layoutTypeLoader.deleteAll(layoutTypeLoader.findAll()); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + return null; + } + +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/excel/Sheet.java b/src/main/java/com/eactive/eai/transformer/dao/excel/Sheet.java new file mode 100644 index 0000000..ff89507 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/excel/Sheet.java @@ -0,0 +1,12 @@ +package com.eactive.eai.transformer.dao.excel; + + +public interface Sheet { + public String getCellString(int row, int column) throws Exception; + public int getCellInt(int row, int column) throws Exception; + public boolean existsRow(int row) throws Exception; + public boolean existsCell(int row, int col) throws Exception; + public boolean isEquals(int row, int column, String value) throws Exception; + public String getCellValue(int row, int column); + public String toString(); +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/excel/TransformExcelDao.java b/src/main/java/com/eactive/eai/transformer/dao/excel/TransformExcelDao.java new file mode 100644 index 0000000..b53628c --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/excel/TransformExcelDao.java @@ -0,0 +1,172 @@ +package com.eactive.eai.transformer.dao.excel; + +import java.util.Iterator; +import java.util.Map; +import java.util.StringTokenizer; +import java.util.TreeMap; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.eactive.eai.data.entity.onl.transformer.transform.TransformEntity; +import com.eactive.eai.transformer.dao.TransformerDaoException; +import com.eactive.eai.transformer.dao.jdbc.LayoutJdbcDao; +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.layout.LayoutManager; +import com.eactive.eai.transformer.transform.Transform; +import com.eactive.eai.transformer.transform.TransformItem; +import com.eactive.eai.transformer.transform.TransformValidator; +import com.eactive.eai.transformer.transform.loader.TransformLoader; +import com.eactive.eai.transformer.transform.mapper.TransformEntityMapper; + +@Service +@Transactional +public class TransformExcelDao extends BaseExcelDao { + private static final int DATA_ROW_OFFSET = 13; + private static final int COL_TRAN_INFO = 2; + private static final int ROW_TRAN_NAME = 8; + private static final int ROW_TRAN_DESC = 9; + private static final int ROW_TRAN_TRG_LOUT = 10; + private static final int ROW_TRAN_SRC_LOUT = 11; + + private static final int COL_INST = 2; + private static final int COL_RES_PATH = 3; + private static final int COL_SEQ = 4; + private static final int COL_DEF_VALU = 5; + + @Autowired + private LayoutManager layoutManager; + + @Autowired + private TransformLoader transformLoader; + + @Autowired + private TransformEntityMapper transformEntityMapper; + + @Autowired + private LayoutJdbcDao layoutJdbcDao; + + public TransformExcelDao() { + super("transform"); + } + + protected Map parse(Sheet[] sheets) { + Transform transform = new Transform(); + + Sheet sheet = sheets[0]; + + // 변환 기본 정보 + try { + transform.setName(sheet.getCellString(ROW_TRAN_NAME, COL_TRAN_INFO)); + transform.setDescription(sheet.getCellString(ROW_TRAN_DESC, COL_TRAN_INFO)); + transform.setLastUpdateDate(getCurrentDateTime().substring(0, 16)); + + String targetLayoutName = sheet.getCellString(ROW_TRAN_TRG_LOUT, COL_TRAN_INFO); + Layout targetLayout = layoutManager.getLayoutByName(targetLayoutName); + + if (targetLayout == null) { + targetLayout = layoutJdbcDao.load(targetLayoutName); + if (targetLayout == null) + throw new Exception("해당 TARGET LAYOUT을 찾을 수 없습니다. - " + targetLayoutName); + layoutManager.putLayout(targetLayout); + } + + transform.setTargetLayout(targetLayout); + + String sourceLayoutNames = sheet.getCellString(ROW_TRAN_SRC_LOUT, COL_TRAN_INFO); + StringTokenizer tokens = new StringTokenizer(sourceLayoutNames, "\n"); + + while (tokens.hasMoreTokens()) { + String sourceLayoutName = tokens.nextToken().trim(); + Layout sourceLayout = layoutManager.getLayoutByName(sourceLayoutName); + + if (sourceLayout == null) { + sourceLayout = layoutJdbcDao.load(sourceLayoutName); + if (sourceLayout == null) + throw new Exception("해당 SOURCE LAYOUT을 찾을 수 없습니다. - " + sourceLayoutName); + layoutManager.putLayout(sourceLayout); + } + + transform.addSourceLayout(sourceLayout); + } + + for (int currentRow = DATA_ROW_OFFSET; sheet.existsRow(currentRow); currentRow++) { + TransformItem item = new TransformItem(); + item.setTransform(transform); + item.setResultItemPath(sheet.getCellString(currentRow, COL_RES_PATH)); + item.setInstruction(sheet.getCellString(currentRow, COL_INST)); + item.setDefaultValue(sheet.getCellString(currentRow, COL_DEF_VALU)); + + if ("".equals(item.getResultItemPath().trim())) + break; + + try { + item.setSeqNo(sheet.getCellInt(currentRow, COL_SEQ)); + } catch (Exception e) { + item.setSeqNo(999); + } + transform.addTransformItem(item); + } + + /** + * set overwrite + */ + boolean overwrite = sheet.isEquals(6, 4, "O"); + transform.setOverwrite(overwrite); + + Map map = new TreeMap<>(); + map.put(transform.getName(), transform); + return map; + } catch (Exception e) { + throw new TransformerDaoException(e.getMessage(), e); + } + } + + public Transform findTransformByName(String transformName) { + return null; + } + + /** + * ExcelJob Interface + */ + protected Map loadSheets(Sheet[] sheets) { + return parse(sheets); + } + + protected Map removeSheets(Sheet[] sheets) throws Exception { + String transformName = sheets[0].getCellString(ROW_TRAN_NAME, COL_TRAN_INFO); + transformLoader.deleteById(transformName); + return null; + } + + public void save(Map transformMap) throws Exception { + for (Iterator iter = transformMap.values().iterator(); iter.hasNext();) { + Transform transform = iter.next(); + TransformValidator.validate(transform, true); + saveTransform(transform); + } + } + + public void saveTransform(final Transform transform) { + if (transform == null) { + return; + } + + if (logger.isInfoEnabled()) { + logger.info(" + save transform | %s" + transform.getName()); + } + + /** + * overwrite? + */ + if (transform.getOverwrite()) { + transformLoader.findById(transform.getName()).ifPresent(transformLoader::delete); + } + + TransformEntity transformEntity = transformEntityMapper.toEntity(transform); + transformLoader.save(transformEntity); + + } + +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/jdbc/FunctionJdbcDao.java b/src/main/java/com/eactive/eai/transformer/dao/jdbc/FunctionJdbcDao.java new file mode 100644 index 0000000..8750d92 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/jdbc/FunctionJdbcDao.java @@ -0,0 +1,62 @@ +package com.eactive.eai.transformer.dao.jdbc; + +import java.util.Map; +import java.util.Optional; +import java.util.TreeMap; +import java.util.stream.Stream; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.data.entity.onl.transformer.function.Function; +import com.eactive.eai.transformer.dao.FunctionDao; +import com.eactive.eai.transformer.function.FunctionDefinition; +import com.eactive.eai.transformer.function.loader.FunctionLoader; +import com.eactive.eai.transformer.function.mapper.FunctionMapper; + +@Service +@Transactional +public class FunctionJdbcDao extends TransDao implements FunctionDao { + + private static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT); + + @Autowired + private FunctionLoader functionLoader; + + @Autowired + private FunctionMapper functionMapper; + + public Map load() { + if (logger.isInfoEnabled()) { + logger.info("FunctionJdbcDao | loading... "); + } + + Map map = new TreeMap<>(); + + try (Stream functions = functionLoader.loadAll()) { + functions.forEach(f -> { + FunctionDefinition fd = functionMapper.toVo(f); + map.put(fd.getName(), fd); + }); + } + + if (logger.isDebugEnabled()) { + logger.debug("FunctionJdbcDao | 함수 정보를 가져왔음 - " + map.size()); + } + + return map; + } + + public FunctionDefinition findFunctionByName(String cnvsnFuntnname) { + Optional functionOptional = functionLoader.findById(cnvsnFuntnname); + if (!functionOptional.isPresent()) { + return null; + } + + Function function = functionOptional.get(); + return functionMapper.toVo(function); + } + +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/jdbc/LayoutJdbcDao.java b/src/main/java/com/eactive/eai/transformer/dao/jdbc/LayoutJdbcDao.java new file mode 100644 index 0000000..6a8ebb9 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/jdbc/LayoutJdbcDao.java @@ -0,0 +1,98 @@ +package com.eactive.eai.transformer.dao.jdbc; + +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Stream; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.eactive.eai.common.property.loader.PropGroupLoader; +import com.eactive.eai.data.entity.onl.property.PropGroup; +import com.eactive.eai.data.entity.onl.transformer.layout.LayoutEntity; +import com.eactive.eai.transformer.dao.LayoutDao; +import com.eactive.eai.transformer.dao.TransformerDaoException; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.layout.loader.LayoutLoader; +import com.eactive.eai.transformer.layout.mapper.LayoutMapper; +import com.eactive.eai.transformer.util.MemoryLogger; + +@Service +@Transactional +public class LayoutJdbcDao extends TransDao implements LayoutDao { + + @Autowired + private PropGroupLoader propGroupLoader; + + @Autowired + private LayoutLoader layoutLoader; + + @Autowired + private LayoutMapper layoutMapper; + + @Override + public Map load() { + Stream layoutEntities = layoutLoader.loadAll(); + Map resultMap = new ConcurrentHashMap<>(); + + layoutEntities.forEach(layoutEntity -> { + Layout layout = load(layoutEntity); + if (layout != null) { + resultMap.put(layout.getName(), layout); + } + }); + + return resultMap; + } + + public Layout load(LayoutEntity layoutEntity) { + Layout layout = null; + try { + layout = layoutMapper.toVo(layoutEntity); + } catch (Exception e) { + MemoryLogger.error(e.getMessage(), e); + logger.error(e.getMessage(), e); + } + + return layout; + } + + public Layout load(String layoutName) { + LayoutEntity layoutEntity = layoutLoader.getById(layoutName); + + if (!"1".equals(layoutEntity.getUseyn())) { + return null; + } + try { + return load(layoutEntity); + } catch (Exception e) { + MemoryLogger.error(e.getMessage(), e); + logger.error(e.getMessage(), e); + throw new TransformerDaoException(e.getMessage(), e); + } + } + + + @Override + public Layout findLayoutByName(String loutName) { + LayoutEntity layoutEntity = layoutLoader.getById(loutName); + return load(layoutEntity); + } + + @Override + public Item findItemByName(String layoutName) { + return load(layoutName).getRootItem(); + } + + @Override + public Map findPermanent() { + Map map = new HashMap<>(); + PropGroup propGroup = propGroupLoader.getById("PERMANENT_LAYOUT"); + propGroup.getProps().forEach(prop -> map.put(prop.getPrpty2val(), prop.getPrpty2val())); + return map; + } + +} \ No newline at end of file diff --git a/src/main/java/com/eactive/eai/transformer/dao/jdbc/LayoutTypeJdbcDao.java b/src/main/java/com/eactive/eai/transformer/dao/jdbc/LayoutTypeJdbcDao.java new file mode 100644 index 0000000..d6354f7 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/jdbc/LayoutTypeJdbcDao.java @@ -0,0 +1,55 @@ +package com.eactive.eai.transformer.dao.jdbc; + +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.eactive.eai.data.entity.onl.transformer.layout.LayoutTypeEntity; +import com.eactive.eai.transformer.dao.LayoutTypeDao; +import com.eactive.eai.transformer.layout.LayoutType; +import com.eactive.eai.transformer.layout.loader.LayoutTypeLoader; +import com.eactive.eai.transformer.layout.mapper.LayoutTypeMapper; + +@Service +@Transactional +public class LayoutTypeJdbcDao extends TransDao implements LayoutTypeDao { + + @Autowired + private LayoutTypeLoader layoutTypeLoader; + + @Autowired + private LayoutTypeMapper layoutTypeMapper; + + public Map load() { + if (logger.isInfoEnabled()) { + logger.info("LayoutTypeJdbcDao | loading... "); + } + + Map map = new TreeMap<>(); + List layoutTypeEntities = layoutTypeLoader.findAll(); + + for (LayoutTypeEntity layoutTypeEntity : layoutTypeEntities) { + LayoutType layoutType = layoutTypeMapper.toVo(layoutTypeEntity); + map.put(layoutType.getName(), layoutType); + } + + if (logger.isDebugEnabled()) { + logger.debug("LayoutTypeJdbcDao | LayouType 정보를 Load 했습니다. - " + map.size()); + } + + return map; + } + + public void clearAllLayoutTypes() { + layoutTypeLoader.deleteAll(layoutTypeLoader.findAll()); + } + + public LayoutType findLayoutTypeByName(String loutPtrnName) { + return layoutTypeLoader.findById(loutPtrnName).map(layoutTypeMapper::toVo).orElse(null); + } + +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/jdbc/TransDao.java b/src/main/java/com/eactive/eai/transformer/dao/jdbc/TransDao.java new file mode 100644 index 0000000..09350cc --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/jdbc/TransDao.java @@ -0,0 +1,21 @@ +package com.eactive.eai.transformer.dao.jdbc; + +import java.math.BigDecimal; + +import com.eactive.eai.transformer.util.Logger; + +public class TransDao { + + protected static Logger logger = Logger.getLogger("transformer"); + + protected int convertInt(Object o) { + if (o instanceof Integer) { + return (Integer) o; + } else if (o instanceof BigDecimal) { + return ((BigDecimal) o).intValue(); + } else { + return 0; + } + } + +} diff --git a/src/main/java/com/eactive/eai/transformer/dao/jdbc/TransformJdbcDao.java b/src/main/java/com/eactive/eai/transformer/dao/jdbc/TransformJdbcDao.java new file mode 100644 index 0000000..834826c --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/dao/jdbc/TransformJdbcDao.java @@ -0,0 +1,71 @@ +package com.eactive.eai.transformer.dao.jdbc; + +import java.util.Map; +import java.util.TreeMap; +import java.util.stream.Stream; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.eactive.eai.data.entity.onl.transformer.transform.TransformEntity; +import com.eactive.eai.transformer.dao.TransformDao; +import com.eactive.eai.transformer.layout.LayoutManager; +import com.eactive.eai.transformer.transform.Transform; +import com.eactive.eai.transformer.transform.loader.TransformLoader; +import com.eactive.eai.transformer.transform.mapper.TransformEntityMapper; +import com.eactive.eai.transformer.util.MemoryLogger; + +@Service +@Transactional +public class TransformJdbcDao extends TransDao implements TransformDao { + + @Autowired + private TransformLoader transformLoader; + + @Autowired + private TransformEntityMapper transformEntityMapper; + + @Autowired + private LayoutManager layoutManager; + + public Map load() { + if (logger.isInfoEnabled()) { + logger.info("TransformJdbcDao | loading... "); + } + Stream transformEntities = transformLoader.loadAll(); + if (logger.isInfoEnabled()) { + logger.info("TransformJdbcDao | make transform... "); + } + + return load(transformEntities); + } + + private Map load(Stream transformEntities) { + Map map = new TreeMap<>(); + transformEntities.map(this::load).filter(e -> e != null).forEach(t -> map.put(t.getName(), t)); + return map; + } + + public Transform load(TransformEntity transformEntity) { + Transform transform = null; + try { + transform = transformEntityMapper.toVo(transformEntity); + } catch (Exception e) { + MemoryLogger.error("TransformJdbcDao | transform rule load error - " + e.getMessage(), e); + logger.error("TransformJdbcDao | transform rule load error - " + e.getMessage(), e); + } + return transform; + } + + public Transform findTransformByName(String transformName) { + TransformEntity transformEntity = transformLoader.getById(transformName); + + Stream layoutNames = transformEntity.getTransformTypeEntities().stream() + .map(transformTypeEntity -> transformTypeEntity.getId().getLoutname()); + layoutNames.forEach(layoutManager::reload); + + return transformEntityMapper.toVo(transformEntity); + } + +} diff --git a/src/main/java/com/eactive/eai/transformer/engine/Parser.java b/src/main/java/com/eactive/eai/transformer/engine/Parser.java new file mode 100644 index 0000000..40b0573 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/engine/Parser.java @@ -0,0 +1,159 @@ +package com.eactive.eai.transformer.engine; + +import java.io.Serializable; + +import org.nfunk.jep.JEP; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.transformer.function.FunctionDefinition; +import com.eactive.eai.transformer.function.FunctionManager; +import com.eactive.eai.transformer.function.crypto.Decrypt; +import com.eactive.eai.transformer.function.crypto.Des3Decrypt; +import com.eactive.eai.transformer.function.crypto.Des3Encrypt; +import com.eactive.eai.transformer.function.crypto.DesDecrypt; +import com.eactive.eai.transformer.function.crypto.DesEncrypt; +import com.eactive.eai.transformer.function.crypto.Encrypt; +import com.eactive.eai.transformer.function.crypto.Seed128Decrypt; +import com.eactive.eai.transformer.function.crypto.Seed128Encrypt; +import com.eactive.eai.transformer.function.crypto.SeedDecrypt; +import com.eactive.eai.transformer.function.crypto.SeedEncrypt; +import com.eactive.eai.transformer.function.generic.ToBytes; +import com.eactive.eai.transformer.util.Logger; + +public class Parser implements Serializable { + + private static final long serialVersionUID = -3657522834962737552L; + + private static Logger logger = Logger.getLogger("transformer"); + + private transient JEP jep = new JEP(); // Create a new parser + + public Parser() { + getJep().addStandardFunctions(); + getJep().addStandardConstants(); + + getJep().setImplicitMul(true); + getJep().setAllowAssignment(true); + getJep().setAllowUndeclared(true); + + try { + addGenericFunctions(); + } catch (Exception e) { + logger.error("Parser | error when add generic function", e); + } + } + + public void parse(String expr) throws Exception { + getJep().parseExpression(expr); + + if (getJep().hasError()) { + throw new Exception("[Parser] Error when parsing expr : " + getJep().getErrorInfo()); + } + } + + public void addVariable(String name, double value) throws Exception { + getJep().addVariable(name, value); + + if (getJep().hasError()) { + throw new Exception("[Parser] Error when parsing double : " + getJep().getErrorInfo()); + } + } + + public void addVariable(String name, Object value) throws Exception { + getJep().addVariable(name, value); + + if (getJep().hasError()) { + throw new Exception("[Parser] Error when parsing Object : " + getJep().getErrorInfo()); + } + } + + public double getValue() throws Exception { + double value = getJep().getValue(); + + if (getJep().hasError()) { + throw new Exception("[Parser] Error during evaluation : " + getJep().getErrorInfo()); + } + + return value; + } + + public Object getValueAsObject() throws Exception { + Object value = getJep().getValueAsObject(); + + if (getJep().hasError()) { + throw new Exception("[Parser] Error during evaluation - error info : [" + getJep().getErrorInfo() + "]"); + } + + return value; + } + + public void initSymbolTable() { + getJep().initSymTab(); + } + + @SuppressWarnings("unchecked") + public String[] getSymbols() { + String[] symbols = new String[getJep().getSymbolTable().size()]; + symbols = (String[])getJep().getSymbolTable().keySet().toArray(new String[symbols.length]); + return symbols; + } + + private void addGenericFunctions() throws Exception { + FunctionManager manager = FunctionManager.getInstance(); + + String [] funcName = manager.getAllFunctionNames(); + int size = funcName.length; + FunctionDefinition funcDef = null; + PostfixMathCommand command = null; + for( int i = 0; i < size; i++) { + funcDef = manager.getFunctionDefinition(funcName[i]); + if (funcDef == null) continue; + String functionClass = funcDef.getFunctionClass(); + if (functionClass == null) continue; + if(!functionClass.startsWith("com.eactive.eai.transformer.function")) { + continue; + } + + // 등록된 함수의 실제 Class가 없는 경우 Skip 한다. + try { + command = (PostfixMathCommand) Class.forName(functionClass).newInstance(); + } catch (Exception e ) { + continue; + } + try{ + addFunction(funcName[i], command); + }catch (Exception e ) { + throw new Exception("[Parser] Error during addGenericfunction : " + getJep().getErrorInfo()); + } + } + + addFunction("tobytes", new ToBytes()); + addFunction("encrypt", new Encrypt()); + addFunction("decrypt", new Decrypt()); + addFunction("des_encrypt", new DesEncrypt()); + addFunction("des_decrypt", new DesDecrypt()); + addFunction("des3_encrypt", new Des3Encrypt()); + addFunction("des3_decrypt", new Des3Decrypt()); + addFunction("seed_encrypt", new SeedEncrypt()); + addFunction("seed_decrypt", new SeedDecrypt()); + addFunction("seed128_encrypt", new Seed128Encrypt()); + addFunction("seed128_decrypt", new Seed128Decrypt()); + } + + private void addFunction(String name, PostfixMathCommand command) { + if(name == null || command == null) { + logger.warn("addFunction ("+name+","+command+") skip null"); + return; + } + getJep().addFunction(name.toUpperCase(), command); + getJep().addFunction(name.toLowerCase(), command); + } + + public JEP getJep() { + return jep; + } + + public void setJep(JEP jep) { + this.jep = jep; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/engine/ParserFactory.java b/src/main/java/com/eactive/eai/transformer/engine/ParserFactory.java new file mode 100644 index 0000000..d626687 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/engine/ParserFactory.java @@ -0,0 +1,77 @@ +package com.eactive.eai.transformer.engine; + +import java.time.Duration; + +import org.apache.commons.pool2.BasePooledObjectFactory; +import org.apache.commons.pool2.ObjectPool; +import org.apache.commons.pool2.PooledObject; +import org.apache.commons.pool2.impl.DefaultPooledObject; +import org.apache.commons.pool2.impl.GenericObjectPool; +import org.apache.commons.pool2.impl.GenericObjectPoolConfig; + +import com.eactive.eai.transformer.SystemKeys; +import com.eactive.eai.transformer.util.Logger; + +public class ParserFactory { + private static Logger logger = Logger.getLogger("transformer"); + static ObjectPool parserPool; + + // MAX concurrent size + static int maxSize = 10000; + + static { + try { + maxSize = Integer.parseInt(System.getProperty(SystemKeys.TRANSFROMER_PARSER_CACHE_SIZE, SystemKeys.TRANSFROMER_PARSER_CACHE_DEFAULT)); + } catch(Exception e) { + maxSize = Integer.parseInt(SystemKeys.TRANSFROMER_PARSER_CACHE_DEFAULT); + } + logger.warn(">> ParserFactory init config"); + logger.warn(String.format("%s = %s", SystemKeys.TRANSFROMER_PARSER_CACHE_SIZE, maxSize)); + + ParserObjectFactory pFactory = new ParserObjectFactory(); + + GenericObjectPoolConfig config = new GenericObjectPoolConfig<>(); + config.setMaxTotal(maxSize); + config.setMaxWait(Duration.ofSeconds(3)); + config.setMaxIdle(maxSize); + config.setMinIdle(0); + + parserPool = new GenericObjectPool<>(pFactory, config); + } + + private ParserFactory() { + + } + + public static int getPoolMaxSize() { + return maxSize; + } + + public static synchronized Parser getParser() throws Exception { + return parserPool.borrowObject(); + } + + public static synchronized void putParser(Parser parser) throws Exception { + parser.initSymbolTable(); + parserPool.returnObject(parser); + } + + public static int activeCount() { + return parserPool.getNumActive(); + } +} + + +class ParserObjectFactory extends BasePooledObjectFactory { + @Override + public Parser create() throws Exception { + Parser parser = new Parser(); + parser.initSymbolTable(); + return parser; + } + + @Override + public PooledObject wrap(Parser obj) { + return new DefaultPooledObject<>(obj); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/engine/TransformEngine.java b/src/main/java/com/eactive/eai/transformer/engine/TransformEngine.java new file mode 100644 index 0000000..49b8e4b --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/engine/TransformEngine.java @@ -0,0 +1,114 @@ +package com.eactive.eai.transformer.engine; + +import org.springframework.stereotype.Component; + +import com.eactive.eai.common.lifecycle.Lifecycle; +import com.eactive.eai.common.lifecycle.LifecycleException; +import com.eactive.eai.common.lifecycle.LifecycleListener; +import com.eactive.eai.common.lifecycle.LifecycleSupport; +import com.eactive.eai.common.util.ApplicationContextProvider; +import com.eactive.eai.transformer.function.FunctionManager; +import com.eactive.eai.transformer.layout.LayoutManager; +import com.eactive.eai.transformer.layout.LayoutTypeManager; +import com.eactive.eai.transformer.transform.TransformManager; +import com.eactive.eai.transformer.util.Logger; + +@Component +public class TransformEngine implements Lifecycle { + + private static Logger logger = Logger.getLogger("transformer"); + private Transformer transformer; + private LifecycleSupport lifecycleSupport = null; + private boolean started; + + + private TransformEngine() { + lifecycleSupport = new LifecycleSupport(this); + transformer = new Transformer(); + } + + private void initEngine() throws LifecycleException { + Runtime runtime = Runtime.getRuntime(); + long memUnit = 1024; + logger.info("INIT Usage("+memUnit+") : "+ (runtime.totalMemory() - runtime.freeMemory())/memUnit + " / " +runtime.totalMemory()/memUnit); + FunctionManager.getInstance().start(); + logger.info("FUNC Usage("+memUnit+") : "+ (runtime.totalMemory() - runtime.freeMemory())/memUnit + " / " +runtime.totalMemory()/memUnit); + LayoutTypeManager.getInstance().start(); + logger.info("LTYP Usage("+memUnit+") : "+ (runtime.totalMemory() - runtime.freeMemory())/memUnit + " / " +runtime.totalMemory()/memUnit); + LayoutManager.getManager().start(); + logger.info("LOUT Usage("+memUnit+") : "+ (runtime.totalMemory() - runtime.freeMemory())/memUnit + " / " +runtime.totalMemory()/memUnit); + TransformManager.getManager().start(); + logger.info("TRAN Usage("+memUnit+") : "+ (runtime.totalMemory() - runtime.freeMemory())/memUnit + " / " +runtime.totalMemory()/memUnit); + + ParserFactory.activeCount(); + } + + private void clearEngine() throws LifecycleException { + LayoutTypeManager.getInstance().stop(); + FunctionManager.getInstance().stop(); + LayoutManager.getManager().stop(); + TransformManager.getManager().stop(); + } + + public static TransformEngine getInstance() { + return ApplicationContextProvider.getContext().getBean(TransformEngine.class); + } + + /** + * 변환 처리용 인스턴스를 가져옴. + */ + public Transformer getTransformer() { + return transformer; + } + + public void addLifecycleListener(LifecycleListener listener) { + lifecycleSupport.addLifecycleListener(listener); + } + + public LifecycleListener[] findLifecycleListeners() { + return lifecycleSupport.findLifecycleListeners(); + } + + public void removeLifecycleListener(LifecycleListener listener) { + lifecycleSupport.removeLifecycleListener(listener); + } + + public void start() throws LifecycleException { + if (isStarted()) + return; + + try { + initEngine(); + this.started = true; + } catch (LifecycleException e) { + throw e; + } catch (Exception e) { + throw new LifecycleException(e); + } + } + + public boolean isStarted() { + return this.started; + } + + public void stop() throws LifecycleException { + try { + clearEngine(); + this.started = false; + } catch (LifecycleException e) { + throw e; + } catch (Exception e) { + throw new LifecycleException(e); + } + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(FunctionManager.getInstance().toString() + "\n"); + sb.append(LayoutTypeManager.getInstance().toString() + "\n"); + sb.append(LayoutManager.getManager().toString() + "\n"); + sb.append(TransformManager.getManager().toString()); + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/engine/TransformException.java b/src/main/java/com/eactive/eai/transformer/engine/TransformException.java new file mode 100644 index 0000000..974e243 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/engine/TransformException.java @@ -0,0 +1,66 @@ +package com.eactive.eai.transformer.engine; + +import com.eactive.eai.transformer.TransformerException; +import com.eactive.eai.transformer.message.Message; + + +public class TransformException extends TransformerException { + private String transformName; + private Message resultMessage; + private Message[] sourceMessages; + private TransformOption option; + + public TransformException(String message, String transformName, + Message resultMessage, Message[] sourceMessages, TransformOption option) { + this(message, transformName, resultMessage, sourceMessages, option, null); + } + + public TransformException(String message, String transformName, + Message resultMessage, Message[] sourceMessages, + TransformOption option, Throwable cause) { + super(message, cause); + this.transformName = transformName; + this.resultMessage = resultMessage; + this.sourceMessages = sourceMessages; + this.option = option; + } + + public String getTransformName() { + return transformName; + } + + public boolean hasResultMessage() { + return (resultMessage != null); + } + + public Message getResultMessage() { + return resultMessage; + } + + public Message[] getSourceMessages() { + return sourceMessages; + } + + public boolean hasTransformOption() { + return (option != null); + } + + public TransformOption getTransformOption() { + return option; + } + + @Override + public String getMessage() { + StringBuilder sb = new StringBuilder(); + sb.append("\n전문레이아웃매핑=" + transformName); + sb.append(", 원천전문레이아웃="); + for (int i=0; i 각 item 별 실행 + static char[] findChars = {'(', '+', ' '}; + private static boolean isSimpleInstruction(String message) { + if(message.charAt(message.length()-1) == ')') return false; + for(int i=0; i -1) { + return false; + } + } + return true; + } + + Transformer() { + } + + private static final char[] FUNCTION_SEPARATORS = { ' ', ',' }; + /** + * Column 구분자 '[*]'를 index 값으로 변경해주는 메소드 + * 함수구분자 ' ', 혹은 ',' 별 첫번째 * 만 변경한다. + * + * 예제> + * 호줄 : replaceAsteriskToIndex("(abc[*].d*ef[*].ghi*) + (*jk[*].lm[*].no)", 12); + * 결과 : (abc[12].d*ef[*].ghi*) + (*jk[12].lm[*].no) + * + * @param src 대상 문자열 + * @param index 변경할 index 값 + * @return 결과값 + */ + private static String replaceAsteriskToIndex(String src, int idx) { + String index = Integer.toString(idx); + char[] orgChars = src.toCharArray(); + char[] settingChars = index.toCharArray(); + StringBuilder sb = new StringBuilder(orgChars.length); + + boolean doChange = true; + boolean isChanged = false; + + for(int i = 0; i < orgChars.length;i++) { + char c = orgChars[i]; + if (doChange && c == '*' + && i - 1 > -1 && i + 1 < orgChars.length + && orgChars[i - 1] == '[' && orgChars[i + 1] == ']' ) { + isChanged = true; + doChange = false; + + for (char settingChar : settingChars) { + sb.append(settingChar); + } + } else { + sb.append(c); + } + for(char functionSeparator : FUNCTION_SEPARATORS){ + if(c == functionSeparator) { + doChange = true; + break; + } + } + } + + if(!isChanged) { + throw new NullPointerException("변환인자 '[*]' 가 존재하지 않습니다. - "+src); + } + return sb.toString(); + } + + /** + * 변환 메소드 (변환 결과 메시지는 자동 생성). + * transformName을 이용해서 어떠한 변환룰을 적용할지 결정됨. + * TransformOption이 null일 경우 기본값을 사용함. + * 운본 메시지를 생성하지 않고 데이터만 전달, 내부적으로 Message를 생성해서 사용됨. + * @see Message + * @see TransformOption + */ + public TransformResult transform(String transformName, + Object[] sourceDatas, TransformOption option) + throws TransformerException { + Transform tr = TransformManager.getManager().getTransform(transformName); + Message[] sourceMessages = new Message[sourceDatas.length]; + + try { + for (int i = 0; i < sourceDatas.length; i++) { + Layout layout = tr.getSourceLayout(i); + sourceMessages[i] = MessageFactory.getFactory().getMessage(layout.getName()); + sourceMessages[i].setData(sourceDatas[i]); + } + } catch (Exception e) { + throw new TransformException("error when set data. - " + e.getMessage(), + transformName, + null, + sourceMessages, + option, e); + } + + return transform(transformName, null, sourceMessages, option); + } + + /** + * 변환 메소드 (변환 결과 메시지는 자동 생성). + * transformName을 이용해서 어떠한 변환룰을 적용할지 결정됨. + * TransformOption이 null일 경우 기본값을 사용함. + * @see Message + * @see TransformOption + */ + public Message transform(String transformName, Message[] sourceMessages) + throws TransformerException { + TransformResult result = transform(transformName, null, sourceMessages, + null); + + return result.getResultMessage(); + } + + /** + * 변환 메소드 (변환 결과 메시지는 자동 생성). + * transformName을 이용해서 어떠한 변환룰을 적용할지 결정됨. + * TransformOption이 null일 경우 기본값을 사용함. + * @see Message + * @see TransformOption + */ + public TransformResult transform(String transformName, + Message[] sourceMessages, TransformOption option) + throws TransformerException { + return transform(transformName, null, sourceMessages, option); + } + + /** + * 변환 메소드 (변환 결과 메시지는 자동 생성). + * transformName을 이용해서 어떠한 변환룰을 적용할지 결정됨. + * TransformOption이 null일 경우 기본값을 사용함. + * @see Message + * @see TransformOption + */ + public TransformResult transform(String transformName, + Message targetMessage, Message[] sourceMessages) + throws TransformerException { + return transform(transformName, targetMessage, sourceMessages, null); + } + + /** + * 변환 메소드 (변환 결과 메시지 제공). + * transformName을 이용해서 어떠한 변환룰을 적용할지 결정됨. + * TransformOption이 null일 경우 기본값을 사용함. + * @see Message + * @see TransformOption + */ + public TransformResult transform(String transformName, + Message targetMessage, Message[] sourceMessages, TransformOption option) + throws TransformerException { + + List errors = new ArrayList(); + + try { + /** + * [1] 변환 정보 조회 + */ + Transform transform = TransformManager.getManager().getTransform(transformName); + + if (transform == null) { + throw new TransformException("Failed to look up this conversion rule. - " + + transformName, transformName, targetMessage, sourceMessages, option); + } else if (transform.getSourceLayoutCount() != sourceMessages.length) { + throw new TransformException("The number of parameter messages specified in the conversion rule does not match the number of parameters provided.["+transform.getSourceLayoutCount() + +","+sourceMessages.length+"]", + transformName, targetMessage, sourceMessages, option); + } + + /** + * [2] 소스 메시지 내용 유효성 확인 + */ + try { + checkValidSourceMessages(transform, sourceMessages); + } catch (Exception e) { + throw new TransformException("Invalid original message. : " + e.getMessage(), + transformName, + targetMessage, + sourceMessages, + option, e); + } + + /** + * [3] 변환 옵션이 제공 안되었을 경우 기본 옵션을 할당 + */ + if (option == null) { + option = TransformOption.DEFAULT_OPTION; + } + + /** + * [4] 결과 메시지가 null 이라면 생성 + */ + if (targetMessage == null) { + try { + targetMessage = MessageFactory.getFactory().getMessage(transform.getTargetLayout().getName()); + + } catch (LayoutNotFoundException e) { + throw new TransformException("target message not found.", + transformName, + targetMessage, + sourceMessages, + option, e); + } catch (LayoutInitializationException e) { + throw new TransformException("target message init failed.", + transformName, + targetMessage, + sourceMessages, + option, e); + } catch(Exception e) { + throw new TransformException(e.getMessage(), + transformName, + targetMessage, + sourceMessages, + option, e); + } + + } + + /** + * [5] 변환 룰에 정의된 명령 수행 + */ + for (Iterator itr = transform.getTransformItemList().iterator(); itr.hasNext();) { + TransformItem transformItem = (TransformItem) itr.next(); + transformLine(transformItem, targetMessage, sourceMessages, option, errors); + } + + if (targetMessage instanceof ISO8583Message) { + ((ISO8583Message) targetMessage).assembleDataBytes(); + } + + TransformResult transformResult = new TransformResult(); + transformResult.setSourceMessages(sourceMessages); + transformResult.setResultMessage(targetMessage); + transformResult.setTransformOption(option); + + if (!errors.isEmpty() && (logger.isWarnEnabled())) { + StringBuilder sb = new StringBuilder(); + sb.append("Transformer | transform error - \n"); + for (Iterator iter = errors.iterator(); iter.hasNext();) { + sb.append(iter.next()); + if (iter.hasNext()) { + sb.append("\n"); + } + } + String msg = transformName + " | " + sb.toString(); + logger.warn(msg); + MemoryLogger.error(" " + msg); + } + return transformResult; + } catch(TransformerException e) { + logger.error("", e); + throw e; + } + } + + + /** + * transform item - line(record) 단위의 작업 + */ + protected void transformLine(TransformItem transformItem, Message targetMessage, + Message[] sourceMessages, TransformOption option, List errors) + throws TransformerException { + + Item resultItem = null; + + String resultItemPath = transformItem.getResultItemPath(); + String instruction = transformItem.getInstruction(); + + /** + * 좌항 또는 우항이 빈 공백일 경우 (excel 경우 발생) + */ + if ("".equals(resultItemPath.trim()) || "".equals(instruction)) + return; + + /** + * data target기준 copy (예외처리한거임 ) JUN ADD + */ + if (instruction.indexOf("DATACOPY") >= 0){ + if ( sourceMessages[0].getData() instanceof byte[] ){ + if (sourceMessages[0].getLength() > targetMessage.getLength() ){ + byte [] src = (byte[])sourceMessages[0].getData(); + ByteBuffer bb = ByteBuffer.allocate(sourceMessages[0].getLength()); + bb.put(src); + byte [] dst = new byte[targetMessage.getLength()]; + bb.flip(); + bb.get(dst, 0, dst.length); + targetMessage.setData(dst); + + }else if (sourceMessages[0].getLength() < targetMessage.getLength() ){ + byte [] src = (byte[])sourceMessages[0].getData(); + ByteBuffer bb = ByteBuffer.allocate(targetMessage.getLength()); + bb.put(src); + for (int i=src.length;i < targetMessage.getLength();i++ ){ + bb.put(" ".getBytes()); + } + byte [] dst = new byte[targetMessage.getLength()]; + bb.flip(); + bb.get(dst, 0, dst.length); + targetMessage.setData(dst); + }else{ + targetMessage.setData(sourceMessages[0].getData()); + } + }else if ( sourceMessages[0].getData() instanceof String ){ + if (sourceMessages[0].getLength() > targetMessage.getLength() ){ + String src = (String)sourceMessages[0].getData(); + targetMessage.setData(src.substring(0,targetMessage.getLength())); + + }else if (sourceMessages[0].getLength() < targetMessage.getLength() ){ + String src = (String)sourceMessages[0].getData(); + String dst =""; + for (int i=src.length() ;i < targetMessage.getLength();i++ ){ + dst = dst + " "; + } + targetMessage.setData(src + dst); + }else{ + targetMessage.setData(sourceMessages[0].getData()); + } + } + return; + } + + /** + * item[*] 형태일 경우 + */ + int idx = StringUtil.isMulti(instruction); + + if (idx > 0) { + String prefix = instruction.substring(0, idx); + int p = StringUtil.findStart(prefix); + if (p > 0) { + prefix = instruction.substring(p+1, idx) + "[-1]"; + } + // occurance 가 * (0, 1, ...) 경우 에러 수정 :2009.04.20 + else { + prefix = prefix + "[-1]"; + } + + Item item = null; + for (int i = 0; i < sourceMessages.length; i++) { + try { + item = ((Item) sourceMessages[i]).getItem(prefix, true); + if (item != null) { + break; + } + } catch (Exception e) { + ; // do nothing + } + } + + if (item == null) { + errors.add(" Expression : " + transformItem.getResultItemPath() + + " = " + transformItem.getInstruction() + + " | Item (" + prefix + ")can not be found in Source Message. Check conversion rules - "); + for (int i = 0; i < sourceMessages.length; i++) { + errors.add(sourceMessages[i].toString()); + } + return; + } + + int count = item.arraySize(); + + for (int i = 0; i < count; i++) { + TransformItem trItem = new TransformItem(); + trItem.setTransform(transformItem.getTransform()); + trItem.setInstruction(replaceAsteriskToIndex(instruction, i )); + trItem.setResultItemPath(replaceAsteriskToIndex(resultItemPath, i )); + transformLine(trItem, targetMessage, sourceMessages, option, errors); + } + return; + } + + /** + * result item 설정 + */ + String itemPath = transformItem.getResultItemPath(); + + /** + * result item path 가 message 명으로 시작하지 않을 경우 -> 메시지명을 앞에 붙여준다. + */ + // FIXME : 정상적으로 등록되었다면 불필요한 로직임 +// if (!itemPath.startsWith(transformItem.getTransform().getTargetLayout().getName())) { +// itemPath = transformItem.getTransform().getTargetLayout().getName() + Types.FIELD_SEPARATOR + itemPath; +// } + resultItem = ((Item) targetMessage).getOrCreateItem(itemPath, true); + + if (resultItem == null) { + errors.add(" Expression : " + transformItem.getResultItemPath() + + " = " + transformItem.getInstruction() + + " | Item (" + itemPath + ") can not be found in Target Message. Check conversion rules - "); + errors.add(targetMessage.toString()); + return; + } + + /** + * + * 1. field|attribute : transform 을 바로 진행한다. (transformEach) + * 2. group|message : 아래의 sub 구성 요소로 분리하여 transformLine을 재귀 호출한다. + * attribute : for test of kesa xml attribute type (DHLEE) + */ + if (resultItem.isField() || resultItem.isAttr()) { + /** + * 튜닝 - Instruction(Expression) 이 Simple할 경우 JEP Parsing을 할 필요가 없다. + */ + if ( isSimpleInstruction(transformItem.getInstruction().trim()) ) { + transformAtomWithoutParsing(transformItem, targetMessage, sourceMessages, option, errors); + } else { + transformAtom(transformItem, targetMessage, sourceMessages, option, errors); + } + } else { + Parser parser = null; + try { + parser = ParserFactory.getParser(); + Item item = null; + + try { + parser.parse(transformItem.getInstruction()); + } catch (Exception e) { + logger.error("[Transformer] Expression : " + + transformItem.getResultItemPath() + " = " + + transformItem.getInstruction(), e); + throw new TransformException("Error during parse instruction : " + e.getMessage(), + transformItem.getResultItemPath() + " = " + transformItem.getInstruction(), + targetMessage, + sourceMessages, + option, e); + } + + String[] symbols = parser.getSymbols(); + String sourceItemPath = null; + + if (symbols.length > 0) { + sourceItemPath = symbols[0]; + for (int i = 0; i < sourceMessages.length; i++) { + try { + item = ((Item) sourceMessages[i]).getItem(sourceItemPath, true); + + if (item != null) { + break; + } + } catch (Exception e) { + } + } + } + + if (item == null) { + throw new TransformException("I can not do conversion work. Please check the conversion rules. Expression : ", + transformItem.getResultItemPath() + " = " + transformItem.getInstruction(), + targetMessage, + sourceMessages, + option, null); + } + + if (item.isField() || item.isAttr()) { + // set value to Group + if ( isSimpleInstruction(transformItem.getInstruction().trim()) ) { + transformAtomWithoutParsing(transformItem, targetMessage, sourceMessages, option, errors); + } else { + transformAtom(transformItem, targetMessage, sourceMessages, option, errors); + } + return; + } + + List children = item.getChildList(); + + for (int i = 0; i < children.size(); i++) { + Item child = (Item) children.get(i); + + if (child.getIndex() < 0) { + continue; + } + + TransformItem trItem = new TransformItem(); + trItem.setTransform(transformItem.getTransform()); + + trItem.setResultItemPath(transformItem.getResultItemPath().replace( + transformItem.getResultItemPath(), + transformItem.getResultItemPath() + Types.FIELD_SEPARATOR + child.getName() + "[" + child.getIndex() + "]")); + + String sourceItemName = transformItem.getResultItemPath().replace(targetMessage.getName(), sourceMessages[0].getName()); + trItem.setInstruction(transformItem.getInstruction().replace( + sourceItemName, + sourceItemName + Types.FIELD_SEPARATOR + child.getName() + "[" + child.getIndex() + "]")); + + transformLine(trItem, targetMessage, sourceMessages, option, errors); + } + } catch (Exception e) { + throw new TransformException(e.getMessage(), null, targetMessage, sourceMessages, option, e); + } finally { + if (parser != null) + try { + ParserFactory.putParser(parser); + } catch(Exception e) {} + } + } + } + + protected void transformAtom(TransformItem transformItem, Message targetMessage, Message[] sourceMessages + , TransformOption option, List errors) + throws TransformerException { + + Parser parser = null; + try { + /** + * [1] parse expression + */ + parser = ParserFactory.getParser(); + try { + parser.parse(transformItem.getInstruction()); + } catch (Exception e) { + throw new TransformException("Error during parse instruction : " + e.getMessage(), + transformItem.getResultItemPath() + " = " + transformItem.getInstruction(), + targetMessage, + sourceMessages, + option, e); + } + + Object value = null; + String[] symbols = parser.getSymbols(); + + for (int i = 0; i < symbols.length; i++) { + for (int j = 0; j < sourceMessages.length; j++) { + try { + /** + * transformItem 에 default value 가 설정되어 있다면 + */ + if (symbols[i].equals("DEFAULT_VALUE") && (transformItem.getDefaultValue() != null)) { + value = transformItem.getDefaultValue(); + if (((String) value).startsWith("0x") || ((String) value).startsWith("0X")) { + value = HexUtil.hex2bytes((String) value); + } + } else { + try { + if (symbols[i].startsWith(sourceMessages[j].getName())) { + value = sourceMessages[j].getObject(symbols[i]); + } else { + if (sourceMessages.length == 1) { + value = sourceMessages[j].getObject(symbols[i]); + } else { + continue; + } + } + } catch(InvalidAccessException e) { + errors.add("Transformer | ITEM Error during conversion (source message) - Continue - " + e.getMessage()); + continue; + } + } + parser.addVariable(symbols[i], value); + break; + } catch (Exception e) { + errors.add("Transformer | " + e.getMessage() + " | " + transformItem.toString()); + } + } + } + + /** + * [2] check (evaluated) value + */ + if ((value == null) && (symbols.length > 0)) { + if(logger.isDebugEnabled()) { + String msg = "[WARN] Transformer | cannot assign null value to right-hand side of expression, " + + "check if item is composite(messsage or group) - " + transformItem.toString(); + logger.debug(msg); + MemoryLogger.txlog(msg); + } + return; + } + + Object result = null; + try { + result = parser.getValueAsObject(); + } catch (Exception e) { + throw new TransformException("Error during evaluate : " + e.getMessage(), + transformItem.getResultItemPath() + " = " + transformItem.getInstruction(), + targetMessage, + sourceMessages, + option, e); + } + + /** + * [3] set result to targetMessage + */ + try { + targetMessage.setObject(transformItem.getResultItemPath(), result); + } catch (Exception e) { + throw new TransformException( + "An error occurred when setting conversion data to result message. - " + e.getMessage(), + transformItem.getResultItemPath() + " = " + transformItem.getInstruction(), + targetMessage, + sourceMessages, + option, e); + } + } catch(Exception e) { + throw new TransformException("Error occurred during conversion : " + e.getMessage(), + transformItem.getResultItemPath() + " = " + + transformItem.getInstruction(), + targetMessage, + sourceMessages, + option, e); + } finally { + if (parser != null) + try { + ParserFactory.putParser(parser); + } catch(Exception e) {} + } + } + + /** + * instruction 이 simple 할 경우 (JEP Parsing 단계를 skip한다) + * 1. message...field | message...attribute 일 경우 + * 2. 상수일 경우 + * 3. default value 일 경우 + */ + protected void transformAtomWithoutParsing(TransformItem transformItem, Message targetMessage, Message[] sourceMessages + , TransformOption option, List errors) + throws TransformerException { + String instruction = transformItem.getInstruction().trim(); + Object value = null; + boolean findSource = true; + for (int j = 0; j < sourceMessages.length; j++) { + try { + /** + * transformItem 에 default value 가 설정되어 있다면 + */ + if (instruction.equals("DEFAULT_VALUE") && (transformItem.getDefaultValue() != null)) { + value = transformItem.getDefaultValue(); + if (((String) value).startsWith("0x") || ((String) value).startsWith("0X")) { + value = HexUtil.hex2bytes((String) value); + } + } else { + try { + if (instruction.startsWith(sourceMessages[j].getName())) { + value = sourceMessages[j].getObject(instruction); + } else { + if (sourceMessages.length == 1) { + value = sourceMessages[j].getObject(instruction); + } else { + continue; + } + } + } catch(InvalidAccessException e) { + e.printStackTrace(); + errors.add("Transformer] ITEM Error during conversion (source message access) - continue- " + e.getMessage()); + value =""; + findSource = false; + continue; + } + } + break; + } catch (Exception e) { + if(logger.isWarnEnabled()) { + logger.warn("[Transformer] " + e.getMessage() + + " | Expression : " + transformItem.getResultItemPath() + + " = " + transformItem.getInstruction()); + } + } + } + + try { + // FIX-ME : 소스메시지를 찾은 경우에만 설정하도록 함 + if(findSource) targetMessage.setObject(transformItem.getResultItemPath(), value); + } catch (Exception e) { + throw new TransformException( + "An error occurred when setting conversion data to result message. - " + e.getMessage(), + transformItem.getResultItemPath() + " = " + transformItem.getInstruction(), + targetMessage, + sourceMessages, + option, e); + } + } + + private void checkValidSourceMessages(Transform transform, + Message[] messages) throws Exception { + if (messages == null) { + throw new Exception("Source Message is null."); + } + for (int i = 0; i < messages.length; i++) { + if (messages[i] == null) { + throw new Exception("Source Message["+i+"] is null."); + } + + Layout layout = transform.getSourceLayout(((Item) messages[i]).getName()); + + if (layout == null) { + throw new Exception("Source Message <" + ((Item) messages[i]).getName() + + ">is a message that is not defined in transform <" + transform.getName() + ">."); + } + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/ExecutionException.java b/src/main/java/com/eactive/eai/transformer/function/ExecutionException.java new file mode 100644 index 0000000..77c574b --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/ExecutionException.java @@ -0,0 +1,27 @@ +package com.eactive.eai.transformer.function; + +public class ExecutionException extends Exception { + private Object[] parameters; + + public ExecutionException(String message, Object[] parameters) { + this(message, parameters, null); + } + + public ExecutionException(String message, Object[] parameters, + Throwable cause) { + super(message, cause); + this.parameters = parameters; + } + + public boolean hasParameters() { + return parameters != null; + } + + public int getParameterLength() { + return parameters.length; + } + + public Object[] getParameters() { + return parameters; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/Function.java b/src/main/java/com/eactive/eai/transformer/function/Function.java new file mode 100644 index 0000000..135236b --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/Function.java @@ -0,0 +1,12 @@ +package com.eactive.eai.transformer.function; + + +public interface Function { + public static final int TYPE_BUILTIN = 2300; + public static final int TYPE_PRIMITIVE = 2301; + public static final int TYPE_GENERIC = 2302; + public static final int TYPE_CONVERT = 2303; + public static final int TYPE_USERDEFINED = 2304; + + public Object execute(Object[] parameters) throws ExecutionException; +} diff --git a/src/main/java/com/eactive/eai/transformer/function/FunctionDefinition.java b/src/main/java/com/eactive/eai/transformer/function/FunctionDefinition.java new file mode 100644 index 0000000..28e11ae --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/FunctionDefinition.java @@ -0,0 +1,98 @@ +package com.eactive.eai.transformer.function; + +import java.util.ArrayList; +import java.util.List; + +import com.eactive.eai.transformer.dao.LoadingUnit; + +public class FunctionDefinition extends LoadingUnit { + private static final long serialVersionUID = 1L; + + private String name; + private String description; + private int returnTypeId; + private int functionTypeId; + private String functionClass; + private List parameterList; + + public FunctionDefinition() { + parameterList = new ArrayList<>(); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getReturnTypeId() { + return returnTypeId; + } + + public void setReturnTypeId(int returnTypeId) { + this.returnTypeId = returnTypeId; + } + + public int getFunctionTypeId() { + return functionTypeId; + } + + public void setFunctionTypeId(int functionTypeId) { + this.functionTypeId = functionTypeId; + } + + public String getFunctionClass() { + return functionClass; + } + + public void setFunctionClass(String functionClass) { + this.functionClass = functionClass; + } + + public List getParameterList() { + return parameterList; + } + + public void addParameter(ParameterDefinition parameter) { + parameterList.add(parameter); + } + + public int getParameterCount() { + return parameterList.size(); + } + + public ParameterDefinition getParameter(int index) { + return parameterList.get(index); + } + + public ParameterDefinition removeParameter(int index) { + return parameterList.remove(index); + } + + public void setParameterList(List parameterList) { + this.parameterList = parameterList; + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("FunctionDefinition[ name=").append(name); + sb.append(", description=").append(description); + sb.append(", returnTypeId=").append(returnTypeId); + sb.append(", functionTypeId=").append(functionTypeId); + sb.append(", functionClass=").append(functionClass); + sb.append(", parameterList=").append(parameterList); + sb.append(" ]"); + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/FunctionManager.java b/src/main/java/com/eactive/eai/transformer/function/FunctionManager.java new file mode 100644 index 0000000..600b82a --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/FunctionManager.java @@ -0,0 +1,134 @@ +package com.eactive.eai.transformer.function; + +import java.util.Arrays; +import java.util.Iterator; +import java.util.Map; +import java.util.TreeMap; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.eactive.eai.common.lifecycle.Lifecycle; +import com.eactive.eai.common.lifecycle.LifecycleException; +import com.eactive.eai.common.lifecycle.LifecycleListener; +import com.eactive.eai.common.lifecycle.LifecycleSupport; +import com.eactive.eai.common.util.ApplicationContextProvider; +import com.eactive.eai.transformer.dao.FunctionDao; +import com.eactive.eai.transformer.util.Logger; +import com.eactive.eai.transformer.util.MemoryLogger; + +@Component +public class FunctionManager implements Lifecycle { + + protected static Logger logger = Logger.getLogger("transformer"); + private Map functionMap; + private LifecycleSupport lifecycleSupport = null; + private boolean started; + + @Autowired + private FunctionDao dao; + + private FunctionManager() { + functionMap = new TreeMap<>(); + lifecycleSupport = new LifecycleSupport(this); + } + + public static FunctionManager getInstance() { + return ApplicationContextProvider.getContext().getBean(FunctionManager.class); + } + + public synchronized void reload() { + init(); + if (logger.isDebugEnabled()) { + logger.debug("FunctionManager | reloaded all functions"); + } + } + + public synchronized void reload(String functionName) { + FunctionDefinition functionDefinition = dao.findFunctionByName(functionName); + functionMap.put(functionName, functionDefinition); + if (logger.isDebugEnabled()) { + logger.debug("FunctionManager | reloaded function - " + functionName); + } + } + + private void clear() { + functionMap.clear(); + } + + public FunctionDefinition getFunctionDefinition(String name) { + return functionMap.get(name); + } + + public void remove(String functionName) { + functionMap.remove(functionName); + } + + private void init() { + functionMap = dao.load(); + + logger.info("FunctionManager | all functions are initialized"); + MemoryLogger.txlog("FunctionManager | all functions are initialized"); + } + + public void init(Map functionMap) { + this.functionMap = functionMap; + } + + public void addLifecycleListener(LifecycleListener listener) { + lifecycleSupport.addLifecycleListener(listener); + } + + public LifecycleListener[] findLifecycleListeners() { + return lifecycleSupport.findLifecycleListeners(); + } + + public void removeLifecycleListener(LifecycleListener listener) { + lifecycleSupport.removeLifecycleListener(listener); + } + + public synchronized void start() throws LifecycleException { + try { + init(); + this.started = true; + } catch (Exception e) { + throw new LifecycleException(e); + } + } + + public synchronized void stop() throws LifecycleException { + try { + clear(); + this.started = false; + } catch (Exception e) { + throw new LifecycleException(e); + } + } + + public boolean isStarted() { + return this.started; + } + + public String[] getAllFunctionNames() { + Iterator it = this.functionMap.keySet().iterator(); + String[] funcNames = new String[this.functionMap.size()]; + for (int i = 0; it.hasNext(); i++) { + funcNames[i] = it.next(); + } + Arrays.sort(funcNames); + return funcNames; + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("[FunctionManager] toString()"); + + Object[] keys = functionMap.keySet().toArray(); + + for (int i = 0; i < functionMap.size(); i++) { + sb.append("\n " + keys[i] + " : " + functionMap.get(keys[i])); + } + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/ParameterDefinition.java b/src/main/java/com/eactive/eai/transformer/function/ParameterDefinition.java new file mode 100644 index 0000000..6f96421 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/ParameterDefinition.java @@ -0,0 +1,65 @@ +package com.eactive.eai.transformer.function; + +import java.io.Serializable; + +public class ParameterDefinition implements Serializable { + + private static final long serialVersionUID = 1L; + + private String name; + private String functionName; + private String description; + private int typeId; + private int seqNo; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getFunctionName() { + return functionName; + } + + public void setFunctionName(String functionName) { + this.functionName = functionName; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getTypeId() { + return typeId; + } + + public void setTypeId(int typeId) { + this.typeId = typeId; + } + + public int getSeqNo() { + return seqNo; + } + + public void setSeqNo(int seqNo) { + this.seqNo = seqNo; + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("ParameterDefinition[ name=").append(name); + sb.append(", functionName=").append(functionName); + sb.append(", description=").append(description); + sb.append(", typeId=").append(typeId); + sb.append(", seqNo=").append(seqNo); + sb.append(" ]"); + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/convert/ADDPOINT.java b/src/main/java/com/eactive/eai/transformer/function/convert/ADDPOINT.java new file mode 100644 index 0000000..cc35162 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/convert/ADDPOINT.java @@ -0,0 +1,97 @@ +package com.eactive.eai.transformer.function.convert; + +import java.math.BigDecimal; +import java.util.Stack; + +import org.apache.commons.lang3.StringUtils; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + + +/** + * 소수점이 없는걸 있게 변환하는 함수. + * 입력 값은 byte[], 결과는 byte[]임. + */ +public class ADDPOINT extends PostfixMathCommand { + public ADDPOINT() { + numberOfParameters = 3; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object p3 = inStack.pop(); + + if (p3 instanceof Number) { + int _p3 = ((Number) p3).intValue(); + Object p2 = inStack.pop(); + + if (p2 instanceof Number) { + int _p2 = ((Number) p2).intValue(); + + Object p1 = inStack.pop(); + + if (p1 instanceof String) { + String str1 = (String) p1; + if ( str1.getBytes().length != _p2 + _p3) { + throw new ParseException("Invalid length"); + } + inStack.push(addPoint(str1,_p2,_p3)); + } else if (p1 instanceof byte[]) { + byte[] bytes = (byte[]) p1; + if ( bytes.length != _p2 + _p3) { + throw new ParseException("Invalid length"); + } + inStack.push(addPoint(new String(bytes),_p2,_p3)); + } else { + throw new ParseException("Invalid parameter type, p1 is not string/bytes"); + } + } else { + throw new ParseException("Invalid parameter type, p2 is not number"); + } + } else { + throw new ParseException("Invalid parameter type, p3 is not number"); + } + } + + public byte[] addPoint(String str , int plus , int minus) throws ParseException { + if (str == null || str.trim().length() ==0 ){ + return "0".getBytes(); + } + else { + str = str.trim(); + } + + if(str.length() > (plus+minus) ) { + throw new ParseException("data size overflow > "+(plus+minus) +", data="+ str); + } + //추가로직 juns 20211022 + if (minus==0) { + if (str.getBytes().length == plus){ + return str.getBytes(); + }else{ + return StringUtils.leftPad(str, plus).getBytes(); + } + } + byte[] result = new byte[plus + minus + 1]; + System.arraycopy(str.getBytes(), 0, result, 0, plus); + System.arraycopy(".".getBytes(), 0, result, plus, 1); + System.arraycopy(str.getBytes(), plus, result, plus + 1, minus); + return result; + } + public static void main(String[] args) throws Exception{ + ADDPOINT point = new ADDPOINT(); + System.out.println(new String(point.addPoint("000000000100",12,0))); + try{ + System.out.println(Long.valueOf(new String(point.addPoint("000000000100",12,0)))); + }catch(Exception e){ + e.printStackTrace(); + } + try{ + System.out.println(new BigDecimal(new String(point.addPoint("000000000100",12,0)))); + }catch(Exception e){ + e.printStackTrace(); + } + + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDIC.java b/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDIC.java new file mode 100644 index 0000000..64d63ef --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDIC.java @@ -0,0 +1,53 @@ +package com.eactive.eai.transformer.function.convert; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.transformer.util.IConv; + + +/** + * ASCII 값을 EBCDIC으로 변환하는 함수. + * 입력 값은 byte[], 결과는 byte[]임. + */ +public class ASCII2EBCDIC extends PostfixMathCommand { + public ASCII2EBCDIC() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object param = inStack.pop(); + + byte[] value = null; + + if (param instanceof String) { + value = ((String) param).getBytes(); + } else if (param instanceof byte[]) { + value = (byte[]) param; + } else if (param instanceof Double) { + if (((Double) param).doubleValue() == Math.round(((Double) param).doubleValue())) { + value = new Long(Math.round(((Double) param).doubleValue())).toString().getBytes(); + } else { + value =((Number) param).toString().getBytes(); + } + } else if (param instanceof Number) { + value = ((Number) param).toString().getBytes(); + } else if (param == null) { + inStack.push(new byte[0]); + return; + } else { + throw new ParseException("Function의 파라미터 인수가 byte[], String이 아닙니다. : " + param); + } + + try { + inStack.push(IConv.asciiToEBCDIC(new String(value))); + } catch (Exception e) { + //throw new ExecutionException(e.getMessage(), parameters, e); + throw new ParseException(e.getMessage(), e); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDIC9.java b/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDIC9.java new file mode 100644 index 0000000..df294c5 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDIC9.java @@ -0,0 +1,71 @@ +package com.eactive.eai.transformer.function.convert; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.transformer.function.util.CodeConversion; + + +/** + * ASCII 값을 EBCDIC으로 변환하는 함수. + * 입력 값은 byte[], 결과는 byte[]임. + */ +public class ASCII2EBCDIC9 extends PostfixMathCommand { + + public ASCII2EBCDIC9() { + numberOfParameters = 2; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object param2 = inStack.pop(); + int len = ((Number) param2).intValue(); + + Object param = inStack.pop(); + + byte[] value = null; + + if (param instanceof String) { + value = ((String) param).getBytes(); + } else if (param instanceof byte[]) { + value = (byte[]) param; + } else if (param instanceof Double) { + if (((Double) param).doubleValue() == Math.round(((Double) param).doubleValue())) { + value = new Long(Math.round(((Double) param).doubleValue())).toString().getBytes(); + } else { + value =((Number) param).toString().getBytes(); + } + } else if (param instanceof Number) { + value = ((Number) param).toString().getBytes(); + } else if (param == null) { +// inStack.push(null); +// return; + value = new byte[0]; + } else { + throw new ParseException("Function의 파라미터 인수가 byte[], String이 아닙니다. : " + param); + } + + try { + byte[] buff = null; + + if(value.length > 0) { + buff = CodeConversion.ascToSE9(value, len); + } + else { + buff = CodeConversion.appendHostZero(value, len); + } +// if(len!=buff.length) { +// System.out.println("########################"+value+"=>"+new String(buff)); +// } + inStack.push(buff); + } catch (Exception e) { + //throw new ExecutionException(e.getMessage(), parameters, e); + throw new ParseException(e.getMessage(), e); + } + + + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDICM.java b/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDICM.java new file mode 100644 index 0000000..d028b2b --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDICM.java @@ -0,0 +1,70 @@ +package com.eactive.eai.transformer.function.convert; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.transformer.function.util.CodeConversion; + + +/** + * ASCII 값을 EBCDIC으로 변환하는 함수. + * 입력 값은 byte[], 결과는 byte[]임. + */ +public class ASCII2EBCDICM extends PostfixMathCommand { + public ASCII2EBCDICM() { + numberOfParameters = 2; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object param2 = inStack.pop(); + int len = ((Number) param2).intValue(); + + Object param = inStack.pop(); + + byte[] value = null; + + if (param instanceof String) { + value = ((String) param).getBytes(); + } else if (param instanceof byte[]) { + value = (byte[]) param; + } else if (param instanceof Double) { + if (((Double) param).doubleValue() == Math.round(((Double) param).doubleValue())) { + value = new Long(Math.round(((Double) param).doubleValue())).toString().getBytes(); + } else { + value =((Number) param).toString().getBytes(); + } + } else if (param instanceof Number) { + value = ((Number) param).toString().getBytes(); + } else if (param == null) { +// inStack.push(null); +// return; + value = new byte[0]; + } else { + throw new ParseException("Function의 파라미터 인수가 byte[], String이 아닙니다. : " + param); + } + + try { + value = CodeConversion.simpleToSeal(value); + + byte[] buff = null; + + if(value.length > 0) { + buff = CodeConversion.ascToSE(value, len); + } + else { + buff = CodeConversion.appendHostSpace(value, len); + } + +// if(len!=buff.length) +// System.out.println("######################## ["+new String(value)+"] => ["+new String(buff)+"]"); + inStack.push(buff); + } catch (Exception e) { + //throw new ExecutionException(e.getMessage(), parameters, e); + throw new ParseException(e.getMessage(), e); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDICNOSOSI.java b/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDICNOSOSI.java new file mode 100644 index 0000000..4d8c52e --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDICNOSOSI.java @@ -0,0 +1,50 @@ +package com.eactive.eai.transformer.function.convert; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.transformer.util.IConv; + + +/** + * 전각 ASCII 값을 SO-SI없는 EBCDIC(Graphic)으로 변환하는 함수. + * 입력 값은 byte[], 결과는 byte[]임. + */ +public class ASCII2EBCDICNOSOSI extends PostfixMathCommand { + public ASCII2EBCDICNOSOSI() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object param = inStack.pop(); + + byte[] value = null; + + if (param instanceof String) { + value = ((String) param).getBytes(); + } else if (param instanceof byte[]) { + value = (byte[]) param; + } else { + throw new ParseException("Function의 파라미터 인수가 byte[], String이 아닙니다. : " + param); + } + + try { + byte[] result = IConv.asciiToEBCDIC(new String(value)); + if( result.length == (value.length+2) ) { + byte[] result_nososi = new byte[value.length]; + System.arraycopy(result, 1, result_nososi, 0, result_nososi.length); + inStack.push(result_nososi); + } + else { + throw new Exception("Invalid source data, not Seal["+new String(value)+"]"); + } + } catch (Exception e) { + //throw new ExecutionException(e.getMessage(), parameters, e); + throw new ParseException(e.getMessage(), e); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDICNOSOSICDS.java b/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDICNOSOSICDS.java new file mode 100644 index 0000000..85150c4 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDICNOSOSICDS.java @@ -0,0 +1,69 @@ +package com.eactive.eai.transformer.function.convert; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.transformer.util.IConv; + + +/** + * 전각 ASCII 값을 SO-SI없는 EBCDIC(Graphic)으로 변환하는 함수. + * 입력 값은 byte[], 결과는 byte[]임. + * 2009.08.12 강길수 차장 요청 + * CDS업무을 위한 함수로 ASCII전체가 Space(0x20)인 경우 0x40으로 변환 + */ +public class ASCII2EBCDICNOSOSICDS extends PostfixMathCommand { + public ASCII2EBCDICNOSOSICDS() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object param = inStack.pop(); + + byte[] value = null; + + if (param instanceof String) { + value = ((String) param).getBytes(); + } else if (param instanceof byte[]) { + value = (byte[]) param; + } else { + throw new ParseException("Function의 파라미터 인수가 byte[], String이 아닙니다. : " + param); + } + + + try { + boolean isSpaceAll = true; + + for(int i=0; i 0) { + buff = CodeConversion.appendHostSpace(IConv.asciiToEBCDICNoSOSI( new String(value) ), len); + } + else { + buff = CodeConversion.appendHostSpace(value, len); + } + +// if(len!=buff.length) { +// System.out.println("########################"+value+"=>"+new String(buff)); +// } + inStack.push(buff); + } catch (Exception e) { + //throw new ExecutionException(e.getMessage(), parameters, e); + throw new ParseException(e.getMessage(), e); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDICX.java b/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDICX.java new file mode 100644 index 0000000..ff5d3d0 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/convert/ASCII2EBCDICX.java @@ -0,0 +1,69 @@ +package com.eactive.eai.transformer.function.convert; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.transformer.function.util.CodeConversion; + + +/** + * ASCII 값을 EBCDIC으로 변환하는 함수. + * 입력 값은 byte[], 결과는 byte[]임. + */ +public class ASCII2EBCDICX extends PostfixMathCommand { + public ASCII2EBCDICX() { + numberOfParameters = 2; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object param2 = inStack.pop(); + int len = ((Number) param2).intValue(); + + Object param = inStack.pop(); + + byte[] value = null; + + if (param instanceof String) { + value = ((String) param).getBytes(); + } else if (param instanceof byte[]) { + value = (byte[]) param; + } else if (param instanceof Double) { + if (((Double) param).doubleValue() == Math.round(((Double) param).doubleValue())) { + value = new Long(Math.round(((Double) param).doubleValue())).toString().getBytes(); + } else { + value =((Number) param).toString().getBytes(); + } + } else if (param instanceof Number) { + value = ((Number) param).toString().getBytes(); + } else if (param == null) { +// inStack.push(null); +// return; + value = new byte[0]; + } else { + throw new ParseException("Function의 파라미터 인수가 byte[], String이 아닙니다. : " + param); + } + + try { + byte[] buff = null; + + if(value.length > 0) { + buff = CodeConversion.ascToSE(value, len); + } + else { + buff = CodeConversion.appendHostSpace(value, len); + } + +// if(len!=buff.length) { +// System.out.println("########################"+value+"=>"+new String(buff)); +// } + inStack.push(buff); + } catch (Exception e) { + //throw new ExecutionException(e.getMessage(), parameters, e); + throw new ParseException(e.getMessage(), e); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/convert/ASCIIH2EBCDICH.java b/src/main/java/com/eactive/eai/transformer/function/convert/ASCIIH2EBCDICH.java new file mode 100644 index 0000000..3e78478 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/convert/ASCIIH2EBCDICH.java @@ -0,0 +1,55 @@ +package com.eactive.eai.transformer.function.convert; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.transformer.util.IConv; + + +/** + * ASCII 값을 EBCDIC HEXA 값으로 변환하는 함수. + * 입력 값은 byte[], 결과는 byte[]임. + */ +public class ASCIIH2EBCDICH extends PostfixMathCommand { + public ASCIIH2EBCDICH() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object param = inStack.pop(); + + byte[] value = null; + + if (param instanceof String) { + value = ((String) param).getBytes(); + } else if (param instanceof byte[]) { + value = (byte[]) param; + } else if (param instanceof Double) { + if (((Double) param).doubleValue() == Math.round(((Double) param).doubleValue())) { + value = new Long(Math.round(((Double) param).doubleValue())).toString().getBytes(); + } else { + value =((Number) param).toString().getBytes(); + } + } else if (param instanceof Number) { + value = ((Number) param).toString().getBytes(); + } else if (param == null) { +// inStack.push(null); +// return; + inStack.push(new byte[0]); + return; + } else { + throw new ParseException("Function의 파라미터 인수가 byte[]가 아닙니다. : " + param); + } + + try { + inStack.push(IConv.asciiHexaToEBCDICHexa(value)); + } catch (Exception e) { + //throw new ExecutionException(e.getMessage(), parameters, e); + throw new ParseException(e.getMessage(), e); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCII.java b/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCII.java new file mode 100644 index 0000000..e6912bb --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCII.java @@ -0,0 +1,53 @@ +package com.eactive.eai.transformer.function.convert; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.transformer.util.IConv; + + +/** + * EBCDIC 값을 ASCII으로 변환하는 함수 + * 입력 값은 byte[], 결과는 byte[]임. + */ +public class EBCDIC2ASCII extends PostfixMathCommand { + public EBCDIC2ASCII() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object param = inStack.pop(); + byte[] value = null; + try { + if (param instanceof String) { + value = ((String) param).getBytes(); + } else if (param instanceof byte[]) { + value = (byte[]) param; + } else if (param instanceof Double) { + if (((Double) param).doubleValue() == Math.round(((Double) param).doubleValue())) { + value = new Long(Math.round(((Double) param).doubleValue())).toString().getBytes(); + } else { + value =((Number) param).toString().getBytes(); + } + } else if (param instanceof Number) { + value = ((Number) param).toString().getBytes(); + } else if (param == null) { +// inStack.push(null); +// return; + inStack.push(new byte[0]); + return; + } else { + throw new ParseException("Function의 파라미터 인수가 byte[], String이 아닙니다. : " + param); + } + + inStack.push(IConv.ebcdicToASCII(value).getBytes()); + } catch (Exception e) { + //throw new ExecutionException(e.getMessage(), parameters, e); + throw new ParseException(e.getMessage(), e); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCIIEX.java b/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCIIEX.java new file mode 100644 index 0000000..91a44b8 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCIIEX.java @@ -0,0 +1,53 @@ +package com.eactive.eai.transformer.function.convert; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.transformer.util.IConv; + + +/** + * EBCDIC 값을 ASCII 확장으로 변환하는 함수 + * 입력 값은 byte[], 결과는 byte[]임. + */ +public class EBCDIC2ASCIIEX extends PostfixMathCommand { + public EBCDIC2ASCIIEX() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object param = inStack.pop(); + byte[] value = null; + try { + if (param instanceof String) { + value = ((String) param).getBytes(); + } else if (param instanceof byte[]) { + value = (byte[]) param; + } else if (param instanceof Double) { + if (((Double) param).doubleValue() == Math.round(((Double) param).doubleValue())) { + value = new Long(Math.round(((Double) param).doubleValue())).toString().getBytes(); + } else { + value =((Number) param).toString().getBytes(); + } + } else if (param instanceof Number) { + value = ((Number) param).toString().getBytes(); + } else if (param == null) { +// inStack.push(null); +// return; + inStack.push(new byte[0]); + return; + } else { + throw new ParseException("Function의 파라미터 인수가 byte[], String이 아닙니다. : " + param); + } + + inStack.push(IConv.ebcdicToASCIIEX(value).getBytes()); + } catch (Exception e) { + //throw new ExecutionException(e.getMessage(), parameters, e); + throw new ParseException(e.getMessage(), e); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCIIM.java b/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCIIM.java new file mode 100644 index 0000000..e76c9d2 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCIIM.java @@ -0,0 +1,54 @@ +package com.eactive.eai.transformer.function.convert; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.transformer.function.util.CodeConversion; + + +/** + * EBCDIC 값을 ASCII으로 변환하는 함수 + * 입력 값은 byte[], 결과는 byte[]임. + */ +public class EBCDIC2ASCIIM extends PostfixMathCommand { + public EBCDIC2ASCIIM() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object param = inStack.pop(); + byte[] value = null; + try { + if (param instanceof String) { + value = ((String) param).getBytes(); + } else if (param instanceof byte[]) { + value = (byte[]) param; + } else if (param instanceof Double) { + if (((Double) param).doubleValue() == Math.round(((Double) param).doubleValue())) { + value = new Long(Math.round(((Double) param).doubleValue())).toString().getBytes(); + } else { + value =((Number) param).toString().getBytes(); + } + } else if (param instanceof Number) { + value = ((Number) param).toString().getBytes(); + } else if (param == null) { +// inStack.push(null); +// return; + inStack.push(new byte[0]); + return; + } else { + throw new ParseException("Function의 파라미터 인수가 byte[], String이 아닙니다. : " + param); + } + + value = CodeConversion.seToAsc(value); + inStack.push(CodeConversion.sealToSimple(value)); + } catch (Exception e) { + //throw new ExecutionException(e.getMessage(), parameters, e); + throw new ParseException(e.getMessage(), e); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCIIMEX.java b/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCIIMEX.java new file mode 100644 index 0000000..f054dbe --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCIIMEX.java @@ -0,0 +1,55 @@ +package com.eactive.eai.transformer.function.convert; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.transformer.function.util.CodeConversion; +import com.eactive.eai.transformer.util.IConv; + + +/** + * EBCDIC 값을 ASCII으로 변환하는 함수 + * 입력 값은 byte[], 결과는 byte[]임. + */ +public class EBCDIC2ASCIIMEX extends PostfixMathCommand { + public EBCDIC2ASCIIMEX() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object param = inStack.pop(); + byte[] value = null; + try { + if (param instanceof String) { + value = ((String) param).getBytes(); + } else if (param instanceof byte[]) { + value = (byte[]) param; + } else if (param instanceof Double) { + if (((Double) param).doubleValue() == Math.round(((Double) param).doubleValue())) { + value = new Long(Math.round(((Double) param).doubleValue())).toString().getBytes(); + } else { + value =((Number) param).toString().getBytes(); + } + } else if (param instanceof Number) { + value = ((Number) param).toString().getBytes(); + } else if (param == null) { +// inStack.push(null); +// return; + inStack.push(new byte[0]); + return; + } else { + throw new ParseException("Function의 파라미터 인수가 byte[], String이 아닙니다. : " + param); + } + + value = IConv.ebcdicToASCIIEX(value).getBytes(); + inStack.push(CodeConversion.sealToSimple(value)); + } catch (Exception e) { + //throw new ExecutionException(e.getMessage(), parameters, e); + throw new ParseException(e.getMessage(), e); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCIINOSOSI.java b/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCIINOSOSI.java new file mode 100644 index 0000000..0eab95f --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCIINOSOSI.java @@ -0,0 +1,44 @@ +package com.eactive.eai.transformer.function.convert; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.transformer.util.IConv; + +/** + * SO-SI없는 EBCDIC(Graphic) 값을 전각 ASCII으로 변환하는 함수 + * 입력 값은 byte[], 결과는 byte[]임. + */ +public class EBCDIC2ASCIINOSOSI extends PostfixMathCommand { + public EBCDIC2ASCIINOSOSI() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object param = inStack.pop(); + byte[] value = null; + try { + if (param instanceof String) { + value = ((String) param).getBytes(); + } else if (param instanceof byte[]) { + value = (byte[]) param; + } else { + throw new ParseException("Function의 파라미터 인수가 byte[], String이 아닙니다. : " + param); + } + byte[] ebcdic = new byte[value.length + 2]; + + System.arraycopy(value, 0, ebcdic, 1, value.length); + ebcdic[0] = (byte)0x0E; + ebcdic[ebcdic.length-1] = (byte)0x0F; + + inStack.push( IConv.ebcdicToASCII(ebcdic) ); + } catch (Exception e) { + //throw new ExecutionException(e.getMessage(), parameters, e); + throw new ParseException(e.getMessage(), e); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCIINOSOSICDS.java b/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCIINOSOSICDS.java new file mode 100644 index 0000000..e00a7a0 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/convert/EBCDIC2ASCIINOSOSICDS.java @@ -0,0 +1,61 @@ +package com.eactive.eai.transformer.function.convert; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.transformer.util.IConv; + +/** + * SO-SI없는 EBCDIC(Graphic) 값을 전각 ASCII으로 변환하는 함수 + * 입력 값은 byte[], 결과는 byte[]임. + * 2009.08.12 강길수 차장 요청 + * CDS업무을 위한 함수로 EBCDIC전체가 Space(0x40)인 경우 0x20으로 변환 + */ +public class EBCDIC2ASCIINOSOSICDS extends PostfixMathCommand { + public EBCDIC2ASCIINOSOSICDS() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object param = inStack.pop(); + byte[] value = null; + + try { + if (param instanceof String) { + value = ((String) param).getBytes(); + } else if (param instanceof byte[]) { + value = (byte[]) param; + } else { + throw new ParseException("Function의 파라미터 인수가 byte[], String이 아닙니다. : " + param); + } + + boolean isSpaceAll = true; + + for(int i=0; i (plus+minus)) { + throw new ParseException("data size overflow integer part >"+(plus+minus) +", data="+ str); + } + } + else { + if(pointPos > plus) { + throw new ParseException("data size overflow integer part > "+plus +", data="+ str); + } + + if((str.length() - pointPos - 1) > minus) { + throw new ParseException("data size overflow decimal part > "+minus +", data="+ str); + } + } + + if (pointPos<0){ + nBody = str; + dBody = ""; + } + else { + nBody = str.substring(0,pointPos); + dBody = str.substring(pointPos+1); + } + + nBody = StringUtils.leftPad(nBody, plus, "0"); + dBody = StringUtils.rightPad(dBody, minus, "0"); + + if(isSigned) { + sb.append(signBit); + } + sb.append(nBody); + sb.append(dBody); + + return sb.toString().getBytes(); + } + + public static void main(String[] args) throws Exception{ + REMOVEPOINT point = new REMOVEPOINT(); + +// System.out.println(new String(point.addStack(new String("1.2"), 6, 2))); +// System.out.println(new String(point.addStack(new String("1.2"), 6, 0))); +// System.out.println(new String(point.addStack(new String("1.2"), 12, 2))); +// System.out.println(new String(point.addStack(new BigDecimal("1000000000000000000.2"), 20, 2))); + System.out.println(new String(point.addStack(new Double("1000000000000000.2"), 20, 2))); // 16 decimal digits available + System.out.println(new String(point.addStack(new Double("1.0000000000000002"), 1, 20))); // 16 decimal digits available + + } + /** + * 내부 테스트용 + * @param o + * @param n + * @param f + * @return + */ + protected byte[] addStack(Object o, int n, int f){ + Stack inStack = new Stack(); + + inStack.add(o); + inStack.add(n); + inStack.add(f); + try { + run(inStack); + } catch (ParseException e) { + + e.printStackTrace(); + return new byte[0]; + } + return (byte[])inStack.pop(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/convert/REMOVEPOINTS.java b/src/main/java/com/eactive/eai/transformer/function/convert/REMOVEPOINTS.java new file mode 100644 index 0000000..f3763be --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/convert/REMOVEPOINTS.java @@ -0,0 +1,152 @@ +package com.eactive.eai.transformer.function.convert; + +import java.math.BigDecimal; +import java.util.Stack; + +import org.apache.commons.lang3.StringUtils; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + + +/** + * 소수점이 있는걸 없게 변환하는 함수. + * 입력 값은 byte[], 결과는 byte[]임. + */ +public class REMOVEPOINTS extends PostfixMathCommand { + public REMOVEPOINTS() { + numberOfParameters = 3; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object p3 = inStack.pop(); + + if (p3 instanceof Number) { + int _p3 = ((Number) p3).intValue(); + Object p2 = inStack.pop(); + + if (p2 instanceof Number) { + int _p2 = ((Number) p2).intValue(); + + Object p1 = inStack.pop(); + + if (p1 instanceof String) { + String str1 = (String) p1; + inStack.push(removePointSigned(str1,_p2,_p3)); + } else if (p1 instanceof byte[]) { + byte[] bytes = (byte[]) p1; + inStack.push(removePointSigned(new String(bytes),_p2,_p3)); + } else if (p1 instanceof BigDecimal) { + String str1 = ((BigDecimal) p1).toPlainString(); + inStack.push(removePointSigned(str1,_p2,_p3)); + } else if (p1 instanceof Number) { + String str1 = ((Number) p1).toString(); + inStack.push(removePointSigned(str1,_p2,_p3)); + } else { + throw new ParseException("Invalid parameter type, p1 is not string/bytes/double/number"); + } + } else { + throw new ParseException("Invalid parameter type, p2 is not number"); + } + } else { + throw new ParseException("Invalid parameter type, p3 is not number"); + } + } + + public byte[] removePointSigned(String str , int plus , int minus) throws ParseException { + boolean isSigned = false; + + StringBuilder sb = new StringBuilder(plus+minus); + String nBody = null; + String dBody = null; + + if (str == null || str.trim().length() ==0 ){ + return StringUtils.leftPad("0",plus+minus,"0").getBytes(); + } + else { + str = str.trim(); + } + + String signBit = str.substring(0,1); + if(signBit.equals("+") || signBit.equals("-")) { + isSigned = true; + str = str.substring(1); + } + else { + isSigned = false; + signBit = "+"; + } + + // 부호도 길이에 포함됨 + plus = plus -1; + + int pointPos = str.indexOf("."); + if (pointPos<0){ + if(str.length() > plus) { + throw new ParseException("data size overflow integer part >"+plus+", data="+ str); + } + } + else { + if(pointPos > plus) { + throw new ParseException("data size overflow integer part > "+plus +", data="+ str); + } + + if((str.length() - pointPos - 1) > minus) { +// System.out.println(str.length()); +// System.out.println(pointPos); + throw new ParseException("data size overflow decimal part > "+minus +", data="+ str); + } + } + + if (pointPos<0){ + nBody = str; + dBody = ""; + } + else { + nBody = str.substring(0,pointPos); + dBody = str.substring(pointPos+1); + } + + nBody = StringUtils.leftPad(nBody, plus, "0"); + dBody = StringUtils.rightPad(dBody, minus, "0"); + + sb.append(signBit); + sb.append(nBody); + sb.append(dBody); + + return sb.toString().getBytes(); + } + public static void main(String[] args) throws Exception{ + REMOVEPOINTS point = new REMOVEPOINTS(); + + System.out.println(new String(point.addStack(new String("-1.2"), 6, 2))); + System.out.println(new String(point.addStack(new String("-1.2"), 6, 0))); + System.out.println(new String(point.addStack(new String("-1.2"), 12, 2))); + System.out.println(new String(point.addStack(new BigDecimal("-1000000000000000000.2"), 20, 2))); + System.out.println(new String(point.addStack(new Double("-1000000000000000000.2"), 20, 2))); + + } + /** + * 내부 테스트용 + * @param o + * @param n + * @param f + * @return + */ + protected byte[] addStack(Object o, int n, int f){ + Stack inStack = new Stack(); + + inStack.add(o); + inStack.add(n); + inStack.add(f); + try { + run(inStack); + } catch (ParseException e) { + + e.printStackTrace(); + return new byte[0]; + } + return (byte[])inStack.pop(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/convert/Space2Zero.java b/src/main/java/com/eactive/eai/transformer/function/convert/Space2Zero.java new file mode 100644 index 0000000..ec9688e --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/convert/Space2Zero.java @@ -0,0 +1,45 @@ +package com.eactive.eai.transformer.function.convert; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + + +/** + * 0x20값을 Space(0x30)으로 변환하는 함수. + * 입력 값은 byte[], 결과는 byte[]임. + */ +public class Space2Zero extends PostfixMathCommand { + public Space2Zero() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object param = inStack.pop(); + + byte[] value = null; + + if (param instanceof String) { + value = ((String) param).getBytes(); + } else if (param instanceof byte[]) { + value = (byte[]) param; + } else if (param == null) { + inStack.push(new byte[0]); + return; + } else { + throw new ParseException("Function의 파라미터 인수가 byte[], String이 아닙니다. : " + param); + } + + try { + for(int i=0; i>>8)); }; + private static int GetB2(int A){ return (int)(0x000000ff&((A)>>>16)); }; + private static int GetB3(int A){ return (int)(0x000000ff&((A)>>>24)); }; + private static void EndianChange(int dws[]) { dws[0] = (dws[0]>>>24) | (dws[0]<<24) | ((dws[0]<<8)&0x00ff0000)|((dws[0]>>>8)&0x0000ff00); }; + private static int EndianChange(int dws) { return (dws>>>24) | (dws<<24) | ((dws<<8)&0x00ff0000)|((dws>>>8)&0x0000ff00); }; + + /* Round Function */ + private static void SeedRound(int L0[], int L1[], int R0[], int R1[], int K[]) + { + int T0, T1; + long T00=0, T11=0; + T0 = R0[0] ^ K[0]; + T1 = R1[0] ^ K[1]; + T1 ^= T0; + + T00 = (T0<0) ? (long)(T0 & 0x7fffffff)|(long)(0x80000000) : (long)(T0); + T1 = SS0[GetB0(T1)] ^ SS1[GetB1(T1)] ^ SS2[GetB2(T1)] ^ SS3[GetB3(T1)]; + T11 = (T1<0) ? (long)(T1 & 0x7fffffff)|(long)(0x80000000) : (long)(T1); + T00 += T11; + T0 = SS0[GetB0((int)T00)] ^ SS1[GetB1((int)T00)] ^ SS2[GetB2((int)T00)] ^ SS3[GetB3((int)T00)]; + T00 = (T0<0) ? (long)(T0 & 0x7fffffff)|(long)(0x80000000) : (long)(T0); + T11 += T00; + T1 = SS0[GetB0((int)T11)] ^ SS1[GetB1((int)T11)] ^ SS2[GetB2((int)T11)] ^ SS3[GetB3((int)T11)]; + T11 = (T1<0) ? (long)(T1 & 0x7fffffff)|(long)(0x80000000) : (long)(T1); + T00 += T11; + L0[0] ^= (int)T00; L1[0] ^= (int)T11; // return L0, L1 + }; + + /* Encrypt */ + public static void SeedEncrypt(byte pbData[], int pdwRoundKey[], byte outData[]) + { + int L0[] = new int[1]; int L1[] = new int[1]; + int R0[] = new int[1]; int R1[] = new int[1]; + L0[0] = 0x0; L1[0] = 0x0; R0[0] = 0x0; R1[0] = 0x0; + int K[] = new int[2]; + int nCount = 0; + + L0[0] = ((int)pbData[0]&0x000000ff); + L0[0] = ((L0[0])<<8)^((int)pbData[1]&0x000000ff); + L0[0] = ((L0[0])<<8)^((int)pbData[2]&0x000000ff); + L0[0] = ((L0[0])<<8)^((int)pbData[3]&0x000000ff); + + L1[0] = ((int)pbData[4]&0x000000ff); + L1[0] = ((L1[0])<<8)^((int)pbData[5]&0x000000ff); + L1[0] = ((L1[0])<<8)^((int)pbData[6]&0x000000ff); + L1[0] = ((L1[0])<<8)^((int)pbData[7]&0x000000ff); + + R0[0] = ((int)pbData[8]&0x000000ff); + R0[0] = ((R0[0])<<8)^((int)pbData[9]&0x000000ff); + R0[0] = ((R0[0])<<8)^((int)pbData[10]&0x000000ff); + R0[0] = ((R0[0])<<8)^((int)pbData[11]&0x000000ff); + + R1[0] = ((int)pbData[12]&0x000000ff); + R1[0] = ((R1[0])<<8)^((int)pbData[13]&0x000000ff); + R1[0] = ((R1[0])<<8)^((int)pbData[14]&0x000000ff); + R1[0] = ((R1[0])<<8)^((int)pbData[15]&0x000000ff); + + + if (!ENDIAN) {EndianChange(L0); EndianChange(L1); EndianChange(R0); EndianChange(R1);}; + + K[0] = pdwRoundKey[nCount++]; K[1] = pdwRoundKey[nCount++]; + SeedRound(L0, L1, R0, R1, K); /* 1 */ + + K[0] = pdwRoundKey[nCount++]; K[1] = pdwRoundKey[nCount++]; + SeedRound(R0, R1, L0, L1, K); /* 2 */ + K[0] = pdwRoundKey[nCount++]; K[1] = pdwRoundKey[nCount++]; + SeedRound(L0, L1, R0, R1, K); /* 3 */ + K[0] = pdwRoundKey[nCount++]; K[1] = pdwRoundKey[nCount++]; + SeedRound(R0, R1, L0, L1, K); /* 4 */ + K[0] = pdwRoundKey[nCount++]; K[1] = pdwRoundKey[nCount++]; + SeedRound(L0, L1, R0, R1, K); /* 5 */ + K[0] = pdwRoundKey[nCount++]; K[1] = pdwRoundKey[nCount++]; + SeedRound(R0, R1, L0, L1, K); /* 6 */ + K[0] = pdwRoundKey[nCount++]; K[1] = pdwRoundKey[nCount++]; + SeedRound(L0, L1, R0, R1, K); /* 7 */ + K[0] = pdwRoundKey[nCount++]; K[1] = pdwRoundKey[nCount++]; + SeedRound(R0, R1, L0, L1, K); /* 8 */ + K[0] = pdwRoundKey[nCount++]; K[1] = pdwRoundKey[nCount++]; + SeedRound(L0, L1, R0, R1, K); /* 9 */ + K[0] = pdwRoundKey[nCount++]; K[1] = pdwRoundKey[nCount++]; + SeedRound(R0, R1, L0, L1, K); /* 10 */ + K[0] = pdwRoundKey[nCount++]; K[1] = pdwRoundKey[nCount++]; + SeedRound(L0, L1, R0, R1, K); /* 11 */ + K[0] = pdwRoundKey[nCount++]; K[1] = pdwRoundKey[nCount++]; + SeedRound(R0, R1, L0, L1, K); /* 12 */ + + if (NoRounds == 16) + { + K[0] = pdwRoundKey[nCount++]; K[1] = pdwRoundKey[nCount++]; + SeedRound(L0, L1, R0, R1, K); /* 13 */ + K[0] = pdwRoundKey[nCount++]; K[1] = pdwRoundKey[nCount++]; + SeedRound(R0, R1, L0, L1, K); /* 14 */ + K[0] = pdwRoundKey[nCount++]; K[1] = pdwRoundKey[nCount++]; + SeedRound(L0, L1, R0, R1, K); /* 15 */ + K[0] = pdwRoundKey[nCount++]; K[1] = pdwRoundKey[nCount++]; + SeedRound(R0, R1, L0, L1, K); /* 16 */ + } + + if (!ENDIAN) {EndianChange(L0); EndianChange(L1); EndianChange(R0); EndianChange(R1);}; + + for (int i=0; i<4; i++) + { + outData[i ] = (byte)(((R0[0])>>>(8*(3-i)))&0xff); + outData[4+i ] = (byte)(((R1[0])>>>(8*(3-i)))&0xff); + outData[8+i ] = (byte)(((L0[0])>>>(8*(3-i)))&0xff); + outData[12+i] = (byte)(((L1[0])>>>(8*(3-i)))&0xff); + } + } + + /* Decrypt */ + /* same as encrypt, except that round keys are applied in reverse order. */ + public static void SeedDecrypt(byte pbData[], int pdwRoundKey[], byte outData[]) + { + int L0[] = new int[1]; int L1[] = new int[1]; + int R0[] = new int[1]; int R1[] = new int[1]; + int K[] = new int[2]; + L0[0] = 0x0; L1[0] = 0x0; R0[0] = 0x0; R1[0] = 0x0; + int nCount = 31; + + L0[0] = ((int)pbData[0]&0x000000ff); + L0[0] = ((L0[0])<<8)^((int)pbData[1]&0x000000ff); + L0[0] = ((L0[0])<<8)^((int)pbData[2]&0x000000ff); + L0[0] = ((L0[0])<<8)^((int)pbData[3]&0x000000ff); + + L1[0] = ((int)pbData[4]&0x000000ff); + L1[0] = ((L1[0])<<8)^((int)pbData[5]&0x000000ff); + L1[0] = ((L1[0])<<8)^((int)pbData[6]&0x000000ff); + L1[0] = ((L1[0])<<8)^((int)pbData[7]&0x000000ff); + + R0[0] = ((int)pbData[8]&0x000000ff); + R0[0] = ((R0[0])<<8)^((int)pbData[9]&0x000000ff); + R0[0] = ((R0[0])<<8)^((int)pbData[10]&0x000000ff); + R0[0] = ((R0[0])<<8)^((int)pbData[11]&0x000000ff); + + R1[0] = ((int)pbData[12]&0x000000ff); + R1[0] = ((R1[0])<<8)^((int)pbData[13]&0x000000ff); + R1[0] = ((R1[0])<<8)^((int)pbData[14]&0x000000ff); + R1[0] = ((R1[0])<<8)^((int)pbData[15]&0x000000ff); + + + if (!ENDIAN) {EndianChange(L0); EndianChange(L1); EndianChange(R0); EndianChange(R1);}; + + if (NoRounds == 16) + { + K[1] = pdwRoundKey[nCount--]; K[0] = pdwRoundKey[nCount--]; + SeedRound(L0, L1, R0, R1, K); /* 1 */ + K[1] = pdwRoundKey[nCount--]; K[0] = pdwRoundKey[nCount--]; + SeedRound(R0, R1, L0, L1, K); /* 2 */ + K[1] = pdwRoundKey[nCount--]; K[0] = pdwRoundKey[nCount--]; + SeedRound(L0, L1, R0, R1, K); /* 3 */ + K[1] = pdwRoundKey[nCount--]; K[0] = pdwRoundKey[nCount--]; + SeedRound(R0, R1, L0, L1, K); /* 4 */ + } + K[1] = pdwRoundKey[nCount--]; K[0] = pdwRoundKey[nCount--]; + SeedRound(L0, L1, R0, R1, K); /* 5 */ + K[1] = pdwRoundKey[nCount--]; K[0] = pdwRoundKey[nCount--]; + SeedRound(R0, R1, L0, L1, K); /* 6 */ + K[1] = pdwRoundKey[nCount--]; K[0] = pdwRoundKey[nCount--]; + SeedRound(L0, L1, R0, R1, K); /* 7 */ + K[1] = pdwRoundKey[nCount--]; K[0] = pdwRoundKey[nCount--]; + SeedRound(R0, R1, L0, L1, K); /* 8 */ + K[1] = pdwRoundKey[nCount--]; K[0] = pdwRoundKey[nCount--]; + SeedRound(L0, L1, R0, R1, K); /* 9 */ + K[1] = pdwRoundKey[nCount--]; K[0] = pdwRoundKey[nCount--]; + SeedRound(R0, R1, L0, L1, K); /* 10 */ + K[1] = pdwRoundKey[nCount--]; K[0] = pdwRoundKey[nCount--]; + SeedRound(L0, L1, R0, R1, K); /* 11 */ + K[1] = pdwRoundKey[nCount--]; K[0] = pdwRoundKey[nCount--]; + SeedRound(R0, R1, L0, L1, K); /* 12 */ + K[1] = pdwRoundKey[nCount--]; K[0] = pdwRoundKey[nCount--]; + SeedRound(L0, L1, R0, R1, K); /* 13 */ + K[1] = pdwRoundKey[nCount--]; K[0] = pdwRoundKey[nCount--]; + SeedRound(R0, R1, L0, L1, K); /* 14 */ + K[1] = pdwRoundKey[nCount--]; K[0] = pdwRoundKey[nCount--]; + SeedRound(L0, L1, R0, R1, K); /* 15 */ + K[1] = pdwRoundKey[nCount--]; K[0] = pdwRoundKey[nCount]; + SeedRound(R0, R1, L0, L1, K); /* 16 */ + + if (!ENDIAN) {EndianChange(L0); EndianChange(L1); EndianChange(R0); EndianChange(R1);}; + + + + for (int i=0; i<4; i++) + { + outData[i ] = (byte)(((R0[0])>>>(8*(3-i)))&0xff); + outData[4+i ] = (byte)(((R1[0])>>>(8*(3-i)))&0xff); + outData[8+i ] = (byte)(((L0[0])>>>(8*(3-i)))&0xff); + outData[12+i] = (byte)(((L1[0])>>>(8*(3-i)))&0xff); + } + } + + private static void EncRoundKeyUpdate0(int K[], int A[], int B[], int C[], int D[], int Z) + { + int T0; + int T00, T11; + T0 = A[0]; + A[0] = (A[0]>>>8) ^ (B[0]<<24); + B[0] = (B[0]>>>8) ^ (T0<<24); + T00 = (int)A[0] + (int)C[0] - (int)KC[Z]; + T11 = (int)B[0] + (int)KC[Z] - (int)D[0]; + K[0] = SS0[GetB0((int)T00)] ^ SS1[GetB1((int)T00)] ^ SS2[GetB2((int)T00)] ^ SS3[GetB3((int)T00)]; + K[1] = SS0[GetB0((int)T11)] ^ SS1[GetB1((int)T11)] ^ SS2[GetB2((int)T11)] ^ SS3[GetB3((int)T11)]; + } + + private static void EncRoundKeyUpdate1(int K[], int A[], int B[], int C[], int D[], int Z) + { + int T0; + int T00, T11; + T0 = C[0]; + C[0] = (C[0]<<8) ^ (D[0]>>>24); + D[0] = (D[0]<<8) ^ (T0>>>24); + T00 = (int)A[0] + (int)C[0] - (int)KC[Z]; + T11 = (int)B[0] + (int)KC[Z] - (int)D[0]; + K[0] = SS0[GetB0((int)T00)] ^ SS1[GetB1((int)T00)] ^ SS2[GetB2((int)T00)] ^ SS3[GetB3((int)T00)]; + K[1] = SS0[GetB0((int)T11)] ^ SS1[GetB1((int)T11)] ^ SS2[GetB2((int)T11)] ^ SS3[GetB3((int)T11)]; + } + + public static void SeedEncRoundKey(int pdwRoundKey[], byte pbUserKey[]) + { + int A[] = new int[1]; + int B[] = new int[1]; + int C[] = new int[1]; + int D[] = new int[1]; + int K[] = new int[2]; + int T0, T1; + int nCount = 2; + + A[0] = ((int)pbUserKey[0]&0x000000ff); + A[0] = (A[0]<<8)^((int)pbUserKey[1]&0x000000ff); + A[0] = (A[0]<<8)^((int)pbUserKey[2]&0x000000ff); + A[0] = (A[0]<<8)^((int)pbUserKey[3]&0x000000ff); + + B[0] = ((int)pbUserKey[4]&0x000000ff); + B[0] = (B[0]<<8)^((int)pbUserKey[5]&0x000000ff); + B[0] = (B[0]<<8)^((int)pbUserKey[6]&0x000000ff); + B[0] = (B[0]<<8)^((int)pbUserKey[7]&0x000000ff); + + C[0] = ((int)pbUserKey[8]&0x000000ff); + C[0] = (C[0]<<8)^((int)pbUserKey[9]&0x000000ff); + C[0] = (C[0]<<8)^((int)pbUserKey[10]&0x000000ff); + C[0] = (C[0]<<8)^((int)pbUserKey[11]&0x000000ff); + + D[0] = ((int)pbUserKey[12]&0x000000ff); + D[0] = (D[0]<<8)^((int)pbUserKey[13]&0x000000ff); + D[0] = (D[0]<<8)^((int)pbUserKey[14]&0x000000ff); + D[0] = (D[0]<<8)^((int)pbUserKey[15]&0x000000ff); + + if (!ENDIAN) {A[0]=EndianChange(A[0]); B[0]=EndianChange(B[0]); C[0]=EndianChange(C[0]); D[0]=EndianChange(D[0]);}; + + T0 = (int)A[0] + (int)C[0] - (int)KC[0]; + T1 = (int)B[0] - (int)D[0] + (int)KC[0]; + + pdwRoundKey[0] = SS0[GetB0((int)T0)] ^ SS1[GetB1((int)T0)] ^ SS2[GetB2((int)T0)] ^ SS3[GetB3((int)T0)]; + pdwRoundKey[1] = SS0[GetB0((int)T1)] ^ SS1[GetB1((int)T1)] ^ SS2[GetB2((int)T1)] ^ SS3[GetB3((int)T1)]; + + EncRoundKeyUpdate0(K, A, B, C, D, 1 ); + pdwRoundKey[nCount++] = K[0]; pdwRoundKey[nCount++] = K[1]; + + EncRoundKeyUpdate1(K, A, B, C, D, 2 ); + pdwRoundKey[nCount++] = K[0]; pdwRoundKey[nCount++] = K[1]; + + EncRoundKeyUpdate0(K, A, B, C, D, 3 ); + pdwRoundKey[nCount++] = K[0]; pdwRoundKey[nCount++] = K[1]; + + EncRoundKeyUpdate1(K, A, B, C, D, 4 ); + pdwRoundKey[nCount++] = K[0]; pdwRoundKey[nCount++] = K[1]; + + EncRoundKeyUpdate0(K, A, B, C, D, 5 ); + pdwRoundKey[nCount++] = K[0]; pdwRoundKey[nCount++] = K[1]; + + EncRoundKeyUpdate1(K, A, B, C, D, 6 ); + pdwRoundKey[nCount++] = K[0]; pdwRoundKey[nCount++] = K[1]; + + EncRoundKeyUpdate0(K, A, B, C, D, 7 ); + pdwRoundKey[nCount++] = K[0]; pdwRoundKey[nCount++] = K[1]; + + EncRoundKeyUpdate1(K, A, B, C, D, 8 ); + pdwRoundKey[nCount++] = K[0]; pdwRoundKey[nCount++] = K[1]; + + EncRoundKeyUpdate0(K, A, B, C, D, 9 ); + pdwRoundKey[nCount++] = K[0]; pdwRoundKey[nCount++] = K[1]; + + EncRoundKeyUpdate1(K, A, B, C, D, 10); + pdwRoundKey[nCount++] = K[0]; pdwRoundKey[nCount++] = K[1]; + + EncRoundKeyUpdate0(K, A, B, C, D, 11); + pdwRoundKey[nCount++] = K[0]; pdwRoundKey[nCount++] = K[1]; + + if (NoRounds == 16) + { + EncRoundKeyUpdate1(K, A, B, C, D, 12); + pdwRoundKey[nCount++] = K[0]; pdwRoundKey[nCount++] = K[1]; + + EncRoundKeyUpdate0(K, A, B, C, D, 13); + pdwRoundKey[nCount++] = K[0]; pdwRoundKey[nCount++] = K[1]; + + EncRoundKeyUpdate1(K, A, B, C, D, 14); + pdwRoundKey[nCount++] = K[0]; pdwRoundKey[nCount++] = K[1]; + + EncRoundKeyUpdate0(K, A, B, C, D, 15); + pdwRoundKey[nCount++] = K[0]; pdwRoundKey[nCount++] = K[1]; + } + } + + + public static byte[] encrypt(byte[] bytes) { + return bytes; + } + + + public static byte[] decrypt(byte[] bytes) { + return bytes; + } + + +// public static void main(String[] args) throws Exception { +// int pdwRoundKey[] = new int[32]; +// byte pbUserKey[] = {(byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, +// (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00, (byte)0x00}; +// byte pbData[] = {(byte)0x00, (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x04, (byte)0x05, (byte)0x06, (byte)0x07, +// (byte)0x08, (byte)0x09, (byte)0x0A, (byte)0x0B, (byte)0x0C, (byte)0x0D, (byte)0x0E, (byte)0x0F}; +// +// byte pbCipher[] = new byte[16]; +// byte pbPlain[] = new byte[16]; +// +// System.out.print("[ Test SEED reference code ]" + "\n"); +// System.out.print("\n\n"); +// +// pbData = "1234567890123456".getBytes(); +// +// /** +// * round key +// */ +// SeedEncRoundKey(pdwRoundKey, pbUserKey); +// +// /** +// * encrypt +// */ +// SeedEncrypt(pbData, pdwRoundKey, pbCipher); +// +// System.out.println("[ Test Encrypt mode ] ##################################"); +// System.out.println("Key : " + CommonLib.hexDump(pbUserKey)); +// System.out.println("Plaintext : " + CommonLib.hexDump(pbData)); +// System.out.println("Ciphertext : " + CommonLib.hexDump(pbCipher)); +// +// /** +// * decrypt +// */ +// SeedDecrypt(pbCipher, pdwRoundKey, pbPlain); +// +// System.out.println("[ Test Decrypt mode ] ##################################"); +// System.out.println("Key : " + CommonLib.hexDump(pbUserKey)); +// System.out.println("Ciphertext : " + CommonLib.hexDump(pbCipher)); +// System.out.println("Plaintext : " + CommonLib.hexDump(pbPlain)); +// } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/crypto/SeedDecrypt.java b/src/main/java/com/eactive/eai/transformer/function/crypto/SeedDecrypt.java new file mode 100644 index 0000000..d310a03 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/crypto/SeedDecrypt.java @@ -0,0 +1,47 @@ +package com.eactive.eai.transformer.function.crypto; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + + +public class SeedDecrypt extends PostfixMathCommand { + public SeedDecrypt() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object param = inStack.pop(); + + byte[] value = null; + + if (param instanceof String) { + value = ((String) param).getBytes(); + } else if (param instanceof byte[]) { + value = (byte[]) param; + } else if (param instanceof Double) { + if (((Double) param).doubleValue() == Math.round(((Double) param).doubleValue())) { + value = new Long(Math.round(((Double) param).doubleValue())).toString().getBytes(); + } else { + value =((Number) param).toString().getBytes(); + } + } else if (param instanceof Number) { + value = ((Number) param).toString().getBytes(); + } else if (param == null) { + inStack.push(null); + return; + } else { + throw new ParseException("Function의 파라미터 인수가 byte[] 또는 String이 아닙니다. : " + param); + } + + try { + inStack.push(value); + } catch (Exception e) { + //throw new ExecutionException(e.getMessage(), parameters, e); + throw new ParseException(e.getMessage(), e); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/eactive/eai/transformer/function/crypto/SeedEncrypt.java b/src/main/java/com/eactive/eai/transformer/function/crypto/SeedEncrypt.java new file mode 100644 index 0000000..f98beae --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/crypto/SeedEncrypt.java @@ -0,0 +1,49 @@ +package com.eactive.eai.transformer.function.crypto; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +//import com.eactive.eai.adapter.socket2.protocol.egseed.handshake.EgseedCodec; + + +public class SeedEncrypt extends PostfixMathCommand { + public SeedEncrypt() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object param = inStack.pop(); + + byte[] value = null; + + if (param instanceof String) { + value = ((String) param).getBytes(); + } else if (param instanceof byte[]) { + value = (byte[]) param; + } else if (param instanceof Double) { + if (((Double) param).doubleValue() == Math.round(((Double) param).doubleValue())) { + value = new Long(Math.round(((Double) param).doubleValue())).toString().getBytes(); + } else { + value =((Number) param).toString().getBytes(); + } + } else if (param instanceof Number) { + value = ((Number) param).toString().getBytes(); + } else if (param == null) { + inStack.push(null); + return; + } else { + throw new ParseException("Function의 파라미터 인수가 byte[] 또는 String이 아닙니다. : " + param); + } + + try { + inStack.push(value); + } catch (Exception e) { + //throw new ExecutionException(e.getMessage(), parameters, e); + throw new ParseException(e.getMessage(), e); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/eactive/eai/transformer/function/crypto/XdbDecrypt.java b/src/main/java/com/eactive/eai/transformer/function/crypto/XdbDecrypt.java new file mode 100644 index 0000000..54ebb52 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/crypto/XdbDecrypt.java @@ -0,0 +1,38 @@ +package com.eactive.eai.transformer.function.crypto; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.transformer.function.util.XdbCrypto; + + +public class XdbDecrypt extends PostfixMathCommand { + public XdbDecrypt() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object text = inStack.pop(); + + /** + * check text + */ + if (!(text instanceof String)) + throw new ParseException("1st parameter (data) must be String data type"); + + String value = (String)text; + + /** + * encrypt + */ + try { + inStack.push(XdbCrypto.getInstance().decrypt(value)); + } catch (Exception e) { + throw new ParseException(e.getMessage(), e); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/eactive/eai/transformer/function/crypto/XdbEncrypt.java b/src/main/java/com/eactive/eai/transformer/function/crypto/XdbEncrypt.java new file mode 100644 index 0000000..a39e7cb --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/crypto/XdbEncrypt.java @@ -0,0 +1,38 @@ +package com.eactive.eai.transformer.function.crypto; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.transformer.function.util.XdbCrypto; + + +public class XdbEncrypt extends PostfixMathCommand { + public XdbEncrypt() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object text = inStack.pop(); + + /** + * check text + */ + if (!(text instanceof String)) + throw new ParseException("1st parameter (data) must be String data type"); + + String value = (String)text; + + /** + * encrypt + */ + try { + inStack.push(XdbCrypto.getInstance().encrypt(value)); + } catch (Exception e) { + throw new ParseException(e.getMessage(), e); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/BytesToDouble.java b/src/main/java/com/eactive/eai/transformer/function/generic/BytesToDouble.java new file mode 100644 index 0000000..0bd4d58 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/BytesToDouble.java @@ -0,0 +1,39 @@ +package com.eactive.eai.transformer.function.generic; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +public class BytesToDouble extends PostfixMathCommand { + public BytesToDouble() { + numberOfParameters = 1; + } + +// Byte 문자를 Double 형 Binary(8Bytes) 로 + public void run(Stack inStack) throws ParseException { + + checkStack(inStack); + + Object p1 = inStack.pop(); + + double d = 0; + + if (p1 instanceof byte[]) { + d = Double.parseDouble(new String((byte[]) p1)); + } else if (p1 instanceof String) { + d = Double.parseDouble((String) p1); + } else if (p1 instanceof Number) { + d = ((Number) p1).doubleValue(); + } else { + throw new ParseException("Invalid parameter type"); + } + + ByteBuffer buff = ByteBuffer.allocate(Double.SIZE / 8); + buff.putDouble(d); + buff.order(ByteOrder.BIG_ENDIAN); + inStack.push(buff.array()); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/BytesToInteger.java b/src/main/java/com/eactive/eai/transformer/function/generic/BytesToInteger.java new file mode 100644 index 0000000..1d9190f --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/BytesToInteger.java @@ -0,0 +1,40 @@ +package com.eactive.eai.transformer.function.generic; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +public class BytesToInteger extends PostfixMathCommand { + public BytesToInteger() { + numberOfParameters = 1; + } + +// Byte 문자를 Integer 형 Binary(4Bytes)로 + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object p1 = inStack.pop(); + + int i = 0; + + if (p1 instanceof byte[]) { + i = Integer.parseInt(new String((byte[]) p1)); + } else if (p1 instanceof String) { + i = Integer.parseInt((String) p1); + } else if (p1 instanceof Number) { + i = ((Number) p1).intValue(); + } else { + throw new ParseException("Invalid parameter type"); + } + + byte[] bytes = new byte[] { + (byte)(i >>> 24), + (byte)(i >>> 16), + (byte)(i >>> 8), + (byte) i}; + + inStack.push(bytes); + + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/BytesToShort.java b/src/main/java/com/eactive/eai/transformer/function/generic/BytesToShort.java new file mode 100644 index 0000000..781604a --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/BytesToShort.java @@ -0,0 +1,36 @@ +package com.eactive.eai.transformer.function.generic; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +public class BytesToShort extends PostfixMathCommand { + public BytesToShort() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object p1 = inStack.pop(); + + int i = 0; + + if (p1 instanceof byte[]) { + i = Integer.parseInt(new String((byte[]) p1)); + } else if (p1 instanceof String) { + i = Integer.parseInt((String) p1); + } else if (p1 instanceof Number) { + i = ((Number) p1).intValue(); + } else { + throw new ParseException("Invalid parameter type"); + } + + byte[] bytes = new byte[] { + (byte)(i >>> 8), + (byte) i}; + + inStack.push(bytes); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/DoubleToBytes.java b/src/main/java/com/eactive/eai/transformer/function/generic/DoubleToBytes.java new file mode 100644 index 0000000..efbab26 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/DoubleToBytes.java @@ -0,0 +1,47 @@ +package com.eactive.eai.transformer.function.generic; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +public class DoubleToBytes extends PostfixMathCommand { + public DoubleToBytes() { + numberOfParameters = 1; + } + +// Double 형 Binary(8Bytes) 를 Byte 문자 로 + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object p1 = inStack.pop(); + + + if (p1 instanceof byte[]) { + byte[] bytes = (byte[]) p1; + + if (bytes.length != 8) + throw new ParseException("'DoubleToBytes' function argument must be 8 bytes binary"); + + final int size = Double.SIZE / 8; + ByteBuffer buff = ByteBuffer.allocate(size); + final byte[] newBytes = new byte[size]; + for (int i = 0; i < size; i++) { + if (i + bytes.length < size) { + newBytes[i] = (byte) 0x00; + } + else { + newBytes[i] = bytes[i + bytes.length - size]; + } + } + buff = ByteBuffer.wrap(newBytes); + buff.order(ByteOrder.BIG_ENDIAN); + + inStack.push(new Double(buff.getDouble())); + } else { + throw new ParseException("Invalid parameter type"); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/IntegerToBytes.java b/src/main/java/com/eactive/eai/transformer/function/generic/IntegerToBytes.java new file mode 100644 index 0000000..95520de --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/IntegerToBytes.java @@ -0,0 +1,36 @@ +package com.eactive.eai.transformer.function.generic; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +public class IntegerToBytes extends PostfixMathCommand { + public IntegerToBytes() { + numberOfParameters = 1; + } +// Integer 형 Binary(4Bytes) 를 Byte 문자 로 + public void run(Stack inStack) throws ParseException { + + checkStack(inStack); + + Object p1 = inStack.pop(); + + + if (p1 instanceof byte[]) { + byte[] bytes = (byte[]) p1; + + if (bytes.length != 4) + throw new ParseException("'IntegerToBytes' function argument must be 4 bytes binary"); + + int i = (bytes[0] << 24) + + ((bytes[1] & 0xFF) << 16) + + ((bytes[2] & 0xFF) << 8) + + (bytes[3] & 0xFF); + + inStack.push(new Integer(i)); + } else { + throw new ParseException("Invalid parameter type"); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/LeftPad.java b/src/main/java/com/eactive/eai/transformer/function/generic/LeftPad.java new file mode 100644 index 0000000..a962794 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/LeftPad.java @@ -0,0 +1,44 @@ +package com.eactive.eai.transformer.function.generic; + +import java.util.Stack; + +import org.apache.commons.lang3.StringUtils; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + + +public class LeftPad extends PostfixMathCommand { + public LeftPad() { + numberOfParameters = 3; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object p3 = inStack.pop(); + + if (p3 instanceof String) { + String str3 = (String) p3; + Object p2 = inStack.pop(); + + if (p2 instanceof Number) { + int _p2 = ((Number) p2).intValue(); + Object p1 = inStack.pop(); + + if (p1 instanceof String) { + String str1 = (String) p1; + inStack.push(StringUtils.leftPad(str1, _p2, str3)); + } else if (p1 instanceof byte[]) { + byte[] bytes = (byte[]) p1; + inStack.push(StringUtils.leftPad(new String(bytes), _p2, str3)); + } else { + throw new ParseException("Invalid parameter type, p1 is not string/bytes"); + } + } else { + throw new ParseException("Invalid parameter type, p2 is not number"); + } + } else { + throw new ParseException("Invalid parameter type, p3 is not string"); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/LeftTrim.java b/src/main/java/com/eactive/eai/transformer/function/generic/LeftTrim.java new file mode 100644 index 0000000..5828f30 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/LeftTrim.java @@ -0,0 +1,37 @@ +package com.eactive.eai.transformer.function.generic; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.common.util.StringUtil; + + +public class LeftTrim extends PostfixMathCommand { + public LeftTrim() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object p1 = inStack.pop(); + + if (p1 instanceof byte[]) { + inStack.push(StringUtil.leftTrim(new String((byte[]) p1))); + } else if (p1 instanceof String) { + inStack.push(StringUtil.leftTrim(((String) p1))); + } else { + throw new ParseException("Invalid parameter type, p1 is not string/bytes"); + } + } + public static void main(String[] args) throws Exception{ + LeftTrim t = new LeftTrim(); + Stack inStack = new Stack(); + inStack.add(" abd "); + t.run(inStack); + String data = (String)inStack.pop(); + System.out.println("["+data+"]"); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/Length.java b/src/main/java/com/eactive/eai/transformer/function/generic/Length.java new file mode 100644 index 0000000..b0c29a3 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/Length.java @@ -0,0 +1,29 @@ +package com.eactive.eai.transformer.function.generic; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + + +public class Length extends PostfixMathCommand { + public Length() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object p1 = inStack.pop(); + + if (p1 instanceof String) { + String str = (String) p1; + inStack.push(new Integer(str.length())); + } else if (p1 instanceof byte[]) { +// byte[] str = (byte[]) p1; + inStack.push(((byte[]) p1).length); + } else { + throw new ParseException("Invalid parameter type"); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/RightPad.java b/src/main/java/com/eactive/eai/transformer/function/generic/RightPad.java new file mode 100644 index 0000000..5b92b6b --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/RightPad.java @@ -0,0 +1,44 @@ +package com.eactive.eai.transformer.function.generic; + +import java.util.Stack; + +import org.apache.commons.lang3.StringUtils; +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + + +public class RightPad extends PostfixMathCommand { + public RightPad() { + numberOfParameters = 3; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object p3 = inStack.pop(); + + if (p3 instanceof String) { + String str3 = (String) p3; + Object p2 = inStack.pop(); + + if (p2 instanceof Number) { + int _p2 = ((Number) p2).intValue(); + Object p1 = inStack.pop(); + + if (p1 instanceof String) { + String str1 = (String) p1; + inStack.push(StringUtils.rightPad(str1, _p2, str3)); + } else if (p1 instanceof byte[]) { + byte[] bytes = (byte[]) p1; + inStack.push(StringUtils.rightPad(new String(bytes), _p2, str3)); + } else { + throw new ParseException("Invalid parameter type, p1 is not string/bytes"); + } + } else { + throw new ParseException("Invalid parameter type, p2 is not number"); + } + } else { + throw new ParseException("Invalid parameter type, p3 is not string"); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/RightTrim.java b/src/main/java/com/eactive/eai/transformer/function/generic/RightTrim.java new file mode 100644 index 0000000..75653a1 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/RightTrim.java @@ -0,0 +1,37 @@ +package com.eactive.eai.transformer.function.generic; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +import com.eactive.eai.common.util.StringUtil; + + +public class RightTrim extends PostfixMathCommand { + public RightTrim() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object p1 = inStack.pop(); + + if (p1 instanceof byte[]) { + inStack.push(StringUtil.rightTrim(new String((byte[]) p1))); + } else if (p1 instanceof String) { + inStack.push(StringUtil.rightTrim(((String) p1))); + } else { + throw new ParseException("Invalid parameter type, p1 is not string/bytes"); + } + } + public static void main(String[] args) throws Exception{ + RightTrim t = new RightTrim(); + Stack inStack = new Stack(); + inStack.add(" abd "); + t.run(inStack); + String data = (String)inStack.pop(); + System.out.println("["+data+"]"); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/ShortToBytes.java b/src/main/java/com/eactive/eai/transformer/function/generic/ShortToBytes.java new file mode 100644 index 0000000..2376d5d --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/ShortToBytes.java @@ -0,0 +1,42 @@ +package com.eactive.eai.transformer.function.generic; + +import java.nio.ByteBuffer; +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +public class ShortToBytes extends PostfixMathCommand { + public ShortToBytes() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object p1 = inStack.pop(); + + + if (p1 instanceof byte[]) { + byte[] bytes = (byte[]) p1; + + if (bytes.length != 2) + throw new ParseException("'ShortToBytes' function argument must be 2 bytes binary"); + /* + int i = (((bytes[0] & 0xFF) << 8) + + (bytes[1] & 0xFF)); + inStack.push(new Integer(i)); + */ + + // 2010.02.12 + // unsigned -> signed ·Î ¼öÁ¤ÇÔ + ByteBuffer bb = ByteBuffer.allocate(2); + bb.put(bytes[0]); + bb.put(bytes[1]); + short shortVal = bb.getShort(0); + inStack.push(new Integer(shortVal)); + } else { + throw new ParseException("Invalid parameter type"); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/Substring.java b/src/main/java/com/eactive/eai/transformer/function/generic/Substring.java new file mode 100644 index 0000000..221555a --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/Substring.java @@ -0,0 +1,77 @@ +package com.eactive.eai.transformer.function.generic; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + + +public class Substring extends PostfixMathCommand { + public Substring() { + numberOfParameters = -1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + if (curNumberOfParameters == 3) { + Object p3 = inStack.pop(); + if (p3 instanceof Number) { + int _p3 = ((Number) p3).intValue(); + Object p2 = inStack.pop(); + if (p2 instanceof Number) { + int _p2 = ((Number) p2).intValue(); + Object p1 = inStack.pop(); + if (p1 instanceof String) { + String str = (String) p1; + + if (_p2 > _p3) { + throw new ParseException( + "invalid operation : substring(\"" + str + "\"" + + ", beginIndex=" + _p2 + + ", endIndex=" +_p3 + ") - endIndex must be greater than beginIndex"); + } + + inStack.push(str.substring(_p2, _p3)); + } else if (p1 instanceof byte[]) { + String str = new String((byte[]) p1); + + if (_p2 > _p3) { + throw new ParseException( + "Invalid Operation : substring(\"" + str + "\"," + + _p2 + "," + _p3 + ")"); + } + + inStack.push(str.substring(_p2, _p3)); + } else { + throw new ParseException("Invalid parameter type, p1 is not string/bytes"); + } + } else { + throw new ParseException("Invalid parameter type, p2 is not number"); + } + } else { + throw new ParseException("Invalid parameter type, p3 is number"); + } + } else if (curNumberOfParameters == 2) { + Object p2 = inStack.pop(); + if (p2 instanceof Number) { + int _p2 = ((Number) p2).intValue(); + Object p1 = inStack.pop(); + + if (p1 instanceof String) { + String str = (String) p1; + inStack.push(str.substring(_p2)); + } else if (p1 instanceof byte[]) { + String str = new String((byte[]) p1); + inStack.push(str.substring(_p2)); + } else { + throw new ParseException("Invalid parameter type, p1 is not string/bytes"); + } + } else { + throw new ParseException("Invalid parameter type, p2 is not number"); + } + } else { + throw new ParseException("invalid parameter count : " + curNumberOfParameters + " - parameter count must be 2 or 3"); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/ToBytes.java b/src/main/java/com/eactive/eai/transformer/function/generic/ToBytes.java new file mode 100644 index 0000000..ea228ab --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/ToBytes.java @@ -0,0 +1,35 @@ +package com.eactive.eai.transformer.function.generic; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + + +public class ToBytes extends PostfixMathCommand { + public ToBytes() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object p1 = inStack.pop(); + + if (p1 instanceof byte[]) { + inStack.push(p1); + } else if (p1 instanceof String) { + inStack.push(((String) p1).getBytes()); + } else if (p1 instanceof Double) { + if (((Double) p1).doubleValue() == Math.round(((Double) p1).doubleValue())) { + inStack.push(new Long(Math.round(((Double) p1).doubleValue())).toString().getBytes()); + } else { + inStack.push(((Number)p1).toString().getBytes()); + } + } else if (p1 instanceof Number) { + inStack.push(((Number)p1 ).toString().getBytes()); + } else { + throw new ParseException("Invalid parameter type ["+p1+"]"); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/ToDouble.java b/src/main/java/com/eactive/eai/transformer/function/generic/ToDouble.java new file mode 100644 index 0000000..a72908d --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/ToDouble.java @@ -0,0 +1,27 @@ +package com.eactive.eai.transformer.function.generic; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + + +public class ToDouble extends PostfixMathCommand { + public ToDouble() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object p1 = inStack.pop(); + + if (p1 instanceof byte[]) { + inStack.push(Double.valueOf(new String((byte[]) p1))); + } else if (p1 instanceof String) { + inStack.push(Double.valueOf((String) p1)); + } else { + throw new ParseException("Invalid parameter type, p1 is not string/bytes"); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/ToInteger.java b/src/main/java/com/eactive/eai/transformer/function/generic/ToInteger.java new file mode 100644 index 0000000..f9578e1 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/ToInteger.java @@ -0,0 +1,29 @@ +package com.eactive.eai.transformer.function.generic; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + + +public class ToInteger extends PostfixMathCommand { + public ToInteger() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object p1 = inStack.pop(); + + if (p1 instanceof byte[]) { + inStack.push(Integer.valueOf(new String((byte[]) p1))); + } else if (p1 instanceof String) { + inStack.push(Integer.valueOf((String) p1)); + } else if (p1 instanceof Number) { + inStack.push(((Number) p1).intValue()); + } else { + throw new ParseException("Invalid parameter type, p1 is not string/bytes/number"); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/ToString.java b/src/main/java/com/eactive/eai/transformer/function/generic/ToString.java new file mode 100644 index 0000000..1541efd --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/ToString.java @@ -0,0 +1,35 @@ +package com.eactive.eai.transformer.function.generic; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + + +public class ToString extends PostfixMathCommand { + public ToString() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object p1 = inStack.pop(); + + if (p1 instanceof String) { + inStack.push(p1); + } else if (p1 instanceof byte[]) { + inStack.push(new String((byte[]) p1)); + } else if (p1 instanceof Double) { + if (((Double) p1).doubleValue() == Math.round(((Double) p1).doubleValue())) { + inStack.push(new Long(Math.round(((Double) p1).doubleValue())).toString()); + } else { + inStack.push(((Number)p1).toString()); + } + } else if (p1 instanceof Number) { + inStack.push(((Number)p1).toString()); + } else { + throw new ParseException("Invalid parameter type ["+p1+"]"); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/generic/Trim.java b/src/main/java/com/eactive/eai/transformer/function/generic/Trim.java new file mode 100644 index 0000000..d7aaf58 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/generic/Trim.java @@ -0,0 +1,27 @@ +package com.eactive.eai.transformer.function.generic; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + + +public class Trim extends PostfixMathCommand { + public Trim() { + numberOfParameters = 1; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + Object p1 = inStack.pop(); + + if (p1 instanceof byte[]) { + inStack.push(new String((byte[]) p1).trim()); + } else if (p1 instanceof String) { + inStack.push(((String) p1).trim()); + } else { + throw new ParseException("Invalid parameter type, p1 is not string/bytes"); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/function/mapper/FunctionMapper.java b/src/main/java/com/eactive/eai/transformer/function/mapper/FunctionMapper.java new file mode 100644 index 0000000..85f6d53 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/mapper/FunctionMapper.java @@ -0,0 +1,29 @@ +package com.eactive.eai.transformer.function.mapper; + +import org.mapstruct.InheritInverseConfiguration; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +import com.eactive.eai.data.entity.onl.transformer.function.Function; +import com.eactive.eai.data.mapper.BaseMapperConfig; +import com.eactive.eai.data.mapper.GenericMapper; +import com.eactive.eai.data.mapper.StringTrimMapper; +import com.eactive.eai.transformer.function.FunctionDefinition; + +@Mapper(config = BaseMapperConfig.class, uses = { ParameterMapper.class }) +public interface FunctionMapper extends GenericMapper { + + @Mapping(source = "cnvsnfuntnname", target = "name") + @Mapping(source = "cnvsnfuntndesc", target = "description") + @Mapping(source = "cnvsnfuntnretunptrnidname", target = "returnTypeId") + @Mapping(source = "cnvsnfuntnptrnidname", target = "functionTypeId") + @Mapping(source = "cnvsnfuntnclsname", target = "functionClass", qualifiedBy = StringTrimMapper.class) + @Mapping(source = "parameters", target = "parameterList") + @Override + FunctionDefinition toVo(Function entity); + + @InheritInverseConfiguration + @Override + Function toEntity(FunctionDefinition vo); + +} diff --git a/src/main/java/com/eactive/eai/transformer/function/mapper/ParameterMapper.java b/src/main/java/com/eactive/eai/transformer/function/mapper/ParameterMapper.java new file mode 100644 index 0000000..d3245bb --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/mapper/ParameterMapper.java @@ -0,0 +1,27 @@ +package com.eactive.eai.transformer.function.mapper; + +import org.mapstruct.InheritInverseConfiguration; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.ReportingPolicy; + +import com.eactive.eai.data.entity.onl.transformer.function.Parameter; +import com.eactive.eai.data.mapper.GenericMapper; +import com.eactive.eai.transformer.function.ParameterDefinition; + +@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface ParameterMapper extends GenericMapper { + + @Mapping(source = "id.cnvsnfuntnname", target = "functionName") + @Mapping(source = "id.cnvsnfuntnparmname", target = "name") + @Mapping(source = "cnvsnfuntnparmdesc", target = "description") + @Mapping(source = "cnvsnfuntnparmptrnidname", target = "typeId") + @Mapping(source = "cnvsnfuntnparmserno", target = "seqNo") + @Override + ParameterDefinition toVo(Parameter entity); + + @InheritInverseConfiguration + @Override + Parameter toEntity(ParameterDefinition vo); + +} diff --git a/src/main/java/com/eactive/eai/transformer/function/util/CodeConversion.java b/src/main/java/com/eactive/eai/transformer/function/util/CodeConversion.java new file mode 100644 index 0000000..03a8690 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/function/util/CodeConversion.java @@ -0,0 +1,966 @@ +package com.eactive.eai.transformer.function.util; + +import java.math.BigInteger; + +import com.eactive.eai.transformer.util.IConv; + +public class CodeConversion +{ + +// public static void main(String[] args) { +// byte[] bytes = null; +// +// if(args.length < 2) { +// System.out.println("Usage : java CodeConversion [data] [cmd] "); +// System.out.println("COMMAND : COMP, COMP3, SE, GE "); +// System.out.println("Example : java CodeConversion 123 COMP "); +// return; +// } +// +// try { +// if( "COMP".equals(args[1]) ) { +// bytes = ascToComp(args[0]); +// +// System.out.println("HOST COMP[" + new String(bytes)+"]"); +// System.out.println("UNIX COMP[" + compToAsc(bytes)+"]"); +// } +// else if( "COMP3".equals(args[1]) ) { +// +// bytes = ascToComp3(args[0]); +// System.out.println("HOST COMP3[" + new String(bytes)+"]"); +// System.out.println("UNIX COMP3[" + comp3ToAsc(bytes)+"]"); +// } +// else if( "SE".equals(args[1]) ) { +// +// bytes = ascToSE(args[0].getBytes()); +// System.out.println("HOST SE[" + new String(bytes)+"]"); +// System.out.println("UNIX ASC[" + new String(seToAsc(bytes))+"]"); +// } +// else if( "GE".equals(args[1]) ) { +// // Graphic +// bytes = ascToGE(args[0].getBytes()); +// System.out.println("HOST GE[" + new String(bytes)+"]"); +// System.out.println("UNIX ASC[" + new String(geToAsc(bytes))+"]"); +// } +// else if( "ME".equals(args[1]) ) { +// // Mixed +// bytes = ascToSE(args[0].getBytes()); +// System.out.println("HOST ME[" + new String(bytes)+"]"); +// System.out.println("UNIX ASC[" + new String(meToAsc(bytes))+"]"); +// } +// +// byte[] sByte = args[0].getBytes(); +// System.out.println("[ Source Bytes ]"); +// for(int i=0; i< sByte.length; i++) { +// System.out.println("Byte["+i+"] = "+ printBit(sByte[i]) ); +// } +// +// System.out.println("[ Converted Bytes ]"); +// for(int i=0; i< bytes.length; i++) { +// System.out.println("Byte["+i+"] = "+ printBit(bytes[i]) ); +// } +// } +// catch(Exception e) { +// System.out.println(e.toString()); +// } +// } + + + public static String printBit(byte bt) { + String bitStr = ""; + for(int i=0; i<8; i++) { + if( (bt & (0x80 >> i )) != 0x00) bitStr +="1"; + else bitStr +="0"; + } + return bitStr; + } + + + public CodeConversion() { + super(); + } + + + //------------------------------------------------------------- + // Host COMP Type 과 ASCII 간의 변환 메소드 + // 예) PIC S9(4) USAGE COMP. + //------------------------------------------------------------- + // 9(1-4) 2Byte + // 9(5-9) 4Byte + /** + * String을 HOST COMP로 변환한다. + * + * @param src 숫자형식의 String + * + * @return byte[] COMP 형의 byte Array + * @exception Exception + */ + public static byte[] ascToComp(byte[] src) throws Exception { + return ascToComp(new String(src)); + } + + public static byte[] ascToComp(String src) throws Exception { + + byte[] comp = null; + + try { + if( "+".equals(src.substring(0,1)) ) src = src.substring(1); + + int sLen = src.length(); + + if(sLen > 9) { + throw new Exception("Maximun COMP Length Over["+src+"]"); + } + + int iKey = new Integer(src).intValue(); + + // System.out.println("HEX[0x"+ Integer.toHexString(iKey)+"]"); + + if(sLen < 5) { + int lower = iKey & 0xff; + int upper = iKey >> 8 & 0xff; + + comp = new byte[2]; + comp[0] = new Integer(upper).byteValue(); + comp[1] = new Integer(lower).byteValue(); + } + else { + int byte1 = iKey >> 24 & 0xffff; + int byte2 = iKey >> 16 & 0xffff; + int byte3 = iKey >> 8 & 0xffff; + int byte4 = iKey & 0xffff; + comp = new byte[4]; + comp[0] = new Integer(byte1).byteValue(); + comp[1] = new Integer(byte2).byteValue(); + comp[2] = new Integer(byte3).byteValue(); + comp[3] = new Integer(byte4).byteValue(); + + } + } catch(Exception e) { + throw new Exception(e.getMessage()); + } + return comp; + } + + + /** + * HOST COMP를 String으로 변환한다. + * + * @param data byte[] COMP 형의 byte Array + * + * @return src 숫자형식의 String + */ + + public static String compToAsc(byte[] data) { + BigInteger bint = new BigInteger(data); + return bint.toString(); + } + public static byte[] compToAscB(byte[] data) { + return (compToAsc(data)).getBytes(); + } + //------------------------------------------------------------- + // Host COMP-3 Type 과 ASCII 간의 변환 메소드 + // 예) PIC S9(15)V USAGE COMP-3. + //------------------------------------------------------------- + + /** + * Packed-Decimal을 숫자형식의 String으로 변환한다. + * + * @param src 숫자형식의 String으로 변환할 byte배열 + * + * @return String 숫자형식의 String + */ + public static String comp3ToAsc(byte[] src) { + + boolean isMinus = false; + StringBuffer sf = new StringBuffer(); + + int end = src.length; + + for (int i=0; i> 4 & 0x0f; + + if (i == end-1) { + sf.append(upper); + if (lower == COMP3_MINUS) { + isMinus = true; + } + } else { + sf.append((upper + "" + lower)); + } + } + + String str = sf.toString(); + + if (isMinus) { + str = "-" + str; + } + else { + str = "+" + str; + } + return str; + } + + public static byte[] comp3ToAscB(byte[] src) { + return (comp3ToAsc(src)).getBytes(); + } + /** + * String을 Packed-Decimal을 숫자형식으로 변환한다. + * + * @param src 숫자형식의 bytes + * + * @return bytes + * @exception Exception + */ + // 예 + // S9(5)V USAGE COMP-3. 일경우 + // UNIX 12345 -> 1/2 3/4 5/+ -> 0001/0010 0011/0100 0101/1111 + // UNIX +12345 -> 1/2 3/4 5/- -> 0001/0010 0011/0100 0101/1101 + // UNIX -12345 -> 1/2 3/4 5/- -> 0001/0010 0011/0100 0101/1101 + public static byte[] ascToComp3(byte[] src) throws Exception { + return ascToComp3(new String(src)); + } + + public static byte[] ascToComp3(String src) throws Exception { + int srcSize = src.length(); + int byteSize = 0; + int pos = 0; + String bit = ""; + byte sByte = COMP3_UNSIGN; + + bit = src.substring(0,1); + + if( "-".equals(bit) ) { + sByte = COMP3_MINUS; + byteSize = ((srcSize-1)/2)+1; + } + else if( "+".equals(bit) ) { + sByte = COMP3_PLUS; + byteSize = ((srcSize-1)/2)+1; + } + else { + byteSize = (srcSize/2)+1; + } + + byte[] comp3bytes = new byte[byteSize]; + + // byte 초기화 + for( int i=0; i<(byteSize-1); i++ ) comp3bytes[i] = 0x00; + + //----------------------------- + // 부호 설정 및 첫자리 처리 + //----------------------------- + bit = src.substring(srcSize-1); + pos = Integer.parseInt(bit); + + comp3bytes[byteSize-1] = COMP3_UBYTES[pos]; + comp3bytes[byteSize-1] = (byte)(comp3bytes[byteSize-1] | sByte); + + if(sByte == COMP3_UNSIGN) { + src = src.substring(0,srcSize-1); + } + else { + src = src.substring(1,srcSize-1); + } + + //----------------------------- + + srcSize = src.length(); + + int bPos = 0; + int cPos = byteSize-2; + + for( int i=0; i 0) { + for(int i = 0; i 0) { + for(int i = 0; i fixedLength) { + System.arraycopy(source, 0, sBytes, 0, fixedLength); + } + else { + System.arraycopy(source, 0, sBytes, 0, source.length); + for(int i = source.length; i < fixedLength; i++) { + sBytes[i] = U_SPACE; + } + } + return sBytes; + } + + /** + * EBCDIC byte를 특정 길이로 변환하며 여분은 SPACE로 채운다. + * + * @param source EBCDIC bytes[] + * @param fixedLength 요청 byte 길이 + * + * @return EBCDIC bytes[] + * @exception Exception + */ + public static byte[] appendHostSpace(byte[] source, int fixedLength) throws Exception { + + byte[] sBytes = new byte[fixedLength]; + + if(source.length > fixedLength) { + System.arraycopy(source, 0, sBytes, 0, fixedLength); + } + else { + System.arraycopy(source, 0, sBytes, 0, source.length); + for(int i = source.length; i < fixedLength; i++) { + sBytes[i] = H_SPACE; + } + } + return sBytes; + } + + /** + * ASCII byte를 특정 길이로 변환하며 여분은 SPACE로 채운다. + * + * @param source ASCII bytes[] + * @param fixedLength 요청 byte 길이 + * + * @return ASCII bytes[] + * @exception Exception + */ + public static byte[] appendAsciiSpace(byte[] source, int fixedLength) throws Exception { + + byte[] sBytes = new byte[fixedLength]; + + if(source.length > fixedLength) { + System.arraycopy(source, 0, sBytes, 0, fixedLength); + } + else { + System.arraycopy(source, 0, sBytes, 0, source.length); + for(int i = source.length; i < fixedLength; i++) { + sBytes[i] = U_SPACE; + } + } + return sBytes; + } + + /** + * ASCII를 Single EBCDIC로 변환한다.. + * + * @param source Single ASCII bytes[] + * + * @return Single EBCDIC bytes[] + * @exception Exception + */ + public static byte[] ascToSE(byte[] source) throws Exception { + String sStr = new String(source); + byte[] sBytes = null; + try { + //------------------------------------------------- + // 2007.03.07 : SUN BMT Version : 2007.05.09 적용 + //------------------------------------------------- + //sBytes = sStr.getBytes("cp933"); + sBytes = IConv.asciiToEBCDIC(sStr); + //------------------------------------------------- + + } + catch(Exception e) { + throw e; + } + return sBytes; + } + + /** + * ASCII를 특정 길이의 Single EBCDIC로 변환한다.. + * + * @param source Single ASCII bytes[] + * @param fixedLength ASCII byte 길이 + * + * @return Single EBCDIC bytes[] + * @exception Exception + */ + public static byte[] ascToSE(byte[] source, int fixedLength) throws Exception { + + byte[] tmpBytes = ascToSE(source); + return appendHostSpace(tmpBytes, fixedLength); + } + + /** + * ASCII를 특정 길이의 Single EBCDIC로 변환한다.. + * + * @param source Single ASCII bytes[] + * @param fixedLength ASCII byte 길이 + * + * @return Single EBCDIC bytes[] + * @exception Exception + */ + public static byte[] ascToSE9(byte[] source, int fixedLength) throws Exception { + + byte[] tmpBytes = ascToSE(source); + return appendHostZero(tmpBytes, fixedLength); + } + /** + * Single EBCDIC을 ASCII로 변환한다.. + * + * @param source Single EBCDIC bytes[] + * + * @return ASCII bytes[] + * @exception Exception + */ + public static byte[] seToAsc(byte[] source) throws Exception { + try { + //------------------------------------------------- + // 2007.03.07 : SUN BMT Version : 2007.05.09 적용 + //------------------------------------------------- + //String sStr = new String(source,"cp933"); + String sStr = IConv.ebcdicToASCII(source); + //------------------------------------------------- + return sStr.getBytes(); + } catch(Exception e) { + throw e; + } + } + + /** + * Single EBCDIC을 특정 길이의 ASCII로 변환한다.. + * + * @param source Single EBCDIC bytes[] + * @param fixedLength ASCII byte 길이 + * + * @return ASCII bytes[] + * @exception Exception + */ + public static byte[] seToAsc(byte[] source, int fixedLength) throws Exception { + byte[] tmpBytes = seToAsc(source); + return appendAsciiSpace(tmpBytes, fixedLength); + } + + /** + * ASCII(반자)를 Graphic EBCDIC로 변환한다.. + * + * @param source ASCII bytes[] + * + * @return Graphic bytes[] + * @exception Exception + */ + public static byte[] ascToGE(byte[] source) throws Exception { + + String sealSource = simpleToSeal(new String(source)); + byte[] sealBytes = sealSource.getBytes(); + byte[] seBytes = ascToSE(sealBytes); + + // SO-SI Length는 제외한다. + byte[] gBytes = new byte[seBytes.length - 2]; + System.arraycopy(seBytes, 1, gBytes, 0, gBytes.length); + return gBytes; + } + + /** + * Graphic EBCDIC을 ASCII(반자)로 변환한다.. + * + * @param source Graphic bytes[] + * + * @return ASCII bytes[] + * @exception Exception + */ + public static byte[] geToAsc(byte[] source) throws Exception { + + byte[] seBytes = new byte[source.length + 2]; + seBytes[0] = H_SO; + seBytes[seBytes.length-1] = H_SI; + + System.arraycopy(source, 0, seBytes, 1, seBytes.length - 2); + String sealString = new String(seToAsc(seBytes)); + String simpSource = sealToSimple(sealString); + return simpSource.getBytes(); + + } + + /** + * Mixed EBCDIC을 ASCII(반자)로 변환한다. + * SO-SI를 blank로 변환 + * 전자를 반자로 변환 + * @param source Graphic bytes[] + * + * @return ASCII bytes[] + * @exception Exception + */ + public static byte[] meToAsc(byte[] source) { + try { + byte[] seBytes = new byte[source.length * 2]; + int sPos = 0; + for(int i=0; i (totalLength+1)) { + throw new Exception("문자길이가 정의한 포맷길이("+totalLength+")보다 큽니다."); + } + + if(intLength < splitedNumber[0].length()) { + throw new Exception("정수부("+splitedNumber[0]+")의 길이가 정의한 포맷길이("+intLength+")보다 큽니다."); + } + // 소수점이 없음 + if(splitedNumber.length == 1) { + if(intLength >= decimalNumber.length) { + for(int i=0; i<(intLength-splitedNumber[0].length()); i++) { + formatString = formatString + "0"; + } + formatString = formatString + splitedNumber[0]; + for(int i=0; i 12.3 + * @param ebcdicNumber EBCDIC 숫자형문자 + * @param totalLength 전체길이 + * @param decimalLength 소수부의 길이 + * @return ASCII 소수점 문자 + */ + public static byte[] toUnixDecimalFormat(byte[] ebcdicNumber, int totalLength, int decimalLength) throws Exception{ + + String formatString = ""; + String s = IConv.ebcdicToASCII(ebcdicNumber); + + boolean isMinus = false; + + String ascNum = ""; + if( s.startsWith("-") ) { + ascNum = s.substring(1); + isMinus = true; + } + else if( s.startsWith("+") ) { + ascNum = s.substring(1); + } + else { + ascNum = s; + } + + // 부호처리 + int intLength = totalLength - decimalLength; + if(isMinus) { + intLength = intLength - 1; + } + + formatString = ascNum.substring(0,intLength); + formatString = formatString +"."; + formatString = formatString + ascNum.substring(intLength); + + // remove front padding zero + int pos = 0; + while(pos 0) { + formatString = formatString.substring(pos); + } + + // remove trail padding zero or point + pos = formatString.length() -1; + while(pos > 0) { + if(formatString.charAt(pos) != '0' && formatString.charAt(pos) != '.') break; + pos--; + } + if(pos < formatString.length()) { + formatString = formatString.substring(0, pos+1); + } + + if(isMinus) { + formatString = "-" + formatString; + } + + return formatString.getBytes(); + } + + /** + * 전자 숫자,영문자와 공백을 반자로 변환한다. + * + * @param seal 전자 String + * + * @return 반자 String + */ + public static byte[] sealToSimple(byte[] seal) { + String tmp=sealToSimple(new String(seal)); + return tmp.getBytes(); + } + + /** + * 반자 숫자,영문자와 공백을 전자로 변환한다. + * + * @param simple 반자 String + * + * @return 전자 String + */ + public static String simpleToSeal(String simple) { + + String seal = null; + + int sLength = simple.length(); + + char[] cArray = new char[sLength]; + simple.getChars(0, sLength, cArray, 0); + + for (int i = 0; i < sLength; i++) { + if (cArray[i] > 0x20 && cArray[i] <= 0x7e) { + cArray[i] += 0xfee0; + } + else if (cArray[i] == 0x20) { + cArray[i] = 0x3000; + } + } + seal = new String(cArray); + + return seal; + } + + + + /** + * 반자 숫자,영문자와 공백을 전자로 변환한다. + * + * @param simple 반자 String + * + * @return 전자 String + */ + public static byte[] simpleToSeal(byte[] seal) { + String tmp=simpleToSeal(new String(seal)); + return tmp.getBytes(); + } + + /** + * 반자 숫자,영문자와 공백을 전자로 변환한다. + * SO-SI 길이를 제외한 길이만큼 전자 SPACE를 패딩하거나 + * 전자길이만큼 잘라낸다. + * @param simple 반자 String + * @param length 전자변환 후의 전문길이 + * + * @return 전자 String + */ + public static String simpleToSeal(String simple, int length) { + + //------------------------------------------------ + // 전문길이를 계산한다. + //------------------------------------------------ + int sLength = simple.length(); + int slenfix = length / 2; + int diff = slenfix - sLength; + + if( diff < 0) { + simple = simple.substring(0, slenfix); + } + else if( diff > 0) { + StringBuffer sb = new StringBuffer(); + sb.append(simple); + for(int i=0; i childList; + protected Map childMap; + + protected Composite() { + super(); + childList = new ArrayList<>(); + childMap = new HashMap<>(); + } + + @Override + public int getLength() { + if (!isTop() && getIndex() == -1) + return 0; + + int sum = 0; + for (int i = 0; i < childList.size(); i++) { + Item item = (Item) childList.get(i); + if (item.getIndex() > -1) { + sum += item.getLength(); + } + } + return sum; + } + + + @Override + public List getChildList() { + return childList; + } + + @Override + public void addChild(Item item) { + Item lastItem = null; + + if (!childList.isEmpty()) { + lastItem = childList.get(childList.size() - 1); + } + + childList.add(item); + childMap.put(item.getName() + "[" + item.getIndex() + "]", item); + item.setParent(this); + + // Double Linked-List + if (lastItem != null) { + lastItem.setNext(item); + item.setPrev(lastItem); + } + } + + @Override + public void addChild(Item prev, Item item) { + int siblingIndex = childList.indexOf(prev); + Item next = prev.getNext(); + + childList.add(siblingIndex + 1, item); + childMap.put(item.getName() + "[" + item.getIndex() + "]", item); + item.setParent(this); + + prev.setNext(item); + item.setPrev(prev); + + if (next != null) { + item.setNext(next); + next.setPrev(item); + } + } + + @Override + public void removeChild(Item item) { + Item prev = item.getPrev(); + Item next = item.getNext(); + + childList.remove(item); + childMap.remove(item.getName() + "[" + item.getIndex() + "]"); + + if (prev != null) { + prev.setNext(next); + } + + if (next != null) { + next.setPrev(prev); + } + + item.setParent(null); + item.setPrev(null); + item.setNext(null); + } + + @Override + public void replaceChild(Item oldItem, Item newItem) { + int pos = childList.indexOf(oldItem); + Item prev = oldItem.getPrev(); + Item next = oldItem.getNext(); + + childList.remove(oldItem); + childList.add(pos, newItem); + childMap.put(oldItem.getName() + "[" + oldItem.getIndex() + "]", newItem); + newItem.setParent(this); + + if (prev != null) { + newItem.setPrev(newItem); + prev.setNext(newItem); + } + + if (next != null) { + newItem.setNext(next); + next.setPrev(newItem); + } + + /** + * properties + */ + newItem.setSeqNo(oldItem.getSeqNo()); + newItem.setDepth(oldItem.getDepth()); + newItem.setDescription(oldItem.getDescription()); + newItem.setDataTypeId(oldItem.getDataTypeId()); + newItem.setPath(oldItem.getPath()); + newItem.setLength(oldItem.getLength()); + newItem.setRefInfo(oldItem.getRefInfo()); + newItem.setMask(oldItem.getMask()); + newItem.setMaskLength(oldItem.getMaskLength()); + newItem.setMaskOffset(oldItem.getMaskOffset()); + newItem.setOccType(oldItem.getOccType()); + newItem.setOccMax(oldItem.getOccMax()); + newItem.setOccMin(oldItem.getOccMin()); + newItem.setOccRef(oldItem.getOccRef()); + } + + public Item getChild(int index) { + return childList.get(index); + } + + @Override + public int getChildCount() { + return childList.size(); + } + + @Override + public Item getChildByName(String name) { + return childMap.get(name); + } + + public void clearValue() { + for (int i = 0; i < childList.size(); i++) { + Item child = (Item) childList.get(i); + child.clearValue(); + } + } + + public Item findItemByPath(String path) { + for (int i = 0; i < childList.size(); i++) { + Item child = childList.get(i); + + if (child.getIndex() == -1) + continue; + + Item result = child.findItemByPath(path); + + if (result != null) { + return result; + } + } + return null; + } + + public void setDefaultValue(String defaultValue) { + // do nothing + } + + public void initDefaultValue() { + for (int i = 0; i < childList.size(); i++) { + Item child = childList.get(i); + child.initDefaultValue(); + } + } + + public void initDepth(int depth) { + setDepth(depth); + for (int i = 0; i < childList.size(); i++) { + Item child = childList.get(i); + child.initDepth(depth+1); + } + } + + public void initInclude() { + if (!isTop() && isMessage()) { + Message m = MessageFactory.getFactory().getMessage(name); + getParent().replaceChild(this, m); + LayoutManager.getManager().addDependency(getParent().getRoot().getName(), name); + + for (int i = 0; i < m.getChildList().size(); i++) { + (m.getChildList().get(i)).initInclude(); + } + } else { + for (int i = 0; i < childList.size(); i++) { + Item child = childList.get(i); + child.initInclude(); + } + } + } + + /** + * OccMin 설정 + * - min 갯수 만큼 sibling을 만든다. + * - group 또는 message일 경우 child 에도 recursive 하게 작업해 준다. + */ + public void initOccMin() { + /** + * [1] Top 일 경우 + * [2] Top 이 아닐 경우 + * 2.1. Group 이거나 + * 2.2. Include 된 Message 이거나 + */ + if (!isTop() && getIndex() == -1) { + int min = getOccMin(); + String itemPath = null; + Item clone = null; + + /** + * min 갯수 만큼 sibling(clone)을 만든다. + */ + for (int j = 0; j < min; j++) { + itemPath = normalizeFullName(getItemPath().substring(0, getItemPath().lastIndexOf('[')) + "[" + j + "]"); + clone = getTop().getOrCreateItem(itemPath); + + /** + * clone의 childList 에 recursive하게 작업해준다. + */ + List cList = clone.getChildList(); + + for (int i = 0; i < cList.size(); i++) { + Item child = cList.get(i); + child.initOccMin(); + } + } + } + + /** + * 모든 composite에 대해 - childList 에 recursive하게 작업해준다. + */ + for (int i = 0; i < childList.size(); i++) { + Item child = childList.get(i); + child.initOccMin(); + } + } + + public int initItemParentId(int seq, int parentId) { + int id = 1000 + (seq++); + setItemId(id); + setParentId(parentId); + + for (int i = 0; i < childList.size(); i++) { + Item child = childList.get(i); + seq = child.initItemParentId(seq, itemId); + } + + return seq; + } + + public boolean existMask() { + for (int i = 0; i < childList.size(); i++) { + Item child = childList.get(i); + if (child.existMask()) { + return true; + } + } + + return false; + } + + + protected Item getItem(String itemPath) { + /** + * leaf (FIELD | ATTRIBUTE) 일 경우, + * 또는 Group/Included Message를 Locating하는 경우 + */ + if (itemPath.indexOf(Types.FIELD_SEPARATOR) == -1) { + //normalize 이후는 이런 일은 없겠지? + if (itemPath.equals(name)) { + return this; + } else if (itemPath.endsWith("]") && itemPath.equals(name + "[" + index + "]")) { + return this; + } else { + return null; + } + + /** + * composite (GROUP | MESSAGE) 일 경우 + */ + } else { + String prefix = null; + itemPath = itemPath.substring(itemPath.indexOf(Types.FIELD_SEPARATOR) + 1); + + if (itemPath.indexOf(Types.FIELD_SEPARATOR) != -1) { + prefix = itemPath.substring(0, itemPath.indexOf(Types.FIELD_SEPARATOR)); + + if (childMap.get(prefix) == null) { + return null; + } + + return (childMap.get(prefix)).getItem(itemPath); + } else { + return childMap.get(itemPath); + } + } + } + + protected Item getOrCreateItem(String itemPath) { + /** + * 1. leaf node 일 경우 + * 1.1 item 이름과 같을 경우 -> return this + * 1.2 item 이름에 index를 붙인 이름과 같을 경우 (item[index]) -> return this + * 1.3 위의 경우가 아닐 경우 -> return null + */ + int separatorPos = itemPath.indexOf(Types.FIELD_SEPARATOR); + if (separatorPos == -1) { + if (itemPath.equals(name)) { + return this; + } else if (itemPath.equals((new StringBuffer(32)).append(name).append("[").append(Integer.toString(index)).append("]").toString())) { + return this; + } else { + return null; + } + + /** + * 2. non-leaf node 일 경우 + * 예) non-leaf node (A[0].B[9].C[1]) + */ + } else { + String prefix = null; + itemPath = itemPath.substring(separatorPos + 1); + + /** + * 2.1 이름에서 첫번째 item을 떼어낸 후에도 separator(.) 가 남아 있을 경우 + * 예) A[0].B[9].C[1] -> B[9].C[1] + */ + int sepIndex = itemPath.indexOf(Types.FIELD_SEPARATOR); + if (sepIndex != -1) { + prefix = itemPath.substring(0, sepIndex); + Item child = childMap.get(prefix); + + if (child == null) { + String firstItemPath = getName() + "[" + getIndex() + "]" + Types.FIELD_SEPARATOR + + prefix.substring(0, prefix.lastIndexOf("[")) + "[-1]"; + Item item = getItem(firstItemPath); + + if (item == null) { + throw new InvalidNodeException("레이아웃("+ getTop().getName() + ")에 " + firstItemPath + " 항목이 없음.", getTop(), this, null); + } + + Item sibling = item.getSibling(prefix); + + if (sibling != null) { + createItem(sibling, prefix, true); + } else { + throw new MessageException("레이아웃항목 생성 불가(" + prefix + ")"); + } + + child = childMap.get(prefix); + } + if(child != null) { + return child.getOrCreateItem(itemPath); + } + else { + return null; + } + } + /** + * 2.1 이름에서 첫번째 item을 떼어낸 후 separator(.) 가 남아 있지 않을 경우 + * 예) B[9].C[1] -> C[1] + */ + else { + Item child = childMap.get(itemPath); + if (child == null) { + String firstItemPath = getName() + "[" + getIndex() + "]" + Types.FIELD_SEPARATOR + + itemPath.substring(0, itemPath.lastIndexOf("[")) + "[-1]"; + Item item = getItem(firstItemPath); + if (item == null) { + throw new InvalidNodeException("레이아웃("+ getTop().getName() + ")에 " + firstItemPath + " 항목이 없음.", getTop(), this, null); + } + + Item sibling = item.getSibling(itemPath); + + if (sibling != null) { + return createItem(sibling, itemPath, true); + } + } + return child; + } + } + } + + @Override + public Object clone() { + Composite clone = (Composite) super.clone(); + + clone.childList = new ArrayList<>(); + clone.childMap = new HashMap<>(); + + String messageType = this.getTop().getType(); + + boolean isVariableType = false; + if(LayoutTypeKey.JSON.equals(messageType) + || LayoutTypeKey.XML.equals(messageType)) { + isVariableType = true; + } + + for (int i = 0; i < childList.size(); i++) { + Item child = getChild(i); + if(isVariableType) { + // FIX-ME : 2021.10.08 + // JSON 이중 가변 그리드일 경우 빈값이 생기는 문제 + if(child.getNodeTypeId() == NODE_GROUP + && !(child.getOccMin() ==child.getOccMax() && child.getOccMin() > 1 )) { + if(child.index > 0) { + continue; + } + } + // link를 끊는다. + clone.setNext(null); + } + clone.addChild((Item) child.clone()); + } + + return clone; + } + + public String toString(String tab, boolean bShowAllFlag) { + /** + * index==-1 인 경우 index>=0 인 sibling 이 있으면 표시하지 않는다. + */ + if (index == -1 && next != null && getName().equals(next.getName())) { + return ""; + } + + StringBuilder sb = new StringBuilder(); + + /** + * name + */ + sb.append("+ " + getClass().getSimpleName() + " - ").append(name).append("["); + sb.append(index + "").append("] "); + + /** + * length + */ + sb.append("{" + (getRoot() instanceof BytesMessage ? getLength()+"" : "") + "} "); + + /** + * occurrence + */ + sb.append("(occ=").append(occType); + sb.append(",").append(occMin); + sb.append(",").append(occMax); + sb.append(",").append(occRef); + sb.append(") "); + + + /** + * value + */ + Object newValue = null; + if (value instanceof byte[]) { + if (getRoot() instanceof EbcdicMessage) { + newValue = IConv.ebcdicToASCIISOSISpaceEX((byte[]) value); + } else { + newValue = new String((byte[]) value); + } + } else if (value instanceof String) { + if (getRoot() instanceof EbcdicMessage) { + newValue = IConv.ebcdicToASCIISOSISpaceEX(((String) value).getBytes()); + } else { + newValue = (String)value; + } + } + else { + newValue = value; + } + + sb.append("("); + if (newValue != null) { + sb.append(newValue.getClass().getName().substring(newValue.getClass().getName() + .lastIndexOf(Types.FIELD_SEPARATOR) + + 1)); + } + sb.append(":"); + sb.append(newValue); + sb.append(") "); + + /* + * PATH - XML namespace xmlns:prefix="URI" + * xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.05" + * xmlns:a="https://www.w3.org/TR/html5/" + */ + if( (path != null) && (path.length() > 0) ) { + sb.append(" path("); + sb.append(path); + sb.append(") "); + } + + /** + * FMLMessage only -> class name + */ +// if (this instanceof FMLMessage || this instanceof ObjectMessage) { +// sb.append(" (class=" + ((FMLMessage) this).getRefInfo() + ")"); +// } +// + /** + * composite only + */ + for (int i = 0; i < childList.size(); i++) { + if (!((Item) childList.get(i)).toString("", false).equals("")) { + sb.append("\n" + Constants.TAB + " | " + tab + ((Item) childList.get(i)).toString(tab + Constants.TAB, false)); + } + } + + return sb.toString(); + } + + public String toXMLString(String tab, boolean bShowAllFlag) { + /** + * index==-1 인 경우 index>=0 인 sibling 이 있으면 표시하지 않는다. + */ + if (index == -1 && next != null && getName().equals(next.getName())) { + return ""; + } + + StringBuilder sb = new StringBuilder(); + /** + * name + */ + sb.append("<"+name +" desc=\""+description+"\">"); + + /** + * value + */ + Object newValue = null; + if (nodeTypeId != NODE_MESSAGE){ + if (value instanceof byte[]) { + if (getRoot() instanceof EbcdicMessage) { + newValue = IConv.ebcdicToASCIISOSISpaceEX((byte[]) value); + } else { + newValue = new String((byte[]) value); + } + } else if (value instanceof String) { + if (getRoot() instanceof EbcdicMessage) { + newValue = IConv.ebcdicToASCIISOSISpaceEX(((String) value).getBytes()); + } else { + newValue = value; + } + } else if (value instanceof BigDecimal) { + value = ((BigDecimal) value).toPlainString(); + if (getRoot() instanceof EbcdicMessage) { + newValue = IConv.ebcdicToASCIISOSISpaceEX(((String) value).getBytes()); + } else { + newValue = value; + } + } + else { + newValue = value; + } + // Group 의 value가 null일 경우에는 표시하지 않는다. + if (!(nodeTypeId == NODE_GROUP && newValue == null)) { + sb.append(XmlUtil.escapeTags((String)newValue)); + } + } + + /** + * composite only + */ + for (int i = 0; i < childList.size(); i++) { + if (!(childList.get(i)).toString("", false).equals("")) { + sb.append("\n" + Constants.TAB + " " + tab + (childList.get(i)).toXMLString(tab + Constants.TAB, false)); + } + } + sb.append("\n" + " " + tab ); + sb.append(""); + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/Converter.java b/src/main/java/com/eactive/eai/transformer/layout/Converter.java new file mode 100644 index 0000000..4cc9732 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/Converter.java @@ -0,0 +1,231 @@ +package com.eactive.eai.transformer.layout; + +import java.math.BigDecimal; + +import org.apache.commons.lang3.StringUtils; +import org.nfunk.jep.ParseException; + +import com.eactive.eai.transformer.SystemKeys; + + +public class Converter { + private Converter() { + + } + public static Object convert(Object value, Item item) throws Exception { + if (value == null) { + return null; + } + + int type = item.getDataTypeId(); + int tLen = item.getLength(); + int dLen = item.getDecimalPointLength(); + + switch (type) { + case Types.TYPE_UNKNOWN: + return null; + + case Types.TYPE_INT: + if (value instanceof Double) { + return ((Number) value).intValue(); + } else if (value instanceof Number) { + return new Integer((((Number) value)).intValue()); + } else if (value instanceof String) { + return new Integer(((String) value)); + } else if (value instanceof byte[]) { + try { + return new Integer(new String((byte[]) value).trim()); + } catch(NumberFormatException e) { + return Integer.valueOf(0); + } + } else { + throw new Exception("TYPE_INT 변환을 할 수 없습니다. : " + value.getClass().getName()); + } + + case Types.TYPE_LONG: + if (value instanceof Double) { + if (((Double) value).doubleValue() == Math.round(((Double) value).doubleValue())) { + return new Long(Math.round(((Double) value).doubleValue())); + } else { + return new Long((((Number) value)).longValue()); + } + } else if (value instanceof Number) { + return new Long((((Number) value)).longValue()); + } else if (value instanceof String) { + return new Long(((String) value)); + } else if (value instanceof byte[]) { + try { + return new Long(new String((byte[]) value).trim()); + } catch(NumberFormatException e) { + return Long.valueOf(0); + } + } else { + throw new Exception("TYPE_LONG 변환을 할 수 없습니다. : " + value.getClass().getName()); + } + + case Types.TYPE_SHORT: + if (value instanceof Double) { + if (((Double) value).doubleValue() == Math.round(((Double) value).doubleValue())) { + return new Short(String.valueOf(Math.round(((Double) value).doubleValue()))); + } else { + return new Short(String.valueOf((((Number) value)).longValue())); + } + } else if (value instanceof Number) { + return new Short((((Number) value)).shortValue()); + } else if (value instanceof String) { + return new Short(((String) value)); + } else if (value instanceof byte[]) { + try { + return new Short(new String((byte[]) value).trim()); + } catch(NumberFormatException e) { + return new Short("0"); + } + } else { + throw new Exception("TYPE_SHORT 변환을 할 수 없습니다. : " + value.getClass().getName()); + } + + case Types.TYPE_DOUBLE: + if (value instanceof Number) { + return new Double((((Number) value)).doubleValue()); + } else if (value instanceof String) { + return new Double(((String) value)); + } else if (value instanceof byte[]) { + try { + return new Double(new String((byte[]) value).trim()); + } catch(NumberFormatException e) { + return Double.valueOf(0); + } + } else { + throw new Exception("TYPE_DOUBLE 변환을 할 수 없습니다. : " + value.getClass().getName()); + } + + case Types.TYPE_FLOAT: + if (value instanceof Number) { + return new Float(((Number) value).floatValue()); + } else if (value instanceof String) { + return new Float(((String) value)); + } else if (value instanceof byte[]) { + try { + return new Float(new String((byte[]) value).trim()); + } catch(NumberFormatException e) { + return Float.valueOf(0); + } + } else { + throw new Exception("TYPE_FLOAT 변환을 할 수 없습니다. : " + value.getClass().getName()); + } + + case Types.TYPE_BIGDECIMAL: + if (value instanceof Double) { + if (((Double) value).doubleValue() == Math.round(((Double) value).doubleValue())) { + return new BigDecimal(Math.round(((Double) value).doubleValue())); + } else { + // 소숫점 없애는 버그 수정 + // 20190829 by OHS + return BigDecimal.valueOf((Double) value); + } + } else if (value instanceof Number) { + return new BigDecimal(((Number) value).toString()); + } else if (value instanceof String) { + // add point if not exist + String sVal = (String) value; + if(dLen> 0 && SystemKeys.isAddDecimalPointEnabled()) { + sVal = addPoint(sVal, tLen, dLen); + } + return new BigDecimal( sVal ); + } else if (value instanceof byte[]) { + // add point if not exist + try { + String sVal = new String((byte[]) value).trim(); + if(dLen> 0 && SystemKeys.isAddDecimalPointEnabled()) { + sVal = addPoint(sVal, tLen, dLen); + } + return new BigDecimal(sVal); + } catch(NumberFormatException e) { + return new BigDecimal("0"); + } + } else { + throw new Exception("TYPE_BIGDECIMAL 변환을 할 수 없습니다. : " + value.getClass().getName()); + } + + case Types.TYPE_STRING: + String valString = null; + if (value instanceof String) { + valString = (String) value; + if(SystemKeys.isStringTrimEnd()) valString = StringUtils.stripEnd(valString," "); + } else if (value instanceof byte[]) { + // source 가 bytes 인 경우에는 ms949로 인코딩해야 함. + valString = new String((byte[]) value , SystemKeys.getBytesMessageCharset()); + if(SystemKeys.isStringTrimEnd()) valString = StringUtils.stripEnd(valString," "); + } else if (value instanceof Double) { + if (((Double) value).doubleValue() == Math.round(((Double) value).doubleValue())) { + valString = new Long(Math.round(((Double) value).doubleValue())).toString(); + } + valString = BigDecimal.valueOf((Double) value).toString(); + } else if (value instanceof Number) { + valString = value.toString(); + } else if (value instanceof Boolean) { + valString = ((Boolean)value).toString(); + } + else { + valString = ((String) value).toString(); + } + return valString; + case Types.TYPE_BYTEARRAY: + if (value instanceof byte[]) { + return (byte[])value; + } else if (value instanceof String) { + // SystemKeys.getBytesMessageCharset 으로 변경 + return ((String) value).getBytes(SystemKeys.getBytesMessageCharset()); + } else if (value instanceof Double) { + if (((Double) value).doubleValue() == Math.round(((Double) value).doubleValue())) { + return new Long(Math.round(((Double) value).doubleValue())).toString().getBytes(); + } + return BigDecimal.valueOf((Double) value).toString().getBytes(); + } else if (value instanceof Number) { + String val = value.toString(); + if(dLen> 0 && SystemKeys.isAddDecimalPointEnabled()) { + val = StringUtils.replace( val, ".", ""); + } + val = StringUtils.leftPad( val, tLen, "0"); + return val.getBytes(); + } else { + throw new Exception("TYPE_BYTEARRAY 변환을 할 수 없습니다. : " + value.getClass().getName()); + } + case Types.TYPE_BOOLEAN: + if (value instanceof String) { + return Boolean.valueOf((String)value); + } else if (value instanceof byte[]) { + return Boolean.valueOf( new String((byte[]) value) ); + } else if (value instanceof Boolean) { + return (Boolean)value; + } else { + throw new Exception("TYPE_BOOLEAN 변환을 할 수 없습니다. : " + value.getClass().getName()); + } + + // USER DEFINED JAVA OBJECT + case Types.TYPE_OBJECT: + return value; + + default: + throw new Exception("정의되지 않은 기본 값 타입을 사용합니다. - " + type); + } + } + + public static String addPoint(String dpNum, int tLen , int dLen) { + if (dpNum == null || dpNum.trim().length() ==0 ){ + return "0"; + } + + if(dLen < 1 || dpNum.indexOf(".") > -1) { + return dpNum; + } + int sLen = dpNum.length(); + int pLen = sLen - dLen; + + StringBuilder sb = new StringBuilder(sLen +1); + sb.append(dpNum.substring(0, pLen)); + sb.append("."); + sb.append(dpNum.substring(pLen)); + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/Field.java b/src/main/java/com/eactive/eai/transformer/layout/Field.java new file mode 100644 index 0000000..b1af928 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/Field.java @@ -0,0 +1,11 @@ +package com.eactive.eai.transformer.layout; + + +public class Field extends Leaf { + private static final long serialVersionUID = 7582062380112969732L; + + public Field() { + super(); + setNodeTypeId(Item.NODE_FIELD); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/Group.java b/src/main/java/com/eactive/eai/transformer/layout/Group.java new file mode 100644 index 0000000..76e1570 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/Group.java @@ -0,0 +1,25 @@ +package com.eactive.eai.transformer.layout; + +import java.util.Iterator; + +public class Group extends Composite { + private static final long serialVersionUID = -6264679307769797715L; + + public Group() { + super(); + setNodeTypeId(Item.NODE_GROUP); + } + + /** + * iterator + */ + @Override + public Iterator iterator() { + return childList.iterator(); + } + + @Override + public Iterator fullIterator() { + return iterator(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/InvalidNodeException.java b/src/main/java/com/eactive/eai/transformer/layout/InvalidNodeException.java new file mode 100644 index 0000000..75afe10 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/InvalidNodeException.java @@ -0,0 +1,29 @@ +package com.eactive.eai.transformer.layout; + +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageException; + +public class InvalidNodeException extends MessageException { + private static final long serialVersionUID = 9163257642181516975L; + private Item invalidChildNode = null; + + public InvalidNodeException(String message, Message m, Item currentNode) { + super(message); + } + + public InvalidNodeException(String message, Message m, Item currentNode, Item invalidChildNode) { + this(message, m, currentNode); + this.invalidChildNode = invalidChildNode; + } + + @Override + public String getMessage() { + StringBuilder sb = new StringBuilder(); + sb.append("전문항목과 레이아웃항목 점검요망."); + if (invalidChildNode != null) { + sb.append("(에러항목 = " + invalidChildNode.getName() + ") "); + } + sb.append("\n" + super.getMessage()); + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/Item.java b/src/main/java/com/eactive/eai/transformer/layout/Item.java new file mode 100644 index 0000000..5ce50ed --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/Item.java @@ -0,0 +1,968 @@ +package com.eactive.eai.transformer.layout; + +import java.io.Serializable; +import java.util.Iterator; +import java.util.List; + +import com.eactive.eai.transformer.message.InvalidAccessException; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageException; +import com.eactive.eai.transformer.util.ConstantUtil; +import com.eactive.eai.transformer.util.Constants; +import com.eactive.eai.transformer.util.Logger; + + +abstract public class Item implements Serializable, Cloneable { + private static final long serialVersionUID = 4023501574176289617L; + + private static Logger logger = Logger.getLogger("transformer"); + + public static final char FIELD_SEPARATOR = '.'; + // node type + public static final int NODE_MESSAGE = 2201; + public static final int NODE_GROUP = 2202; + public static final int NODE_FIELD = 2203; + public static final int NODE_ATTR = 2204; + + // index type + public static final char OCC_ONCE = '1'; + public static final char OCC_ONCE_OR_NONE = '?'; + public static final char OCC_MULTI_OR_NONE = '*'; + public static final char OCC_MULTI_OR_ONCE = '+'; + + protected String name = ""; + protected String qualifiedName = ""; + protected String description = ""; + protected String layoutName = ""; + protected int depth; + protected int itemId; + protected int parentId; + protected int nodeTypeId; + protected int dataTypeId; + protected String path = ""; + protected int length; + protected String refInfo = ""; + protected int seqNo; + protected String occRef = ""; + protected String occType = ""; + protected int occMax; + protected int occMin; + protected Object defaultValue; + protected String mask = ""; + protected int maskLength = 0; + protected int maskOffset = 0; + + protected String dataTypeRef = ""; // 레이아웃 항목 참조정보 - 예) PIC X(10), PIC 9(10) + protected int decimalPointLength = 0; // 소수점 길이수 + protected String pathName = ""; // xml path + + protected String multiLang = ""; // multi language 관련 + + /** + * reference item + */ + protected Item referenceItem; + + /** + * 상위 ITEM을 가리킴. + * ROOT일 경우는 null이 됨. + */ + protected Item parent; + + // 순회용 + + /** + * 같은 깊이에서 순번이 낮은 것을 가리킴. + * 없을 경우는 null이 됨. + */ + protected Item prev; + + /** + * 같은 깊이에서 순번이 높은 것을 가리킴. + * 없을 경우는 null이 됨. + */ + protected Item next; + + // clone - deep copy + protected int index = -1; + protected Object value = null; + + protected boolean mappedValue = false; + + + public boolean getMappedValue() { + return mappedValue; + } + + public void setMappedValue(boolean mappedValue) { + this.mappedValue = mappedValue; + } + + protected Item() { + this(""); + } + + protected Item(String name) { + } + + public int arraySize() { + Item nextItem = getNext(); + if (nextItem == null) { + return getIndex() + 1; + } else if (!getName().equals(nextItem.getName())) { + return getIndex() + 1; + } else { + return nextItem.arraySize(); + } + } + + /** + * index + */ + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + this.qualifiedName = name + "[" + index + "]"; + } + + public Object getValue() { + return value; + } + + public void setValue(Object value) throws InvalidAccessException { + setValue(value,false); + } + public void setValue(Object value, boolean isConvertPass) throws InvalidAccessException { + try { + if (isConvertPass){ + this.value = value; + }else{ + this.value = Converter.convert(value, this); + } + } catch(Exception e) { + throw new InvalidAccessException("setValue error", getItemPath(), null, e); + } + } + + public Message getRoot() { + if (isMessage()) + return (Message) this; + if (parent == null) + throw new MessageException("item " + name + "'s parent is null"); + return (Message) parent.getRoot(); + } + + public Message getTop() { + if (parent == null) + return (Message) this; + return parent.getTop(); + } + + public int getDepth() { + return depth; + } + + public void setDepth(int depth) { + this.depth = depth; + } + + public int getItemId() { + return itemId; + } + + public void setItemId(int itemId) { + this.itemId = itemId; + } + + public int getParentId() { + return parentId; + } + + public void setParentId(int parentId) { + this.parentId = parentId; + } + + public String getName() { + return name; + } + + public String getItemPath() { + if (parent == null) { + return name + "[" + index + "]"; + } else { + return parent.getItemPath() + Types.FIELD_SEPARATOR + name + "[" + index + "]"; + } + } + + public void setName(String name) { + this.name = name; + this.qualifiedName = name + "[" + index + "]"; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + /** + * layout name + */ + public void setLayoutName(String layoutName) { + this.layoutName = layoutName; + } + + public String getLayoutName() { + return this.layoutName; + } + + /** + * node type + */ + public int getNodeTypeId() { + return nodeTypeId; + } + + public String getNodeType() { + return ConstantUtil.getNodeType(nodeTypeId); + } + + public void setNodeTypeId(int nodeTypeId) { + this.nodeTypeId = nodeTypeId; + } + + public boolean isTop() { + return (getParent() == null); + } + + public boolean isRoot() { + return isMessage(); + } + + public boolean isMessage() { + return (nodeTypeId == NODE_MESSAGE); + } + + public boolean isGroup() { + return (nodeTypeId == NODE_GROUP); + } + + public boolean isField() { + return (nodeTypeId == NODE_FIELD); + } + + public boolean isAttr() { + return (nodeTypeId == NODE_ATTR); + } + + public int getDataTypeId() { + return dataTypeId; + } + + public void setDataTypeId(int dataTypeId) { + this.dataTypeId = dataTypeId; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public int getLength() { + return length; + } + + public void setLength(int length) { + this.length = length; + } + + public String getRefInfo() { + return refInfo; + } + + public void setRefInfo(String refInfo) { + this.refInfo = refInfo; + } + + public String getOccRef() { + return occRef; + } + + public void setOccRef(String occRef) { + if (occRef != null) { + this.occRef = occRef.trim(); + } + } + + public int getSeqNo() { + return seqNo; + } + + public void setSeqNo(int seqNo) { + this.seqNo = seqNo; + } + + public String getOccType() { + return occType; + } + + public void setOccType(String occType) { + this.occType = occType; + } + + public int getOccMax() { + return occMax; + } + + public void setOccMax(int occMax) { + this.occMax = occMax; + } + + public int getOccMin() { + return occMin; + } + + public void setOccMin(int occMin) { + this.occMin = occMin; + } + + public String getMask() { + return this.mask; + } + + public void setMask(String mask) { + this.mask = mask; + } + + public int getMaskLength() { + return maskLength; + } + + public void setMaskLength(int maskLength) { + this.maskLength = maskLength; + } + + public int getMaskOffset() { + return maskOffset; + } + + public void setMaskOffset(int maskOffset) { + this.maskOffset = maskOffset; + } + + public Object getDefaultValue() { + if (defaultValue == null){ + /** + * epb에서 추가됨 JSON 타입의 null 처리 때문 (item.java, Transformer.java 도 같이 변경) + * JSON 관련해서 null 처리로 default가 null 일경우 item이 생성 안되도록 변경했으나 문제생김 + * 1. flat 데이터에서 값이 안생기는 문제 발생 + * ==> BYTEARRAY 타입을 예외처리(FLAT은 byte array이기 때문) 20210101 jun's + */ + if (getDataTypeId() == Types.TYPE_BYTEARRAY){ + return new byte[0]; + } + else { + return null; + } + } + else { + return defaultValue; + } + } + + public abstract void setDefaultValue(String defaultValue); + + public int getDecimalPointLength() { + return decimalPointLength; + } + + public void setDecimalPointLength(int decimalPointLength) { + this.decimalPointLength = decimalPointLength; + } + + public String getPathName() { + return pathName; + } + + public void setPathName(String pathName) { + this.pathName = pathName; + } + + public String getDataTypeRef() { + return dataTypeRef; + } + + public void setDataTypeRef(String dataTypeRef) { + this.dataTypeRef = dataTypeRef; + } + + /** + * @return the multiLang + */ + public String getMultiLang() { + return multiLang; + } + + /** + * @param multiLang the multiLang to set + */ + public void setMultiLang(String multiLang) { + this.multiLang = multiLang; + } + + public Item getParent() { + return parent; + } + + public void setParent(Item parent) { + this.parent = parent; + } + + public Item getPrev() { + return prev; + } + + public void setPrev(Item item) { + this.prev = item; + } + + public Item getNext() { + return next; + } + + public void setNext(Item item) { + this.next = item; + } + + public List getChildList() { + throw new UnsupportedOperationException("unsupported operation getChildList() - " + + getNodeType() + "|" + getName()); + } + + public void addChild(Item item) { + throw new UnsupportedOperationException("unsupported operation addChild() - " + + getNodeType() + "|" + getName() + ", child=" + item.getName()); + } + + public void addChild(Item sibling, Item item) { + throw new UnsupportedOperationException("unsupported operation addChild() - " + + getNodeType() + "|" + getName() + + ", sibling=" + sibling.getName() + + ", item=" + item.getName()); + } + + public void removeChild(Item item) { + throw new UnsupportedOperationException("unsupported operation removeChild() - " + + getNodeType() + "|" + getName() + ", child=" + item.getName()); + } + + public void replaceChild(Item oldItem, Item newItem) { + throw new UnsupportedOperationException("unsupported operation replaceChild() - " + + getNodeType() + "|" + getName() + + ", old=" + oldItem.getName() + + ", new=" + newItem.getName()); + } + + public Item getChild(int index) { + throw new UnsupportedOperationException(); + } + + public int getChildCount() { + throw new UnsupportedOperationException(); + } + + public Item getChildByName(String name) { + throw new UnsupportedOperationException(); + } + + /** + * reference item + */ + public Item getReferenceItem() { + return referenceItem; + } + + public void setReferenceItem(Item referenceItem) { + this.referenceItem = referenceItem; + } + + public abstract void clearValue(); + + public abstract Item findItemByPath(String path); + + public abstract void initDefaultValue(); + + public abstract void initDepth(int depth); + + public abstract void initInclude(); + + /** + * OccMin 설정 + * - min 갯수 만큼 sibling을 만든다. + * - group 또는 message일 경우 child 에도 recursive 하게 작업해 준다. + */ + public abstract void initOccMin(); + + /** + * itemId, parentId + */ + public abstract int initItemParentId(int seq, int parentId); + + public abstract boolean existMask(); + + public String normalizeFullName(String itemPathValue) { + // if root return + if (parent == null) { + int sepIndex = itemPathValue.indexOf(FIELD_SEPARATOR); + if (sepIndex == -1) { + return itemPathValue; + } + else { + return nomalizeFullNameParts(itemPathValue); + } + } + else { + return itemPathValue; + } + } + + private String nomalizeFullNameParts(String source) { + StringBuilder sb = new StringBuilder(1024); + CharSequence chars = source; + int start = 0; + int end = 0; + int partCount = 0; + int i=0; + for(; i itemList) { + sibling = getLastSibling(sibling); + + Item parent = sibling.getParent(); + int idx = 0; + try{ + idx = Integer.parseInt(itemPath.substring(itemPath.lastIndexOf('[') + + 1, itemPath.lastIndexOf(']'))); + }catch(NumberFormatException e){ + throw new InvalidNodeException("GRID 항목매핑오류 GRID간 매핑인지 확인, itemPath="+itemPath+ ", " + sibling.getName(), getRoot(), this, null); + } + + if ((sibling.getOccMax() > 0) && (idx >= sibling.getOccMax())) { + throw new InvalidNodeException("cannot set value over maxOcc , idx=" + idx + ", " + sibling.getName(), + getRoot(), this, null); + } + + Item clone = null; + Item occItem = null; + + for (int i = sibling.getIndex() + 1; i <= idx; i++) { + clone = (Item) sibling.clone(); + clone.setIndex(i); + + /** + * root item 이 아닐 경우 + */ + if (parent != null) { + try { + parent.addChild(sibling, clone); + clone.setParent(parent); + } catch (InvalidNodeException e) { + logger.error(e.getMessage(), e); + clone = null; + } + } + + clone.initDefaultValue(); + + try { + clone.initOccMin(); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + + // 하위 그룹에 대한 참조필드 초기화 (2021.10.14) + if(bSetOcc && clone.getIndex() >=0 && clone.getNodeTypeId() == NODE_GROUP + && clone.getRoot().getLayout().getLayoutType().getName().equals(LayoutTypeKey.BYTES)) { + for (int id = 0; id < clone.getChildCount(); id++) { + Item child = clone.getChild(id); + if(child.getNodeTypeId() == NODE_GROUP && child.getIndex() == 0) { + child.setOccRefCount(child); + } + } + } + + /** + * reference item 에 occurrence setting + */ + if (bSetOcc && ("*".equals(clone.getOccType()) || "+".equals(clone.getOccType()) || clone.getOccMax()>clone.getOccMin())) { + if (clone.getOccRef() == null && clone.getRoot().getLayout().getLayoutType().getName().equals(LayoutTypeKey.BYTES)) { + throw new InvalidNodeException( + getRoot().getName() + " | OccType 이 '*', '+' 또는 occType > occMin' 인 경우는 RefOcc 정보를 반드시 설정하여야 합니다. " + + clone.toString(), getRoot(), this, null); + } else if (clone.getOccRef() != null && !"".equals(clone.getOccRef().trim())) { + /** + * occRef item 정보 update + */ + // 2009.10.12 - 반복참조회수 설정 제거 + // 매핑한 값을 변경하지 않도록 수정 + + occItem = getRoot().getItem(clone.getOccRefItem().getItemPath()); + boolean isMappedOcc = occItem.getMappedValue(); + + if(clone.getIndex() == 0) { + try { + if(!isMappedOcc) { + if(occItem.getValue() != null && + getRoot().getInt(clone.getOccRefItem().getItemPath()) > 0) { + isMappedOcc = true; + } + else { + // 설정값이 없거나 숫자가 아닌 경우 + isMappedOcc = false; + } + } + } + catch(Exception ex) { + // 숫자가 아닌 경우(공백문자) + isMappedOcc = false; + } + occItem.setMappedValue(isMappedOcc); + } + + String type =clone.getRoot().getLayout().getLayoutType().getName(); + //변경 20210105 jun's 원칙으로 변경함 + if(!(LayoutTypeKey.VFIELD.equals(type) && clone.isField() && clone.getLength()==0) ) { + getRoot().setInt(clone.getOccRefItem().getItemPath(), clone.getIndex() + 1); + } + } + } + if(itemList != null) itemList.add(clone); + sibling = clone; + } + + return clone; + } + + // clone 으로 생성되는 경우에 설정되지 않는 문제가 있음. + public void setOccRefCount(Item clone) { + Item occItem = null; + /** + * reference item 에 occurrence setting + */ + if (("*".equals(clone.getOccType()) || "+".equals(clone.getOccType()) || clone.getOccMax()>clone.getOccMin())) { + if (clone.getOccRef() == null && clone.getRoot().getLayout().getLayoutType().getName().equals(LayoutTypeKey.BYTES)) { + throw new InvalidNodeException( + getRoot().getName() + " | OccType 이 '*', '+' 또는 occType > occMin' 인 경우는 RefOcc 정보를 반드시 설정하여야 합니다. " + + clone.toString(), getRoot(), this, null); + } else if (clone.getOccRef() != null && !"".equals(clone.getOccRef().trim())) { + /** + * occRef item 정보 update + */ + // 매핑한 값을 변경하지 않도록 수정 + occItem = getRoot().getItem(clone.getOccRefItem().getItemPath()); + boolean isMappedOcc = occItem.getMappedValue(); + if(clone.getIndex() == 0) { + try { + if(!isMappedOcc) { + if(occItem.getValue() != null && + getRoot().getInt(clone.getOccRefItem().getItemPath()) > 0) { + isMappedOcc = true; + } + else { + isMappedOcc = false; + } + } + } + catch(Exception ex) { + // 숫자가 아닌 경우(공백문자) + isMappedOcc = false; + } + // commented : IMPORANT createitem과 중복처리될 수 있으므로 설정하지 않고, clone만 처리될 경우 초기값을 설정 + // occItem.setMappedValue(isMappedOcc); + } + + String type =clone.getRoot().getLayout().getLayoutType().getName(); + if (LayoutTypeKey.JSON.equals(type)){ + //원칙적인 로직은 아래와 같음 + getRoot().setInt(clone.getOccRefItem().getItemPath(), clone.getIndex() + 1); + }else{ + //예외처리하는 로직 + //case 1 : 원래등록해야되는 레이아웃 : 고정그리드 에 유효한 건수를 가지고 있는 값 + // : 업무팀에서 가변그리드로 등록후 위에 등록한거와 같이 되게 요청해서 넣은 로직으로 예상됨 + if( !(LayoutTypeKey.VFIELD.equals(type) && clone.isField() && clone.getLength()==0) + && !isMappedOcc) { + getRoot().setInt(clone.getOccRefItem().getItemPath(), clone.getIndex() + 1); + } + } + } + } + } + + protected Item getOccRefItem() { + /** + * 1. [0] 을 붙여서 occRef 존재 유무 체크 + */ + String itemPath = getParent().getItemPath() + "." + getOccRef() + "[0]"; + Item occRefItem = getTop().getItem(itemPath); + if (occRefItem != null) + return occRefItem; + + /** + * 2. [-1] 을 붙여서 occRef 존재 유무 체크 + */ + itemPath = getParent().getItemPath() + "." + getOccRef() + "[-1]"; + occRefItem = getTop().getItem(itemPath); + if (occRefItem != null) + return occRefItem; + + /** + * 3. layout2 에서 - occRef 에 한글필드명 (description) 을 쓸 경우 처리를 위해 + */ + for (Iterator iter = getParent().fullIterator(); iter.hasNext(); ) { + Item x = iter.next(); + if (getOccRef().trim().equals(x.getDescription())) { + setOccRef(x.getName()); + itemPath = getParent().getItemPath() + "." + getOccRef() + "[-1]"; + occRefItem = getTop().getItem(itemPath); + if (occRefItem != null) { + return occRefItem; + } + } + } + + throw new MessageException(getRoot().getName() + " - 항목명(" + getName() + ")의 반복횟수참조정보가 없습니다." + + getOccRef() + " (" + itemPath + ")"); + } + + + public Object clone() { + try { + return super.clone(); + } catch(CloneNotSupportedException e) { + throw new RuntimeException("error when clone object", e); + } + } + + protected String maskString(int size) { + StringBuilder sb = new StringBuilder(size); + + for (int i = 0; i < size; i++) { + sb.append("*"); + } + + return sb.toString(); + } + + public String maskString(Object val) { + if (val==null) { + return null; + } + + String str = null; + if (val instanceof byte[]) + str = new String((byte[]) val); + else + str = val.toString(); + + StringBuilder sb = new StringBuilder(str.length()); + + for (int i = 0; i < str.length(); i++) { + sb.append("*"); + } + + return sb.toString(); + } + + + /** + * mask 처리 + * MaskYN : Y/N , MaskLength : 0 , 1~9 + * MaskLength 가 0 이면 전체 마스킹 1이면 1바이트 보여주고 마스킹 필드값이 MaskLength 보다 짧으면 전체 unmaking + * @param val + * @param maskLength + * @return + */ + public String maskString2(Object val, int maskLength) { + if (val==null) { + return null; + } + + String str = null; + if (val instanceof byte[]) + str = new String((byte[]) val); + else + str = val.toString(); + + int len = str.length(); + if( len < maskLength ) return str; + + StringBuilder sb = new StringBuilder(len); + if( maskLength > 0 ) sb.append(str.substring(0, maskLength)); + + for (int i = maskLength; i < str.length(); i++) { + sb.append("*"); + } + + return sb.toString(); + } + + /** + * mask 처리 + * MaskYN : Y/N , MaskLength : 0 , 1~9 + * MaskLength 가 0 이면 전체 마스킹 1이면 1바이트 보여주고 마스킹 필드값이 MaskLength 보다 짧으면 전체 unmaking + * @param val + * @param maskLength + * @return + */ + public String maskString2(Object val, int maskLength, int maskOffset) { + if (val==null) { + return null; + } + + String str = null; + if (val instanceof byte[]) + str = new String((byte[]) val); + else + str = val.toString(); + + int len = str.length(); + if( len <= maskOffset ) return str; + + char[] sourceChars = str.toCharArray(); + char[] targetChars = new char[len]; + + if(maskOffset > 0) + System.arraycopy(sourceChars, 0, targetChars, 0, maskOffset); + for(int i = maskOffset; i < maskOffset+maskLength; i++) { + if(i >= len) + break; + targetChars[i] = '*'; + } + int maskEnd = maskOffset+maskLength; + if(len > maskEnd) + System.arraycopy(sourceChars, maskEnd, targetChars, maskEnd, len - maskEnd); + + return new String(targetChars); + } + /** + * iterator + */ + public Iterator iterator() { + throw new UnsupportedOperationException(); + } + + public Iterator fullIterator() { + throw new UnsupportedOperationException(); + } + + + public String toString() { + return toString(Constants.TAB, false); + } + public String toXMLString() { + return toXMLString(Constants.TAB, false); + } + + public abstract String toString(String tab, boolean bShowAllFlag); + + public abstract String toXMLString(String tab, boolean bShowAllFlag); +} \ No newline at end of file diff --git a/src/main/java/com/eactive/eai/transformer/layout/ItemCache.java b/src/main/java/com/eactive/eai/transformer/layout/ItemCache.java new file mode 100644 index 0000000..8b3aa1d --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/ItemCache.java @@ -0,0 +1,47 @@ +package com.eactive.eai.transformer.layout; + +import com.eactive.eai.transformer.util.Logger; + +import net.sf.ehcache.Cache; +import net.sf.ehcache.CacheException; +import net.sf.ehcache.CacheManager; +import net.sf.ehcache.Element; + +// unused +public class ItemCache { + private static Logger logger = Logger.getLogger("transformer"); + + static Cache cache = null; + + static { + try { + CacheManager manager = CacheManager.create(); + cache = new Cache("item", 1000, false, false, 0, 60); + manager.addCache(cache); + } catch(Exception e) { + logger.error(e.getMessage(), e); + } + } + + private ItemCache() { + + } + + public static String get(String key) { + try { + Element element = cache.get(key); + if (element != null) { + return (String)element.getObjectValue(); + } + return null; + } catch(CacheException e) { + logger.error(e.getMessage(), e); + return null; + } + } + + public static void put(String key, String value) { + cache.put(new Element(key, value)); + } +} + diff --git a/src/main/java/com/eactive/eai/transformer/layout/ItemDataType.java b/src/main/java/com/eactive/eai/transformer/layout/ItemDataType.java new file mode 100644 index 0000000..c99a241 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/ItemDataType.java @@ -0,0 +1,26 @@ +package com.eactive.eai.transformer.layout; + +public enum ItemDataType { + UNKNOWN(2100), STRING(2101), INT(2102), LONG(2103), SHORT(2104), DOUBLE(2105), FLOAT(2106), CHAR(2107), BYTE(2108), + DATE(2109), TIME(2110), TIMESTAMP(2111), NUMBER(2112), BYTEARRAY(2113), NUMERIC(2114), PACKDECIMAL(2115), + OBJECT(2116), BOOLEAN(2117), BIGDECIMAL(2118),; + + private int number; + + ItemDataType(int number) { + this.number = number; + } + + public int getNumber() { + return number; + } + + public static ItemDataType fromNumber(int number) { + for (ItemDataType type : ItemDataType.values()) { + if (type.getNumber() == number) { + return type; + } + } + return UNKNOWN; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/ItemFactory.java b/src/main/java/com/eactive/eai/transformer/layout/ItemFactory.java new file mode 100644 index 0000000..5322f30 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/ItemFactory.java @@ -0,0 +1,34 @@ +package com.eactive.eai.transformer.layout; + +import com.eactive.eai.transformer.util.ConstantUtil; + +public class ItemFactory { + private ItemFactory() { + + } + public static Item createItem(int nodeTypeId) { + switch (nodeTypeId) { + case Item.NODE_ATTR: + return new Attribute(); + case Item.NODE_FIELD: + return new Field(); + case Item.NODE_GROUP: + return new Group(); + default: + throw new RuntimeException("cannot create item - node type id : " + nodeTypeId); + } + } + + public static Item createItem(String nodeTypeName) { + if (nodeTypeName == null) { + throw new RuntimeException("cannot create item - note type is null"); + } + + int nodeTypeId = ConstantUtil.getNodeTypeId(nodeTypeName.trim()); + try { + return createItem(nodeTypeId); + } catch(Exception e) { + throw new RuntimeException("cannot create item - node type name : " + nodeTypeName, e); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/ItemFullIterator.java b/src/main/java/com/eactive/eai/transformer/layout/ItemFullIterator.java new file mode 100644 index 0000000..55d0db7 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/ItemFullIterator.java @@ -0,0 +1,24 @@ +package com.eactive.eai.transformer.layout; + +import java.util.Iterator; + + +public class ItemFullIterator extends ItemIterator { + public ItemFullIterator(Iterator iterator) { + super(iterator); + } + + @Override + public Object next() { + if (hasNext()) { + Iterator iter = (Iterator) stack.peek(); + Item item = (Item) iter.next(); + if (item instanceof Composite) { + stack.push(item.iterator()); + } + return item; + } else { + return null; + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/ItemIterator.java b/src/main/java/com/eactive/eai/transformer/layout/ItemIterator.java new file mode 100644 index 0000000..8e1ff9a --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/ItemIterator.java @@ -0,0 +1,48 @@ +package com.eactive.eai.transformer.layout; + +import java.util.Iterator; +import java.util.Stack; + + +public class ItemIterator implements Iterator { + + Stack stack = new Stack(); + + public ItemIterator(Iterator iterator) { + stack.push(iterator); + } + + public boolean hasNext() { + if (stack.empty()) { + return false; + } else { + Iterator iter = (Iterator) stack.peek(); + if (!iter.hasNext()) { + stack.pop(); + return hasNext(); + } else { + return true; + } + } + } + + public Object next() { + if (hasNext()) { + Iterator iter = (Iterator) stack.peek(); + Item item = (Item) iter.next(); + + if (item instanceof Composite && item.getIndex() != -1) { + stack.push(item.iterator()); + } + + return item; + } else { + return null; + } + } + + @Override + public void remove() { + throw new UnsupportedOperationException(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/ItemNodeType.java b/src/main/java/com/eactive/eai/transformer/layout/ItemNodeType.java new file mode 100644 index 0000000..2527615 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/ItemNodeType.java @@ -0,0 +1,25 @@ +package com.eactive.eai.transformer.layout; + +public enum ItemNodeType { + UNKNOWN(2200), MESSAGE(2201), GROUP(2202), FIELD(2203), ATTR(2204); + + private int number; + + ItemNodeType(int number) { + this.number = number; + } + + public int getNumber() { + return number; + } + + public static ItemNodeType fromNumber(int number) { + for (ItemNodeType type : ItemNodeType.values()) { + if (type.getNumber() == number) { + return type; + } + } + return UNKNOWN; + } + +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/Layout.java b/src/main/java/com/eactive/eai/transformer/layout/Layout.java new file mode 100644 index 0000000..2d1d071 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/Layout.java @@ -0,0 +1,106 @@ +package com.eactive.eai.transformer.layout; + +import java.time.LocalDateTime; + +import com.eactive.eai.transformer.dao.LoadingUnit; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageException; +import com.eactive.eai.transformer.util.Constants; +import com.eactive.eai.transformer.util.Logger; +import com.eactive.eai.transformer.util.MemoryLogger; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Layout extends LoadingUnit { + private static final long serialVersionUID = 5818439279232001470L; + + private static Logger logger = Logger.getLogger("transformer"); + + private Item rootItem; + private LayoutType layoutType; + + private String name; + private String description; + private LocalDateTime lastUpdateDate; + private String bzwkDstcd; + private String applicationName; + private String systemInterface; + private String eaiSvrDstcd; + private String modifImgTstusDstcd; + private String useYn; + + public Layout() { + this(""); + } + + public Layout(String name) { + this.name = name; + } + + public void setRootItem(Item rootItem) { + if (!getName().equals(rootItem.getName())) { + throw new MessageException("root item's name (" + rootItem.getName() + ") is not same to layout name (" + getName() + ")"); + } + this.rootItem = rootItem; + } + + public void init() { + Message root = (Message) getRootItem(); + + if (root == null) { + logger.warn("cannot init layout - layout '" + name + "' does not have root item"); + MemoryLogger.error("cannot init layout - layout '" + name + "' does not have root item"); + + return; + } + + root.createObject(); + + try { + root.initInclude(); + } catch(Throwable t) { + logger.warn("cannot init layout - init/reload faild when initInclude() - " + name, t); + MemoryLogger.error(" cannot init layout - init/reload faild when initInclude() - " + name, t); + } + + try { + root.initDepth(1); + } catch(Throwable t) { + logger.warn("cannot init layout - init/reload faild when initDepth() - " + name, t); + MemoryLogger.error(" cannot init layout - init/reload faild when initDepth() - " + name, t); + } + + try { + root.initDefaultValue(); + } catch(Throwable t) { + logger.warn("cannot init layout - init/reload faild when initDefaultValue() - " + name, t); + MemoryLogger.error(" cannot init layout - init/reload faild when initDefaultValue() - " + name, t); + } + +// try { + //------------------------------------------------------ + // TEST 메모리 문제로 임시로 MessageFactory에서 처리하도록함 + // Layout.init() 에서 주석처리함 + // 2009.07.06 +// root.initOccMin(); +// } catch(Throwable t) { +// logger.warn("cannot init layout - init/reload faild when initOccMin() - " + name, t); +// MemoryLogger.error(" cannot init layout - init/reload faild when initOccMin() - " + name, t); +// } + } + + public String toString(String tab) { + StringBuilder sb = new StringBuilder(); + sb.append("\n" + tab + " | " + "layout name = " + name); + sb.append("\n" + tab + " | " + "layout type = " + layoutType); + sb.append("\n" + tab + " | " + "description = " + description); + return sb.toString(); + } + + public String toString() { + return toString(Constants.TAB); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/LayoutInitializationException.java b/src/main/java/com/eactive/eai/transformer/layout/LayoutInitializationException.java new file mode 100644 index 0000000..10d0761 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/LayoutInitializationException.java @@ -0,0 +1,22 @@ +package com.eactive.eai.transformer.layout; + +import com.eactive.eai.transformer.TransformerException; + +public class LayoutInitializationException extends TransformerException { + private static final long serialVersionUID = 4860857769791633051L; + private final String layoutName; + + public LayoutInitializationException(String message, String layoutName) { + this(message, layoutName, null); + } + + public LayoutInitializationException(String message, String layoutName, + Throwable cause) { + super(layoutName + " | " + message, cause); + this.layoutName = layoutName; + } + + public String getLayoutName() { + return layoutName; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/LayoutManager.java b/src/main/java/com/eactive/eai/transformer/layout/LayoutManager.java new file mode 100644 index 0000000..d5a2739 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/LayoutManager.java @@ -0,0 +1,390 @@ +package com.eactive.eai.transformer.layout; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.eactive.eai.common.lifecycle.Lifecycle; +import com.eactive.eai.common.lifecycle.LifecycleException; +import com.eactive.eai.common.lifecycle.LifecycleListener; +import com.eactive.eai.common.lifecycle.LifecycleSupport; +import com.eactive.eai.common.util.ApplicationContextProvider; +import com.eactive.eai.transformer.dao.LayoutDao; +import com.eactive.eai.transformer.dao.jdbc.LayoutJdbcDao; +import com.eactive.eai.transformer.message.MessageException; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.util.Logger; +import com.eactive.eai.transformer.util.MemoryLogger; + +@Component +public class LayoutManager implements Lifecycle { + private static Logger logger = Logger.getLogger("transformer"); + + private Map layoutMap; + private Map dependencyMap; + private Map permanentMap; + private LifecycleSupport lifecycleSupport = null; + private boolean started; + + @Autowired + private LayoutDao dao; + + @Autowired + private LayoutJdbcDao layoutJdbcDao; + + private LayoutManager() { + layoutMap = new ConcurrentHashMap<>(); + dependencyMap = new HashMap<>(); + lifecycleSupport = new LifecycleSupport(this); + } + + public static LayoutManager getManager() { + return ApplicationContextProvider.getContext().getBean(LayoutManager.class); + } + + public synchronized void reload() throws Exception { + /** + * memory logging + */ + logger.info("LayoutManager | start reloading all layouts"); + MemoryLogger.txlog("LayoutManager | start reloading all layouts"); + + init(false); + + logger.info("LayoutManager | end reloading all layouts"); + MemoryLogger.txlog("LayoutManager | end reloading all layouts"); + } + + public synchronized void permanentReload() { + final Map tempPermanetMap = dao.findPermanent(); + permanentMap = tempPermanetMap; + for(String key : permanentMap.keySet()){ + if (!MessageFactory.getFactory().checkPerment(key)){ + MessageFactory.getFactory().init(key); + } + } + + } + //agent 에서 reload + public synchronized void permanentReload(String layoutName) { + final Map tempPermanetMap = dao.findPermanent(); + if (tempPermanetMap.containsKey(layoutName)){ + MessageFactory.getFactory().init(layoutName); + } + + } + + public synchronized void reload(String layoutName) throws MessageException { + reload(layoutName, 0); + } + + private void reload(String layoutName, int level) throws MessageException { + if (level > 10) { + throw new MessageException("cannot reload. check if message dependency (include) has cycle"); + } + + try { + Layout layout = dao.findLayoutByName(layoutName); + + if (layout == null || "".equals(layout.getName())) + throw new MessageException("layout(" + layoutName + ") not found"); + + if (!"1".equals(layout.getUseYn())){ + layoutMap.remove(layoutName); + MessageFactory.getFactory().removeCache(layoutName); + logger.warn("layout reload["+layoutName+"] useYn["+layout.getUseYn()+"] removed"); + return; + } + Item root = dao.findItemByName(layoutName); + + if (root == null) + throw new MessageException("layout(" + layoutName + ")'s root item not found"); + + layout.setRootItem(root); + + layout.init(); + + putLayout(layout); + + //----------------------------------------------------------------------- + // 2009.11.18 Cache 문제로 인한 테스트 + boolean cacheDeleted = MessageFactory.getFactory().removeCache(layoutName); + if(logger.isWarnEnabled()) { + logger.warn("LayoutManager] reload - MessageFactory Remove Cache ["+layoutName+"] - "+cacheDeleted); + } + //----------------------------------------------------------------------- + if (!layoutName.equals(layout.getName())) { + throw new MessageException("layout name is different. '" + + layoutName + "' != '" + layout.getName() + "'"); + } + + logger.info("LayoutManager | reloaded - " + layoutName + (level>0 ? " - dependency(+" + level + ")" : "")); + MemoryLogger.txlog("LayoutManager | layout reloaded - " + layoutName + (level>0 ? " - dependency(+" + level + ")" : "") + + "\n" + layout.getRootItem()); + + /** + * check dependency -> reload dependent layout recursively + */ + for (Iterator iter = dependencyMap.keySet().iterator(); iter.hasNext(); ) { + String parent = iter.next(); + String child = dependencyMap.get(parent); + if (child != null && child.equals(layoutName)) { + reload(parent, ++level); + } + } + } catch(Exception e) { + layoutMap.remove(layoutName); + logger.error("LayoutManager | reload faild - '" + layoutName + "'", e); + MemoryLogger.error("LayoutManager | reload faild - '" + layoutName + "'", e); + throw new MessageException("layout reload faild - " + layoutName, e); + } + } + + public synchronized void reload(String layoutName, String jname, String schema, LayoutType layoutType) throws MessageException { + reload(layoutName, 0 , jname, schema, layoutType); + } + public synchronized void reload(String layoutName, String jname, String schema) throws MessageException { + reload(layoutName, 0 , jname, schema, null); + } + + private void reload(String layoutName, int level ,String jname, String schema, LayoutType layoutType) throws MessageException { + if (level > 10) { + throw new MessageException("cannot reload. check if message dependency (include) has cycle"); + } + + try { + Layout layout = dao.findLayoutByName(layoutName); + + if (layout == null || "".equals(layout.getName())) + throw new MessageException("layout(" + layoutName + ") not found"); + + if(layoutType!=null){ + layout.setLayoutType(layoutType); + } + + Item root = dao.findItemByName(layoutName); + + if (root == null) + throw new MessageException("layout(" + layoutName + ")'s root item not found"); + + layout.setRootItem(root); + + layout.init(); + + putLayout(layout); + + //----------------------------------------------------------------------- + // 2009.11.18 Cache 문제로 인한 테스트 + boolean cacheDeleted = MessageFactory.getFactory().removeCache(layoutName); + if(logger.isWarnEnabled()) { + logger.warn("LayoutManager] reload - MessageFactory Remove Cache ["+layoutName+"] - "+cacheDeleted); + } + //----------------------------------------------------------------------- + if (!layoutName.equals(layout.getName())) { + throw new MessageException("layout name is different. '" + + layoutName + "' != '" + layout.getName() + "'"); + } + + logger.info("LayoutManager | reloaded - " + layoutName + (level>0 ? " - dependency(+" + level + ")" : "")); + MemoryLogger.txlog("LayoutManager | layout reloaded - " + layoutName + (level>0 ? " - dependency(+" + level + ")" : "") + + "\n" + layout.getRootItem()); + + /** + * check dependency -> reload dependent layout recursively + */ + for (Iterator iter = dependencyMap.keySet().iterator(); iter.hasNext(); ) { + String parent = iter.next(); + String child = dependencyMap.get(parent); + if(child == null) continue; + if (child.equals(layoutName)) { + reload(parent, ++level, jname, schema, layoutType); + } + } + } catch(Exception e) { + layoutMap.remove(layoutName); + logger.error("LayoutManager | reload faild - '" + layoutName + "'", e); + MemoryLogger.error("LayoutManager | reload faild - '" + layoutName + "'", e); + throw new MessageException("layout reload faild - " + layoutName, e); + } + } + public synchronized void remove(String layoutName) throws MessageException { + layoutMap.remove(layoutName); + + //----------------------------------------------------------------------- + // 2009.11.18 Cache 문제로 인한 테스트 + boolean cacheDeleted = MessageFactory.getFactory().removeCache(layoutName); + if(logger.isWarnEnabled()) { + logger.warn("LayoutManager] remove - MessageFactory Remove Cache ["+layoutName+"] - "+cacheDeleted); + } + //----------------------------------------------------------------------- + } + + public void addLifecycleListener(LifecycleListener listener) { + lifecycleSupport.addLifecycleListener(listener); + } + + public LifecycleListener[] findLifecycleListeners() { + return lifecycleSupport.findLifecycleListeners(); + } + + public void removeLifecycleListener(LifecycleListener listener) { + lifecycleSupport.removeLifecycleListener(listener); + } + + public synchronized void start() throws LifecycleException { + try { + init(true); + // Tuning + // 기동시에 Cache를 초기화하도록 함. + MessageFactory.getFactory().initCache(); + this.started = true; + } catch (Exception e) { + throw new LifecycleException(e); + } + } + + public synchronized void stop() throws LifecycleException { + try { + clear(); + this.started = false; + } catch (Exception e) { + throw new LifecycleException(e); + } + } + + public boolean isStarted() { + return this.started; + } + + + public String[] getAllLayoutName() { + Iterator it = layoutMap.keySet().iterator(); + + String[] keys = new String [layoutMap.size()]; + + for (int i=0; i getLayouts() { + return layoutMap; + } + + public Layout getLayoutByName(String layoutName) { + if(layoutName == null) { + String errorMsg = "LayoutManager | layoutName is NULL - "+layoutName; + logger.error(errorMsg); + MemoryLogger.error(errorMsg); + return null; + } + + Object obj = layoutMap.get(layoutName); + + if(obj == null) { + return null; + } + return (Layout) obj; + } + + public void putLayout(Layout layout) { + layoutMap.put(layout.getName(), layout); + } + + public void addDependency(String parent, String child) { + dependencyMap.put(parent, child); + } + + private void init(boolean isFistTime) throws InterruptedException { + logger.info("LayoutManager | start init()"); + + /** + * [1] load layouts + */ + final Map tempLayoutMap = dao.load(); + if (isFistTime) { + layoutMap = tempLayoutMap; + } + logger.info("LayoutManager | [1] load layouts completed - "+tempLayoutMap.size()); + + /** + * [2] if excel, load layout2 + */ + if (layoutJdbcDao != null) { + Map layout2Map = layoutJdbcDao.load(); + layoutMap.putAll(layout2Map); + logger.info("LayoutManager | [2] if excel, load layout2 completed"); + } + + /** + * [3] init layouts + */ + ExecutorService executor = new ThreadPoolExecutor(10, 10, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>()); + final CountDownLatch latch = new CountDownLatch(tempLayoutMap.size()); + + for (final Iterator it = tempLayoutMap.keySet().iterator(); it.hasNext();) { + final String layoutName = it.next(); + + executor.execute(new Runnable() { + public void run() { + Layout layout = null; + try { + layout = tempLayoutMap.get(layoutName); + layout.init(); + LayoutValidator.validate(layout); + putLayout(layout); + } catch(Exception e) { + logger.error("LayoutManager | initialization failed - " + layoutName, e); + MemoryLogger.error("LayoutManager | initialization failed - " + layoutName, e); + layoutMap.remove(layout.getName()); + } finally { + latch.countDown(); + } + } + }); + } + + latch.await(); + executor.shutdown(); + logger.info("LayoutManager | [3] init layouts completed"); + + /** + * [4] validate layouts + */ + + logger.info("LayoutManager | all layouts initialized - layoutMap size[" + + this.layoutMap.size()+"]"); + MemoryLogger.txlog("LayoutManager | all layouts initialized - layoutMap size[" + + this.layoutMap.size()+"]"); + } + + private void clear() { + if(layoutMap != null) layoutMap.clear(); + if(dependencyMap != null) dependencyMap.clear(); + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("[LayoutManager] toString()"); + + Object[] keys = layoutMap.keySet().toArray(); + + for (int i = 0; i < layoutMap.size(); i++) { + sb.append("\n " + keys[i] + " : " + layoutMap.get(keys[i])); + } + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/LayoutNotFoundException.java b/src/main/java/com/eactive/eai/transformer/layout/LayoutNotFoundException.java new file mode 100644 index 0000000..b481b63 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/LayoutNotFoundException.java @@ -0,0 +1,22 @@ +package com.eactive.eai.transformer.layout; + +import com.eactive.eai.transformer.TransformerException; + +public class LayoutNotFoundException extends TransformerException { + private static final long serialVersionUID = -8667483552407975824L; + private final String layoutName; + + public LayoutNotFoundException(String message, String layoutName) { + this(message, layoutName, null); + } + + public LayoutNotFoundException(String message, String layoutName, + Throwable cause) { + super(message, cause); + this.layoutName = layoutName; + } + + public String getLayoutName() { + return layoutName; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/LayoutTreeBuilder.java b/src/main/java/com/eactive/eai/transformer/layout/LayoutTreeBuilder.java new file mode 100644 index 0000000..ed56701 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/LayoutTreeBuilder.java @@ -0,0 +1,90 @@ +package com.eactive.eai.transformer.layout; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import com.eactive.eai.transformer.util.Logger; + + +public final class LayoutTreeBuilder { + private static Logger logger = Logger.getLogger("transformer"); + private HashMap nodeMap; + private List rootList; + + public LayoutTreeBuilder() { + nodeMap = new HashMap<>(); + rootList = new ArrayList<>(); + } + + public void addNode(Item node) throws InvalidNodeException { + // 등록 + nodeMap.put(node.getItemId(), node); + // 상위 노드 가 없을 경우는 채움 + if (node.getParent() == null) { + Item parent = nodeMap.get(node.getParentId()); + + if (parent != null) { + parent.addChild(node); + } else { + // 상위 노드가 결정되지 않으면 나주에 다시 시도 + // (ROOT인 가능성이 큼) + addCandidateNode(node); + } + } + } + + public int nodeSize() { + return nodeMap.size(); + } + + private void addCandidateNode(Item node) { + rootList.add(node); + } + + private Item rebuildCandidateNode() + throws TreeStructureException, InvalidNodeException { + Item rootNode = null; + + int size = rootList.size(); + + for (int i = 0; i < size; i++) { + Item node = rootList.get(i); + + Item parent = nodeMap.get(new Integer( + node.getParentId())); + + if ((parent != null) && !(parent.equals(node))) { + parent.addChild(node); + } else { + if (rootNode != null) { + // 현재 중복된 노드 출력 + + if(logger.isWarnEnabled()){ + logger.warn("========[ rebuildCandidateNode ]========="); + logger.warn("root node: " + rootNode.getParentId()); + logger.warn("root node: " + rootNode.getName()); + logger.warn("candidate: " + node.getParentId()); + logger.warn("candidate: " + node.getName()); + logger.warn("========[ rebuildCandidateNode ]========="); + } + + throw new TreeStructureException("트리의 루트 노드가 중복되었습니다.", + rootNode); + } + rootNode = node; + } + } + + if (rootNode == null) { + throw new TreeStructureException("트리의 루트 노드를 찾지 못했습니다."); + } + + return rootNode; + } + + public Item buildTree() + throws TreeStructureException, InvalidNodeException { + return rebuildCandidateNode(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/LayoutType.java b/src/main/java/com/eactive/eai/transformer/layout/LayoutType.java new file mode 100644 index 0000000..ae69a88 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/LayoutType.java @@ -0,0 +1,54 @@ +package com.eactive.eai.transformer.layout; + +import com.eactive.eai.transformer.dao.LoadingUnit; + + +public class LayoutType extends LoadingUnit { + private static final long serialVersionUID = -386909317895260067L; + private String name; + private String description; + private String genClass; + + + public LayoutType() { + this(""); + } + + public LayoutType(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getGenClass() { + return genClass; + } + + public void setGenClass(String genClass) { + this.genClass = genClass; + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("LayoutType ["); + sb.append("name=").append(name); + sb.append(", description=").append(description); + sb.append("]"); + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/LayoutTypeKey.java b/src/main/java/com/eactive/eai/transformer/layout/LayoutTypeKey.java new file mode 100644 index 0000000..6aac805 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/LayoutTypeKey.java @@ -0,0 +1,42 @@ +package com.eactive.eai.transformer.layout; + +public interface LayoutTypeKey{ + + public static final String OBJECT = "OBJECT"; + + // BYTES + public static final String BYTES = "BYTES"; + public static final String COMBYTES = "COMBYTES"; + public static final String VBYTES = "VBYTES"; + public static final String VFIELD = "VFIELD"; + + //EBCDIC + public static final String EBCDIC = "EBCDIC"; + public static final String COMEBCDIC = "COMEBCDIC"; + public static final String VEBCDIC = "VEBCDIC"; + + //XML + public static final String XML = "XML"; + //JSON + public static final String JSON = "JSON"; + + //기타 + public static final String CARD = "CARD"; + + //모니터링용 + public static final String MVBYTES = "MVBYTES"; + public static final String MVEBCDIC = "MVEBCDIC"; + + //바이패스용 + public static final String FULLBYTES = "FULLBYTES"; + + //바이패스용 + public static final String ODDBYTES = "ODDBYTES"; + + //0x09 delimiter + public static final String DELIMITER = "DELIMITER"; + + public static final String ISO8583 = "ISO8583"; +// public static final String ISO8583_H2H = "ISO8583H2H"; + +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/LayoutTypeManager.java b/src/main/java/com/eactive/eai/transformer/layout/LayoutTypeManager.java new file mode 100644 index 0000000..24e1aa4 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/LayoutTypeManager.java @@ -0,0 +1,146 @@ +package com.eactive.eai.transformer.layout; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.eactive.eai.common.lifecycle.Lifecycle; +import com.eactive.eai.common.lifecycle.LifecycleException; +import com.eactive.eai.common.lifecycle.LifecycleListener; +import com.eactive.eai.common.lifecycle.LifecycleSupport; +import com.eactive.eai.common.util.ApplicationContextProvider; +import com.eactive.eai.transformer.dao.LayoutTypeDao; +import com.eactive.eai.transformer.util.Logger; +import com.eactive.eai.transformer.util.MemoryLogger; + +@Component +public class LayoutTypeManager implements Lifecycle { + private static Logger logger = Logger.getLogger("transformer"); + + private Map layoutTypeMap; + private LifecycleSupport lifecycleSupport = null; + private boolean started; + + @Autowired + private LayoutTypeDao layoutTypeDao; + + private LayoutTypeManager() { + layoutTypeMap = new HashMap<>(); + lifecycleSupport = new LifecycleSupport(this); + } + + public static LayoutTypeManager getInstance() { + return ApplicationContextProvider.getContext().getBean(LayoutTypeManager.class); + } + + public synchronized void reload() { + init(); + if(logger.isDebugEnabled()) { + logger.debug("LayoutTypeManager | reloaded..."); + } + } + + public synchronized void reload(String typeName) { + LayoutType layoutType = layoutTypeDao.findLayoutTypeByName(typeName); + + layoutTypeMap.put(typeName, layoutType); + if(logger.isDebugEnabled()) { + logger.debug("LayoutTypeManager | reloaded layout type - " + typeName); + } + } + + public String[] getAllLayoutTypeName() { + Iterator it = layoutTypeMap.keySet().iterator(); + + String[] keys = new String [layoutTypeMap.size()]; + + for (int i=0; i getLayoutTypes() { + return layoutTypeMap; + } + + public LayoutType getLayoutType(String layoutTypeName) { + if ("ASCII".equals(layoutTypeName)) { + layoutTypeName = LayoutTypeKey.BYTES; + } + if ("VASCII".equals(layoutTypeName)) { + layoutTypeName = LayoutTypeKey.VBYTES; + } + return layoutTypeMap.get(layoutTypeName); + } + + private void init() { + layoutTypeMap = layoutTypeDao.load(); + + logger.info("LayoutTypeManager | all layout types initialized ..."); + MemoryLogger.txlog("LayoutTypeManager | all layout types initialized ..."); + } + + public void init(Map layoutTypeMap) { + this.layoutTypeMap = layoutTypeMap; + } + + public void addLifecycleListener(LifecycleListener listener) { + lifecycleSupport.addLifecycleListener(listener); + } + + public LifecycleListener[] findLifecycleListeners() { + return lifecycleSupport.findLifecycleListeners(); + } + + public void removeLifecycleListener(LifecycleListener listener) { + lifecycleSupport.removeLifecycleListener(listener); + } + + public synchronized void start() throws LifecycleException { + try { + init(); + this.started = true; + } catch (Exception e) { + throw new LifecycleException(e); + } + } + + public synchronized void stop() throws LifecycleException { + try { + clear(); + this.started = false; + } catch (Exception e) { + throw new LifecycleException(e); + } + } + + public boolean isStarted() { + return this.started; + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("[LayoutTypeManager] toString()"); + + Object[] keys = layoutTypeMap.keySet().toArray(); + + for (int i = 0; i < layoutTypeMap.size(); i++) { + sb.append("\n " + keys[i] + " : " + layoutTypeMap.get(keys[i])); + } + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/LayoutValidator.java b/src/main/java/com/eactive/eai/transformer/layout/LayoutValidator.java new file mode 100644 index 0000000..0f65e1a --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/LayoutValidator.java @@ -0,0 +1,151 @@ +package com.eactive.eai.transformer.layout; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import com.eactive.eai.transformer.TransformerException; +import com.eactive.eai.transformer.message.BytesMessage; +import com.eactive.eai.transformer.message.MessageException; +import com.eactive.eai.transformer.message.XMLMessage; +import com.eactive.eai.transformer.util.Logger; +import com.eactive.eai.transformer.util.MemoryLogger; + + +public class LayoutValidator { + private static Logger logger = Logger.getLogger("transformer"); + + private LayoutValidator() { + + } + + public static void validate(Map transformMap) { + for (Iterator iter = transformMap.values().iterator(); iter.hasNext();) { + Layout layout = (Layout) iter.next(); + try { + validate(layout); + } catch(Exception e) { + StringBuilder sb = new StringBuilder(); + sb.append("LayoutValidator | invalid layout : "); + if(layout != null) { + sb.append(layout.getName() + " - \n" + e.getMessage() + "\n" + layout.getRootItem()); + } + else { + sb.append(" - \n" + e.getMessage()); + } + + logger.warn(sb.toString()); + MemoryLogger.error(sb.toString()); + } + } + } + + /** + * validate Layout expression + */ + public static void validate(Layout layout) { + List errors = new ArrayList<>(); + try { + HashMap pathMap = new HashMap<>(); + String path = ""; + for (Iterator iter = layout.getRootItem().fullIterator(); iter.hasNext(); ) { + Item Item = iter.next(); + try { + validate(layout, Item); + } catch(Exception e) { + errors.add(e.getMessage()); + } + + path = Item.getItemPath(); + if(pathMap.get(path) != null) { + throw new Exception("거래(입|출)력항목명(영문)이 중복되었습니다 (" + path + ") 일련번호("+ Item.getSeqNo() +")"); + } + else { + pathMap.put(path, Item.getSeqNo()); + } + } + + if (!errors.isEmpty()) { + StringBuilder sb = new StringBuilder(); + for (Iterator iter2 = errors.iterator(); iter2.hasNext();) { + sb.append(" " + iter2.next()); + if (iter2.hasNext()) { + sb.append("\n"); + } + } + + throw new TransformerException(sb.toString()); + } + } catch(Exception e) { + StringBuilder sb = new StringBuilder(); + sb.append("레이아웃 검증 오류 : "); + sb.append("\n" + e.getMessage()); + throw new MessageException(sb.toString(), e); + } + } + + private static void validate(Layout layout, Item item) { + /** + * depth 체크 + */ + if (item.getDepth() <= 0) + throw new TransformerException("항목명(" + layout.getName() + "/" + item.getName() + ")의 DEPTH(" + item.getDepth() + ")는 0 보다 커야 함"); + + /** + * node type 체크 + * 2014.04.17 VariableXMLMessage 개발에 의한 로직 변경 KSH + * 2020.04.14 XML, UJSON, JSON 모두 가능하도록 변경 (보류) + */ + if (item.getNodeTypeId() == Item.NODE_ATTR) { + if (!(item.getRoot() instanceof XMLMessage) ) { + throw new LayoutInitializationException(layout.getLayoutType().getName() + + ", " + layout.getName() + ", " + item.getName() + + " | ATTR type node cannot be added to BytesMessage/EbcdicMessage", layout.getName()); + } + } + + /** + * occType=*|+ 일 경우, occRef missing check + */ + if (item.getOccType() != null && item.getOccType().matches("\\*|\\+") && item.getRoot() instanceof BytesMessage ) { + if (item.getOccRef() == null || "".equals(item.getOccRef().trim())) { + throw new MessageException(layout.getName() + " - 항목명(" + item.getName() + ")의 반복횟수참조정보 미등록 에러"); + } + } + + /** + * occRef 의 존재 여부 체크 + */ + if (item.getOccRef() != null && !"".equals(item.getOccRef().trim())) { + /** + * layout2 에서 - occRef 에 한글필드명 (description) 을 쓸 경우 처리를 위해 + */ + item.getOccRefItem(); + } + + /** + * FMLMessage 의 경우 Group의 occType = occMin = occMax = 1 이어야 한다. (삭제됨) + */ +// if (layout.getLayoutType().getName().startsWith("FML")) { +// if (item.getNodeTypeId() == Item.NODE_GROUP) { +// if ("".equals(item.getOccType())) +// item.setOccType("1"); +//// if (!item.getOccType().equals("1") || item.getOccMin() != 1 || item.getOccMax() != 1) +//// throw new MessageException(layout.getName() + " - " + item.getName() + " - FMLMessage group item's occType, occMin, occMax must be '1'"); +// } +// } + + /** + * FMLMessage 의 경우 path 값이 반드시 존재해야 한다. (삭제됨) + */ +// if (layout.getLayoutType().getName().startsWith("FML")) { +// if (item.getNodeTypeId() == Item.NODE_FIELD) { +// if (item.getPath()==null || "".equals(item.getPath())) +//// throw new MessageException(layout.getName() + " - " + item.getName() + " - FMLMessage item 'path' must have value"); +// throw new MessageException(layout.getName() + " - FML 레이아웃의 항목(" + item.getName() + ")은 비고에 'path'를 정의해야 함"); +// } +// } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/Leaf.java b/src/main/java/com/eactive/eai/transformer/layout/Leaf.java new file mode 100644 index 0000000..5fd3c19 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/Leaf.java @@ -0,0 +1,378 @@ +package com.eactive.eai.transformer.layout; + +import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; +import java.util.Iterator; + +import com.eactive.eai.transformer.SystemKeys; +import com.eactive.eai.transformer.message.BytesMessage; +import com.eactive.eai.transformer.message.EbcdicMessage; +import com.eactive.eai.transformer.util.IConv; +import com.eactive.eai.transformer.util.XmlUtil; + + +public abstract class Leaf extends Item { + private static final long serialVersionUID = -5946408429750358257L; + + protected Leaf() { + super(); + } + + public void clearValue() { + setValue(null); + } + + public Item findItemByPath(String path) { + if (path.equals(this.path)) { + return this; + } + return null; + } + + public void setDefaultValue(String defaultValue) { + if (defaultValue == null) { + this.defaultValue = defaultValue; + return; + } + //빈값처리 jun's 20210607 + if ("".equals(defaultValue)){ + this.defaultValue = null; + return; + } + + switch (getDataTypeId()) { + case Types.TYPE_UNKNOWN: + break; + + case Types.TYPE_STRING: + this.defaultValue = defaultValue; + break; + + case Types.TYPE_INT: + this.defaultValue = new Integer(defaultValue); + break; + + case Types.TYPE_LONG: + this.defaultValue = new Long(defaultValue); + break; + + case Types.TYPE_SHORT: + this.defaultValue = new Short(defaultValue); + break; + + case Types.TYPE_DOUBLE: + this.defaultValue = new Double(defaultValue); + break; + + case Types.TYPE_FLOAT: + this.defaultValue = new Float(defaultValue); + break; + + case Types.TYPE_BIGDECIMAL: + this.defaultValue = new BigDecimal(defaultValue); + break; + + // BYTE ARRAY + case Types.TYPE_BYTEARRAY: + this.defaultValue = defaultValue.getBytes(); + break; + + // USER DEFINED JAVA OBJECT + case Types.TYPE_OBJECT: + this.defaultValue = defaultValue; + break; + + default: + break; + } + } + + public void initDefaultValue() { + // GRID의 하위항목일 경우, 이전값의 복제로 인한 문제발생 수정 + this.value = getDefaultValue(); + } + + public void initDepth(int depth) { + this.depth = depth; + } + + public void initInclude() { + // do nothing + } + + /** + * OccMin 설정 + * - min 갯수 만큼 sibling을 만든다. + */ + public void initOccMin() { + if (getIndex() != -1) { + return; + } + + /** + * 맨 왼쪽의 item일 경우 -> sibling(clone)을 만들어 줘야 한다. + */ + int min = getOccMin(); + String itemPath = null; + Item clone = null; + + /** + * min 갯수 만큼 sibling(clone)을 만든다. + */ + for (int i = 0; i < min; i++) { + itemPath = normalizeFullName(getItemPath().trim().substring(0, + getItemPath().lastIndexOf('[')) + "[" + i + "]"); + clone = getTop().getOrCreateItem(itemPath); + + /** + * default 값도 설정해 준다. + */ + if (clone.getDefaultValue() != null) { + initDefaultValue(); + } + } + } + + public int initItemParentId(int seq, int parentId){ + int id = 1000 + (seq++); + setItemId(id); + setParentId(parentId); + return seq; + } + + public boolean existMask() { + return "Y".equals(getMask()); + } + + protected Item getItem(String itemPath) { + /** + * leaf (FIELD | ATTRIBUTE) 일 경우, + * 또는 Group/Included Message를 Locating하는 경우 + */ + //normalize 이후는 이런 일은 없겠지? + if (itemPath.equals(name)) { + return this; + } else if (itemPath.endsWith("]") && itemPath.equals(name + "[" + index + "]")) { + return this; + } else { + return null; + } + } + + protected Item getOrCreateItem(String itemPath) { + /** + * 1. leaf node 일 경우 + * 1.1 item 이름과 같을 경우 -> return this + * 1.2 item 이름에 index를 붙인 이름과 같을 경우 (item[index]) -> return this + * 1.3 위의 경우가 아닐 경우 -> return null + */ + if (itemPath.equals(name)) { + return this; + // 튜닝 - 작업 + } else if (itemPath.equals((new StringBuffer(32)).append(name).append("[").append(Integer.toString(index)).append("]").toString())) { + return this; + } else { + return null; + } + } + + /** + * iterator + */ + @Override + public Iterator iterator() { + return new NullIterator(); + } + + @Override + public Iterator fullIterator() { + return iterator(); + } + + + @Override + public Object clone() { + Item clone = (Item) super.clone(); + clone.initDefaultValue(); + clone.setMappedValue(false); + return clone; + } + + public String toString(String tab, boolean bShowAllFlag) { + /** + * index==-1 인 경우 index>=0 인 sibling 이 있으면 표시하지 않는다. + */ + if (index == -1 && next != null && getName().equals(next.getName())) { + return ""; + } + + StringBuilder sb = new StringBuilder(); + + /** + * name + */ + sb.append("+ " + getClass().getSimpleName() + " - ").append(name).append("["); + sb.append(index + "").append("] "); + + /** + * length , decimalpoint + */ + sb.append("{").append(length==-1 ? "" : length+"").append(",").append(decimalPointLength==-1 ? "" : decimalPointLength+"").append("} "); + + /** + * data type + */ + sb.append("(").append(Types.getType(dataTypeId).substring(5)); + if (dataTypeRef.startsWith("PIC")) { + sb.append(", " + dataTypeRef); + } + sb.append(") "); + + /** + * path (if FMLMessage) + */ +// if (getRoot() instanceof FMLMessage) { +// sb.append("(path=" + (path==null ? "" : path) + ") "); +// } + + /** + * occurrence + */ + sb.append("(occ=").append(occType); + sb.append(",").append(occMin); + sb.append(",").append(occMax); + sb.append(",").append(occRef); + sb.append(") "); + + /** + * value + */ + Object newValue = value; + if(value != null) { + if (value instanceof byte[]) { + if (getRoot() instanceof EbcdicMessage) { + newValue = IConv.ebcdicToASCIISOSISpaceEX((byte[]) value); + } + else if (getRoot() instanceof BytesMessage) { + try { + newValue = new String((byte[]) value, SystemKeys.getBytesMessageCharset()); + } catch (UnsupportedEncodingException e) { + newValue = new String((byte[]) value); + } + } else { + newValue = new String((byte[]) value); + } + } else if (value instanceof String) { + if (getRoot() instanceof EbcdicMessage) { + newValue = IConv.ebcdicToASCIISOSISpaceEX(((String) value).getBytes()); + } else { + newValue = new String(((String) value).getBytes()); + } + } else if (value instanceof BigDecimal) { + newValue = ((BigDecimal)value).toPlainString(); + } + } + sb.append("("); + if (value != null) { + sb.append(value.getClass().getName().substring(value.getClass().getName() + .lastIndexOf(Types.FIELD_SEPARATOR) + + 1)); + } + sb.append(":"); + sb.append(newValue); + sb.append(") "); + + + /** + * default value + */ + if (defaultValue != null) { + if (defaultValue instanceof byte[]) { + if (((byte[]) defaultValue).length != 0) + sb.append("(default='").append(new String((byte[]) defaultValue)).append("')"); + } else { + if (!"".equals(defaultValue.toString())) + sb.append("(default='").append(defaultValue).append("')"); + } + } + /** + * multi lang + */ + if (multiLang != null && multiLang.trim().length() > 0){ + sb.append("(multi=").append("Y").append(")"); + }else{ + sb.append("(multi=").append("N").append(")"); + } + + return sb.toString(); + } + + public String toXMLString(String tab, boolean bShowAllFlag) { + /** + * index==-1 인 경우 index>=0 인 sibling 이 있으면 표시하지 않는다. + */ + if (index == -1 && next != null && getName().equals(next.getName())) { + return ""; + } + + StringBuilder sb = new StringBuilder(); + + /** + * name + */ + sb.append("<"+name+ " desc=\""+description+"\""+( length==-1 ? "" : " length=\""+length )+"\">"); + + /** + * value + */ + String newValue = null; + if(value != null) { + if (value instanceof byte[]) { + if (getRoot() instanceof EbcdicMessage) { + newValue = IConv.ebcdicToASCIISOSISpaceEX((byte[]) value); + } else if (getRoot() instanceof BytesMessage) { + try { + newValue = new String((byte[]) value, SystemKeys.getBytesMessageCharset()); + } catch (UnsupportedEncodingException e) { + newValue = new String((byte[]) value); + } + } else { + newValue = new String((byte[]) value); + } + } else if (value instanceof String) { + if (getRoot() instanceof EbcdicMessage) { + newValue = IConv.ebcdicToASCIISOSISpaceEX(((String) value).getBytes()); + } else { + newValue = (String)value; + } + } else if (value instanceof BigDecimal) { + value = ((BigDecimal)value).toPlainString(); + if (getRoot() instanceof EbcdicMessage) { + newValue = IConv.ebcdicToASCIISOSISpaceEX(((String) value).getBytes()); + } else { + newValue = (String)value; + } + } + else if (value instanceof Integer) { + value = ((Integer) value).toString(); + if (getRoot() instanceof EbcdicMessage) { + newValue = IConv.ebcdicToASCIISOSISpaceEX(((String) value).getBytes()); + } else { + newValue = (String)value; + } + } + else if (value instanceof Long) { + value = ((Long) value).toString(); + if (getRoot() instanceof EbcdicMessage) { + newValue = IConv.ebcdicToASCIISOSISpaceEX(((String) value).getBytes()); + } else { + newValue = (String)value; + } + } + } + sb.append(XmlUtil.escapeTags(newValue)); + sb.append(""); + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/NullIterator.java b/src/main/java/com/eactive/eai/transformer/layout/NullIterator.java new file mode 100644 index 0000000..e9921db --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/NullIterator.java @@ -0,0 +1,20 @@ +package com.eactive.eai.transformer.layout; + +import java.util.Iterator; + + +public class NullIterator implements Iterator { + + public boolean hasNext() { + return false; + } + + public Object next() { + return null; + } + + @Override + public void remove() { + throw new UnsupportedOperationException(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/TreeStructureException.java b/src/main/java/com/eactive/eai/transformer/layout/TreeStructureException.java new file mode 100644 index 0000000..9f985d8 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/TreeStructureException.java @@ -0,0 +1,30 @@ +package com.eactive.eai.transformer.layout; + +public class TreeStructureException extends Exception { + private static final long serialVersionUID = 7610336078083485329L; + private Item item1; + private Item item2; + + public TreeStructureException(String message) { + this(message, null, null); + } + + public TreeStructureException(String message, Item item1) { + this(message, item1, null); + } + + public TreeStructureException(String message, Item item1, + Item item2) { + super(message); + this.item1 = item1; + this.item2 = item2; + } + + public Item getItem1() { + return item1; + } + + public Item getItem2() { + return item2; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/Types.java b/src/main/java/com/eactive/eai/transformer/layout/Types.java new file mode 100644 index 0000000..1db040d --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/Types.java @@ -0,0 +1,99 @@ +package com.eactive.eai.transformer.layout; + +public class Types { + + public static final String FIELD_SEPARATOR = "."; //"$"; + + public static final int TYPE_UNKNOWN = 2100; + public static final int TYPE_STRING = 2101; + public static final int TYPE_INT = 2102; + public static final int TYPE_LONG = 2103; + public static final int TYPE_SHORT = 2104; + public static final int TYPE_DOUBLE = 2105; + public static final int TYPE_FLOAT = 2106; + + /** ASCII CHAR (1byte) */ + public static final int TYPE_CHAR = 2107; + public static final int TYPE_BYTE = 2108; + public static final int TYPE_DATE = 2109; + public static final int TYPE_TIME = 2110; + public static final int TYPE_TIMESTAMP = 2111; + + /** SHORT, INTEGER, LONG, FLOAT, DOUBLE */ + public static final int TYPE_NUMBER = 2112; + + public static final int TYPE_BYTEARRAY = 2113; + public static final int TYPE_NUMERIC = 2114; + public static final int TYPE_PACKDECIMAL = 2115; + public static final int TYPE_OBJECT = 2116; + public static final int TYPE_BOOLEAN = 2117; + public static final int TYPE_BIGDECIMAL = 2118; + + private Types() { + + } + + public static String getType(int type) { + switch (type) { + case TYPE_UNKNOWN: + return "TYPE_UNKNOWN"; + + case TYPE_STRING: + return "TYPE_STRING"; + + case TYPE_INT: + return "TYPE_INT"; + + case TYPE_LONG: + return "TYPE_LONG"; + + case TYPE_SHORT: + return "TYPE_SHORT"; + + case TYPE_DOUBLE: + return "TYPE_DOUBLE"; + + case TYPE_FLOAT: + return "TYPE_FLOAT"; + + case TYPE_CHAR: + return "TYPE_CHAR"; + + case TYPE_BYTE: + return "TYPE_BYTE"; + + case TYPE_DATE: + return "TYPE_DATE"; + + case TYPE_TIME: + return "TYPE_TIME"; + + case TYPE_TIMESTAMP: + return "TYPE_TIMESTAMP"; + + case TYPE_NUMBER: + return "TYPE_NUMBER"; + + case TYPE_BYTEARRAY: + return "TYPE_BYTEARRAY"; + + case TYPE_NUMERIC: + return "TYPE_NUMERIC"; + + case TYPE_PACKDECIMAL: + return "TYPE_PACKDECIMAL"; + + case TYPE_OBJECT: + return "TYPE_OBJECT"; + + case TYPE_BOOLEAN: + return "TYPE_BOOLEAN"; + + case TYPE_BIGDECIMAL: + return "TYPE_BIGDECIMAL"; + + default: + return "TYPE_UNKNOWN"; + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/mapper/LayoutItemMapper.java b/src/main/java/com/eactive/eai/transformer/layout/mapper/LayoutItemMapper.java new file mode 100644 index 0000000..a3c439e --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/mapper/LayoutItemMapper.java @@ -0,0 +1,238 @@ +package com.eactive.eai.transformer.layout.mapper; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.mapstruct.InheritInverseConfiguration; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; +import org.mapstruct.Named; +import org.mapstruct.ObjectFactory; + +import com.eactive.eai.data.entity.onl.transformer.layout.LayoutEntity; +import com.eactive.eai.data.entity.onl.transformer.layout.LayoutItemEntity; +import com.eactive.eai.data.mapper.BaseMapperConfig; +import com.eactive.eai.data.mapper.GenericMapper; +import com.eactive.eai.data.mapper.StringTrimMapper; +import com.eactive.eai.transformer.dao.TransformerDaoException; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.ItemFactory; +import com.eactive.eai.transformer.layout.LayoutTypeKey; +import com.eactive.eai.transformer.message.BytesMessage; +import com.eactive.eai.transformer.message.CardMessage; +import com.eactive.eai.transformer.message.CommonBytesMessage; +import com.eactive.eai.transformer.message.CommonEbcdicMessage; +import com.eactive.eai.transformer.message.DelimiterMessage; +import com.eactive.eai.transformer.message.EbcdicMessage; +import com.eactive.eai.transformer.message.FullBytesMessage; +import com.eactive.eai.transformer.message.ISO8583Message; +import com.eactive.eai.transformer.message.ISO8583MessageFactory; +import com.eactive.eai.transformer.message.JSONMessage; +import com.eactive.eai.transformer.message.MonitoringVBytesMessage; +import com.eactive.eai.transformer.message.MonitoringVEbcdicMessage; +import com.eactive.eai.transformer.message.ObjectMessage; +import com.eactive.eai.transformer.message.OddBytesMessage; +import com.eactive.eai.transformer.message.VariableBytesMessage; +import com.eactive.eai.transformer.message.VariableEbcdicMessage; +import com.eactive.eai.transformer.message.VariableFieldMessage; +import com.eactive.eai.transformer.message.XMLMessage; + +@Mapper(config = BaseMapperConfig.class) +public abstract class LayoutItemMapper implements GenericMapper { + + @Mapping(source = "id.loutname", target = "layoutName") + @Mapping(source = "id.loutitemname", target = "name") + @Mapping(source = "id.loutitemserno", target = "seqNo") + @Mapping(source = "loutitemnodeptrnidname", target = "nodeTypeId") + @Mapping(source = "loutitemidname", target = "itemId") + @Mapping(source = "parntloutitemidname", target = "parentId") + @Mapping(source = "loutitemptrnidname", target = "dataTypeId") + @Mapping(source = "loutitemdesc", target = "description") + @Mapping(source = "loutitempathname", target = "path") + @Mapping(source = "loutitemlencnt", target = "length") + @Mapping(source = "loutitemrefinfo", target = "refInfo") + @Mapping(source = "loutitemrefinfo2", target = "occRef", qualifiedBy = StringTrimMapper.class) + @Mapping(source = "loutitemoccurptrndstcd", target = "occType") + @Mapping(source = "loutitemmaxoccurnoitm", target = "occMax") + @Mapping(source = "loutitemminoccurnoitm", target = "occMin") + @Mapping(source = "loutitembascval", target = "defaultValue", qualifiedBy = StringTrimMapper.class) + @Mapping(source = "loutitemmskyn", target = "mask") + @Mapping(source = "loutitemmasklength", target = "maskLength") + @Mapping(source = "loutitemmaskoffset", target = "maskOffset") + @Mapping(source = "multilang", target = "multiLang", qualifiedBy = StringTrimMapper.class) + @Mapping(source = "loutdptcnt", target = "depth") + @Mapping(source = "decptlencnt", target = "decimalPointLength") + @Mapping(source = "loutitemrefptrnidname", target = "dataTypeRef") + @Override + public abstract Item toVo(LayoutItemEntity entity); + + @InheritInverseConfiguration + @Mapping(source = "defaultValue", target = "loutitembascval", qualifiedByName = "defaultValueToLoutitembascval") + public abstract LayoutItemEntity toEntity(Item item); + + @Named("defaultValueToLoutitembascval") + String defaultValueToLoutitembascval(Object defaultValue) { + if (defaultValue == null) { + return ""; + } + + if (defaultValue instanceof byte[]) { + return new String((byte[]) defaultValue); + } else { + return defaultValue.toString(); + } + } + + @ObjectFactory + public Item createVo(LayoutItemEntity layoutItemEntity) { + Item item = null; + LayoutEntity layoutEntity = layoutItemEntity.getLayoutEntity(); + if (layoutItemEntity.getLoutitemnodeptrnidname() == Item.NODE_MESSAGE) { + // root item + item = createRootItem(layoutEntity); + } else { + // child item + int nodeTypeId = layoutItemEntity.getLoutitemnodeptrnidname(); + item = ItemFactory.createItem(nodeTypeId); + } + return item; + } + + public List mapLayoutItemEntity(Item item) { + List entities = new ArrayList<>(); + mapLayoutItemEntity(item, entities); + return entities; + } + + public void mapLayoutItemEntity(Item item, @MappingTarget List entities) { + LayoutItemEntity layoutItemEntity = toEntity(item); + entities.add(layoutItemEntity); + + if (!item.isField() && !item.isAttr() && item.getChildCount() != 0) { + for (int i = 0; i < item.getChildCount(); i++) { + mapLayoutItemEntity(item.getChild(i), entities); + } + } + } + + public Item mapRootItem(List entities) { + + LayoutItemEntity layoutItemEntity = entities.stream().findFirst() + .orElseThrow(() -> new TransformerDaoException("LayoutItem이 없습니다.")); + String layoutName = layoutItemEntity.getId().getLoutname(); + + try { + + Iterator iter = entities.iterator(); + Item root = toVo(iter.next()); + + if (root.getParentId() != 0) { + throw new TransformerDaoException("ROOT Item ParntLoutItemIDName는 0 이어야 합니다. - " + root.getParentId()); + } + + if (root.getNodeTypeId() != Item.NODE_MESSAGE) { + throw new TransformerDaoException( + "ROOT Item Node Type은 MESSAGE TYPE이어야 합니다. - " + root.getNodeTypeId()); + } + + Item parent = root; + while (iter.hasNext()) { + Item child = toVo(iter.next()); + + parent = getRecursiveParent(child, parent, layoutName); + + switch (child.getNodeTypeId()) { + case Item.NODE_MESSAGE: + case Item.NODE_GROUP: + parent.addChild(child); + child.setParent(parent); + parent = child; + break; + case Item.NODE_FIELD: + case Item.NODE_ATTR: + parent.addChild(child); + child.setParent(parent); + break; + default: + throw new TransformerDaoException("Layout Item 의 타입이 정의된 값이 아닙니다. : " + child); + } + } + + return root; + } catch (Exception e) { + throw new TransformerDaoException(e.getMessage() + "[" + layoutName + "]", e); + } + + } + + public Item getRecursiveParent(Item child, Item parent, String layoutName) { + if (parent == null) { + StringBuilder sb = new StringBuilder(); + sb.append("item의 parent id 지정이 잘못 되었읍니다. - "); + sb.append("layout=" + layoutName + ", "); + sb.append("child=" + child.getName() + ", "); + sb.append("child's parent id=" + child.getParentId()); + throw new TransformerDaoException(sb.toString()); + } + + if (child.getParentId() == parent.getItemId()) + return parent; + else + return getRecursiveParent(child, parent.getParent(), layoutName); + } + + public Item createRootItem(LayoutEntity layoutEntity) { + Item item = null; + String layoutType = layoutEntity.getLoutptrnname(); + + if (layoutType.equals(LayoutTypeKey.BYTES)) { + item = new BytesMessage(); + } else if (layoutType.equals(LayoutTypeKey.OBJECT)) { + item = new ObjectMessage(); + } else if (layoutType.equals(LayoutTypeKey.XML)) { + item = new XMLMessage(); + } else if (layoutType.equals(LayoutTypeKey.JSON)) { + item = new JSONMessage(); + } else if (layoutType.equals(LayoutTypeKey.EBCDIC)) { + item = new EbcdicMessage(); + } else if (layoutType.equals(LayoutTypeKey.CARD)) { + item = new CardMessage(); + } else if (layoutType.equals(LayoutTypeKey.COMBYTES)) { + item = new CommonBytesMessage(); + } else if (layoutType.equals(LayoutTypeKey.COMEBCDIC)) { + item = new CommonEbcdicMessage(); + } else if (layoutType.equals(LayoutTypeKey.VBYTES)) { + item = new VariableBytesMessage(); + } else if (layoutType.equals(LayoutTypeKey.VFIELD)) { + item = new VariableFieldMessage(); + } else if (layoutType.equals(LayoutTypeKey.VEBCDIC)) { + item = new VariableEbcdicMessage(); + } else if (layoutType.equals(LayoutTypeKey.FULLBYTES)) {// 바이패스를 위해서 + item = new FullBytesMessage(); + } else if (layoutType.equals(LayoutTypeKey.MVBYTES)) {// 오류 파싱을 위해서 + item = new MonitoringVBytesMessage(); + } else if (layoutType.equals(LayoutTypeKey.MVEBCDIC)) {// 오류 파싱을 위해서 + item = new MonitoringVEbcdicMessage(); + } else if (layoutType.equals(LayoutTypeKey.ODDBYTES)) {// 금결원 응답전문 + item = new OddBytesMessage(); + } else if (layoutType.equals(LayoutTypeKey.DELIMITER)) { + item = new DelimiterMessage(); + } else if (layoutType.equals(LayoutTypeKey.ISO8583)) { + item = new ISO8583Message(); + } +// else if (layoutType.equals(LayoutTypeKey.ISO8583_H2H)) { +// item = new ISO8583H2HMessage(); +// } + else if (ISO8583MessageFactory.isISO8583Layout(layoutType)) { + item = ISO8583MessageFactory.create(layoutType); + } + + if (item == null) { + throw new TransformerDaoException("unsupported layout type - " + layoutType); + } + return item; + } + +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/mapper/LayoutMapper.java b/src/main/java/com/eactive/eai/transformer/layout/mapper/LayoutMapper.java new file mode 100644 index 0000000..b1c830d --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/mapper/LayoutMapper.java @@ -0,0 +1,64 @@ +package com.eactive.eai.transformer.layout.mapper; + +import org.mapstruct.AfterMapping; +import org.mapstruct.InheritConfiguration; +import org.mapstruct.InheritInverseConfiguration; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; +import org.mapstruct.ReportingPolicy; + +import com.eactive.eai.data.entity.onl.transformer.layout.LayoutEntity; +import com.eactive.eai.data.mapper.GenericMapper; +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.Message; + +@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = { LayoutTypeMapper.class, + LayoutItemMapper.class }) +public interface LayoutMapper extends GenericMapper { + + @Mapping(source = "loutname", target = "name") + @Mapping(source = "loutdesc", target = "description") + @Mapping(source = "loutptrnname", target = "layoutType") + @Mapping(source = "layoutItemEntities", target = "rootItem") + @Mapping(source = "useyn", target = "useYn") + @Override + Layout toVo(LayoutEntity entity); + + @InheritInverseConfiguration(name = "toVo") + @Mapping(source = "lastUpdateDate", target = "lastamndhms") + @Mapping(source = "bzwkDstcd", target = "eaibzwkdstcd") + @Mapping(source = "applicationName", target = "uapplname") + @Mapping(source = "systemInterface", target = "sysintfacname") + @Mapping(source = "eaiSvrDstcd", target = "eaisevrdstcd") + @Mapping(source = "modifImgTstusDstcd", target = "modfimgtstusdstcd") + @Mapping(source = "useYn", target = "useyn") + @Override + LayoutEntity toEntity(Layout vo); + + @InheritConfiguration(name = "toEntity") + void updateLayoutEntity(Layout vo, @MappingTarget LayoutEntity entity); + + @InheritConfiguration(name = "toVo") + void updateLayout(LayoutEntity entity, @MappingTarget Layout vo); + + /** + * LayoutItemEntity 에 LayoutEntity를 넣는다 + * + * @param vo + * @param entity + */ + @AfterMapping + default void mapEntityAfterMappingLayoutItemEntities(Layout vo, @MappingTarget LayoutEntity entity) { + entity.getLayoutItemEntities().forEach(layoutItemEntity -> layoutItemEntity.setLayoutEntity(entity)); + } + + /** + * RootItem에 layout을 넣는다 + */ + @AfterMapping + default void mapLayoutAfterMappingRootItem(LayoutEntity entity, @MappingTarget Layout vo) { + ((Message) vo.getRootItem()).setLayout(vo); + } + +} diff --git a/src/main/java/com/eactive/eai/transformer/layout/mapper/LayoutTypeMapper.java b/src/main/java/com/eactive/eai/transformer/layout/mapper/LayoutTypeMapper.java new file mode 100644 index 0000000..52d5f41 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/layout/mapper/LayoutTypeMapper.java @@ -0,0 +1,47 @@ +package com.eactive.eai.transformer.layout.mapper; + +import org.mapstruct.BeanMapping; +import org.mapstruct.InheritConfiguration; +import org.mapstruct.InheritInverseConfiguration; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.MappingTarget; +import org.mapstruct.NullValuePropertyMappingStrategy; +import org.mapstruct.ReportingPolicy; + +import com.eactive.eai.data.entity.onl.transformer.layout.LayoutTypeEntity; +import com.eactive.eai.data.mapper.GenericMapper; +import com.eactive.eai.transformer.dao.TransformerDaoException; +import com.eactive.eai.transformer.layout.LayoutType; +import com.eactive.eai.transformer.layout.LayoutTypeManager; + +@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) +public abstract class LayoutTypeMapper implements GenericMapper { + + @Mapping(source = "loutptrnname", target = "name") + @Mapping(source = "loutptrndesc", target = "description") + @Mapping(source = "msgloutcretnclsname", target = "genClass") + @Override + public abstract LayoutType toVo(LayoutTypeEntity entity); + + @InheritInverseConfiguration + @Override + public abstract LayoutTypeEntity toEntity(LayoutType vo); + + @BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE) + @InheritConfiguration + public abstract void updateFromVo(LayoutType vo, @MappingTarget LayoutTypeEntity entity); + + public LayoutType toLayoutType(String layoutTypeName) { + LayoutType layoutType = LayoutTypeManager.getInstance().getLayoutType(layoutTypeName); + if (layoutType == null) { + throw new TransformerDaoException("LayoutTypeManager에서 LoutPtrnName을 찾을 수 없습니다. - " + layoutTypeName); + } + return layoutType; + } + + public String toString(LayoutType layoutType) { + return layoutType.getName(); + } + +} diff --git a/src/main/java/com/eactive/eai/transformer/message/BytesMessage.java b/src/main/java/com/eactive/eai/transformer/message/BytesMessage.java new file mode 100644 index 0000000..790b022 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/BytesMessage.java @@ -0,0 +1,398 @@ +package com.eactive.eai.transformer.message; + + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.Stack; + +import org.apache.commons.lang3.StringUtils; + +import com.eactive.eai.transformer.SystemKeys; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.LayoutTypeKey; +import com.eactive.eai.transformer.layout.Types; +import com.eactive.eai.transformer.util.ByteUtil; +import com.eactive.eai.transformer.util.CommonLib; +import com.eactive.eai.transformer.util.Constants; +import com.eactive.eai.transformer.util.IConv; + + +/** + *
+ * BYTE ARRAY(전문) 형식의 데이터를 변환하기 위한 메시지.
+ * 전문의 길이는 고정 및 가변을 처리할 수 있게 되어 있음.
+ *
+ * [제약 사항]
+ * 현재는 고정 필드에 대해서만 처리 가능.
+ *
+ * [PATH 정의]
+ * PATH           =  +  + 
+ * ITEM_TYPE      = 'F' | 'G' | 'M'
+ * STATIC_PATH    = OFFSET
+ * 
+ */ +public class BytesMessage extends Message { + private static final long serialVersionUID = 6266627403215834972L; + public static final String NAME = LayoutTypeKey.BYTES; + protected byte[] data; + protected boolean bStaled = false; + + // KBANK 표준전문의 경우 UTF-8을 사용 + //TODO: 설정으로 처리 가능해지는 경우 해당 로직 반영 필요 + private String defaultCharset = StringUtils.defaultString(SystemKeys.getBytesMessageCharset(), "utf-8"); + + public BytesMessage() { + super(); + } + + public void createObject() { + data = new byte[0]; + } + + // 전문일 경우 숫자형문자로 정의 + @Override + public int getInt(String itemPath) { + try { + Item item = getItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + Object value = item.getValue(); + if (value == null) { + return 0; + } else if (value instanceof byte[]) { + return Integer.parseInt(new String(((byte[]) value)).trim()); + } else { + throw new InvalidAccessException("레이아웃항목의 값이 숫자가 아님", itemPath); + } + } catch (Exception e) { + throw new InvalidAccessException(e.getMessage(), itemPath, this, e); + } + } + + @Override + public void setInt(String itemPath, int value) { + int newValue = value; + super.setInt(itemPath, newValue); + + Item item = getOrCreateItem(itemPath, true); + try { + setBytes(itemPath, StringUtils.leftPad(String.valueOf(value), item.getLength(), "0").getBytes()); + } catch(Exception e) { + throw new MessageException(e.getMessage(), e); + } + } + + protected void composeData(Item item, Object value) { + if (item.getIndex() < 0) + return; + + if (!bStaled) { + bStaled = true; + } + } + + public Object getData() throws InvalidDataTypeException { + if (bStaled) { + try { + data = toByteArray(); + } catch(Exception e) { + throw new InvalidDataTypeException(e.getMessage(),"BytesMessage.getData() method", e); + } + bStaled = false; + } + + return getDataBytes(); + } + + protected byte[] toByteArray() { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + try { + for (Iterator iter = iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + + /** + * index == -1 인 경우는 무시한다 + */ + if (item == null || item.getIndex() == -1) { + continue; + } + + if(item.getNodeTypeId() == NODE_FIELD) { + if (item.getValue() == null) { + // NULL -> space padding + bos.write( ByteUtil.padding(new byte[0], item.getLength()) ); + } else if (item.getValue() instanceof String) { + bos.write( ByteUtil.padding((String) item.getValue(), item.getLength()) ); + } else if (item.getValue() instanceof Number) { + bos.write( ByteUtil.padding(((Number) item.getValue()).toString(), item.getLength()) ); + } else { + bos.write( ByteUtil.padding((byte[]) item.getValue(), item.getLength()) ); + } + } + } + return bos.toByteArray(); + } catch(Exception e) { + logger.error("retrun zero-bytes.", e); + return new byte[0]; + } + finally { + if(bos != null) { + try { + bos.close(); + } catch (IOException e) { + if(logger.isWarnEnabled()) logger.warn("bos.close failed.", e); + } + } + } + + } + + protected void doSetData(Object data) { + if(data instanceof byte[]) { + this.data = (byte[]) data; + } + if(data instanceof String) { + try { + this.data = ((String)data).getBytes(defaultCharset); + } catch (UnsupportedEncodingException e) { + logger.warn("charset error, use default charset", e); + this.data = ((String)data).getBytes(); + } + } + setDataBytes( this.data ); + } + + // only for BytesMessage & CommonBytesMessage + protected byte[] setDataBytes(byte[] data ) { + int originalLength = data.length; + Item item = null; + Stack itemStack = new Stack(); + + int startPosition = 0; + int remainSize = originalLength; + + addItemToStack(itemStack, childList); + while( ! itemStack.empty()) { + item = itemStack.pop(); + if(item == null) { + continue; + } + /** + * occType = * | + | (occMax>occMin) 일 경우 + * occRef를 참조하여 그 갯수만큼 item을 생성한다. + */ + if (item.getIndex()==-1 && ("*".equals(item.getOccType()) || "+".equals(item.getOccType()) || item.getOccMax()>item.getOccMin())) { + int occCount = 0; + String path =""; + try { + path = getOccRefItem(item); + occCount = item.getRoot().getInt(path); + } + catch(Exception oe) { + throw new InvalidAccessException(item.getName() +"의 반복참조정보 값이 숫자가 아닙니다 - " + path + " : " + oe.getMessage() , path); + } + + if (occCount < item.getOccMin() + || (!"*".equals(item.getOccType()) && !"+".equals(item.getOccType()) && occCount > item.getOccMax())) { + throw new InvalidAccessException("반복횟수가 OccMin~OccMax 의 범위를 벗어납니다. , " + item.getName(), item.getItemPath()); + } + + /** + * 반복횟수 참조정보가 비정상적으로 클때 방어로직 + * 그리드 오류처리로직) 자식배열 길이합계 * 반복횟수 참조정보 > 셋팅하는 실제 데이터 + * 필드 오류처리조직) 필드 길이 * 반복횟수 참조정보 > 셋팅하는 실제 데이터 + */ +// int sumChildLength = 0; +// Item childItem= null; +// if (item.isGroup()){ +// for(int i=0;i data.length){ +//// throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 자식배열 길이합계("+sumChildLength+") = 계산된길이("+(sumChildLength * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); +// throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 자식배열 길이합계("+sumChildLength+") = 계산된길이("+(sumChildLength * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , path); +// } +// }else{ +// if (item.getLength() * occCount > data.length){ +//// throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 길이("+item.getLength()+") = 계산된길이("+(item.getLength() * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); +// throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 길이("+item.getLength()+") = 계산된길이("+(item.getLength() * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , path); +// } +// } + + ArrayList itemList = new ArrayList<>(); + item.createItem(item, + item.getRoot().normalizeFullName(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getName() + "[" + (occCount-1) + "]"), + false, itemList); + + addItemToStack(itemStack, itemList); + } + + /** + * index == -1 인 경우는 무시한다 + */ + if (item.getIndex() == -1) { + continue; + } + + switch (item.getNodeTypeId()) { + case NODE_FIELD: + try { + item.setValue(ByteUtil.cut(data, startPosition, item.getLength())); + startPosition += item.getLength(); + remainSize -= item.getLength(); + } catch(Exception e) { + StringBuilder sb = new StringBuilder(); + sb.append("전문레이아웃 매핑 중 데이터 사이즈 오류 ("+e.getMessage()+")"); + sb.append("\n"); + sb.append("전문레이아웃="+item.getItemPath()); + throw new MessageException(sb.toString()); + } + break; + case NODE_GROUP: + addItemToStack(itemStack, item.getChildList()); + break; + } + } + + if (remainSize > 0) { + StringBuilder sb = new StringBuilder(); + String itemPath = (item==null?"":item.getItemPath()); + sb.append("setData() : " + itemPath + " : data size가 맞지 않습니다. (overflow) "); + sb.append("전문레이아웃 매핑 중 데이터 사이즈 오류 (정의한 길이=" + (originalLength-remainSize) +", 받은 길이="+ originalLength + ")"); + sb.append("\n"); + sb.append("전문레이아웃="+itemPath); + throw new MessageSetDataOverflowException(sb.toString()); + } + + return data; + } + + //-------------------------------------------------------------------------- + // Additional Getter/Setter + + public byte[] getDataBytes() throws InvalidDataTypeException { + /* + if (isNotVariableDataUpdated()) { + validateVariable(); + } + */ + return data; + } + + public int getDataLength() { + if (data == null) { + return -1; + } else { + return data.length; + } + } + + public void clearData() { + clearData((byte) 0x00); + clearValue(); + } + + public void clearData(byte fillByte) { + if (data != null) { + for (int i = 0; i < data.length; i++) { + data[i] = fillByte; + } + } + } + + public String toLogString() { + return toLogString(false); + } + + public String toLogString(boolean ebcdic) { + if (ebcdic) { + byte[] buff = makeBytesLogString(); + return IConv.ebcdicToASCIIWithSOSIEX(buff); + } else { + byte[] buff = makeBytesLogString(); + try { + return new String(buff, defaultCharset); + } catch (UnsupportedEncodingException e) { + logger.warn("unsuppotred charset : " + defaultCharset, e); + return new String(buff); + } + } + } + + protected byte[] makeBytesLogString() { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + try { + for (Iterator iter = iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + + /** + * index == -1 인 경우는 무시한다 + */ + if (item == null || item.getIndex() < 0) { + continue; + } + + if(item.getNodeTypeId() == NODE_FIELD) { + if ("Y".equals(item.getMask()) && item.getValue() != null) { + String mValue = maskString2(item.getValue(), item.getMaskLength(), item.getMaskOffset()); + bos.write( ByteUtil.padding(mValue, item.getLength()) ); + } else { + if (item.getValue() == null) { + bos.write( ByteUtil.padding(new byte[0], item.getLength()) ); + } else if (item.getValue() instanceof String) { + bos.write( ByteUtil.padding((String) item.getValue(), item.getLength()) ); + } else if (item.getValue() instanceof Number) { + bos.write( ByteUtil.padding(((Number) item.getValue()).toString(), item.getLength()) ); + } else { + bos.write( ByteUtil.padding((byte[]) item.getValue(), item.getLength()) ); + } + } + } + } + return bos.toByteArray(); + } catch(Exception e) { + logger.error("retrun zero-bytes.", e); + return new byte[0]; + } + finally { + if(bos != null) + try { + bos.close(); + } catch (IOException e) { + if(logger.isWarnEnabled()) logger.warn("bos.close failed.", e); + } + } + } + + @Override + public String toString() { + // if staled -> reorganize data + try { + getData(); + } catch (InvalidDataTypeException e) { + logger.error("[BytesMessage] " + e.getMessage(), e); + } + + StringBuilder sb = new StringBuilder(); + if ("BytesMessage".equals(getClass().getSimpleName())) { + sb.append(getName() + " (BytesMessage)"); + } + sb.append(super.toString()); + if (data != null) { + sb.append("\n" + Constants.TAB + " | data = " + CommonLib.hexDumpTab(data)); + } + sb.append("\n" + Constants.TAB + " +--------------------------------------------------------------------------------------------------+"); + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/CardMessage.java b/src/main/java/com/eactive/eai/transformer/message/CardMessage.java new file mode 100644 index 0000000..6b8db35 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/CardMessage.java @@ -0,0 +1,453 @@ +package com.eactive.eai.transformer.message; + +import java.io.UnsupportedEncodingException; +import java.util.Iterator; + +import com.eactive.eai.transformer.function.util.CodeConversion; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.util.ByteUtil; +import com.eactive.eai.transformer.util.CommonLib; +import com.eactive.eai.transformer.util.IConv; + +/** + *
+ * CICS CARD 전문을 위한 메시지타입.
+ * Delimeter방식으로 처리됨
+ * 
+ */ +public class CardMessage extends BytesMessage { +// //------------------------------------------------------------ +// // Card Delimeter 정의 : 20080228 DHLEE +// //------------------------------------------------------------ +// private static final byte TH = (byte) 0xFF; // Text Header 구분자 +// private static final byte FD = (byte) 0x2A; // Field Delimeter +// private static final byte LF = (byte) 0x0A; // Line Feed +// private static final byte CD = (byte) 0x1A; // Cell Delimeter +// private static final byte RD = (byte) 0x1B; // Record Delimeter +// //------------------------------------------------------------ + + public static final String NAME = "CARD"; + protected byte[] data; + private boolean bStaled = false; + + public CardMessage() { + super(); + } + + @Override + public void createObject() { + data = new byte[0]; + } + + @Override + protected void composeData(Item item, Object value) { + if (item.getIndex() < 0) + return; + + if (!bStaled) { + bStaled = true; + } + } + + @Override + public Object getData() throws InvalidDataTypeException { + if (bStaled) { + try { + data = toCardByteArray(); + } catch (Exception e) { + throw new InvalidDataTypeException(e.getMessage(), "CardMessage.getData() method", + e); + } + bStaled = false; + } + + return getDataBytes(); + } + + @Override + protected void doSetData(Object data) { + this.data = (byte[]) data; + int rcvLength = this.data.length; + + byte[] _data = ByteUtil.copy(this.data); + + // System.out.println(CommonLib.getDumpMessage(_data)); + // ------------------------------------------ + // TODO : Card의 Delimeter 방식으로 parsing 하도록 수정해야 함 + // 전문의 HEADER부를 처리하는 로직이 필요 + // OP Message LL 과 OP Message를 처리하는 방안 + // 1. OP Message LL, OP Message를 떼어내고 Parsing 하는 방법 + // ------------------------------------------ + // Delimeter방식 + // byte[] result = setCardDataBytes((byte[]) _data); + + byte[] result = setCardFixedDataBytes((byte[]) _data); + + if (result.length > 0) { + StringBuilder sb = new StringBuilder(10000); + sb.append("[CardMessage] setData() : " + getItemPath() + " : data 갯수가 맞지 않습니다. "); + sb.append("length=" + rcvLength + ", (+" + result.length + ")"); + sb.append("\nData Dump (Original Message) = " + CommonLib.hexDump((byte[]) data)); + sb.append("\nMessage Dump = \n" + toString()); + logger.error(sb.toString()); + throw new InvalidAccessException("[CardMessage] setData() : " + getItemPath() + + " : data 갯수가 맞지 않습니다. length=" + rcvLength + ", (+" + result.length + ")", + getItemPath()); + } + } + + // ---------------------------------------------------------- + // only for CardMessage : 고정길이 방식 + // CardMessage의 setData() 함수의 recursive 처리를 위한 함수 + // ---------------------------------------------------------- + private byte[] setCardFixedDataBytes(byte[] data) throws InvalidAccessException { + if(data == null) return new byte[0]; + for (Iterator iter = iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + if(item == null) continue; + switch (item.getNodeTypeId()) { + case NODE_FIELD: + if (item.getIndex() != -1) { + try { + item.setValue(ByteUtil.cut(data, item.getLength())); + } catch (Exception e) { + throw new InvalidAccessException("error when set value to item - " + (item==null?"":item.getName()), e); + } + data = ByteUtil.sub(data, item.getLength()); + } + break; + case NODE_GROUP: + break; + case NODE_MESSAGE: + // 1. OP LL, OP Message 처리 + // 2. COMMON HEADER 처리 + byte[] opLL = new byte[2]; + // Read OP LL + System.arraycopy(data, 0, opLL, 0, opLL.length); + + // Calculate OP Message Length + int opLength = 0; + try { + opLength = ByteUtil.checkLengthField(opLL); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + // System.out.println("OP LENGTH = " + opLength); + // GET COMMON HEADER LENGTH - KM240 + byte[] headerLL = new byte[3]; + System.arraycopy(data, opLength + 2, headerLL, 0, headerLL.length); + + int leaderLength = 0; + try { + leaderLength = Integer + .parseInt(new String(CodeConversion.seToAsc(headerLL))); + } catch (Exception e) { + logger.error(e.getMessage(), e); + } + // System.out.println("HEADER LENGTH = " + leaderLength); + // Truncate Unusable Header Bytes + data = ByteUtil.sub(data, opLength + leaderLength); + break; + default : + break; + } + } + return data; + } + +// //---------------------------------------------------------- +// // only for CardMessage : Delimeter 방식 +// // CardMessage의 setData() 함수의 recursive 처리를 위한 함수 +// //---------------------------------------------------------- +// protected byte[] setCardDataBytes(byte[] data) { +// //----------------------------------------------------------------------- +// // Record Delimeter의 갯수을 얻어내고 그값에 따라 레이아웃아이템을 만든다. +// // DHLEE +// //----------------------------------------------------------------------- +// int dataLength = 0; +// if(data != null) dataLength = data.length; +// +// if (getIndex()==-1 && ("*".equals(getOccType()) || "+".equals(getOccType()) || getOccMax() > getOccMin())) { +// +// //int occCount = getRoot().getInt(getParent().getItemPath() + Types.FIELD_SEPARATOR + getRefOcc()); +// int occCount = 0; +// for (int i = 0; i < dataLength; i++) { +// if( (data[i] == RD) ) { +// occCount ++; +// if( ((i+1) < dataLength) && (data[i] == FD) ) break; +// } +// } +// +// if (occCount < getOccMin() || (!"*".equals(getOccType()) && !"+".equals(getOccType()) && occCount > getOccMax())) +// throw new InvalidAccessException("반복횟수가 OccMin~OccMax 의 범위를 벗어납니다. , " + info(), getItemPath()); +// +// try { +// createItem(this, getRoot().normalizeFullName(getParent().getItemPath() + Types.FIELD_SEPARATOR + getName() + "[" + (occCount-1) + "]"), false); +// } catch (InvalidNodeException e) { +// throw new InvalidAccessException(getItemPath(), e); +// } +// } +// +// if (isField()) { +// if (getIndex() != -1) { +// +// byte[] result = null; +// byte[] remain = null; +// +// try { +// //--------------------------------------------------- +// // Card Delimeter Parsing : 20080228 DHLEE +// //--------------------------------------------------- +// if(dataLength == 0) return new byte[0]; +// int startPos = 0; +// +// for (int i = 0; i < dataLength; ) { +// if((data[i] == TH)) { +// i = i + 3; +// startPos = 4; +// continue; +// } +// else if((data[i] == FD) || (data[i] == CD) || (data[i] == RD)) { +// if(i == 0) { +// result = new byte[0]; +// } +// else { +// result = new byte[i-startPos]; +// +// System.arraycopy(data, startPos, result, 0, i-startPos); +// //-------------------------------------------------- +// // ListView 에서 Table의 마지막에 R다음에 D가 오는 경우 +// // 확인필요 :DHLEE +// //-------------------------------------------------- +// if( (i+1 < dataLength) && (data[i] == RD) && (data[i+1] == FD)) { +// remain = new byte[dataLength - (i+2)]; +// System.arraycopy(data, (i+2), remain, 0, remain.length); +// } +// else { +// remain = new byte[dataLength - (i+1)]; +// System.arraycopy(data, (i+1), remain, 0, remain.length); +// } +// } +// break; +// } +// else { +// i++; +// } +// } +// setValue(result); +// //--------------------------------------------------- +// +// } catch(Exception e) { +// throw new InvalidAccessException(this.getItemPath(), e); +// } +// return remain; +// } +// return data; +// // group || message +// } else { +// +// if (isGroup() && (getIndex() == -1)) { +// return data; +// } +// +// try { +// // set data +// childList = getChildList(); +// +// for (int i = 0; i < childList.size(); i++) { +// Item child = (Item) childList.get(i); +// data = child.setCardDataBytes(data); +// } +// +// return data; +// } catch (Exception e) { +// throw new InvalidAccessException(this.getItemPath(), e); +// } +// } +// } + + + public byte[] toCardByteArray() { + return null; + } + +// public byte[] toCardByteArray() { +// //if(logger.isInfoEnabled()) logger.info(" [Item (" + getItemPak() + ")] toByteArray() : " + value + " : " + (value==null ? "" : value.getClass().getName())+", length : "+length); +// // field +// byte[] returnBytes = null; +// byte[] FD = {(byte)0x2A}; +// byte[] RD = {(byte)0x1B}; +// +// if (isField()) { +// try { +// if (getIndex() == -1) { +// return null; +// } else if (value == null) { +// returnBytes = FD; +// } else if (value instanceof String) { +// returnBytes = ByteUtil.merge(((String)value).getBytes(), FD); +// } else if (value instanceof Number) { +// returnBytes = ByteUtil.merge(((Number) value).toString().getBytes(), FD); +// } else { +// returnBytes = ByteUtil.merge((byte[])value, FD); +// } +// return returnBytes; +// } catch(Exception e) { +// logger.error(e.getMessage(), e); +// logger.error(" [Item1 (" + getItemPath() + ")] toCardByteArray() : " + value + " : "+length+" : " + (value==null ? "" : value.getClass().getName())); +// throw new RuntimeException(e.getMessage()); +// } +// // group || message +// } else { +// if (isGroup() && (getIndex() == -1)) { +// return null; +// } +// +// byte[] byteValue = null; +// +// try { +// List childList = getChildList(); +// +// for (int i = 0; i < childList.size(); i++) { +// Item child = (Item) childList.get(i); +// byteValue = ByteUtil.merge(byteValue, child.toCardByteArray()); +// } +// // Group의 Record Delimeter 추가 +// if (isGroup()) { +// byteValue = ByteUtil.merge(RD, byteValue); +// } +// +// } catch (Exception e) { +// logger.error(e.getMessage(), e); +// logger.error(" [Item2 (" + getItemPath() + ")] toCardByteArray() : " + value + " : "+length+" : " + (value==null ? "" : value.getClass().getName())); +// throw new RuntimeException(e.getMessage()); +// } +// +// return byteValue; +// } +// } + + + //-------------------------------------------------------------------------- + // Additional Getter/Setter + + /** + * 그룹 변환에서 사용되는 API. + */ +// public MessageData getMessageData(String itemPath) { +// return null; +// } +// +// /** +// * 그룹 변환에서 사용되는 API. +// */ +// public void setMessageData(String itemPath, MessageData messageData) { +// } +// +// public void copy(Message message) throws InvalidMessageException { +// } + + // ELSE--------------------------------------------------------------------- + + @Override + public byte[] getDataBytes() throws InvalidDataTypeException { + /* + * if (isNotVariableDataUpdated()) { validateVariable(); } + */ + return data; + } + + @Override + public int getDataLength() { + if (data == null) { + return -1; + } else { + return data.length; + } + } + + @Override + public void clearData() { + clearData((byte) 0x00); + clearValue(); + } + + @Override + public void clearData(byte fillByte) { + if (data != null) { + for (int i = 0; i < data.length; i++) { + data[i] = fillByte; + } + } + } + + @Override + public String toLogString() { + return toLogString(false); + } + + @Override + public String toLogString(boolean ebcdic) { + if (ebcdic) { + byte[] buff = makeBytesLogString(); + + return IConv.ebcdicToASCII(buff); + } else { + byte[] buff = makeBytesLogString(); + + return new String(buff); + } + } + + @Override + public String toString() { + // if staled -> reorganize data + + try { + getData(); + } catch (InvalidDataTypeException e) { + logger.error("[CardMessage] " + e.getMessage(), e); + } + + StringBuilder sb = new StringBuilder(); + sb.append("[CARD message]"); + + if (data != null) { + sb.append("\n data = " + CommonLib.hexDump(data)); + } + + sb.append("\n" + super.toString()); + sb.append("\n"); + + return sb.toString(); + } + + @Override + public int getInt(String itemPath) { + Item item = getItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("아이템의 참조 정보가 없습니다. - " + itemPath, itemPath); + } + + Object value = item.getValue(); + if (value == null) { + return 0; + } else if (value instanceof byte[]) { + try { + return Integer.parseInt(new String((byte[]) value, "cp933").trim()); + } catch(UnsupportedEncodingException e) { + throw new MessageException(e.getMessage(), e); + } + } else { + throw new InvalidAccessException("Invalid한 데이타가 value에 저장되어 있읍니다.", itemPath); + } + } + + @Override + public void setInt(String itemPath, int value) { + int newValue = value; + + super.setInt(itemPath, newValue); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/CommonBytesMessage.java b/src/main/java/com/eactive/eai/transformer/message/CommonBytesMessage.java new file mode 100644 index 0000000..b3e919d --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/CommonBytesMessage.java @@ -0,0 +1,50 @@ +package com.eactive.eai.transformer.message; + +import com.eactive.eai.transformer.layout.LayoutTypeKey; +import com.eactive.eai.transformer.util.ByteUtil; + + +/** + *
+ * BYTE ARRAY(전문) 형식의 데이터를 변환하기 위한 메시지.
+ * 전체전문의 Header부분만을 Parsing하고 남는 부분은 버린다.
+ *
+ * [제약 사항]
+ * 고정 필드에 대해서만 처리 가능.
+ * 정의한 길이보다 실제 데이터가 작은경우에는 에러처리함
+ * [PATH 정의]
+ * 
+ */ +public class CommonBytesMessage extends BytesMessage { + private static final long serialVersionUID = -6375186849821304718L; + public static final String NAME = LayoutTypeKey.COMBYTES; + + public CommonBytesMessage() { + super(); + } + + @Override + protected void doSetData(Object data) { + this.data = (byte[]) data; + byte[] bytesData = ByteUtil.copy(this.data); + + try { + if(bytesData != null) { + setDataBytes(bytesData); + } + } catch(MessageSetDataOverflowException e) { +// COMBYTES - ignore overflow exception + } + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("[COMBYTES message]"); + + sb.append("\n" + super.toString()); + sb.append("\n"); + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/CommonEbcdicMessage.java b/src/main/java/com/eactive/eai/transformer/message/CommonEbcdicMessage.java new file mode 100644 index 0000000..64a834b --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/CommonEbcdicMessage.java @@ -0,0 +1,73 @@ +package com.eactive.eai.transformer.message; + +import java.io.UnsupportedEncodingException; + +import com.eactive.eai.transformer.function.util.CodeConversion; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.util.EbcdicDumpUtil; + +public class CommonEbcdicMessage extends CommonBytesMessage { + private static final long serialVersionUID = 4540767446851935469L; + public static final String NAME = "COMEBCDIC"; + + public CommonEbcdicMessage() { + super(); + } + + @Override + public int getInt(String itemPath) { + Item item = getItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + Object value = item.getValue(); + if (value == null) { + return 0; + } else if (value instanceof byte[]) { + try { + return Integer.parseInt(new String((byte[]) value, "cp933").trim()); + } catch (UnsupportedEncodingException e) { + throw new InvalidAccessException("레이아웃항목의 값이 숫자가 아님(" + value + ")", itemPath); + } + } else { + throw new InvalidAccessException("레이아웃항목의 값이 문자가 아님(" + value + ")", itemPath); + } + } + + @Override + public void setInt(String itemPath, int value) { + int newValue = value; + super.setInt(itemPath, newValue); + } + + @Override + public void setDefaultByteArray(String itemPath, byte[] value) { + // EBCDIC일 경우 기본값설정은 ASCII로 등록하므로, EBCDIC으로 변경하도록 처리한다. + byte[] ebcdic = null; + try { + ebcdic = CodeConversion.ascToSE(value); + setBytes(itemPath, ebcdic); + } catch (Exception e) { + throw new MessageException(e.getMessage(), e); + } + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append( + "[COMEBCDIC message]"); + if (data != null) { + String[] str = EbcdicDumpUtil.makeEbcdicDumpFormat((byte[]) data); + for (int i = 0; i < str.length; i++) + sb.append("\n data = |" + str[i] + "|"); + } + sb.append("\n" + super.toString()); + sb.append( + "\n"); + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/DelimiterMessage.java b/src/main/java/com/eactive/eai/transformer/message/DelimiterMessage.java new file mode 100644 index 0000000..f97f2a5 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/DelimiterMessage.java @@ -0,0 +1,327 @@ +package com.eactive.eai.transformer.message; + +import java.util.Iterator; + +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.Types; +import com.eactive.eai.transformer.util.ByteUtil; +import com.eactive.eai.transformer.util.CommonLib; +import com.eactive.eai.transformer.util.Constants; +import com.eactive.eai.transformer.util.Logger; + + +/** + *
+ * DELIMETER (전문) 형식의 데이터를 변환하기 위한 메시지.
+ *
+ * [제약 사항]
+ * 현재는 0x09로 만 파싱. row 마지막에 0x0D확인필요
+ *
+ * 
+ */ +public class DelimiterMessage extends Message { + private static final long serialVersionUID = -2256252788382494416L; + + private static Logger logger = Logger.getLogger("transformer"); + + // ┌ + public static final byte DEL1 = (byte)0xA6; + public static final byte DEL2 = (byte)0xA3; + public static final byte NEWLINE = 0x0D; + public static final byte[] DELIMITER = {DEL1, DEL2}; + public static final byte[] ROW_DELIMITER = {NEWLINE}; + public static final String ENCODING = "euc-kr"; + protected boolean bStaled = false; + + private byte[] data; + + public DelimiterMessage() { + super(); + } + + public void createObject() { + data = new byte[0]; + } + + protected void composeData(Item item, Object value) { + if (item.getIndex() < 0) + return; + + if (!bStaled) { + bStaled = true; + } + } + + //-------------------------------------------------------------------------- + public Object getData() throws InvalidDataTypeException { + if (bStaled) { + try { + data = toByteArray(); + } catch(Exception e) { + throw new InvalidDataTypeException(e.getMessage(),"DelimiterMessage.getData() method", e); + } + bStaled = false; + } + + return getDataBytes(); + } + + protected byte[] toByteArray() { + byte[] bytes = new byte[0]; + for (Iterator iter = iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + + /** + * index == -1 인 경우는 무시한다 + */ + if (item == null || item.getIndex() == -1) { + continue; + } + + switch (item.getNodeTypeId()) { + case NODE_FIELD: + if (item.getValue() == null) { + bytes = merge(bytes, new byte[0]); + } else if (item.getValue() instanceof String) { + bytes = merge(bytes, ((String)item.getValue()).trim().getBytes()); + } else if (item.getValue() instanceof Number) { + bytes = merge(bytes, (((Number) item.getValue()).toString().getBytes())); + } else { + bytes = merge(bytes, (byte[]) item.getValue()); + } + break; + } + } + + return bytes; + } + + protected void doSetData(Object data) { + doSetData(data ,false); + } + protected void doSetData(Object data ,boolean refCountLimit) { + if (data instanceof String) { + this.data = ((String)data).getBytes(); + }else if (data instanceof byte[]) { + this.data = (byte[])data; + } else { + if (data == null) { + throw new InvalidDataTypeException("Not able to generate Delimiter messages with data. Input value is null.", data); + } else { + throw new InvalidDataTypeException("Not able to generate Delimiter messages with data. data type = " + data.getClass().getName(), data); + } + } + + byte[] _data = ByteUtil.copy(this.data); + byte[] result = setDataString(_data , refCountLimit); + } + + // only for BytesMessage & CommonBytesMessage + protected byte[] setDataString(byte[] data , boolean refCountLimit) { + Item item = null; + + Iterator iter = iterator(); + while(iter.hasNext()) { + item = (Item) iter.next(); + /** + * occType = * | + | (occMax>occMin) 일 경우 + * occRef를 참조하여 그 갯수만큼 item을 생성한다. + */ + if (item.getIndex()==-1 && ("*".equals(item.getOccType()) || "+".equals(item.getOccType()) || item.getOccMax()>item.getOccMin())) { + int occCount = 0; + try { + occCount = item.getRoot().getInt(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + } + catch(Exception oe) { + throw new InvalidAccessException(item.getName() +" - Repeat reference information value is not a number - " + " : " + oe.getMessage() , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + } + + if (occCount < item.getOccMin() + || (!"*".equals(item.getOccType()) && !"+".equals(item.getOccType()) && occCount > item.getOccMax())) { + throw new InvalidAccessException("Number of iterations out of [OccMin ~ OccMax] , " + item.getName(), item.getItemPath()); + } + + item.createItem(item, + item.getRoot().normalizeFullName(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getName() + "[" + (occCount-1) + "]"), + false); + + /** + * item 이 속해있는 childList 크기가 증가로 인해, iterator를 다시 생성한다. + */ + iter = item.getRoot().iterator(); + while(iter.hasNext()) { + if (item == iter.next()) { + break; + } + } + } + + /** + * index == -1 인 경우는 무시한다 + */ + if (item.getIndex() == -1) { + continue; + } + + switch (item.getNodeTypeId()) { + case NODE_FIELD: + try { + byte[] c = cut(data); + item.setValue(c); + } catch(Exception e) { + StringBuilder sb = new StringBuilder(); + sb.append("MessageLayout mapping - Data size error ("+e.getMessage()+")"); + sb.append("\n"); + sb.append("MessageLayout="+item.getItemPath()); + throw new MessageException(sb.toString()); + } + + try { + data = sub(data); + } catch(Exception e) { + StringBuilder sb = new StringBuilder(); + sb.append("MessageLayout - Data setting error ("+ e.getMessage() + ")"); + sb.append("\n"); + sb.append("MessageLayout="+item.getItemPath()); + throw new MessageException(sb.toString()); + } + break; + } + //grid의 마지막 컬럼 +// if (item.getParent().isGroup() && item.getNext() == null) { +// //참조컬림이 있는경우 or max count가 있는경우 +// if (!"".equals(item.getParent().getOccRef()) || item.getParent().getOccMax() > 1 ) { +// data = ByteUtil.sub(data,1); +// } +// } + } + + if (data.length > 0) { + StringBuilder sb = new StringBuilder(); + sb.append("MessageLayout mapping - Data delimiter error "); + sb.append("\n"); + sb.append("MessageLayout="+item.getItemPath()); + sb.append(", remain data ="+new String(data)); + throw new MessageSetDataOverflowException(sb.toString()); + } + + return data; + } + + + //-------------------------------------------------------------------------- + // Additional Getter/Setter + + public byte[] getDataBytes() throws InvalidDataTypeException { + return data; + } + + public int getDataLength() { + if (data == null) { + return -1; + } else { + return data.length; + } + } + + public String toLogString() { + byte[] buff = makeLogString(); + return new String(buff); + } + + protected byte[] makeLogString() { + byte[] bytes = new byte[0]; + + for (Iterator iter = iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + + /** + * index == -1 인 경우는 무시한다 + */ + if (item.getIndex() < 0) { + continue; + } + + switch (item.getNodeTypeId()) { + case NODE_FIELD: + if ("Y".equals(item.getMask())) { + bytes = merge(bytes, maskString2(item.getValue(), item.getMaskLength()).getBytes()); + } else { + if (item.getValue() == null) { + bytes = merge(bytes, new byte[0]); + } else if (item.getValue() instanceof String) { + bytes = merge(bytes, ((String)item.getValue()).trim().getBytes()); + } else if (item.getValue() instanceof Number) { + bytes = merge(bytes, (((Number) item.getValue()).toString().getBytes())); + } else { + bytes = merge(bytes, (byte[]) item.getValue()); + } + } + break; + case NODE_GROUP: + case NODE_MESSAGE: + break; + default : + break; + } + //grid의 마지막 컬럼 +// if (item.getParent().isGroup() && item.getNext() == null) { +// //참조컬림이 있는경우 or max count가 있는경우 +// if (!"".equals(item.getParent().getOccRef()) || item.getParent().getOccMax() > 1 ) { +// bytes = ByteUtil.merge(bytes, ROW_DELIMITER); +// } +// } + + } + + return bytes; + } + + @Override + public String toString() { + // if staled -> reorganize data + try { + getData(); + } catch (InvalidDataTypeException e) { + logger.error("[DelimiterMessage] " + e.getMessage(), e); + } + + StringBuilder sb = new StringBuilder(); + if ("DelimiterMessage".equals(getClass().getSimpleName())) { + sb.append(getName() + " (DelimiterMessage)"); + } + sb.append(super.toString()); + if (data != null) { + sb.append("\n" + Constants.TAB + " | data = " + CommonLib.hexDumpTab(data)); + } + sb.append("\n" + Constants.TAB + " +--------------------------------------------------------------------------------------------------+"); + + return sb.toString(); + } + + private byte[] cut(byte[] str) { + int idx0 = indexOf(str, DELIMITER); + return ByteUtil.cut(str, idx0); + } + private byte[] sub(byte[] str) { + int idx0 = indexOf(str, DELIMITER); + return ByteUtil.sub(str,idx0+DELIMITER.length); + } + private byte[] merge(byte[] data,byte[] str) { + byte[] data2 = ByteUtil.merge(data, str); + return ByteUtil.merge(data2, DELIMITER); + } + private int indexOf(byte[] outerArray, byte[] smallerArray) { + for(int i = 0; i < outerArray.length - smallerArray.length+1; ++i) { + boolean found = true; + for(int j = 0; j < smallerArray.length; ++j) { + if (outerArray[i+j] != smallerArray[j]) { + found = false; + break; + } + } + if (found) return i; + } + return -1; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/DelimiterMessage2.java b/src/main/java/com/eactive/eai/transformer/message/DelimiterMessage2.java new file mode 100644 index 0000000..7874f70 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/DelimiterMessage2.java @@ -0,0 +1,392 @@ +//package com.eactive.eai.transformer.message; +// +//import java.util.Iterator; +// +//import com.eactive.eai.transformer.layout.Item; +//import com.eactive.eai.transformer.layout.Types; +//import com.eactive.eai.transformer.message.data.MessageData; +//import com.eactive.eai.transformer.util.ByteUtil; +//import com.eactive.eai.transformer.util.CommonLib; +//import com.eactive.eai.transformer.util.Constants; +//import com.eactive.eai.transformer.util.Logger; +// +// +///** +// *
+// * DELIMETER (전문) 형식의 데이터를 변환하기 위한 메시지.
+// *
+// * [제약 사항]
+// * 현재는 0x09로 만 파싱. row 마지막에 0x0D확인필요
+// *
+// * 
+// */ +//public class DelimiterMessage2 extends Message { +// +// private static Logger logger = Logger.getLogger("transformer"); +// +// private static final String escape = "\\"; +// public static final byte DEL = 0x09; +// public static final byte NEWLINE = 0x0D; +// public static final byte[] DELIMITER = {DEL}; +// public static final byte[] ROW_DELIMITER = {NEWLINE}; +// public static final String ENCODING = "euc-kr"; +// protected boolean bStaled = false; +// +// private byte[] data; +// +// public DelimiterMessage2() { +// super(); +// } +// +// public void createObject() { +// data = new byte[0]; +// } +// +// protected void composeData(Item item, Object value) { +// if (item.getIndex() < 0) +// return; +// +// String itemPath = item.getItemPath(); +// +// if (!bStaled) { +// bStaled = true; +// } +// } +// +// //-------------------------------------------------------------------------- +// public Object getData() throws InvalidDataTypeException { +// if (bStaled) { +// try { +// data = toByteArray(); +// } catch(Exception e) { +// throw new InvalidDataTypeException(e.getMessage(),"DelimiterMessage.getData() method", e); +// } +// bStaled = false; +// } +// +// return getDataBytes(); +// } +// +// protected byte[] toByteArray() { +// byte[] bytes = new byte[0]; +// bytes = merge(bytes, new byte[0]); +// for (Iterator iter = iterator(); iter.hasNext();) { +// Item item = (Item) iter.next(); +// +// /** +// * index == -1 인 경우는 무시한다 +// */ +// if (item.getIndex() == -1) { +// continue; +// } +// +// switch (item.getNodeTypeId()) { +// case NODE_FIELD: +// if (item.getValue() == null) { +// bytes = merge(bytes, new byte[0]); +// } else if (item.getValue() instanceof String) { +// bytes = merge(bytes, ((String)item.getValue()).trim().getBytes()); +// } else if (item.getValue() instanceof Number) { +// bytes = merge(bytes, (((Number) item.getValue()).toString().getBytes())); +// } else { +// bytes = merge(bytes, (byte[]) item.getValue()); +// } +// break; +// } +// //grid의 마지막 컬럼 +// if (item.getParent().isGroup() && item.getNext() == null) { +// //참조컬림이 있는경우 or max count가 있는경우 +// if (!"".equals(item.getParent().getOccRef()) || item.getParent().getOccMax() > 1 ) { +// bytes = ByteUtil.merge(bytes, ROW_DELIMITER); +// } +// } +// } +// +// return bytes; +// } +// +// protected void doSetData(Object data) { +// doSetData(data ,false); +// } +// protected void doSetData(Object data ,boolean refCountLimit) { +// if (data instanceof String) { +// this.data = ((String)data).getBytes(); +// }else if (data instanceof byte[]) { +// this.data = (byte[])data; +// } else { +// if (data == null) { +// throw new InvalidDataTypeException("Not able to generate Delimiter messages with data. Input value is null.", data); +// } else { +// throw new InvalidDataTypeException("Not able to generate Delimiter messages with data. data type = " + data.getClass().getName(), data); +// } +// } +// +// byte[] _data = ByteUtil.copy(this.data); +// _data = sub(_data); +// byte[] result = setDataString(_data , refCountLimit); +// } +// +// // only for BytesMessage & CommonBytesMessage +// protected byte[] setDataString(byte[] data , boolean refCountLimit) { +// Item item = null; +// +// for (Iterator iter = iterator(); iter.hasNext();) { +// item = (Item) iter.next(); +// +// /** +// * occType = * | + | (occMax>occMin) 일 경우 +// * occRef를 참조하여 그 갯수만큼 item을 생성한다. +// */ +// if (item.getIndex()==-1 && ("*".equals(item.getOccType()) || "+".equals(item.getOccType()) || item.getOccMax()>item.getOccMin())) { +// int occCount = 0; +// try { +// occCount = item.getRoot().getInt(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); +// } +// catch(Exception oe) { +// throw new InvalidAccessException(item.getName() +" - Repeat reference information value is not a number - " + " : " + oe.getMessage() , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); +// } +// +// if (occCount < item.getOccMin() +// || (!"*".equals(item.getOccType()) && !"+".equals(item.getOccType()) && occCount > item.getOccMax())) { +// throw new InvalidAccessException("Number of iterations out of [OccMin ~ OccMax] , " + item.getName(), item.getItemPath()); +// } +// +// item.createItem(item, +// item.getRoot().normalizeFullName(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getName() + "[" + (occCount-1) + "]"), +// false); +// +// /** +// * item 이 속해있는 childList 크기가 증가로 인해, iterator를 다시 생성한다. +// */ +// iter = item.getRoot().iterator(); +// for (;iter.hasNext();) { +// if (item == iter.next()) { +// break; +// } +// } +// } +// +// /** +// * index == -1 인 경우는 무시한다 +// */ +// if (item.getIndex() == -1) { +// continue; +// } +// +// switch (item.getNodeTypeId()) { +// case NODE_FIELD: +// try { +// byte[] c = cut(data); +// item.setValue(c); +// } catch(Exception e) { +// StringBuffer sb = new StringBuffer(); +// sb.append("MessageLayout mapping - Data size error ("+e.getMessage()+")"); +// sb.append("\n"); +// sb.append("MessageLayout="+item.getItemPath()); +// throw new MessageException(sb.toString()); +// } +// +// try { +// data = sub(data); +// } catch(Exception e) { +// StringBuffer sb = new StringBuffer(); +// sb.append("MessageLayout - Data setting error ("+ e.getMessage() + ")"); +// sb.append("\n"); +// sb.append("MessageLayout="+item.getItemPath()); +// throw new MessageException(sb.toString()); +// } +// break; +// } +// //grid의 마지막 컬럼 +// if (item.getParent().isGroup() && item.getNext() == null) { +// //참조컬림이 있는경우 or max count가 있는경우 +// if (!"".equals(item.getParent().getOccRef()) || item.getParent().getOccMax() > 1 ) { +// data = ByteUtil.sub(data,1); +// } +// } +// } +// +// if (data.length > 0) { +// StringBuffer sb = new StringBuffer(); +// //sb.append("MessageLayout mapping - Data delimiter error(Defined Length=" + (originalLength-data.length) +", Received Length="+ originalLength + ")"); +// sb.append("MessageLayout mapping - Data delimiter error "); +// sb.append("\n"); +// sb.append("MessageLayout="+item.getItemPath()); +// throw new MessageSetDataOverflowException(sb.toString()); +// } +// +// return data; +// } +// +// +// //-------------------------------------------------------------------------- +// // Additional Getter/Setter +// +// /** +// * 그룹 변환에서 사용되는 API. +// */ +// public MessageData getMessageData(String itemPath) throws Exception { +// return null; +// } +// +// /** +// * 그룹 변환에서 사용되는 API. +// */ +// public void setMessageData(String itemPath, MessageData messageData) { +// } +// +// public void copy(Message message) throws InvalidMessageException { +// } +// +// // ELSE--------------------------------------------------------------------- +// +// public byte[] getDataBytes() throws InvalidDataTypeException { +// /* +// if (isNotVariableDataUpdated()) { +// validateVariable(); +// } +// */ +// return data; +// } +// +// public int getDataLength() { +// if (data == null) { +// return -1; +// } else { +// return data.length; +// } +// } +// +//// public void clearData() { +//// clearData((byte) 0x00); +//// clearValue(); +//// } +//// +//// public void clearData(byte fillByte) { +//// if (data != null) { +//// for (int i = 0; i < data.length; i++) { +//// data[i] = fillByte; +//// } +//// } +//// } +// +// public String toLogString() { +// byte[] buff = makeLogString(); +// return new String(buff); +// } +// +// protected byte[] makeLogString() { +// byte[] bytes = new byte[0]; +// +// for (Iterator iter = iterator(); iter.hasNext();) { +// Item item = (Item) iter.next(); +// +// /** +// * index == -1 인 경우는 무시한다 +// */ +// if (item.getIndex() < 0) { +// continue; +// } +// +// switch (item.getNodeTypeId()) { +// case NODE_FIELD: +// if ("Y".equals(item.getMask())) { +// bytes = merge(bytes, maskString2(item.getValue(), item.getMaskLength()).getBytes()); +// } else { +// if (item.getValue() == null) { +// bytes = merge(bytes, new byte[0]); +// } else if (item.getValue() instanceof String) { +// bytes = merge(bytes, ((String)item.getValue()).trim().getBytes()); +// } else if (item.getValue() instanceof Number) { +// bytes = merge(bytes, (((Number) item.getValue()).toString().getBytes())); +// } else { +// bytes = merge(bytes, (byte[]) item.getValue()); +// } +// } +// break; +// case NODE_GROUP: +// case NODE_MESSAGE: +// break; +// } +// //grid의 마지막 컬럼 +// if (item.getParent().isGroup() && item.getNext() == null) { +// //참조컬림이 있는경우 or max count가 있는경우 +// if (!"".equals(item.getParent().getOccRef()) || item.getParent().getOccMax() > 1 ) { +// bytes = ByteUtil.merge(bytes, ROW_DELIMITER); +// } +// } +// +// } +// +// return bytes; +// } +// +// public String toString() { +// // if staled -> reorganize data +// try { +// getData(); +// } catch (InvalidDataTypeException e) { +// logger.error("[DelimiterMessage] " + e.getMessage(), e); +// } +// +// StringBuffer sb = new StringBuffer(); +// if ("DelimiterMessage".equals(getClass().getSimpleName())) { +// sb.append(getName() + " (DelimiterMessage)"); +// } +// sb.append(super.toString()); +// //sb.append("\n" + Constants.TAB + " +--------------------------------------------------------------------------------------------------+"); +// if (data != null) { +// sb.append("\n" + Constants.TAB + " | data = " + CommonLib.hexDumpTab(data)); +// } +// sb.append("\n" + Constants.TAB + " +--------------------------------------------------------------------------------------------------+"); +// +// return sb.toString(); +// } +// +// private byte[] cut(byte[] str) { +// int idx0 = indexOf(str, DELIMITER); +// return ByteUtil.cut(str, idx0); +// } +// private byte[] sub(byte[] str) { +// int idx0 = indexOf(str, DELIMITER); +// return ByteUtil.sub(str,idx0+1); +// } +// private byte[] merge(byte[] data,byte[] str) { +// byte[] data2 = ByteUtil.merge(data, str); +// return ByteUtil.merge(data2, DELIMITER); +// } +// private int indexOf(byte[] outerArray, byte[] smallerArray) { +// for(int i = 0; i < outerArray.length - smallerArray.length+1; ++i) { +// boolean found = true; +// for(int j = 0; j < smallerArray.length; ++j) { +// if (outerArray[i+j] != smallerArray[j]) { +// found = false; +// break; +// } +// } +// if (found) return i; +// } +// return -1; +// } +// public static void main(String[] args) throws Exception { +// DelimiterMessage2 d = new DelimiterMessage2(); +// StringBuilder sb = new StringBuilder(); +// //sb.append(new String(DELIMITER)); +// sb.append("123456789"); +// sb.append(new String(DELIMITER)); +// sb.append("987654321"); +// sb.append(new String(DELIMITER)); +// sb.append("cccccc"); +// sb.append(new String(DELIMITER)); +// sb.append("ddddddd"); +// sb.append(new String(DELIMITER)); +// +// String str = sb.toString(); +// System.out.println(CommonLib.hexDumpTab(str.getBytes())); +// byte b =9; +// System.out.println("11array index="+d.indexOf(str.getBytes(), DELIMITER)); +// System.out.println("["+new String(d.cut(str.getBytes()))+"]"); +// System.out.println("["+new String(d.sub(str.getBytes()))+"]"); +// } +// +//} diff --git a/src/main/java/com/eactive/eai/transformer/message/DynamicFieldBytesMessage.java b/src/main/java/com/eactive/eai/transformer/message/DynamicFieldBytesMessage.java new file mode 100644 index 0000000..7b5ed76 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/DynamicFieldBytesMessage.java @@ -0,0 +1,322 @@ +package com.eactive.eai.transformer.message; + + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Iterator; + +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.Types; +import com.eactive.eai.transformer.util.ByteUtil; +import com.eactive.eai.transformer.util.CommonLib; +import com.eactive.eai.transformer.util.Constants; +import com.eactive.eai.transformer.util.IConv; + + +/** + *
+ * BYTE ARRAY(전문) 형식의 데이터를 변환하기 위한 메시지.
+ * 전문의 길이는 고정 및 가변을 처리할 수 있게 되어 있음.
+ *
+ * [제약 사항]
+ * 현재는 고정 필드에 대해서만 처리 가능.
+ *
+ * [PATH 정의]
+ * PATH           =  +  + 
+ * ITEM_TYPE      = 'F' | 'G' | 'M'
+ * STATIC_PATH    = OFFSET
+ * 
+ */ +public class DynamicFieldBytesMessage extends BytesMessage { + public static final String NAME = "DFBYTES"; + protected byte[] data; + protected boolean bStaled = false; + + public DynamicFieldBytesMessage() { + super(); + } + + @Override + public void createObject() { + data = new byte[0]; + } + + @Override + public Object getData() throws InvalidDataTypeException { + if (bStaled) { + try { + data = toByteArray(); + } catch(Exception e) { + throw new InvalidDataTypeException(e.getMessage(),"BytesMessage.getData() method", e); + } + bStaled = false; + } + + return getDataBytes(); + } + + @Override + protected byte[] toByteArray() { + try ( + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ){ + for (Iterator iter = iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + + /** + * index == -1 인 경우는 무시한다 + */ + if (item == null || item.getIndex() == -1) { + continue; + } + + if(item.getNodeTypeId() == NODE_FIELD) { + if (item.getValue() == null) { + bos.write( new byte[item.getLength()] ); + } else if (item.getValue() instanceof String) { + bos.write( ByteUtil.padding((String) item.getValue(), item.getLength()) ); + } else if (item.getValue() instanceof Number) { + bos.write( ByteUtil.padding(((Number) item.getValue()).toString(), item.getLength()) ); + } else { + bos.write( ByteUtil.padding((byte[]) item.getValue(), item.getLength()) ); + } + } + } + return bos.toByteArray(); + } catch(Exception e) { + logger.error("retrun zero-bytes.", e); + return new byte[0]; + } + } + + @Override + protected void doSetData(Object data) { + this.data = (byte[]) data; + byte[] _data = ByteUtil.copy(this.data); + + if(_data != null) { + setDataBytes((byte[]) _data ); + } + } + + @Override + protected byte[] setDataBytes(byte[] data ) { + int originalLength = data.length; + Item item = null; + Iterator iter = iterator(); + while(iter.hasNext()) { + item = (Item) iter.next(); + + if(item == null) { + continue; + } + /** + * occType = * | + | (occMax>occMin) 일 경우 + * occRef를 참조하여 그 갯수만큼 item을 생성한다. + */ + if (item.getIndex()==-1 && ("*".equals(item.getOccType()) || "+".equals(item.getOccType()) || item.getOccMax()>item.getOccMin())) { + int occCount = 0; + String path =""; + try { + path = getOccRefItem(item); + occCount = item.getRoot().getInt(path); + } + catch(Exception oe) { + throw new InvalidAccessException(item.getName() +"의 반복참조정보 값이 숫자가 아닙니다 - " + " : " + oe.getMessage() , path); + } + + if (occCount < item.getOccMin() + || (!"*".equals(item.getOccType()) && !"+".equals(item.getOccType()) && occCount > item.getOccMax())) { + throw new InvalidAccessException("반복횟수가 OccMin~OccMax 의 범위를 벗어납니다. , " + item.getName(), item.getItemPath()); + } + + + /** + * 반복횟수 참조정보가 비정상적으로 클때 방어로직 + * 그리드 오류처리로직) 자식배열 길이합계 * 반복횟수 참조정보 > 셋팅하는 실제 데이터 + * 필드 오류처리조직) 필드 길이 * 반복횟수 참조정보 > 셋팅하는 실제 데이터 + */ + int sumChildLength = 0; + Item childItem= null; + if (item.isGroup()){ + for(int i=0;i data.length){ + throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 자식배열 길이합계("+sumChildLength+") = 계산된길이("+(sumChildLength * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , path); + } + }else{ + if (item.getLength() * occCount > data.length){ + throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 길이("+item.getLength()+") = 계산된길이("+(item.getLength() * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , path); + } + } + item.createItem(item, + item.getRoot().normalizeFullName(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getName() + "[" + (occCount-1) + "]"), + false); + + /** + * item 이 속해있는 childList 크기가 증가로 인해, iterator를 다시 생성한다. + */ + iter = item.getRoot().iterator(); + for (;iter.hasNext();) { + if (item.equals(iter.next())) { + break; + } + } + } + + /** + * index == -1 인 경우는 무시한다 + */ + if (item.getIndex() == -1) { + continue; + } + + if (item.getNodeTypeId() == NODE_FIELD) { + try { + item.setValue(ByteUtil.cut(data, item.getLength())); + } catch(Exception e) { + StringBuilder sb = new StringBuilder(); + sb.append("전문레이아웃 매핑 중 데이터 사이즈 오류 ("+e.getMessage()+")"); + sb.append("\n"); + sb.append("전문레이아웃="+item.getItemPath()); + throw new MessageException(sb.toString()); + } + + try { + data = ByteUtil.sub(data, item.getLength()); + } catch(Exception e) { + StringBuilder sb = new StringBuilder(); + sb.append("전문레이아웃 매핑 중 데이터 셋팅 오류 ("+ e.getMessage() + ")"); + sb.append("\n"); + sb.append("전문레이아웃="+item.getItemPath()); + throw new MessageException(sb.toString()); + } + } + } + + if (data.length > 0) { + StringBuilder sb = new StringBuilder(); + sb.append("전문레이아웃 매핑 중 데이터 사이즈 오류 (정의한 길이=" + (originalLength-data.length) +", 받은 길이="+ originalLength + ")"); + sb.append("\n"); + sb.append("전문레이아웃="+(item==null?"":item.getItemPath())); + throw new MessageSetDataOverflowException(sb.toString()); + } + + return data; + } + + + //-------------------------------------------------------------------------- + // Additional Getter/Setter + + @Override + public byte[] getDataBytes() throws InvalidDataTypeException { + return data; + } + + @Override + public int getDataLength() { + if (data == null) { + return -1; + } else { + return data.length; + } + } + + @Override + public void clearData() { + clearData((byte) 0x00); + clearValue(); + } + + @Override + public void clearData(byte fillByte) { + if (data != null) { + for (int i = 0; i < data.length; i++) { + data[i] = fillByte; + } + } + } + + @Override + public String toLogString() { + return toLogString(false); + } + + @Override + public String toLogString(boolean ebcdic) { + if (ebcdic) { + byte[] buff = makeBytesLogString(); + return IConv.ebcdicToASCII(buff); + } else { + byte[] buff = makeBytesLogString(); + return new String(buff); + } + } + + @Override + protected byte[] makeBytesLogString() { + try( + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ) { + for (Iterator iter = iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + + /** + * index == -1 인 경우는 무시한다 + */ + if (item == null || item.getIndex() < 0) { + continue; + } + + if (item.getNodeTypeId() == NODE_FIELD) { + if ("Y".equals(item.getMask())) { + String ms = maskString(item.getLength()); + if(ms == null) ms = ""; + bos.write( ms.getBytes() ); + } else { + if (item.getValue() == null) { + bos.write( new byte[item.getLength()] ); + } else if (item.getValue() instanceof String) { + bos.write( ByteUtil.padding((String) item.getValue(), item.getLength()) ); + } else if (item.getValue() instanceof Number) { + bos.write( ByteUtil.padding(((Number) item.getValue()).toString(), item.getLength()) ); + } else { + bos.write( ByteUtil.padding((byte[]) item.getValue(), item.getLength()) ); + } + } + } + } + return bos.toByteArray(); + } catch(Exception e) { + logger.error("retrun zero-bytes.", e); + return new byte[0]; + } + } + + @Override + public String toString() { + try { + getData(); + } catch (InvalidDataTypeException e) { + logger.error("[DynamicFieldBytesMessage] " + e.getMessage(), e); + } + + StringBuilder sb = new StringBuilder(); + if ("DynamicFieldBytesMessage".equals(getClass().getSimpleName())) { + sb.append(getName() + " (DynamicFieldBytesMessage)"); + } + sb.append(super.toString()); + if (data != null) { + sb.append("\n" + Constants.TAB + " | data = " + CommonLib.hexDumpTab(data)); + } + sb.append("\n" + Constants.TAB + " +--------------------------------------------------------------------------------------------------+"); + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/EbcdicMessage.java b/src/main/java/com/eactive/eai/transformer/message/EbcdicMessage.java new file mode 100644 index 0000000..66a529c --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/EbcdicMessage.java @@ -0,0 +1,144 @@ +package com.eactive.eai.transformer.message; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Iterator; + +import org.apache.commons.lang3.StringUtils; + +import com.eactive.eai.transformer.function.util.CodeConversion; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.LayoutTypeKey; +import com.eactive.eai.transformer.util.ByteUtil; +import com.eactive.eai.transformer.util.CommonLib; +import com.eactive.eai.transformer.util.Constants; + +public class EbcdicMessage extends BytesMessage +{ + private static final long serialVersionUID = -8956817973542228440L; + public static final String NAME = LayoutTypeKey.EBCDIC; + + public EbcdicMessage() { + super(); + } + + /** + * RefOcc 에 사용됨 + */ + @Override + public int getInt(String itemPath) { + try { + Item item = getItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + Object value = item.getValue(); + if (value == null) { + return 0; + } else if (value instanceof byte[]) { + byte[] ascii = CodeConversion.seToAsc((byte[]) value); + return Integer.parseInt(new String(ascii).trim()); + } else { + throw new InvalidAccessException("레이아웃항목의 값이 숫자가 아님", itemPath); + } + } catch (Exception e) { + throw new InvalidAccessException(e.getMessage(), itemPath, this, e); + } + } + + @Override + public void setInt(String itemPath, int value) { + int newValue = value; + super.setInt(itemPath, newValue); + + Item item = getOrCreateItem(itemPath, true); + try { + setBytes(itemPath, CodeConversion.ascToSE(StringUtils.leftPad(String.valueOf(value), item.getLength(), "0").getBytes())); + } catch(Exception e) { + throw new MessageException(e.getMessage(), e); + } + } + + @Override + public void setDefaultByteArray(String itemPath, byte[] value) { + // EBCDIC일 경우 기본값설정은 ASCII로 등록하므로, EBCDIC으로 변경하도록 처리한다. + byte[] ebcdic = null; + try { + ebcdic = CodeConversion.ascToSE(value); + setBytes(itemPath, ebcdic); + } catch(Exception e) { + throw new MessageException(e.getMessage(), e); + } + } + + @Override + public String toString() { + // if staled -> reorganize data + try { + getData(); + } catch (InvalidDataTypeException e) { + logger.error("EbcdicMessage | " + e.getMessage(), e); + } + + StringBuilder sb = new StringBuilder(); + sb.append(getName() + " (EbcdicMessage)"); + sb.append(super.toString()); + if (data != null) { + sb.append("\n" + Constants.TAB + " | data = " + CommonLib.ebcdicHexDumpTab(data)); + } + sb.append("\n" + Constants.TAB + " +--------------------------------------------------------------------------------------------------+"); + + return sb.toString(); + } + + // EBCDIC 일 경우 0x40으로 패딩 + @Override + public Object getData() throws InvalidDataTypeException { + if (bStaled) { + try { + data = toByteArray(); + } catch(Exception e) { + throw new InvalidDataTypeException(e.getMessage(),"EbcdicMessage.getData() method", e); + } + bStaled = false; + } + + return getDataBytes(); + } + + @Override + protected byte[] toByteArray() { + try ( + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ){ + for (Iterator iter = iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + + /** + * index == -1 인 경우는 무시한다 + */ + if (item == null || item.getIndex() == -1) { + continue; + } + + if(item.getNodeTypeId() == NODE_FIELD) { + if (item.getValue() == null) { + bos.write( ByteUtil.padding(new byte[0], item.getLength(), (byte)0x40) ); + } else if (item.getValue() instanceof String) { + bos.write( ByteUtil.padding((String) item.getValue(), item.getLength(), (byte)0x40) ); + } else if (item.getValue() instanceof Number) { + bos.write( ByteUtil.padding(((Number) item.getValue()).toString(), item.getLength(), (byte)0x40) ); + } else { + bos.write( ByteUtil.padding((byte[]) item.getValue(), item.getLength(), (byte)0x40) ); + } + } + } + return bos.toByteArray(); + } catch(Exception e) { + logger.error("retrun zero-bytes.", e); + return new byte[0]; + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/FMLMessage.java b/src/main/java/com/eactive/eai/transformer/message/FMLMessage.java new file mode 100644 index 0000000..4f28d94 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/FMLMessage.java @@ -0,0 +1,498 @@ +package com.eactive.eai.transformer.message; +//package com.eactive.eai.transformer.message; +// +//import java.util.Hashtable; +//import java.util.Iterator; +//import java.util.Map; +//import java.util.Stack; +//import java.util.regex.Matcher; +//import java.util.regex.Pattern; +// +//import weblogic.wtc.jatmi.FML; +//import weblogic.wtc.jatmi.Ferror; +//import weblogic.wtc.jatmi.FldTbl; +//import weblogic.wtc.jatmi.FmlKey; +//import weblogic.wtc.jatmi.TypedFML; +//import weblogic.wtc.jatmi.TypedFML32; +// +//import com.eactive.eai.adapter.wtc.CrmFmlTable; +//import com.eactive.eai.transformer.layout.Item; +//import com.eactive.eai.transformer.layout.Types; +//import com.eactive.eai.transformer.message.data.MessageData; +//import com.eactive.eai.transformer.util.Constants; +// +// +///** +// * +// * [ FMLMessagae 정의 ] +// * 1. 단일 필드 : FILED +// * 2. 배열 필드 : FIELD[9] +// * 3. 단일 그룹 내 배열 필드 지원 안함 (GROUP.FIELD[3]) +// * 4. 배열 그룹 내 단일 필드 : GROUP[3].FIELD +// * 5. 변환 시 GROUP 매핑 지원을 위해 GROUP 필드 지원 +// * 6. MESSAGE 필드 지원 안함. +// * 7. GROUP의 GROUP은 지원 안함. +// * 8. GROUP:*, FIELD:* 지원함 +// */ +//public class FMLMessage extends Message { +// public static final String NAME = "FML"; +// public static final String MESSAGE_FML = "FML"; +// public static final String MESSAGE_FML32 = "FML32"; +// private FML data; +// +// private static final Hashtable FchgErrors = new Hashtable(); +// +// public FMLMessage() { +// super(); +// +// FchgErrors.put("1 (FALIGNERR)", "필드 버퍼 정렬 오류"); +// FchgErrors.put("2 (FNOTFLD)", "필드 버퍼 오류"); +// FchgErrors.put("3 (FNOSPACE)", "필드버퍼 공간 부족 오류"); +// FchgErrors.put("4 (FNOTPRES)", "필드 존재 오류"); +// FchgErrors.put("5 (FBADFLD)", "잘못된 필드 넘버 또는 유형 오류"); +// FchgErrors.put("6 (FTYPERR)", "잘못된 필드 유형 오류"); +// FchgErrors.put("7 (FEUNIX)", "UNIX 시스템 콜 오류"); +// FchgErrors.put("8 (FBADNAME)", "잘못된 필드명 오류"); +// FchgErrors.put("9 (FMALLOC)", "메모리 할당 오류"); +// FchgErrors.put("10 (FSYNTAX)", "잘못된 문법 오류"); +// FchgErrors.put("11 (FFTOPEN)", "필드 테이블 찾기 또는 열기 오류"); +// FchgErrors.put("12 (FFTSYNTAX)", ""); +// FchgErrors.put("13 (FEINVAL)", "잘못된 인자 오류"); +// FchgErrors.put("14 (FBADTBL)", "필드 테이블 동시 접근 오류"); +// FchgErrors.put("15 (FBADVIEW)", "뷰 찾기 또는 얻기 오류"); +// FchgErrors.put("16 (FVFSYNTAX)", "뷰 파일 문법 오류"); +// FchgErrors.put("17 (FVFOPEN)", "뷰 파일 찾기 또는 열기 오류"); +// FchgErrors.put("18 (FBADACM)", "ACM이 음수 포함 오류"); +// FchgErrors.put("19 (FNOCNAME)", "Cname 찾기 오류"); +// } +// +// // Getter/Setter ------------------------------------------------------------------- +// public Object getData() { +// return this.data; +// } +// +// protected void doSetData(Object data) { +// if (!(data instanceof FML)) { +// throw new InvalidDataTypeException("not instance of FML class.", data); +// } +// +// String name = this.layout.getLayoutType().getName(); +// String fullName = null; +// String fname = null; +// try { +// Iterator fmliter = ((FML) data).Fiterator(); +// +// while (fmliter.hasNext()) { +// Map.Entry entry = (Map.Entry) fmliter.next(); +// FmlKey fmlkey = (FmlKey) entry.getKey(); +// +// try { +// fname = this.data.Fname(fmlkey.get_fldid()); +// } +// catch (Exception tpe) { +// //logger.warn(getName() + " (FMLMessage) | skip Undefined fldid [" + fmlkey.get_fldid() + "]"); +// //MemoryLogger.error(" " + getName() + " (FMLMessage) | skip Undefined fldid [" + fmlkey.get_fldid() + "]"); +// continue; +// } +// Item item = findItemByPath(fname); +// +// if(item == null) { +// //logger.warn(getName() + " (FMLMessage) | skip Undefined Item - (item path) fname[" + fname + "]"); +// //MemoryLogger.error(" " + getName() + " (FMLMessage) | skip Undefined Item - (item path) fname[" + fname + "]"); +// continue; +// } +// else { +// fullName = item.getItemPath(); +// } +// +// /** +// * group 에 occurrence 두는 것은 없앤다. +// */ +// if (item.getParent().isGroup() && item.getParent().getOccMax() != 1) { +// fullName = item.getParent().getParent().getItemPath() + Types.FIELD_SEPARATOR + +// item.getParent().getName() + "[" + fmlkey.get_occurance() + "]" + Types.FIELD_SEPARATOR + +// item.getName() + "[0]"; +// } else { +// fullName = item.getParent().getItemPath() + Types.FIELD_SEPARATOR + +// item.getName() + "[" + fmlkey.get_occurance() + "]"; +// } +// +// item = getOrCreateItem(fullName, true); +// +// if (item == null) { +// continue; +// } +// +// switch (this.data.Fldtype(fmlkey.get_fldid())) { +// /* +// case FML.FLD_DOUBLE : +// item.setValue((Double)entry.getValue()); +// break; +// case FML.FLD_STRING : +// item.setValue((String)entry.getValue()); +// break; +// case FML.FLD_LONG : +// item.setValue((Long)entry.getValue()); +// break; +// case FML.FLD_FLOAT : +// item.setValue((Float)entry.getValue()); +// break; +// case FML.FLD_INT : +// item.setValue((Integer)entry.getValue()); +// break; +// */ +// default: +// item.setValue(entry.getValue()); +// break; +// } +// } +// } catch (weblogic.wtc.jatmi.Ferror e) { +// StringBuffer sb = new StringBuffer(); +// sb.append("전문레이아웃 매핑 중 데이터 오류 (" + e.getMessage() + ")"); +// sb.append("\n"); +// sb.append("전문레이아웃="+getName()); +// throw new MessageException(sb.toString(), e); +// } catch (Exception e) { +// StringBuffer sb = new StringBuffer(); +// sb.append("전문레이아웃 매핑 중 데이터 오류 (" + e.getMessage() + ")"); +// sb.append("\n"); +// sb.append("전문레이아웃="+getName()); +// throw new MessageException(sb.toString(), e); +// } +// +// try { +// if (MESSAGE_FML.equals(name) || MESSAGE_FML32.equals(name)) { +// this.data = (FML) data; +// } else { +// StringBuffer sb = new StringBuffer(); +// sb.append("전문레이아웃 매핑 중 데이터 오류 (전문레이아웃에 설정하려는 데이터가 FML,FML32 타입이 아닙니다.)"); +// sb.append("\n"); +// sb.append("전문레이아웃="+getName()); +// +// throw new InvalidDataTypeException(sb.toString(), data); +// } +// } catch (Exception e) { +// StringBuffer sb = new StringBuffer(); +// sb.append("전문레이아웃 매핑 중 데이터 오류 (" + e.getMessage() + ")"); +// sb.append("\n"); +// sb.append("전문레이아웃="+getName()); +// throw new InvalidDataTypeException(sb.toString(), data, e); +// } +// } +// +// public void createObject() { +// Item root = layout.getRootItem(); +// String className = root.getRefInfo(); +// String name = this.layout.getLayoutType().getName(); +// +// FldTbl tbl = null; +// +// try { +// if (className == null || "".equals(className)) +// className = "com.eactive.eai.adapter.wtc.CrmFmlTable"; +// Class c = Class.forName(className); +// tbl = (FldTbl) c.newInstance(); +// } catch (ClassNotFoundException e) { +// StringBuffer sb = new StringBuffer(); +// sb.append("전문레이아웃 매핑 중 데이터 오류 FML 클래스를 못찾음 ( " + className + ")"); +// sb.append("\n"); +// sb.append("전문레이아웃="+getName()); +// throw new MessageException(sb.toString(), e); +// } catch (Exception e) { +// StringBuffer sb = new StringBuffer(); +// sb.append("전문레이아웃 매핑 중 데이터 오류 (" + e.getMessage() + ")"); +// sb.append("\n"); +// sb.append("전문레이아웃="+getName()); +// throw new MessageException(sb.toString(), e); +// } +// +// if (MESSAGE_FML.equals(name)) { +// this.data = new TypedFML((FldTbl) tbl); +// } else if (MESSAGE_FML32.equals(name)) { +// this.data = new TypedFML32((FldTbl) tbl); +// } else { +// StringBuffer sb = new StringBuffer(); +// sb.append("전문레이아웃 매핑 중 데이터 오류 (전문레이아웃에 설정하려는 데이터가 FML,FML32 타입이 아닙니다.)"); +// sb.append("\n"); +// sb.append("전문레이아웃="+getName()); +// throw new RuntimeException(sb.toString()); +// } +// } +// +// public int occurrence(Item item) { +// String path = item.getPath(); +// +// int id = -1; +// +// try { +// id = this.data.Fldid(path); +// } catch (Exception e) { +// return -1; +// } +// +// try { +// return this.data.Foccur(id); +// } catch (Exception e) { +// return -1; +// } +// } +// +// protected void composeData(Item item, Object value) { +// //if(logger.isInfoEnabled()) logger.info("[FMLMessage] composeData(" + item.getItemPath() + ", " + value + ")"); +// +// if (item.getIndex() < 0) +// return; +// +// String itemPath = item.getItemPath(); +// +// if (!item.isField()) { +// return; +// } +// +// //FML일 경우는 group과 field의 occurrence를 바꾼다. +// int occurrence = 0; +// +// // Group 이 반복이 없는 경우 이상현상 방지 : 2009.09.03 +// if (item.getParent().isGroup()) { +// if(item.getParent().getIndex() > -1) { +// occurrence = item.getParent().getIndex(); +// } +// else { +// occurrence = item.getIndex(); +// } +// } else { +// occurrence = item.getIndex(); +// } +// +// int id = -1; +// +// try { +// Matcher m = Pattern.compile("([a-zA-Z0-9_]+)\\[([0-9]+)\\]").matcher(item.getPath()); +// if (m.find()) { +// id = this.data.Fldid(m.group(1)); +// occurrence = Integer.parseInt(m.group(2)); +// } else { +// id = this.data.Fldid(item.getPath()); +// } +// } catch (Exception e) { +// throw new InvalidAccessException( +// "FML 필드를 찾을 수 없음 [path=" + item.getPath() + "] - " + e.getMessage(), +// itemPath, +// item.getRoot(), +// e); +// } +// +// try { +// switch (this.data.Fldtype(id)) { +// case FML.FLD_DOUBLE : +// if (item.getValue() instanceof Number) { +// this.data.Fchg(id, occurrence, ((Number) item.getValue()).doubleValue()); +// } else if (item.getValue() instanceof String) { +// if ("".equals(((String) item.getValue()).trim())) +// this.data.Fchg(id, occurrence, 0.0); +// else +// this.data.Fchg(id, occurrence, Double.parseDouble((String) item.getValue())); +// } else { +// this.data.Fchg(id, occurrence, item.getValue()); +// } +// break; +// case FML.FLD_LONG : +// if (item.getValue() instanceof Number) { +// this.data.Fchg(id, occurrence, ((Integer) item.getValue()).intValue()); +// } else if (item.getValue() instanceof String) { +// if ("".equals(((String) item.getValue()).trim())) +// this.data.Fchg(id, occurrence, 0); +// else +// this.data.Fchg(id, occurrence, Long.parseLong((String) item.getValue())); +// } else { +// this.data.Fchg(id, occurrence, item.getValue()); +// } +// break; +// default : +// this.data.Fchg(id, occurrence, item.getValue()); +// break; +// } +// } catch(Ferror e) { +// throw new MessageException( +// itemPath + " (" + item.getPath() + ") 에 값 (" + item.getValue() + ")을 설정할 수 없음 - " + +// e.getMessage() + +// (FchgErrors.get(e.getMessage()) == null ? "" : " - " + FchgErrors.get(e.getMessage())) + +// "\n" + item.getRoot(), +// e); +// } catch (Exception e) { +// throw new InvalidAccessException( +// itemPath + " (" + item.getPath() + ") 에 값 (" + item.getValue() + ")을 설정할 수 없음 - " + +// e.getMessage() + " - " + ((Item) this).getRefInfo(), +// itemPath, +// (Message) item.getRoot(), +// e); +// } +// } +// +// +// /** +// * 그룹 변환에서 사용되는 API. +// */ +// public MessageData getMessageData(String itemPath) { +// return null; +// } +// +// /** +// * 그룹 변환에서 사용되는 API. +// */ +// public void setMessageData(String itemPath, MessageData messageData) { +// } +// +// public void copy(Message message) { +// if (!(message instanceof FMLMessage)) { +// throw new InvalidMessageException("FMLMessage] Invlid Message for copy.", +// message); +// } +// +// Object obj = null; +// +// try { +// obj = message.getData(); +// } catch (InvalidDataTypeException e) { +// throw new InvalidMessageException(e, message); +// } +// +// if (!(obj instanceof FML)) { +// throw new InvalidMessageException("FMLMessage] Invlid FMLMessage", +// message); +// } +// +// FML fml = (FML) obj; +// +// try { +// String[] names = fml.getFieldTables()[0].getFldNames(); +// +// for (int i = 0; i < names.length; i++) { +// int id = fml.Fldid(names[i]); +// +// for (int j = 0; j < fml.Foccur(id); j++) { +// this.data.Fchg(id, j, fml.Fget(id, j)); +// } +// } +// } catch (Exception e) { +// throw new InvalidMessageException( +// "FMLMessage] Cannot copy the object. - " + e.getMessage(), +// message); +// } +// } +// +// public String toLogString() { +// StringBuffer sb = new StringBuffer(); +// Stack stack = new Stack(); +// sb.append(getName() + "["); +// stack.push("]"); +// +// int prevDepth = 1; +// for (Iterator iter = iterator(); iter.hasNext();) { +// Item item = (Item) iter.next(); +// +// /** +// * index == -1 인 경우는 무시한다 +// */ +// if (item.getIndex() < 0) { +// continue; +// } +// +// /** +// * depth 가 낮아질 때(tree를 빠져 나올 때), ']' 를 찍어준다. +// */ +// if (item.getDepth() < prevDepth) { +// sb.append(stack.pop()); +// } +// +// /** +// * ','로 구성요소를 구분해 준다. +// */ +// if (item.getDepth() <= prevDepth) { +// sb.append(", "); +// } +// +// switch (item.getNodeTypeId()) { +// case NODE_FIELD: +// if ("Y".equals(item.getMask())) +// sb.append(item.getName() + "=" + item.maskString(item.getValue())); +// else +// sb.append(item.getName() + "=" + item.getValue()); +// break; +// case NODE_GROUP: +// case NODE_MESSAGE: +// sb.append(item.getName() + "["); +// stack.push("]"); +// break; +// } +// +// /** +// * 이전 depth를 저장해 둔다. +// */ +// prevDepth = item.getDepth(); +// } +// +// /** +// * 필요한 만큼 ']'를 찍어준다. +// */ +// while(stack.size() > 0) { +// sb.append(stack.pop()); +// } +// +// return sb.toString(); +// } +// +// +// public String toString() { +// // if staled -> reorganize data +// try { +// getData(); +// } catch (Exception e) { +// logger.error("[FMLMessage] " + e.getMessage(), e); +// } +// +// StringBuffer sb = new StringBuffer(); +// sb.append(getName() + " (FMLMessage)"); +// sb.append(super.toString()); +// +// FldTbl[] ft = data.getFieldTables(); +// +// //---------------------------------------------------------------------- +// // JMS Queue 또는 Remote로 전달할 경우 FieldTable은 전송되지 않는다. +// // 이에 대한 처리방안 +// //---------------------------------------------------------------------- +// if(ft == null) { +// FldTbl[] pft = {new CrmFmlTable()}; +// data.setFieldTables(pft); +// } +// +// if (data != null) { +// sb.append("\n" + Constants.TAB + " | data = " + data); +// try { +// Iterator fmliter = data.Fiterator(); +// +// while (fmliter.hasNext()) { +// Map.Entry entry = (Map.Entry) fmliter.next(); +// FmlKey fmlkey = (FmlKey) entry.getKey(); +// +// switch (data.Fldtype(fmlkey.get_fldid())) { +// default: +// sb.append(String.format("\n" + Constants.TAB + " | %15s[%3d] : %3s : %s", +// data.Fname(fmlkey.get_fldid()), +// fmlkey.get_occurance(), +// data.Fldtype(fmlkey.get_fldid()), +// entry.getValue() +// )); +// break; +// } +// } +// } catch (weblogic.wtc.jatmi.Ferror e) { +// sb.append(String.format("\n" + Constants.TAB + " | %15s", +// "[WARN] - fml read error - " + e.getMessage())); +// } +// } +// sb.append("\n" + Constants.TAB + " +--------------------------------------------------------------------------------------------------+"); +// +// return sb.toString(); +// } +//} diff --git a/src/main/java/com/eactive/eai/transformer/message/FullBytesMessage.java b/src/main/java/com/eactive/eai/transformer/message/FullBytesMessage.java new file mode 100644 index 0000000..cd49c32 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/FullBytesMessage.java @@ -0,0 +1,325 @@ +package com.eactive.eai.transformer.message; + + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Iterator; + +import org.apache.commons.lang3.StringUtils; + +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.LayoutTypeKey; +import com.eactive.eai.transformer.layout.Types; +import com.eactive.eai.transformer.util.ByteUtil; +import com.eactive.eai.transformer.util.CommonLib; +import com.eactive.eai.transformer.util.Constants; +import com.eactive.eai.transformer.util.IConv; + + +/** + *
+ * BYTE ARRAY(전문) 형식의 데이터를 변환하기 위한 메시지.
+ * 전문의 길이는 데이터의 길이
+ *
+ * [제약 사항]
+ * 필드가 1 개인 통전문
+ *
+ * [PATH 정의]
+ * PATH           =  +  + 
+ * ITEM_TYPE      = 'F' | 'G' | 'M'
+ * STATIC_PATH    = OFFSET
+ * 
+ */ +public class FullBytesMessage extends Message { + private static final long serialVersionUID = -6300557731836672170L; + public static final String NAME = LayoutTypeKey.FULLBYTES; + protected byte[] data; + protected boolean bStaled = false; + + public FullBytesMessage() { + super(); + } + + public void createObject() { + data = new byte[0]; + } + + @Override + public int getInt(String itemPath) { + try { + Item item = getItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + Object value = item.getValue(); + if (value == null) { + return 0; + } else if (value instanceof byte[]) { + return Integer.parseInt(new String(((byte[]) value)).trim()); + } else { + throw new InvalidAccessException("레이아웃항목의 값이 숫자가 아님", itemPath); + } + } catch (Exception e) { + throw new InvalidAccessException(e.getMessage(), itemPath, this, e); + } + } + + @Override + public void setInt(String itemPath, int value) { + int newValue = value; + super.setInt(itemPath, newValue); + + Item item = getOrCreateItem(itemPath, true); + try { + setBytes(itemPath, StringUtils.leftPad(String.valueOf(value), item.getLength(), "0").getBytes()); + } catch(Exception e) { + throw new MessageException(e.getMessage(), e); + } + } + + @Override + public void setObject(String itemPath, Object value) { + if (itemPath == null) { + throw new InvalidAccessException("cannot set object - itemPath is null - message : " + getName(), itemPath); + } + + if (!itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getOrCreateItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + item.setValue(value); + int length =0; + if (value instanceof byte[]){ + length = ((byte[])value).length; + }else if (value instanceof String){ + length = ((String)value).getBytes().length; + }else { + throw new InvalidDataTypeException ("지원하지 않는 데이터 타입입니다." +value.getClass(),value); + } + item.setLength(length); + + composeData(item, value); + } + + protected void composeData(Item item, Object value) { + if (item.getIndex() < 0) + return; + + if (!bStaled) { + bStaled = true; + } + } + + public Object getData() throws InvalidDataTypeException { + if (bStaled) { + try { + data = toByteArray(); + } catch(Exception e) { + throw new InvalidDataTypeException(e.getMessage(),"FullBytesMessage.getData() method", e); + } + bStaled = false; + } + + return getDataBytes(); + } + + protected byte[] toByteArray() { + try ( + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ){ + for (Iterator iter = iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + + /** + * index == -1 인 경우는 무시한다 + */ + if (item == null || item.getIndex() == -1) { + continue; + } + + if(item.getNodeTypeId() == NODE_FIELD) { + if (item.getValue() == null) { + bos.write( new byte[item.getLength()] ); + } else if (item.getValue() instanceof String) { + bos.write( ByteUtil.padding((String) item.getValue(), item.getLength()) ); + } else if (item.getValue() instanceof Number) { + bos.write( ByteUtil.padding(((Number) item.getValue()).toString(), item.getLength()) ); + } else { + bos.write( ByteUtil.padding((byte[]) item.getValue(), item.getLength()) ); + } + } + } + return bos.toByteArray(); + } catch(Exception e) { + logger.error("retrun zero-bytes.", e); + return new byte[0]; + } + } + + protected void doSetData(Object data) { + this.data = (byte[]) data; + byte[] byteData = ByteUtil.copy(this.data); + if(byteData == null) { + byteData = new byte[0]; + } + setDataBytes(byteData); + } + + // only for FullBytesMessage & CommonFullBytesMessage + protected byte[] setDataBytes(byte[] data) { + int originalLength = data.length; + Item item = null; + + for (Iterator iter = iterator(); iter.hasNext();) { + item = (Item) iter.next(); + + if(item == null) { + continue; + } + + /** + * index == -1 인 경우는 무시한다 + */ + if (item.getIndex() == -1) { + continue; + } + + if (item.getNodeTypeId() == NODE_FIELD) { + try { + item.setValue(ByteUtil.cut(data, data.length)); + item.setLength(data.length); + } catch(Exception e) { + StringBuilder sb = new StringBuilder(); + sb.append("전문레이아웃 매핑 중 데이터 사이즈 오류 ("+e.getMessage()+")"); + sb.append("\n"); + sb.append("전문레이아웃="+item.getItemPath()); + throw new MessageException(sb.toString()); + } + data = new byte[0]; + } + } + if (data.length > 0) { + StringBuilder sb = new StringBuilder(); + sb.append("전문레이아웃 매핑 중 데이터 사이즈 오류 (정의한 길이=" + (originalLength-data.length) +", 받은 길이="+ originalLength + ")"); + sb.append("\n"); + sb.append("전문레이아웃="+(item==null?"":item.getItemPath())); + throw new MessageSetDataOverflowException(sb.toString()); + } + return data; + } + + + //-------------------------------------------------------------------------- + // Additional Getter/Setter + + public byte[] getDataBytes() throws InvalidDataTypeException { + return data; + } + + public int getDataLength() { + if (data == null) { + return -1; + } else { + return data.length; + } + } + + public void clearData() { + clearData((byte) 0x00); + clearValue(); + } + + public void clearData(byte fillByte) { + if (data != null) { + for (int i = 0; i < data.length; i++) { + data[i] = fillByte; + } + } + } + + public String toLogString() { + return toLogString(false); + } + + public String toLogString(boolean ebcdic) { + if (ebcdic) { + byte[] buff = makeBytesLogString(); + return IConv.ebcdicToASCIIWithSOSIEX(buff); + } else { + byte[] buff = makeBytesLogString(); + return new String(buff); + } + } + + protected byte[] makeBytesLogString() { + try ( + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + ){ + for (Iterator iter = iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + + /** + * index == -1 인 경우는 무시한다 + */ + if (item == null || item.getIndex() < 0) { + continue; + } + + if(item.getNodeTypeId() == NODE_FIELD) { + if ("Y".equals(item.getMask())) { + String mString = maskString(item.getLength()); + if(mString == null) { + bos.write( "".getBytes() ); + } + else { + bos.write( mString.getBytes() ); + } + } else { + if (item.getValue() == null) { + bos.write( new byte[item.getLength()] ); + } else if (item.getValue() instanceof String) { + bos.write( ByteUtil.padding((String) item.getValue(), item.getLength()) ); + } else if (item.getValue() instanceof Number) { + bos.write( ByteUtil.padding(((Number) item.getValue()).toString(), item.getLength()) ); + } else { + bos.write( ByteUtil.padding((byte[]) item.getValue(), item.getLength()) ); + } + } + } + } + return bos.toByteArray(); + } catch(Exception e) { + logger.error("retrun zero-bytes.", e); + return new byte[0]; + } + } + + @Override + public String toString() { + try { + getData(); + } catch (InvalidDataTypeException e) { + logger.error("[FullBytesMessage] " + e.getMessage(), e); + } + + StringBuilder sb = new StringBuilder(); + if ("FullBytesMessage".equals(getClass().getSimpleName())) { + sb.append(getName() + " (FullBytesMessage)"); + } + sb.append(super.toString()); + if (data != null) { + sb.append("\n" + Constants.TAB + " | data = " + CommonLib.hexDumpTab(data)); + } + sb.append("\n" + Constants.TAB + " +--------------------------------------------------------------------------------------------------+"); + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/HJSONMessage.java b/src/main/java/com/eactive/eai/transformer/message/HJSONMessage.java new file mode 100644 index 0000000..b8e6c0c --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/HJSONMessage.java @@ -0,0 +1,407 @@ +//package com.eactive.eai.transformer.message; +// +//import java.math.BigDecimal; +//import java.util.Base64; +//import java.util.HashMap; +//import java.util.Iterator; +//import java.util.Map; +// +//import org.apache.commons.lang3.StringUtils; +//import org.json.simple.JSONArray; +//import org.json.simple.JSONObject; +// +//import com.eactive.eai.transformer.layout.Item; +//import com.eactive.eai.transformer.layout.Types; +//import com.eactive.eai.transformer.util.Logger; +//import com.fasterxml.jackson.databind.node.ObjectNode; +// +///** +// * +// * +// * UJSON과 차이 +// * HJSON 은 JSON 으로 출력시 항목이 없어도 GROUP이 출력됨(표준전문에만 사용됨) +// * UJOSN 은 JSON 으로 출력시 항목이 없으면 GROUP도 출력안됨 +// * +// * +// * @author LENOVO +// * +// */ +//public class HJSONMessage extends UJSONMessage { +// /** +// * +// */ +// private static final long serialVersionUID = -4490794379709362079L; +// +// private static Logger logger = Logger.getLogger("transformer"); +// +// public static final String NAME = "HJSON"; +// //private JSONObject data; +// protected boolean bStaled = false; +// +// public static String encode = "UTF-8"; +// +// public String MULTILANG = "|BASE64|UTF-8|"; +// +// public HJSONMessage() { +// super(); +// } +// +// public Object getDataFromParent(Map parentDataList, Item item){ +// Item parentItem = item.getParent(); +// int parentIndex = parentItem == this ? 0 : parentItem.getDepth(); +// Object parentDataObject = parentDataList.get(parentIndex); +// if (parentDataObject == null) return null;//HJSON 추가 +// //원본 if(parentItem != this && "*".equals(parentItem.getOccType()) ){ +// //참조항목이 있고 maxcount 가 있을경우 때문에수정 조건 추가 juns 20211019 +// //JSON 고정그리드 때문에 추가 juns 20211020 +// if(parentItem != this +// && ( "*".equals(parentItem.getOccType()) +// || "+".equals(parentItem.getOccType()) +// || parentItem.getOccMax() > parentItem.getOccMin() // OccType 이 숫자이고 max 값과 min 값이 다른경우 +// || (parentItem.getOccMax() == parentItem.getOccMin() && parentItem.getOccMin() > 1) // JSON 고정그리드 때문에 추가 +// )){ +// JSONArray parentArray = (JSONArray) parentDataObject; +// Object dataObj = parentArray.get(item.getParent().getIndex()); +// if (dataObj instanceof JSONObject) { +// JSONObject json = (JSONObject) dataObj; +// return json.get(item.getName()); +// }else{ +// return dataObj; +// } +// }else{ +// JSONObject parentObject = (JSONObject) parentDataObject; +// return parentObject.get(item.getName()); +// } +// } +// +// public void setValue(JSONObject obj, String itempPath) throws InvalidAccessException { +//// int originalLength = data.length; +// Item item = null; +// Map parentDataList = new HashMap<>(); +// parentDataList.put(0, this.data.get(this.getLayoutName())); +// for (Iterator iter = iterator(); iter.hasNext();) { +// item = (Item) iter.next(); +// +// if(item == null) { +// continue; +// } +// /** +// * occType = * | + | (occMax>occMin) 일 경우 +// * occRef를 참조하여 그 갯수만큼 item을 생성한다. +// */ +// if (item.getIndex()==-1 && ("*".equals(item.getOccType()) || "+".equals(item.getOccType()) || item.getOccMax()>item.getOccMin() )) { +// int occCount = 0; +// String path =""; +// try { +// //occCount = item.getRoot().getInt(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); +// if(item.getOccMin() > 0 && item.getOccMin() == item.getOccMax()){ +// occCount = item.getOccMin() ; +// }else if(StringUtils.isBlank(item.getOccRef())){ +//// JSONArray array = (JSONArray) getDataFromParent(parentDataList, item); +//// occCount = array.size(); +// Object ret = getDataFromParent(parentDataList, item); +// if (ret == null){ +// occCount = 0; +// }else if (ret instanceof JSONArray){ +// occCount = ((JSONArray)ret).size(); +// }else if (ret instanceof JSONObject){ +// occCount = 1; +// } +// }else{ +// path = getOccRefItem(item); +// occCount = item.getRoot().getInt(path); +// } +// +// } +// catch(Exception oe) { +// throw new InvalidAccessException(item.getName() +"의 반복참조정보 값이 숫자가 아닙니다 - " + path + " : " + oe.getMessage() , path); +// } +// +// if (occCount < item.getOccMin() +// || (!"*".equals(item.getOccType()) && !"+".equals(item.getOccType()) && occCount > item.getOccMax())) { +// throw new InvalidAccessException("반복횟수가 OccMin~OccMax 의 범위를 벗어납니다. , " + item.getName(), item.getItemPath()); +// } +// +// item.createItem(item, +// item.getRoot().normalizeFullName(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getName() + "[" + (occCount-1) + "]"), +// false); +// +// /** +// * item 이 속해있는 childList 크기가 증가로 인해, iterator를 다시 생성한다. +// */ +// iter = item.getRoot().iterator(); +// for (;iter.hasNext();) { +// if (item.equals(iter.next())) { +// break; +// } +// } +// } +// +// /** +// * index == -1 인 경우는 무시한다 +// */ +// if (item.getIndex() == -1) { +// continue; +// } +// +// switch (item.getNodeTypeId()) { +// case NODE_FIELD: +// try { +// /* +// * Field 인데 반복하는경우 +// * FIELD ARRAY FORMAT "name":["value1", "value2"] +// * data : FIELD(2203) , Type필요(2101 등등), length 필요, occType ="*", occMin=0, occMax=-1 +// */ +// if ("*".equals(item.getOccType()) || "+".equals(item.getOccType()) || item.getOccMax()>item.getOccMin()) { +// JSONArray arrayValue = (JSONArray)getDataFromParent(parentDataList, item); +// item.setValue(arrayValue.get(item.getIndex())); +// }else{ +// Object value = getDataFromParent(parentDataList, item); +// //multi lang 고려 +// if (value instanceof String +// && item.getDataTypeId() == Types.TYPE_STRING +// && item.getMultiLang() != null){ +// String multiLang = item.getMultiLang(); +// String s = (String)value; +// if (s != null){ +// if (multiLang != null &&(MULTILANG.contains("|"+multiLang.toUpperCase().trim()+"|")) ){ +// String b = Base64.getEncoder().encodeToString(s.getBytes(encode)); +// item.setValue(b); +// }else{ +// item.setValue(s); +// } +// } +// }else{ +// item.setValue(value); +// } +// } +// } catch(Exception e) { +// e.printStackTrace(); +// StringBuffer sb = new StringBuffer(); +// sb.append("전문레이아웃 매핑 중 데이터 사이즈 오류 ("+e.getMessage()+")"); +// sb.append("\n"); +// sb.append("전문레이아웃="+item.getItemPath()); +// throw new MessageException(sb.toString()); +// } +// +// break; +// case NODE_GROUP: +// Object parentData = getDataFromParent(parentDataList, item); +// parentDataList.put(item.getDepth(), parentData); +// } +// } +// } +// +// protected Object toJsonObjectType(int itemType, String multiLang, String value) { +// Object jsonValueObject = null; +// +//// if(value == null) { +//// return null; +//// } +// switch(itemType) { +// case Types.TYPE_INT : +// case Types.TYPE_LONG : +// case Types.TYPE_SHORT : +// case Types.TYPE_DOUBLE : +// case Types.TYPE_FLOAT : +// case Types.TYPE_BIGDECIMAL : +// if (value == null) value ="0"; +// jsonValueObject = new BigDecimal(value); +// break; +// case Types.TYPE_BOOLEAN : +// jsonValueObject = new Boolean(value); +// break; +// case Types.TYPE_STRING : +// if (value == null) value =""; +// if (multiLang != null &&(MULTILANG.contains("|"+multiLang.toUpperCase().trim()+"|")) ){ +// try{ +// jsonValueObject = new String(Base64.getDecoder().decode(value),"UTF-8"); +// }catch(Exception e){ +// jsonValueObject = value; +// } +// }else{ +// jsonValueObject = value; +// } +// break; +// default : +// jsonValueObject = value; +// } +// return jsonValueObject; +// } +// +// protected ObjectNode getJSONData(boolean isMask) throws Exception { +// ObjectNode root = mapper.createObjectNode(); +//// JSONObject root = new JSONObject(); +//// JSONObject messageName = new JSONObject(); +//// root.put(getName(), messageName); +//// +//// Stack stack = new Stack(); +//// Object parent = messageName; +//// Object current = null; +//// +//// JSONObject obj = null; +//// JSONArray arr = null; +//// +//// +//// stack.push(messageName); +//// int prevDepth = 1; +//// +//// Item item = null; +//// try { +//// for (Iterator iter = iterator(); iter.hasNext();) { +//// item = (Item) iter.next(); +//// +//// /** +//// * index == -1 인 경우는 무시한다 +//// */ +//// if (item == null || item.getIndex() == -1) { +//// if (item.getNodeTypeId() != NODE_GROUP) continue; //배열에서 group 명만 존재하도록 수정-그룹은 통과 (index != -1) +//// } +//// +//// /** +//// * depth 가 낮아질 때(tree를 빠져 나올 때), parent를 재설정한다. +//// */ +//// if (item.getDepth() < prevDepth) { +//// for(int j=0; j<(prevDepth - item.getDepth()); j++) stack.pop(); +//// } +//// /** +//// * 이전 depth를 저장해 둔다. +//// */ +//// prevDepth = item.getDepth(); +//// +//// parent = stack.peek(); +//// +//// /** +//// * "?" 속성인 경우 값이 스페이스로 채워져 있을 때 변경 +//// * Number Type 속성의 값이 0 인 경우 Empty 처리 ( 2013.08.02 ) +//// */ +//// if( item.getOccMin() == 0 && item.getOccMax() == 1 ) { +//// if( item.getValue() == null ) continue; +//// if( item.getValue() instanceof String && "".equals(((String)item.getValue()).trim()) ) continue; +//// if( item.getValue() instanceof byte[] && "".equals(new String((byte[])item.getValue()).trim()) ) continue; +//// if( item.getValue() instanceof Number && ((Number)item.getValue()).floatValue() == 0.0f ) continue; +//// } +//// +//// switch (item.getNodeTypeId()) { +//// case NODE_ATTR: +//// case NODE_FIELD: +//// +//// // 2020.02.25 : KB에서는 attr type을 사용하지 않는다. +//// // String prefix = item.getNodeTypeId() == NODE_ATTR ? "-":""; +//// if( parent instanceof JSONObject ) { +//// obj = (JSONObject)parent; +//// +//// // validation error check +//// String val = null; +//// try { +//// val = getStringValue(item.getValue(),item); +//// } +//// catch(Exception ex) { +//// throw new Exception("item="+item.toString() +", "+ ex.getMessage()); +//// } +//// // String인 경우에만 Masking 이 가능 - 숫자는 불가능 +//// if (isMask && "Y".equals(item.getMask()) +//// && (Types.TYPE_STRING == item.getDataTypeId()) ) { +//// val = maskString2(val, item.getMaskLength(), item.getMaskOffset()); +//// } +//// //JSON default값 추가??? 20210310 jun's +//// if ("".equals(val) && item.getDefaultValue() != null) { +//// Object o = item.getDefaultValue(); +//// if (o instanceof String) { +//// val = (String)o; +//// }else if (o instanceof Integer) { +//// val = Integer.toString((Integer)o); +//// }else if (o instanceof Long) { +//// val = Long.toString((Long)o); +//// }else if (o instanceof BigDecimal) { +//// val = ((BigDecimal)o).toPlainString(); +//// } +//// +//// } +//// //우체국 요건 field 값이 null 일경우에 field를 삭제한다. +//// //header 일경우는 "" +//// //최종수정 null 무시하고 toJsonObjectType에서 defaul값 셋팅 juns 20211025 +////// if (val == null ) { +//////// continue; +////// val =""; +////// } +//// Object value = toJsonObjectType(item.getDataTypeId(),item.getMultiLang(), val); +//// +//// if( item.getOccMax() > 1 || item.getOccMax() == -1 ) { // FIELD ARRAY FORMAT "name":["value1", "value2"] +//// arr = (JSONArray)obj.get(item.getName()); +//// if (arr == null){ +//// arr = new JSONArray(); +//// arr.add(value); +//// // obj.put(prefix+item.getName(), arr); +//// obj.put(item.getName(), arr); +//// }else{ +//// arr.add(value); +//// } +//// +//// }else { //FIELD +//// obj = (JSONObject)parent; +//// // obj.put(prefix+item.getName(), value); +//// obj.put(item.getName(), value); +//// } +//// } else { +//// logger.error("JSONArray 타입의 부모를 지원하지 않음"); +//// throw new Exception("JSONArray 타입의 부모를 지원하지 않음"); +//// } +//// +//// break; +//// case NODE_GROUP: +//// if( parent instanceof JSONObject ) { +//// obj = (JSONObject)parent; +//// if( item.getOccMax() > 1 || item.getOccMax() == -1 ) { // GRID +//// if (item.getIndex()== -1) {//배열에서 group 명만 존재하도록 수정 (index != -1) +//// obj.put(item.getName(), new JSONArray()); +//// }else { +//// arr = (JSONArray)obj.get(item.getName()); +//// if (arr == null){ +//// arr = new JSONArray(); +//// } +//// current = new JSONObject(); +//// arr.add(current); +//// obj.put(item.getName(), arr); +//// +//// } +//// }else{ //GROUP +//// +//// current = new JSONObject(); +//// obj.put(item.getName(), current); +//// } +//// +//// } else { +//// logger.error("JSONArray 타입의 부모를 지원하지 않음"); +//// throw new Exception("JSONArray 타입의 부모를 지원하지 않음"); +//// } +//// +//// // 그룹의 Child가 있는 경우에만 +//// if(item.getChildCount() > 0 && item.getIndex() != -1){ //배열에서 group 명만 존재하도록 수정 (index != -1) +//// stack.push(current); +//// } +//// break; +//// case NODE_MESSAGE: +//// //로직이 호출 안됨 +//// if( parent instanceof JSONObject ) { +//// obj = (JSONObject)parent; +//// current = new JSONObject(); +//// obj.put(item.getName(), current); +//// stack.push(current); +//// +//// }else { +//// logger.error("JSONArray 타입의 부모를 지원하지 않음"); +//// throw new Exception("JSONArray 타입의 부모를 지원하지 않음"); +//// } +//// break; +//// +//// } // end switch +//// } // end for +//// }catch(Exception e) { +//// logger.error(item.getItemPath()+" "+e.getMessage(),e); +//// throw new Exception(e); +//// } +// return root; +// } +// +//} diff --git a/src/main/java/com/eactive/eai/transformer/message/ISO8583Message.java b/src/main/java/com/eactive/eai/transformer/message/ISO8583Message.java new file mode 100644 index 0000000..c224f00 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/ISO8583Message.java @@ -0,0 +1,639 @@ +package com.eactive.eai.transformer.message; + +import java.io.UnsupportedEncodingException; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.collections.map.HashedMap; + +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.util.ISO8583DumpUtil; +import com.solab.iso8583.IsoMessage; +import com.solab.iso8583.IsoType; +import com.solab.iso8583.IsoValue; +import com.solab.iso8583.MessageFactory; +import com.solab.iso8583.codecs.CompositeField; +import com.solab.iso8583.parse.FieldParseInfo; + +/** + *
+ * ISO 8583(전문) 형식의 데이터를 변환하기 위한 메시지.
+ *
+ * [참조]
+ * https://en.wikipedia.org/wiki/ISO_8583
+ * 
+ */ +@SuppressWarnings("serial") +public class ISO8583Message extends BytesMessage { + public static final String NAME = "ISO8583"; + public static final String FIELD_NAME_MESSAGE_TYPE = "messageType"; + public static final String FIELD_NAME_PRIMARY_BITMAP = "primaryBitMap"; + protected Map childMap_ = null; + private static HashMap fullSpecMap = null; + private static HashMap fullFieldNameMap = null; + private int isoHeaderLength = 0; + + public ISO8583Message() { + super(); + } + + @SuppressWarnings("unchecked") + public Map getChildMap() { + if (childMap_ == null) { + childMap_ = new HashedMap(); + for (Object object : childList) { + Item item = (Item) object; + if (item.getIndex() > -1) { + childMap_.put(item.getName(), item); + } + } + } + + return childMap_; + } + + @Override + public Item getChildByName(String name) { + return getChildMap().get(name); + } + + @Override + public Object getData() throws InvalidDataTypeException { + return super.getDataBytes(); + } + + protected byte[] setDataBytes(byte[] data) { + try { + MessageFactory mf = createMessageFactory(); + setParseMapFromLayout(data, mf, layout, getChildMap(), getIsoHeaderLength()); + IsoMessage m = mf.parseMessage(data, getIsoHeaderLength(), mf.isBinaryHeader()); + assignRepresentativeItemValue(data, m, getIsoHeaderLength()); + + if (logger.isDebugEnabled()) + logger.debug( + "Parsed [" + getLayoutName() + "] ISO Message: \n" + ISO8583DumpUtil.dumpIsoMessage(m, this)); + + for (int i = 2; i <= 128; i++) { + assignItemValue(i, m); + } + } catch (Exception e) { + throw new MessageException(e.getMessage(), e); + } + + return data; + } + + public MessageFactory createMessageFactory() { + MessageFactory mf = new MessageFactory<>(); + return mf; + } + + public HashMap getFullSpecMap(String encode) { + if (fullSpecMap != null) { + return fullSpecMap; + } + + fullSpecMap = new HashMap<>(); + + fullSpecMap.put(2, FieldParseInfo.getInstance(IsoType.LLVAR, 19, encode)); + fullSpecMap.put(3, FieldParseInfo.getInstance(IsoType.NUMERIC, 6, encode)); + fullSpecMap.put(4, FieldParseInfo.getInstance(IsoType.NUMERIC, 12, encode)); + fullSpecMap.put(5, FieldParseInfo.getInstance(IsoType.NUMERIC, 12, encode)); + fullSpecMap.put(6, FieldParseInfo.getInstance(IsoType.NUMERIC, 12, encode)); + fullSpecMap.put(7, FieldParseInfo.getInstance(IsoType.NUMERIC, 10, encode)); + fullSpecMap.put(8, FieldParseInfo.getInstance(IsoType.NUMERIC, 8, encode)); + fullSpecMap.put(9, FieldParseInfo.getInstance(IsoType.NUMERIC, 8, encode)); + fullSpecMap.put(10, FieldParseInfo.getInstance(IsoType.NUMERIC, 8, encode)); + fullSpecMap.put(11, FieldParseInfo.getInstance(IsoType.NUMERIC, 6, encode)); + fullSpecMap.put(12, FieldParseInfo.getInstance(IsoType.NUMERIC, 6, encode)); + fullSpecMap.put(13, FieldParseInfo.getInstance(IsoType.NUMERIC, 4, encode)); + fullSpecMap.put(14, FieldParseInfo.getInstance(IsoType.NUMERIC, 4, encode)); + fullSpecMap.put(15, FieldParseInfo.getInstance(IsoType.NUMERIC, 4, encode)); + fullSpecMap.put(16, FieldParseInfo.getInstance(IsoType.NUMERIC, 4, encode)); + fullSpecMap.put(17, FieldParseInfo.getInstance(IsoType.NUMERIC, 4, encode)); + fullSpecMap.put(18, FieldParseInfo.getInstance(IsoType.NUMERIC, 4, encode)); + fullSpecMap.put(19, FieldParseInfo.getInstance(IsoType.NUMERIC, 3, encode)); + fullSpecMap.put(20, FieldParseInfo.getInstance(IsoType.NUMERIC, 3, encode)); + fullSpecMap.put(21, FieldParseInfo.getInstance(IsoType.NUMERIC, 3, encode)); + fullSpecMap.put(22, FieldParseInfo.getInstance(IsoType.NUMERIC, 3, encode)); + fullSpecMap.put(23, FieldParseInfo.getInstance(IsoType.NUMERIC, 3, encode)); + fullSpecMap.put(24, FieldParseInfo.getInstance(IsoType.NUMERIC, 3, encode)); + fullSpecMap.put(25, FieldParseInfo.getInstance(IsoType.NUMERIC, 2, encode)); + fullSpecMap.put(26, FieldParseInfo.getInstance(IsoType.NUMERIC, 2, encode)); + fullSpecMap.put(27, FieldParseInfo.getInstance(IsoType.NUMERIC, 1, encode)); + fullSpecMap.put(28, FieldParseInfo.getInstance(IsoType.ALPHA, 8, encode)); + fullSpecMap.put(29, FieldParseInfo.getInstance(IsoType.ALPHA, 8, encode)); + fullSpecMap.put(30, FieldParseInfo.getInstance(IsoType.ALPHA, 8, encode)); + fullSpecMap.put(31, FieldParseInfo.getInstance(IsoType.ALPHA, 8, encode)); + fullSpecMap.put(32, FieldParseInfo.getInstance(IsoType.LLVAR, 11, encode)); + fullSpecMap.put(33, FieldParseInfo.getInstance(IsoType.LLVAR, 11, encode)); + fullSpecMap.put(34, FieldParseInfo.getInstance(IsoType.LLVAR, 28, encode)); + fullSpecMap.put(35, FieldParseInfo.getInstance(IsoType.LLVAR, 37, encode)); + fullSpecMap.put(36, FieldParseInfo.getInstance(IsoType.LLLVAR, 104, encode)); + fullSpecMap.put(37, FieldParseInfo.getInstance(IsoType.ALPHA, 12, encode)); + fullSpecMap.put(38, FieldParseInfo.getInstance(IsoType.ALPHA, 6, encode)); + fullSpecMap.put(39, FieldParseInfo.getInstance(IsoType.ALPHA, 2, encode)); + fullSpecMap.put(40, FieldParseInfo.getInstance(IsoType.ALPHA, 3, encode)); + fullSpecMap.put(41, FieldParseInfo.getInstance(IsoType.ALPHA, 8, encode)); + fullSpecMap.put(42, FieldParseInfo.getInstance(IsoType.ALPHA, 15, encode)); + fullSpecMap.put(43, FieldParseInfo.getInstance(IsoType.ALPHA, 40, encode)); + fullSpecMap.put(44, FieldParseInfo.getInstance(IsoType.LLVAR, 25, encode)); + fullSpecMap.put(45, FieldParseInfo.getInstance(IsoType.LLVAR, 76, encode)); + fullSpecMap.put(46, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(47, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(48, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(49, FieldParseInfo.getInstance(IsoType.ALPHA, 3, encode)); + fullSpecMap.put(50, FieldParseInfo.getInstance(IsoType.ALPHA, 3, encode)); + fullSpecMap.put(51, FieldParseInfo.getInstance(IsoType.ALPHA, 3, encode)); + fullSpecMap.put(52, FieldParseInfo.getInstance(IsoType.BINARY, 64, encode)); + fullSpecMap.put(53, FieldParseInfo.getInstance(IsoType.NUMERIC, 16, encode)); + fullSpecMap.put(54, FieldParseInfo.getInstance(IsoType.LLLVAR, 120, encode)); + fullSpecMap.put(55, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(56, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(57, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(58, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(59, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(60, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(61, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(62, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(63, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(64, FieldParseInfo.getInstance(IsoType.BINARY, 64, encode)); + fullSpecMap.put(65, FieldParseInfo.getInstance(IsoType.BINARY, 1, encode)); + fullSpecMap.put(66, FieldParseInfo.getInstance(IsoType.NUMERIC, 1, encode)); + fullSpecMap.put(67, FieldParseInfo.getInstance(IsoType.NUMERIC, 2, encode)); + fullSpecMap.put(68, FieldParseInfo.getInstance(IsoType.NUMERIC, 3, encode)); + fullSpecMap.put(69, FieldParseInfo.getInstance(IsoType.NUMERIC, 3, encode)); + fullSpecMap.put(70, FieldParseInfo.getInstance(IsoType.NUMERIC, 3, encode)); + fullSpecMap.put(71, FieldParseInfo.getInstance(IsoType.NUMERIC, 4, encode)); + fullSpecMap.put(72, FieldParseInfo.getInstance(IsoType.NUMERIC, 4, encode)); + fullSpecMap.put(73, FieldParseInfo.getInstance(IsoType.NUMERIC, 6, encode)); + fullSpecMap.put(74, FieldParseInfo.getInstance(IsoType.NUMERIC, 10, encode)); + fullSpecMap.put(75, FieldParseInfo.getInstance(IsoType.NUMERIC, 10, encode)); + fullSpecMap.put(76, FieldParseInfo.getInstance(IsoType.NUMERIC, 10, encode)); + fullSpecMap.put(77, FieldParseInfo.getInstance(IsoType.NUMERIC, 10, encode)); + fullSpecMap.put(78, FieldParseInfo.getInstance(IsoType.NUMERIC, 10, encode)); + fullSpecMap.put(79, FieldParseInfo.getInstance(IsoType.NUMERIC, 10, encode)); + fullSpecMap.put(80, FieldParseInfo.getInstance(IsoType.NUMERIC, 10, encode)); + fullSpecMap.put(81, FieldParseInfo.getInstance(IsoType.NUMERIC, 10, encode)); + fullSpecMap.put(82, FieldParseInfo.getInstance(IsoType.NUMERIC, 12, encode)); + fullSpecMap.put(83, FieldParseInfo.getInstance(IsoType.NUMERIC, 12, encode)); + fullSpecMap.put(84, FieldParseInfo.getInstance(IsoType.NUMERIC, 12, encode)); + fullSpecMap.put(85, FieldParseInfo.getInstance(IsoType.NUMERIC, 12, encode)); + fullSpecMap.put(86, FieldParseInfo.getInstance(IsoType.NUMERIC, 16, encode)); + fullSpecMap.put(87, FieldParseInfo.getInstance(IsoType.NUMERIC, 16, encode)); + fullSpecMap.put(88, FieldParseInfo.getInstance(IsoType.NUMERIC, 16, encode)); + fullSpecMap.put(89, FieldParseInfo.getInstance(IsoType.NUMERIC, 16, encode)); + fullSpecMap.put(90, FieldParseInfo.getInstance(IsoType.NUMERIC, 42, encode)); + fullSpecMap.put(91, FieldParseInfo.getInstance(IsoType.ALPHA, 1, encode)); + fullSpecMap.put(92, FieldParseInfo.getInstance(IsoType.ALPHA, 2, encode)); + fullSpecMap.put(93, FieldParseInfo.getInstance(IsoType.ALPHA, 5, encode)); + fullSpecMap.put(94, FieldParseInfo.getInstance(IsoType.ALPHA, 7, encode)); + fullSpecMap.put(95, FieldParseInfo.getInstance(IsoType.ALPHA, 42, encode)); + fullSpecMap.put(96, FieldParseInfo.getInstance(IsoType.BINARY, 64, encode)); + fullSpecMap.put(97, FieldParseInfo.getInstance(IsoType.ALPHA, 16, encode)); + fullSpecMap.put(98, FieldParseInfo.getInstance(IsoType.ALPHA, 25, encode)); + fullSpecMap.put(99, FieldParseInfo.getInstance(IsoType.LLVAR, 11, encode)); + fullSpecMap.put(100, FieldParseInfo.getInstance(IsoType.LLVAR, 11, encode)); + fullSpecMap.put(101, FieldParseInfo.getInstance(IsoType.LLVAR, 17, encode)); + fullSpecMap.put(102, FieldParseInfo.getInstance(IsoType.LLVAR, 28, encode)); + fullSpecMap.put(103, FieldParseInfo.getInstance(IsoType.LLVAR, 28, encode)); + fullSpecMap.put(104, FieldParseInfo.getInstance(IsoType.LLLVAR, 100, encode)); + fullSpecMap.put(105, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(106, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(107, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(108, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(109, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(110, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(111, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(112, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(113, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(114, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(115, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(116, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(117, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(118, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(119, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(120, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(121, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(122, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(123, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(124, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(125, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(126, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(127, FieldParseInfo.getInstance(IsoType.LLLVAR, 999, encode)); + fullSpecMap.put(128, FieldParseInfo.getInstance(IsoType.BINARY, 64, encode)); + + return fullSpecMap; + } + + public String getFieldName(int key) { + if (fullFieldNameMap == null) { + fullFieldNameMap = new HashMap<>(); + fullFieldNameMap.put(1, "Bitmap"); + fullFieldNameMap.put(2, "Primary account number (PAN)"); + fullFieldNameMap.put(3, "Processing Code"); + fullFieldNameMap.put(4, "Amount Transaction"); + fullFieldNameMap.put(5, "Amount, settlement"); + fullFieldNameMap.put(6, "Amount, cardholder billing"); + fullFieldNameMap.put(7, "Transmission date & time"); + fullFieldNameMap.put(8, "Amount, cardholder billing fee"); + fullFieldNameMap.put(9, "Conversion rate, settlement"); + fullFieldNameMap.put(10, "Conversion rate, cardholder billing"); + fullFieldNameMap.put(11, "System trace audit number (STAN)"); + fullFieldNameMap.put(12, "Local transaction time (hhmmss)"); + fullFieldNameMap.put(13, "Local transaction date (MMDD)"); + fullFieldNameMap.put(14, "Expiration date (YYMM)"); + fullFieldNameMap.put(15, "Settlement date"); + fullFieldNameMap.put(16, "Currency conversion date"); + fullFieldNameMap.put(17, "Capture date"); + fullFieldNameMap.put(18, "Merchant type, or merchant category code"); + fullFieldNameMap.put(19, "Acquiring institution (country code)"); + fullFieldNameMap.put(20, "PAN extended (country code)"); + fullFieldNameMap.put(21, "Forwarding institution (country code)"); + fullFieldNameMap.put(22, "Point of service entry mode"); + fullFieldNameMap.put(23, "Application PAN sequence number"); + fullFieldNameMap.put(24, "Function code (ISO 8583:1993)"); + fullFieldNameMap.put(25, "Point of service condition code"); + fullFieldNameMap.put(26, "Point of service capture code"); + fullFieldNameMap.put(27, "Authorizing identification response length"); + fullFieldNameMap.put(28, "Amount, transaction fee"); + fullFieldNameMap.put(29, "Amount, settlement fee"); + fullFieldNameMap.put(30, "Amount, transaction processing fee"); + fullFieldNameMap.put(31, "Amount, settlement processing fee"); + fullFieldNameMap.put(32, "Acquiring institution identification code"); + fullFieldNameMap.put(33, "Forwarding institution identification code"); + fullFieldNameMap.put(34, "Primary account number, extended"); + fullFieldNameMap.put(35, "Track 2 data"); + fullFieldNameMap.put(36, "Track 3 data"); + fullFieldNameMap.put(37, "Retrieval reference number"); + fullFieldNameMap.put(38, "Authorization identification response"); + fullFieldNameMap.put(39, "Response code"); + fullFieldNameMap.put(40, "Service restriction code"); + fullFieldNameMap.put(41, "Card acceptor terminal identification"); + fullFieldNameMap.put(42, "Card acceptor identification code"); + fullFieldNameMap.put(43, "Card acceptor name/location"); + fullFieldNameMap.put(44, "Additional response data"); + fullFieldNameMap.put(45, "Track 1 data"); + fullFieldNameMap.put(46, "Additional data (ISO)"); + fullFieldNameMap.put(47, "Additional data (national)"); + fullFieldNameMap.put(48, "Additional data (private)"); + fullFieldNameMap.put(49, "Currency code, transaction"); + fullFieldNameMap.put(50, "Currency code, settlement"); + fullFieldNameMap.put(51, "Currency code, cardholder billing"); + fullFieldNameMap.put(52, "Personal identification number data"); + fullFieldNameMap.put(53, "Security related control information"); + fullFieldNameMap.put(54, "Additional amounts"); + fullFieldNameMap.put(55, "ICC data – EMV having multiple tags"); + fullFieldNameMap.put(56, "Reserved (ISO)"); + fullFieldNameMap.put(57, "Reserved (national)"); + fullFieldNameMap.put(58, "Reserved (national)"); + fullFieldNameMap.put(59, "Reserved (national)"); + fullFieldNameMap.put(60, "Reserved (national)"); + fullFieldNameMap.put(61, "Reserved (private)"); + fullFieldNameMap.put(62, "Reserved (private)"); + fullFieldNameMap.put(63, "Reserved (private)"); + fullFieldNameMap.put(64, "Message authentication code (MAC)"); + fullFieldNameMap.put(65, "Extended bitmap indicator"); + fullFieldNameMap.put(66, "Settlement code"); + fullFieldNameMap.put(67, "Extended payment code"); + fullFieldNameMap.put(68, "Receiving institution country code"); + fullFieldNameMap.put(69, "Settlement institution country code"); + fullFieldNameMap.put(70, "Network management information code"); + fullFieldNameMap.put(71, "Message number"); + fullFieldNameMap.put(72, "Last message's number"); + fullFieldNameMap.put(73, "Action date (YYMMDD)"); + fullFieldNameMap.put(74, "Number of credits"); + fullFieldNameMap.put(75, "Credits, reversal number"); + fullFieldNameMap.put(76, "Number of debits"); + fullFieldNameMap.put(77, "Debits, reversal number"); + fullFieldNameMap.put(78, "Transfer number"); + fullFieldNameMap.put(79, "Transfer, reversal number"); + fullFieldNameMap.put(80, "Number of inquiries"); + fullFieldNameMap.put(81, "Number of authorizations"); + fullFieldNameMap.put(82, "Credits, processing fee amount"); + fullFieldNameMap.put(83, "Credits, transaction fee amount"); + fullFieldNameMap.put(84, "Debits, processing fee amount"); + fullFieldNameMap.put(85, "Debits, transaction fee amount"); + fullFieldNameMap.put(86, "Total amount of credits"); + fullFieldNameMap.put(87, "Credits, reversal amount"); + fullFieldNameMap.put(88, "Total amount of debits"); + fullFieldNameMap.put(89, "Debits, reversal amount"); + fullFieldNameMap.put(90, "Original data elements"); + fullFieldNameMap.put(91, "File update code"); + fullFieldNameMap.put(92, "File security code"); + fullFieldNameMap.put(93, "Response indicator"); + fullFieldNameMap.put(94, "Service indicator"); + fullFieldNameMap.put(95, "Replacement amounts"); + fullFieldNameMap.put(96, "Message security code"); + fullFieldNameMap.put(97, "Net settlement amount"); + fullFieldNameMap.put(98, "Payee"); + fullFieldNameMap.put(99, "Settlement institution identification code"); + fullFieldNameMap.put(100, "Receiving institution identification code"); + fullFieldNameMap.put(101, "File name"); + fullFieldNameMap.put(102, "Account identification 1"); + fullFieldNameMap.put(103, "Account identification 2"); + fullFieldNameMap.put(104, "Transaction description"); + fullFieldNameMap.put(105, "Reserved for ISO use"); + fullFieldNameMap.put(106, "Reserved for ISO use"); + fullFieldNameMap.put(107, "Reserved for ISO use"); + fullFieldNameMap.put(108, "Reserved for ISO use"); + fullFieldNameMap.put(109, "Reserved for ISO use"); + fullFieldNameMap.put(110, "Reserved for ISO use"); + fullFieldNameMap.put(111, "Reserved for ISO use"); + fullFieldNameMap.put(112, "Reserved for national use"); + fullFieldNameMap.put(113, "Reserved for national use"); + fullFieldNameMap.put(114, "Reserved for national use"); + fullFieldNameMap.put(115, "Reserved for national use"); + fullFieldNameMap.put(116, "Reserved for national use"); + fullFieldNameMap.put(117, "Reserved for national use"); + fullFieldNameMap.put(118, "Reserved for national use"); + fullFieldNameMap.put(119, "Reserved for national use"); + fullFieldNameMap.put(120, "Reserved for private use"); + fullFieldNameMap.put(121, "Reserved for private use"); + fullFieldNameMap.put(122, "Reserved for private use"); + fullFieldNameMap.put(123, "Reserved for private use"); + fullFieldNameMap.put(124, "Reserved for private use"); + fullFieldNameMap.put(125, "Reserved for private use"); + fullFieldNameMap.put(126, "Reserved for private use"); + fullFieldNameMap.put(127, "Reserved for private use"); + fullFieldNameMap.put(128, "Message authentication code"); + } + + return fullFieldNameMap.get(new Integer(key)); + } + + public void assembleDataBytes() { + try { + IsoMessage m = assembleToIsoMessage(); + + if (logger.isDebugEnabled()) + logger.debug("Generated [" + getLayoutName() + "] ISO Message: \n" + + ISO8583DumpUtil.dumpIsoMessage(m, this)); + + data = m.writeData(); + } catch (Exception e) { + throw new MessageException(e.getMessage()); + } + } + + private IsoMessage assembleToIsoMessage() { + byte[] messageType = (byte[]) getChildByName(FIELD_NAME_MESSAGE_TYPE).getValue(); + if (messageType == null) { + messageType = (byte[]) getChildByName(FIELD_NAME_MESSAGE_TYPE).getDefaultValue(); + if (messageType == null) { + throw new MessageException( + String.format("[%s.%s] No have DefaultValue.", layout.getName(), FIELD_NAME_MESSAGE_TYPE)); + } + getChildByName(FIELD_NAME_MESSAGE_TYPE).setValue(messageType); + } + + MessageFactory mf = createMessageFactory(); + IsoMessage m = mf.newMessage(Integer.parseInt(new String(messageType), 16)); + for (int i = 2; i <= 128; i++) { + Item item = getChildByName(String.format("%03d", i)); + if (item == null) { + continue; + } + + IsoValue isoValue = getFieldFromLayout(item); + if (isoValue != null) { + m.putAt(i, isoValue); + } + } + return m; + } + + protected IsoValue getFieldFromLayout(Item item) { + if ("exclude".equals(item.getDataTypeRef())) { + return null; + } + + int length = item.getLength(); + IsoType isoType = IsoType.valueOf(item.getDataTypeRef()); + IsoValue isoValue = null; + if (item.getNodeTypeId() == NODE_GROUP) { + isoValue = getCompositeFieldFromLayout(item); + } else { + if (item.getValue() != null) { + String rtnValue = new String((byte[]) item.getValue()); + isoValue = isoType.needsLength() ? new IsoValue<>(isoType, rtnValue, length) + : new IsoValue<>(isoType, rtnValue); + } + } + + return isoValue; + } + + private IsoValue getCompositeFieldFromLayout(Item item) { + List list = item.getChildList(); + if (list == null || list.size() == 0) { + return null; + } + + IsoType isoType = IsoType.valueOf(item.getDataTypeRef()); + CompositeField cf = new CompositeField(); + for (Item subItem : list) { + if (subItem.getIndex() > -1) { + IsoValue isoValue = null; + if (subItem.getNodeTypeId() == NODE_FIELD) { + isoValue = getFieldFromLayout(subItem); + } else if (subItem.getNodeTypeId() == NODE_GROUP) { + isoValue = getCompositeFieldFromLayout(subItem); + } + + if (isoValue != null) { + cf.addValue(isoValue); + } + } + } + + if (cf.getValues() == null) { + return null; + } + + return isoType.needsLength() ? new IsoValue<>(isoType, cf, length, cf) : new IsoValue<>(isoType, cf, cf); + } + + protected void assignRepresentativeItemValue(byte[] data, IsoMessage m, int isoHeaderLength) { + Item messageTypeItem = getChildByName(FIELD_NAME_MESSAGE_TYPE); + if (messageTypeItem != null) { + // messageTypeItem.setValue(new String(Arrays.copyOfRange(data, 0, 4))); + messageTypeItem.setValue(String.format("%04x", m.getType())); + if (logger.isDebugEnabled()) { + logger.debug("messageType=" + String.format("%04x", m.getType())); + } + } + + Item primaryBitMapItem = getChildByName(FIELD_NAME_PRIMARY_BITMAP); + if (primaryBitMapItem != null) { + int startIdx = isoHeaderLength + 4; + if (m.isBinaryHeader()) { + startIdx = isoHeaderLength + 2; + } + + if (m.isBinaryBitmap()) { + byte[] primaryBitMapArr = Arrays.copyOfRange(data, startIdx, startIdx + 8); + primaryBitMapItem.setValue(primaryBitMapArr); + boolean hasSecondaryBitMap = false; + for (int i = 64; i < 129; i++) { + if (m.hasField(i)) { + hasSecondaryBitMap = true; + break; + } + } + if (hasSecondaryBitMap) { + Item secondaryBitMapItem = getChildByName("001"); + if (secondaryBitMapItem != null) { + secondaryBitMapItem.setValue(Arrays.copyOfRange(data, startIdx + 8, startIdx + 8 + 8)); + } + } + } else { + byte[] primaryBitMapArr = Arrays.copyOfRange(data, startIdx, startIdx + 16); + primaryBitMapItem.setValue(new String(primaryBitMapArr)); + boolean hasSecondaryBitMap = false; + for (int i = 64; i < 129; i++) { + if (m.hasField(i)) { + hasSecondaryBitMap = true; + break; + } + } + if (hasSecondaryBitMap) { + Item secondaryBitMapItem = getChildByName("001"); + if (secondaryBitMapItem != null) { + secondaryBitMapItem + .setValue(new String(Arrays.copyOfRange(data, startIdx + 16, startIdx + 16 + 16))); + } + } + } + } + } + + protected void assignItemValue(int num, IsoMessage m) { + String itemName = String.format("%03d", num); + Item item = getChildByName(itemName); + + if (item == null) + return; + + switch (item.getNodeTypeId()) { + case NODE_FIELD: + item.setValue(m.getField(num).toString()); + break; + case NODE_GROUP: + CompositeField cf = m.getObjectValue(num); + assignCompositeItemValue(item, cf, itemName); + break; + } + } + + private void assignCompositeItemValue(Item item, CompositeField cf, String itemName) { + if (cf == null || cf.getValues() == null) { + return; + } + + for (int i = 0; i < cf.getValues().size(); i++) { + String subItemName = String.format("%s:%d", itemName, i + 1); + Item subItem = item.getChildByName(subItemName + "[0]"); + if (subItem != null) { + if (subItem.getNodeTypeId() == NODE_FIELD) { + subItem.setValue(cf.getField(i).toString()); + } else if (subItem.getNodeTypeId() == NODE_GROUP) { + CompositeField f = cf.getObjectValue(i); + assignCompositeItemValue(subItem, f, subItemName); + } + } + } + } + + /** + * 레이아웃에 정의 된 SPEC을 기준으로 ParseMap을 만드는 메소드
+ * 데이터 byte[]에서 MessageType을 추출하여 해당 Map을 셋팅한다 + * + * @param buf 데이터 + * @param mf j8583 Message Factory + * @param layout 레이아웃 객체 + * @param itemsMap message 객체 필드 정보 Item 맵 + * @throws NumberFormatException + * @throws UnsupportedEncodingException + */ + @SuppressWarnings("unchecked") + public void setParseMapFromLayout(byte[] buf, MessageFactory mf, Layout layout, + Map itemsMap, int isoHeaderLength) throws Exception { + HashMap parseMap = new HashMap<>(); + int type = getIsoMessageType((MessageFactory) mf, buf, isoHeaderLength); + + for (int i = 2; i <= 128; i++) { + Item item = itemsMap.get(String.format("%03d", i)); + if (item != null) { + parseMap.put(i, getParserFromLayout(item, mf)); + } + } + mf.setParseMap(type, parseMap); + } + + protected FieldParseInfo getParserFromLayout(Item item, MessageFactory mfact) { + IsoType itype = IsoType.valueOf(item.getDataTypeRef()); + FieldParseInfo fpi = FieldParseInfo.getInstance(itype, item.getLength(), mfact.getCharacterEncoding()); + + if (item.getNodeTypeId() == NODE_GROUP) { + List list = item.getChildList(); + if (list != null && list.size() > 0) { + CompositeField cf = new CompositeField(); + for (Item subItem : list) { + if (subItem.getIndex() > -1) { + cf.addParser(getParserFromLayout(subItem, mfact)); + } + } + + if (cf.getParsers() != null) { + fpi.setDecoder(cf); + } + } + } + + return fpi; + } + + public IsoMessage parseIsoMessage(byte[] message, int isoHeaderLength) throws Exception { + MessageFactory mf = createMessageFactory(); + int messageType = getIsoMessageType(mf, message, isoHeaderLength); + mf.setParseMap(messageType, getFullSpecMap(mf.getCharacterEncoding())); + return mf.parseMessage(message, isoHeaderLength, mf.isBinaryHeader()); + } + + protected int getIsoMessageType(MessageFactory mf, byte[] buf, int isoHeaderLength) throws Exception { + int messageType; + + if (mf.isBinaryHeader()) { + messageType = ((buf[isoHeaderLength] & 0xff) << 8) | (buf[isoHeaderLength + 1] & 0xff); + } else if (mf.isForceStringEncoding()) { + messageType = Integer.parseInt(new String(buf, isoHeaderLength, 4, mf.getCharacterEncoding()), 16); + } else { + messageType = ((buf[isoHeaderLength] - 48) << 12) | ((buf[isoHeaderLength + 1] - 48) << 8) + | ((buf[isoHeaderLength + 2] - 48) << 4) | (buf[isoHeaderLength + 3] - 48); + } + + return messageType; + } + + protected int getIsoHeaderLength() { + return this.isoHeaderLength; + } + + protected void setIsoHeaderLength(int isoHeaderLength) { + this.isoHeaderLength = isoHeaderLength; + } + + public String toString() { + StringBuffer sb = new StringBuffer(); + sb.append( + "[ISO8583 message]"); + sb.append("\n" + super.toString()); + sb.append( + "\n"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/eactive/eai/transformer/message/ISO8583MessageFactory.java b/src/main/java/com/eactive/eai/transformer/message/ISO8583MessageFactory.java new file mode 100644 index 0000000..efd9d1f --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/ISO8583MessageFactory.java @@ -0,0 +1,69 @@ +package com.eactive.eai.transformer.message; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.lang3.StringUtils; + +import com.eactive.eai.common.EAITable; +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.layout.LayoutTypeKey; + +public class ISO8583MessageFactory { + static Logger logger = Logger.getLogger(Logger.LOGGER_DEFAULT); + + public static Map ISO8583_LAYOUT_TYPE_CLASS_MAP = new HashMap<>(); + public static Map ISO8583_MESSAGE_TYPE_CLASS_MAP = new HashMap<>(); + + /** + * @formatter:off + * Custom ISO8583 메시지 추가시 + * - ONLWeb: Custom Mesaage java 추가, 아래 맵에 추가(CustomizingAppInitializer.java에서 추가) + * - EMSWeb: Custom Mesaage java 추가, 아래 맵에 추가(로그조회시 parsing 위해) + * @formatter:on + */ + static { + ISO8583_MESSAGE_TYPE_CLASS_MAP.put(EAITable.ISO8583_TYPE, "com.eactive.eai.transformer.message.ISO8583Message"); + ISO8583_LAYOUT_TYPE_CLASS_MAP.put(LayoutTypeKey.ISO8583, "com.eactive.eai.transformer.message.ISO8583Message"); + logger.info("ISO8583MessageFactory registered - {}={}", EAITable.ISO8583_TYPE, + "com.eactive.eai.transformer.message.ISO8583Message"); + logger.info("ISO8583MessageFactory registered - {}={}", LayoutTypeKey.ISO8583, + "com.eactive.eai.transformer.message.ISO8583Message"); + } + + public static ISO8583Message create(String key) { + String className = ISO8583_MESSAGE_TYPE_CLASS_MAP.get(key); + + if (StringUtils.isBlank(className)) { + className = ISO8583_LAYOUT_TYPE_CLASS_MAP.get(key); + } + + if (StringUtils.isBlank(className)) { + logger.error("ISO8583_MESSAGE_TYPE_CLASS_MAP(ISO8583_LAYOUT_TYPE_CLASS_MAP) Not set. - {}", key); + return null; + } + + return ISO8583MessageFactory.createByClassName(className); + } + + @SuppressWarnings("rawtypes") + public static ISO8583Message createByClassName(String className) { + ISO8583Message message = null; + try { + Class cl = Class.forName(className); + message = (ISO8583Message) cl.newInstance(); + } catch (Exception e) { + logger.error("Cannot create a ISO8583Message. - {}", className); + } + + return message; + } + + public static boolean isISO8583Message(String messageType) { + return ISO8583_MESSAGE_TYPE_CLASS_MAP.containsKey(messageType); + } + + public static boolean isISO8583Layout(String layoutType) { + return ISO8583_LAYOUT_TYPE_CLASS_MAP.containsKey(layoutType); + } +} \ No newline at end of file diff --git a/src/main/java/com/eactive/eai/transformer/message/InvalidAccessException.java b/src/main/java/com/eactive/eai/transformer/message/InvalidAccessException.java new file mode 100644 index 0000000..167fef0 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/InvalidAccessException.java @@ -0,0 +1,35 @@ +package com.eactive.eai.transformer.message; + +public class InvalidAccessException extends MessageException { + private static final long serialVersionUID = -4083014709237636334L; + private final String itemPath; + private Message m; + + public InvalidAccessException(String message, String itemPath) { + this(message, itemPath, null, null); + } + + public InvalidAccessException(String itemPath, Throwable cause) { + super(cause.getMessage(), cause); + this.itemPath = itemPath; + } + + public InvalidAccessException(String message, String itemPath, Message m, Throwable cause) { + super(message, cause); + this.itemPath = itemPath; + this.m = m; + } + + @Override + public String getMessage() { + StringBuilder sb = new StringBuilder(); + sb.append(super.getMessage() + "\n"); + sb.append("전문레이아웃="); + sb.append(((itemPath == null) ? "null" : itemPath)+"\n"); + sb.append(super.getCause() + "\n"); + + sb.append(dumpMessage(m)); + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/InvalidDataTypeException.java b/src/main/java/com/eactive/eai/transformer/message/InvalidDataTypeException.java new file mode 100644 index 0000000..7648a7b --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/InvalidDataTypeException.java @@ -0,0 +1,19 @@ +package com.eactive.eai.transformer.message; + +public class InvalidDataTypeException extends MessageException { + private static final long serialVersionUID = -1323772822936302942L; + private final Object data; + + public InvalidDataTypeException(String message, Object data) { + this(message, data, null); + } + + public InvalidDataTypeException(String message, Object data, Throwable cause) { + super(message, cause); + this.data = data; + } + + public Object getData() { + return data; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/InvalidMessageException.java b/src/main/java/com/eactive/eai/transformer/message/InvalidMessageException.java new file mode 100644 index 0000000..0af5769 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/InvalidMessageException.java @@ -0,0 +1,26 @@ +package com.eactive.eai.transformer.message; + + +public class InvalidMessageException extends MessageException { + private static final long serialVersionUID = -4221799803325169007L; + private final Message messageData; + + public InvalidMessageException(String message, Message messageData) { + this(message, messageData, null); + } + + public InvalidMessageException(Throwable cause, Message messageData) { + super(cause.getMessage(), cause); + this.messageData = messageData; + } + + public InvalidMessageException(String message, Message messageData, + Throwable cause) { + super(message, cause); + this.messageData = messageData; + } + + public Message getMessageData() { + return messageData; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/JSONMessage.java b/src/main/java/com/eactive/eai/transformer/message/JSONMessage.java new file mode 100644 index 0000000..1559313 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/JSONMessage.java @@ -0,0 +1,829 @@ +package com.eactive.eai.transformer.message; + +import java.math.BigDecimal; +import java.text.DecimalFormat; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Stack; + +import org.apache.commons.lang3.StringUtils; + +import com.eactive.eai.transformer.SystemKeys; +import com.eactive.eai.transformer.layout.InvalidNodeException; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.Types; +import com.eactive.eai.transformer.util.Constants; +import com.eactive.eai.transformer.util.Logger; +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.JsonNodeFactory; +import com.fasterxml.jackson.databind.node.ObjectNode; + +public class JSONMessage extends Message { + private static final long serialVersionUID = -1436691531430920703L; + + protected static Logger logger = Logger.getLogger("transformer"); + + public static final String MESSAGE_NAME = "JSONMessage"; + public static final String NAME = "JSON"; +// public static String encode = "euc-kr"; + + protected JsonNode data; + protected ObjectMapper mapper = null; + protected JsonFactory factory = null; + protected boolean bStaled = false; + + public JSONMessage() { + super(); + mapper = new ObjectMapper(); + // if necessary, add proper options -> use system property config ? + mapper.enable(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN); + mapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS); + mapper.setNodeFactory(JsonNodeFactory.withExactBigDecimals(true)); + + factory = mapper.getFactory(); + } + + @Override + public void createObject() { + data = mapper.createObjectNode(); + } + + @Override + protected void composeData(Item item, Object value) { + if (item.getIndex() < 0) + return; + + if (!bStaled) { + bStaled = true; + } + } + + protected JsonNode getJSONObject() { + return data; + } + + @Override + protected void doSetData(Object data) { + doSetData(data, false); + } + + protected void doSetData(Object data, boolean refCountLimit) { + JsonParser parser = null; + String jsonString = null; + try { + if (data instanceof String) { + jsonString = (String) data; + parser = factory.createParser(jsonString); + this.data = mapper.readTree(parser); + } +// else if (data instanceof byte[]) { +// jsonString = new String((byte[]) data,encode); +// parser = factory.createParser(jsonString); +// this.data = mapper.readTree(parser); +// } + else if (data instanceof JsonNode) { + this.data = (JsonNode) data; + } else { + if (data == null) { + throw new InvalidDataTypeException("Not able to generate JSON messages with data. Input value is null.", data); + + } else { + throw new InvalidDataTypeException("Not able to generate JSON messages with data. data type = " + data.getClass().getName(), data); + } + } + + if (this.data == null) { + logger.error("Parsed data is null"); + return; + } + + //ObjectNode node = (ObjectNode) this.data.get(getName()); + /* + if(node == null) { + // if layoutname not appended + setValue(this.data, getName()); + } + else { + setValue(node, getName()); + } + */ + + ObjectNode node = null; + + // 변경된 부분: NullNode 검사 추가 + if (this.data.has(getName()) && !this.data.get(getName()).isNull()) { + JsonNode nameNode = this.data.get(getName()); + if (nameNode.isObject()) { + node = (ObjectNode) nameNode; + + // 배열 데이터 처리 개선 + processArrayNodes(this.data); + + // 값 설정 + setValue(node, getName()); + } else { + logger.warn("Node with name '" + getName() + "' is not an object, skipping setValue operation"); + } + } else { + // layoutname이 추가되지 않은 경우 + setValue(this.data, getName()); + } + + } catch (Exception e) { + throw new MessageSetDataException(e.getMessage(), this, data, e); + } + } + + public void setValue(JsonNode node, String itempPath) throws InvalidAccessException { + + try { +// this.value = Converter.convert(value, getDataTypeId()); + /** + * occRef 설정을 위해 + */ + + HashMap validationTargets = new HashMap(); + + doSetValue(node, validationTargets, itempPath); + + // validation + if(SystemKeys.isValidationEnabled()) { + Iterator iter = validationTargets.keySet().iterator(); + while(iter.hasNext()) { + String itemPath = (String) iter.next(); + Item item = (Item) validationTargets.get(itemPath); + int occCount = getInt(itemPath); + if (occCount < item.getOccMin() || + (!"*".equals(item.getOccType()) && !"+".equals(item.getOccType()) && occCount > item.getOccMax())) + throw new InvalidAccessException("Number of iterations out of [OccMin ~ OccMax] , " + item.getName(), item.getItemPath()); + if (occCount != item.arraySize()) + throw new InvalidAccessException("The number of repetitions is different from the number of repetitions of the actual data. , " + item.getName(), item.getItemPath()); + } + } // validation + } catch(Exception e) { + throw new InvalidAccessException("setValue error", getItemPath(), null, e); + } + } + + protected void doSetValue(JsonNode node, HashMap validationTargets, String parentPath) { + Item item = null; + + if( node.isObject()) { + Iterator fieldNames = node.fieldNames(); + if(StringUtils.isNotEmpty(parentPath)) { + item = getOrCreateItem(denomalizeXPath(parentPath)); + if(SystemKeys.isValidationEnabled() && StringUtils.isNotEmpty(item.getOccRef())) { + validationTargets.put(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef(), item); + } + } + while(fieldNames.hasNext()) { + String fieldName = fieldNames.next(); + + JsonNode fieldValue = node.get(fieldName); + try { + String path = null; + if(StringUtils.isEmpty(parentPath)) { + path = fieldName; + } + else { + path = parentPath + Types.FIELD_SEPARATOR + fieldName; + } + doSetValue(fieldValue, validationTargets, path); + } catch(InvalidNodeException e) { +// throw new InvalidAccessException(e.getMessage(), itemPath, this,e); + continue; + } + } + } + else if( node.isArray() ) { + ArrayNode arrayNode = (ArrayNode) node; + + // 배열이 문자열 값만 포함하는지 확인 + boolean isSimpleArray = true; + for (int i = 0; i < arrayNode.size(); i++) { + if (!arrayNode.get(i).isValueNode()) { + isSimpleArray = false; + break; + } + } + + if (isSimpleArray) { + // 문자열 배열은 직접 값 설정 + try { + setString(parentPath, arrayNode.toString()); + } catch (Exception e) { + logger.error("Error setting simple array: " + parentPath, e); + // 개별 요소 설정 + for (int i = 0; i < arrayNode.size(); i++) { + try { + String itemPath = parentPath + "[" + i + "]"; + setString(itemPath, arrayNode.get(i).asText()); + } catch (Exception ex) { + logger.error("Error setting array item: " + parentPath + "[" + i + "]", ex); + } + } + } + } else { + // 복잡한 배열 구조 처리 + for (int i = 0; i < arrayNode.size(); i++) { + JsonNode arrayItem = arrayNode.get(i); + + if (StringUtils.isNotEmpty(parentPath)) { + try { + item = getOrCreateItem(denomalizeXPath(parentPath + "[" + i + "]")); + } catch (InvalidNodeException ie) { + continue; + } + } + doSetValue(arrayItem, validationTargets, parentPath + "[" + i + "]"); + } + } + } + else { + String itemPath = parentPath; + item = getOrCreateItem(denomalizeXPath(itemPath)); + String value = node.asText(); + + if(node == null || node.isNull()) { + setObject(itemPath, null); // 실제 null 값 설정 + } else if(value == null || value.length() == 0) { + setObject( itemPath, value ); + } else { + int itemType = item.getDataTypeId(); + switch(itemType) { + case Types.TYPE_INT : + case Types.TYPE_SHORT : + setInt( itemPath, new Integer(value) ); + break; + case Types.TYPE_LONG : + setLong( itemPath, new Long(value) ); + break; + case Types.TYPE_BIGDECIMAL : + setBigDecimal( itemPath, new BigDecimal(value) ); + break; + case Types.TYPE_DOUBLE : + setDouble( itemPath, new Double(value) ); + break; + case Types.TYPE_FLOAT : + setFloat( itemPath, new Float(value) ); + break; + case Types.TYPE_BOOLEAN : + setObject( itemPath, new Boolean(value) ); + break; + case Types.TYPE_STRING : + setString(itemPath, value); + break; + default : + setString(itemPath, value); + break; + } + } + } + } + + protected ObjectNode getJSONData() throws Exception { + return getJSONData(false); + } + + protected ObjectNode getJSONData(boolean isMask) throws Exception { + + boolean withLayoutName = false; + + ObjectNode root = mapper.createObjectNode(); + + ObjectNode messageName = mapper.createObjectNode(); + root.set(getName(), messageName); + + Stack stack = new Stack(); + ObjectNode parent = messageName; + ObjectNode current = null; + + ObjectNode obj = null; + ArrayNode arr = null; + + stack.push(messageName); + int prevDepth = 1; + + try { + for (Iterator iter = iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + /** + * index == -1 인 경우는 무시한다 + */ + if (item == null || item.getIndex() == -1) { + continue; + } + + /** + * depth 가 낮아질 때(tree를 빠져 나올 때), parent를 재설정한다. + */ + if (item.getDepth() < prevDepth) { + for(int j=0; j<(prevDepth - item.getDepth()); j++) stack.pop(); + } + + /** + * 이전 depth를 저장해 둔다. + */ + prevDepth = item.getDepth(); + + parent = (ObjectNode)stack.peek(); + + /** + * "?" 속성인 경우 값이 스페이스로 채워져 있을 때 변경 + * Number Type 속성의 값이 0 인 경우 Empty 처리 ( 2013.08.02 ) + */ +// if( item.getOccMin() == 0 && item.getOccMax() == 1 ) { +// if( item.getValue() == null ) continue; +// if( item.getValue() instanceof String && "".equals(((String)item.getValue()).trim()) ) continue; +// if( item.getValue() instanceof byte[] && "".equals(new String((byte[])item.getValue()).trim()) ) continue; +// if( item.getValue() instanceof Number && ((Number)item.getValue()).floatValue() == 0.0f ) continue; +// } + + switch (item.getNodeTypeId()) { + case NODE_ATTR: + case NODE_FIELD: + String prefix = item.getNodeTypeId() == NODE_ATTR ? "-":""; //무엇에 쓰이는 물건인고. + if( parent instanceof ObjectNode ) { + obj = (ObjectNode)parent; + + String val = getStringValue(item.getValue(),item); + int itemType = item.getDataTypeId(); + + if (isMask && "Y".equals(item.getMask()) && (Types.TYPE_STRING == itemType )){ + val = maskString2(val, item.getMaskLength(), item.getMaskOffset()); + item.setValue(val); + } +// Object value = toJsonObjectType(item.getDataTypeId(), val); + String value = val; + if( item.getOccMax() > 1 || item.getOccMax() == -1 ) { // FIELD ARRAY FORMAT "name":["value1", "value2"] + arr = (ArrayNode)obj.get(item.getName()); + if (arr == null){ + arr = mapper.createArrayNode(); + setJsonArrayValue(arr, item); + obj.set(prefix+item.getName(), arr); + }else{ + arr.add(value); + } + + } else { //FIELD + obj = (ObjectNode)parent; + setJsonNodeValue(obj, prefix+item.getName(), item); + } + } else { + logger.error("not support parent type JSONArray"); + throw new Exception("not support parent type JSONArray"); + } + break; + case NODE_GROUP: + if( parent instanceof ObjectNode ) { + obj = (ObjectNode)parent; + if( item.getOccMax() > 1 || item.getOccMax() == -1 ) { // GRID + arr = (ArrayNode)obj.get(item.getName()); + if (arr == null){ + arr = mapper.createArrayNode(); + } + current = mapper.createObjectNode(); + arr.add(current); + obj.set(item.getName(), arr); + }else{ //GROUP + current = mapper.createObjectNode(); + obj.set(item.getName(), current); + } + + } else { + logger.error("not support parent type JSONArray"); + throw new Exception("not support parent type JSONArray"); + } + if (item.getChildCount() > 0){ + stack.push(current); + } + break; + } // end switch + } // end for + }catch(Exception e) { + logger.error(e.getMessage(),e); + throw new Exception(e); + } + + if(withLayoutName) { + return root; + } + else { + JsonNode node = root.get(this.layoutName); + if(node == null) return root; + else return (ObjectNode)node; + } + + } + + private void setJsonNodeValue(ObjectNode node, String fieldName, Item item) { + int itemType = item.getDataTypeId(); + Object value = item.getValue(); + + if(value == null) { + node.putNull(fieldName); + return; + } + + if(value instanceof JsonNode) { + node.set(fieldName, (JsonNode) value); + return; + } + + // New code to check if string is JSON array + if (itemType == Types.TYPE_STRING && value instanceof String) { + String strValue = (String) value; + if ((strValue.startsWith("[") && strValue.endsWith("]")) || + (strValue.startsWith("{") && strValue.endsWith("}"))) { + try { + // Try to parse as JSON + JsonNode jsonNode = mapper.readTree(strValue); + node.set(fieldName, jsonNode); + return; + } catch (Exception e) { + // Not valid JSON, continue with normal processing + logger.debug("Failed to parse as JSON, using as string: " + e.getMessage()); + } + } + } + + if (!(value instanceof byte[])) { + logger.info("value : " + value.toString()); + } + + switch(itemType) { + case Types.TYPE_INT : + case Types.TYPE_SHORT : + node.put(fieldName, (int) value); + break; + case Types.TYPE_LONG : + node.put(fieldName, (long) value); + break; + case Types.TYPE_BIGDECIMAL : + BigDecimal bd = (BigDecimal)value; + node.put(fieldName, bd); + break; + case Types.TYPE_DOUBLE : + node.put(fieldName, (double) value); + break; + case Types.TYPE_FLOAT : + node.put(fieldName, (float) value); + break; + case Types.TYPE_BOOLEAN : + node.put(fieldName, (boolean) value); + break; + case Types.TYPE_STRING : + + node.put(fieldName, (String) value); + if (value instanceof JsonNode) { + logger.info("value : " + (String) value ); + } + + break; + default : + node.put(fieldName, (String) value); + } + } + + private void setJsonArrayValue(ArrayNode arrayNode, Item item) { + int itemType = item.getDataTypeId(); + Object value = item.getValue(); + if(value == null) { + return; + } + switch(itemType) { + case Types.TYPE_INT : + case Types.TYPE_SHORT : + arrayNode.add( (int) value); + break; + case Types.TYPE_LONG : + arrayNode.add( (long) value); + break; + case Types.TYPE_BIGDECIMAL : + arrayNode.add( (float) value); + break; + case Types.TYPE_DOUBLE : + arrayNode.add( (double) value); + break; + case Types.TYPE_FLOAT : + arrayNode.add( (float) value); + break; + case Types.TYPE_BOOLEAN : + arrayNode.add( (boolean) value); + break; + case Types.TYPE_STRING : + arrayNode.add( (String) value); + break; + default : + arrayNode.add( (String) value); + } + } + + protected String getStringValue(Object value, Item item) throws Exception{ + if (value == null) return null; + String val=""; + if (value instanceof String){ + String data = (String)value; + + if (item.getDataTypeId() == Types.TYPE_BIGDECIMAL){ + val = getFormat(data,item.getLength(),item.getDecimalPointLength()); + }else{ + val = data; + } + } else if (value instanceof byte[]){ + String data = new String((byte[])value); + if (item.getDataTypeId() == Types.TYPE_BIGDECIMAL){ + val = getFormat(data,item.getLength(),item.getDecimalPointLength()); + }else{ + val = data; + } + } else if ( value instanceof BigDecimal) { + String data = ((BigDecimal) value).toPlainString(); + if (item.getDataTypeId() == Types.TYPE_BIGDECIMAL){ + val = getFormat(data,item.getLength(),item.getDecimalPointLength()); + }else{ + val = data; + } + } else if ( value instanceof Integer) { + String data = String.valueOf(value); + if (item.getDataTypeId() == Types.TYPE_BIGDECIMAL){ + val = getFormat(data,item.getLength(),item.getDecimalPointLength()); + }else{ + val = data; + } + } else if ( value instanceof Boolean) { + String data = String.valueOf(value); + val = data; + } + return val; + } + @Override + public Object getData() { + + if (bStaled) { + try { + this.data = getJSONData(); + } catch(Exception e) { + throw new InvalidDataTypeException(e.getMessage(),"JSONMessage.getData() method", e); + } + bStaled = false; + } + return toJsonString(); + } + + public String toJsonString() { + return toJsonString(false); + } + + public String toJsonString(boolean isPretty) { + if(this.data == null) { + return null; + } + if(this.data == null) return null; + + if(isPretty) return data.toPrettyString(); + else return data.toString(); + } + +// protected String denomalizeXPath(String xpath) { +// String itemPath = xpath; //xpath.substring(1).replaceAll("/", "\\."); +// //String itemPath = xpath.substring(1).replaceAll("/", "\\"+Types.FIELD_SEPARATOR); +// if (!itemPath.endsWith("]")) { +// itemPath = itemPath + "[0]"; +// } +// itemPath = itemPath.replaceAll("([ㄱ-ㅎ가-힣a-zA-Z0-9_]+)(\\"+Types.FIELD_SEPARATOR+")", "$1[0]$2"); +// itemPath = itemPath.replaceFirst("\\[[0-9]+\\]", ""); +// +// System.out.println(String.format("%s : %s", xpath, itemPath)); +// return itemPath; +// } + + protected String denomalizeXPath(String xpath) { + StringBuffer sb = new StringBuffer(); + String[] parts = xpath.split("\\"+ Types.FIELD_SEPARATOR); + for(int i=0; i=0){ + isMinus = true; + } + String data = value.replaceAll(" ", "").replaceAll("-", ""); + if (pointLength> 0 ){//소수부가 있을 경우 + for(int i=isMinus?1:0;i 0 ){ + if (data.length ==1){ + if (data[0].length() > length - pointLength - 1 ){ //정수부 오류 + return false; + } + }else if (data.length ==2){ + if (data[0].length() > length - pointLength - 1 ){ //정수부 오류 + return false; + } + if (data[1].length() > pointLength ){ //실수부 오류 + return false; + } + }else{ + //오류 + return false; + } + + }else{ + if (data.length != 1){ //소수점이 들어와서 오류 + return false; + } + if (data[0].length() > length){ //정수부 오류 + return false; + } + } + return true; + } + +// private Object toJsonObjectType(int itemType, String value) { +// Object jsonValueObject = null; +// +// if(value == null ) { +// return null; +// } +// +// switch(itemType) { +// case Types.TYPE_INT : +// case Types.TYPE_LONG : +// case Types.TYPE_SHORT : +// jsonValueObject = new Integer(value); +// break; +// case Types.TYPE_DOUBLE : +// case Types.TYPE_FLOAT : +// jsonValueObject = new Float(value); +// break; +// case Types.TYPE_BOOLEAN : +// jsonValueObject = new Boolean(value); +// break; +// case Types.TYPE_STRING : +// jsonValueObject = value; +// break; +// default : +// jsonValueObject = value; +// } +// return jsonValueObject; +// } + + private String getHeader() { + return getName() + " (" + MESSAGE_NAME + ")"; + } + + // 배열 처리 메소드 + private void processArrayNodes(JsonNode rootNode) { + Iterator fieldNames = rootNode.fieldNames(); + while (fieldNames.hasNext()) { + String fieldName = fieldNames.next(); + JsonNode node = rootNode.get(fieldName); + + // data_part와 같은 객체 노드 처리 + if (node.isObject()) { + processArrayNodes(node); + } + // 배열 노드 처리 + else if (node.isArray()) { + ArrayNode arrayNode = (ArrayNode) node; + + // 배열 노드 처리 + if (arrayNode.size() > 0) { + // 배열 데이터 설정 + try { + + if(this.data instanceof ObjectNode) { + ObjectNode objNode = (ObjectNode) this.data; + objNode.set(fieldName, arrayNode); + } else if (rootNode instanceof ObjectNode) { + ((ObjectNode) rootNode).set(fieldName, arrayNode); + } + + for(int i=0; i < arrayNode.size(); i++) { + JsonNode itemNode = arrayNode.get(i); + + String itemPath = fieldName + "[" + i + "]"; + + if(itemNode.isObject()) { + processArrayNodes(itemNode); + } + } + + } catch (Exception e) { + logger.error("Error setting array data for field: " + fieldName, e); + // 배열 요소를 개별적으로 처리 + for (int i = 0; i < arrayNode.size(); i++) { + try { + String itemPath = fieldName + "[" + i + "]"; + JsonNode itemNode = arrayNode.get(i); + if (itemNode.isTextual()) { + setString(itemPath, itemNode.asText()); + } else { + setString(itemPath, itemNode.toString()); + } + } catch (Exception ex) { + logger.error("Error setting array item [" + i + "] for field: " + fieldName, ex); + } + } + } + } + } + } + } + + public String toString(){ + // if staled -> reorganize data + String jsonString = null; + try { + jsonString = (String)getData(); + } catch (Exception e) { + logger.error("[JSONMessage] " + e.getMessage(), e); + } + + StringBuffer sb = new StringBuffer(); + sb.append(getHeader()); + sb.append(super.toString()); + //sb.append("\n" + Constants.TAB + " +--------------------------------------------------------------------------------------------------+"); + if (this.data != null) { + sb.append("\n" + Constants.TAB + " | data = \n" + jsonString + ""); + } + sb.append("\n" + Constants.TAB + " +--------------------------------------------------------------------------------------------------+"); + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/Message.java b/src/main/java/com/eactive/eai/transformer/message/Message.java new file mode 100644 index 0000000..d81816a --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/Message.java @@ -0,0 +1,546 @@ +package com.eactive.eai.transformer.message; + +import java.math.BigDecimal; +import java.util.Iterator; +import java.util.List; +import java.util.Stack; + +import com.eactive.eai.transformer.layout.Composite; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.ItemFullIterator; +import com.eactive.eai.transformer.layout.ItemIterator; +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.layout.Types; +import com.eactive.eai.transformer.util.ByteUtil; +import com.eactive.eai.transformer.util.Constants; +import com.eactive.eai.transformer.util.Logger; + +/** + * 메시지 추상화 클래스 + */ +abstract public class Message extends Composite { + + private static final long serialVersionUID = 1L; + protected static Logger logger = Logger.getLogger("transformer"); + protected Layout layout; + + protected Message() { + super(); + setNodeTypeId(Item.NODE_MESSAGE); + } + + public String getType() { + return getLayout().getLayoutType().getName(); + } + + // [DEPENDENCY] Types + public int getInt(String itemPath) { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + Object value = item.getValue(); + + if (value == null) { + return 0; + } else if (value instanceof Number) { + return ((Number) value).intValue(); + } else if (value instanceof String) { + return Integer.parseInt((String) value); + } else if (value instanceof byte[]) { + return Integer.parseInt(new String((byte[]) value).trim()); + } else { + throw new InvalidAccessException("레이아웃항목의 값이 숫자가 아님", itemPath); + } + } + + public long getLong(String itemPath) { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + Object value = item.getValue(); + + if (value == null) { + return 0L; + } else if (value instanceof Number) { + return ((Number) value).longValue(); + } else if (value instanceof String) { + return Long.parseLong((String) value); + } else if (value instanceof byte[]) { + return Long.parseLong(new String((byte[]) value).trim()); + } else { + throw new InvalidAccessException("레이아웃항목의 값이 숫자가 아님", itemPath); + } + } + + public short getShort(String itemPath) { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + Object value = item.getValue(); + + if (value == null) { + return 0; + } else if (value instanceof Number) { + return ((Number) value).shortValue(); + } else if (value instanceof String) { + return Short.parseShort((String) value); + } else if (value instanceof byte[]) { + return Short.parseShort(new String((byte[]) value).trim()); + } else { + throw new InvalidAccessException("레이아웃항목의 값이 숫자가 아님", itemPath); + } + } + + public double getDouble(String itemPath) { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + Object value = item.getValue(); + + if (value == null) { + return 0.0; + } else if (value instanceof Number) { + return ((Number) value).doubleValue(); + } else if (value instanceof String) { + return Double.parseDouble((String) value); + } else if (value instanceof byte[]) { + return Double.parseDouble(new String((byte[]) value).trim()); + } else { + throw new InvalidAccessException("레이아웃항목의 값이 숫자가 아님", itemPath); + } + } + + public float getFloat(String itemPath) { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + Object value = item.getValue(); + + if (value == null) { + return 0.0f; + } else if (value instanceof Number) { + return ((Number) value).floatValue(); + } else if (value instanceof String) { + return Float.parseFloat((String) value); + } else if (value instanceof byte[]) { + return Float.parseFloat(new String((byte[]) value).trim()); + } else { + throw new InvalidAccessException("레이아웃항목의 값이 숫자가 아님", itemPath); + } + } + + public byte[] getByteArray(String itemPath) { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + Object value = item.getValue(); + + if (value == null) { + return ByteUtil.padding(new byte[0], item.getLength()); + } else if (value instanceof Number) { + return (((Number) value).toString()).getBytes(); + } else if (value instanceof String) { + return ((String) value).getBytes(); + } else if (value instanceof byte[]) { + return (byte[]) value; + } else { + return (byte[]) value; + } + } + + public String getString(String itemPath) { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + Object value = item.getValue(); + + if (value == null) { + return null; + } else if (value instanceof Number) { + return ((Number) value).toString(); + } else if (value instanceof byte[]) { + return new String((byte[]) value); + } else if (value instanceof String) { + return (String) value; + } else { + throw new InvalidAccessException("레이아웃항목의 값이 문자가 아님", itemPath); + } + } + + public Object getObject(String itemPath) { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + Object value = item.getValue(); + + return value; + } + + public void setInt(String itemPath, int value) { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + try { + Item item = getOrCreateItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + item.setValue(new Integer(value)); + + composeData(item, new Integer(value)); + } catch (Exception e) { + throw new MessageSetDataException("Cannot setInt '" + value + "' to '" + itemPath + "'", this, new Integer(value), e); + } + } + + public void setLong(String itemPath, long value) { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getOrCreateItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + item.setValue(new Long(value)); + + composeData(item, new Long(value)); + } + + public void setShort(String itemPath, short value) { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getOrCreateItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + item.setValue(new Short(value)); + + composeData(item, new Short(value)); + } + + public void setDouble(String itemPath, double value) { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getOrCreateItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + item.setValue(new Double(value)); + + composeData(item, new Double(value)); + } + + public void setFloat(String itemPath, float value) { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getOrCreateItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + item.setValue(new Float(value)); + + composeData(item, new Float(value)); + } + + public void setBigDecimal(String itemPath, BigDecimal value) { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getOrCreateItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + item.setValue(value); + + composeData(item, value); + } + + public void setString(String itemPath, String value) throws InvalidAccessException { + setString(itemPath, value, false); + } + public void setString(String itemPath, String value,boolean isConvertPass) throws InvalidAccessException { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getOrCreateItem(itemPath, true); + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + item.setValue(value,isConvertPass); + + composeData(item, value); + } + + public void setBytes(String itemPath, byte[] value) { + setByteArray(itemPath, value); + } + + public void setByteArray(String itemPath, byte[] value) { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getOrCreateItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + item.setValue(value); + + composeData(item, value); + } + + public void setDefaultByteArray(String itemPath, byte[] value) { + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getOrCreateItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + item.setValue(value); + + composeData(item, value); + } + + public void setObject(String itemPath, Object value) { + if (itemPath == null) { + throw new InvalidAccessException("cannot set object - itemPath is null - message : " + getName(), itemPath); + } + + if (itemPath != null && !itemPath.startsWith(getName())) { + itemPath = getName() + Types.FIELD_SEPARATOR + itemPath; + } + + Item item = getOrCreateItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + item.setValue(value); + + composeData(item, value); + } + + public void setData(Object data) throws MessageSetDataException { + try { + doSetData(data); + } catch(Exception e) { + MessageSetDataException ex = new MessageSetDataException("메시지 데이터 설정 중 오류 "+e.getMessage(), this, data, e); + throw ex; + } + } + + abstract public void createObject(); + + abstract protected void composeData(Item item, Object value); + + abstract protected void doSetData(Object data); + + abstract public Object getData(); + + abstract public String toLogString(); + + //abstract public String toLogString(boolean ebcdic); + + public Layout getLayout() { + return layout; + } + + public void setLayout(Layout layout) { + this.layout = layout; + } + + /** + * iterator + */ + @Override + public Iterator iterator() { + if (isTop()) { + return new ItemIterator(childList.iterator()); + } else { + return childList.iterator(); + } + } + + public Iterator fullIterator() { + if (isTop()) { + return new ItemFullIterator(childList.iterator()); + } else { + return childList.iterator(); + } + } + /** + * 2Depth 위에 있는 참조를 찾기 위해 추가 + * 2020-04-02 + * @param item + * @return + */ + public String getOccRefItem(Item item) { + String itemPath =item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef(); + if (itemPath != null && !"".equals(itemPath)){ + return itemPath; + } +// String itemPath = ""; +// Item occRefItem = null; +// Item tempItem = null; +// tempItem = item.getParent(); +// do{ +// itemPath = tempItem.getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef() + "[0]"; +// occRefItem = item.getTop().getItem(itemPath); +// if (occRefItem != null){ +// return occRefItem.getItemPath(); +// } +// +// if (item.getTop() == tempItem){ +// break; +// } +// tempItem = tempItem.getParent(); +// }while(true); +// +// tempItem = item.getParent(); +// do{ +// itemPath = tempItem.getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef() + "[-1]"; +// occRefItem = item.getTop().getItem(itemPath); +// if (occRefItem != null) +// return occRefItem.getItemPath(); +// +// if (getTop() == tempItem){ +// break; +// } +// tempItem = tempItem.getParent(); +// }while(true); + + return itemPath; + } + + public String toString() { + StringBuffer sb = new StringBuffer(); + + sb.append("\n" + Constants.TAB + " +--------------------------------------------------------------------------------------------------+"); + if (layout != null) { + sb.append(layout.toString(Constants.TAB)); + } + sb.append("\n" + Constants.TAB + " +--------------------------------------------------------------------------------------------------+"); + sb.append("\n" + Constants.TAB + " | " + super.toString()); + + return sb.toString(); + } + + public String toXMLString() { + StringBuffer sb = new StringBuffer(); + + sb.append(""); +// if (layout != null) { +// sb.append(layout.toXMLString(Constants.TAB)); +// } + + sb.append("\n" + Constants.TAB + " " + super.toXMLString()); + +// sb.append("\n" + Constants.TAB + "
"); + + return sb.toString(); + } + + public void addItemToStack(Stack itemStack, List itemList) { + if(itemList == null || itemList.size() < 1) return; + for(int p=itemList.size()-1; p>=0; p--) { + itemStack.push( (Item)itemList.get(p) ); + } + } + + /** + * 그룹 변환에서 사용되는 API. + * FIXME : 아래의 3 함수는 사용하는 부분이 없으므로 제거. + */ +// abstract public MessageData getMessageData(String itemPath) throws Exception; +// +// abstract public void setMessageData(String itemPath, MessageData messageData); +// +// abstract public void copy(Message message) throws Exception; + //-------------------------------------------------------------------------- +} diff --git a/src/main/java/com/eactive/eai/transformer/message/MessageException.java b/src/main/java/com/eactive/eai/transformer/message/MessageException.java new file mode 100644 index 0000000..9258d15 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/MessageException.java @@ -0,0 +1,28 @@ +package com.eactive.eai.transformer.message; + +import com.eactive.eai.transformer.TransformerException; +import com.eactive.eai.transformer.layout.InvalidNodeException; + +public class MessageException extends TransformerException { + public MessageException(String msg) { + super(msg); + } + + public MessageException(Throwable cause) { + super(cause); + } + + public MessageException(String msg, Throwable cause) { + super(msg, cause); + } + + protected String dumpMessage(Message m) { + if (m != null + && !(getCause() instanceof MessageSetDataException) + && !(getCause() instanceof InvalidAccessException) + && !(getCause() instanceof InvalidNodeException)) { + return "\n" + m.toString(); + } + return ""; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/MessageFactory.java b/src/main/java/com/eactive/eai/transformer/message/MessageFactory.java new file mode 100644 index 0000000..ad3cb7a --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/MessageFactory.java @@ -0,0 +1,283 @@ +package com.eactive.eai.transformer.message; + +import com.eactive.eai.transformer.SystemKeys; +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.layout.LayoutManager; +import com.eactive.eai.transformer.layout.LayoutNotFoundException; +import com.eactive.eai.transformer.util.Logger; + +import net.sf.ehcache.Cache; +import net.sf.ehcache.CacheManager; + +public class MessageFactory { + private static Logger logger = Logger.getLogger("transformer"); + + static Cache cache = null; + static Cache cachePermenent = null; + + private int cacheSize = 0; + private int cacheIdle = 0; + private int permCacheSize = 0; + private boolean cacheOnStartup = false; + + public void initCache() { + try { + cacheSize = Integer.parseInt(System.getProperty(SystemKeys.TRANSFROMER_LAYOUT_CACHE_SIZE, SystemKeys.LAYOUT_CACHE_SIZE_DEFAULT)); + cacheIdle = Integer.parseInt(System.getProperty(SystemKeys.TRANSFROMER_LAYOUT_CACHE_IDLE_SEC, SystemKeys.LAYOUT_CACHE_IDLE_DEFAULT)); + permCacheSize = Integer.parseInt(System.getProperty(SystemKeys.TRANSFROMER_LAYOUT_PERMCACHE_SIZE, SystemKeys.LAYOUT_PERMCACHE_SIZE_DEFAULT)); + + cacheOnStartup = SystemKeys.isLayoutCacheOnStartup(); + + int layoutSize = LayoutManager.getManager().getLayouts().size(); + if(cacheOnStartup) { + cacheSize = layoutSize + 100; + logger.warn("MessageFactory layoutSize -> cacheSize : "+ layoutSize); + } + CacheManager manager = CacheManager.create(); + logger.warn(">> MessageFactory initCache"); + logger.warn(String.format("%s = %s", SystemKeys.TRANSFROMER_LAYOUT_CACHE_SIZE, cacheSize)); + logger.warn(String.format("%s = %s", SystemKeys.TRANSFROMER_LAYOUT_CACHE_IDLE_SEC, cacheIdle)); + logger.warn(String.format("%s = %s", SystemKeys.TRANSFROMER_LAYOUT_PERMCACHE_SIZE, permCacheSize)); + + cache = new Cache("layout", cacheSize, false, false, 0, cacheIdle); + cachePermenent = new Cache("permanentlayout", permCacheSize, false, false, 0, 0); + manager.addCache(cache); + manager.addCache(cachePermenent); + + if(cacheOnStartup) { + long ms = System.currentTimeMillis(); + String[] layoutNames = LayoutManager.getManager().getAllLayoutName(); + for(int p=0; poccMin) 일 경우 + * occRef를 참조하여 그 갯수만큼 item을 생성한다. + */ + if (item.getIndex()==-1 && ("*".equals(item.getOccType()) || "+".equals(item.getOccType()) || item.getOccMax()>item.getOccMin())) { + int occCount = 0; + String path = ""; + try { + //occCount = item.getRoot().getInt(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + path = getOccRefItem(item); + occCount = item.getRoot().getInt(path); + } + catch(Exception oe) { +// throw new InvalidAccessException(item.getName() +"의 반복참조정보 값이 숫자가 아닙니다 - " + " : " + oe.getMessage() , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + logger.warn("반복참조정보 값 에러", oe); + } + + if (occCount < item.getOccMin() + || (!"*".equals(item.getOccType()) && !"+".equals(item.getOccType()) && occCount > item.getOccMax())) { + throw new InvalidAccessException("반복횟수가 OccMin~OccMax 의 범위를 벗어납니다. , " + item.getName(), item.getItemPath()); + } + /** + * 반복횟수 참조정보가 비정상적으로 클때 방어로직 + * 그리드 오류처리로직) 자식배열 길이합계 * 반복횟수 참조정보 > 셋팅하는 실제 데이터 + * 필드 오류처리조직) 필드 길이 * 반복횟수 참조정보 > 셋팅하는 실제 데이터 + */ + int sumChildLength = 0; + Item childItem= null; + if (item.isGroup()){ + for(int i=0;i data.length){ + //throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 자식배열 길이합계("+sumChildLength+") = 계산된길이("+(sumChildLength * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 자식배열 길이합계("+sumChildLength+") = 계산된길이("+(sumChildLength * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , path); + } + }else{ + if (item.getLength() * occCount > data.length){ + //throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 길이("+item.getLength()+") = 계산된길이("+(item.getLength() * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 길이("+item.getLength()+") = 계산된길이("+(item.getLength() * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , path); + } + } + item.createItem(item, + item.getRoot().normalizeFullName(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getName() + "[" + (occCount-1) + "]"), + false); + + /** + * item 이 속해있는 childList 크기가 증가로 인해, iterator를 다시 생성한다. + */ + iter = item.getRoot().iterator(); + for (;iter.hasNext();) { + if (item.equals(iter.next())) { + break; + } + } + } + + /** + * index == -1 인 경우는 무시한다 + */ + if (item.getIndex() == -1) { + continue; + } + + switch (item.getNodeTypeId()) { + case NODE_FIELD: + try { + item.setValue(ByteUtil.cut(data, item.getLength())); + } catch(Exception e) { + // Padding space + byte[] space = new byte[item.getLength()]; + for (int i=0; i= item.getLength()) { + data = ByteUtil.sub(data, item.getLength()); + } + } catch(Exception e) { + logger.warn("byte hadling error.", e); + } + break; + } + } + + return data; + } + + public String toString() { + + StringBuffer sb = new StringBuffer(); + sb.append("[MVBYTES message]"); + + sb.append("\n" + super.toString()); + sb.append("\n"); + + return sb.toString(); + } + public String toXMLString() { + StringBuffer sb = new StringBuffer(); + sb.append(""); + sb.append("\n" + ""); + sb.append("\n" + Constants.TAB + "정상적으로 파싱된게 아닙니다. 오류 발견을 용이하게 하기 위해서 파싱을 했습니다."); + sb.append(Constants.TAB + " " + XmlUtil.removeXMLHeader(super.toXMLString())); + sb.append("\n" + ""); + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/MonitoringVEbcdicMessage.java b/src/main/java/com/eactive/eai/transformer/message/MonitoringVEbcdicMessage.java new file mode 100644 index 0000000..23e937b --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/MonitoringVEbcdicMessage.java @@ -0,0 +1,168 @@ +package com.eactive.eai.transformer.message; + +import java.util.Iterator; + +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.Types; +import com.eactive.eai.transformer.util.ByteUtil; +import com.eactive.eai.transformer.util.Constants; +import com.eactive.eai.transformer.util.EbcdicDumpUtil; +import com.eactive.eai.transformer.util.XmlUtil; +/** + * 모니터링 을 위한 VariableEbcdicMessage + * Error 처리 안함 + * @author + * + */ + +public class MonitoringVEbcdicMessage extends EbcdicMessage +{ + public static final String NAME = "MVEBCDIC"; + + public MonitoringVEbcdicMessage() { + super(); + } + + protected void doSetData(Object data) { + this.data = (byte[]) data; +// int rcvLength = this.data.length; + + byte[] _data = ByteUtil.copy(this.data); + + if(_data != null) { +// byte[] result = setDataBytes((byte[]) _data); + setDataBytes((byte[]) _data); + } + + } + + protected byte[] setDataBytes(byte[] data) { +// int originalLength = data.length; + Item item = null; + + for (Iterator iter = iterator(); iter.hasNext();) { + item = (Item) iter.next(); + + if(item == null) { + continue; + } + /** + * occType = * | + | (occMax>occMin) 일 경우 + * occRef를 참조하여 그 갯수만큼 item을 생성한다. + */ + if (item.getIndex()==-1 && ("*".equals(item.getOccType()) || "+".equals(item.getOccType()) || item.getOccMax()>item.getOccMin())) { + int occCount = 0; + String path =""; + try { + //occCount = item.getRoot().getInt(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + path = getOccRefItem(item); + occCount = item.getRoot().getInt(path); + } + catch(Exception oe) { +// throw new InvalidAccessException(item.getName() +"의 반복참조정보 값이 숫자가 아닙니다 - " + " : " + oe.getMessage() , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + occCount = 0; + } + + if (occCount < item.getOccMin() + || (!"*".equals(item.getOccType()) && !"+".equals(item.getOccType()) && occCount > item.getOccMax())) { + throw new InvalidAccessException("반복횟수가 OccMin~OccMax 의 범위를 벗어납니다. , " + item.getName(), item.getItemPath()); + } + /** + * 반복횟수 참조정보가 비정상적으로 클때 방어로직 + * 그리드 오류처리로직) 자식배열 길이합계 * 반복횟수 참조정보 > 셋팅하는 실제 데이터 + * 필드 오류처리조직) 필드 길이 * 반복횟수 참조정보 > 셋팅하는 실제 데이터 + */ + int sumChildLength = 0; + Item childItem= null; + if (item.isGroup()){ + for(int i=0;i data.length){ + //throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 자식배열 길이합계("+sumChildLength+") = 계산된길이("+(sumChildLength * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 자식배열 길이합계("+sumChildLength+") = 계산된길이("+(sumChildLength * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , path); + } + }else{ + if (item.getLength() * occCount > data.length){ + //throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 길이("+item.getLength()+") = 계산된길이("+(item.getLength() * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 길이("+item.getLength()+") = 계산된길이("+(item.getLength() * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , path); + } + } + item.createItem(item, + item.getRoot().normalizeFullName(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getName() + "[" + (occCount-1) + "]"), + false); + + /** + * item 이 속해있는 childList 크기가 증가로 인해, iterator를 다시 생성한다. + */ + iter = item.getRoot().iterator(); + for (;iter.hasNext();) { + if (item.equals(iter.next())) { + break; + } + } + } + + /** + * index == -1 인 경우는 무시한다 + */ + if (item.getIndex() == -1) { + continue; + } + + switch (item.getNodeTypeId()) { + case NODE_FIELD: + try { + item.setValue(ByteUtil.cut(data, item.getLength())); + } catch(Exception e) { + // Padding space + byte[] space = new byte[item.getLength()]; + for (int i=0; i= item.getLength()) { + data = ByteUtil.sub(data, item.getLength()); + } + } catch(Exception e) { + break; + } + break; + } + } + + return data; + } + + + public String toString() { + StringBuffer sb = new StringBuffer(); + sb.append("[MVEBCDIC message]"); + if (data != null) { + String[] str = EbcdicDumpUtil.makeEbcdicDumpFormat((byte[])data); + for(int i=0;i"); + sb.append("\n" + ""); + sb.append("\n" + Constants.TAB + "정상적으로 파싱된게 아닙니다. 오류 발견을 용이하게 하기 위해서 파싱을 했습니다."); + sb.append(Constants.TAB + " " + XmlUtil.removeXMLHeader(super.toXMLString())); + sb.append("\n" + ""); + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/ObjectMessage.java b/src/main/java/com/eactive/eai/transformer/message/ObjectMessage.java new file mode 100644 index 0000000..022a049 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/ObjectMessage.java @@ -0,0 +1,516 @@ +package com.eactive.eai.transformer.message; + +import java.beans.PropertyDescriptor; +import java.io.IOException; +import java.io.Serializable; +import java.util.AbstractList; +import java.util.Iterator; +import java.util.Map; +import java.util.Stack; +import java.util.regex.Pattern; + +import org.apache.commons.beanutils.PropertyUtils; + +import com.eactive.eai.common.util.ObjectUtil; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.layout.Types; + + +public class ObjectMessage extends Message { + public static final String NAME = "OBJECT"; + private Object data; + + //------------------------------------------------- + // 2007.02.16 : IBM BMT Version : 2007.05.09 적용 + //------------------------------------------------- + public static final Pattern pattern = Pattern.compile("([a-zA-Z0-9_]+)\\[[a-zA-Z0-9_]+\\]"); + //------------------------------------------------- + + //private Logger logger; + public ObjectMessage() { + super(); + } + + /* + public ObjectMessage(Layout layout) { + this.layout = layout; + } + */ + public Object getData() { + return this.data; + } + + public void createObject() { + //Item root = layout.getGroup(0).getRootItem(); + String className = getRefInfo(); + + try { + this.data = this.newInstance(className); + } catch (Exception e) { + throw new RuntimeException( + "ObjectMessage] Cannot create a ObjectMessage object. - " + + e.getMessage()); + } + } + protected void doSetData(Object data ) { + doSetData(data, false); + } + protected void doSetData(Object data , boolean refCountLimit) { + if (!(data instanceof Serializable)) { + throw new InvalidDataTypeException("It is not a kind of Serializable class.", + data); + } + +// try { + this.data = data; +// } catch (Exception e) { +// throw new InvalidDataTypeException(e.getMessage(), data, e); +// } + + try { + Map map = PropertyUtils.describe(data); + for (Iterator it = map.keySet().iterator(); it.hasNext();) { + String key = (String) it.next(); + Object val = map.get(key); + + if (key.equals("class")) { + continue; + } + + Item item = getOrCreateItem(getName() + Types.FIELD_SEPARATOR + key, true); + item.setValue(val); + composeData(item, val); + + if ("java.lang.Object".equals(PropertyUtils.getPropertyType( + data, key).getName())) { + Map _map = PropertyUtils.describe(val); + + for (Iterator _it = _map.keySet().iterator(); + _it.hasNext();) { + String _key = (String) _it.next(); + Object _val = _map.get(_key); + + if (_key.equals("class")) { + continue; + } + + Item subItem = getOrCreateItem(getName() + + Types.FIELD_SEPARATOR + key + Types.FIELD_SEPARATOR + _key, true); + subItem.setValue(_val); + composeData(subItem, _val); + } + } + } + } catch (Exception e) { + throw new InvalidAccessException(e.getMessage(), path, this, e); + } + } + + protected void composeData(Item item, Object value) throws InvalidAccessException { + //if(logger.isInfoEnabled()) logger.info("[ObjectMessage " + getItemPath() + "] composeData(" + itemPath + ", " + value + ")"); + + if (item.getIndex() < 0) + return; + + String itemPath = item.getItemPath(); + Item parent = item.getParent(); + + if (value != null && value instanceof byte[]) + value = new String((byte[]) value); + + if (parent == null) { + throw new InvalidAccessException("MESSAGE not defined in top root.", + itemPath); + } + + Object target = this.data; + + /** + * if item is group + */ + if (item.isGroup() && (value == null)) { + try { + item.setValue(newInstance(item.getRefInfo())); + + // Message 밑에만 Group이 있다 (제한사항) 그룹내 그룹 안된다. + PropertyUtils.setProperty(this.data, item.getName(), + item.getValue()); + } catch (Exception e) { + logger.error(e.getMessage(),e); + throw new InvalidAccessException( + "Can not set the default value of the group : can not create an instance of the following class : " + getRefInfo(), + itemPath, + (Message) item.getRoot(), + e); + } + } + + /** + * if parent is group + */ + if (parent.isGroup()) { + if (parent.getValue() == null) { + try { + parent.setValue(newInstance(item.getParent().getRefInfo())); + + //PropertyUtils.setProperty(this.data, parent.getName(), parent.getValue()); + } catch (Exception e) { + logger.error(e.getMessage(),e); + throw new InvalidAccessException("Can not set the default value of the group.", + itemPath, + (Message) item.getRoot(), + e); + } + } + + // 최후의 수단이다 - ^^; + // ObjectMessage -> Nested 인 경우 data에 반영 안되는 현상 제거. + try { + PropertyUtils.setProperty(this.data, parent.getName(), parent.getValue()); + } catch (Exception e) { + logger.error(e.getMessage(),e); + throw new InvalidAccessException("Can not set the default value of the group.", + itemPath, + (Message) item.getRoot(), + e); + } + + target = item.getParent().getValue(); + } + + try { + if (target == null) { + throw new Exception( + "Target Item value is null. PropertyUtils.setProperty() can not execute."); + } + + if (value != null) { + /** + * occ type = '*' | '+' | >1 + */ + if ("*".equals(item.getOccType()) || + "+".equals(item.getOccType()) || Integer.parseInt(item.getOccType()) > 1) { + PropertyDescriptor descriptor = PropertyUtils.getPropertyDescriptor(target, + item.getName()); + + if (descriptor == null) { + throw new InvalidAccessException( + "[ObjectMessage, PropertyDescriptor] Unknown property '" + + item.getName() + "'", itemPath); + } + + if (PropertyUtils.getProperty(target, item.getName()) == null) { + Object val = Class.forName(PropertyUtils.getPropertyType( + target, item.getName()).getName()) + .newInstance(); + PropertyUtils.setProperty(target, item.getName(), val); + } + + AbstractList prop = (AbstractList) PropertyUtils.getProperty(target, + item.getName()); + + // expand size of collection + while (prop.size() < (item.getIndex() + 1)) { + prop.add(prop.size(), + Class.forName(value.getClass().getName()) + .newInstance()); + } + + PropertyUtils.setIndexedProperty(target, item.getName(), + item.getIndex(), value); + /** + * occ type = 1 + */ + } else { + PropertyUtils.setProperty(target, item.getName(), value); + } + } + } catch (Exception e) { +// if(logger.isError()) +// logger.error(e.getMessage() + " : PropertyUtils.setProperty(" + +// target + ", " + item.getName() + ", " + item.getIndex() + ", " + +// value + ")", e); + throw new InvalidAccessException( + "Can not set the Property to ItemPath, " + + "target=" + target.getClass().getName() + ", " + + e.getMessage(), + itemPath, + (Message) item.getRoot(), + e); + } + } + + public void copy(Message message) { + if (!(message instanceof ObjectMessage)) { + throw new InvalidMessageException("ObjectMessage | Invlid Message for copy.", + message); + } + + Object obj = null; + + try { + obj = message.getData(); + } catch (InvalidDataTypeException e) { + throw new InvalidMessageException(e, message); + } + + if (!(obj instanceof java.io.Serializable)) { + throw new InvalidMessageException("ObjectMessage] Invlid Message for deep copy.", + message); + } + + try { + data = ObjectUtil.deepCopy(obj); + } catch (IOException e) { + throw new InvalidMessageException(e, message); + } + } + + public Layout getLayout() { + return this.layout; + } + + public void createObject(Item item) { + if (item.isField() || item.isMessage()) { + return; + } + + Item refItem = item.getReferenceItem(); + + if (refItem == null) { + return; + } + + Object refItemDefaultValue = refItem.getDefaultValue(); + + if (refItemDefaultValue == null) { + return; + } + + String className = item.getRefInfo(); + String itemName = item.getName(); + + int idx = itemName.indexOf(refItemDefaultValue.toString()); + + if (idx == -1) { + return; + } + + try { + Object obj = this.newInstance(className); + this.setObject(item.getPath(), obj); + } catch (Exception e) { + throw new RuntimeException( + "[ObjectMessage] Cannot create a ObjectMessage object. - " + + e.getMessage()); + } + } + + private Object getValue(String itemPath) { + if (this.data == null) { + this.createObject(); + } + + Item item = getItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("Property not found in ItemPath.", + itemPath); + } + + Item parent = item.getParent(); + + if (parent == null) { + throw new InvalidAccessException("MESSAGE not defined in top root.", + itemPath); + } + + String _path = pattern.matcher(item.getName()).replaceAll("$1"); + + Object target = this.data; + + if (item.getParent().isGroup()) { + if (item.getParent().getValue() == null) { + try { + parent.setValue(newInstance(item.getRefInfo())); + } catch (Exception e) { + throw new InvalidAccessException( + "Can not set the default value of the group : can not create an instance of the following class : " + + getRefInfo(), itemPath); + } + } + + target = parent.getValue(); + } + + if (parent.isMessage()) { + try { + return PropertyUtils.getProperty(target, _path); + } catch (Exception e) { + logger.error(e.getMessage(),e); + throw new InvalidAccessException("Can not get Property with ItemPath.", + itemPath, + (Message) item.getRoot(), + e); + } + } else if (parent.isGroup()) { + Object obj = getValue(parent.getItemPath()); + + if (obj == null) { + return null; + } + + String realPath = item.getName(); + + // FIELD + if (item.isField()) { + try { + return PropertyUtils.getProperty(obj, realPath); + } catch (Exception e) { + logger.error(e.getMessage(),e); + throw new InvalidAccessException("Can not get Property with ItemPath.", + itemPath, + (Message) item.getRoot(), + e); + } + } else { + return getGroupValue(item, itemPath); + } + } else { + throw new InvalidAccessException("Parent can not be defined as FIELD in ItemPath.", + itemPath); + } + } + + private Object getGroupValue(Item item, String itemPath) { + Item refItem = item.getReferenceItem(); + + if (refItem == null) { + try { + return PropertyUtils.getProperty(this.data, itemPath); + } catch (Exception e) { + throw new InvalidAccessException("Can not get Property with ItemPath.", + itemPath, + (Message) item.getRoot(), + e); + } + } else { + Object refValue = getObject(refItem.getPath()); + int idx = itemPath.indexOf("[" + refValue + "]"); + + if (idx != -1) { + String reaultPath = itemPath.substring(0, idx); + + try { + return PropertyUtils.getProperty(this.data, reaultPath); + } catch (Exception e) { + throw new InvalidAccessException("Can not get Property with ItemPath.", + itemPath, + (Message) item.getRoot(), + e); + } + } else { + return null; + } + } + } + + private Object newInstance(String className) { + Class cobj = null; + + try { + cobj = Class.forName(className); + } catch (Exception e) { + throw new RuntimeException( + "Cannot find the class for value object. [" + className + + "]- " + e.getMessage()); + } + + try { + return cobj.newInstance(); + } catch (Exception e) { + throw new RuntimeException( + "Cannot create a ObjectMessage object. - " + e.getMessage()); + } + } + + public String toLogString() { + StringBuffer sb = new StringBuffer(); + Stack stack = new Stack(); + sb.append(getName() + "["); + stack.push("]"); + + int prevDepth = 1; + for (Iterator iter = iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + + /** + * index == -1 인 경우는 출력하지 않는다. + */ + if (item.getIndex() < 0) { + continue; + } + + /** + * depth 가 낮아질 때(tree를 빠져 나올 때), ']' 를 찍어준다. + */ + if (item.getDepth() < prevDepth) { + sb.append(stack.pop()); + } + + /** + * ','로 구성요소를 구분해 준다. + */ + if (item.getDepth() <= prevDepth) { + sb.append(", "); + } + + switch (item.getNodeTypeId()) { + case NODE_FIELD: + if ("Y".equals(item.getMask())) + sb.append(item.getName() + "=" + item.maskString2(item.getValue(), item.getMaskLength())); + else + sb.append(item.getName() + "=" + item.getValue()); + break; + case NODE_GROUP: + case NODE_MESSAGE: + sb.append(item.getName() + "["); + stack.push("]"); + break; + } + + /** + * 이전 depth를 저장해 둔다. + */ + prevDepth = item.getDepth(); + } + + /** + * 필요한 만큼 ']'를 찍어준다. + */ + while(stack.size() > 0) { + sb.append(stack.pop()); + } + + return sb.toString(); + } + + public String toString() { + StringBuffer sb = new StringBuffer(); + sb.append("[OBJECT message]"); + + if (data != null) { + try { + sb.append("\n data = |" + PropertyUtils.describe(data) + + "|"); + } catch (Exception e) { + } + } + + sb.append("\n" + super.toString()); + sb.append("\n"); + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/OddBytesMessage.java b/src/main/java/com/eactive/eai/transformer/message/OddBytesMessage.java new file mode 100644 index 0000000..501a389 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/OddBytesMessage.java @@ -0,0 +1,417 @@ +package com.eactive.eai.transformer.message; + + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.Iterator; + +import org.apache.commons.lang3.StringUtils; + +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.Types; +import com.eactive.eai.transformer.util.ByteUtil; +import com.eactive.eai.transformer.util.CommonLib; +import com.eactive.eai.transformer.util.Constants; +import com.eactive.eai.transformer.util.IConv; + + +/** + *
+ * BYTE ARRAY(전문) 형식의 데이터를 변환하기 위한 메시지.
+ * 전문의 길이는 고정 및 가변을 처리할 수 있게 되어 있음.  (인터넷뱅킹 금결원 응답전문)
+ * GRID의 건수가 0일 경우에도 실제 GRID는 1건이 설정되어 있음
+ * [제약 사항]
+ * 현재는 고정 필드에 대해서만 처리 가능.
+ *
+ * [PATH 정의]
+ * PATH           =  +  + 
+ * ITEM_TYPE      = 'F' | 'G' | 'M'
+ * STATIC_PATH    = OFFSET
+ * 
+ */ +public class OddBytesMessage extends Message { + public static final String NAME = "ODDBYTES"; + protected byte[] data; + protected boolean bStaled = false; + + // 끝부분 가변 데이터 처리용 + //private byte[] variableData; + public OddBytesMessage() { + super(); + } + + public void createObject() { + //Item root = layout.getRootItem(); + data = new byte[0]; + } + + //---------------------------------------------------------------- + // 2009.10.12 전문일 경우 숫자형문자로 정의하도록 수정 : 강길수 차장요청 + //---------------------------------------------------------------- + public int getInt(String itemPath) { + try { + Item item = getItem(itemPath, true); + + if (item == null) { + throw new InvalidAccessException("레이아웃항목이 존재하지 않음", itemPath); + } + + Object value = item.getValue(); + if (value == null) { + return 0; + } else if (value instanceof byte[]) { + return Integer.parseInt(new String(((byte[]) value)).trim()); + } else { + throw new InvalidAccessException("레이아웃항목의 값이 숫자가 아님", itemPath); + } + } catch (Exception e) { + throw new InvalidAccessException(e.getMessage(), itemPath, this, e); + } + } + + public void setInt(String itemPath, int value) { + int _value = value; + super.setInt(itemPath, _value); + + Item item = getOrCreateItem(itemPath, true); + try { + setBytes(itemPath, StringUtils.leftPad(String.valueOf(value), item.getLength(), "0").getBytes()); + } catch(Exception e) { + throw new MessageException(e.getMessage(), e); + } + } + //---------------------------------------------------------------- + + protected void composeData(Item item, Object value) { + //if (value != null && value instanceof byte[]) + // if(logger.isInfoEnabled()) logger.info("[OddBytesMessage] composeData(" + itemPath + ", " + new String((byte[]) value) + ") : " + (value==null ? "" :value.getClass().getName())); + + if (item.getIndex() < 0) + return; + +// String itemPath = item.getItemPath(); + + if (!bStaled) { + bStaled = true; + } + } + + //-------------------------------------------------------------------------- + public Object getData() throws InvalidDataTypeException { + if (bStaled) { + try { + data = toByteArray(); + } catch(Exception e) { + throw new InvalidDataTypeException(e.getMessage(),"OddBytesMessage.getData() method", e); + } + bStaled = false; + } + + return getDataBytes(); + } + + protected byte[] toByteArray() { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + try { + for (Iterator iter = iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + + /** + * index == -1 인 경우는 무시한다 + */ + if (item == null || item.getIndex() == -1) { + continue; + } + + switch (item.getNodeTypeId()) { + case NODE_FIELD: + if (item.getValue() == null) { + bos.write( new byte[item.getLength()] ); + } else if (item.getValue() instanceof String) { + bos.write( ByteUtil.padding((String) item.getValue(), item.getLength()) ); + } else if (item.getValue() instanceof Number) { + bos.write( ByteUtil.padding(((Number) item.getValue()).toString(), item.getLength()) ); + } else { + bos.write( ByteUtil.padding((byte[]) item.getValue(), item.getLength()) ); + } + break; + } + } + return bos.toByteArray(); + } catch(Exception e) { + logger.error("retrun zero-bytes.", e); + return new byte[0]; + } + finally { + if(bos != null) + try { + bos.close(); + } catch (IOException e) { + ; + } + } + } + + protected void doSetData(Object data) { + this.data = (byte[]) data; +// int rcvLength = this.data.length; + byte[] _data = ByteUtil.copy(this.data); + if(_data == null) { + _data = new byte[0]; + } +// byte[] result = setDataBytes((byte[]) _data ); + setDataBytes((byte[]) _data ); + } + + // only for OddBytesMessage & CommonBytesMessage + protected byte[] setDataBytes(byte[] data ) { + int originalLength = data.length; + Item item = null; + + for (Iterator iter = iterator(); iter.hasNext();) { + item = (Item) iter.next(); + + if(item == null) { + continue; + } + /** + * occType = * | + | (occMax>occMin) 일 경우 + * occRef를 참조하여 그 갯수만큼 item을 생성한다. + */ + if (item.getIndex()==-1 && ("*".equals(item.getOccType()) || "+".equals(item.getOccType()) || item.getOccMax()>item.getOccMin())) { + int occCount = 0; + String path =""; + try { + //occCount = item.getRoot().getInt(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + path = getOccRefItem(item); + occCount = item.getRoot().getInt(path); + } + catch(Exception oe) { + //throw new InvalidAccessException(item.getName() +"의 반복참조정보 값이 숫자가 아닙니다 - " + item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef() + " : " + oe.getMessage() , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + throw new InvalidAccessException(item.getName() +"의 반복참조정보 값이 숫자가 아닙니다 - " + path + " : " + oe.getMessage() , path); + } + + if (occCount < item.getOccMin() + || (!"*".equals(item.getOccType()) && !"+".equals(item.getOccType()) && occCount > item.getOccMax())) { + throw new InvalidAccessException("반복횟수가 OccMin~OccMax 의 범위를 벗어납니다. , " + item.getName(), item.getItemPath()); + } + + // GRID의 건수가 0일 경우에도 실제 GRID는 1건이 설정되어 있음 : 2020-06-08 + if(occCount == 0) { + occCount = 1; + } + + /** + * 반복횟수 참조정보가 비정상적으로 클때 방어로직 + * 그리드 오류처리로직) 자식배열 길이합계 * 반복횟수 참조정보 > 셋팅하는 실제 데이터 + * 필드 오류처리조직) 필드 길이 * 반복횟수 참조정보 > 셋팅하는 실제 데이터 + */ + int sumChildLength = 0; + Item childItem= null; + if (item.isGroup()){ + for(int i=0;i data.length){ +// throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 자식배열 길이합계("+sumChildLength+") = 계산된길이("+(sumChildLength * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 자식배열 길이합계("+sumChildLength+") = 계산된길이("+(sumChildLength * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , path); + } + }else{ + if (item.getLength() * occCount > data.length){ +// throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 길이("+item.getLength()+") = 계산된길이("+(item.getLength() * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 길이("+item.getLength()+") = 계산된길이("+(item.getLength() * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , path); + } + } + item.createItem(item, + item.getRoot().normalizeFullName(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getName() + "[" + (occCount-1) + "]"), + false); + + /** + * item 이 속해있는 childList 크기가 증가로 인해, iterator를 다시 생성한다. + */ + iter = item.getRoot().iterator(); + for (;iter.hasNext();) { + if (item.equals(iter.next())) { + break; + } + } + } + + /** + * index == -1 인 경우는 무시한다 + */ + if (item.getIndex() == -1) { + continue; + } + + switch (item.getNodeTypeId()) { + case NODE_FIELD: + try { + item.setValue(ByteUtil.cut(data, item.getLength())); + } catch(Exception e) { + StringBuffer sb = new StringBuffer(); + sb.append("전문레이아웃 매핑 중 데이터 사이즈 오류 ("+e.getMessage()+")"); + sb.append("\n"); + sb.append("전문레이아웃="+item.getItemPath()); + throw new MessageException(sb.toString()); + } + + try { + data = ByteUtil.sub(data, item.getLength()); + } catch(Exception e) { + StringBuffer sb = new StringBuffer(); +// sb.append("error when set value to item - " + item.getName()); +// sb.append(" "+e.getMessage()); +// throw new MessageException("error when set value to item - " + item.getName(), e); + sb.append("전문레이아웃 매핑 중 데이터 셋팅 오류 ("+ e.getMessage() + ")"); + sb.append("\n"); + sb.append("전문레이아웃="+item.getItemPath()); + throw new MessageException(sb.toString()); + } + break; + } + } + + if (data.length > 0) { + StringBuffer sb = new StringBuffer(); +// sb.append("setData() : " + item.getItemPath() + " : data size가 맞지 않습니다. (overflow) "); +// sb.append("length=" + (originalLength-data.length) + "(+" + data.length + ")"); +// sb.append("defined length=" + (originalLength-data.length) + ", received length=" + originalLength+". "); + sb.append("전문레이아웃 매핑 중 데이터 사이즈 오류 (정의한 길이=" + (originalLength-data.length) +", 받은 길이="+ originalLength + ")"); + sb.append("\n"); + sb.append("전문레이아웃="+(item==null?"":item.getItemPath())); + throw new MessageSetDataOverflowException(sb.toString()); + } + + return data; + } + + + //-------------------------------------------------------------------------- + // Additional Getter/Setter + + public byte[] getDataBytes() throws InvalidDataTypeException { + /* + if (isNotVariableDataUpdated()) { + validateVariable(); + } + */ + return data; + } + + public int getDataLength() { + if (data == null) { + return -1; + } else { + return data.length; + } + } + + public void clearData() { + clearData((byte) 0x00); + clearValue(); + } + + public void clearData(byte fillByte) { + if (data != null) { + for (int i = 0; i < data.length; i++) { + data[i] = fillByte; + } + } + } + + public String toLogString() { + return toLogString(false); + } + + public String toLogString(boolean ebcdic) { + if (ebcdic) { + byte[] buff = makeBytesLogString(); + return IConv.ebcdicToASCIIWithSOSIEX(buff); + } else { + byte[] buff = makeBytesLogString(); + return new String(buff); + } + } + + protected byte[] makeBytesLogString() { + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + try { + for (Iterator iter = iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + + /** + * index == -1 인 경우는 무시한다 + */ + if (item == null || item.getIndex() < 0) { + continue; + } + + switch (item.getNodeTypeId()) { + case NODE_FIELD: + if ("Y".equals(item.getMask())) { + String mString = maskString(item.getLength()); + if(mString == null) { + bos.write( "".getBytes() ); + } + else { + bos.write( mString.getBytes() ); + } + } else { + if (item.getValue() == null) { + bos.write( new byte[item.getLength()] ); + } else if (item.getValue() instanceof String) { + bos.write( ByteUtil.padding((String) item.getValue(), item.getLength()) ); + } else if (item.getValue() instanceof Number) { + bos.write( ByteUtil.padding(((Number) item.getValue()).toString(), item.getLength()) ); + } else { + bos.write( ByteUtil.padding((byte[]) item.getValue(), item.getLength()) ); + } + } + break; + case NODE_GROUP: + case NODE_MESSAGE: + break; + } + } + return bos.toByteArray(); + } catch(Exception e) { + logger.error("retrun zero-bytes.", e); + return new byte[0]; + } + finally { + if(bos != null) + try { + bos.close(); + } catch (IOException e) { + ; + } + } + } + + public String toString() { + // if staled -> reorganize data + try { + getData(); + } catch (InvalidDataTypeException e) { + logger.error("[OddBytesMessage] " + e.getMessage(), e); + } + + StringBuffer sb = new StringBuffer(); + if ("OddBytesMessage".equals(getClass().getSimpleName())) { + sb.append(getName() + " (OddBytesMessage)"); + } + sb.append(super.toString()); + //sb.append("\n" + Constants.TAB + " +--------------------------------------------------------------------------------------------------+"); + if (data != null) { + sb.append("\n" + Constants.TAB + " | data = " + CommonLib.hexDumpTab(data)); + } + sb.append("\n" + Constants.TAB + " +--------------------------------------------------------------------------------------------------+"); + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/UJSONMessage.java b/src/main/java/com/eactive/eai/transformer/message/UJSONMessage.java new file mode 100644 index 0000000..ad43cb8 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/UJSONMessage.java @@ -0,0 +1,87 @@ +//package com.eactive.eai.transformer.message; +// +//import com.fasterxml.jackson.core.JsonGenerator; +//import com.fasterxml.jackson.core.JsonParser; +//import com.fasterxml.jackson.databind.DeserializationFeature; +//import com.fasterxml.jackson.databind.JsonNode; +//import com.fasterxml.jackson.databind.ObjectMapper; +//import com.fasterxml.jackson.databind.node.JsonNodeFactory; +//import com.fasterxml.jackson.databind.node.ObjectNode; +// +// +//public class UJSONMessage extends JSONMessage { +// private static final long serialVersionUID = -4490794379709362079L; +// +// public static final String MESSAGE_NAME = "UJSONMessage"; +// public static final String NAME = "UJSON"; +// public static String encode = "UTF-8"; +// +// public UJSONMessage() { +// super(); +// mapper = new ObjectMapper(); +// // if necessary, add proper options -> use system property config ? +//// mapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS); +// mapper = mapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS) +// .enable(JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN) +// .setNodeFactory(JsonNodeFactory.withExactBigDecimals(true)); +// factory = mapper.getFactory(); +// } +// +// @Override +// protected void doSetData(Object data, boolean refCountLimit) { +// JsonParser parser = null; +// String jsonString = null; +// try { +// if (data instanceof String) { +// jsonString = (String) data; +// parser = factory.createParser(jsonString); +// this.data = mapper.readTree(parser); +// } else if (data instanceof byte[]) { +// jsonString = new String((byte[]) data,encode); +// parser = factory.createParser(jsonString); +// this.data = mapper.readTree(parser); +// } else if (data instanceof JsonNode) { +// this.data = (JsonNode) data; +// } else { +// if (data == null) { +// throw new InvalidDataTypeException("Not able to generate JSON messages with data. Input value is null.", data); +// +// } else { +// throw new InvalidDataTypeException("Not able to generate JSON messages with data. data type = " + data.getClass().getName(), data); +// } +// } +// +// ObjectNode node = (ObjectNode) this.data.get(getName()); +// if(node == null) { +// // if layoutname not appended +// setValue(this.data, getName()); +// } +// else { +// setValue(node, getName()); +// } +// } catch (Exception e) { +// throw new MessageSetDataException(e.getMessage(), this, data, e); +// } +// } +// +// @Override +// public void copy(Message message) throws Exception { +// try { +// this.data = ((UJSONMessage)message).getJSONObject(); +// } catch (Exception e) { +// logger.error(e.getMessage(),e); +// throw new InvalidMessageException(e.getMessage(), message, e); +// } +// } +// +// private String getHeader() { +// return getName() + " (" + MESSAGE_NAME + ") encoding="+encode; +// } +// +// public String toString() { +// StringBuffer sb = new StringBuffer(); +// sb.append(getHeader());; +// sb.append(super.toBodyString()); +// return sb.toString(); +// } +//} diff --git a/src/main/java/com/eactive/eai/transformer/message/UXMLMessage.java b/src/main/java/com/eactive/eai/transformer/message/UXMLMessage.java new file mode 100644 index 0000000..d36bf63 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/UXMLMessage.java @@ -0,0 +1,82 @@ +//package com.eactive.eai.transformer.message; +// +//import java.io.StringReader; +// +//import org.w3c.dom.Document; +// +//import com.eactive.eai.common.util.ObjectUtil; +// +//public class UXMLMessage extends XMLMessage { +// private static final long serialVersionUID = 4554248604547237676L; +// +// public static String NAME = "UXML"; +// public static String MESSAGE_NAME = "UXMLMessage"; +// public static String encode = "utf-8"; +// +// public void copy(Message message) throws InvalidMessageException { +// try { +// Document sourceDocument = ((UXMLMessage) message).getDataDocument(); +// data = (Document) ObjectUtil.deepCopy(sourceDocument); +// } catch (Exception e) { +// logger.error(e.getMessage(), e); +// throw new InvalidMessageException(e.getMessage(), message, e); +// } +// } +// +// protected void doSetData(Object data) { +// try { +// String xmlData = null; +//// logger.error("doSetData encode = " + encode); +// if (data instanceof String) { +// // 비표준 XML의 경우를 고려하여 XML Header의 유무를 확인해야 한다. +// if(((String)data).indexOf("\n" + (String) data; +// } +// else { +// xmlData = (String) data; +// } +//// setDataText(xmlData); +// /* +// // 아래는 지원 안함 +// } else if (data instanceof InputStream) { +// setDataStream((InputStream) data); +// } else if (data instanceof Document) { +// setDataDocument((Document) data); +// */ +// } else { +// if (data == null) { +// throw new InvalidDataTypeException("Not able to generate XML messages with data. Input value is null.", data); +// } else { +// throw new InvalidDataTypeException("Not able to generate XML messages with data. data type = " + data.getClass().getName(), data); +// } +// } +// +// // use DOM +//// org.dom4j.io.DOMReader xmlReader = new org.dom4j.io.DOMReader(); +//// org.dom4j.Document document = xmlReader.read((Document) this.data); +// // use SAX +// org.dom4j.io.SAXReader saxReader = new org.dom4j.io.SAXReader(); +// org.dom4j.Document document = saxReader.read(new StringReader(xmlData)); +// //------------------------------------------------- +// // if necessary to DO THIS +//// this.data = new DOMWriter().write(document); +// //------------------------------------------------- +// org.dom4j.Element root = document.getRootElement(); +// +// setValue(root); +// } catch (Exception e) { +// throw new MessageSetDataException(e.getMessage(), this, data, e); +// } +// } +// +// private String getHeader() { +// return getName() + " (" + MESSAGE_NAME + ") encoding="+encode; +// } +// +// public String toString() { +// StringBuffer sb = new StringBuffer(); +// sb.append(getHeader());; +// sb.append(super.toBodyString()); +// return sb.toString(); +// } +//} diff --git a/src/main/java/com/eactive/eai/transformer/message/VariableBytesMessage.java b/src/main/java/com/eactive/eai/transformer/message/VariableBytesMessage.java new file mode 100644 index 0000000..ad8ba35 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/VariableBytesMessage.java @@ -0,0 +1,181 @@ +package com.eactive.eai.transformer.message; + +import java.util.Iterator; + +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.Types; +import com.eactive.eai.transformer.util.ByteUtil; + + +/** + *
+ * BYTE ARRAY(전문) 형식의 데이터를 변환하기 위한 메시지.
+ * 전체전문을 정의하고 헤더 또는 일부데이터만 올 경우 Space Padding 한다.
+ *
+ * [제약 사항]
+ * 고정 필드에 대해서만 처리 가능.
+ * 정의한 길이보다 실제 데이터가 큰 경우에는 에러처리함
+ * [PATH 정의]
+ * 
+ */ +public class VariableBytesMessage extends BytesMessage { + public static final String NAME = "VBYTES"; + + public VariableBytesMessage() { + super(); + } + + protected void doSetData(Object data) { + this.data = (byte[]) data; +// int rcvLength = this.data.length; + + byte[] _data = ByteUtil.copy(this.data); + +// try { + if(_data != null) { +// byte[] result = setDataBytes((byte[]) _data); + setDataBytes((byte[]) _data); + } +// } catch(MessageSetDataOverflowException e) { +// /** +// * VariableBytesMessage - ignore overflow exception +// */ +// } + } + + protected byte[] setDataBytes(byte[] data) { + int originalLength = data.length; + Item item = null; + + for (Iterator iter = iterator(); iter.hasNext();) { + item = (Item) iter.next(); + + if(item == null) { + continue; + } + /** + * occType = * | + | (occMax>occMin) 일 경우 + * occRef를 참조하여 그 갯수만큼 item을 생성한다. + */ + if (item.getIndex()==-1 && ("*".equals(item.getOccType()) || "+".equals(item.getOccType()) || item.getOccMax()>item.getOccMin())) { + int occCount = 0; + String path = ""; + try { + //occCount = item.getRoot().getInt(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + path = getOccRefItem(item); + occCount = item.getRoot().getInt(path); + } + catch(Exception oe) { +// throw new InvalidAccessException(item.getName() +"의 반복참조정보 값이 숫자가 아닙니다 - " + " : " + oe.getMessage() , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + logger.warn("반복참조정보 값 에러", oe); + } + + if (occCount < item.getOccMin() + || (!"*".equals(item.getOccType()) && !"+".equals(item.getOccType()) && occCount > item.getOccMax())) { + throw new InvalidAccessException("반복횟수가 OccMin~OccMax 의 범위를 벗어납니다. , " + item.getName(), item.getItemPath()); + } + /** + * 반복횟수 참조정보가 비정상적으로 클때 방어로직 + * 그리드 오류처리로직) 자식배열 길이합계 * 반복횟수 참조정보 > 셋팅하는 실제 데이터 + * 필드 오류처리조직) 필드 길이 * 반복횟수 참조정보 > 셋팅하는 실제 데이터 + */ + int sumChildLength = 0; + Item childItem= null; + if (item.isGroup()){ + for(int i=0;i data.length){ + //throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 자식배열 길이합계("+sumChildLength+") = 계산된길이("+(sumChildLength * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + //logger.info(""+item.getName() +"의 반복참조정보 값("+occCount+") * 자식배열 길이합계("+sumChildLength+") = 계산된길이("+(sumChildLength * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " + item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + logger.info(""+item.getName() +"의 반복참조정보 값("+occCount+") * 자식배열 길이합계("+sumChildLength+") = 계산된길이("+(sumChildLength * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " + path); + } + }else{ + if (item.getLength() * occCount > data.length){ + //throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 길이("+item.getLength()+") = 계산된길이("+(item.getLength() * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 길이("+item.getLength()+") = 계산된길이("+(item.getLength() * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , path); + } + } + item.createItem(item, + item.getRoot().normalizeFullName(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getName() + "[" + (occCount-1) + "]"), + false); + + /** + * item 이 속해있는 childList 크기가 증가로 인해, iterator를 다시 생성한다. + */ + iter = item.getRoot().iterator(); + for (;iter.hasNext();) { + if (item.equals(iter.next())) { + break; + } + } + } + + /** + * index == -1 인 경우는 무시한다 + */ + if (item.getIndex() == -1) { + continue; + } + + switch (item.getNodeTypeId()) { + case NODE_FIELD: + try { + item.setValue(ByteUtil.cut(data, item.getLength())); + } catch(Exception e) { + // Padding space + byte[] space = new byte[item.getLength()]; + for (int i=0; i= item.getLength()) { + data = ByteUtil.sub(data, item.getLength()); + } + } catch(Exception e) { + StringBuffer sb = new StringBuffer(); +// sb.append("error when set value to item - " + item.getName()); +// sb.append(" "+e.getMessage()); +// throw new MessageException("error when set value to item - " + item.getName(), e); + sb.append("전문레이아웃 매핑 중 데이터 셋팅 오류 ("+ e.getMessage() + ")"); + sb.append("\n"); + sb.append("전문레이아웃="+item.getItemPath()); + throw new MessageException(sb.toString()); + } + break; + } + } + + if (data.length > 0) { + StringBuffer sb = new StringBuffer(); +// sb.append("setData() : " + item.getItemPath() + " : data size가 맞지 않습니다. (overflow) "); +// sb.append("length=" + (originalLength-data.length) + "(+" + data.length + ")"); +// sb.append("defined length=" + (originalLength-data.length) + ", received length=" + originalLength+". "); + sb.append("전문레이아웃 매핑 중 데이터 사이즈 오류 (정의한 길이=" + (originalLength-data.length) +", 받은 길이="+ originalLength + ")"); + sb.append("\n"); + sb.append("전문레이아웃="+(item==null?"NULL":item.getItemPath()) ); + throw new MessageSetDataOverflowException(sb.toString()); + } + + return data; + } + + public String toString() { + + StringBuffer sb = new StringBuffer(); + sb.append("[VBYTES message]"); + + sb.append("\n" + super.toString()); + sb.append("\n"); + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/VariableEbcdicMessage.java b/src/main/java/com/eactive/eai/transformer/message/VariableEbcdicMessage.java new file mode 100644 index 0000000..fc625db --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/VariableEbcdicMessage.java @@ -0,0 +1,202 @@ +package com.eactive.eai.transformer.message; + +import java.util.Iterator; + +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.Types; +import com.eactive.eai.transformer.util.ByteUtil; +import com.eactive.eai.transformer.util.EbcdicDumpUtil; + +public class VariableEbcdicMessage extends EbcdicMessage +{ + public static final String NAME = "VEBCDIC"; + + public VariableEbcdicMessage() { + super(); + } + + protected void doSetData(Object data) { + this.data = (byte[]) data; +// int rcvLength = this.data.length; + + byte[] _data = ByteUtil.copy(this.data); + +// try { + if(_data != null) { +// byte[] result = setDataBytes((byte[]) _data); + setDataBytes((byte[]) _data); + } +// } catch(MessageSetDataOverflowException e) { +// /** +// * VEBCDIC - ignore overflow exception +// */ +// } + } + + protected byte[] setDataBytes(byte[] data) { + int originalLength = data.length; + Item item = null; + + for (Iterator iter = iterator(); iter.hasNext();) { + item = (Item) iter.next(); + + if(item == null) { + continue; + } + /** + * occType = * | + | (occMax>occMin) 일 경우 + * occRef를 참조하여 그 갯수만큼 item을 생성한다. + */ + if (item.getIndex()==-1 && ("*".equals(item.getOccType()) || "+".equals(item.getOccType()) || item.getOccMax()>item.getOccMin())) { + int occCount = 0; + String path = ""; + try { + //occCount = item.getRoot().getInt(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + path = getOccRefItem(item); + occCount = item.getRoot().getInt(path); + } + catch(Exception oe) { +// throw new InvalidAccessException(item.getName() +"의 반복참조정보 값이 숫자가 아닙니다 - " + " : " + oe.getMessage() , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + occCount = 0; + } + + if (occCount < item.getOccMin() + || (!"*".equals(item.getOccType()) && !"+".equals(item.getOccType()) && occCount > item.getOccMax())) { + throw new InvalidAccessException("반복횟수가 OccMin~OccMax 의 범위를 벗어납니다. , " + item.getName(), item.getItemPath()); + } + /** + * 반복횟수 참조정보가 비정상적으로 클때 방어로직 + * 그리드 오류처리로직) 자식배열 길이합계 * 반복횟수 참조정보 > 셋팅하는 실제 데이터 + * 필드 오류처리조직) 필드 길이 * 반복횟수 참조정보 > 셋팅하는 실제 데이터 + */ + int sumChildLength = 0; + Item childItem= null; + if (item.isGroup()){ + for(int i=0;i data.length){ + //throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 자식배열 길이합계("+sumChildLength+") = 계산된길이("+(sumChildLength * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + //logger.info(item.getName() +"의 반복참조정보 값("+occCount+") * 자식배열 길이합계("+sumChildLength+") = 계산된길이("+(sumChildLength * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " + item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + logger.info(item.getName() +"의 반복참조정보 값("+occCount+") * 자식배열 길이합계("+sumChildLength+") = 계산된길이("+(sumChildLength * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " + path); + } + }else{ + if (item.getLength() * occCount > data.length){ + //throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 길이("+item.getLength()+") = 계산된길이("+(item.getLength() * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 길이("+item.getLength()+") = 계산된길이("+(item.getLength() * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , path); + } + } + item.createItem(item, + item.getRoot().normalizeFullName(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getName() + "[" + (occCount-1) + "]"), + false); + + /** + * item 이 속해있는 childList 크기가 증가로 인해, iterator를 다시 생성한다. + */ + iter = item.getRoot().iterator(); + for (;iter.hasNext();) { + if (item.equals(iter.next())) { + break; + } + } + } + + /** + * index == -1 인 경우는 무시한다 + */ + if (item.getIndex() == -1) { + continue; + } + + switch (item.getNodeTypeId()) { + case NODE_FIELD: + try { + item.setValue(ByteUtil.cut(data, item.getLength())); + } catch(Exception e) { + // Padding space + byte[] space = new byte[item.getLength()]; + for (int i=0; i= item.getLength()) { + data = ByteUtil.sub(data, item.getLength()); + } + } catch(Exception e) { + StringBuffer sb = new StringBuffer(); +// sb.append("error when set value to item - " + item.getName()); +// sb.append(" "+e.getMessage()); +// throw new MessageException("error when set value to item - " + item.getName(), e); + sb.append("전문레이아웃 매핑 중 데이터 셋팅 오류 ("+ e.getMessage() + ")"); + sb.append("\n"); + sb.append("전문레이아웃="+item.getItemPath()); + throw new MessageException(sb.toString()); + } + break; + } + } + + if (data.length > 0) { + StringBuffer sb = new StringBuffer(); + sb.append("전문레이아웃 매핑 중 데이터 사이즈 오류 (정의한 길이=" + (originalLength-data.length) +", 받은 길이="+ originalLength + ")"); + sb.append("\n"); + sb.append("전문레이아웃="+(item==null?"NULL":item.getItemPath())); + throw new MessageSetDataOverflowException(sb.toString()); + } + + return data; + } + +// public int getInt(String itemPath) { +// try { +// Item item = getItem(itemPath, true); +// +// if (item == null) { +// throw new InvalidAccessException(" V 레이아웃항목이 존재하지 않음", itemPath); +// } +// +// Object value = item.getValue(); +// if (value == null) { +// return 0; +// } else if (value instanceof byte[]) { +// byte[] ascii = CodeConversion.seToAsc((byte[]) value); +// return Integer.parseInt(new String(ascii).trim()); +// } else if (value instanceof String) { +// byte[] ascii = CodeConversion.seToAsc(((String)value).getBytes()); +// return Integer.parseInt(new String(ascii).trim()); +// } else { +// throw new InvalidAccessException(" V 레이아웃항목의 값이 숫자가 아님", itemPath); +// } +// } catch (Exception e) { +// throw new InvalidAccessException(e.getMessage(), itemPath, this, e); +// } +// } +// +// +// public void setInt(String itemPath, int value) { +// int _value = value; +// super.setInt(itemPath, _value); +// } + + public String toString() { + StringBuffer sb = new StringBuffer(); + sb.append("[VEBCDIC message]"); + if (data != null) { + String[] str = EbcdicDumpUtil.makeEbcdicDumpFormat((byte[])data); + for(int i=0;i + * BYTE ARRAY(전문) 형식의 데이터를 변환하기 위한 메시지. + * 전체전문의 특정필드값이 참조값에 의한 가변길이일 경우 필드값 length를 참조값으로 치환하여 처리한다. + * 기본적인 로직은 VariableBytesMessage 와 동일하며 배열부분 로직을 수정하였으므로 이 특성은 배열을 지원하지 않는다. + * + * KSH 2014.04.15 + * + */ +public class VariableFieldMessage extends BytesMessage { + public static final String NAME = "VFIELD"; + + public VariableFieldMessage() { + super(); + } + + + protected byte[] setDataBytes(byte[] data) { + + int originalLength = data.length; + Item item = null; + + for (Iterator iter = iterator(); iter.hasNext();) { + item = (Item) iter.next(); + + if(item == null) continue; + /** + * occType = * | + | (occMax>occMin) 일 경우 + * occRef를 참조하여 그 갯수만큼 item을 생성한다. + */ + if (item.getIndex()==-1 && ("*".equals(item.getOccType()) || "+".equals(item.getOccType()) || item.getOccMax()>item.getOccMin())) { + if (item.getNodeTypeId() == item.NODE_FIELD && item.getLength() == 0) { + int occCount = 0; + String path = ""; + try { + path = getOccRefItem(item); + occCount = item.getRoot().getInt(path); + } + catch(Exception oe) { + //throw new InvalidAccessException(item.getName() +"의 반복참조정보 값이 숫자가 아닙니다 - " + " : " + oe.getMessage() , path); + logger.warn("반복참조정보 값 에러 : "+occCount , oe); + } + + if (occCount < item.getOccMin() + || (!"*".equals(item.getOccType()) && !"+".equals(item.getOccType()) && occCount > item.getOccMax())) { + throw new InvalidAccessException("반복횟수가 OccMin~OccMax 의 범위를 벗어납니다. , " + item.getName(), item.getItemPath()); + } + //가변길이 셋팅 + item.setLength(occCount); + + /** + * 반복횟수 참조정보가 비정상적으로 클때 방어로직 + * 오류처리로직) 반복횟수 참조정보 > 셋팅하는 실제 데이터 + */ + + if ( occCount > data.length){ + throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , path); + } + + //0번 배열 추가 + item.createItem(item, + item.getRoot().normalizeFullName(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getName() + "[" + 0 + "]"), + false); + /** + * item 이 속해있는 childList 크기가 증가로 인해, iterator를 다시 생성한다. + */ + iter = item.getRoot().iterator(); + for (;iter.hasNext();) { + if (item.equals(iter.next())) { + break; + } + } + }else { //VField 외의 값 : 기본동작로직 + int occCount = 0; + String path = ""; + try { + path = getOccRefItem(item); + occCount = item.getRoot().getInt(path); + } + catch(Exception oe) { + //throw new InvalidAccessException(item.getName() +"의 반복참조정보 값이 숫자가 아닙니다 - " + " : " + oe.getMessage() , path); + logger.warn("반복참조정보 값 에러 : "+occCount, oe); + } + + if (occCount < item.getOccMin() + || (!"*".equals(item.getOccType()) && !"+".equals(item.getOccType()) && occCount > item.getOccMax())) { + throw new InvalidAccessException("반복횟수가 OccMin~OccMax 의 범위를 벗어납니다. , " + item.getName(), item.getItemPath()); + } + + /** + * 반복횟수 참조정보가 비정상적으로 클때 방어로직 + * 그리드 오류처리로직) 자식배열 길이합계 * 반복횟수 참조정보 > 셋팅하는 실제 데이터 + * 필드 오류처리조직) 필드 길이 * 반복횟수 참조정보 > 셋팅하는 실제 데이터 + */ + int sumChildLength = 0; + Item childItem= null; + if (item.isGroup()){ + for(int i=0;i data.length){ + throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 자식배열 길이합계("+sumChildLength+") = 계산된길이("+(sumChildLength * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , path); + } + }else{ + if (item.getLength() * occCount > data.length){ + throw new InvalidAccessException(item.getName() +"의 반복참조정보 값("+occCount+") * 길이("+item.getLength()+") = 계산된길이("+(item.getLength() * occCount)+") 보다 실제데이터 길이("+data.length+")가 작습니다. " , path); + } + } + + item.createItem(item, + item.getRoot().normalizeFullName(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getName() + "[" + (occCount-1) + "]"), + false); + + /** + * item 이 속해있는 childList 크기가 증가로 인해, iterator를 다시 생성한다. + */ + iter = item.getRoot().iterator(); + for (;iter.hasNext();) { + if (item.equals(iter.next())) { + break; + } + } + } + } + + /** + * index == -1 인 경우는 무시한다 + */ + if (item.getIndex() == -1) { + continue; + } + + switch (item.getNodeTypeId()) { + case NODE_FIELD: + try { + item.setValue(ByteUtil.cut(data, item.getLength())); + } catch(Exception e) { + // Padding space + byte[] space = new byte[item.getLength()]; + for (int i=0; i= item.getLength()) { + data = ByteUtil.sub(data, item.getLength()); + } + } catch(Exception e) { + StringBuffer sb = new StringBuffer(); +// sb.append("error when set value to item - " + item.getName()); +// sb.append(" "+e.getMessage()); +// throw new MessageException("error when set value to item - " + item.getName(), e); + sb.append("전문레이아웃 매핑 중 데이터 셋팅 오류 ("+ e.getMessage() + ")"); + sb.append("\n"); + sb.append("전문레이아웃="+item.getItemPath()); + throw new MessageException(sb.toString()); + } + break; + } + } + + if (data.length > 0) { + StringBuffer sb = new StringBuffer(); +// sb.append("setData() : " + item.getItemPath() + " : data size가 맞지 않습니다. (overflow) "); +// sb.append("length=" + (originalLength-data.length) + "(+" + data.length + ")"); +// sb.append("defined length=" + (originalLength-data.length) + ", received length=" + originalLength+". "); + sb.append("전문레이아웃 매핑 중 데이터 사이즈 오류 (전체 정의한 길이=" + (originalLength-data.length) +", 받은 길이="+ originalLength + ")"); + sb.append("\n"); + sb.append("전체 파싱 후에 데이터가 남음, 길이="+ data.length); +// sb.append("마지막 전문레이아웃="+(item==null?"":item.getItemPath())); + throw new MessageSetDataOverflowException(sb.toString()); + } + + return data; + } + + + protected byte[] toByteArray() { +// byte[] bytes = new byte[0]; + + + //보정 작업 + for (Iterator iter = iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + /** + * index == -1 인 경우는 무시한다 + */ + + if (item ==null || item.getIndex() == -1) { + continue; + } + int occCount = 0; + switch (item.getNodeTypeId()) { + case NODE_FIELD: + //특정필드의 value를 얻어오는 logic + if( item!=null && + ("*".equals(item.getOccType()) && item.getLength() ==0) ){ + try{ +// occCount = item.getRoot().getInt(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + String path = getOccRefItem(item); + occCount = item.getRoot().getInt(path); + item.setLength(occCount); + }catch(Exception e) { + logger.warn("반복참조정보 값 에러 : "+occCount, e); + } + } + break; + case NODE_GROUP: + if("*".equals(item.getOccType()) ){ + occCount = item.getRoot().getInt(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef()); + if (occCount != item.arraySize()){ + item.getRoot().setInt(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef(), item.arraySize()); + } + + } + break; + + } + + } + return super.toByteArray(); + + } + public String toString() { + + StringBuffer sb = new StringBuffer(); + + sb.append(getName() + " (VFIELD message)"); + + sb.append("\n" + super.toString()); + //sb.append("\n"); + + return sb.toString(); + } + + +} diff --git a/src/main/java/com/eactive/eai/transformer/message/XMLMessage.java b/src/main/java/com/eactive/eai/transformer/message/XMLMessage.java new file mode 100644 index 0000000..8ff8730 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/XMLMessage.java @@ -0,0 +1,563 @@ +package com.eactive.eai.transformer.message; + +import java.io.StringReader; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Stack; +import java.util.regex.Pattern; + +import org.apache.commons.lang3.StringUtils; +import org.dom4j.Namespace; +import org.dom4j.QName; + +import com.eactive.eai.transformer.SystemKeys; +import com.eactive.eai.transformer.layout.InvalidNodeException; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.layout.Types; +import com.eactive.eai.transformer.util.Constants; +import com.eactive.eai.transformer.util.Logger; + +import net.sf.ehcache.Cache; +import net.sf.ehcache.CacheException; +import net.sf.ehcache.CacheManager; + + +public class XMLMessage extends Message { + private static final long serialVersionUID = -8580435953360297407L; + + protected static Logger logger = Logger.getLogger("transformer"); + + public static final String NAME = "XML"; + public static final String MESSAGE_NAME = "XMLMessage"; + public static final String NAMESPACE_PREFIX = "xmlns:"; + public static final String REF_TYPE_ELEMENT = "ELEMENT"; + public static final String REF_TYPE_ATTRIBUTE = "ATTRIBUTE"; + public static final String REF_TYPE_TEXT = "TEXT"; + public static final String REF_TYPE_CDATA = "CDATA"; + public static final boolean INDENT = true; + + public static final String ELEMENT_CONTENT_LAYOUT_NAME = "ELEMENT_CONTENT"; + + public static final Pattern pattern = Pattern.compile("\\[([0-9]+)\\]"); + protected org.dom4j.Element root; + protected boolean bStaled = false; + + static int cacheSize = 0; + static int cacheIdle = 0; + + static Cache cache = null; + + static { + cacheSize = Integer.parseInt(System.getProperty(SystemKeys.TRANSFROMER_XML_CACHE_SIZE, SystemKeys.XML_CACHE_SIZE_DEFAULT)); + cacheIdle = Integer.parseInt(System.getProperty(SystemKeys.TRANSFROMER_XML_CACHE_IDLE_SEC, SystemKeys.XML_CACHE_IDLE_DEFAULT)); + initCache(); + } + + public static void initCache() { + try { + CacheManager manager = CacheManager.create(); + logger.warn(">> XMLMessage initCache"); + logger.warn(String.format("%s = %s", SystemKeys.TRANSFROMER_XML_CACHE_SIZE, cacheSize)); + logger.warn(String.format("%s = %s", SystemKeys.TRANSFROMER_XML_CACHE_IDLE_SEC, cacheIdle)); + cache = new Cache("xmlMessage", cacheSize, false, false, 0, cacheIdle); + manager.addCache(cache); + } catch(Exception e) { + logger.error("XMLMessage cache create error",e); + } + } + + public XMLMessage() { + super(); + } + + public void createObject() { + root = null; + } + + /** + * XML String 객체를 반환함 + */ + public Object getData() { + if (bStaled || root == null) { + try { + this.root = makeXmlLogString(false); + } catch(Exception e) { + throw new InvalidDataTypeException(e.getMessage(),"XMLMessage.getData() method", e); + } + bStaled = false; + } + return root.asXML(); + } + + public org.dom4j.Element getDataElement() { + return root; + } + + protected void setValue(org.dom4j.Element element) { + /** + * occRef 설정을 위해 + */ + HashMap validationTargets = new HashMap(); + doSetValue(element, validationTargets); + + // validation + if(SystemKeys.isValidationEnabled()) { + Iterator iter = validationTargets.keySet().iterator(); + while(iter.hasNext()) { + String itemPath = (String) iter.next(); + Item item = (Item) validationTargets.get(itemPath); + + int occCount = getInt(itemPath); + + // 반복횟수참조정보 필드 설정에 따른 Validation + if (occCount < item.getOccMin() || + (!"*".equals(item.getOccType()) && !"+".equals(item.getOccType()) && occCount > item.getOccMax())) + throw new InvalidAccessException("반복횟수가 OccMin~OccMax 의 범위를 벗어납니다. , " + item.getName(), item.getItemPath()); + if (occCount != item.arraySize()) + throw new InvalidAccessException("반복횟수가 실제 데이타의 반복횟수와 틀립니다. , " + item.getName(), item.getItemPath()); + } + } // validation + } + + /** + * occRef 설정을 위해 + */ + protected void doSetValue(org.dom4j.Element element, HashMap validationTargets) { + + Iterator i = element.elementIterator(); + String childPath = null; + while (i.hasNext()) { + org.dom4j.Element child = (org.dom4j.Element) i.next(); + + Item item = null; + QName qn = new QName(child.getName(),Namespace.NO_NAMESPACE); + child.setQName(qn); + try { + childPath = denomalizeXPath(child.getUniquePath()); + item = getOrCreateItem(childPath); + if (item==null) + throw new InvalidAccessException("Item 이 존재하지 않습니다.", childPath); + + // validation target + if(SystemKeys.isValidationEnabled() && StringUtils.isNotEmpty(item.getOccRef())) { + validationTargets.put(item.getParent().getItemPath() + Types.FIELD_SEPARATOR + item.getOccRef(), item); + } + } catch(InvalidNodeException e) { + continue; + } catch(Exception e) { + throw new InvalidAccessException(e.getMessage(), + childPath, + this, + e); + } + + // Group의 Attribute 확인 + if (item.isGroup()) { + int attrCnt = child.attributeCount(); + String groupPath = childPath + Types.FIELD_SEPARATOR; + try { + for (int ai=0; ai 0 && data != null) { + String contentPath = groupPath + ELEMENT_CONTENT_LAYOUT_NAME + "[0]"; + Item contentItem = getItem(contentPath); + if (contentItem != null) { + if (data instanceof String) { + setString(contentPath, (String) data); + } else if (data instanceof byte[]) { + setString(contentPath, new String((byte[]) data)); + } + } + } + } + catch(Exception InvalidNodeException) { + continue; + } + } + else if (item.isField()) { + Object data = child.getData(); + try { + if (data instanceof String){ + setString(childPath, (String) data); + }else if (data instanceof byte[]){ + setString(childPath, new String((byte[]) data)); + } + } + catch(Exception InvalidNodeException) { + continue; + } + } + doSetValue(child, validationTargets); + } + } + /** + * org.w3c.dom.Document 인스턴스 또는 XML String, InputStream으로 설정 할 수 있음. + */ + protected void doSetData(Object data) { + try { + String xmlData = null; + if (data instanceof String) { + xmlData = (String) data; + } else { + if (data == null) { + throw new InvalidDataTypeException("Not able to generate XML messages with data. Input value is null.", data); + } else { + throw new InvalidDataTypeException("Not able to generate XML messages with data. data type = " + data.getClass().getName(), data); + } + } + // use DOM +// org.dom4j.io.DOMReader xmlReader = new org.dom4j.io.DOMReader(); +// org.dom4j.Document document = xmlReader.read((Document) this.data); + // use SAX + org.dom4j.io.SAXReader saxReader = new org.dom4j.io.SAXReader(); + org.dom4j.Document document = saxReader.read(new StringReader(xmlData)); + //------------------------------------------------- + // if necessary to DO THIS +// this.data = new DOMWriter().write(document); + //------------------------------------------------- + setValue(document.getRootElement()); + } catch (Exception e) { + throw new MessageSetDataException(e.getMessage(), this, data, e); + } + } + + protected void composeData(Item itemInfo, Object value) throws InvalidAccessException { + if (itemInfo.getIndex() < 0) + return; + + if (!bStaled) { + bStaled = true; + } + } + + @Override + public Layout getLayout() { + return layout; + } + + protected String denomalizeXPath(String xpath) { + try { + net.sf.ehcache.Element element = cache.get(xpath); + + if (element != null) { + return (String) element.getValue(); + } + } catch(CacheException e) { + logger.error(e.getMessage(), e); + } + StringBuffer sb = new StringBuffer(); + String[] parts = xpath.split("/"); + for(int i=1; istack = new Stack(); + + /** + * Namespance : Path에 Namespace를 입력 + */ + String paths = getPath(); + if(paths != null) { + paths = paths.trim(); + String[] path = paths.split(" "); + for(int i=0; i 0) { + if(path[i].startsWith(NAMESPACE_PREFIX)) { + String prefix = path[i].substring(path[i].indexOf(NAMESPACE_PREFIX)+6, path[i].indexOf("=\"")); + String nspath = path[i].substring(path[i].indexOf("=\"")+2, path[i].length()-1); + rootElement.addNamespace(prefix,nspath); + } + else if(path[i].indexOf("=\"") > -1) { + String prefix = path[i].substring(0,path[i].indexOf("=\"")); + String nspath = path[i].substring(path[i].indexOf("=\"")+2, path[i].length()-1); + rootElement.addAttribute(prefix,nspath); + } + } + } + } + + org.dom4j.Element parent = rootElement; + org.dom4j.Element current = null; + stack.push(rootElement); + + int prevDepth = 1; + for (Iterator iter = iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + + //index == -1 인 경우는 무시한다 + if (item == null || item.getIndex() == -1) { + continue; + } + + /** + * depth 가 낮아질 때(tree를 빠져 나올 때), parent를 재설정한다. + */ + + // 3중 그룹에 의해 XML 구조가 변경되는 로직 수정 + if (item.getDepth() < prevDepth) { + for(int j=0; j<(prevDepth - item.getDepth()); j++) stack.pop(); + } + /** + * 이전 depth를 저장해 둔다. + */ + prevDepth = item.getDepth(); + + parent = stack.peek(); + + // "?" 속성인 경우 값이 스페이스로 채워져 있을 때 변경 + // Number Type 속성의 값이 0 인 경우 Empty 처리 + if( item.getOccMin() == 0 && item.getOccMax() == 1 ) { + if( item.getValue() == null ) continue; + if( item.getValue() instanceof String && "".equals(((String)item.getValue()).trim()) ) continue; + if( item.getValue() instanceof byte[] && "".equals(new String((byte[])item.getValue()).trim()) ) continue; + if( item.getValue() instanceof Number && ((Number)item.getValue()).floatValue() == 0.0f ) continue; + } + + switch (item.getNodeTypeId()) { + case NODE_ATTR: + if (isMask && "Y".equals(item.getMask())) { + parent.addAttribute(item.getName(), maskString2(item.getValue().toString(), item.getMaskLength(), item.getMaskOffset())); + } else { + if (item.getValue() == null) { + parent.addAttribute(item.getName(), ""); + } + else { + parent.addAttribute(item.getName(), item.getValue().toString()); + } + } + break; + + case NODE_FIELD: + // XML에서 Attribute 가 있는 Element의 Content를 + // layout에서 특정 이름(ELEMENT_CONTENT)의 child Field로 정의할경우 + if (StringUtils.equals(item.getName(), ELEMENT_CONTENT_LAYOUT_NAME)) { + // parent content부에 셋팅한다. + if (item.getValue() == null) { + parent.addText(""); + } else { + if (isMask && "Y".equals(item.getMask())) { + parent.addText(maskString2(item.getValue().toString(), item.getMaskLength())); + } else { + Object value = item.getValue(); + if (value instanceof String) { + parent.addText((String) value); + } else if (value instanceof byte[]) { + parent.addText(new String((byte[]) value)); + } else if (value instanceof BigDecimal) { + parent.addText(((BigDecimal) value).toPlainString()); + } else if (value instanceof Integer) { + parent.addText(String.valueOf(value)); + } + } + } + + continue; + } + + current = parent.addElement(item.getName()); + if(paths != null ) { + paths = paths.trim(); + String[] path = paths.split(" "); + for(int i=0; i 0) { + if(path[i].startsWith(NAMESPACE_PREFIX)) { + String prefix = path[i].substring(path[i].indexOf(NAMESPACE_PREFIX)+6, path[i].indexOf("=\"")); + String nspath = path[i].substring(path[i].indexOf("=\"")+2, path[i].length()-1); + if (!"xsi".equals(prefix)){ + Namespace ns = new Namespace(prefix,nspath); + QName qn = new QName(item.getName(),ns); + current.setQName(qn); + } + } + } + } + } + + /** + * Null인 경우 ""로 데이터를 Set하도록 한다 + */ + if(item.getValue() == null) { + current.addText(""); + } else { + if (isMask && "Y".equals(item.getMask())) { + current.addText(maskString2(item.getValue().toString(), item.getMaskLength())); + } else { + Object value = item.getValue(); + if (value instanceof String){ + current.addText((String)value); + } else if (value instanceof byte[]){ + current.addText(new String((byte[])value)); + } else if ( value instanceof BigDecimal) { + current.addText(((BigDecimal) value).toPlainString()); + } else if ( value instanceof Integer) { + current.addText(String.valueOf(value)); + } + } + } + break; + + case NODE_GROUP: + // GROUP has Value, in some case + current = parent.addElement(item.getName()); + String itemPaths = item.getPath(); + if(itemPaths != null ) { + itemPaths = itemPaths.trim(); + String[] path = itemPaths.split(" "); + for(int i=0; i 0) { + if(path[i].startsWith("xmlns:")) { + String prefix = path[i].substring(path[i].indexOf("xmlns:")+6, path[i].indexOf("=\"")); + String nspath = path[i].substring(path[i].indexOf("=\"")+2, path[i].length()-1); + if (!"xsi".equals(prefix)){ + Namespace ns = new Namespace(prefix,nspath); + QName qn = new QName(item.getName(),ns); + current.setQName(qn); + } + } + else if(path[i].indexOf("=\"") > -1) { + String nspath = path[i].substring(path[i].indexOf("=\"")+2, path[i].length()-1); + Namespace ns = new Namespace("",nspath); + QName qn = new QName(item.getName(),ns); + current.setQName(qn); + } + } + } + } + + /** + * - Null인 경우 ""로 데이터를 Set하도록 한다. + */ + if(item.getValue() == null) { + current.addText(""); + } else { + if (isMask && "Y".equals(item.getMask())) { + current.addText(maskString2(item.getValue().toString(), item.getMaskLength())); + } else { + Object value = item.getValue(); + if (value instanceof String){ + current.addText((String)value); + } else if (value instanceof byte[]){ + current.addText(new String((byte[])value)); + } else if ( value instanceof BigDecimal) { + current.addText(((BigDecimal) value).toPlainString()); + } else if ( value instanceof Integer) { + current.addText(String.valueOf(value)); + } + } + } + // 그룹의 Child가 있는 경우에만 + if(item.getChildCount() > 0){ + stack.push(current); + } + break; + case NODE_MESSAGE: + current = parent.addElement(item.getName()); + if(paths != null) { + paths = paths.trim(); + String[] path = paths.split(" "); + for(int i=0; i 0) { + if(path[i].startsWith("xmlns:")) { + String prefix = path[i].substring(path[i].indexOf("xmlns:")+6, path[i].indexOf("=\"")); + String nspath = path[i].substring(path[i].indexOf("=\"")+2, path[i].length()-1); + current.addNamespace(prefix, nspath); + if (!"xsi".equals(prefix)){ + Namespace ns = new Namespace(prefix,nspath); + QName qn = new QName(item.getName(),ns); + current.setQName(qn); + } + + } + } + } + } + stack.push(current); + break; + default : + break; + } // end switch + } + + return rootElement; + } + + private String getHeader() { + return getName() + " (" + MESSAGE_NAME + ")"; + } + + @Override + public String toString() { + String xmlString = null; + try { + xmlString = (String)getData(); + } catch (Exception e) { + logger.error( MESSAGE_NAME + " : " + e.getMessage(), e); + } + + StringBuilder sb = new StringBuilder(); + sb.append(getHeader()); + sb.append(super.toString()); + if (xmlString != null) { + sb.append("\n" + Constants.TAB + " | data = \n" + xmlString + ""); + } + sb.append("\n" + Constants.TAB + " +--------------------------------------------------------------------------------------------------+"); + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/data/DataNode.java b/src/main/java/com/eactive/eai/transformer/message/data/DataNode.java new file mode 100644 index 0000000..5cee0ed --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/data/DataNode.java @@ -0,0 +1,104 @@ +package com.eactive.eai.transformer.message.data; + +import java.util.ArrayList; +import java.util.Iterator; + +public class DataNode { + private String name; + private int typeId; + + // Lazy Initialization + private ArrayList childList; + private ArrayList dataList; + + public DataNode(String name, int typeId) { + this.name = name; + this.typeId = typeId; + } + + public String getName() { + return name; + } + + public int getTypeId() { + return typeId; + } + + public DataNode addData(Object data) { + if (dataList == null) { + dataList = new ArrayList<>(); + } + + dataList.add(data); + + return this; + } + + public Object getData(int i) { + if (dataList == null) { + return null; + } + + return dataList.get(i); + } + + public int getDataCount() { + return ((dataList == null) ? 0 : dataList.size()); + } + + @SuppressWarnings("rawtypes") + public Iterator getDataIterator() { + return ((dataList == null) ? null : dataList.iterator()); + } + + public boolean hasData() { + return (dataList != null); + } + + public DataNode addNode(DataNode node) { + if (childList == null) { + childList = new ArrayList<>(); + } + + childList.add(node); + + return node; + } + + public DataNode getNode(int index) { + if (childList == null) { + return null; + } + + return childList.get(index); + } + + public int getChildCount() { + return ((childList == null) ? 0 : childList.size()); + } + + @SuppressWarnings("rawtypes") + public Iterator getChildIterator() { + return ((childList == null) ? null : childList.iterator()); + } + + public boolean hasChild() { + return (childList != null); + } + + public DataNode findNode(String name) { + if (childList == null) { + return null; + } + + for (Iterator itr = childList.iterator(); itr.hasNext();) { + DataNode childNode = itr.next(); + + if (childNode != null && childNode.getName().equals(name)) { + return childNode; + } + } + + return null; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/data/MessageData.java b/src/main/java/com/eactive/eai/transformer/message/data/MessageData.java new file mode 100644 index 0000000..760e416 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/data/MessageData.java @@ -0,0 +1,110 @@ +//package com.eactive.eai.transformer.message.data; +// +//import java.util.ArrayList; +//import java.util.Iterator; +// +//import com.eactive.eai.common.util.Logger; +// +// +///** +// * 메시지 내부의 데이터를 표현하기 위한 Class. +// * 계층 구조를 가지므로 순회하면서 데이터에 접근해야함. +// * 단, 자식 데이터가 존재할 경우는 해당 노드에 대한 값은 무시됨. +// * 즉, 자식 데이터일 경우만 데이터 값에 대한 접근을 하도록 한다. +// */ +//public class MessageData { +//// private static Logger logger = Logger.getLogger("transformer"); +// +// // Lazy Initialization +// private ArrayList dataList; +// +// public DataNode addDataNode(DataNode node) { +// if (dataList == null) { +// dataList = new ArrayList(); +// } +// +// dataList.add(node); +// +// return node; +// } +// +// public DataNode getDataNode(int index) { +// if (dataList == null) { +// return null; +// } +// +// return (DataNode) dataList.get(index); +// } +// +// public int getDataNodeCount() { +// return ((dataList == null) ? 0 : dataList.size()); +// } +// +// public Iterator getDataNodeIterator() { +// return ((dataList == null) ? null : dataList.iterator()); +// } +// +// public boolean hasChild() { +// return (dataList != null); +// } +// +// public DataNode findDataNode(String name) { +// if (dataList == null) { +// return null; +// } +// +// for (Iterator itr = dataList.iterator(); itr.hasNext();) { +// DataNode childNode = (DataNode) itr.next(); +// +// if (childNode != null && childNode.getName().equals(name)) { +// return childNode; +// } +// } +// +// return null; +// } +// +//// public void debugMessageData() { +//// if (dataList == null) { +//// if(logger.isDebugEnabled()) logger.debug("[DEBUG][MESSAGE DATA] 메시지 데이터 정보가 없습니다."); +//// } else { +//// for (Iterator itr = dataList.iterator(); itr.hasNext();) { +//// DataNode dataNode = (DataNode) itr.next(); +//// debugDataNode(dataNode, 0); +//// } +//// } +//// } +//// +//// private void debugDataNode(DataNode dataNode, int depth) { +//// printDepth(depth); +//// System.out.print("[DATA:" + dataNode.getName() + "] "); +//// +//// int count = dataNode.getDataCount(); +//// +//// for (int i = 0; i < count; i++) { +//// if (i != 0) { +//// System.out.print(", "); +//// } +//// +//// System.out.print(dataNode.getData(i)); +//// } +//// +//// if(logger.isDebugEnabled()) logger.debug("\n"); +//// +//// count = dataNode.getChildCount(); +//// +//// for (int i = 0; i < count; i++) { +//// debugDataNode(dataNode.getNode(i), depth + 1); +//// } +//// } +// +//// private void printDepth(int depth) { +//// for (int i = 0; i < depth; i++) { +//// System.out.print("----"); +//// } +//// +//// if (depth > 0) { +//// System.out.print(" "); +//// } +//// } +//} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/.perms b/src/main/java/com/eactive/eai/transformer/message/generator/.perms new file mode 100644 index 0000000..9ed6bd1 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/.perms @@ -0,0 +1 @@ +default:rwc diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/BytesMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/BytesMessageGenerator.java new file mode 100644 index 0000000..01f96b8 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/BytesMessageGenerator.java @@ -0,0 +1,17 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.BytesMessage; +import com.eactive.eai.transformer.message.Message; + +/** + * 현재는 고정 필드에 대해서만 처리할 수가 있음. + */ +public class BytesMessageGenerator implements MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, boolean useDefault) throws Exception { + BytesMessage message = (BytesMessage) layout.getRootItem(); + message = (BytesMessage) message.clone(); + message.createObject(); + return message; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/CardMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/CardMessageGenerator.java new file mode 100644 index 0000000..5182ad1 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/CardMessageGenerator.java @@ -0,0 +1,14 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.CardMessage; +import com.eactive.eai.transformer.message.Message; + +public class CardMessageGenerator implements MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, boolean useDefault) throws Exception { + CardMessage message = (CardMessage) layout.getRootItem(); + message = (CardMessage) message.clone(); + message.createObject(); + return message; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/CommonBytesMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/CommonBytesMessageGenerator.java new file mode 100644 index 0000000..ee24a34 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/CommonBytesMessageGenerator.java @@ -0,0 +1,14 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.CommonBytesMessage; +import com.eactive.eai.transformer.message.Message; + +public class CommonBytesMessageGenerator implements MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, boolean useDefault) throws Exception { + CommonBytesMessage message = (CommonBytesMessage) layout.getRootItem(); + message = (CommonBytesMessage) message.clone(); + message.createObject(); + return message; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/CommonEbcdicMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/CommonEbcdicMessageGenerator.java new file mode 100644 index 0000000..1c664e5 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/CommonEbcdicMessageGenerator.java @@ -0,0 +1,15 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.CommonEbcdicMessage; +import com.eactive.eai.transformer.message.Message; + +public class CommonEbcdicMessageGenerator implements MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, + boolean useDefault) throws Exception { + CommonEbcdicMessage message = (CommonEbcdicMessage) layout.getRootItem(); + message = (CommonEbcdicMessage) message.clone(); + message.createObject(); + return message; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/DelimiterMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/DelimiterMessageGenerator.java new file mode 100644 index 0000000..54f1f02 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/DelimiterMessageGenerator.java @@ -0,0 +1,14 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.DelimiterMessage; +import com.eactive.eai.transformer.message.Message; + +public class DelimiterMessageGenerator implements MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, boolean useDefault) throws Exception { + DelimiterMessage message = (DelimiterMessage) layout.getRootItem(); + message = (DelimiterMessage) message.clone(); + message.createObject(); + return message; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/EbcdicMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/EbcdicMessageGenerator.java new file mode 100644 index 0000000..c3ca293 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/EbcdicMessageGenerator.java @@ -0,0 +1,15 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.EbcdicMessage; +import com.eactive.eai.transformer.message.Message; + +public class EbcdicMessageGenerator implements MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, + boolean useDefault) throws Exception { + EbcdicMessage message = (EbcdicMessage) layout.getRootItem(); + message = (EbcdicMessage) message.clone(); + message.createObject(); + return message; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/FMLMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/FMLMessageGenerator.java new file mode 100644 index 0000000..aaad969 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/FMLMessageGenerator.java @@ -0,0 +1,34 @@ +package com.eactive.eai.transformer.message.generator; +//package com.eactive.eai.transformer.message.generator; +// +//import com.eactive.eai.common.util.Logger; +//import com.eactive.eai.transformer.layout.Layout; +//import com.eactive.eai.transformer.message.FMLMessage; +//import com.eactive.eai.transformer.message.Message; +// +// +//public class FMLMessageGenerator implements MessageGenerator { +// private static Logger logger = Logger.getLogger("transformer"); +// +// public Message createMessage(Layout layout, boolean initialize, +// boolean useDefault) throws Exception { +// //FMLMessage message = new FMLMessage(layout); +// FMLMessage message = (FMLMessage) layout.getRootItem(); +// +// message = (FMLMessage) message.clone(); +// +// message.createObject(); +// +// // 튜닝 - 이걸 LayoutManager 에서 생성할 때 해버린다. +// /* +// if (initialize) { +// if (useDefault) { +// message.initDefaultValue(); +// } +// message.initOccMin(); +// } +// */ +// +// return message; +// } +//} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/FullBytesMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/FullBytesMessageGenerator.java new file mode 100644 index 0000000..e67ecb9 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/FullBytesMessageGenerator.java @@ -0,0 +1,14 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.FullBytesMessage; +import com.eactive.eai.transformer.message.Message; + +public class FullBytesMessageGenerator implements MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, boolean useDefault) throws Exception { + FullBytesMessage message = (FullBytesMessage) layout.getRootItem(); + message = (FullBytesMessage) message.clone(); + message.createObject(); + return message; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/HJSONMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/HJSONMessageGenerator.java new file mode 100644 index 0000000..932f4b7 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/HJSONMessageGenerator.java @@ -0,0 +1,17 @@ +//package com.eactive.eai.transformer.message.generator; +// +//import com.eactive.eai.transformer.layout.Layout; +//import com.eactive.eai.transformer.message.HJSONMessage; +//import com.eactive.eai.transformer.message.Message; +// +//public class HJSONMessageGenerator implements MessageGenerator { +// public Message createMessage(Layout layout, boolean initialize, +// boolean useDefault) throws Exception { +// HJSONMessage message = (HJSONMessage) layout.getRootItem(); +// message = (HJSONMessage) message.clone(); +// +// message.createObject(); +// +// return message; +// } +//} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/JSONMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/JSONMessageGenerator.java new file mode 100644 index 0000000..c95ed3b --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/JSONMessageGenerator.java @@ -0,0 +1,15 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.JSONMessage; +import com.eactive.eai.transformer.message.Message; + +public class JSONMessageGenerator implements MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, + boolean useDefault) throws Exception { + JSONMessage message = (JSONMessage) layout.getRootItem(); + message = (JSONMessage) message.clone(); + message.createObject(); + return message; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/MessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/MessageGenerator.java new file mode 100644 index 0000000..2f3372f --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/MessageGenerator.java @@ -0,0 +1,9 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.Message; + +public interface MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, + boolean useDefault) throws Exception; +} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/MonitoringVBytesMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/MonitoringVBytesMessageGenerator.java new file mode 100644 index 0000000..68d9b52 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/MonitoringVBytesMessageGenerator.java @@ -0,0 +1,17 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MonitoringVBytesMessage; + +/** + * MonitoringVBytesMessage 에 대한 생성 + */ +public class MonitoringVBytesMessageGenerator implements MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, boolean useDefault) throws Exception { + MonitoringVBytesMessage message = (MonitoringVBytesMessage) layout.getRootItem(); + message = (MonitoringVBytesMessage) message.clone(); + message.createObject(); + return message; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/MonitoringVEbcdicMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/MonitoringVEbcdicMessageGenerator.java new file mode 100644 index 0000000..3c0f398 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/MonitoringVEbcdicMessageGenerator.java @@ -0,0 +1,17 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MonitoringVEbcdicMessage; + +/** + * MonitoringVEbcdicMessage 에 대한 생성 + */ +public class MonitoringVEbcdicMessageGenerator implements MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, boolean useDefault) throws Exception { + MonitoringVEbcdicMessage message = (MonitoringVEbcdicMessage) layout.getRootItem(); + message = (MonitoringVEbcdicMessage) message.clone(); + message.createObject(); + return message; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/ObjectMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/ObjectMessageGenerator.java new file mode 100644 index 0000000..d08dd16 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/ObjectMessageGenerator.java @@ -0,0 +1,15 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.ObjectMessage; + +public class ObjectMessageGenerator implements MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, + boolean useDefault) throws Exception { + ObjectMessage message = (ObjectMessage) layout.getRootItem(); + message = (ObjectMessage) message.clone(); + message.createObject(); + return message; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/OddBytesMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/OddBytesMessageGenerator.java new file mode 100644 index 0000000..94ecfa8 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/OddBytesMessageGenerator.java @@ -0,0 +1,14 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.OddBytesMessage; + +public class OddBytesMessageGenerator implements MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, boolean useDefault) throws Exception { + OddBytesMessage message = (OddBytesMessage) layout.getRootItem(); + message = (OddBytesMessage) message.clone(); + message.createObject(); + return message; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/UJSONMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/UJSONMessageGenerator.java new file mode 100644 index 0000000..52e07c6 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/UJSONMessageGenerator.java @@ -0,0 +1,17 @@ +//package com.eactive.eai.transformer.message.generator; +// +//import com.eactive.eai.transformer.layout.Layout; +//import com.eactive.eai.transformer.message.Message; +//import com.eactive.eai.transformer.message.UJSONMessage; +// +//public class UJSONMessageGenerator implements MessageGenerator { +// public Message createMessage(Layout layout, boolean initialize, +// boolean useDefault) throws Exception { +// UJSONMessage message = (UJSONMessage) layout.getRootItem(); +// message = (UJSONMessage) message.clone(); +// +// message.createObject(); +// +// return message; +// } +//} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/UXMLMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/UXMLMessageGenerator.java new file mode 100644 index 0000000..4c13d83 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/UXMLMessageGenerator.java @@ -0,0 +1,15 @@ +//package com.eactive.eai.transformer.message.generator; +// +//import com.eactive.eai.transformer.layout.Layout; +//import com.eactive.eai.transformer.message.Message; +//import com.eactive.eai.transformer.message.UXMLMessage; +// +//public class UXMLMessageGenerator implements MessageGenerator { +// public Message createMessage(Layout layout, boolean initialize, +// boolean useDefault) throws Exception { +// UXMLMessage message = (UXMLMessage) layout.getRootItem(); +// message = (UXMLMessage) message.clone(); +// message.createObject(); +// return message; +// } +//} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/VariableBytesMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/VariableBytesMessageGenerator.java new file mode 100644 index 0000000..9aaaf9f --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/VariableBytesMessageGenerator.java @@ -0,0 +1,14 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.VariableBytesMessage; + +public class VariableBytesMessageGenerator implements MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, boolean useDefault) throws Exception { + VariableBytesMessage message = (VariableBytesMessage) layout.getRootItem(); + message = (VariableBytesMessage) message.clone(); + message.createObject(); + return message; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/VariableEbcdicMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/VariableEbcdicMessageGenerator.java new file mode 100644 index 0000000..d7da9a6 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/VariableEbcdicMessageGenerator.java @@ -0,0 +1,14 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.VariableEbcdicMessage; + +public class VariableEbcdicMessageGenerator implements MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, boolean useDefault) throws Exception { + VariableEbcdicMessage message = (VariableEbcdicMessage) layout.getRootItem(); + message = (VariableEbcdicMessage) message.clone(); + message.createObject(); + return message; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/VariableFieldMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/VariableFieldMessageGenerator.java new file mode 100644 index 0000000..2483098 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/VariableFieldMessageGenerator.java @@ -0,0 +1,14 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.VariableFieldMessage; + +public class VariableFieldMessageGenerator implements MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, boolean useDefault) throws Exception { + VariableFieldMessage message = (VariableFieldMessage) layout.getRootItem(); + message = (VariableFieldMessage) message.clone(); + message.createObject(); + return message; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/generator/XMLMessageGenerator.java b/src/main/java/com/eactive/eai/transformer/message/generator/XMLMessageGenerator.java new file mode 100644 index 0000000..8e6676f --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/generator/XMLMessageGenerator.java @@ -0,0 +1,15 @@ +package com.eactive.eai.transformer.message.generator; + +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.XMLMessage; + +public class XMLMessageGenerator implements MessageGenerator { + public Message createMessage(Layout layout, boolean initialize, + boolean useDefault) throws Exception { + XMLMessage message = (XMLMessage) layout.getRootItem(); + message = (XMLMessage) message.clone(); + message.createObject(); + return message; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/logger/BytesMessageLogger.java b/src/main/java/com/eactive/eai/transformer/message/logger/BytesMessageLogger.java new file mode 100644 index 0000000..c6ff734 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/logger/BytesMessageLogger.java @@ -0,0 +1,55 @@ +package com.eactive.eai.transformer.message.logger; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.message.BytesMessage; +import com.eactive.eai.transformer.message.InvalidDataTypeException; +import com.eactive.eai.transformer.util.IConv; + + +public class BytesMessageLogger implements MessageLogger { + private static Logger logger = Logger.getLogger("transformer"); + private BytesMessage message; + + public BytesMessageLogger(BytesMessage message) { + this.message = message; + } + + public void doLog() { + if(logger.isDebugEnabled()) logger.debug(this.getClass().getName() + + "> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + if(logger.isDebugEnabled()) logger.debug(this.getClass().getName() + + "> 현재 기본 구현된 메시지 로거를 사용하고 계십니다."); + if(logger.isDebugEnabled()) logger.debug(getLogMessage()); + } + + public String getLogMessage() { + byte[] buff = null; + + try { + buff = (byte[]) this.message.getData(); + + return new String(buff); + } catch (InvalidDataTypeException e) { + throw new RuntimeException( + "BytesMessageLogger] Cannot make LogMessage. - " + + e.getMessage()); + } + } + + /** + * 로그 메시지 생성 + */ + public String getLogMessage(boolean ebcdic) { + byte[] buff = null; + + try { + buff = (byte[]) this.message.getData(); + + return IConv.ebcdicToASCII(buff); + } catch (InvalidDataTypeException e) { + throw new RuntimeException( + "BytesMessageLogger] Cannot make LogMessage. - " + + e.getMessage()); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/logger/FMLMessageLogger.java b/src/main/java/com/eactive/eai/transformer/message/logger/FMLMessageLogger.java new file mode 100644 index 0000000..2d4722c --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/logger/FMLMessageLogger.java @@ -0,0 +1,132 @@ +package com.eactive.eai.transformer.message.logger; +//package com.eactive.eai.transformer.message.logger; +// +//import com.eactive.eai.common.util.Logger; +//import com.eactive.eai.transformer.layout.Item; +//import com.eactive.eai.transformer.message.FMLMessage; +// +// +//public class FMLMessageLogger implements MessageLogger { +// private static Logger logger = Logger.getLogger("transformer"); +// private FMLMessage message; +// +// public FMLMessageLogger(FMLMessage message) { +// this.message = message; +// } +// +// public void doLog() { +// System.out.println(this.getClass().getName() + +// "> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); +// System.out.println(this.getClass().getName() + +// "> 현재 기본 구현된 메시지 로거를 사용하고 계십니다."); +// System.out.println(getLogMessage()); +// } +// +// public String getLogMessage() { +// return null; +// +// /* +// StringBuffer sb = new StringBuffer(); +// Item root = this.message; +// List lst = null; +// try { +// lst = root.getChildList(); +// Item item = null; +// for(int i=0;i !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + logger.info(this.getClass().getName() + + "> 현재 기본 구현된 메시지 로거를 사용하고 계십니다."); + logger.info(getLogMessage()); + } + + public String getLogMessage() { + return this.message.getClass().getName(); + } + + public String getLogMessage(boolean ebcdic) { + return getLogMessage(); + } + + public String toString(Item item) throws Exception { + return null; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/message/logger/XMLMessageLogger.java b/src/main/java/com/eactive/eai/transformer/message/logger/XMLMessageLogger.java new file mode 100644 index 0000000..6d97e71 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/message/logger/XMLMessageLogger.java @@ -0,0 +1,36 @@ +package com.eactive.eai.transformer.message.logger; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.message.XMLMessage; + + +public class XMLMessageLogger implements MessageLogger { + private static Logger logger = Logger.getLogger("transformer"); + private XMLMessage message; + + public XMLMessageLogger(XMLMessage message) { + this.message = message; + } + + public void doLog() { + logger.info(this.getClass().getName() + + "> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); + logger.info(this.getClass().getName() + + "> 현재 기본 구현된 메시지 로거를 사용하고 계십니다."); + logger.info(getLogMessage()); + } + + public String getLogMessage(boolean ebcdic) { + return getLogMessage(); + } + + public String getLogMessage() { + try { + return this.message.toLogString(); + } catch (Exception e) { + throw new RuntimeException( + "XMLMessageLogger] Cannot make LogMessage. - " + + e.getMessage()); + } + } +} diff --git a/src/main/java/com/eactive/eai/transformer/transform/DefaultValue.java b/src/main/java/com/eactive/eai/transformer/transform/DefaultValue.java new file mode 100644 index 0000000..4e70421 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/transform/DefaultValue.java @@ -0,0 +1,92 @@ +package com.eactive.eai.transformer.transform; + +import com.eactive.eai.transformer.layout.Item; + +public class DefaultValue { + private int valueId; + private int transformId; + private String itemPath; + private int itemId; + private String description; + private int typeId; + private Object value; + private Item item; + + public int getValueId() { + return valueId; + } + + public void setValueId(int valueId) { + this.valueId = valueId; + } + + public int getTransformId() { + return transformId; + } + + public void setTransformId(int transformId) { + this.transformId = transformId; + } + + public String getItemPath() { + return itemPath; + } + + public void setItemPath(String itemPath) { + this.itemPath = itemPath; + } + + public int getItemId() { + return itemId; + } + + public void setItemId(int itemId) { + this.itemId = itemId; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getTypeId() { + return typeId; + } + + public void setTypeId(int typeId) { + this.typeId = typeId; + } + + public Object getValue() { + return value; + } + + public void setValue(Object value) { + this.value = value; + } + + public Item getItem() { + return item; + } + + public void setItem(Item item) { + this.item = item; + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("DefaultValue[ valueId=").append(valueId); + sb.append(", transformId=").append(transformId); + sb.append(", itemPath=").append(itemPath); + sb.append(", itemId=").append(itemId); + sb.append(", value=").append(value); + sb.append(", typeId=").append(typeId); + sb.append(", description=").append(description); + sb.append(" ]"); + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/transform/Transform.java b/src/main/java/com/eactive/eai/transformer/transform/Transform.java new file mode 100644 index 0000000..c771e41 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/transform/Transform.java @@ -0,0 +1,184 @@ +package com.eactive.eai.transformer.transform; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import com.eactive.eai.transformer.dao.LoadingUnit; +import com.eactive.eai.transformer.layout.Layout; + +public class Transform extends LoadingUnit { + private static final long serialVersionUID = 1L; + public static final String TARGET_LAYOUT = "TGT_LAYOUT"; + public static final String SOURCE_LAYOUT = "SRC_LAYOUT"; + private String name; + private String description; + private String lastUpdateDate; + private String eAISevrDstcd; + private String modfiMgtStusDstcd; + private String useYn; + private Layout targetLayout; + private Map sourceLayoutMap; + private List sourceLayoutList; + private List transformItemList; + + public Transform() { + this(""); + } + + public Transform(String name) { + this.name = name; + this.sourceLayoutMap = new HashMap<>(); + this.sourceLayoutList = new ArrayList<>(); + this.transformItemList = new ArrayList<>(); + } + + public void setName(String name) { + this.name = name; + } + + public String getName() { + return this.name; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getDescription() { + return this.description; + } + + public String getLastUpdateDate() { + return this.lastUpdateDate; + } + + public void setLastUpdateDate(String lastUpdateDate) { + this.lastUpdateDate = lastUpdateDate; + } + + public String getEAISevrDstcd() { + return eAISevrDstcd; + } + + public void setEAISevrDstcd(String eAISevrDstcd) { + this.eAISevrDstcd = eAISevrDstcd; + } + + public String getModfiMgtStusDstcd() { + return modfiMgtStusDstcd; + } + + public void setModfiMgtStusDstcd(String modfiMgtStusDstcd) { + this.modfiMgtStusDstcd = modfiMgtStusDstcd; + } + + public String getUseYn() { + return useYn; + } + + public void setUseYn(String useYn) { + this.useYn = useYn; + } + + public void setTargetLayout(Layout targetLayout) { + this.targetLayout = targetLayout; + } + + public Layout getTargetLayout() { + return this.targetLayout; + } + + public void addSourceLayout(Layout layout) { + this.sourceLayoutMap.put(layout.getName(), layout); + this.sourceLayoutList.add(layout); + } + + public Iterator getSourceLayouts() { + return sourceLayoutMap.values().iterator(); + } + + public Layout getSourceLayout(String name) { + return this.sourceLayoutMap.get(name); + } + + public Layout getSourceLayout(int idx) { + return this.sourceLayoutList.get(idx); + } + + public int getSourceLayoutCount() { + return this.sourceLayoutMap.size(); + } + + public Iterator getSourceLayoutNames() { + return this.sourceLayoutMap.keySet().iterator(); + } + + public void addTransformItem(TransformItem item) { + this.transformItemList.add(item); + } + + public List getTransformItemList() { + return this.transformItemList; + } + + public TransformItem getTransformItem(int idx) { + return this.transformItemList.get(idx); + } + + public int getTransformItemCount() { + return this.transformItemList.size(); + } + + public String summary() { + StringBuilder sb = new StringBuilder(); + + sb.append("Transform (").append(name).append(") from ("); + for (int i = 0; i < sourceLayoutList.size(); i++) { + sb.append("," + sourceLayoutList.get(i).getName()); + } + sb.append(") to ("); + + if (targetLayout != null) { + sb.append(targetLayout.getName()); + } + + sb.append(")"); + + for (int i = 0; i < transformItemList.size(); i++) { + TransformItem transformItem = transformItemList.get(i); + sb.append("\n Transform Rule Expression : " + transformItem.getResultItemPath() + " = " + transformItem.getInstruction()); + } + + return sb.toString(); + } + + public String toString(String tab) { + StringBuilder sb = new StringBuilder(); + sb.append(tab); + sb.append("+ Transform[name=").append(name); + sb.append(", description=").append(description); + + for (int i = 0; i < sourceLayoutList.size(); i++) { + sb.append(", source[" + i + "]=" + sourceLayoutList.get(i).getName()); + } + + if (targetLayout != null) { + sb.append(", target=" + targetLayout.getName()); + } + + sb.append("]"); + + for (int i = 0; i < transformItemList.size(); i++) { + sb.append("\n - " + transformItemList.get(i).toString(tab + tab)); + } + + return sb.toString(); + } + + public String toString() { + return toString(""); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/transform/TransformItem.java b/src/main/java/com/eactive/eai/transformer/transform/TransformItem.java new file mode 100644 index 0000000..d014455 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/transform/TransformItem.java @@ -0,0 +1,77 @@ +package com.eactive.eai.transformer.transform; + +import java.io.Serializable; + +public class TransformItem implements Serializable { + private static final long serialVersionUID = 1L; + private Transform transform; + private String resultItemPath; + private String instruction; + private String defaultValue; + private int seqNo; + + public TransformItem() { + super(); + } + + public void setTransform(Transform transform) { + this.transform = transform; + } + + public Transform getTransform() { + return this.transform; + } + + public void setResultItemPath(String resultItemPath) { + this.resultItemPath = resultItemPath; + } + + public String getResultItemPath() { + return this.resultItemPath; + } + + public void setInstruction(String instruction) { + this.instruction = instruction; + } + + public String getInstruction() { + return this.instruction; + } + + public void setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + } + + public String getDefaultValue() { + return this.defaultValue; + } + + public void setSeqNo(int seqNo) { + this.seqNo = seqNo; + } + + public int getSeqNo() { + return this.seqNo; + } + + public String toString(String tab) { + StringBuilder sb = new StringBuilder(); + sb.append(tab); + sb.append("TransformItem : "); + sb.append(resultItemPath); + sb.append(" = ").append(instruction); + + /** + * default value + */ + if (defaultValue != null && !"".equals(defaultValue)) { + sb.append("(default='").append(defaultValue).append("')"); + } + + return sb.toString(); + } + + public String toString() { + return toString(""); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/transform/TransformManager.java b/src/main/java/com/eactive/eai/transformer/transform/TransformManager.java new file mode 100644 index 0000000..0ca1e25 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/transform/TransformManager.java @@ -0,0 +1,202 @@ +package com.eactive.eai.transformer.transform; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.TreeSet; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +import com.eactive.eai.common.lifecycle.Lifecycle; +import com.eactive.eai.common.lifecycle.LifecycleException; +import com.eactive.eai.common.lifecycle.LifecycleListener; +import com.eactive.eai.common.lifecycle.LifecycleSupport; +import com.eactive.eai.common.util.ApplicationContextProvider; +import com.eactive.eai.transformer.dao.jdbc.TransformJdbcDao; +import com.eactive.eai.transformer.util.Constants; +import com.eactive.eai.transformer.util.Logger; +import com.eactive.eai.transformer.util.MemoryLogger; + +@Component +public class TransformManager implements Lifecycle { + private static Logger logger = Logger.getLogger("transformer"); + private LifecycleSupport lifecycleSupport = null; + private boolean started; + private Map transformMap; + + @Autowired + private TransformJdbcDao transformJdbcDao; + + protected TransformManager() { + transformMap = new HashMap<>(); + lifecycleSupport = new LifecycleSupport(this); + } + + public static TransformManager getManager() { + return ApplicationContextProvider.getContext().getBean(TransformManager.class); + } + + public synchronized void reload() { + init(); + logger.info("TransformManager | all transforms are reloaded"); + MemoryLogger.txlog("TransformManager | all transforms are reloaded"); + } + + public synchronized void reload(String transformName) { + Transform transform = transformJdbcDao.findTransformByName(transformName); + if ("1".equals(transform.getUseYn())){ + transformMap.put(transformName, transform); + }else{ + logger.warn("reload Transrform["+transformName+"] useYn["+transform.getUseYn()+"] removed"); + transformMap.remove(transformName); + } + + logger.info("TransformManager | reloaded - " + transformName); + MemoryLogger.txlog("transform reloaded - " + transform.toString()); + } + + public synchronized void remove(String transformName) { + transformMap.remove(transformName); + } + + public String[] getAllTransformName() { + Iterator it = transformMap.keySet().iterator(); + + String[] keys = new String [transformMap.size()]; + + for (int i=0; i getTransforms() { + return transformMap; + } + + public Transform getTransform(String transformName) { + if(transformName == null) { + return null; + } + return transformMap.get(transformName); + } + + public Set getTransformNameSet() { + return new TreeSet<>(transformMap.keySet()); + } + + private void clear() { + transformMap.clear(); + } + + private void init() { + try { + logger.info("TransformManager | init() start"); + + logger.info("TransformManager | dao.load() start"); + + transformMap = transformJdbcDao.load(); + + logger.info("TransformManager | dao.load() done"); + + ExecutorService executor = new ThreadPoolExecutor(10, 10, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>()); + final CountDownLatch latch = new CountDownLatch(transformMap.size()); + + for (final Iterator it = transformMap.keySet().iterator(); it.hasNext();) { + final String transformName = it.next(); + + Runnable runnableTask = () -> { + Transform transform = null; + try { + transform = transformMap.get(transformName); + TransformValidator.validate(transform,false); + } catch(Exception e) { + logger.error("TransformManager | validate failed - " + transformName, e); + MemoryLogger.error("TransformManager | validate failed - " + transformName, e); + } finally { + latch.countDown(); + } + }; + executor.execute(runnableTask); + + } + latch.await(); + executor.shutdown(); + + logger.info("TransformManager | all transfroms are initialized - transformMap size[" + + transformMap.size()+"]"); + MemoryLogger.txlog("TransformManager | all transfroms are initialized"); + } catch (InterruptedException e) { + logger.error("TransformManager | transforms initialization failed", e); + Thread.currentThread().interrupt(); + } catch(Exception e) { + logger.error("TransformManager | transforms initialization failed", e); + MemoryLogger.error("TransformManager | transforms initialization failed", e); + } + } + + public void init(Map transformMap) { + this.transformMap = transformMap; + TransformValidator.validate(transformMap); + } + + public void addLifecycleListener(LifecycleListener listener) { + lifecycleSupport.addLifecycleListener(listener); + } + + public LifecycleListener[] findLifecycleListeners() { + return lifecycleSupport.findLifecycleListeners(); + } + + public void removeLifecycleListener(LifecycleListener listener) { + lifecycleSupport.removeLifecycleListener(listener); + } + + public synchronized void start() throws LifecycleException { + try { + init(); + this.started = true; + } catch (Exception e) { + throw new LifecycleException(e); + } + } + + public synchronized void stop() throws LifecycleException { + try { + clear(); + this.started = false; + } catch (Exception e) { + throw new LifecycleException(e); + } + } + + public boolean isStarted() { + return this.started; + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("TransformManager | toString() - \n"); + + Object[] keys = transformMap.keySet().toArray(); + + for (int i = 0; i < transformMap.size(); i++) { + Transform t = transformMap.get(keys[i]); + if(t != null) + sb.append("\n" + t.toString(Constants.TAB)); + } + + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/transform/TransformValidator.java b/src/main/java/com/eactive/eai/transformer/transform/TransformValidator.java new file mode 100644 index 0000000..f482db3 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/transform/TransformValidator.java @@ -0,0 +1,362 @@ +package com.eactive.eai.transformer.transform; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import com.eactive.eai.transformer.TransformerException; +import com.eactive.eai.transformer.engine.Parser; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.Layout; +import com.eactive.eai.transformer.layout.Types; +import com.eactive.eai.transformer.message.InvalidAccessException; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.util.Logger; +import com.eactive.eai.transformer.util.MemoryLogger; + +public class TransformValidator { + private static Logger logger = Logger.getLogger("transformer"); + + private TransformValidator() { + super(); + } + + public static void validate(Map transformMap) { + for (Iterator iter = transformMap.values().iterator(); iter.hasNext();) { + validate((Transform) iter.next(), false); + } + } + + + public static void trasnFormValidate(Map transformMap, Map transFuncMap) { + for (Iterator iter = transformMap.values().iterator(); iter.hasNext();) { + trasnFormValidate((Transform) iter.next(), transFuncMap); + } + } + + /** + * validate transform expression + */ + public static void validate(Transform transform, boolean isBatch) { + List errors = new ArrayList(); + + try { + if (!transform.getTransformItemList().iterator().hasNext()) { +// throw new TransformerException("source layout does not exist"); + throw new TransformerException("전문레이아웃 매핑에 원천 레이아웃이 없습니다."); + } + + if (transform.getTargetLayout() == null) { +// throw new TransformerException("target layout does not exist"); + throw new TransformerException("전문레이아웃 매핑에 타겟 레이아웃이 없습니다."); + } + + for (Iterator iter = transform.getTransformItemList().iterator(); iter.hasNext(); ) { + TransformItem transformItem = (TransformItem) iter.next(); + try { + if(transformItem == null) { + throw new Exception("transformItem is null"); + } + else { + validate(transform, transformItem, isBatch); + } + } catch(Exception e) { + errors.add(e.getMessage()); + } + } + + if (errors.size() > 0) { + StringBuilder sb = new StringBuilder(); + for (Iterator iter2 = errors.iterator(); iter2.hasNext();) { + sb.append(" " + iter2.next()); + if (iter2.hasNext()) { + sb.append("\n"); + } + } + throw new TransformerException(sb.toString()); + } + } catch(Exception e) { + StringBuilder sb = new StringBuilder(); + sb.append("TransformManager | 전문레이아웃 매핑 오류 : "); + sb.append(transform.getName()); + sb.append(" (원천레이아웃 = "); + for (Iterator iter = transform.getSourceLayoutNames(); iter.hasNext(); ) { + sb.append(iter.next()); + sb.append(","); + } + if (transform.getTargetLayout() != null) { + sb.append(" | 타겟레이아웃 = " + transform.getTargetLayout().getName() + ")"); + } + + sb.append(" - \n"); + sb.append(e.getMessage()); + logger.warn(sb.toString()); + MemoryLogger.error(" " + sb.toString()); + } + } + + private static void validate(Transform transform, TransformItem transformItem, boolean isBatch) { + if ("".equals(transformItem.getInstruction().trim())) { + return; + } + + /** + * [1] validate all transform expressions + */ + Parser parser = new Parser(); + + try { + parser.parse(transformItem.getInstruction()); + String[] symbols = parser.getSymbols(); + for (int i=0; i transFuncMap) { + List errors = new ArrayList(); + + try { + if (!transform.getTransformItemList().iterator().hasNext()) { +// throw new TransformerException("source layout does not exist"); + throw new TransformerException("전문레이아웃 매핑에 원천 레이아웃이 없습니다."); + } + + if (transform.getTargetLayout() == null) { +// throw new TransformerException("target layout does not exist"); + throw new TransformerException("전문레이아웃 매핑에 타겟 레이아웃이 없습니다."); + } + + for (Iterator iter = transform.getTransformItemList().iterator(); iter.hasNext(); ) { + TransformItem transformItem = (TransformItem) iter.next(); + try { + trasnFormValidate(transform, transformItem, transFuncMap); + } catch(Exception e) { + errors.add(e.getMessage()); + } + } + + if (errors.size() > 0) { + StringBuilder sb = new StringBuilder(); + for (Iterator iter2 = errors.iterator(); iter2.hasNext();) { + sb.append(" " + iter2.next()); + if (iter2.hasNext()) { + sb.append("\n"); + } + } + throw new TransformerException(sb.toString()); + } + } catch(Exception e) { + StringBuilder sb = new StringBuilder(); +// sb.append("TransformManager | invalid transform rules : "); +// sb.append(transform.getName()); +// sb.append(" (sources = "); +// for (Iterator iter = transform.getSourceLayoutNames(); iter.hasNext(); ) { +// sb.append(iter.next()); +// sb.append(","); +// } +// if (transform.getTargetLayout() != null) { +// sb.append(" | target = " + transform.getTargetLayout().getName() + ")"); +// } + + sb.append("TransformManager | 전문레이아웃 매핑 오류 : "); + sb.append(transform.getName()); + sb.append(" (원천레이아웃 = "); + for (Iterator iter = transform.getSourceLayoutNames(); iter.hasNext(); ) { + sb.append(iter.next()); + sb.append(","); + } + if (transform.getTargetLayout() != null) { + sb.append(" | 타겟레이아웃 = " + transform.getTargetLayout().getName() + ")"); + } + + sb.append(" - \n"); + sb.append(e.getMessage()); + logger.warn(sb.toString()); + MemoryLogger.error(" " + sb.toString()); + } + } + + + private static void trasnFormValidate(Transform transform, TransformItem transformItem, Map transFuncMap) { + if ("".equals(transformItem.getInstruction().trim())) { + return; + } + + /** + * [1] validate all transform expressions + */ + Parser parser = new Parser(); + + try { + parser.parse(transformItem.getInstruction()); + String[] symbols = parser.getSymbols(); + for (int i=0; i { + + @Autowired + private LayoutManager layoutManager; + + @Mapping(source = "cnvsnname", target = "name") + @Mapping(source = "cnvsndesc", target = "description") + @Mapping(source = "useyn", target = "useYn") + @Mapping(source = "transformItemEntities", target = "transformItemList") + public abstract Transform toVo(TransformEntity entity); + + @InheritInverseConfiguration + @Override + public abstract TransformEntity toEntity(Transform vo); + + @AfterMapping + public void mapTargetLayoutAfterMappingEntity(Transform vo, @MappingTarget TransformEntity entity) { + Layout targetLayout = vo.getTargetLayout(); + + TransformTypeEntity transformTypeEntity = new TransformTypeEntity(); + TransformTypeEntityId id = new TransformTypeEntityId(); + id.setCnvsnname(vo.getName()); + id.setLoutname(targetLayout.getName()); + id.setSourcrsultdstcd(Transform.TARGET_LAYOUT); + transformTypeEntity.setId(id); + + transformTypeEntity.setTransformEntity(entity); + + if (entity.getTransformTypeEntities() == null) { + entity.setTransformTypeEntities(new ArrayList<>()); + } + + entity.getTransformTypeEntities().add(transformTypeEntity); + } + + @AfterMapping + public void mapSourceLayoutAfterMappingEntity(Transform vo, @MappingTarget TransformEntity entity) { + + Iterator it = vo.getSourceLayouts(); + while (it.hasNext() ) { + Layout sourceLayout = it.next(); + + TransformTypeEntity transformTypeEntity = new TransformTypeEntity(); + TransformTypeEntityId id = new TransformTypeEntityId(); + id.setCnvsnname(vo.getName()); + id.setLoutname(sourceLayout.getName()); + id.setSourcrsultdstcd(Transform.SOURCE_LAYOUT); + transformTypeEntity.setId(id); + + transformTypeEntity.setTransformEntity(entity); + + entity.getTransformTypeEntities().add(transformTypeEntity); + } + } + + @AfterMapping + public void mapTransformItemListAfterMappingVo(TransformEntity entity, @MappingTarget Transform vo) { + vo.getTransformItemList().stream().forEach(item -> item.setTransform(vo)); + } + + @AfterMapping + public void mapTargetLayoutAfterMappingVo(TransformEntity entity, @MappingTarget Transform vo) { + Stream targetLayoutNames = entity.getTransformTypeEntities().stream() + .filter(targetTransformTypeEntity -> targetTransformTypeEntity.getId().getSourcrsultdstcd() + .equals(Transform.TARGET_LAYOUT)) + .map(targetTransformTypeEntity -> targetTransformTypeEntity.getId().getLoutname()); + + String targetLayoutName = targetLayoutNames.findFirst().orElse(null); + + Layout targetLayout = layoutManager.getLayoutByName(targetLayoutName); + if (targetLayout == null) { + throw new TransformerDaoException( + entity.getCnvsnname() + " - target layout does not exist : " + targetLayoutName); + } + + vo.setTargetLayout(targetLayout); + } + + @AfterMapping + public void mapSourceLayoutAfterMappingVo(TransformEntity entity, @MappingTarget Transform vo) { + Stream sourceLayoutNames = entity.getTransformTypeEntities().stream() + .filter(sourceTransformTypeEntity -> sourceTransformTypeEntity.getId().getSourcrsultdstcd() + .equals(Transform.SOURCE_LAYOUT)) + .map(sourceTransformTypeEntity -> sourceTransformTypeEntity.getId().getLoutname()); + + sourceLayoutNames.forEach(sourceLayoutName -> { + Layout sourceLayout = layoutManager.getLayoutByName(sourceLayoutName); + if (sourceLayout == null) { + throw new TransformerDaoException( + entity.getCnvsnname() + " - source layout does not exist : " + sourceLayoutName); + } + vo.addSourceLayout(sourceLayout); + }); + } + +} diff --git a/src/main/java/com/eactive/eai/transformer/transform/mapper/TransformItemEntityMapper.java b/src/main/java/com/eactive/eai/transformer/transform/mapper/TransformItemEntityMapper.java new file mode 100644 index 0000000..6acf8a6 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/transform/mapper/TransformItemEntityMapper.java @@ -0,0 +1,29 @@ +package com.eactive.eai.transformer.transform.mapper; + +import org.mapstruct.CollectionMappingStrategy; +import org.mapstruct.InheritInverseConfiguration; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.ReportingPolicy; + +import com.eactive.eai.data.entity.onl.transformer.transform.TransformItemEntity; +import com.eactive.eai.data.mapper.GenericMapper; +import com.eactive.eai.transformer.transform.TransformItem; + +@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED) +public interface TransformItemEntityMapper extends GenericMapper { + + + @Mapping(source = "id.cnvsnname", target = "transform.name") + @Mapping(source = "id.cnvsnrsultitempathname", target = "resultItemPath") + @Mapping(source = "cnvsncmdname", target = "instruction") + @Mapping(source = "cnvsnitembascval", target = "defaultValue") + @Mapping(source = "cnvsnitemserno", target = "seqNo") + @Override + TransformItem toVo(TransformItemEntity entity); + + @InheritInverseConfiguration + @Override + TransformItemEntity toEntity(TransformItem vo); + +} diff --git a/src/main/java/com/eactive/eai/transformer/util/ByteUtil.java b/src/main/java/com/eactive/eai/transformer/util/ByteUtil.java new file mode 100644 index 0000000..0268f7e --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/ByteUtil.java @@ -0,0 +1,272 @@ +package com.eactive.eai.transformer.util; + +import java.nio.ByteBuffer; +import java.util.Arrays; + +import org.apache.commons.lang3.time.StopWatch; + +//import com.eactive.eai.adapter.socket2.common.StopWatch; +public class ByteUtil { + + private ByteUtil() { + + } + + public static byte[] cut(byte[] srcBytes, int length) { + if (srcBytes == null) { + return null; + } + + if (srcBytes.length < length) { + StringBuilder sb = new StringBuilder(); +// sb.append("data size가 맞지 않습니다. "); + sb.append("item length=" + length + ", data length=" + srcBytes.length); + throw new RuntimeException(sb.toString()); + } + +// byte[] result = new byte[length]; +// for (int i = 0; i < length; i++) +// result[i] = srcBytes[i]; +// return result; + return Arrays.copyOf(srcBytes, length); + } + + public static byte[] cut(byte[] srcBytes, int start, int length) { + if (srcBytes == null) { + return null; + } + + if (srcBytes.length < (start+length)) { + StringBuilder sb = new StringBuilder(); + sb.append("item start index =" + start + ", item length =" + length + ", total size =" + srcBytes.length); + throw new RuntimeException(sb.toString()); + } + + byte[] result = new byte[length]; + int end = start + length; + int p=0; + for (int i = start; i < end; i++) { + result[p] = srcBytes[i]; + p++; + } + return result; + } + + public static byte[] sub(byte[] srcBytes, int offset) { + if (srcBytes == null) { + return null; + } + byte[] result = new byte[srcBytes.length - offset]; + System.arraycopy(srcBytes, offset, result, 0, result.length); + return result; + } + + public static byte[] padding(String src, int length) { + return padding(src.getBytes(), length); + } + + public static byte[] padding(byte[] srcBytes, int length) { + return paddingright(srcBytes, length, (byte)0x20); + } + + public static byte[] padding(String src, int length, byte pad) { + return paddingright(src.getBytes(), length, pad); + } + + public static byte[] padding(byte[] srcBytes, int length, byte pad) { + return paddingright(srcBytes, length, pad); + } + + + + public static byte[] padding(byte[] srcBytes, int length, byte pad, boolean isNumber) { + if(isNumber) { + return paddingleft(srcBytes, length, pad); + } + else { + return paddingright(srcBytes, length, pad); + } + } + + public static byte[] padding(String src, int length, byte pad, boolean isNumber) { + if(isNumber) { + return paddingleft(src.getBytes(), length, pad); + } + else { + return paddingright(src.getBytes(), length, pad); + } + } + + public static byte[] paddingright(byte[] srcBytes, int length, byte pad) { + if (srcBytes == null) { + srcBytes = new byte[0]; + } + + if (length < 0) throw new RuntimeException("length=" + length); + int secLength = srcBytes.length; + int padding = length - secLength; + + if(padding == 0) { + return srcBytes; + } + else if(padding > 0) { + byte[] result = new byte[length]; + System.arraycopy(srcBytes, 0, result, 0, srcBytes.length); + int offset =srcBytes.length; + for(int i = 0; i AGE) { + this.remove(tuple); + } + } + } catch(Exception e) { + super.clear(); + logger.warn(LOG_PREFIX + e.getMessage()); + } + } + + public static class Tuple { + long time; + String message; + + public Tuple(long time, String message) { + this.time = time; + this.message = message; + } + + public long getTime() { + return time; + } + + public String getMessage() { + return message; + } + } + + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(LOG_PREFIX + "max:" + maxSize() + " size:" + size() + "\n"); + sb.append("---------------------------------------------------------------------------------------------------------------------\n"); + Object[] elements = toArray(); + for (int i=elements.length-1; i>=0; i--) { + if (elements[i] == null) + continue; + sb.append(((String) elements[i]) + "\n"); + } + sb.append("---------------------------------------------------------------------------------------------------------------------\n"); + return sb.toString(); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/util/CommonLib.java b/src/main/java/com/eactive/eai/transformer/util/CommonLib.java new file mode 100644 index 0000000..0d331c2 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/CommonLib.java @@ -0,0 +1,297 @@ +package com.eactive.eai.transformer.util; + + +import java.io.UnsupportedEncodingException; +import java.text.DecimalFormat; +import java.text.MessageFormat; + +import com.eactive.eai.transformer.SystemKeys; + + +/** + * @author janet + * 송수신 메시지 SPEC. + * llzz + syncFlag + user data(전문포맷전체를 사용자 DATA로 본다.) + * - llzz(2BYTE/4BYTE) UNSIGNED INTEGER로 처리한다. -- ConfigurationContext에 저장 + * default는 4byte로 한다. + * - syncFlag - 'S' - R/R, 'A' - ASYNC, 'K' - ACK ONLY(이 경우, SEVER의 ACK를 받는다. + * - llzz+K[ACK|NACK] + * - user data,... + */ +public class CommonLib { + + public static final char SPACE = ' '; + + public static final char ZERO = '0'; + + public static final String EMPTY_STRING = ""; + + private static final String[] EMPTY_STRING_ARRAY = new String[0]; + + private static final int NEGOTIATING_PROTOCOL = 1; + + private static final int PROCESSING_PROTOCOL = 2; + + private static final byte[] SYNC_PROTOCOL_MESSAGE = "SYNC".getBytes(); + + private static final byte[] ASYNC_PROTOCOL_MESSAGE = "ASYN".getBytes(); + + private static final byte[] NACK_MESSAGE = "NACK PROTOCOL VIOLATION".getBytes(); + + private static final byte[] ACK_MESSAGE = "ACK".getBytes(); + + private static final char[] HEX_CHAR_ARRAY = { '0', '1', '2', '3', '4', + '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; + + private CommonLib() { + + } + + /** + * BYTE ARRAY값을 HEXA STRING으로 변환하여 String을 리턴한다. + * @param abyte + * @return + */ + public static String byte2Hex(byte[] abyte) { + /* + StringBuilder s = new StringBuilder(); + if (abyte == null) + return s.toString(); + for (int i = 0; i < abyte.length; i++) + s.append( Integer.toHexString((abyte[i] & 0xf0) >> 4).toUpperCase() ).append( Integer.toHexString(abyte[i] & 0xf).toUpperCase() ); + return s.toString(); + */ + + //------------------------------------------------- + // New Logic from cjw + //------------------------------------------------- + StringBuilder buf = new StringBuilder(); + int len = abyte.length; + + int high = 0; + int low = 0; + for (int i = 0; i < len; i++) { + high = ((abyte[i] & 0xf0) >> 4); + low = (abyte[i] & 0x0f); + buf.append(HEX_CHAR_ARRAY[high]); + buf.append(HEX_CHAR_ARRAY[low]); + } + return buf.toString(); + //------------------------------------------------- + + } + + /** + * HEXA String값을 BYTE ARRAY로 변환한다. + * @param s + * @return + */ + public static byte[] hex2Bytes(String s) { + byte[] abyte = new byte[s.length() / 2]; + for (int j = 0; j < abyte.length; j++) + abyte[j] = (byte) Integer.parseInt(s.substring(2 * j, 2 * j + 2), 16); + return abyte; + } + + /** + * 주어진 String값을 주어진 길이많큼 Padding/Trim한다. + * @param svalue - 입력스트링 + * @param isRightJustify - true이면 RIGHT JUSTIFY, false이면 LEFT JUSTIFY + * @param padding - Padding 문자 + * @param length - 리턴할 스트링의 바이트수 + * @return 포맷팅된 String결과 + */ + public static String stringFormat(String svalue, boolean isRightJustify, char padding, int length) { + if ( svalue == null ) return svalue; + + StringBuilder mpad = new StringBuilder(); + StringBuilder fmtStr = new StringBuilder(); + + String tvalue = svalue; + int pLength = 0; + + pLength = length - svalue.getBytes().length; + + if (pLength == 0) + return svalue; + else if ( pLength < 0) { + byte[] abytes = null; + if (isRightJustify) { + abytes = (new String( svalue.getBytes(), -(pLength), length)).getBytes(); + } else { + abytes = (new String( svalue.getBytes(), 0, length)).getBytes(); + } + + if ( abytes.length == length ) { + return new String( abytes ); + } else { + tvalue = new String( abytes ); + pLength = length - tvalue.length(); + } + } + + for(int i =0; i < pLength ; i++) { + mpad.append( padding ); + } + + if ( isRightJustify ) { + return fmtStr.append(mpad).append(tvalue).toString(); + } else { + return fmtStr.append(tvalue).append(mpad).toString(); + } + } + + public static java.lang.String getFormatString(long value, int length) + { + DecimalFormat df = new DecimalFormat("000000000000000000"); + String fs = df.format( value ); + return fs.substring(fs.length() - length); + } + + public static java.lang.String getFormatString(int value, int length) + { + DecimalFormat df = new DecimalFormat("000000000000000000"); + String fs = df.format((long)value); + return fs.substring(fs.length() - length); + } + + /** + * 메시지 비교 + */ + public static boolean compare(byte[] source, byte[] target) { + if ( source.length != target.length ) return false; + + for ( int i=0; i < source.length; i++ ) { + if ( source[i] != target[i] ) return false; + } + return true; + } + + /** + * 송수신전문에 대한 DUMP를 프린트할 수 있는 포맷으로 변환하여 String Array로 리턴한다. + * @param bytes + * @return + */ + public static String[] makeDumpFormat(byte[] bytes) { + if (bytes == null || bytes.length == 0) + return CommonLib.EMPTY_STRING_ARRAY; + + String[] dumps = new String[bytes.length / 16 + ((bytes.length % 16) == 0 ? 4 : 5)]; + dumps[0] = " +----------------------------------------------------------------------+"; + dumps[1] = " | Offset | 0 1 2 3 4 5 6 7 8 9 A B C D E F | U S E R D A T A |"; + dumps[2] = " |----------+----------------------------------------+------------------|"; + dumps[dumps.length - 1] = " +----------------------------------------------------------------------+"; + + int len = 0; + byte PERIOD = 0x2E; + char aChar = ' '; + boolean isDBCS = false; + boolean isHalfDBCS = false; + + + for (int i = 3; i < dumps.length - 1; i++) { + + len = ( ((bytes.length - (i - 2) * 16) >= 0) ? 16 : (bytes.length - (i - 3)*16) ); + byte[] buf = new byte[len]; + System.arraycopy( bytes, (i-3)*16, buf, 0, len ); + StringBuilder sb = new StringBuilder(); + //dumps[i] = EMPTY_STRING; + + sb.append(" | ").append( stringFormat( new String( Integer.toHexString((i-3)*16) ).toUpperCase(), true, ZERO, 8) ).append(" | "); + + String hexStr = byte2Hex( buf ); + StringBuilder fmtStr = new StringBuilder(); + + int k = hexStr.length()/8 + ((hexStr.length() % 8) == 0 ? 0 : 1); + for (int j=0; j < k ; j++) { + int l = ((hexStr.length() - (j+1)*8 ) >= 0 ? 8 : (hexStr.length() - j*8 )); + fmtStr.append( hexStr.substring(j*8, j*8 + l ) ).append(" "); + } + + sb.append( stringFormat(fmtStr.toString(), false, SPACE, 39) ).append("| "); + + k = 0; + // 한글 및 특수문자가 깨지게 표시되는 것 을 방지한다. + for ( int j=0; j < len; j++) { + if ( buf[j] >> 7 == 0 ) { + // Single Byte Character + if ( isDBCS ) { + isDBCS = false; + if ( k != 0 && ((k % 2) == 1 )) { + buf[j - 1] = PERIOD; + } + } + aChar = (char)buf[j]; + if ( Character.isWhitespace( aChar ) || Character.isISOControl( aChar ) || buf[j] == 0 ) { + buf[j] = PERIOD; + } + continue; + } + // Double Bytes Character. + if ( !isDBCS ) isDBCS = true; + if ( j == 0 && isHalfDBCS ) { + buf[j] = PERIOD; + isDBCS = false; + continue; + } + // To check the DBCS pairwise + k++; + } + if ( isDBCS && ((k%2)==1) ) { + buf[ len -1 ] = PERIOD; + isHalfDBCS = true; + } else { + isHalfDBCS = false; + } + + try { + dumps[i] = sb.append( stringFormat(new String(buf, SystemKeys.getBytesMessageCharset()), false, SPACE, 16) ).append(" |").toString(); + } catch (UnsupportedEncodingException e) { + dumps[i] = sb.append( stringFormat(new String(buf), false, SPACE, 16) ).append(" |").toString(); + } + } + return dumps; + + } + + public static String hexDump(byte[] message, boolean printBytesInfo) { + String[] dumpMsg = makeDumpFormat( message ); + StringBuilder dump = new StringBuilder(); + if (printBytesInfo) { + dump.append("byte[size=" + message.length + "]"); + } + dump.append("\n"); + for(int i=0; i < dumpMsg.length; i++) { + dump.append(dumpMsg[i]); + if (i < dumpMsg.length-1) + dump.append("\n"); + } + + return dump.toString(); + } + + public static String hexDump(byte[] message) { + return hexDump(message, true); + } + + public static String hexDumpTab(byte[] message) { + return hexDump(message, true).replaceAll("\n (\\+|\\|)", "\n" + Constants.TAB + " \\| $1"); + } + + public static String ebcdicHexDumpTab(byte[] message) { + byte[] bytes = null; + String asc = IConv.ebcdicToASCIISOSISpaceEX(message); + bytes = asc.getBytes(); + return hexDumpTab(bytes); + } + + private static final MessageFormat ELAPSED_TIME_FORMAT = new MessageFormat("{0}.{1}.{2}"); + public static String elapsedTime(long time) { + long elapsed = System.currentTimeMillis() - time; + long seconds = elapsed / 1000; + long minutes = seconds / 60; + long hours = minutes / 60; + Object[] args = { Long.valueOf(hours), Long.valueOf(minutes%60), Long.valueOf(seconds % 60)}; + return ELAPSED_TIME_FORMAT.format(args); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/util/ConstantUtil.java b/src/main/java/com/eactive/eai/transformer/util/ConstantUtil.java new file mode 100644 index 0000000..f0f0a3b --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/ConstantUtil.java @@ -0,0 +1,183 @@ +package com.eactive.eai.transformer.util; + +import org.apache.commons.lang3.StringUtils; + +import com.eactive.eai.transformer.function.Function; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.Types; + + +public class ConstantUtil { + private ConstantUtil() { + + } + + public static int getDataTypeId(String typeName, String layoutTypeName) { + /** + * host data type + */ + if (layoutTypeName != null && ("BYTES".equalsIgnoreCase(layoutTypeName) + || "EBCDIC".equalsIgnoreCase(layoutTypeName) || "VBYTES".equalsIgnoreCase(layoutTypeName) + || "VFIELD".equalsIgnoreCase(layoutTypeName) || "VEBCDIC".equalsIgnoreCase(layoutTypeName) + || "COMBYTES".equalsIgnoreCase(layoutTypeName) || "COMEBCDIC".equalsIgnoreCase(layoutTypeName) + || "ODDBYTES".equalsIgnoreCase(layoutTypeName) || "CARD".equalsIgnoreCase(layoutTypeName) + || StringUtils.startsWith(layoutTypeName, "ISO8583"))) { + return Types.TYPE_BYTEARRAY; + } else { + if ("PIC X(n)".equalsIgnoreCase(typeName)) { + return Types.TYPE_STRING; + } else if ("PIC 9(n)".equalsIgnoreCase(typeName)) { + return Types.TYPE_INT; + } else if ("PIC S9(n)".equalsIgnoreCase(typeName)) { + return Types.TYPE_INT; + } else if ("PIC 9(n)V9(d)".equalsIgnoreCase(typeName)) { + return Types.TYPE_BIGDECIMAL; + } else if ("PIC S9(n)V9(d)".equalsIgnoreCase(typeName)) { + return Types.TYPE_BIGDECIMAL; + } + } + + /** + * normal + */ + if ("STRING".equalsIgnoreCase(typeName)) { + return Types.TYPE_STRING; + } else if (StringUtils.equalsAnyIgnoreCase(typeName, "INT", "INTEGER")) { + return Types.TYPE_INT; + } else if ("BIGDECIMAL".equalsIgnoreCase(typeName)) { + return Types.TYPE_BIGDECIMAL; + } else if ("LONG".equalsIgnoreCase(typeName)) { + return Types.TYPE_LONG; + } else if ("SHORT".equalsIgnoreCase(typeName)) { + return Types.TYPE_SHORT; + } else if ("DOUBLE".equalsIgnoreCase(typeName)) { + return Types.TYPE_DOUBLE; + } else if ("FLOAT".equalsIgnoreCase(typeName)) { + return Types.TYPE_FLOAT; + } else if ("CHAR".equalsIgnoreCase(typeName)) { + return Types.TYPE_CHAR; + } else if ("BYTE".equalsIgnoreCase(typeName)) { + return Types.TYPE_BYTE; + } else if ("DATE".equalsIgnoreCase(typeName)) { + return Types.TYPE_DATE; + } else if ("TIME".equalsIgnoreCase(typeName)) { + return Types.TYPE_TIME; + } else if ("TIMESTAMP".equalsIgnoreCase(typeName)) { + return Types.TYPE_TIMESTAMP; + } else if ("NUMBER".equalsIgnoreCase(typeName)) { + return Types.TYPE_NUMBER; + } else if ("BYTEARRAY".equalsIgnoreCase(typeName)) { + return Types.TYPE_BYTEARRAY; + } else if ("NUMERIC".equalsIgnoreCase(typeName)) { + return Types.TYPE_NUMERIC; + } else if ("PACKDECIMAL".equalsIgnoreCase(typeName)) { + return Types.TYPE_PACKDECIMAL; + } else if ("OBJECT".equalsIgnoreCase(typeName)) { + return Types.TYPE_OBJECT; + } else if ("UNKNOWN".equalsIgnoreCase(typeName)) { + return Types.TYPE_UNKNOWN; + } else if ("BOOLEAN".equalsIgnoreCase(typeName)) { + return Types.TYPE_BOOLEAN; + } else if ("".equalsIgnoreCase(typeName.trim())) { + return Types.TYPE_UNKNOWN; + } + + throw new RuntimeException("알 수 없는 타입을 지정하였습니다. - " + typeName); + } + + public static String getDataTypeName(int typeId) { + switch (typeId) { + case Types.TYPE_STRING: + return "STRING"; + case Types.TYPE_INT: + return "INT"; + case Types.TYPE_LONG: + return "LONG"; + case Types.TYPE_SHORT: + return "SHORT"; + case Types.TYPE_DOUBLE: + return "DOUBLE"; + case Types.TYPE_FLOAT: + return "FLOAT"; + case Types.TYPE_CHAR: + return "CHAR"; + case Types.TYPE_BYTE: + return "BYTE"; + case Types.TYPE_DATE: + return "DATE"; + case Types.TYPE_TIME: + return "TIME"; + case Types.TYPE_TIMESTAMP: + return "TIMESTAMP"; + case Types.TYPE_NUMBER: + return "NUMBER"; + case Types.TYPE_BYTEARRAY: + return "BYTEARRAY"; + case Types.TYPE_NUMERIC: + return "NUMERIC"; + case Types.TYPE_PACKDECIMAL: + return "PACKDECIMAL"; + case Types.TYPE_OBJECT: + return "OBJECT"; + case Types.TYPE_UNKNOWN: + return "UNKNOWN"; + case Types.TYPE_BOOLEAN: + return "BOOLEAN"; + default: + throw new RuntimeException("알 수 없는 타입을 지정하였습니다. - " + typeId); + } + } + + public static int getNodeTypeId(String nodeTypeName) { + if ("ATTR".equals(nodeTypeName)) { + return Item.NODE_ATTR; + } else if ("FIELD".equals(nodeTypeName)) { + return Item.NODE_FIELD; + } else if ("GROUP".equals(nodeTypeName)) { // 배열 구조는 아니면서 계층 구조를 표현하기 위한 항목 + return Item.NODE_GROUP; + } else if ("MESSAGE".equals(nodeTypeName)) { + return Item.NODE_MESSAGE; + // 추가된 부분 + } else if ("ARRAY".equals(nodeTypeName)) { // 배열 구조인 경우 + return Item.NODE_GROUP; + } else if ("COLUMN".equals(nodeTypeName)) { // 배열구조 내의 단일 필드 + return Item.NODE_FIELD; + } else if ("INCLUDE".equals(nodeTypeName)) { // 메시지 내의 메시지 + return Item.NODE_MESSAGE; + } + + throw new RuntimeException("알 수 없는 노드 타입을 지정하였습니다. - " + nodeTypeName); + } + + public static String getNodeType(int nodeType) { + switch (nodeType) { + case Item.NODE_ATTR: + return "NODE_ATTR"; + case Item.NODE_FIELD: + return "NODE_FIELD"; + case Item.NODE_GROUP: + return "NODE_GROUP"; + case Item.NODE_MESSAGE: + return "NODE_MESSAGE"; + default: + throw new RuntimeException("알 수 없는 노드 타입을 지정하였습니다. - " + nodeType); + } + } + + public static int getFunctionTypeId(String functionTypeName) { + if ("PRIMITIVE".equals(functionTypeName)) { + return Function.TYPE_PRIMITIVE; + } else if ("GENERIC".equals(functionTypeName)) { + return Function.TYPE_GENERIC; + } else if ("CONVERT".equals(functionTypeName)) { + return Function.TYPE_CONVERT; + } else if ("USERDEFINED".equals(functionTypeName)) { + return Function.TYPE_USERDEFINED; + } else if ("BUILTIN".equals(functionTypeName)) { + return Function.TYPE_BUILTIN; + } + + throw new RuntimeException("알 수 없는 함수 타입을 지정하였습니다. - " + + functionTypeName); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/util/Constants.java b/src/main/java/com/eactive/eai/transformer/util/Constants.java new file mode 100644 index 0000000..a0f380c --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/Constants.java @@ -0,0 +1,5 @@ +package com.eactive.eai.transformer.util; + +public class Constants { + public static final String TAB = " "; +} diff --git a/src/main/java/com/eactive/eai/transformer/util/ConvertUtil.java b/src/main/java/com/eactive/eai/transformer/util/ConvertUtil.java new file mode 100644 index 0000000..7393e65 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/ConvertUtil.java @@ -0,0 +1,70 @@ +package com.eactive.eai.transformer.util; + +public class ConvertUtil { + private ConvertUtil() { + + } + public static byte[] int2bytes(int value) { + byte[] data = new byte[4]; + data[0] = (byte) ((value >> 24) & 0xFF); + data[1] = (byte) ((value >> 16) & 0xFF); + data[2] = (byte) ((value >> 8) & 0xFF); + data[3] = (byte) ((value) & 0xFF); + + return data; + } + + public static byte[] long2bytes(long value) { + byte[] data = new byte[8]; + data[0] = (byte) ((value >> 56) & 0xFF); + data[1] = (byte) ((value >> 48) & 0xFF); + data[2] = (byte) ((value >> 40) & 0xFF); + data[3] = (byte) ((value >> 32) & 0xFF); + data[4] = (byte) ((value >> 24) & 0xFF); + data[5] = (byte) ((value >> 16) & 0xFF); + data[6] = (byte) ((value >> 8) & 0xFF); + data[7] = (byte) ((value) & 0xFF); + + return data; + } + + public static byte[] short2bytes(short value) { + byte[] data = new byte[8]; + data[0] = (byte) ((value >> 8) & 0xFF); + data[1] = (byte) ((value) & 0xFF); + + return data; + } + + public static int bytes2int(byte[] value, int offset) { + int v = 0; + v += (((int) value[offset] << 24) & 0xFF000000); + v += (((int) value[offset + 1] << 16) & 0x00FF0000); + v += (((int) value[offset + 2] << 8) & 0x0000FF00); + v += (((int) value[offset + 3]) & 0x000000FF); + + return v; + } + + public static long bytes2long(byte[] value, int offset) { + long v = 0; + v += (((long) value[offset] << 56) & 0xFF00000000000000L); + v += (((long) value[offset + 1] << 48) & 0x00FF000000000000L); + v += (((long) value[offset + 2] << 40) & 0x0000FF0000000000L); + v += (((long) value[offset + 3] << 32) & 0x000000FF00000000L); + v += (((long) value[offset + 4] << 24) & 0x00000000FF000000L); + v += (((long) value[offset + 5] << 16) & 0x0000000000FF0000L); + v += (((long) value[offset + 6] << 8) & 0x000000000000FF00L); + v += (((long) value[offset + 7]) & 0x00000000000000FFL); + + return v; + } + + public static short bytes2short(byte[] value, int offset) { + short v = 0; + v += (((short) value[offset] << 8) & 0xFF00); + v += (((short) value[offset + 1]) & 0x00FF); + + return v; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/util/EbcdicDumpUtil.java b/src/main/java/com/eactive/eai/transformer/util/EbcdicDumpUtil.java new file mode 100644 index 0000000..ca0c208 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/EbcdicDumpUtil.java @@ -0,0 +1,180 @@ +package com.eactive.eai.transformer.util; + +import com.eactive.eai.transformer.function.util.CodeConversion; + +public class EbcdicDumpUtil +{ + public static final char SPACE = ' '; + + public static final char ZERO = '0'; + + public static final String[] EMPTY_STRING_ARRAY = new String[0]; + + private EbcdicDumpUtil() { + + } +// public static void printEbcdicDump(byte[] ebcdicBytes) throws Exception { +// String[] msg = makeEbcdicDumpFormat(ebcdicBytes); +// for(int i=0; i> 4).toUpperCase() ).append( Integer.toHexString(abyte[i] & 0xf).toUpperCase() ); + return s.toString(); + } + + /** + * 주어진 String값을 주어진 길이많큼 Padding/Trim한다. + * @param svalue - 입력스트링 + * @param isRightJustify - true이면 RIGHT JUSTIFY, false이면 LEFT JUSTIFY + * @param padding - Padding 문자 + * @param length - 리턴할 스트링의 바이트수 + * @return 포맷팅된 String결과 + */ + public static String stringFormat(String svalue, boolean isRightJustify, char padding, int length) { + if ( svalue == null ) return svalue; + + StringBuilder mpad = new StringBuilder(); + StringBuilder fmtStr = new StringBuilder(); + + String tvalue = svalue; + int pLength = 0; + + pLength = length - svalue.getBytes().length; + + if (pLength == 0) + return svalue; + else if ( pLength < 0) { + byte[] abytes = null; + if (isRightJustify) { + abytes = (new String( svalue.getBytes(), -(pLength), length)).getBytes(); + } else { + abytes = (new String( svalue.getBytes(), 0, length)).getBytes(); + } + + if ( abytes.length == length ) { + return new String( abytes ); + } else { + tvalue = new String( abytes ); + pLength = length - tvalue.length(); + } + } + + for(int i =0; i < pLength ; i++) { + mpad.append( padding ); + } + + if ( isRightJustify ) { + return fmtStr.append(mpad).append(tvalue).toString(); + } else { + return fmtStr.append(tvalue).append(mpad).toString(); + } + } + + + /** + * 송수신EBCDIC 전문에 대한 DUMP를 프린트할 수 있는 포맷으로 변환하여 String Array로 리턴한다. + * @param bytes + * @return + */ + public static String[] makeEbcdicDumpFormat(byte[] ebcdicBytes) { + + byte[] bytes = CodeConversion.meToAsc(ebcdicBytes); + + if (bytes == null || bytes.length == 0) + return EMPTY_STRING_ARRAY; + + String[] dumps = new String[bytes.length / 16 + ((bytes.length % 16) == 0 ? 4 : 5)+1]; + dumps[0] = "/==========.========================================..==================."; + dumps[1] = "| Offset | 0 1 2 3 4 5 6 7 8 9 A B C D E F || U S E R D A T A |"; + dumps[2] = "|----------+----------------------------------------||------------------|"; + dumps[dumps.length - 2] = "'=========='========================================''==================/"; + dumps[dumps.length - 1] = "- Total DATA Size ["+ebcdicBytes.length+"]"; + + int len = 0; + byte PERIOD = 0x2E; + char aChar = ' '; + boolean isDBCS = false; + boolean isHalfDBCS = false; + + for (int i = 3; i < dumps.length - 2; i++) { + len = ( ((bytes.length - (i - 2) * 16) >= 0) ? 16 : (bytes.length - (i - 3)*16) ); + byte[] ebcdicBuf = new byte[len]; + byte[] asciiBuf = new byte[len]; + + StringBuilder strBuf = new StringBuilder(); + + // 2020.02.10 : SOSI가 깨진경우 계산이 안맞는다. + if(((i-3)*16) + len > ebcdicBytes.length) { + dumps[i] = strBuf.append("(SOSI BREAK) invalid position = " + ((i-3)*16 + len)).toString(); + break; + } + + System.arraycopy( ebcdicBytes, (i-3)*16, ebcdicBuf, 0, len ); + System.arraycopy( bytes, (i-3)*16, asciiBuf, 0, len ); + + //dumps[i] = EMPTY_STRING; + + strBuf.append("| ").append( stringFormat( ""+((i-3)*16), true, ZERO, 8) ).append(" | "); + + String hexStr = byte2Hex( ebcdicBuf ); + StringBuilder fmtStr = new StringBuilder(); + + int k = hexStr.length()/8 + ((hexStr.length() % 8) == 0 ? 0 : 1); + for (int j=0; j < k ; j++) { + int l = ((hexStr.length() - (j+1)*8 ) >= 0 ? 8 : (hexStr.length() - j*8 )); + fmtStr.append( hexStr.substring(j*8, j*8 + l ) ).append(" "); + } + + strBuf.append( stringFormat(fmtStr.toString(), false, SPACE, 39) ).append("|| "); + + k = 0; + // 한글 및 특수문자가 깨지게 표시되는 것 을 방지한다. + for ( int j=0; j < len; j++) { + if ( asciiBuf[j] >> 7 == 0 ) { + // Single Byte Character + if ( isDBCS ) { + isDBCS = false; + if ( k != 0 && ((k % 2) == 1 )) { + asciiBuf[j - 1] = PERIOD; + } + } + aChar = (char)asciiBuf[j]; + if ( Character.isWhitespace( aChar ) || Character.isISOControl( aChar ) || asciiBuf[j] == 0 ) { + asciiBuf[j] = PERIOD; + } + continue; + } + // Double Bytes Character. + if ( !isDBCS ) isDBCS = true; + if ( j == 0 && isHalfDBCS ) { + asciiBuf[j] = PERIOD; + isDBCS = false; + continue; + } + // To check the DBCS pairwise + k++; + } + if ( isDBCS && ((k%2)==1) ) { + asciiBuf[ len -1 ] = PERIOD; + isHalfDBCS = true; + } else { + isHalfDBCS = false; + } + + dumps[i] = strBuf.append( stringFormat(new String(asciiBuf), false, SPACE, 16) ).append(" |").toString(); + } + return dumps; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/util/ExceptionStackTrace.java b/src/main/java/com/eactive/eai/transformer/util/ExceptionStackTrace.java new file mode 100644 index 0000000..3e7a574 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/ExceptionStackTrace.java @@ -0,0 +1,18 @@ +package com.eactive.eai.transformer.util; + +import org.apache.commons.lang3.exception.ExceptionUtils; + +//import com.eactive.eai.adapter.socket2.common.ThreadDumpUtil; + +public class ExceptionStackTrace { + private ExceptionStackTrace() { + + } + public static String dump(Throwable t) { +// StringWriter sw = new StringWriter(); +// PrintWriter pw = new PrintWriter(sw); +// t.printStackTrace(pw); +// return sw.toString(); + return ExceptionUtils.getStackTrace(t); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/util/HexUtil.java b/src/main/java/com/eactive/eai/transformer/util/HexUtil.java new file mode 100644 index 0000000..9e70e2b --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/HexUtil.java @@ -0,0 +1,323 @@ +package com.eactive.eai.transformer.util; + +import java.io.PrintWriter; + +public final class HexUtil { + /** maximum int value that can be converted to char */ + public static final int MAX_CHAR_INT = 35; + + private HexUtil() { + + } + + /** + * encodes a string of 4-digit hex numbers to unicode + *
+ * Note: this method is slower than hexToString(String,StringBuilder) + * @param hex string of 4-digit hex numbers + * @return normal java string + */ + /* + public static final String hex2Ascii (String hex) { + if (hex == null) return ""; + int length = hex.length() & -4; + StringBuilder result = new StringBuilder(length/4); + hexToString(hex, result); + return result.toString(); + } + */ + public static final String hex2Ascii (String hex) { + if (hex == null) return ""; + int length = hex.length() & -4; + byte[] result = new byte[length/4]; + hexToString(hex, result); + return new String(result); + } + + public static final byte[] hex2bytes(String hex) { + if (hex == null) return (new byte[0]); + int length = hex.length() & -4; + byte[] result = new byte[length/4]; + hexToString(hex, result); + return result; + } + + protected static final void hexToString (String hex, byte[] out) { + if ( hex == null ) return; + int length = hex.length() & -4; + + for ( int pos=0; pos < length; pos += 4) { + int thisChar = 0; + try { + String hex1 = hex.substring( pos+2,pos+4); + thisChar = Integer.parseInt(hex1 , 16); + } + catch ( NumberFormatException e) { + /* dont care*/ + thisChar = 0; + } + out[pos/4] = (byte)thisChar; + } + + } + /** + * encodes a unicode string to a string of 4-digit hex numbers + *
+ * Note: this method is slower than stringToHex(String,StringBuilder) + * @param java normal java string + * @return string of 4-digit hex numbers + */ + public static final String string2Hex (String stringValue) { + if ( stringValue == null ) return ""; + int length = stringValue.length(); + StringBuilder result = new StringBuilder( length*4 ); + stringToHex(stringValue, result); + return result.toString(); + } + + /** + * encodes a unicode string to a string of 4-digit hex numbers + * @param java normal java string + * @param out string of 4-digit hex numbers + */ + protected static final void stringToHex ( String stringValue, StringBuilder out ) { + if ( stringValue == null ) return; + int length = stringValue.length(); + for ( int pos=0; pos < length; pos ++) { + int thisChar = stringValue.charAt( pos); + for ( int digit = 0; digit < 4; digit ++ ) { + int thisDigit = thisChar & 0xf000; + thisChar = thisChar << 4; + thisDigit = (thisDigit >> 12); + if ( thisDigit >= 10 ) + out.append ( (char)( thisDigit+87)); + else + out.append ( (char)( thisDigit+48)); + } + } + } + + /** + * encodes a unicode string to a string of 4-digit hex numbers + * @param java normal java string + * @param out string of 4-digit hex numbers + */ + public static final void stringToHex ( String stringValue, PrintWriter out ) { + if ( stringValue == null ) return; + int length = stringValue.length(); + for ( int pos=0; pos < length; pos ++) { + int thisChar = stringValue.charAt( pos); + for ( int digit = 0; digit < 4; digit ++ ) { + int thisDigit = thisChar & 0xf000; + thisChar = thisChar << 4; + thisDigit = (thisDigit >> 12); + if ( thisDigit >= 10 ) + out.print ( (char)( thisDigit+87)); + else + out.print ( (char)( thisDigit+48)); + } + } + } + + /** + * checks, if the parameter is a decimal number + */ + public static final boolean isDecimalNumber ( String stringValue) { + int fixSize = stringValue.length(); + if ( fixSize == 0 ) return false; + int dotcount = 0; + for ( int pos = 0; pos < fixSize; pos ++ ) { + char probe = stringValue.charAt(pos); + if (!((( probe >= '0' ) && ( probe <= '9' )) + || (( pos == 0) && ( probe == '-' )) + || (( pos > 0) && (probe == '.' )))) + { + return false; + } + if ( probe == '.' ) { + dotcount ++; + if ( dotcount > 1 ) return false; + } + } + return true; + } + + /** + * converts a one-digit number to an int (base 36) + *
+ * Note: the result is undefined, if parameter is out of range + */ + public static final int charToInt( char base36) { + if ( base36 <= '9') + if ( base36 >= '0') { + return ((int)( base36 - '0')); + } else { + return 0; + } + else if ( base36 < 'a') + if ( base36 <= 'Z') { + return ((int)( base36 - 'A'))+10; + } else { + return 0; + } + else + if ( base36 <= 'z') { + return ((int)( base36 - 'a'))+10; + } else { + return 0; + } + } + + /** + * converts an int number between 0 and 36 to a char (base 36) + *
+ * Note: the result is undefined, if parameter is out of range + */ + public static final char intToChar( int zeroTo36) { + if ( zeroTo36 <= 9) + if ( zeroTo36 >= 0) + return (char)( zeroTo36 + ((int)'0')); + else + return 0; + else + if ( zeroTo36 < 36) + return (char)( zeroTo36-10 + ((int)'a')); + else + return 0; + } + + /** + * converts an int number to hexadecimal representation + */ + public static final void intToHex( int x, StringBuilder out) { + for ( int pos = 0; pos < 8; pos ++ ) + out.append( intToChar((x>>>(28-(pos*4)))&0xf)); + } + + /** + * converts an UTC time to local time + * or local time to UTC. + * @param Time string representing the time + * @param Minutes minutes to be added to Time + * @return String where minutes are added to Time + * or null in case of errors + */ + public static String addToTime( String timeString, long min ) { + String result = null; + try { + // complete waste of memory - but how else do i convert this? + result = ( new java.sql.Timestamp ( + java.sql.Timestamp.valueOf( timeString ).getTime() + ( min * 60000))) + .toString(); + } + catch ( RuntimeException ex) { + result = ""; + } + return result; + } + + /** + * replaces several characters in a string and writes the result to a printwriter + * @param original string that shall be converted and copied to out + * @param badGuys characters that shall be replaced + * @param goodGuys replacements for badGuys + * @param out PrintWriter to which the result is written + */ + public static void replace ( String original, char[] badGuys, String[] goodGuys, + PrintWriter out) + { + // check + init params: + if ( original == null ) return; + int startOutputAt = 0; // this variable indicates + // which chars haven't yet been printed + int countRules = badGuys.length; + + // do the transformation: + int origLength = original.length(); + for ( int pos = 0; pos < origLength; pos ++ ) { + // get + init params: + char probe = original.charAt(pos); // character at current string position + String appendAfterFlush = null; // string, the current charater shall be replaced by + + // is this a bad character: + for ( int rule = 0; rule < countRules; rule ++ ) + if ( probe == badGuys[rule]) { appendAfterFlush = goodGuys[rule]; } + + // flush if bad character found: + if ( appendAfterFlush != null) { + out.print( original.substring( startOutputAt, pos)); + out.print( appendAfterFlush); + startOutputAt = pos+1; + } + + // if this is the last character, print the tail of the string + if ( (pos+1)==origLength ) + out.print( original.substring( startOutputAt)); + } + } + + /** + * encodes a string of 2-digit hex numbers to unicode + *
+ * Note: this method is slower than hexToString(String,StringBuilder) + * @param hex string of 2-digit hex numbers + * @return normal java string + */ + public static final String hex2Ascii2Digit (String hex) { + if (hex == null) return ""; + int length = hex.length() & -2; + StringBuilder result = new StringBuilder(length/2); + hexToString2Digit(hex, result); + return result.toString(); + } + + /** + * encodes a string of 2-digit hex numbers to unicode + * @param hex string of 2-digit hex numbers + * @param out normal java string + */ + protected static final void hexToString2Digit (String hex, StringBuilder out) { + if ( hex == null ) return; + int length = hex.length() & -2; + for ( int pos=0; pos < length; pos += 2) { + int thisChar = 0; + try { + thisChar = Integer.parseInt( hex.substring( pos,pos+2), 16); + } catch ( NumberFormatException e) { + /* dont care*/ + thisChar = 0; + } + out.append( (char) thisChar); + } + } + + /** + * encodes a unicode string to a string of 2-digit hex numbers + *
+ * Note: this method is slower than stringToHex(String,StringBuilder) + * @param java normal java string + * @return string of 2-digit hex numbers + */ + public static final String string2Hex2Digit ( String java ) { + if ( java == null ) return ""; + int length = java.length(); + StringBuilder result = new StringBuilder( length*2); + stringToHex2Digit( java, result); + return result.toString(); + } + + /** + * encodes a unicode string to a string of 2-digit hex numbers + * @param java normal java string + * @param out string of 2-digit hex numbers + */ + protected static final void stringToHex2Digit ( String stringValue, StringBuilder out ) { + if (stringValue == null) return; + + for (int pos=0; pos < stringValue.length(); pos ++) { + int this_char = (int) stringValue.charAt(pos); + out.append(Integer.toHexString(this_char)); + } + } +} + diff --git a/src/main/java/com/eactive/eai/transformer/util/IConv.java b/src/main/java/com/eactive/eai/transformer/util/IConv.java new file mode 100644 index 0000000..68b8609 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/IConv.java @@ -0,0 +1,938 @@ +/* + * IConv.java + * + * Created on 2004년 3월 10일 (수), 오후 3:43 + */ +package com.eactive.eai.transformer.util; + +import java.io.BufferedReader; +import java.io.InputStreamReader; + +import com.eactive.eai.common.util.Logger; +//import com.ibm.db2.jcc.a.e; + +/** +* 1. 기능 : ASCII - EBCDIC 변환 함수 Class +* 2. 처리 개요 : +* - 기본코드 및 확장 코드간의 변환처리 +* 3. 주의사항 +* - 반자의 경우 특정문자를 치환하는 로직이 요청에 의해 추가됨 +* - 전자(한글)의 경우 기본코드와 확장코드로 나누어 짐 +* @author : +* @version : v 1.0.0 +* @see : +* @since : +*/ +public class IConv { + protected static Logger logger = Logger.getLogger("transformer"); + + /** Conversion Table for KSC5601 to, from CodePage933 ( EBCDIC Korean ) */ + + // TABLE LIST FOR CODE CONVERSION + // ASCII_TO_EBCDIC_TABLE FOR SINGLE BYTE ASCII CHARACTER CONVERSION [256] + // EBCDIC_TO_ASCII_TABLE FOR SINGLE BYTE EBCDIC CHARACTER CONVERSION [256] + // DB_ASCII_TO_EBCDIC_TABLE FOR HANGEUL ASCII CONVERSION [94][94] + // DB_EBCDIC_TO_ASCII_TABLE FOR HANFEUL EBCDIC CONVERSION [149][190] + + // ASCII 0x00을 EBCDIC 0x40으로 매핑 : 2009.04.10 (정길영과장) + // SO(0x0E), SI(0x0F) 는 그대로 변환한다. : 2009.09.16 (신광섭차장) + /* + private static final char[] ASCII_TO_EBCDIC_TABLE = { + 0x0040, 0x0001, 0x0002, 0x0003, 0x0037, 0x002d, 0x002e, 0x002f, 0x0016, 0x0005, 0x0025, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x003c, 0x003d, 0x0032, 0x0026, 0x0018, 0x0019, 0x003f, 0x0027, 0x0007, 0x001d, 0x001e, 0x001f, + 0x0040, 0x005a, 0x007f, 0x007b, 0x005b, 0x006c, 0x0050, 0x007d, 0x004d, 0x005d, 0x005c, 0x004e, 0x006b, 0x0060, 0x004b, 0x0061, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x007a, 0x005e, 0x004c, 0x007e, 0x006e, 0x006f, + 0x007c, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, + 0x00d7, 0x00d8, 0x00d9, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x0070, 0x00e0, 0x0080, 0x00b0, 0x006d, + 0x0079, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, + 0x0097, 0x0098, 0x0099, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00c0, 0x004f, 0x00d0, 0x00a1, 0x003f, + 0x004a, 0x005f, 0x00b2, 0x00a0, 0x006a, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f + }; + */ + + //-------------------------------------------------- + // 2009년 11월 20일(금) 적용예정 - 강길수 차장 2009.11.13 + // AD, BD로 정의한 [](대괄호)를 70, 80으로 변환 - 갈길수 차장 2009.12.02 + private static final char[] ASCII_TO_EBCDIC_TABLE = { + 0x0040, 0x0001, 0x0002, 0x0003, 0x0037, 0x002d, 0x002e, 0x002f, 0x0016, 0x0005, 0x0025, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, + 0x0010, 0x0011, 0x0012, 0x0013, 0x003c, 0x003d, 0x0032, 0x0026, 0x0018, 0x0019, 0x003f, 0x0027, 0x001C, 0x001d, 0x001e, 0x001f, + 0x0040, 0x005a, 0x007f, 0x007b, 0x005b, 0x006c, 0x0050, 0x007d, 0x004d, 0x005d, 0x005c, 0x004e, 0x006b, 0x0060, 0x004b, 0x0061, + 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x007a, 0x005e, 0x004c, 0x007e, 0x006e, 0x006f, + 0x007c, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, + 0x00d7, 0x00d8, 0x00d9, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x0070, 0x00e0, 0x0080, 0x005F, 0x006d, + 0x0079, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, + 0x0097, 0x0098, 0x0099, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00c0, 0x004f, 0x00d0, 0x00a1, 0x003f, + 0x0020, 0x0021, 0x0022, 0x0023, 0x0024, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, + 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f, 0x003f + }; + //-------------------------------------------------- + +//----------------------------------------------------- +// 135 라인 첫번째 0x0000 -> 0x0020 으로 변경 : 이동훈 (2007.08.30) +// HOST 0x00을 0x20으로 강제 변경 요건 : 강길수 과장 요청사항 +//----------------------------------------------------- + /* + private static final char[] EBCDIC_TO_ASCII_TABLE = { + 0x0020, 0x0001, 0x0002, 0x0003, 0x007F, 0x0009, 0x007F, 0x001C, 0x007F, 0x007F, 0x007F, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x007F, 0x007F, 0x0008, 0x007F, 0x0018, 0x0019, 0x007F, 0x007F, 0x001A, 0x001D, 0x001E, 0x001F, + 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x000A, 0x0017, 0x001B, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x0005, 0x0006, 0x0007, + 0x007F, 0x007F, 0x0016, 0x007F, 0x007F, 0x007F, 0x007F, 0x0004, 0x007F, 0x007F, 0x007F, 0x007F, 0x0014, 0x0015, 0x007F, 0x007F, + 0x0020, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x0080, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, + 0x0026, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x0081, + 0x002D, 0x002F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x0084, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, + 0x005B, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, + 0x005D, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, + 0x007F, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, + 0x0083, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, + 0x005E, 0x007F, 0x0082, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, + 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, + 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, + 0x005C, 0x007F, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F + }; + */ + //-------------------------------------------------- + // 2009년 11월 20일(금) 적용 - 강길수 차장 2009.11.13 + // 2009년 12월 14일(월) 적용 - 김기진 차장 2009.12.14 (5B -> 7F, 7C -> 7F ) + private static final char[] EBCDIC_TO_ASCII_TABLE = { + 0x0020, 0x0001, 0x0002, 0x0003, 0x007F, 0x0009, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x000B, 0x000C, 0x000D, 0x000E, 0x000F, + 0x0010, 0x0011, 0x0012, 0x0013, 0x007F, 0x007F, 0x0008, 0x007F, 0x0018, 0x0019, 0x007F, 0x007F, 0x001C, 0x001D, 0x001E, 0x001F, + 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x000A, 0x0017, 0x001B, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x0005, 0x0006, 0x0007, + 0x007F, 0x007F, 0x0016, 0x007F, 0x007F, 0x007F, 0x007F, 0x0004, 0x007F, 0x007F, 0x007F, 0x007F, 0x0014, 0x0015, 0x007F, 0x007F, + 0x0020, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x002E, 0x003C, 0x0028, 0x002B, 0x007C, + 0x0026, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x0021, 0x0024, 0x002A, 0x0029, 0x003B, 0x005E, + 0x002D, 0x002F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x002C, 0x0025, 0x005F, 0x003E, 0x003F, + 0x005B, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x0060, 0x003A, 0x0023, 0x0040, 0x0027, 0x003D, 0x0022, + 0x005D, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, + 0x007F, 0x006A, 0x006B, 0x006C, 0x006D, 0x006E, 0x006F, 0x0070, 0x0071, 0x0072, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, + 0x00D1, 0x007E, 0x0073, 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007A, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, + 0x00D8, 0x007F, 0x00DA, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, + 0x007B, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, + 0x007D, 0x004A, 0x004B, 0x004C, 0x004D, 0x004E, 0x004F, 0x0050, 0x0051, 0x0052, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, + 0x005C, 0x007F, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059, 0x005A, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, + 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035, 0x0036, 0x0037, 0x0038, 0x0039, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F, 0x007F + }; + //-------------------------------------------------- + + private static int EBC_X_MAX = 149; + private static int EBC_Y_MAX = 190; + private static char[][] DB_EBC_EXT_TO_ASCII_EXT_TABLE = new char[EBC_X_MAX][EBC_Y_MAX]; + private static char[][] DB_EBC_EXT_TO_ASCII_BAS_TABLE = new char[EBC_X_MAX][EBC_Y_MAX]; + + private static int ASC_X_MAX = 127; + private static int ASC_Y_MAX = 190; + + private static char[][] DB_ASCII_EXT_TO_EBC_EXT_TABLE = new char[ASC_X_MAX][ASC_Y_MAX]; + + + private static boolean initialized = false; + private static final byte SO = 0x0E; + private static final byte SI = 0x0F; + + private static final int ASC_NOSOSI = 0; + private static final int ASC_WITHSOSI = 1; + private static final int ASC_SOSISPACE = 2; + private static final int ASC_SI_DOUBLE_SPACE = 3; + + static { + try { + buildExtConvTable(); + buildBasicConvTable(); + initialized = true; + } catch (Exception e) { + logger.error(e); + initialized = false; + } + logger.error("initialized = "+initialized); + } + + //--------------------------------------------------------------------- + // 2009.03.24 + // 한글도 모두 single byte 변환으로 처리한다. - 강길수차장 요청사항 + // 업무 : B2B 공동망 + //--------------------------------------------------------------------- + // 2009년 12월 14일(월) 적용 - 김기진 차장 2009.12.14 + private static final byte[] ASCIIH_TO_EBCDICH_TABLE = { + (byte)0x00, (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x37, (byte)0x2d, (byte)0x2e, (byte)0x2f, (byte)0x16, (byte)0x05, + (byte)0x25, (byte)0x0b, (byte)0x0c, (byte)0x0d, (byte)0x0e, (byte)0x0f, + (byte)0x10, (byte)0x11, (byte)0x12, (byte)0x13, (byte)0x3c, (byte)0x3d, (byte)0x32, (byte)0x26, (byte)0x18, (byte)0x19, + (byte)0x3f, (byte)0x27, (byte)0x1c, (byte)0x1d, (byte)0x1e, (byte)0x1f, + (byte)0x40, (byte)0x5a, (byte)0x7f, (byte)0x7b, (byte)0x5b, (byte)0x6c, (byte)0x50, (byte)0x7d, (byte)0x4d, (byte)0x5d, + (byte)0x5c, (byte)0x4e, (byte)0x6b, (byte)0x60, (byte)0x4b, (byte)0x61, + (byte)0xf0, (byte)0xf1, (byte)0xf2, (byte)0xf3, (byte)0xf4, (byte)0xf5, (byte)0xf6, (byte)0xf7, (byte)0xf8, (byte)0xf9, + (byte)0x7a, (byte)0x5e, (byte)0x4c, (byte)0x7e, (byte)0x6e, (byte)0x6f, + (byte)0x7c, (byte)0xc1, (byte)0xc2, (byte)0xc3, (byte)0xc4, (byte)0xc5, (byte)0xc6, (byte)0xc7, (byte)0xc8, (byte)0xc9, + (byte)0xd1, (byte)0xd2, (byte)0xd3, (byte)0xd4, (byte)0xd5, (byte)0xd6, + (byte)0xd7, (byte)0xd8, (byte)0xd9, (byte)0xe2, (byte)0xe3, (byte)0xe4, (byte)0xe5, (byte)0xe6, (byte)0xe7, (byte)0xe8, + (byte)0xe9, (byte)0x70, (byte)0xe0, (byte)0x80, (byte)0x5f, (byte)0x6d, + (byte)0x79, (byte)0x81, (byte)0x82, (byte)0x83, (byte)0x84, (byte)0x85, (byte)0x86, (byte)0x87, (byte)0x88, (byte)0x89, + (byte)0x91, (byte)0x92, (byte)0x93, (byte)0x94, (byte)0x95, (byte)0x96, + (byte)0x97, (byte)0x98, (byte)0x99, (byte)0xa2, (byte)0xa3, (byte)0xa4, (byte)0xa5, (byte)0xa6, (byte)0xa7, (byte)0xa8, + (byte)0xa9, (byte)0xc0, (byte)0x4f, (byte)0xd0, (byte)0xa1, (byte)0x07, + (byte)0x20, (byte)0x21, (byte)0x22, (byte)0x23, (byte)0x24, (byte)0x15, (byte)0x06, (byte)0x17, (byte)0x28, (byte)0x29, + (byte)0x2a, (byte)0x2b, (byte)0x2c, (byte)0x09, (byte)0x0a, (byte)0x1b, + (byte)0x30, (byte)0x31, (byte)0x1a, (byte)0x33, (byte)0x34, (byte)0x35, (byte)0x36, (byte)0x08, (byte)0x38, (byte)0x39, + (byte)0x3a, (byte)0x3b, (byte)0x04, (byte)0x14, (byte)0x3e, (byte)0xe1, + (byte)0x41, (byte)0x42, (byte)0x43, (byte)0x44, (byte)0x45, (byte)0x46, (byte)0x47, (byte)0x48, (byte)0x49, (byte)0x51, + (byte)0x52, (byte)0x53, (byte)0x54, (byte)0x55, (byte)0x56, (byte)0x57, + (byte)0x58, (byte)0x59, (byte)0x62, (byte)0x63, (byte)0x64, (byte)0x65, (byte)0x66, (byte)0x67, (byte)0x68, (byte)0x69, + (byte)0x6a, (byte)0x71, (byte)0x72, (byte)0x73, (byte)0x74, (byte)0x75, + (byte)0x76, (byte)0x77, (byte)0x78, (byte)0x4a, (byte)0x8a, (byte)0x8b, (byte)0x8c, (byte)0x8d, (byte)0x8e, (byte)0x8f, + (byte)0x90, (byte)0x9a, (byte)0x9b, (byte)0x9c, (byte)0x9d, (byte)0x9e, + (byte)0x9f, (byte)0xa0, (byte)0xaa, (byte)0xab, (byte)0xac, (byte)0xad, (byte)0xae, (byte)0xaf, (byte)0xb0, (byte)0xb1, + (byte)0xb2, (byte)0xb3, (byte)0xb4, (byte)0xb5, (byte)0xb6, (byte)0xb7, + (byte)0xb8, (byte)0xb9, (byte)0xba, (byte)0xbb, (byte)0xbc, (byte)0xbd, (byte)0xbe, (byte)0xbf, (byte)0xca, (byte)0xcb, + (byte)0xcc, (byte)0xcd, (byte)0xce, (byte)0xcf, (byte)0xda, (byte)0xdb, + (byte)0xdc, (byte)0xdd, (byte)0xde, (byte)0xdf, (byte)0xea, (byte)0xeb, (byte)0xec, (byte)0xed, (byte)0xee, (byte)0xef, + (byte)0xfa, (byte)0xfb, (byte)0xfc, (byte)0xfd, (byte)0xfe, (byte)0xff + }; + + // 2009년 12월 14일(월) 적용 - 김기진 차장 2009.12.14 + private static final byte[] EBCDICH_TO_ASCIIH_TABLE = { + (byte)0x00, (byte)0x01, (byte)0x02, (byte)0x03, (byte)0x9c, (byte)0x09, (byte)0x86, (byte)0x7f, (byte)0x97, (byte)0x8d, + (byte)0x8e, (byte)0x0b, (byte)0x0c, (byte)0x0d, (byte)0x0e, (byte)0x0f, + (byte)0x10, (byte)0x11, (byte)0x12, (byte)0x13, (byte)0x9d, (byte)0x85, (byte)0x08, (byte)0x87, (byte)0x18, (byte)0x19, + (byte)0x92, (byte)0x8f, (byte)0x1c, (byte)0x1d, (byte)0x1e, (byte)0x1f, + (byte)0x80, (byte)0x81, (byte)0x82, (byte)0x83, (byte)0x84, (byte)0x0a, (byte)0x17, (byte)0x1b, (byte)0x88, (byte)0x89, + (byte)0x8a, (byte)0x8b, (byte)0x8c, (byte)0x05, (byte)0x06, (byte)0x07, + (byte)0x90, (byte)0x91, (byte)0x16, (byte)0x93, (byte)0x94, (byte)0x95, (byte)0x96, (byte)0x04, (byte)0x98, (byte)0x99, + (byte)0x9a, (byte)0x9b, (byte)0x14, (byte)0x15, (byte)0x9e, (byte)0x1a, + (byte)0x20, (byte)0xa0, (byte)0xa1, (byte)0xa2, (byte)0xa3, (byte)0xa4, (byte)0xa5, (byte)0xa6, (byte)0xa7, (byte)0xa8, + (byte)0xc3, (byte)0x2e, (byte)0x3c, (byte)0x28, (byte)0x2b, (byte)0x7c, + (byte)0x26, (byte)0xa9, (byte)0xaa, (byte)0xab, (byte)0xac, (byte)0xad, (byte)0xae, (byte)0xaf, (byte)0xb0, (byte)0xb1, + (byte)0x21, (byte)0x24, (byte)0x2a, (byte)0x29, (byte)0x3b, (byte)0x5e, + (byte)0x2d, (byte)0x2f, (byte)0xb2, (byte)0xb3, (byte)0xb4, (byte)0xb5, (byte)0xb6, (byte)0xb7, (byte)0xb8, (byte)0xb9, + (byte)0xba, (byte)0x2c, (byte)0x25, (byte)0x5f, (byte)0x3e, (byte)0x3f, + (byte)0x5b, (byte)0xbb, (byte)0xbc, (byte)0xbd, (byte)0xbe, (byte)0xbf, (byte)0xc0, (byte)0xc1, (byte)0xc2, (byte)0x60, + (byte)0x3a, (byte)0x23, (byte)0x40, (byte)0x27, (byte)0x3d, (byte)0x22, + (byte)0x5d, (byte)0x61, (byte)0x62, (byte)0x63, (byte)0x64, (byte)0x65, (byte)0x66, (byte)0x67, (byte)0x68, (byte)0x69, + (byte)0xc4, (byte)0xc5, (byte)0xc6, (byte)0xc7, (byte)0xc8, (byte)0xc9, + (byte)0xca, (byte)0x6a, (byte)0x6b, (byte)0x6c, (byte)0x6d, (byte)0x6e, (byte)0x6f, (byte)0x70, (byte)0x71, (byte)0x72, + (byte)0xcb, (byte)0xcc, (byte)0xcd, (byte)0xce, (byte)0xcf, (byte)0xd0, + (byte)0xd1, (byte)0x7e, (byte)0x73, (byte)0x74, (byte)0x75, (byte)0x76, (byte)0x77, (byte)0x78, (byte)0x79, (byte)0x7a, + (byte)0xd2, (byte)0xd3, (byte)0xd4, (byte)0xd5, (byte)0xd6, (byte)0xd7, + (byte)0xd8, (byte)0xd9, (byte)0xda, (byte)0xdb, (byte)0xdc, (byte)0xdd, (byte)0xde, (byte)0xdf, (byte)0xe0, (byte)0xe1, + (byte)0xe2, (byte)0xe3, (byte)0xe4, (byte)0xe5, (byte)0xe6, (byte)0xe7, + (byte)0x7b, (byte)0x41, (byte)0x42, (byte)0x43, (byte)0x44, (byte)0x45, (byte)0x46, (byte)0x47, (byte)0x48, (byte)0x49, + (byte)0xe8, (byte)0xe9, (byte)0xea, (byte)0xeb, (byte)0xec, (byte)0xed, + (byte)0x7d, (byte)0x4a, (byte)0x4b, (byte)0x4c, (byte)0x4d, (byte)0x4e, (byte)0x4f, (byte)0x50, (byte)0x51, (byte)0x52, + (byte)0xee, (byte)0xef, (byte)0xf0, (byte)0xf1, (byte)0xf2, (byte)0xf3, + (byte)0x5c, (byte)0x9f, (byte)0x53, (byte)0x54, (byte)0x55, (byte)0x56, (byte)0x57, (byte)0x58, (byte)0x59, (byte)0x5a, + (byte)0xf4, (byte)0xf5, (byte)0xf6, (byte)0xf7, (byte)0xf8, (byte)0xf9, + (byte)0x30, (byte)0x31, (byte)0x32, (byte)0x33, (byte)0x34, (byte)0x35, (byte)0x36, (byte)0x37, (byte)0x38, (byte)0x39, + (byte)0xfa, (byte)0xfb, (byte)0xfc, (byte)0xfd, (byte)0xfe, (byte)0xff + }; + + private IConv() { + + } + + public static byte[] asciiHexaToEBCDICHexa(byte[] srcBytes) { + int length = srcBytes.length; + byte[] bytes = new byte[srcBytes.length]; + + byte[] sByte = new byte[1]; + + for (int i = 0; i < length; i++) { + sByte[0] = srcBytes[i]; +// bytes[i] = (byte) ASCIIH_TO_EBCDICH_TABLE[Integer.parseInt(bytes2Hex(sByte), 16)]; + bytes[i] = (byte) ASCIIH_TO_EBCDICH_TABLE[ getPosition(sByte) ]; + } + return bytes; + } + + public static byte[] ebcdicHexaToASCIIHexa(byte[] srcBytes) { + int length = srcBytes.length; + byte[] bytes = new byte[length]; + byte[] sByte = new byte[1]; + + for (int i = 0; i < length; i++) { + sByte[0] = srcBytes[i]; +// bytes[i] = (byte) EBCDICH_TO_ASCIIH_TABLE[Integer.parseInt(bytes2Hex(sByte), 16)]; + bytes[i] = (byte) EBCDICH_TO_ASCIIH_TABLE[ getPosition(sByte) ]; + } + + return bytes; + } + //--------------------------------------------------------------------- + + public static byte[] asciiToEBCDIC(String value) throws Exception { + return asciiToEBCDICBase(value, true); + } + + public static byte[] asciiToEBCDICNoSOSI(String value) throws Exception { + return asciiToEBCDICBase(value, false); + } + + /** + * EBCDIC을 ASCII 변환시 추가 기능처리. + * + * @param abytes EBCDIC byte array + * @param withSoSi SOSI를 그대로 유지할지 여부 + * @return String 숫자형식의 String + */ + private static byte[] asciiToEBCDICBase(String value, boolean withSOSI) throws Exception { + + int length = value.length(); + int j = 0; + int WORD = 0; + boolean isDBCS = false; + //--------------------------------------------------------- + // SO-SI 를 Apppend하는 로직을 위해 bytes를 계산하는 부분에 + // 오류가 발생 + // 2Bytes 전각일 경우 + // Before : 3 Bytes -> 1byte 부족 + // After : 4 Bytes + //--------------------------------------------------------- + // Before + //byte[] bytes = new byte[(value.getBytes().length * 5) / 3]; + // After + byte[] bytes = new byte[value.getBytes().length * 2]; + //--------------------------------------------------------- + + byte[] dbcs = new byte[2]; + char wc = 0; + + for (int i = 0; i < length; i++) { + // one byte ALPHANUMERIC + if (((value.charAt(i) >> 8) == 0) + && ((int)(value.charAt(i)) < 128) ) { + if (isDBCS) { + if(withSOSI) bytes[j++] = SI; + isDBCS = false; + } + + bytes[j++] = (byte) ASCII_TO_EBCDIC_TABLE[(int) value.charAt(i)]; + continue; + } + + if (!isDBCS) { + if(withSOSI) bytes[j++] = SO; + isDBCS = true; + } + + try { + byte[] tmp = value.substring(i, i + 1).getBytes(); + + // start broken character + if(tmp.length <2) { + logger.warn("broken character change hostspace. broken char["+Integer.toHexString(tmp[0])+"]"); + if (isDBCS) { + if(withSOSI) bytes[j++] = SI; + isDBCS = false; + } + bytes[j++] = 0x40; + continue; + } + // end broken character + + System.arraycopy(tmp, 0, dbcs, 0, 2); + } + catch(Exception ex) { +// System.out.println(">>>> ERROR : IConv Internal Error value["+value+"] pos["+i+"] char["+value.substring(i, i + 1)+"]"); + logger.error(">>>> ERROR : IConv Internal Error value["+value+"] pos["+i+"] char["+value.substring(i, i + 1)+"]", ex); + throw new Exception("IConv Internal Error value["+value+"] pos["+i+"] char["+value.substring(i, i + 1)+"]"); + } + +// WORD = Integer.parseInt(bytes2Hex(dbcs), 16); + WORD = getPosition(dbcs); + + if ((WORD < 0x8141) || (WORD > 0xFEFE)) { // Out of range for 2 bytes character set like hangul + bytes[j++] = (byte) 0xFF; + bytes[j++] = (byte) 0xFF; + + continue; + } + + wc = DB_ASCII_EXT_TO_EBC_EXT_TABLE[(WORD >> 8) - 129][(WORD & 0x00FF) - 65]; + bytes[j++] = (byte) (wc >> 8); + bytes[j++] = (byte) (wc & 0x00FF); + } + + if (isDBCS) { + bytes[j++] = SI; + } + + byte[] _obytes = new byte[j]; + System.arraycopy(bytes, 0, _obytes, 0, j); + + return _obytes; + } + + // 확장형 ASCII로 변환 + // SOSI는 제거됨 + public static String ebcdicToASCIIEX(byte[] abytes) { + return ebcdicToASCII(abytes, true, ASC_NOSOSI, false); + } + + //기본형 ASCII로 변환 + // SOSI는 제거됨 + public static String ebcdicToASCII(byte[] abytes) { + return ebcdicToASCII(abytes, false, ASC_NOSOSI, false); + } + + // 기본형 ASCII로 변환 + // SOSI를 그대로 유지 + public static String ebcdicToASCIIWithSOSI(byte[] abytes) { + return ebcdicToASCII(abytes, false, ASC_WITHSOSI, false); + } + + // 확장형 ASCII로 변환 + // SOSI를 그대로 유지 + public static String ebcdicToASCIIWithSOSIEX(byte[] abytes) { + return ebcdicToASCII(abytes, true, ASC_WITHSOSI, false); + } + + // 기본형 ASCII로 변환 + // SOSI는 제거됨 + // '4040' -> '2020' 으로 변환 : 전자 space 가 반자 space 두개로 + public static String ebcdicToASCIISingleSpace(byte[] abytes) { + return ebcdicToASCII(abytes, false, ASC_NOSOSI, true); + } + + // 확장형 ASCII로 변환 + // SOSI는 제거됨 + // '4040' -> '2020' 으로 변환 : 전자 space 가 반자 space 두개로 + public static String ebcdicToASCIISingleSpaceEX(byte[] abytes) { + return ebcdicToASCII(abytes, true, ASC_NOSOSI, true); + } + + // 기본형 ASCII로 변환 + // SOSI는 '20'으로 치환됨 + public static String ebcdicToASCIISOSISpace(byte[] abytes) { + return ebcdicToASCII(abytes, false, ASC_SOSISPACE, false); + } + + // 확장형 ASCII로 변환 + // SOSI는 '20'으로 치환됨 + public static String ebcdicToASCIISOSISpaceEX(byte[] abytes) { + return ebcdicToASCII(abytes, true, ASC_SOSISPACE, false); + } + + // 기본형 ASCII로 변환 + // SI를 '2020'으로 치환됨 + public static String ebcdicToASCIISIDoubleSpace(byte[] abytes) { + return ebcdicToASCII(abytes, false, ASC_SI_DOUBLE_SPACE, false); + } + + // 확장형 ASCII로 변환 + // SI를 '2020'으로 치환됨 + public static String ebcdicToASCIISIDoubleSpaceEX(byte[] abytes) { + return ebcdicToASCII(abytes, true, ASC_SI_DOUBLE_SPACE, false); + } + + /** + * EBCDIC을 ASCII 변환시 추가 기능처리. + * + * @param abytes EBCDIC byte array + * @param isExtend 확장형 한글 사용여부 + * @param sosiSpaceType SOSI를 space로 변환할지 여부( withSoSi가 true여야 한다) + * - 0(SOSI를 제거), 1 (SOSI를 그대로 유지) , 1(SOSI를 Space로), 2 (SI에 Space 2개) + * @param singleSpace EBCDIC Double bytes space를 single byte space 2자로 변경할지 여부 + * @return String 숫자형식의 String + */ + private static String ebcdicToASCII(byte[] abytes, boolean isExtend, int sosiSpaceType, boolean singleSpace) { + int length = abytes.length; + int j = 0; + int WORD = 0; + boolean isDBCS = false; + byte[] bytes = new byte[length]; + byte[] dbcs = new byte[2]; + char wc = 0; + + for (int i = 0; i < length; i++) { + // DBCS start End SO-SI + if (abytes[i] == SO) { + isDBCS = true; + if(sosiSpaceType == 0) { + ; //skip so 제거 + } + else if(sosiSpaceType == 1) { + bytes[j++] = SO; + } + else if(sosiSpaceType == 2) { + bytes[j++] = (byte)0x20; + } + else if(sosiSpaceType == 3) { + ; + } + else { + ; + } + continue; + } else if (abytes[i] == SI) { + isDBCS = false; + + if(sosiSpaceType == 0) { + ; //skip so 제거 + } + else if(sosiSpaceType == 1) { + bytes[j++] = SI; + } + else if(sosiSpaceType == 2) { + bytes[j++] = (byte)0x20; + } else if(sosiSpaceType == 3) { + bytes[j++] = (byte)0x20; + bytes[j++] = (byte)0x20; + } else { + ; + } + + continue; + } + + if (((length - i) < 2) && isDBCS) { + isDBCS = false; + } + + // one byte ALPHANUMERIC + if (!isDBCS) { + dbcs[0] = 0x00; + dbcs[1] = abytes[i]; +// bytes[j++] = (byte) EBCDIC_TO_ASCII_TABLE[Integer.parseInt(bytes2Hex(dbcs), 16)]; + bytes[j++] = (byte) EBCDIC_TO_ASCII_TABLE[ getPosition(dbcs) ]; + + continue; + } + + dbcs[0] = abytes[i++]; + dbcs[1] = abytes[i]; +// WORD = Integer.parseInt(bytes2Hex(dbcs), 16); + WORD = getPosition(dbcs); + + if (WORD == 0x4040) { + if(singleSpace) { + bytes[j++] = (byte) 0x20; + bytes[j++] = (byte) 0x20; + } + else { + bytes[j++] = (byte) 0xA1; + bytes[j++] = (byte) 0xA1; + } + + continue; + } + + if (WORD == 0x0000) { + bytes[j++] = (byte) 0x00; + bytes[j++] = (byte) 0x00; + + continue; + } + + if ((WORD < 0x4141) || (WORD > 0xD5FF) || ((WORD & 0x00FF) < 0x41) || + ((WORD & 0x00FF) > 0xFE)) { // Out of range for 2 bytes character set like hangul + bytes[j++] = (byte) 0xFF; + bytes[j++] = (byte) 0xFF; + + continue; + } + + if(isExtend) { + wc = DB_EBC_EXT_TO_ASCII_EXT_TABLE[(WORD >> 8) - 65][(WORD & 0x00FF) - 65]; + } + else { + wc = DB_EBC_EXT_TO_ASCII_BAS_TABLE[(WORD >> 8) - 65][(WORD & 0x00FF) - 65]; + } + bytes[j++] = (byte) (wc >> 8); + bytes[j++] = (byte) (wc & 0x00FF); + } + + byte[] _obytes = new byte[j]; + System.arraycopy(bytes, 0, _obytes, 0, j); + + return new String(_obytes); + } + + public static String bytes2Hex(byte[] abyte0) { + StringBuilder buffer = new StringBuilder(); + + for (int i = 0; i < abyte0.length; i++) { + buffer.append(Integer.toHexString((abyte0[i] & 0xf0) >> 4)) + .append(Integer.toHexString(abyte0[i] & 0xf)); + } + + // Performance 를 위해 toUpperCase 제거 :2009.04.03 + //return buffer.toString().toUpperCase(); + return buffer.toString(); + } + + private static void buildExtConvTable() { + BufferedReader br = null; + try { +// String OS = System.getProperty("os.name"); + + String className = IConv.class.getName(); + String pathName = className.substring(0, className.lastIndexOf('.')) + .replace('.', '/'); + + br = new BufferedReader(new InputStreamReader( + IConv.class.getClassLoader().getResourceAsStream(pathName + + "/code_ext.tab"))); + String lbuff = br.readLine(); + int xpos = 0; + int ypos = 0; + String[] codes = null; + + int lines = 0; + while (lbuff != null) { + lines++; + if(lbuff.length() == 9) { + codes = lbuff.split(","); + if(codes == null || codes.length < 2) continue; + if(codes[0] != null && codes[0].length() >=4) { + // DB_EBC_EXT_TO_ASCII_EXT_TABLE + xpos = Integer.parseInt(codes[0].substring(0,2), 16); + ypos = Integer.parseInt(codes[0].substring(2,4), 16); + + if(xpos < (Integer.MIN_VALUE+65) || ypos < (Integer.MIN_VALUE+65) ) { + lbuff = br.readLine(); + continue; + } + + xpos = xpos - 65; // 4141 ~ + ypos = ypos - 65; + + if((xpos >=0 && xpos < EBC_X_MAX) && (ypos >=0 && ypos < EBC_Y_MAX)) + { + DB_EBC_EXT_TO_ASCII_EXT_TABLE[xpos][ypos] = (char) Integer.parseInt(codes[1], 16); + } + + // DB_ASCII_EXT_TO_EBC_EXT_TABLE + +// xpos = Integer.parseInt(codes[1].substring(0,2), 16) - 129; //8141 ~ +// ypos = Integer.parseInt(codes[1].substring(2,4), 16) - 65; + + xpos = Integer.parseInt(codes[1].substring(0,2), 16); + ypos = Integer.parseInt(codes[1].substring(2,4), 16); + + if(xpos < (Integer.MIN_VALUE+129) || ypos < (Integer.MIN_VALUE+65) ) { + lbuff = br.readLine(); + continue; + } + + xpos = xpos - 129; // 4141 ~ + ypos = ypos - 65; + + if((xpos >=0 && xpos < ASC_X_MAX) && (ypos >=0 && ypos < ASC_Y_MAX)) + { + DB_ASCII_EXT_TO_EBC_EXT_TABLE[xpos][ypos] = (char) Integer.parseInt(codes[0], 16); + } + } + } + lbuff = br.readLine(); + } + // End of while + } catch (Exception ex) { + logger.error(ex); + } + finally { + try { if(br != null) br.close(); } catch(Exception e) { + logger.error(e); + } + } + } + + private static void buildBasicConvTable() { + + String className = IConv.class.getName(); + String pathName = className.substring(0, className.lastIndexOf('.')) + .replace('.', '/'); + try ( + BufferedReader br = new BufferedReader(new InputStreamReader( + IConv.class.getClassLoader().getResourceAsStream(pathName + + "/code_basic.tab"))); + ){ + String lbuff = br.readLine(); + int xpos = 0; + int ypos = 0; + String[] codes = null; + + int lines = 0; + while (lbuff != null) { + lines++; + if(lbuff.length() == 9) { + codes = lbuff.split(","); + if(codes == null || codes.length < 2) { + lbuff = br.readLine(); + continue; + } + if(codes[0] != null && codes[0].length() >=4) { + // DB_EBC_EXT_TO_ASCII_EXT_TABLE +// xpos = Integer.parseInt(codes[0].substring(0,2), 16) - 65; // 4141 ~ +// ypos = Integer.parseInt(codes[0].substring(2,4), 16) - 65; + + xpos = Integer.parseInt(codes[0].substring(0,2), 16); + ypos = Integer.parseInt(codes[0].substring(2,4), 16); + + if(xpos < (Integer.MIN_VALUE+65) || ypos < (Integer.MIN_VALUE+65) ) { + lbuff = br.readLine(); + continue; + } + + xpos = xpos - 65; // 4141 ~ + ypos = ypos - 65; + + if((xpos >=0 && xpos < EBC_X_MAX) && (ypos >=0 && ypos < EBC_Y_MAX)) + { + DB_EBC_EXT_TO_ASCII_BAS_TABLE[xpos][ypos] = (char) Integer.parseInt(codes[1], 16); + } + } + } + lbuff = br.readLine(); + } + // End of while + } catch (Exception ex) { + logger.error(ex); + } + } + + public static String printHexaCode(byte[] abyte) { + StringBuilder s = new StringBuilder(); + if (abyte == null) + return s.toString(); + for (int i = 0; i < abyte.length; i++) { + s.append( Integer.toHexString((abyte[i] & 0xf0) >> 4) ) + .append( Integer.toHexString(abyte[i] & 0xf)); + //if( ((i+1)%8) == 0) s.append("\n"); + } + return s.toString(); + } + + public static int getPosition(byte[] b) { + int high = 0; + int low = 0; + + if(b.length == 2) { + high = ((b[0]& 0xf0) >> 4)*16+(b[0]& 0x0f); + low = ((b[1]& 0xf0) >> 4)*16+(b[1]& 0x0f); + } + else if(b.length == 1) { + low = ((b[0]& 0xf0) >> 4)*16+(b[0]& 0x0f); + } + + return (high*16*16+low); + } + + //--------------------------------------------- + // Test + //--------------------------------------------- +// public static void inputTest(String input) throws Exception { +// System.out.println("Input [" + input +"]"); +// System.out.println("HEXA [" + printHexaCode(input.getBytes()) +"]"); +// +// byte[] ebc = IConv.asciiToEBCDIC(input); +// System.out.println("EBC HEXA [" + printHexaCode(ebc) +"]"); +// String asc = IConv.ebcdicToASCIIEX(ebc); +// System.out.println("ASC EX [" + asc + "]"); +// System.out.println("ASC HEXA [" + printHexaCode(asc.getBytes()) + "]"); +// +// String basc = IConv.ebcdicToASCII(ebc); +// System.out.println("ebcdicToASCII"); +// System.out.println("ASC BAS [" + basc + "]"); +// System.out.println("ASC HEXA [" + printHexaCode(basc.getBytes()) + "]"); +// } +// +// public static void hexaTest() throws Exception { +// byte[] input = new byte[1]; +// +// for(int i=0; i isoValue = isoMessage.getField(i); + Object val = isoValue.getValue(); + String parsedVal; + if (val instanceof String) { + parsedVal = (String) val; + } else if (val instanceof byte[]) { + parsedVal = "b'" + Hex.encodeHexString((byte[]) val) + "'"; + } else { + //parsedVal = String.valueOf(val); + parsedVal = isoValue.toString(); + } + fields = fields + i + " "; + if (iso8583Message != null) { + Item item = iso8583Message.getChildByName(String.format("%03d", i)); + format = String.format(" %3d {%7s} %-35s [%s]\n", i, isoValue.getType(), + "\"" + item.getDescription() + "\"", parsedVal); + } else { + format = String.format(" %3d {%7s} - [%s]\n", i, isoValue.getType(), parsedVal); + } + fieldValueBuffer.append(format); + } + } + fields += "]"; + dumpBuffer.append(fields); + dumpBuffer.append("\n"); + dumpBuffer.append(fieldValueBuffer); + + return dumpBuffer.toString(); + } + + public static String dumpIsoMessageForEms(IsoMessage isoMessage, String messageType) { + StringBuilder dumpBuffer = new StringBuilder(); + + ISO8583Message iso8583Message = ISO8583MessageFactory.create(messageType); + + String format = String.format(" MsgType : [ %04x ]\n", isoMessage.getType()); + dumpBuffer.append(format); + + StringBuilder fieldValueBuffer = new StringBuilder(); + String fields = " Fields : [ "; + for (int i = 1; i < 129; i++) { + if (isoMessage.hasField(i)) { + IsoValue isoValue = isoMessage.getField(i); + Object val = isoValue.getValue(); + String parsedVal; + if (val instanceof String) { + parsedVal = (String) val; + } else if (val instanceof byte[]) { + parsedVal = "b'" + Hex.encodeHexString((byte[]) val) + "'"; + } else { + //parsedVal = String.valueOf(val); + parsedVal = isoValue.toString(); + } + fields = fields + i + " "; + format = String.format(" %3d {%7s} %-50s [%s]\n", i, isoValue.getType(), + "\"" + getFieldName(iso8583Message, i) + "\"", parsedVal); + fieldValueBuffer.append(format); + } + } + fields += "]"; + dumpBuffer.append(fields); + dumpBuffer.append("\n"); + dumpBuffer.append(fieldValueBuffer); + + return dumpBuffer.toString(); + } + + public static String getFieldName(ISO8583Message iso8583Message, int i) { + String fieldName = ""; + try { + fieldName = iso8583Message.getFieldName(i); + } catch (Exception e) { + fieldName = String.format("%03d", i); + } + return fieldName; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/util/JsonUtil.java b/src/main/java/com/eactive/eai/transformer/util/JsonUtil.java new file mode 100644 index 0000000..d8e205a --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/JsonUtil.java @@ -0,0 +1,157 @@ +package com.eactive.eai.transformer.util; + +public class JsonUtil { + private JsonUtil() { + + } + public static String escape(String value) throws Exception { + StringBuilder sb = new StringBuilder(); + for(int i=0; i= 0x10000 ) { + throw new RuntimeException("invalid character U16, over 2bytes code."); + } + else if(chx >= 127 ) { + sb.append( String.format("\\u%04x", chx) ); + } + else { + sb.append(ch); + } + } + return sb.toString(); + } + + public static String unescape(String value) { + StringBuilder sb = new StringBuilder(); + + int i = 0; + while(i value.length()) { + throw new RuntimeException("Bad unicode size character, should 4 chars"); + } + + for(char xbit : value.substring(i, i + 4).toCharArray()) { + if(!Character.isLetterOrDigit(xbit)) { + throw new RuntimeException("Bad unicode character - "+xbit); + } + hex.append(Character.toLowerCase(xbit)); + } + i += 4; + + int hexCode = Integer.parseInt(hex.toString(), 16); + sb.append((char)hexCode); + } + else { + throw new RuntimeException("Invalid escape sequence : \\"+ch); + } + } + else { + sb.append(ch); + } + } + return sb.toString(); + } + + public static String convertNull(String value) { + return convertNull(value, true); + } + + public static boolean checkNull(String value) { + return (value == null || value.length() == 0); + } + + public static boolean checkNotNull(String value) { + return !checkNull(value); + } + + public static String convertNull(String value, boolean nullable) { + String valueExpression = "\"\""; + if(value == null) { + if(nullable) valueExpression = "null"; + } + else { + valueExpression = "\"" + value + "\""; + // 데이터를 trim이 가능한 경우에 right trim 반영 (20191002) +// valueExpression = "\"" + com.eactive.eai.common.util.StringUtil.rightTrim(value) + "\""; + } + return valueExpression; + } + + public static String convertNumber(String value) { + return convertNumber(value, true); + } + + public static String convertNumber(String value, boolean nullable) { + String valueExpression = "0"; + if(value == null) { + if(nullable) valueExpression = "null"; + } + else { + int i = 0; + try { + i = Integer.parseInt(value); + valueExpression = "" + i; + } + catch(Exception e) { + valueExpression = "0"; + } + } + return valueExpression; + } +// public static void main(String args[]) throws Exception { +// test(); +//} + +// private static void test() throws Exception { +// byte[] bytes = {0x53, 0x22, 0x5C, 0x0D, 0x0A, 0x22, 0x45}; +// String valueStr =new String(bytes); +// +// System.out.println("Orign : " +valueStr); +// String escapeStr = JsonUtil.escape(valueStr); +// System.out.println("Escape : " +escapeStr); +// +// String unescapeStr = JsonUtil.unescape(escapeStr); +// System.out.println("Unescape : " +unescapeStr); +// } + +} diff --git a/src/main/java/com/eactive/eai/transformer/util/Logger.java b/src/main/java/com/eactive/eai/transformer/util/Logger.java new file mode 100644 index 0000000..1a37d10 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/Logger.java @@ -0,0 +1,91 @@ +package com.eactive.eai.transformer.util; + +import com.eactive.eai.common.server.Keys; + +/** + * + */ +public class Logger { +// private String className; + private com.eactive.eai.common.util.Logger logger; + + protected static boolean application; + + static { + String wlServer = System.getProperty(Keys.SERVER_KEY); + if (wlServer == null) { + //System.out.println("Standalone Application"); + application = true; + } else { + //System.out.println("WebLogic Application"); + application = false; + } + } + + private Logger(String clazzName) { +// int idx = clazzName.lastIndexOf("."); +// +// if (idx == -1) { +// this.clazzName = clazzName; +// } else { +// this.clazzName = clazzName.substring(idx + 1); +// } + if(!application) { + logger = com.eactive.eai.common.util.Logger.getLogger(com.eactive.eai.common.util.Logger.LOGGER_DEFAULT); + } else { + logger = com.eactive.eai.common.util.Logger.getLogger("transformer"); + } + } + + public void debug(String message) { + this.logger.debug(message); + } + + public void info(String message) { + this.logger.info(message); + } + + public void warn(String message) { + this.logger.warn(message); + } + + public void warn(String message, Throwable t) { + this.logger.warn(message, t); + } + + public void error(String message) { + this.logger.error(message); + } + + public void error(String message, Throwable t) { + this.logger.error(message,t); + } + + public void fatal(String message) { + this.logger.fatal(message); + } + + public boolean isDebugEnabled() { + return this.logger.isDebugEnabled(); + } + + public boolean isInfoEnabled() { + return this.logger.isInfoEnabled(); + } + + public boolean isWarnEnabled() { + return this.logger.isWarnEnabled(); + } + + public static Logger getLogger(Class clazz) { + return new Logger(clazz.getName()); + } + + public static Logger getLogger() { + return new Logger(""); + } + + public static Logger getLogger(String name) { + return new Logger(name); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/util/MemoryLogger.java b/src/main/java/com/eactive/eai/transformer/util/MemoryLogger.java new file mode 100644 index 0000000..159e85a --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/MemoryLogger.java @@ -0,0 +1,76 @@ +package com.eactive.eai.transformer.util; + +import com.eactive.eai.common.property.PropGroupVO; +import com.eactive.eai.common.property.PropManager; + + +public class MemoryLogger { + static final int MAX_LOG_MESSAGE_SIZE = 500000; + + // Memory 문제로 100 -> 20 줄임 + static CircularQueue txQueue = new CircularQueue(20); + static CircularQueue errorQueue = new CircularQueue(20); + static long errorCount = 0; + + private MemoryLogger() { + + } + public static int getTransactionCount() { + return txQueue.getRecordCount(); + } + + public static String[] getTransactions() { + return txQueue.getRecords(); + } + + public static boolean isMemoryLogEnabled() { + PropGroupVO propGroupVO = PropManager.getInstance().getPropGroupVO("Transformer"); + if (propGroupVO == null) + return false; + String value = propGroupVO.getProperty("memory.log"); + return ("1".equals(value)); + } + + public static void txlog(String message) { + if (message == null) + return; + if (message.length() > MAX_LOG_MESSAGE_SIZE) + message = message.substring(0, MAX_LOG_MESSAGE_SIZE); + + txQueue.addRecord(message); + } + + public static long getErrorCount() { + return errorCount; + } + + public static String[] getErrors() { + return errorQueue.getRecords(); + } + + public static void error(String message) { + if (message == null) + return; + if (message.length() > MAX_LOG_MESSAGE_SIZE) + message = message.substring(0, MAX_LOG_MESSAGE_SIZE); + + synchronized(MemoryLogger.class) { + errorCount++; + } + errorQueue.addRecord(message); + txQueue.addRecord("" + message + ""); + } + + public static void error(String message, Throwable t) { + if (message == null) + return; + if (message.length() > MAX_LOG_MESSAGE_SIZE) + message = message.substring(0, MAX_LOG_MESSAGE_SIZE); + + synchronized(MemoryLogger.class) { + errorCount++; + } + errorQueue.addRecord(message + " | " + ExceptionStackTrace.dump(t)); + txQueue.addRecord("" + message + "\n" + ExceptionStackTrace.dump(t) + ""); + } +} diff --git a/src/main/java/com/eactive/eai/transformer/util/NullControl.java b/src/main/java/com/eactive/eai/transformer/util/NullControl.java new file mode 100644 index 0000000..e6cb783 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/NullControl.java @@ -0,0 +1,53 @@ +package com.eactive.eai.transformer.util; + + + +/** + * 1. 기능 : Date, Time 관련 Utility Method 정의 + * 2. 처리 개요 : + */ +public final class NullControl { + + + /** + * Private 생성자 + * Instance를 생성하지 못함 + */ + private NullControl() + { + + } + + /** + * 1. 기능 : Null값을 공백으로 변경 + * 2. 처리 개요 : + * - ""나 Null를 입력받아 SPACE로 변환한다. + */ + + public static String addSpace(String val) + { + if( val == null || val.equals("") ){ + val = " "; + } + + return val; + } + + /** + * 1. 기능 : 입력값을 트림하여 화이트스페이스를 없앤다. + * 2. 처리 개요 : + * - 입력받은 값을 트림하여 리턴한다. + */ + + public static String trimSpace(String val) + { +// if(val == null || val.equals(" ") || val.equals("") ) { +// return null; // ""나 Null을 체크하여 트림하여 에러가 발생하지 않도록 한다.. +// } + + if(val == null) { + return ""; + } + return val; + } +} \ No newline at end of file diff --git a/src/main/java/com/eactive/eai/transformer/util/PageInfo.java b/src/main/java/com/eactive/eai/transformer/util/PageInfo.java new file mode 100644 index 0000000..e92a82d --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/PageInfo.java @@ -0,0 +1,74 @@ +package com.eactive.eai.transformer.util; + +import java.io.Serializable; +import java.util.Vector; + +/** + * 1. 기능 : 관리자 화면에서 Page List를 구성하기위한 정보를 저장 + * 2. 처리 개요 : 관리자 화면에서 Page List를 구성하기위한 정보를 저장 + */ + +public class PageInfo implements Serializable +{ + private int page; + private int rowsPerPage; + private Vector whereItem; + private Vector orderItem; + + /** 한페이지에 보여줄 라인 카운트 */ + public static final int ROWS_PER_PAGE = 10; + + public void setPage(int page) { + this.page = page; + } + + public int getPage() { + return this.page; + } + + public void setRowPerPage(int rowsPerPage) { + this.rowsPerPage = rowsPerPage; + } + + public int getRowPerPage() { + return this.rowsPerPage; + } + + public void setWhereItem(Vector whereItem) { + this.whereItem = whereItem; + } + + public Vector getWhereItem() { + return this.whereItem; + } + + public void setOrderItem(Vector orderItem) { + this.orderItem = orderItem; + } + + public Vector getOrderItem() { + return this.orderItem; + } + + /** + * view page의 start row를 반환하는 method + * + * @return view page의 start row + */ + public int startrow() { + page = page<1 ? 1 : page; + if(this.rowsPerPage==0) rowsPerPage = ROWS_PER_PAGE; + return (page-1)*rowsPerPage+1; + } + + /** + * view page의 end row를 반환하는 method + * + * @return view page의 end row + */ + public int endrow() { + page = page<1 ? 1 : page; + if(this.rowsPerPage==0) rowsPerPage = ROWS_PER_PAGE; + return (page-1)*rowsPerPage+rowsPerPage; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/util/StringUtil.java b/src/main/java/com/eactive/eai/transformer/util/StringUtil.java new file mode 100644 index 0000000..1df3806 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/StringUtil.java @@ -0,0 +1,45 @@ +package com.eactive.eai.transformer.util; + +/** + * 1. 기능 : 변환에서 사용하는 Pattern 을 대신하는 User Method Class + * 2. 처리 개요 : IBM BMT 중 발생한 Pattern.match를 대신하기 위한 Utility Class + */ + +public class StringUtil { + private StringUtil() { + + } + + public static String replaceAll(String src, String a, String b) { + int i = -1; + String replaceStr = src; + do { + i = replaceStr.indexOf(a); + if(i > 0) { + replaceStr = replaceStr.substring(0, i) + b + replaceStr.substring(i + a.length()); + } + } while(i > 0); + + return replaceStr; + } + + public static int isMulti(String s) { + if(s == null) + return -1; + return s.indexOf("[*]"); + } + + public static int findStart(String s) { + + if(s == null) return -1; + + int size = s.length(); + + for(int i=(size-1); i >= 0; i--) { + char c = s.charAt(i); + if(c == ' ' || c == '+' || c == '/' || c == '%' || c == '(' ) return i; + } + return -1; + } + +} diff --git a/src/main/java/com/eactive/eai/transformer/util/TransformKeys.java b/src/main/java/com/eactive/eai/transformer/util/TransformKeys.java new file mode 100644 index 0000000..59db7e6 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/TransformKeys.java @@ -0,0 +1,216 @@ +package com.eactive.eai.transformer.util; + +import java.util.HashMap; +import java.util.Map; + +import com.eactive.eai.transformer.function.Function; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.layout.Types; + +/** + * 운영관리 화면에서 사용하기 위해 Transformer내의 Function, Layout, Transform 등에서 사용되는 상수들 정의 + */ +public class TransformKeys { + private TransformKeys() { + + } + + /** + * 변환함수 반환 유형 ID를 위한 Map 반환하는 메서드 + */ + private static Map ccnvsnRetunID = new HashMap<>(); + + public static Map getCnvsnRetunID() { + ccnvsnRetunID.put("UNKNOWN", "" + Types.TYPE_UNKNOWN); + ccnvsnRetunID.put("STRING", "" + Types.TYPE_STRING); + ccnvsnRetunID.put("INT", "" + Types.TYPE_INT); + ccnvsnRetunID.put("LONG", "" + Types.TYPE_LONG); + ccnvsnRetunID.put("SHORT", "" + Types.TYPE_SHORT); + ccnvsnRetunID.put("DOUBLE", "" + Types.TYPE_DOUBLE); + ccnvsnRetunID.put("FLOAT", "" + Types.TYPE_FLOAT); + ccnvsnRetunID.put("CHAR", "" + Types.TYPE_CHAR); + ccnvsnRetunID.put("BYTE", "" + Types.TYPE_BYTE); + ccnvsnRetunID.put("DATE", "" + Types.TYPE_DATE); + ccnvsnRetunID.put("TIME", "" + Types.TYPE_TIME); + ccnvsnRetunID.put("TIMESTAMP", "" + Types.TYPE_TIMESTAMP); + ccnvsnRetunID.put("NUMBER", "" + Types.TYPE_NUMBER); + ccnvsnRetunID.put("BYTEARRAY", "" + Types.TYPE_BYTEARRAY); + ccnvsnRetunID.put("NUMERIC", "" + Types.TYPE_NUMBER); + ccnvsnRetunID.put("PACKDECIMAL", "" + Types.TYPE_PACKDECIMAL); + ccnvsnRetunID.put("OBJECT", "" + Types.TYPE_OBJECT); + ccnvsnRetunID.put("BOOLEAN", "" + Types.TYPE_BOOLEAN); + ccnvsnRetunID.put("BIGDECIMAL", "" + Types.TYPE_BIGDECIMAL); + + return ccnvsnRetunID; + } + + // + /** + * 변환함수 유형 ID를 위한 Map 반환하는 메서드 + **/ + private static Map ccnvsnTypeID = new HashMap<>(); + + public static Map getCnvsnTypeID() { + ccnvsnTypeID.put("BUILTIN", "" + Function.TYPE_BUILTIN); + ccnvsnTypeID.put("PRIMITIVE", "" + Function.TYPE_PRIMITIVE); + ccnvsnTypeID.put("GENERIC", "" + Function.TYPE_GENERIC); + ccnvsnTypeID.put("CONVERT", "" + Function.TYPE_CONVERT); + ccnvsnTypeID.put("USERDEFINED", "" + Function.TYPE_USERDEFINED); + + return ccnvsnTypeID; + } + + /** + * 변환함수파라미터유형ID를 위한 Map 반환하는 메서드 + */ + private static Map ccnvsnParmTypeID = new HashMap<>(); + + public static Map getCnvsnParmTypeID() { + + ccnvsnParmTypeID.put("STRING", "" + Types.TYPE_STRING); + ccnvsnParmTypeID.put("INT", "" + Types.TYPE_INT); + ccnvsnParmTypeID.put("LONG", "" + Types.TYPE_LONG); + ccnvsnParmTypeID.put("SHORT", "" + Types.TYPE_SHORT); + ccnvsnParmTypeID.put("DOUBLE", "" + Types.TYPE_DOUBLE); + ccnvsnParmTypeID.put("FLOAT", "" + Types.TYPE_FLOAT); + ccnvsnParmTypeID.put("CHAR", "" + Types.TYPE_CHAR); + ccnvsnParmTypeID.put("BYTE", "" + Types.TYPE_BYTE); + ccnvsnParmTypeID.put("DATE", "" + Types.TYPE_DATE); + ccnvsnParmTypeID.put("TIME", "" + Types.TYPE_TIME); + ccnvsnParmTypeID.put("TIMESTAMP", "" + Types.TYPE_TIMESTAMP); + ccnvsnParmTypeID.put("NUMBER", "" + Types.TYPE_NUMBER); + ccnvsnParmTypeID.put("BYTEARRAY", "" + Types.TYPE_BYTEARRAY); + ccnvsnParmTypeID.put("NUMERIC", "" + Types.TYPE_NUMBER); + ccnvsnParmTypeID.put("PACKDECIMAL", "" + Types.TYPE_PACKDECIMAL); + ccnvsnParmTypeID.put("OBJECT", "" + Types.TYPE_OBJECT); + + return ccnvsnParmTypeID; + } + + /** + * 파라미터에 맵핑되는 Type의 String 이름 반환 + */ + public static String getType(int type) { + switch (type) { + case Types.TYPE_UNKNOWN: + return "UNKNOWN"; + + case Types.TYPE_STRING: + return "STRING"; + + case Types.TYPE_INT: + return "INT"; + + case Types.TYPE_LONG: + return "LONG"; + + case Types.TYPE_SHORT: + return "SHORT"; + + case Types.TYPE_DOUBLE: + return "DOUBLE"; + + case Types.TYPE_FLOAT: + return "FLOAT"; + + case Types.TYPE_CHAR: + return "CHAR"; + + case Types.TYPE_BYTE: + return "BYTE"; + + case Types.TYPE_DATE: + return "DATE"; + + case Types.TYPE_TIME: + return "TIME"; + + case Types.TYPE_TIMESTAMP: + return "TIMESTAMP"; + + case Types.TYPE_NUMBER: + return "NUMBER"; + + case Types.TYPE_BYTEARRAY: + return "BYTEARRAY"; + + case Types.TYPE_NUMERIC: + return "NUMERIC"; + + case Types.TYPE_PACKDECIMAL: + return "PACKDECIMAL"; + + case Types.TYPE_OBJECT: + return "OBJECT"; + + case Types.TYPE_BOOLEAN: + return "BOOLEAN"; + + default: + return "UNKNOWN"; + } + } + + /** + * 파라미터에 맵핑되는 Function Type의 String 이름 반환하는 메서드 + */ + public static String getFunctionType(int type) { + switch (type) { + case Function.TYPE_BUILTIN: + return "BUILTIN"; + + case Function.TYPE_PRIMITIVE: + return "PRIMITIVE"; + + case Function.TYPE_GENERIC: + return "GENERIC"; + + case Function.TYPE_CONVERT: + return "CONVERT"; + + case Function.TYPE_USERDEFINED: + return "USERDEFINED"; + + default: + return "GENERIC"; + } + } + + /** + * 레이아웃아이템노드유형ID를 위한 Hashtable 반환하는 메서드 + */ + private static Map loutItemNodePtrnID = new HashMap<>(); + + public static Map getLoutItemNodePtrnID() { + + loutItemNodePtrnID.put("NODE_MESSAGE", "" + Item.NODE_MESSAGE); + loutItemNodePtrnID.put("NODE_GROUP", "" + Item.NODE_GROUP); + loutItemNodePtrnID.put("NODE_FIELD", "" + Item.NODE_FIELD); + loutItemNodePtrnID.put("NODE_ATTR", "" + Item.NODE_ATTR); + + return loutItemNodePtrnID; + } + + /** + * 파라미터에 맵핑되는 LoutItemNode유형 Type의 String 이름 반환하는 메서드 + */ + public static String getLoutItemNodePtrnID(int type) { + switch (type) { + case Item.NODE_MESSAGE: + return "NODE_MESSAGE"; + + case Item.NODE_GROUP: + return "NODE_GROUP"; + + case Item.NODE_FIELD: + return "NODE_FIELD"; + + case Item.NODE_ATTR: + return "NODE_ATTR"; + + default: + return "UNKNOWN_NODE_TYPE"; + } + } + +} diff --git a/src/main/java/com/eactive/eai/transformer/util/XmlUtil.java b/src/main/java/com/eactive/eai/transformer/util/XmlUtil.java new file mode 100644 index 0000000..175e1d1 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/XmlUtil.java @@ -0,0 +1,110 @@ +package com.eactive.eai.transformer.util; + +/** + */ +public class XmlUtil { + + private static final String CDATA_START = ""; + private static final String CDATA_PSEUDO_END = "]]>"; + private static final String CDATA_EMBEDED_END = CDATA_END + CDATA_PSEUDO_END + CDATA_START; + private static final int CDATA_END_LEN = CDATA_END.length(); + + private XmlUtil() { + + } + + /** + * This method takes a string which may contain HTML tags (ie, + * <b>, <table>, etc) and replaces any + * '<', '>' , '&' or '"' + * characters with respective predefined entity references. + * + * @param input The text to be converted. + * @return The input string with the special characters replaced. + * */ + public static String escapeTags(final String input) { + // Check if the string is null, zero length or devoid of special characters + // if so, return what was sent in. + + if(input == null + || input.length() == 0 + || (input.indexOf('"') == -1 && + input.indexOf('&') == -1 && + input.indexOf('<') == -1 && + input.indexOf('>') == -1)) { + return input; + } + + StringBuilder buf = new StringBuilder(input.length() + 6); + char ch; + + int len = input.length(); + for(int i=0; i < len; i++) { + ch = input.charAt(i); + if (ch > '>') { + buf.append(ch); + } else if(ch == '<') { + buf.append("<"); + } else if(ch == '>') { + buf.append(">"); + } else if(ch == '&') { + buf.append("&"); + } else if(ch == '"') { + buf.append("""); + } else { + buf.append(ch); + } + } + return buf.toString(); + } + + /** + * Ensures that embeded CDEnd strings (]]>) are handled properly + * within message, NDC and throwable tag text. + * + * @param buf StringBuffer holding the XML data to this point. The + * initial CDStart () of the CDATA + * section are the responsibility of the calling method. + * @param str The String that is inserted into an existing CDATA Section within buf. + * */ + public static void appendEscapingCDATA(final StringBuilder buf, + final String str) { + if (str != null) { + int end = str.indexOf(CDATA_END); + if (end < 0) { + buf.append(str); + } else { + int start = 0; + while (end > -1) { + buf.append(str.substring(start, end)); + buf.append(CDATA_EMBEDED_END); + start = end + CDATA_END_LEN; + if (start < str.length()) { + end = str.indexOf(CDATA_END, start); + } else { + return; + } + } + buf.append(str.substring(start)); + } + } + } + + public static String removeXMLHeader(String xmlMsg) { + if(xmlMsg == null) { + return ""; + } + else { + xmlMsg = xmlMsg.trim(); + } + int sPos = xmlMsg.indexOf(""); + + // 중간에 있는 경우 - CDATA 의 내용 + if(sPos == 0 && ePos > -1) { + xmlMsg = xmlMsg.substring(ePos+2); + } + return xmlMsg; + } +} diff --git a/src/main/java/com/eactive/eai/transformer/util/code_basic.tab b/src/main/java/com/eactive/eai/transformer/util/code_basic.tab new file mode 100644 index 0000000..0b12140 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/code_basic.tab @@ -0,0 +1,17128 @@ +#EBCDIC,ASCII_BASIC +4040,A1A1 +4141,A1A2 +4142,A1A3 +4143,A1A4 +4144,A1A5 +4145,A1A6 +4146,A1A7 +4147,A1A8 +4148,A1A9 +4149,A1AA +414A,A1AB +414B,A1AC +414C,A3FE +414D,A1AE +414E,A1AF +414F,A1B0 +4150,A1B1 +4151,A1B2 +4152,A1B3 +4153,A1B4 +4154,A1B5 +4155,A1B6 +4156,A1B7 +4157,A1B8 +4158,A1B9 +4159,A1BA +415A,A1BB +415B,A1BC +415C,A1BD +415D,A1BE +415E,A1BF +415F,A1C0 +4163,A1C4 +4164,A1C5 +4165,A1C6 +4166,A1C7 +4167,A1C8 +4168,A1C9 +416A,A3DE +416B,A1CC +416C,A1CD +416D,A7A2 +416E,A7A3 +416F,A7A4 +4170,A7A6 +4171,A7AE +4172,A7AF +4173,A7B0 +4174,A7B7 +4175,A7B8 +4176,A1D7 +4177,A1D8 +4178,A1D9 +4179,A1DA +417A,A1DB +417B,A1DC +417C,A1DD +417D,A1DE +417E,A1DF +417F,A1E0 +4180,A1E1 +4181,A1E2 +4182,A1E3 +4183,A1E4 +4184,A1E5 +4185,A1E6 +4186,A1E7 +4187,A1E8 +4188,A1E9 +4189,A1EA +418A,A1EB +418B,A3DB +418C,A3DD +418D,A1C1 +418E,A1C2 +418F,A1C3 +4190,A1CA +4191,A1CE +4192,A1CF +4193,A1D0 +4194,A1D1 +4195,A1D2 +4196,A1D3 +4197,A1D4 +4198,A1D5 +4199,A1D6 +419A,A1EC +419B,A1ED +419C,A1EE +419D,A1EF +424A,A1CB +424B,A3AE +424C,A3BC +424D,A3A8 +424E,A3AB +424F,A3FC +4250,A3A6 +425A,A3A1 +425B,A3A4 +425C,A3AA +425D,A3A9 +425E,A3BB +425F,A1FE +4260,A3AD +4261,A3AF +426B,A3AC +426C,A3A5 +426D,A3DF +426E,A3BE +426F,A3BF +4279,A3E0 +427A,A3BA +427B,A3A3 +427C,A3C0 +427D,A3A7 +427E,A3BD +427F,A3A2 +4281,A3E1 +4282,A3E2 +4283,A3E3 +4284,A3E4 +4285,A3E5 +4286,A3E6 +4287,A3E7 +4288,A3E8 +4289,A3E9 +4291,A3EA +4292,A3EB +4293,A3EC +4294,A3ED +4295,A3EE +4296,A3EF +4297,A3F0 +4298,A3F1 +4299,A3F2 +42A1,A1AD +42A2,A3F3 +42A3,A3F4 +42A4,A3F5 +42A5,A3F6 +42A6,A3F7 +42A7,A3F8 +42A8,A3F9 +42A9,A3FA +42C0,A3FB +42C1,A3C1 +42C2,A3C2 +42C3,A3C3 +42C4,A3C4 +42C5,A3C5 +42C6,A3C6 +42C7,A3C7 +42C8,A3C8 +42C9,A3C9 +42D0,A3FD +42D1,A3CA +42D2,A3CB +42D3,A3CC +42D4,A3CD +42D5,A3CE +42D6,A3CF +42D7,A3D0 +42D8,A3D1 +42D9,A3D2 +42E0,A3DC +42E2,A3D3 +42E3,A3D4 +42E4,A3D5 +42E5,A3D6 +42E6,A3D7 +42E7,A3D8 +42E8,A3D9 +42E9,A3DA +42F0,A3B0 +42F1,A3B1 +42F2,A3B2 +42F3,A3B3 +42F4,A3B4 +42F5,A3B5 +42F6,A3B6 +42F7,A3B7 +42F8,A3B8 +42F9,A3B9 +4341,A4D5 +4342,A4D6 +4343,A4D7 +4344,A4D8 +4345,A4D9 +4346,A4DA +4347,A4DB +4348,A4DC +4349,A4DD +434A,A4DE +434B,A4DF +434C,A4E0 +434D,A4E1 +434E,A4E2 +434F,A4E3 +4350,A4E4 +4351,A4E5 +4352,A4E6 +4353,A4E7 +4354,A4E8 +4355,A4E9 +4356,A4EA +4357,A4EB +4358,A4EC +4359,A4ED +435A,A4EE +435B,A4EF +435C,A4F0 +435D,A4F1 +435E,A4F2 +435F,A4F3 +4360,A4F4 +4361,A4F5 +4362,A4F6 +4363,A4F7 +4364,A4F8 +4365,A4F9 +4366,A4FA +4367,A4FB +4368,A4FC +4369,A4FD +436A,A4FE +4441,AAA1 +4442,AAA2 +4443,AAA3 +4444,AAA4 +4445,AAA5 +4446,AAA6 +4447,AAA7 +4448,AAA8 +4449,AAA9 +444A,AAAA +444B,AAAB +444C,AAAC +444D,AAAD +444E,AAAE +444F,AAAF +4450,AAB0 +4451,AAB1 +4452,AAB2 +4453,AAB3 +4454,AAB4 +4455,AAB5 +4456,AAB6 +4457,AAB7 +4458,AAB8 +4459,AAB9 +445A,AABA +445B,AABB +445C,AABC +445D,AABD +445E,AABE +445F,AABF +4460,AAC0 +4461,AAC1 +4462,AAC2 +4463,AAC3 +4464,AAC4 +4465,AAC5 +4466,AAC6 +4467,AAC7 +4468,AAC8 +4469,AAC9 +446A,AACA +446B,AACB +446C,AACC +446D,AACD +446E,AACE +446F,AACF +4470,AAD0 +4471,AAD1 +4472,AAD2 +4473,AAD3 +4474,AAD4 +4475,AAD5 +4476,AAD6 +4477,AAD7 +4478,AAD8 +4479,AAD9 +447A,AADA +447B,AADB +447C,AADC +447D,AADD +447E,AADE +447F,AADF +4480,AAE0 +4481,AAE1 +4482,AAE2 +4483,AAE3 +4484,AAE4 +4485,AAE5 +4486,AAE6 +4487,AAE7 +4488,AAE8 +4489,AAE9 +448A,AAEA +448B,AAEB +448C,AAEC +448D,AAED +448E,AAEE +448F,AAEF +4490,AAF0 +4491,AAF1 +4492,AAF2 +4493,AAF3 +4541,ABA1 +4542,ABA2 +4543,ABA3 +4544,ABA4 +4545,ABA5 +4546,ABA6 +4547,ABA7 +4548,ABA8 +4549,ABA9 +454A,ABAA +454B,ABAB +454C,ABAC +454D,ABAD +454E,ABAE +454F,ABAF +4550,ABB0 +4551,ABB1 +4552,ABB2 +4553,ABB3 +4554,ABB4 +4555,ABB5 +4556,ABB6 +4557,ABB7 +4558,ABB8 +4559,ABB9 +455A,ABBA +455B,ABBB +455C,ABBC +455D,ABBD +455E,ABBE +455F,ABBF +4560,ABC0 +4561,ABC1 +4562,ABC2 +4563,ABC3 +4564,ABC4 +4565,ABC5 +4566,ABC6 +4567,ABC7 +4568,ABC8 +4569,ABC9 +456A,ABCA +456B,ABCB +456C,ABCC +456D,ABCD +456E,ABCE +456F,ABCF +4570,ABD0 +4571,ABD1 +4572,ABD2 +4573,ABD3 +4574,ABD4 +4575,ABD5 +4576,ABD6 +4577,ABD7 +4578,ABD8 +4579,ABD9 +457A,ABDA +457B,ABDB +457C,ABDC +457D,ABDD +457E,ABDE +457F,ABDF +4580,ABE0 +4581,ABE1 +4582,ABE2 +4583,ABE3 +4584,ABE4 +4585,ABE5 +4586,ABE6 +4587,ABE7 +4588,ABE8 +4589,ABE9 +458A,ABEA +458B,ABEB +458C,ABEC +458D,ABED +458E,ABEE +458F,ABEF +4590,ABF0 +4591,ABF1 +4592,ABF2 +4593,ABF3 +4594,ABF4 +4595,ABF5 +4596,ABF6 +4641,A5A1 +4642,A5A2 +4643,A5A3 +4644,A5A4 +4645,A5A5 +4646,A5A6 +4647,A5A7 +4648,A5A8 +4649,A5A9 +464A,A5AA +4650,A5B0 +4651,A5B1 +4652,A5B2 +4653,A5B3 +4654,A5B4 +4655,A5B5 +4656,A5B6 +4657,A5B7 +4658,A5B8 +4659,A5B9 +4661,A5C1 +4662,A5C2 +4663,A5C3 +4664,A5C4 +4665,A5C5 +4666,A5C6 +4667,A5C7 +4668,A5C8 +4669,A5C9 +466A,A5CA +466B,A5CB +466C,A5CC +466D,A5CD +466E,A5CE +466F,A5CF +4670,A5D0 +4671,A5D1 +4672,A5D2 +4673,A5D3 +4674,A5D4 +4675,A5D5 +4676,A5D6 +4677,A5D7 +4678,A5D8 +4681,A5E1 +4682,A5E2 +4683,A5E3 +4684,A5E4 +4685,A5E5 +4686,A5E6 +4687,A5E7 +4688,A5E8 +4689,A5E9 +468A,A5EA +468B,A5EB +468C,A5EC +468D,A5ED +468E,A5EE +468F,A5EF +4690,A5F0 +4691,A5F1 +4692,A5F2 +4693,A5F3 +4694,A5F4 +4695,A5F5 +4696,A5F6 +4697,A5F7 +4698,A5F8 +4741,A6A1 +4742,A6A2 +4743,A6A3 +4744,A6A4 +4745,A6A5 +4746,A6A6 +4747,A6A7 +4748,A6A8 +4749,A6A9 +474A,A6AA +474B,A6AB +474C,A6AC +474D,A6AD +474E,A6AE +474F,A6AF +4750,A6B0 +4751,A6B1 +4752,A6B2 +4753,A6B3 +4754,A6B4 +4755,A6B5 +4756,A6B6 +4757,A6B7 +4758,A6B8 +4759,A6B9 +475A,A6BA +475B,A6BB +475C,A6BC +475D,A6BD +475E,A6BE +475F,A6BF +4760,A6C0 +4761,A6C1 +4762,A6C2 +4763,A6C3 +4764,A6C4 +4765,A6C5 +4766,A6C6 +4767,A6C7 +4768,A6C8 +4769,A6C9 +476A,A6CA +476B,A6CB +476C,A6CC +476D,A6CD +476E,A6CE +476F,A6CF +4770,A6D0 +4771,A6D1 +4772,A6D2 +4773,A6D3 +4774,A6D4 +4775,A6D5 +4776,A6D6 +4777,A6D7 +4778,A6D8 +4779,A6D9 +477A,A6DA +477B,A6DB +477C,A6DC +477D,A6DD +477E,A6DE +477F,A6DF +4780,A6E0 +4781,A6E1 +4782,A6E2 +4783,A6E3 +4784,A6E4 +4841,A7A1 +4842,A7A5 +4843,A7A7 +4844,A7A8 +4845,A7A9 +4846,A7AA +4847,A7AB +4848,A7AC +4849,A7AD +484A,A7B1 +484B,A7B2 +484C,A7B3 +484D,A7B4 +484E,A7B5 +484F,A7B6 +4850,A7B9 +4851,A7BA +4852,A7BB +4853,A7BC +4854,A7BD +4855,A7BE +4856,A7BF +4857,A7C0 +4858,A7C1 +4859,A7C2 +485A,A7C3 +485B,A7C4 +485C,A7C5 +485D,A7C6 +485E,A7C7 +485F,A7C8 +4860,A7C9 +4861,A7CA +4862,A7CB +4863,A7CC +4864,A7CD +4865,A7CE +4866,A7CF +4867,A7D0 +4868,A7D1 +4869,A7D2 +486A,A7D3 +486B,A7D4 +486C,A7D5 +486D,A7D6 +486E,A7D7 +486F,A7D8 +4870,A7D9 +4871,A7DA +4872,A7DB +4873,A7DC +4874,A7DD +4875,A7DE +4876,A7DF +4877,A7E0 +4878,A7E1 +4879,A7E2 +487A,A7E3 +487B,A7E4 +487C,A7E5 +487D,A7E6 +487E,A7E7 +487F,A7E8 +4880,A7E9 +4881,A7EA +4882,A7EB +4883,A7EC +4884,A7ED +4885,A7EE +4886,A7EF +4941,A1F0 +4942,A1F1 +4943,A1F2 +4944,A1F3 +4945,A1F4 +4946,A1F5 +4947,A1F6 +4948,A1F7 +4949,A1F8 +494A,A1F9 +494B,A1FA +494C,A1FB +494D,A1FC +494E,A1FD +494F,A2A1 +4950,A2A2 +4951,A2A3 +4952,A2A4 +4953,A2A5 +4954,A2A6 +4955,A2A7 +4956,A2A8 +4957,A2A9 +4958,A2AA +4959,A2AB +495A,A2AC +495B,A2AD +495C,A2AE +495D,A2AF +495E,A2B0 +495F,A2B1 +4960,A2B2 +4961,A2B3 +4962,A2B4 +4963,A2B5 +4964,A2B6 +4965,A2B7 +4966,A2B8 +4967,A2B9 +4968,A2BA +4969,A2BB +496A,A2BC +496B,A2BD +496C,A2BE +496D,A2BF +496E,A2C0 +496F,A2C1 +4970,A2C2 +4971,A2C3 +4972,A2C4 +4973,A2C5 +4974,A2C6 +4975,A2C7 +4976,A2C8 +4977,A2C9 +4978,A2CA +4979,A2CB +497A,A2CC +497B,A2CD +497C,A2CE +497D,A2CF +497E,A2D0 +497F,A2D1 +4980,A2D2 +4981,A2D3 +4982,A2D4 +4983,A2D5 +4984,A2D6 +4985,A2D7 +4986,A2D8 +4987,A2D9 +4988,A2DA +4989,A2DB +498A,A2DC +498B,A2DD +498C,A2DE +498D,A2DF +498E,A2E0 +498F,A2E1 +4990,A2E2 +4991,A2E3 +4992,A2E4 +4993,A2E5 +4995,A2E6 +4996,A2E7 +4A41,ACA1 +4A42,ACA2 +4A43,ACA3 +4A44,ACA4 +4A45,ACA5 +4A46,ACA6 +4A47,ACA7 +4A48,ACA8 +4A49,ACA9 +4A4A,ACAA +4A4B,A1A1 +4A4C,A1A1 +4A4D,A1A1 +4A4E,A1A1 +4A4F,A1A1 +4A50,A1A1 +4A51,A1A1 +4A52,A1A1 +4A53,A1A1 +4A54,A1A1 +4A55,A1A1 +4A56,A1A1 +4A57,A1A1 +4A58,A1A1 +4A59,A1A1 +4A5A,A1A1 +4A5B,A1A1 +4A5C,A1A1 +4A5D,A1A1 +4A5E,A1A1 +4A5F,A1A1 +4A60,A1A1 +4A61,A1A1 +4A62,A1A1 +4A63,A1A1 +4A64,A1A1 +4A65,A1A1 +4A66,A1A1 +4A67,A1A1 +4A68,A1A1 +4A69,A1A1 +4A6A,A1A1 +4A6B,A1A1 +4A6C,A1A1 +4A6D,A1A1 +4A6E,A1A1 +4A6F,A1A1 +4A70,A1A1 +4A71,A1A1 +4A72,A1A1 +4A73,A1A1 +4A74,A1A1 +4A75,A1A1 +4A76,A1A1 +4A77,A1A1 +4A78,A1A1 +4A79,A1A1 +4A7A,A1A1 +4A7B,A1A1 +4A7C,A1A1 +4A7D,A1A1 +4A7E,A1A1 +4A7F,A1A1 +4A80,A1A1 +4A81,A1A1 +4A82,A1A1 +4B41,A8A1 +4B42,A8A2 +4B43,A8A3 +4B44,A8A4 +4B46,A8A6 +4B48,A8A8 +4B49,A8A9 +4B4A,A8AA +4B4B,A8AB +4B4C,A8AC +4B4D,A8AD +4B4E,A8AE +4B4F,A8AF +4B51,A8B1 +4B52,A8B2 +4B53,A8B3 +4B54,A8B4 +4B55,A8B5 +4B56,A8B6 +4B57,A8B7 +4B58,A8B8 +4B59,A8B9 +4B5A,A8BA +4B5B,A8BB +4B5C,A8BC +4B5D,A8BD +4B5E,A8BE +4B5F,A8BF +4B60,A8C0 +4B61,A8C1 +4B62,A8C2 +4B63,A8C3 +4B64,A8C4 +4B65,A8C5 +4B66,A8C6 +4B67,A8C7 +4B68,A8C8 +4B69,A8C9 +4B6A,A8CA +4B6B,A8CB +4B6C,A8CC +4B6D,A8CD +4B6E,A8CE +4B6F,A8CF +4B70,A8D0 +4B71,A8D1 +4B72,A8D2 +4B73,A8D3 +4B74,A8D4 +4B75,A8D5 +4B76,A8D6 +4B77,A8D7 +4B78,A8D8 +4B79,A8D9 +4B7A,A8DA +4B7B,A8DB +4B7C,A8DC +4B7D,A8DD +4B7E,A8DE +4B7F,A8DF +4B80,A8E0 +4B81,A8E1 +4B82,A8E2 +4B83,A8E3 +4B84,A8E4 +4B85,A8E5 +4B86,A8E6 +4B87,A8E7 +4B88,A8E8 +4B89,A8E9 +4B8A,A8EA +4B8B,A8EB +4B8C,A8EC +4B8D,A8ED +4B8E,A8EE +4B8F,A8EF +4B90,A8F0 +4B91,A8F1 +4B92,A8F2 +4B93,A8F3 +4B94,A8F4 +4B95,A8F5 +4B96,A8F6 +4B97,A8F7 +4B98,A8F8 +4B99,A8F9 +4B9A,A8FA +4B9B,A8FB +4B9C,A8FC +4B9D,A8FD +4B9E,A8FE +4BA0,A9A1 +4BA1,A9A2 +4BA2,A9A3 +4BA3,A9A4 +4BA4,A9A5 +4BA5,A9A6 +4BA6,A9A7 +4BA7,A9A8 +4BA8,A9A9 +4BA9,A9AA +4BAA,A9AB +4BAB,A9AC +4BAC,A9AD +4BAD,A9AE +4BAE,A9AF +4BAF,A9B0 +4BB0,A9B1 +4BB1,A9B2 +4BB2,A9B3 +4BB3,A9B4 +4BB4,A9B5 +4BB5,A9B6 +4BB6,A9B7 +4BB7,A9B8 +4BB8,A9B9 +4BB9,A9BA +4BBA,A9BB +4BBB,A9BC +4BBC,A9BD +4BBD,A9BE +4BBE,A9BF +4BBF,A9C0 +4BC0,A9C1 +4BC1,A9C2 +4BC2,A9C3 +4BC3,A9C4 +4BC4,A9C5 +4BC5,A9C6 +4BC6,A9C7 +4BC7,A9C8 +4BC8,A9C9 +4BC9,A9CA +4BCA,A9CB +4BCB,A9CC +4BCC,A9CD +4BCD,A9CE +4BCE,A9CF +4BCF,A9D0 +4BD0,A9D1 +4BD1,A9D2 +4BD2,A9D3 +4BD3,A9D4 +4BD4,A9D5 +4BD5,A9D6 +4BD6,A9D7 +4BD7,A9D8 +4BD8,A9D9 +4BD9,A9DA +4BDA,A9DB +4BDB,A9DC +4BDC,A9DD +4BDD,A9DE +4BDE,A9DF +4BDF,A9E0 +4BE0,A9E1 +4BE1,A9E2 +4BE2,A9E3 +4BE3,A9E4 +4BE4,A9E5 +4BE5,A9E6 +4BE6,A9E7 +4BE7,A9E8 +4BE8,A9E9 +4BE9,A9EA +4BEA,A9EB +4BEB,A9EC +4BEC,A9ED +4BED,A9EE +4BEE,A9EF +4BEF,A9F0 +4BF0,A9F1 +4BF1,A9F2 +4BF2,A9F3 +4BF3,A9F4 +4BF4,A9F5 +4BF5,A9F6 +4BF6,A9F7 +4BF7,A9F8 +4BF8,A9F9 +4BF9,A9FA +4BFA,A9FB +4BFB,A9FC +4BFC,A9FD +4BFD,A9FE +5041,CAA1 +5042,CAA2 +5043,CAA3 +5044,CAA4 +5045,CAA5 +5046,CAA6 +5047,CAA7 +5048,CAA8 +5049,CAA9 +504A,CAAA +504B,CAAB +504C,CAAC +504D,CAAF +504E,CAAD +504F,CAB0 +5050,CAB3 +5051,CAB4 +5052,CAB5 +5053,CAB6 +5054,CAB7 +5055,CAB8 +5056,CAB9 +5057,CABA +5058,CABB +5059,CABC +505A,CABD +505B,CABE +505C,CABF +505D,CAC0 +505F,CAC1 +5061,CAC3 +5062,CAC4 +5063,CAC5 +5064,CAC6 +5065,CAC7 +5066,CAC8 +5067,CACA +5068,CACB +5069,CACC +506A,CACD +506B,CACE +506C,CACF +506D,CAD0 +506E,CAD1 +506F,CAD2 +5070,CAD5 +5071,CAD6 +5072,CAD7 +5073,CAD9 +5074,CADA +5075,CADB +5076,CADD +5077,CADE +5078,CADC +5079,CADF +507A,CAE0 +507B,CAE1 +507C,CAE2 +507D,CAE3 +507E,CAE4 +507F,CAE5 +5080,CAE6 +5081,CAE8 +5083,CAE7 +5084,CAEA +5085,CAEB +5086,CAEC +5087,CAED +5088,CAEE +5089,CAEF +508A,CAF0 +508B,CAF2 +508C,CAF3 +508D,CAF4 +508E,CAF5 +508F,CAF6 +5090,CAF7 +5091,CAF8 +5092,CAFA +5094,CAFC +5095,CAFE +5096,CBA1 +5097,CBA2 +5098,CBA3 +5099,CBA4 +509A,CBA5 +509B,CBA6 +509C,CBAA +509D,CBA7 +509E,CBA9 +509F,CBAB +50A0,CBAC +50A1,CBAD +50A2,CBAE +50A3,CBAF +50A4,CBB0 +50A5,CBB2 +50A6,CBB5 +50A7,CBBA +50A8,CBB3 +50A9,CBB7 +50AA,CBB9 +50AB,CBBB +50AC,CBBC +50AD,CBBD +50AE,CBBF +50AF,CBC0 +50B0,CBC1 +50B1,CBC2 +50B2,CBC4 +50B3,CBC5 +50B4,CBC6 +50B5,CBC7 +50B6,CBC8 +50B7,CBC9 +50B8,CBCA +50B9,CBCB +50BA,CBCC +50BB,CBCD +50BC,CBCE +50BD,CBCF +50BE,CBD2 +50BF,CBD4 +50C0,CBD5 +50C1,CBD6 +50C2,CBD7 +50C3,CBD8 +50C4,CBD9 +50C5,CBDB +50C6,CBDC +50C7,CBDD +50C8,CBDE +50C9,CBDF +50CA,CBE0 +50CB,CBE2 +50CC,CBE3 +50CD,CBE1 +50CE,CBE5 +50CF,CBE8 +50D0,CBE7 +50D2,CBEA +50D3,CBEB +50D4,CBEC +50D5,CBED +50D6,CBEE +50D7,CBEF +50D8,CBF0 +50D9,CBF3 +50DA,CBF4 +50DB,CBF5 +50DC,CBF6 +50DD,CBF7 +50DE,CBF8 +50DF,CBF9 +50E0,CBFB +50E1,CBFC +50E2,CBFE +50E3,CCA1 +50E4,CCA3 +50E5,CCA4 +50E6,CCA5 +50E7,CCA7 +50E8,CCA8 +50E9,CCA9 +50EA,CCAA +50EB,CCAB +50EC,CCAC +50ED,CCAD +50EE,CCAF +50EF,CCB0 +50F1,CCB1 +50F2,CCB7 +50F3,CCB2 +50F4,CCB3 +50F5,CCB4 +50F6,CCB5 +50F7,CCB6 +50F8,CCB8 +50F9,CCB9 +50FA,CCBA +50FB,CCBB +50FC,CCBE +50FD,CCBD +50FE,CCBF +5141,CCC0 +5142,CCC1 +5143,CCC2 +5144,CCC3 +5145,CCC4 +5147,CCC5 +5148,CCC7 +5149,CCC8 +514A,CCCB +514B,CCCD +514C,CCCE +514D,CCCF +514F,CCD1 +5150,CCD2 +5151,CCD3 +5152,CCD4 +5153,CCD9 +5155,CCD6 +5156,CCD7 +5157,CCD8 +5158,CCDA +5159,CCDB +515B,CCDC +515C,CCDD +515E,CCDF +515F,CCE1 +5161,CCE2 +5162,CCE3 +5163,CCE4 +5164,CCE5 +5165,CCE6 +5166,CCE7 +5167,CCE8 +5168,CCE9 +5169,CCEA +516A,CCEB +516B,CCEC +516C,CCED +516D,CCEE +516E,CCEF +516F,CCF0 +5170,CCF1 +5171,CCF2 +5172,CCF3 +5173,CCF4 +5174,CCF5 +5175,CCF6 +5176,CCF8 +5177,CCF9 +5178,CCFA +5179,CCFB +517A,CCFC +517B,CCFD +517C,CCFE +517D,CDA2 +517E,CDA3 +517F,CDA4 +5180,CDA5 +5182,CDA6 +5183,CDA7 +5184,CDA8 +5185,CDA9 +5186,CDAA +5187,CDAB +5188,CDAD +5189,CDAC +518B,CDAE +518C,CDB0 +518D,CDAF +518E,CDB1 +518F,CDB2 +5190,CDB3 +5191,CDB4 +5192,CDB5 +5193,CDB7 +5194,CDB8 +5195,CDB9 +5196,CDBA +5197,CDBB +5198,CDBD +519A,CDBF +519B,CDC0 +519C,CDC1 +519D,CDCC +519F,CDC3 +51A0,CDC2 +51A1,CDC5 +51A2,CDC6 +51A3,CDC7 +51A4,CDC8 +51A5,CDCB +51A6,CDCD +51A8,CDCE +51A9,CDCF +51AA,CDD0 +51AB,CDD1 +51AC,CDD2 +51AD,CDD3 +51AE,CDD4 +51AF,CDD5 +51B0,CDD6 +51B1,CDD7 +51B2,CDD8 +51B3,CDD9 +51B4,CDDA +51B5,CDDB +51B6,CDDC +51B7,CDDD +51B8,CDDE +51B9,CDDF +51BA,CDE0 +51BB,CDE1 +51BC,CDE2 +51BD,CDE3 +51BE,CDE5 +51BF,CDE7 +51C0,CDE8 +51C1,CDE9 +51C2,CDEA +51C3,CDEB +51C4,CDEC +51C5,CDED +51C6,CDEE +51C7,CDEF +51C8,CDF8 +51C9,CDF1 +51CA,CDF0 +51CB,CDF2 +51CC,CDF3 +51CD,CDF4 +51D0,CDF6 +51D2,CDFB +51D3,CDFC +51D4,CDFD +51D5,CDFE +51D6,CEA1 +51D7,CEA2 +51D9,CEA3 +51DA,CEA4 +51DB,CEA6 +51DC,CEA8 +51DD,CEA9 +51DE,CEAA +51DF,CEAB +51E0,CEAC +51E2,CEAD +51E3,CEAE +51E4,CEAF +51E5,CEB0 +51E6,CEB1 +51E7,CEB2 +51E8,CEB6 +51E9,CEB3 +51EA,CEB4 +51EC,CEB7 +51ED,CEB8 +51EE,CEB9 +51EF,CEBA +51F0,CEBB +51F1,CEBC +51F2,CEBD +51F4,CEBE +51F5,CEBF +51F6,CEC0 +51F7,CEC1 +51F8,CEC3 +51F9,CEC4 +51FA,CEC5 +51FB,CEC6 +51FC,CEC7 +51FD,CEC8 +51FE,CECA +5241,CECB +5242,CECC +5243,CECD +5244,CECE +5245,CECF +5246,CED0 +5247,CED1 +5248,CED2 +5249,CED3 +524A,CED4 +524B,CED5 +524C,CED6 +524D,CED7 +524E,CED8 +524F,CED9 +5250,CEDA +5251,CEDB +5252,CEDC +5253,CEDD +5254,CEDE +5255,CEDF +5256,CEE0 +5257,CEE1 +5258,CEE2 +5259,CEE3 +525A,CEE4 +525B,CEE5 +525C,CEE7 +525D,CEE6 +525E,CEE8 +525F,CEE9 +5260,CEEA +5261,CEEB +5262,CEEC +5263,CEED +5264,CEEE +5265,CEEF +5266,CEF0 +5267,CEF1 +5268,CEF2 +5269,CEF3 +526A,CEF4 +526C,CEF5 +526D,CEF6 +526E,CEF7 +526F,CEF8 +5270,CEF9 +5271,CEFA +5272,CEFB +5274,CEFC +5276,CEFD +5277,CEFE +5278,CFA1 +5279,CFA2 +527A,CFA3 +527B,CFA4 +527C,CFA5 +527D,CFA7 +5280,CFA8 +5281,CFA9 +5282,CFAA +5283,CFAB +5284,CFAC +5285,CFAD +5287,CFAE +5288,CFAF +5289,CFB0 +528A,CFB1 +528B,CFB2 +528C,CFB3 +528D,CFB4 +528E,CFB5 +528F,CFB6 +5290,CFB7 +5291,CFB8 +5292,CFB9 +5294,CFBA +5295,CFBB +5296,CFBC +5297,CFBD +5298,CFC5 +5299,CFBF +529A,CFC0 +529B,CFC1 +529C,CFC2 +529D,CFC3 +529F,CFC4 +52A0,CFC6 +52A1,CFC7 +52A2,CFC8 +52A3,CFC9 +52A5,CFCB +52A6,CFCC +52A7,CFCD +52A8,CFCE +52A9,CFCF +52AA,CFD0 +52AB,CFD1 +52AD,CFD2 +52AE,CFD3 +52AF,CFD5 +52B0,CFD7 +52B1,CFD8 +52B2,CFDA +52B3,CFD6 +52B4,CFDB +52B5,CFDC +52B6,CFDD +52B7,CFDE +52B8,CFDF +52B9,CFE0 +52BA,CFE1 +52BB,CFE2 +52BC,CFE3 +52BD,CFE5 +52BE,CFE6 +52BF,CFE7 +52C0,CFE8 +52C1,CFE9 +52C2,CFEA +52C3,CFEB +52C4,CFED +52C5,CFEF +52C6,CFF0 +52C7,CFF3 +52C8,CFF4 +52C9,CFF5 +52CA,CFF6 +52CB,CFF7 +52CC,CFF8 +52CE,CFF9 +52CF,CFFA +52D0,CFFD +52D1,CFFE +52D2,D0A1 +52D3,D0A2 +52D4,D0A3 +52D5,D0A4 +52D6,D0A5 +52D7,D0A6 +52D8,D0A8 +52D9,D0A9 +52DA,D0AA +52DB,D0AD +52DC,D0AC +52DD,D0AE +52DE,D0AF +52DF,D0B0 +52E0,D0B1 +52E1,D0B3 +52E2,D0B5 +52E3,D0B6 +52E4,D0B7 +52E5,D0B8 +52E6,D0B9 +52E7,D0BA +52E8,D0BB +52E9,D0BC +52EA,D0BD +52EB,D0BF +52EC,D0BE +52ED,D0C0 +52EE,D0C1 +52EF,D0C3 +52F1,D0C4 +52F2,D0C5 +52F3,D0C6 +52F4,D0C7 +52F6,D0C8 +52F7,D0C9 +52F8,D0CA +52F9,D0CB +52FA,D0CC +52FB,D0CD +52FC,D0CE +52FD,D0CF +52FE,D0D0 +5341,D0D1 +5342,D0D3 +5343,D0D5 +5344,D0D6 +5345,D0D7 +5346,D0D8 +5347,D0DB +5348,D0DA +5349,D0DC +534A,D0DD +534B,D0DE +534C,D0E0 +534E,D0E1 +534F,D0E2 +5350,D0E3 +5352,D0E4 +5353,D0E5 +5354,D0E6 +5355,D0E7 +5356,D0E8 +5357,D0E9 +5358,D0EA +5359,D0EB +535A,D0EC +535B,D0ED +535C,D0EE +535D,D0EF +535E,D0F0 +535F,D0F1 +5360,D0F3 +5361,D0F4 +5362,D0F5 +5363,D0F6 +5364,D0F7 +5365,D1C2 +5366,D0F8 +5367,D0FA +5368,D0F9 +5369,D0FB +536A,D0FC +536B,D0FD +536C,D0FE +536D,D1A2 +536E,D1A3 +536F,D1A4 +5370,D1A5 +5371,D1A6 +5372,D1A7 +5373,D1A8 +5374,D1A9 +5375,D1AA +5376,D1AB +5377,D1AD +5378,D1AE +5379,D1B0 +537A,D1B1 +537B,D1B2 +537C,D1B3 +537D,D1B4 +537E,D1B6 +537F,D1B7 +5380,D1B8 +5381,D1B9 +5382,D1BA +5383,D1BB +5385,D1BD +5386,D1BE +5387,D1BF +5388,D1A1 +5389,D1C0 +538A,D1C1 +538B,D1C3 +538C,D1C4 +538D,D1C6 +538E,D1C7 +538F,D1C8 +5390,D1C9 +5391,D1CA +5393,D1CB +5394,D1CC +5395,D1CD +5396,D1CE +5397,D1CF +5398,D1D0 +5399,D1D1 +539B,D1D2 +539C,D1D3 +539D,D1D7 +539E,D1D9 +539F,D1DA +53A1,D1E1 +53A2,D1E7 +53A3,D1EC +53A4,D1EE +53A5,D1F1 +53A6,D1F4 +53A7,D1F3 +53A8,D1F5 +53AA,D1FB +53AB,D2A1 +53AC,D2A5 +53AD,D2A6 +53AF,D2AC +53B0,D2AE +53B1,D2AF +53B2,D2B0 +53B3,D2B1 +53B5,D2B3 +53B6,D2B4 +53B7,D2B6 +53B8,D2B7 +53B9,D2B8 +53BA,D2B9 +53BB,D2BA +53BD,D2BB +53BF,D2BD +53C0,D2BF +53C2,D2C0 +53C3,D2C1 +53C4,D2C5 +53C5,D2D8 +53C6,D2DB +53C7,D2DC +53C8,D2DD +53C9,D2E0 +53CA,D2E3 +53CC,D2EC +53CD,D2ED +53CE,D2EF +53CF,D2F6 +53D0,D2F9 +53D1,D2FA +53D2,D2FB +53D3,D2FC +53D4,D2FD +53D5,D2FE +53D6,D3A1 +53D7,D3A3 +53D8,D3A4 +53D9,D3A5 +53DA,D3A6 +53DB,D3A8 +53DC,D3A9 +53DD,D3AA +53DE,D3AB +53DF,D3AC +53E0,D3AD +53E1,D3AE +53E2,D3AF +53E3,D3B0 +53E4,D3B1 +53E5,D3B2 +53E6,D3B3 +53E7,D3B4 +53EA,D3B5 +53EB,D3B7 +53EC,D3B8 +53ED,D3B9 +53F0,D3BA +53F1,D3BD +53F2,D3BE +53F3,D3BF +53F4,D3C1 +53F5,D3C2 +53F6,D3C3 +53F7,D3C4 +53F8,D3C5 +53F9,D3C7 +53FA,D3C8 +53FB,D3C9 +53FC,D3CB +53FD,D3CD +53FE,D3CE +5441,D3CF +5443,D3D1 +5444,D3D2 +5445,D3D3 +5446,D3D0 +5447,D3D5 +5448,D3D6 +5449,D3D7 +544A,D3D8 +544C,D3DA +544D,D3DB +544E,D3DC +544F,D3DE +5450,D3DF +5451,D3E0 +5452,D3E1 +5453,D3E2 +5454,D3E3 +5455,D3E4 +5456,D3E5 +5458,D3E6 +5459,D3E7 +545A,D3E8 +545B,D3E9 +545C,D3EA +545D,D3EB +545E,D3EC +545F,D3ED +5460,D3EE +5461,D3EF +5462,D3F0 +5463,D3F1 +5464,D3F2 +5465,D3F3 +5466,D3F4 +5467,D3F5 +5468,D3F6 +5469,D3F8 +546A,D3F9 +546B,D3FA +546C,D3FB +546D,D3FD +546E,D3FE +546F,D4A1 +5470,D4A3 +5471,D4A4 +5472,D4A5 +5473,D4A6 +5474,D4A7 +5475,D4A8 +5476,D4A9 +5477,D4AA +5478,D4AB +5479,D4AC +547B,D4AE +547C,D4AF +547D,D4B0 +547E,D4B1 +547F,D4B2 +5480,D4B3 +5481,D4B4 +5482,D4B5 +5483,D4B6 +5484,D4B7 +5485,D4B8 +5486,D4B9 +5487,D4BA +5488,D4BB +5489,D4BC +548A,D4BD +548B,D4BE +548C,D4BF +548D,D4C0 +548E,D4C1 +548F,D4C2 +5490,D4C3 +5491,D4C4 +5492,D4C6 +5493,D4C7 +5494,D4C9 +5495,D4CA +5496,D4CB +5498,D4CC +5499,D4CD +549A,D4CE +549B,D4CF +549C,D4D0 +549D,D4D1 +549E,D4D2 +54A0,D4D3 +54A1,D4D4 +54A2,D4D5 +54A3,D4D6 +54A4,D4D7 +54A5,D4D8 +54A6,D4DB +54A7,D4D9 +54A8,D4DA +54A9,D4DD +54AA,D4DC +54AB,D4DE +54AC,D4DF +54AD,D4E0 +54AE,D4E1 +54AF,D4E2 +54B0,D4E3 +54B1,D4E4 +54B2,D4E5 +54B5,D4E6 +54B6,D4E7 +54B7,D4E9 +54B8,D4EA +54B9,D4EB +54BA,D4ED +54BB,D4EE +54BC,D4EF +54BD,D4F0 +54BE,D4F2 +54C1,D4F3 +54C2,D4F4 +54C3,D4F5 +54C4,D4F6 +54C5,D4F7 +54C6,D4F8 +54C8,D4F9 +54C9,D4FA +54CA,D4FB +54CB,D4FD +54CC,D4FE +54CD,D5A1 +54CE,D5A2 +54CF,D5A3 +54D0,D5A4 +54D1,D5A5 +54D2,D5A6 +54D3,D5A7 +54D5,D5A8 +54D6,D5A9 +54D7,D5AA +54D8,D5AC +54D9,D5AD +54DA,D5AF +54DB,D5B0 +54DD,D5B1 +54DE,D5B2 +54DF,D5B3 +54E0,D5B4 +54E1,D5B5 +54E2,D5B6 +54E3,D5B7 +54E5,D5B8 +54E6,D5B9 +54E7,D5BA +54E8,D5BB +54E9,D5BC +54EA,D5BD +54EB,D5BE +54EC,D5BF +54ED,D5C0 +54EE,D5C1 +54EF,D5C2 +54F0,D5C3 +54F1,D5C4 +54F2,D5C5 +54F3,D5C6 +54F4,D5C7 +54F6,D5C8 +54F7,D5C9 +54F8,D5CA +54F9,D5CB +54FA,D5CC +54FB,D5CD +54FC,D5CE +54FD,D5D1 +54FE,D5D2 +5541,D5D3 +5542,D5D4 +5543,D5D5 +5544,D5D7 +5545,D5D6 +5546,D5D8 +5547,D5D9 +5549,D5DA +554A,D5DB +554B,D5DC +554C,D5DD +554D,D5DE +554E,D5DF +554F,D5E0 +5550,D5E1 +5552,D5E2 +5553,D5E4 +5554,D5E5 +5555,D5E6 +5556,D5E8 +5557,D5E9 +5558,D5EA +5559,D5EB +555B,D5EC +555D,D5ED +555E,D5E7 +555F,D5EE +5562,D5EF +5563,D5F0 +5564,D5F1 +5565,D5F2 +5566,D5F3 +5567,D5F4 +5568,D5F6 +5569,D5F5 +556B,D5F7 +556C,D5F8 +556D,D5F9 +556E,D5FA +556F,D5FB +5570,D5FC +5571,D5FD +5572,D5FE +5573,D6A1 +5574,D6A3 +5575,D6A4 +5576,D6A5 +5577,D6A6 +5578,D6A7 +5579,D6A8 +557A,D6A9 +557B,D6AB +557C,D6AA +557D,D6AC +557E,D6AD +557F,D6AE +5580,D6AF +5581,D6B0 +5582,D6B1 +5583,D6B2 +5584,D6B3 +5585,D6B4 +5587,D6B5 +5588,D6B6 +5589,D6B7 +558A,D6BA +558B,D6BB +558E,D6BC +558F,D6BE +5590,D6BF +5593,D6C1 +5594,D6C3 +5595,D6C4 +5596,D6C2 +5597,D6C5 +5598,D6C6 +5599,D6C7 +559A,D6C9 +559B,D6CA +559C,D6CB +559D,D6CC +559E,D6CE +559F,D6D0 +55A1,D6D3 +55A2,D6D2 +55A3,D6D4 +55A4,D6D5 +55A6,D6D6 +55A7,D6D7 +55A8,D6D8 +55A9,D6D9 +55AB,D6DA +55AC,D6DB +55AD,D6DC +55AE,D6DD +55B0,D6DE +55B2,D6E0 +55B4,D6E2 +55B5,D6E4 +55B6,D6E3 +55B7,D6E5 +55B8,D6E6 +55B9,D6E7 +55BA,D6E8 +55BB,D6E9 +55BC,D6EA +55BD,D6EB +55BE,D6EC +55BF,D6ED +55C0,D6EF +55C1,D6F0 +55C5,D6F3 +55C6,D6F1 +55C7,D6F4 +55C8,D6F5 +55C9,D6F6 +55CB,D6F7 +55CC,D6F8 +55CD,D6FA +55CE,D6FB +55CF,D6FC +55D0,D6F9 +55D1,D6FD +55D2,D6FE +55D3,D7A1 +55D4,D7A3 +55D6,D7A4 +55D7,D7A6 +55D8,D7A7 +55D9,D7A8 +55DA,D7A9 +55DB,D7AB +55DC,D7AC +55DD,D7AE +55DE,D7B0 +55E0,D7B1 +55E1,D7B3 +55E2,D7B4 +55E3,D7B5 +55E4,D7B6 +55E5,D7B8 +55E6,D7B9 +55E7,D7BA +55E8,D7BB +55E9,D7BC +55EA,D7BD +55EB,D7BE +55EC,D7BF +55ED,D7C0 +55EE,D7C1 +55EF,D7C3 +55F0,D7C4 +55F1,D7C5 +55F2,D7C6 +55F3,D7C7 +55F4,D7C8 +55F5,D7C9 +55F6,D7CA +55F7,D7CB +55F9,D7CC +55FA,D7CE +55FB,D7CD +55FE,D7D0 +5641,D7D1 +5642,D7D2 +5643,D7D3 +5644,D7D4 +5645,D7D5 +5646,D7D6 +5647,D7D7 +5648,D7D8 +5649,D7D9 +564A,D7DB +564B,D7DC +564D,D7DD +564E,D7DE +5650,D7E0 +5651,D7E1 +5652,D7E2 +5653,D7E3 +5654,D7E5 +5656,D7E7 +5657,D7E6 +5659,D7EA +565A,D7EC +565B,D7ED +565C,D7EE +565E,D7EF +565F,D7F0 +5660,D7F2 +5661,D7F3 +5662,D7F4 +5663,D7F5 +5664,D7F6 +5665,D7F7 +5666,D7F8 +5667,D7F9 +5668,D7FA +5669,D7FB +566B,D7FC +566C,D7FD +566E,D7FE +566F,D8A1 +5670,D8A2 +5671,D8A3 +5673,D8A4 +5674,D8A5 +5675,D8A6 +5676,D8A8 +5678,D8A9 +5679,D8AA +567A,D8AB +567B,D8AC +567C,D8AD +567D,D8AE +567E,D8AF +567F,D8B0 +5680,D8B4 +5681,D8B5 +5682,D8B6 +5683,D8B7 +5684,D8B8 +5685,D8B9 +5686,D8BA +5687,D8BB +5688,D8BC +5689,D8BD +568A,D8BE +568B,D8BF +568C,D8C0 +568D,D8C1 +568F,D8C2 +5691,D8C3 +5693,D8C4 +5694,D8C6 +5695,D8C7 +5696,D8C8 +5697,D8CA +5698,D8CB +5699,D8CC +569A,D8CD +569B,D8CE +569C,D8CF +569D,D8D0 +569E,D8D1 +569F,D8D2 +56A0,D8D3 +56A1,D8D4 +56A2,D8D5 +56A3,D8D7 +56A5,D8D8 +56A6,D8D9 +56A7,D8DA +56A8,D8DB +56A9,D8DC +56AA,D8DD +56AB,D8DE +56AC,D8DF +56AD,D8E0 +56AF,D8E1 +56B1,D8E2 +56B2,D8E3 +56B3,D8E4 +56B4,D8E5 +56B5,D8E6 +56B7,D8E7 +56B8,D8E8 +56B9,D8E9 +56BA,D8EA +56BB,D8EB +56BC,D8EC +56BD,D8ED +56BE,D8EF +56BF,D8EE +56C0,D8F0 +56C1,D8F1 +56C2,D8F2 +56C4,D8F3 +56C5,D8F5 +56C6,D8F4 +56C7,D8F6 +56C8,D8F8 +56C9,D8F9 +56CA,D8FA +56CB,D8FB +56CC,D8FC +56CD,D8FD +56CE,D8FE +56CF,D9A1 +56D0,D9A4 +56D1,D9A2 +56D2,D9A3 +56D3,D9B0 +56D4,D9A5 +56D5,D9A6 +56D6,D9A8 +56D7,D9A9 +56D8,D9AB +56D9,D9AD +56DA,D9AE +56DB,D9AF +56DC,D9B1 +56DD,D9B2 +56DE,D9B4 +56DF,D9B6 +56E0,D9B5 +56E1,D9B7 +56E2,D9B8 +56E3,D9BA +56E4,D9B3 +56E5,D9BB +56E6,D9BC +56E7,D9BD +56E8,D9BE +56E9,D9BF +56EA,D9C0 +56EB,D9C2 +56EC,D9C3 +56EE,D9C4 +56EF,D9C6 +56F0,D9C7 +56F1,D9C8 +56F2,D9C9 +56F4,D9CA +56F5,D9CB +56F6,D9CC +56F7,D9CD +56F8,D9CE +56F9,D9CF +56FA,D9D1 +56FB,D9D2 +56FC,D9D3 +56FD,D9D4 +5742,D9D5 +5743,D9D6 +5744,D9D7 +5745,D9D8 +5746,D9D9 +5747,D9DA +5748,D9DB +5749,D9DC +574A,D9DD +574B,D9DE +574C,D9E0 +574D,D9E1 +574E,D9E2 +574F,D9E3 +5750,D9E5 +5751,D9E6 +5752,D9E7 +5753,D9E8 +5754,D9E9 +5755,D9EB +5756,D9EC +5757,D9ED +5758,D9EF +5759,D9F0 +575A,D9F1 +575B,D9F2 +575C,D9F3 +575D,D9F4 +575E,D9F5 +575F,D9F6 +5760,D9F7 +5761,D9F8 +5762,D9F9 +5763,D9FB +5764,D9FC +5765,D9FE +5766,DAA1 +5767,DAA3 +5768,DAA2 +5769,DAA5 +576A,DAA6 +576B,D9FD +576C,DAA4 +576D,DAA8 +576E,DAAA +576F,DAAB +5770,DAAC +5771,DAAD +5772,DAAE +5773,DABC +5774,DAAF +5775,DAB0 +5776,DAB1 +5777,DAB4 +5779,DAB6 +577A,DAB7 +577C,DAB8 +577D,DAB9 +577E,DABA +577F,DABB +5780,DABF +5781,DAC0 +5782,DAC1 +5783,DAC2 +5784,DAC4 +5785,DAC3 +5786,DAC5 +5787,DAC6 +5788,DAC7 +5789,DAC8 +578A,DACA +578C,DACB +578D,DACC +578E,DACD +5790,DACE +5791,DACF +5792,DAD0 +5793,DAD1 +5794,DAD2 +5795,DAD3 +5796,DAD4 +5798,DAD5 +579A,DAD6 +579B,DAD7 +579C,DAD8 +579D,DADA +579E,DAD9 +579F,DADB +57A0,DADC +57A1,DADD +57A2,DADE +57A3,DADF +57A4,DAE0 +57A5,DAE1 +57A6,DAE2 +57A7,DAE3 +57A8,DAE4 +57A9,DAE5 +57AA,DAE6 +57AB,DAE7 +57AC,DAE8 +57AD,DAE9 +57AE,DAEB +57AF,DAEA +57B0,DAEC +57B1,DAED +57B2,DAEF +57B3,DAF2 +57B4,DAF3 +57B5,DAF4 +57B7,DAF6 +57B8,DAF5 +57B9,DAF7 +57BA,DAF8 +57BB,DAF9 +57BC,DAFA +57BD,DAFB +57BE,DAFE +57BF,DAFC +57C0,DBA1 +57C1,DBA2 +57C2,DBA3 +57C3,DBA4 +57C4,DBA5 +57C5,DBA6 +57C6,DBA7 +57C7,DBA8 +57C8,DBA9 +57C9,DBAA +57CA,DBAB +57CB,DBAC +57CC,DBAD +57CD,DBAE +57CE,DBAF +57CF,DBB0 +57D0,DBB1 +57D1,DBB2 +57D2,DBB4 +57D3,DBB7 +57D4,DBB8 +57D5,DBB9 +57D6,DBBA +57D7,DBBB +57D8,DBBC +57D9,DBBD +57DA,DBBE +57DB,DBBF +57DC,DBC0 +57DD,DBC1 +57E0,DBC2 +57E1,DBC4 +57E2,DBC3 +57E3,DBC5 +57E4,DBC6 +57E5,DBC7 +57E6,DBC8 +57E7,DBC9 +57E8,DBCA +57E9,DBCB +57EA,DBCD +57EB,DBCF +57EC,DBCE +57ED,DBD1 +57EE,DBD0 +57EF,DBD2 +57F0,DBD3 +57F1,DBD4 +57F2,DBD5 +57F3,DBD6 +57F4,DBD7 +57F5,DBD8 +57F6,DBD9 +57F7,DBDA +57F8,DBDB +57F9,DBDC +57FA,DBDD +57FB,DBDE +57FC,DBE0 +57FE,DBE1 +5841,DBE3 +5842,DBE4 +5843,DBE5 +5845,DBE6 +5846,DBE7 +5847,DBE8 +5848,DBE9 +5849,DBEA +584A,DBEB +584B,DBEC +584C,DBED +584D,DBEE +584E,DBEF +584F,DBF0 +5850,DBF1 +5851,DBF2 +5852,DBF3 +5853,DBF4 +5854,DBF5 +5855,DBF6 +5856,DBF7 +5857,DBF8 +5858,DBF9 +5859,DBFA +585A,DBFB +585B,DBFD +585C,DBFE +585D,DCA1 +585F,DCA3 +5860,DCA4 +5861,DCA5 +5862,DCA6 +5863,DCA7 +5866,DCA8 +5867,DCA9 +5868,DCAA +586A,DCAB +586C,DCAC +586E,DCAD +586F,DCAE +5870,DCAF +5871,DCB0 +5872,DCB1 +5873,DCB2 +5874,DCB3 +5875,DCB4 +5876,DCB5 +5877,DCB6 +5878,DCB7 +5879,DCB9 +587A,DCBA +587B,DCBB +587C,DCBD +587D,DCBC +587E,DCBE +5880,DCBF +5881,DCC1 +5882,DCC2 +5883,DCC3 +5884,DCC4 +5885,DCC5 +5886,DCC6 +5887,DCC8 +5888,DCC7 +5889,DCC9 +588A,DCCB +588B,DCCD +588C,DCCE +588D,DCCF +588E,DCD0 +5891,DCD1 +5892,DCD2 +5893,DCD3 +5894,DCD4 +5895,DCD5 +5896,DCD6 +5897,DCD8 +5898,DCD7 +5899,DCD9 +589A,DCDA +589B,DCDB +589C,DCDD +589E,DCDC +589F,DCDF +58A0,DCE0 +58A1,DCE1 +58A2,DCE2 +58A3,DCE3 +58A5,DCE4 +58A6,DCE5 +58A7,DCE6 +58A8,DCE8 +58A9,DCE7 +58AA,DCE9 +58AB,DCED +58AC,DCEA +58AD,DCEB +58AE,DCEE +58B0,DCEF +58B1,DCF0 +58B2,DCF1 +58B3,DCF2 +58B4,DCF3 +58B6,DCF5 +58B7,DCF7 +58B8,DCF8 +58B9,DCF9 +58BA,DCFA +58BB,DCFC +58BC,DCFD +58BD,DCFE +58BE,DDA2 +58BF,DDA3 +58C0,DDA4 +58C1,DDA5 +58C2,DDA6 +58C3,DDA7 +58C4,DDA8 +58C5,DDA9 +58C6,DDAA +58C7,DDAB +58C8,DDAD +58C9,DDAE +58CA,DDAC +58CC,DDB0 +58CD,DDAF +58CE,DDB1 +58CF,DDB3 +58D2,DDB5 +58D3,DDB6 +58D4,DDB7 +58D5,DDB8 +58D6,DDB9 +58D7,DDBA +58D8,DDBB +58D9,DDBC +58DA,DDBD +58DB,DDBE +58DD,DDBF +58DF,DDC0 +58E0,DDC1 +58E1,DDC2 +58E2,DDC4 +58E4,DDC5 +58E5,DDC6 +58E6,DDC7 +58E7,DDC8 +58E8,DDC9 +58E9,DDCA +58EA,DDCC +58EB,DDCD +58EC,DDCE +58ED,DDCF +58EE,DDD0 +58EF,DDD1 +58F0,DDD2 +58F2,DDD4 +58F3,DDD5 +58F4,DDD6 +58F6,DDD7 +58F7,DDD9 +58FA,DDDA +58FB,DDDB +58FC,DDDC +58FD,DDDD +58FE,DDDE +5941,DDDF +5942,DDE0 +5943,DDE1 +5944,DDE2 +5945,DDE3 +5946,DDE4 +5947,DDE5 +5949,DDE6 +594A,DDE7 +594B,DDE8 +594C,DDE9 +594D,DDEA +594E,DDEB +594F,DDEC +5951,DDEE +5953,DDF4 +5954,DDF3 +5955,DDEF +5956,DDF2 +5957,DDF5 +5958,DDF6 +595A,DDF7 +595B,DDF8 +595C,DDFA +595E,DDFC +595F,DDFD +5960,DDFE +5962,DEA1 +5963,DEA2 +5964,DEA3 +5965,DEA4 +5966,DEA5 +5967,DEA6 +5968,DEA7 +5969,DEA8 +596B,DEA9 +596C,DEAA +596D,DEAB +596F,DEAC +5970,DEAE +5971,DEB9 +5972,DEAF +5974,DEB0 +5975,DEB1 +5976,DEB2 +5977,DEB4 +5978,DEB5 +5979,DEB6 +597B,DEB8 +597D,DEBA +5980,DEBB +5981,DEBC +5982,DEBD +5983,DEBE +5984,DEBF +5985,DEC0 +5986,DEC1 +5987,DEC2 +5988,DEC4 +5989,DEC3 +598A,DEEC +598B,DEC5 +598C,DEC7 +598D,DEC8 +598E,DEC9 +598F,DECC +5990,DECA +5991,DECB +5992,DECD +5993,DECE +5995,DECF +5996,DED0 +5997,DED1 +5998,DED3 +5999,DED4 +599B,DED5 +599C,DED6 +599D,DED7 +599E,DEF5 +599F,DED9 +59A0,DED8 +59A1,DEDB +59A2,DEDC +59A5,DEDE +59A6,DEDF +59A7,DEE0 +59A8,DEE1 +59A9,DEF7 +59AA,DEE2 +59AB,DEE5 +59AC,DEE4 +59AD,DEE6 +59AE,DEDD +59AF,DEE3 +59B0,DEE7 +59B2,DEE8 +59B3,DEEE +59B4,DEE9 +59B5,DEEA +59B6,DEED +59B7,DEEF +59B8,DEF0 +59B9,DEF1 +59BA,DEF2 +59BB,DEF3 +59BC,DEF4 +59BD,DED2 +59BE,DEF6 +59BF,DEEB +59C0,DEF8 +59C1,DEF9 +59C2,DEFB +59C3,DEFC +59C5,DEFD +59C6,DEFE +59C8,DFA1 +59C9,DFA2 +59CA,DFA3 +59CB,DFA4 +59CC,DFA5 +59CD,DFA6 +59CE,DFA7 +59CF,DFA8 +59D0,DFA9 +59D1,DFAA +59D2,DFAB +59D3,DFAE +59D4,DFAF +59D5,DFAD +59D6,DFB1 +59D7,DFB2 +59D8,DFB3 +59D9,DFB4 +59DA,DFB5 +59DB,DFB6 +59DC,DFB9 +59DD,DFB7 +59DE,DFB8 +59E0,DFBA +59E1,DFBB +59E2,DFBD +59E5,DFBE +59E6,DFBF +59E7,DFC0 +59E8,DFC1 +59E9,DFC2 +59EA,DFC3 +59EB,DFC4 +59EC,DFD0 +59ED,DFC5 +59EE,DFC6 +59EF,DFC9 +59F0,DFCA +59F1,DFCB +59F2,DFC8 +59F3,DFCC +59F4,DFD3 +59F5,DFCD +59F6,DFCE +59F8,DFCF +59F9,DFD2 +59FA,DFD1 +59FB,DFD4 +59FC,DFD5 +59FD,DFD6 +59FE,DFD7 +5A41,DFD8 +5A42,DFDA +5A43,DFDB +5A44,DFD9 +5A45,DFDC +5A46,DFDD +5A47,DFDE +5A48,DFDF +5A4A,DFE1 +5A4B,DFE2 +5A4C,DFE3 +5A4D,DFE4 +5A4E,DFE5 +5A4F,DFE6 +5A50,DFE7 +5A51,DFE8 +5A52,DFE9 +5A54,DFEB +5A55,DFEA +5A57,DFF9 +5A58,DFEC +5A59,DFED +5A5A,DFEE +5A5B,DFEF +5A5C,DFF0 +5A5D,DFF1 +5A5E,DFF3 +5A5F,DFF4 +5A60,DFF5 +5A61,DFF6 +5A62,DFF7 +5A63,DFF8 +5A64,DFFA +5A65,DFFC +5A66,DFFD +5A67,DFFE +5A68,E0A1 +5A69,E0A2 +5A6A,E0A3 +5A6B,E0A4 +5A6C,E0A5 +5A6D,E0A7 +5A6E,E0A6 +5A6F,E0A8 +5A71,E0A9 +5A72,E0AA +5A73,E0AB +5A75,E0AC +5A76,E0AD +5A77,E0AE +5A78,E0AF +5A79,E0B0 +5A7A,E0B1 +5A7B,E0B2 +5A7C,E0B3 +5A7D,E0B4 +5A7E,E0B5 +5A7F,E0B6 +5A80,E0B7 +5A81,E0B8 +5A82,E0BB +5A83,E0B9 +5A84,E0BA +5A86,E0BC +5A87,E0BE +5A8A,E0BF +5A8B,E0C1 +5A8D,E0C3 +5A8F,E0C9 +5A90,E0C5 +5A91,E0C6 +5A92,E0C7 +5A93,E0C8 +5A94,E0CA +5A95,E0CB +5A96,E0CC +5A97,E0CD +5A98,E0CE +5A99,E0CF +5A9A,E0D0 +5A9B,E0D1 +5A9C,E0D2 +5A9D,E0D3 +5A9E,E0D4 +5A9F,E0D5 +5AA1,E0D8 +5AA3,E0D9 +5AA4,E0DF +5AA6,E0DA +5AA8,E0DB +5AA9,E0DD +5AAA,E0DE +5AAB,E0E0 +5AAC,E0E2 +5AAD,E0E3 +5AAE,E0E4 +5AAF,E0E8 +5AB0,E0E9 +5AB1,E0EA +5AB2,E0EB +5AB3,E0E7 +5AB4,E0EC +5AB5,E0F0 +5AB6,E0EE +5AB7,E0EF +5AB8,E0F1 +5AB9,E0F2 +5ABA,E0F3 +5ABB,E0F5 +5ABC,E0F6 +5ABD,E0F7 +5ABE,E0F8 +5ABF,E0F9 +5AC0,E0FA +5AC1,E0FC +5AC2,E0FD +5AC3,E0FE +5AC4,E1A1 +5AC5,E1A2 +5AC6,E1A3 +5AC7,E1A4 +5AC8,E1A5 +5AC9,E1A6 +5ACA,E1A7 +5ACB,E1A8 +5ACC,E1A9 +5ACD,E1AA +5ACE,E1AB +5ACF,E1AC +5AD0,E1AD +5AD1,E1AE +5AD2,E1AF +5AD3,E1B0 +5AD4,E1B1 +5AD5,E1B3 +5AD6,E1B4 +5AD7,E1B2 +5AD8,E1B5 +5AD9,E1B7 +5ADA,E1B8 +5ADB,E1B6 +5ADC,E1B9 +5ADD,E1BA +5ADE,E1BB +5ADF,E1BC +5AE0,E1BD +5AE1,E1BE +5AE2,E1BF +5AE3,E1C0 +5AE4,E1C1 +5AE5,E1C3 +5AE6,E1C2 +5AE7,E1C5 +5AE8,E1C7 +5AE9,E1C8 +5AEA,E1C9 +5AEC,E1CA +5AED,E1CB +5AEE,E1CC +5AEF,E1CD +5AF0,E1CE +5AF1,E1CF +5AF2,E1D0 +5AF3,E1D1 +5AF5,E1D2 +5AF6,E1D3 +5AF7,E1D4 +5AF8,E1D5 +5AF9,E1D6 +5AFA,E1D8 +5AFB,E1D9 +5AFC,E1DC +5AFD,E1DD +5AFE,E1DF +5B41,E1E1 +5B42,E1E3 +5B44,E1E4 +5B45,E1E6 +5B46,E1E8 +5B47,E1E9 +5B48,E1EA +5B49,E1EB +5B4A,E1EC +5B4B,E1ED +5B4C,E1EE +5B4E,E1EF +5B4F,E1F0 +5B50,E1F1 +5B51,E1F2 +5B52,E1F3 +5B53,E1F4 +5B55,E1F6 +5B56,E1F5 +5B57,E1F7 +5B58,E1F8 +5B59,E1F9 +5B5A,E1FA +5B5C,E1FB +5B5D,E1FD +5B5E,E2A1 +5B5F,E1FE +5B60,E2A2 +5B61,E2A3 +5B62,E2A4 +5B63,E2A5 +5B64,E2A6 +5B66,E2A7 +5B67,E2A8 +5B68,E2AC +5B69,E2A9 +5B6A,E2AA +5B6C,E2AB +5B6D,E2AD +5B6E,E2AE +5B70,E2B1 +5B71,E2B2 +5B73,E2B3 +5B74,E2B4 +5B75,E2B5 +5B76,E2B6 +5B77,E2B7 +5B78,E2B8 +5B79,E2B9 +5B7A,E2BA +5B7B,E2BB +5B7C,E2BC +5B7D,E2BD +5B7E,E2BE +5B7F,E2BF +5B80,E2C0 +5B81,E2C1 +5B82,E2C3 +5B83,E2C4 +5B84,E2C5 +5B85,E2C6 +5B86,E2C7 +5B87,E2C8 +5B88,E2C9 +5B89,E2CB +5B8A,E2CC +5B8B,E2CD +5B8C,E2CE +5B8D,E2CF +5B8E,E2D0 +5B8F,E2D1 +5B90,E2D2 +5B91,E2D3 +5B92,E2D4 +5B93,E2D5 +5B94,E2D6 +5B95,E2D7 +5B96,E2D9 +5B97,E2DC +5B98,E2DD +5B99,E2E0 +5B9A,E2E1 +5B9B,E2E2 +5B9C,E2E4 +5B9D,E2E6 +5B9E,E2E7 +5B9F,E2E8 +5BA0,E2E9 +5BA1,E2EA +5BA2,E2EB +5BA3,E2EC +5BA4,E2ED +5BA5,E2EE +5BA6,E2EF +5BA7,E2F0 +5BA8,E2F3 +5BA9,E2DE +5BAA,E2F5 +5BAB,E2F6 +5BAC,E2F7 +5BAD,E2F8 +5BAF,E2F9 +5BB0,E2FA +5BB1,E2FB +5BB2,E2FD +5BB3,E2FE +5BB4,E3A1 +5BB5,E3A2 +5BB6,E3A3 +5BB8,E3A4 +5BB9,E3A6 +5BBA,E3A5 +5BBB,E3A7 +5BBC,E3A8 +5BBD,E3A9 +5BBE,E3AA +5BBF,E3AB +5BC0,E3AC +5BC1,E3AE +5BC2,E3AF +5BC3,E3B0 +5BC4,E3AD +5BC5,E3B1 +5BC6,E3B2 +5BC7,E3B3 +5BC8,E3B4 +5BC9,E3B5 +5BCB,E3B6 +5BCC,E3B7 +5BCD,E3B8 +5BCF,E3B9 +5BD0,E3BB +5BD1,E3BC +5BD2,E3BD +5BD3,E3BE +5BD4,E3BF +5BD5,E3C0 +5BD6,E3C1 +5BD7,E3C2 +5BD8,E3C3 +5BD9,E3C4 +5BDA,E3C5 +5BDB,E3C6 +5BDC,E3CA +5BDE,E3C7 +5BDF,E3C8 +5BE0,E3C9 +5BE1,E3CC +5BE2,E3CB +5BE3,E3CD +5BE4,E3CF +5BE5,E3D0 +5BE6,E3D1 +5BE7,E3D2 +5BE8,E3D3 +5BE9,E3D4 +5BEA,E3D5 +5BEB,E3D6 +5BEC,E3D7 +5BED,E3D8 +5BEE,E3DB +5BEF,E3DC +5BF0,E3DD +5BF1,E3DE +5BF2,E3DF +5BF3,E3E1 +5BF4,E3E2 +5BF5,E3E3 +5BF6,E3E4 +5BF7,E3E5 +5BF8,E3E6 +5BF9,E3E7 +5BFA,E3E8 +5BFB,E3E9 +5BFD,E3EA +5BFE,E3EB +5C41,E3EC +5C42,E3ED +5C43,E3EE +5C44,E3EF +5C45,E3F1 +5C46,E3F2 +5C47,E3F3 +5C48,E3F4 +5C49,E3F5 +5C4A,E3F6 +5C4B,E3F7 +5C4C,E3F8 +5C4D,E3F9 +5C4E,E3FA +5C50,E3FB +5C51,E3FC +5C52,E3FD +5C53,E4A1 +5C54,E3FE +5C55,E4A2 +5C56,E4A3 +5C57,E4A4 +5C58,E4A5 +5C59,E4A7 +5C5A,E4A8 +5C5B,E4A9 +5C5C,E4AA +5C5D,E4AB +5C5E,E4AC +5C5F,E4AD +5C60,E4AE +5C61,E4B0 +5C62,E4B1 +5C63,E4B2 +5C64,E4B3 +5C65,E4B4 +5C66,E4B6 +5C67,E4B7 +5C68,E4B8 +5C69,E4B9 +5C6A,E4BA +5C6B,E4BB +5C6C,E4BC +5C6D,E4BD +5C6E,E4BE +5C6F,E4BF +5C70,E4C0 +5C71,E4C3 +5C72,E4C2 +5C73,E4C4 +5C74,E4C5 +5C75,E4C6 +5C77,E4C9 +5C78,E4CB +5C79,E4CC +5C7A,E4CD +5C7B,E4CE +5C7C,E4CF +5C7D,E4D0 +5C7E,E4D1 +5C7F,E4D2 +5C81,E4D3 +5C82,E4D4 +5C85,E4D6 +5C86,E4D7 +5C87,E4D8 +5C89,E4D9 +5C8B,E4DC +5C8C,E4DD +5C8D,E4DE +5C8E,E4DF +5C8F,E4E0 +5C91,E4E1 +5C93,E4E2 +5C94,E4E3 +5C95,E4E4 +5C96,E4E5 +5C97,E4E6 +5C98,E4E7 +5C99,E4E8 +5C9A,E4E9 +5C9B,E4EA +5C9C,E4EB +5C9E,E4EC +5C9F,E4ED +5CA0,E4EF +5CA1,E4F0 +5CA2,E4F1 +5CA4,E4F3 +5CA6,E4F2 +5CA7,E4F4 +5CA9,E4F5 +5CAA,E4EE +5CAB,E4F6 +5CAC,E4F7 +5CAE,E4F8 +5CAF,E4FA +5CB0,E4FB +5CB1,E4FD +5CB3,E4FE +5CB4,E5A1 +5CB5,E5A2 +5CB6,E5A3 +5CB7,E5A4 +5CB8,E5A5 +5CB9,E5A6 +5CBA,E5A7 +5CBB,E5A8 +5CBD,E5AA +5CBE,E5AB +5CBF,E5AC +5CC0,E5AD +5CC1,E5AE +5CC2,E5A9 +5CC3,E5AF +5CC4,E5B0 +5CC7,E5B3 +5CC8,E5B4 +5CC9,E5B5 +5CCA,E5B7 +5CCB,E5B8 +5CCC,E5BA +5CCD,E5BD +5CCE,E5BE +5CCF,E5BF +5CD0,E5C0 +5CD1,E5C1 +5CD2,E5C2 +5CD3,E5C3 +5CD4,E5C5 +5CD5,E5C6 +5CD6,E5C7 +5CD7,E5C8 +5CD8,E5C9 +5CD9,E5CD +5CDA,E5CA +5CDB,E5CB +5CDC,E5CF +5CDE,E5D1 +5CDF,E5D3 +5CE0,E5D4 +5CE1,E5D5 +5CE2,E5D7 +5CE3,E5D8 +5CE4,E5D9 +5CE6,E5DA +5CE7,E5DB +5CE8,E5DD +5CE9,E5DE +5CEA,E5DF +5CEB,E5E0 +5CEC,E5E1 +5CED,E5E2 +5CEE,E5E3 +5CEF,E5E4 +5CF0,E5E5 +5CF1,E5E6 +5CF2,E5E7 +5CF3,E5E8 +5CF4,E5E9 +5CF5,E5EA +5CF6,E5EB +5CF7,E5EC +5CF8,E5ED +5CF9,E5F0 +5CFA,E5F1 +5CFB,E5F2 +5CFC,E5F3 +5CFD,E5F4 +5CFE,E5F5 +5D41,E5F6 +5D43,E5F8 +5D44,E5F9 +5D45,E5FD +5D46,E6A2 +5D47,E6A3 +5D48,E6A8 +5D49,E6AE +5D4A,E6B2 +5D4B,E6B4 +5D4D,E6B5 +5D4E,E6B6 +5D4F,E6B9 +5D50,E6BA +5D51,E6BB +5D52,E6BD +5D53,E6BE +5D54,E6BF +5D55,E6C0 +5D56,E6C1 +5D57,E6C2 +5D58,E6C3 +5D59,E6C5 +5D5A,E6C8 +5D5B,E6CA +5D5C,E6CB +5D5D,E6CD +5D5E,E6CF +5D5F,E6CE +5D60,E6D0 +5D61,E6D1 +5D62,E6D3 +5D63,E6D4 +5D64,E6D5 +5D65,E6D7 +5D66,E6D8 +5D67,E6DA +5D68,E6DB +5D69,E6DD +5D6A,E6DE +5D6E,E6E2 +5D70,E6E3 +5D71,E6E7 +5D72,E6E9 +5D73,E6EC +5D74,E6ED +5D75,E6EE +5D76,E6F0 +5D77,E6F2 +5D78,E6F3 +5D79,E6F4 +5D7B,E6F8 +5D7C,E6FA +5D7D,E6FB +5D7E,E7A4 +5D7F,E6FE +5D80,E6FD +5D81,E7A2 +5D83,E7A3 +5D84,E7A5 +5D85,E7A7 +5D86,E7A8 +5D87,E7AB +5D89,E7AF +5D8A,E7B1 +5D8B,E7B2 +5D8C,E7B3 +5D8D,E7B4 +5D8E,E7B5 +5D8F,E7B6 +5D90,E7B8 +5D91,E7BA +5D92,E7BD +5D93,E7C0 +5D94,E7C1 +5D95,E7C2 +5D96,E7C3 +5D97,E7C5 +5D98,E7C8 +5D99,E7C9 +5D9A,E7CA +5D9B,E7D2 +5D9C,E7D4 +5D9D,E7D5 +5D9E,E7D6 +5D9F,E7D8 +5DA0,E7D9 +5DA2,E7DA +5DA4,E7DC +5DA6,E7DD +5DA7,E7DE +5DA8,E7E0 +5DA9,E7E1 +5DAA,E7E2 +5DAB,E7E3 +5DAC,E7E5 +5DAD,E7E7 +5DAE,E7E8 +5DAF,E7E9 +5DB0,E7EA +5DB1,E7EC +5DB2,E7ED +5DB3,E7EF +5DB4,E7F0 +5DB5,E7F2 +5DB6,E7F3 +5DB7,E7F4 +5DB8,E7F5 +5DB9,E7F6 +5DBA,E7F7 +5DBB,E7FA +5DBC,E7FB +5DBD,E7FC +5DBE,E7FD +5DBF,E8A1 +5DC0,E8A3 +5DC1,E8A5 +5DC2,E8A6 +5DC4,E7EE +5DC5,E8A9 +5DC6,E8AA +5DC7,E8AB +5DC8,E8AC +5DC9,E8AD +5DCB,E8AE +5DCC,E8AF +5DCD,E8B0 +5DCE,E8B1 +5DD0,E8B3 +5DD2,E8B4 +5DD3,E8B5 +5DD4,E8B7 +5DD5,E8B9 +5DD6,E8B6 +5DD7,E8B8 +5DD8,E8BA +5DD9,E8BB +5DDA,E8BC +5DDB,E8BE +5DDC,E8BF +5DDD,E8C0 +5DDE,E8C3 +5DDF,E8C4 +5DE0,E8C5 +5DE1,E8C2 +5DE2,E8C6 +5DE3,E8C7 +5DE4,E8C8 +5DE5,E8CB +5DE6,E8CC +5DE7,E8CE +5DE8,E8CF +5DE9,E8D0 +5DEA,E8D1 +5DEB,E8D3 +5DEC,E8D4 +5DED,E8D5 +5DEE,E8D6 +5DEF,E8D7 +5DF0,E8D8 +5DF1,E8D9 +5DF2,E8DA +5DF3,E8DB +5DF4,E8DC +5DF5,E8DD +5DF6,E8DE +5DF7,E8E0 +5DF8,E8E1 +5DF9,E8E2 +5DFA,E8E4 +5DFB,E8E5 +5DFC,E8E6 +5DFD,E8E9 +5DFE,E8EA +5E41,E8EB +5E42,E8EC +5E43,E8ED +5E44,E8EE +5E45,E8F2 +5E46,E8F3 +5E47,E8F4 +5E48,E8F6 +5E49,E8F8 +5E4A,E9A6 +5E4B,E8F9 +5E4C,E8FA +5E4D,E8FD +5E4E,E9A1 +5E4F,E9A2 +5E50,E9A3 +5E51,E9A4 +5E52,E9A5 +5E54,E9A8 +5E55,E9A9 +5E56,E9AA +5E57,E9AB +5E58,E9AD +5E59,E9AE +5E5A,E9B4 +5E5B,E9AF +5E5C,E9B0 +5E5D,E9B1 +5E5E,E9B3 +5E5F,E9B6 +5E60,E9B8 +5E61,E9BB +5E62,E9BC +5E63,E9B7 +5E64,E9BE +5E65,E9C0 +5E66,E9C1 +5E67,E9C2 +5E68,E9C3 +5E69,E9C4 +5E6A,E9C6 +5E6C,E9C7 +5E6D,E9C8 +5E6F,E9C9 +5E70,E9CA +5E71,E9CB +5E72,E9CE +5E73,E9CF +5E74,E9D0 +5E75,E9D1 +5E76,E9D2 +5E77,E9D3 +5E79,E9D4 +5E7A,E9D5 +5E7B,E9D6 +5E7C,E9CD +5E7D,E9D7 +5E7E,E9D8 +5E7F,E9DA +5E80,E9DD +5E81,E9DE +5E82,E9DF +5E83,E9E0 +5E84,E9E2 +5E85,E9E3 +5E86,E9E5 +5E87,E9E6 +5E88,E9E7 +5E89,E9E8 +5E8A,E9EA +5E8B,E9EB +5E8C,E9EC +5E8D,E9EF +5E8E,E9F0 +5E8F,E9F2 +5E90,E9F3 +5E91,E9F4 +5E92,E9F5 +5E93,E9F6 +5E94,E9F7 +5E95,E9F9 +5E96,E9FC +5E97,E9FD +5E98,EAA1 +5E99,EAA2 +5E9A,EAA3 +5E9B,EAA4 +5E9D,EAA5 +5E9E,EAA6 +5E9F,EAA8 +5EA0,EAA9 +5EA1,EAAA +5EA2,EAAB +5EA3,EAAC +5EA4,EAAE +5EA5,EAAD +5EA6,EABA +5EA7,EAAF +5EA8,EAB0 +5EA9,EAB2 +5EAA,EAB3 +5EAB,EAB4 +5EAC,EAB5 +5EAD,EAB9 +5EAE,EABB +5EAF,EABC +5EB0,EABD +5EB2,EABE +5EB3,EABF +5EB4,EAC0 +5EB5,EAC2 +5EB6,EAC3 +5EB7,EAC4 +5EB8,EAC5 +5EB9,EAC6 +5EBA,EAC7 +5EBB,EAC8 +5EBC,EAC9 +5EBD,EACA +5EBE,EACB +5EBF,EACC +5EC0,EACD +5EC1,EACF +5EC3,EAD0 +5EC4,EACE +5EC5,EAD2 +5EC6,EAD3 +5EC7,EAD4 +5EC8,EAD5 +5EC9,EAD6 +5ECA,EAD7 +5ECB,EAD8 +5ECC,EADA +5ECD,EADB +5ECF,EADD +5ED0,EADE +5ED1,EADF +5ED2,EAE0 +5ED3,EAE1 +5ED4,EAF2 +5ED5,EAE2 +5ED6,EAE3 +5ED7,EAE4 +5ED8,EAEA +5ED9,EAE6 +5EDA,EAE7 +5EDC,EAE8 +5EDD,EAE9 +5EDF,EAEB +5EE0,EAEC +5EE1,EAED +5EE2,EAEE +5EE3,EAF0 +5EE4,EAEF +5EE5,EAF1 +5EE6,EAF3 +5EE7,EAF5 +5EE8,EAF6 +5EE9,EAF8 +5EEA,EAFA +5EEB,EAFD +5EEC,EBA1 +5EED,EBA2 +5EEE,EBA5 +5EEF,EBA6 +5EF0,EBA8 +5EF1,EBAB +5EF2,EBAC +5EF3,EBAD +5EF5,EBAE +5EF6,EBAF +5EF7,EBB0 +5EF8,EBB1 +5EF9,EBB3 +5EFA,EBB2 +5EFB,EBB4 +5EFC,EBB5 +5EFD,EBB6 +5EFE,EBB7 +5F41,EBB8 +5F42,EBB9 +5F44,EBBE +5F45,EBBF +5F46,EBC0 +5F48,EBC3 +5F49,EBC4 +5F4A,EBC5 +5F4B,EBC8 +5F4C,EBC9 +5F4D,EBCA +5F4E,EBCE +5F4F,EBD3 +5F50,EBD4 +5F51,EBD6 +5F52,EBD7 +5F53,EBD9 +5F54,EBDA +5F55,EBDB +5F57,EBDC +5F59,EBDE +5F5A,EBDD +5F5B,EBDF +5F5D,EBE0 +5F5E,EBE1 +5F5F,EBE2 +5F60,EBE3 +5F61,EBE4 +5F62,EBE6 +5F63,EBE5 +5F65,EBE7 +5F66,EBE8 +5F67,EBE9 +5F68,EBEA +5F69,EBEB +5F6A,EBEC +5F6B,EBED +5F6C,EBEE +5F6D,EBEF +5F6E,EBF0 +5F6F,EBF7 +5F70,EBF8 +5F71,EBF1 +5F72,EBF2 +5F73,EBF3 +5F74,EBF4 +5F75,EBF6 +5F76,EBF9 +5F77,EBFA +5F78,EBFC +5F79,EBFD +5F7A,EBFE +5F7B,ECA1 +5F7C,ECA2 +5F7D,ECA3 +5F7E,ECA4 +5F7F,ECA5 +5F80,ECA8 +5F81,ECA9 +5F82,ECAB +5F83,ECC3 +5F84,ECAC +5F85,ECAD +5F86,ECAE +5F87,ECAF +5F89,ECB3 +5F8A,ECB4 +5F8B,ECB6 +5F8C,ECB7 +5F8D,ECB9 +5F8E,ECBB +5F8F,ECBC +5F90,ECBF +5F91,ECC7 +5F92,ECC8 +5F94,ECCB +5F95,ECCF +5F96,ECCC +5F97,ECCD +5F98,ECCE +5F99,ECD1 +5F9A,ECD2 +5F9C,ECD3 +5F9D,ECD4 +5F9E,ECD6 +5F9F,ECD7 +5FA0,ECD8 +5FA1,ECD9 +5FA2,ECDA +5FA3,ECDB +5FA4,ECDC +5FA5,ECE3 +5FA6,ECE5 +5FA7,ECE6 +5FA8,ECE9 +5FA9,ECEB +5FAA,ECEC +5FAB,ECED +5FAC,ECEE +5FAD,ECEF +5FAE,ECF0 +5FAF,ECF1 +5FB0,ECF2 +5FB1,ECF3 +5FB2,ECF4 +5FB3,ECF5 +5FB4,ECF9 +5FB5,ECFB +5FB6,ECFC +5FB7,ECFD +5FB8,EDA4 +5FB9,EDA6 +5FBA,EDA5 +5FBB,EDA8 +5FBC,EDA9 +5FBD,EDAA +5FBE,EDAB +5FBF,EDAC +5FC0,EDAD +5FC1,EDAF +5FC2,EDAE +5FC3,EDB0 +5FC4,EDB1 +5FC5,EDB2 +5FC6,EDB3 +5FC7,EDB4 +5FC8,EDB5 +5FC9,EDB6 +5FCA,EDB7 +5FCC,EDB8 +5FCE,EDB9 +5FCF,EDBA +5FD1,EDBB +5FD2,EDBD +5FD3,EDBE +5FD5,EDBF +5FD6,EDC0 +5FD8,EDC1 +5FD9,EDC2 +5FDA,EDC3 +5FDB,EDC4 +5FDC,EDC5 +5FDD,EDC6 +5FDF,EDC7 +5FE0,EDC8 +5FE1,EDC9 +5FE2,EDCA +5FE3,EDCB +5FE4,EDCC +5FE5,EDCD +5FE6,EDCE +5FE7,EDD0 +5FE8,EDD1 +5FE9,EDD2 +5FEA,EDD3 +5FEB,EDD4 +5FEC,EDD5 +5FED,EDD6 +5FEF,EDD7 +5FF0,EDD8 +5FF2,EDD9 +5FF3,EDDA +5FF4,EDDB +5FF5,EDDC +5FF6,EDDD +5FF7,EDDE +5FF8,EDDF +5FF9,EDE1 +5FFB,EDE3 +5FFC,EDE4 +5FFD,EDE5 +5FFE,EDE6 +6041,EDE7 +6042,EDE8 +6043,EDE9 +6044,EDEA +6045,EDEB +6046,EDEC +6047,EDE0 +6048,EDE2 +6049,EDED +604A,EDEE +604B,EDEF +604C,EDF0 +604E,EDF1 +604F,EDF2 +6050,EDF3 +6051,EDF4 +6052,EDF6 +6053,EDF7 +6054,EDF8 +6055,EDF9 +6056,EDFA +6058,EDFB +6059,EDFC +605A,EDFD +605B,EDFE +605C,EEA1 +605D,EEA2 +605E,EEA3 +605F,EEA4 +6060,EEA5 +6061,EEA6 +6062,EEA7 +6063,EEA8 +6064,EEA9 +6065,EEAB +6066,EEAC +6068,EEAE +6069,EEAF +606A,EEB0 +606B,EEB1 +606C,EEB2 +606D,EEB3 +606E,EEB4 +606F,EEB5 +6070,EEB6 +6071,EEB8 +6072,EEB7 +6073,EEB9 +6074,EEBA +6075,EEBB +6076,EEBC +6077,EEBD +6078,EEBE +607A,EEBF +607B,EEC0 +607C,EEC1 +607D,EEC2 +607E,EEC3 +607F,EEC4 +6080,EEC5 +6081,EEC6 +6082,EEC8 +6083,EECA +6084,EECB +6086,EECC +6088,EECD +6089,EECE +608A,EECF +608B,EED0 +608C,EED3 +608D,EED5 +608E,EED6 +608F,EED7 +6090,EED8 +6091,EED9 +6092,EEDA +6093,EEDC +6094,EEDD +6095,EEDE +6096,EEDF +6098,EEE0 +6099,EEE2 +609A,EEE3 +609B,EEE4 +609C,EEE5 +609D,EEE6 +609E,EEE7 +609F,EEE8 +60A0,EEE9 +60A1,EEEA +60A2,EEEE +60A3,EEEF +60A4,EEF0 +60A5,EEF1 +60A6,EEF2 +60A8,EEF3 +60A9,EEF5 +60AA,EEF6 +60AB,EEF7 +60AD,EEF8 +60AE,EEF9 +60AF,EEFA +60B0,EEFB +60B1,EEFC +60B2,EEFD +60B3,EEFE +60B4,EFA1 +60B5,EFA3 +60B6,EFA4 +60B7,EFA6 +60B9,EFA8 +60BA,EFA9 +60BB,EFAA +60BC,EFAB +60BE,EFAC +60BF,EFAD +60C0,EFAE +60C1,EFAF +60C2,EFB0 +60C3,EFB1 +60C4,EFB3 +60C5,EFB4 +60C6,EFB5 +60C7,EFB6 +60C8,EFB7 +60C9,EFB8 +60CA,EFB9 +60CB,EFBA +60CD,EFBC +60CE,EFBD +60CF,EFBE +60D0,EFBF +60D1,EFC0 +60D2,EFC1 +60D3,EFC2 +60D4,EFC3 +60D5,EFC7 +60D6,EFC4 +60D7,EFC5 +60D8,EFC8 +60D9,EFC9 +60DB,EFCA +60DC,EFCB +60DD,EFCC +60DE,EFCD +60DF,EFCE +60E0,EFCF +60E1,EFD0 +60E2,EFD1 +60E3,EFD3 +60E4,EFD5 +60E5,EFD6 +60E6,EFD2 +60E7,EFD4 +60E8,EFD7 +60E9,EFD8 +60EA,EFD9 +60EB,EFDA +60EC,EFDB +60ED,EFDC +60EE,EFDD +60F0,EFDF +60F1,EFE1 +60F2,EFE2 +60F3,EFE4 +60F4,EFE5 +60F5,EFEB +60F6,EFEC +60F7,EFED +60F8,EFEE +60F9,EFEF +60FA,EFF0 +60FB,EFFE +60FC,EFF1 +60FD,EFF3 +60FE,EFF4 +6141,EFF5 +6142,EFF6 +6143,EFF7 +6144,EFF8 +6145,EFF9 +6146,EFFA +6147,EFFC +6148,EFFD +6149,F0A1 +614A,F0A2 +614B,F0A3 +614C,F0A4 +614D,F0A5 +614E,F0A6 +614F,F0A7 +6150,F0A8 +6151,F0A9 +6152,F0AA +6153,F0AB +6155,F0AC +6156,F0AD +6158,F0B0 +6159,F0AE +615A,F0AF +615B,F0B1 +615C,F0B2 +615D,F0B3 +615F,F0B4 +6160,F0B5 +6161,F0B6 +6162,F0B7 +6163,F0B8 +6164,F0B9 +6165,F0BA +6166,F0BB +6167,F0BD +6168,F0BC +6169,F0BE +616B,F0BF +616D,F0C0 +616E,F0C1 +616F,F0C2 +6170,F0C3 +6171,F0C4 +6172,F0C5 +6173,F0C6 +6174,F0C7 +6175,F0C8 +6176,F0C9 +6177,F0CA +6178,F0CB +6179,F0CC +617A,F0CD +617B,F0CE +617C,F0CF +617D,F0D0 +617F,F0D2 +6180,F0D3 +6181,F0D4 +6182,F0D5 +6183,F0D6 +6184,F0D7 +6187,F0D8 +6188,F0D9 +618A,F0DA +618C,F0DB +618D,F0DC +618E,F0DD +618F,F0DE +6190,F0DF +6191,F0E0 +6192,F0E1 +6193,F0E2 +6194,F0E3 +6195,F0E4 +6196,F0E5 +6197,F0E6 +6199,F0E8 +619A,F0E9 +619B,F0EA +619C,F0EB +619D,F0EC +619E,F0ED +619F,F0EE +61A0,F0EF +61A1,F0F0 +61A2,F0F1 +61A3,F0F2 +61A4,F0F3 +61A5,F0F4 +61A6,F0F6 +61A7,F0F7 +61A9,F0F8 +61AA,F0F9 +61AB,F0FA +61AC,F0FB +61AD,F0FC +61AE,F0FD +61AF,F0FE +61B0,F1A2 +61B2,F1A3 +61B3,F1A4 +61B4,F1A5 +61B5,F1A6 +61B6,F1A7 +61B7,F1A8 +61B8,F1A9 +61B9,F1AA +61BA,F1AB +61BB,F1AC +61BC,F1AD +61BD,F1AE +61BE,F1B7 +61BF,F1B1 +61C0,F1B2 +61C1,F1B3 +61C2,F1B4 +61C3,F1B5 +61C4,F1B6 +61C5,F1B8 +61C6,F1B9 +61C7,F1BA +61C8,F1BB +61C9,F1C0 +61CA,F1BC +61CB,F1BD +61CC,F1D0 +61CD,F1C1 +61CE,F1C2 +61D0,F1C3 +61D1,F1C4 +61D2,F1C5 +61D3,F1C6 +61D5,F1B0 +61D6,F1C7 +61D7,F1C8 +61D8,F1C9 +61D9,F1CA +61DA,F1CB +61DB,F1CC +61DC,F1CD +61DD,F1CF +61DE,F1CE +61DF,F1D1 +61E0,F1D2 +61E1,F1D3 +61E2,F1D4 +61E3,F1D5 +61E4,F1D6 +61E5,F1D7 +61E6,F1D8 +61E7,F1DA +61E8,F1DB +61E9,F1DC +61EA,F1DD +61EB,F1DE +61EC,F1DF +61ED,F1E1 +61EE,F1E2 +61EF,F1E3 +61F0,F1E4 +61F1,F1E5 +61F3,F1E7 +61F4,F1E8 +61F5,F1E9 +61F6,F1EA +61F7,F1EB +61F8,F1EC +61FA,F1ED +61FB,F1EE +61FC,F1EF +61FD,F1F0 +61FE,F1F1 +6241,F1F2 +6242,F1F3 +6243,F1F5 +6244,F1F6 +6245,F1F4 +6246,F1F7 +6247,F1F8 +6248,F1FA +624A,F1FB +624B,F1FC +624C,F1FD +624D,F1FE +624E,F2A1 +624F,F2A2 +6250,F2A3 +6251,F2A4 +6252,F2A5 +6253,F2A6 +6254,F2A7 +6255,F2A8 +6256,F2A9 +6257,F2AA +6258,F2AB +6259,F2AC +625A,F2AD +625B,F2AE +625C,F2B0 +625E,F2B1 +625F,F2B2 +6260,F2B4 +6261,F2B3 +6262,F2B5 +6263,F2B6 +6264,F2B7 +6265,F2B8 +6266,F2B9 +6267,F2BB +6268,F2BC +6269,F2BD +626A,F2BE +626B,F2BF +626C,F2C0 +626D,F2C1 +626E,F2C2 +626F,F2C3 +6270,F2C4 +6271,F2C5 +6272,F2E3 +6273,F2C7 +6274,F2C8 +6275,F2C9 +6276,F2CB +6277,F2CE +6278,F2D0 +6279,F2D1 +627A,F2D2 +627B,F2D3 +627C,F2D4 +627D,F2D6 +627E,F2D7 +627F,F2D8 +6280,F2D9 +6281,F2DA +6282,F2DB +6283,F2E0 +6284,F2E1 +6285,F2E2 +6286,F2E4 +6287,F2E5 +6288,F2E6 +6289,F2E7 +628A,F2E8 +628B,F2EA +628C,F2F2 +628D,F2EB +628E,F2EC +628F,F2ED +6290,F2EE +6291,F2F0 +6292,F2F1 +6293,F2F3 +6294,F2F4 +6295,F2F5 +6296,F2F6 +6297,F2F7 +6298,F2F8 +6299,F2F9 +629A,F2FB +629B,F3A2 +629C,F2FD +629D,F2FE +629E,F3A3 +629F,F3A4 +62A0,F3A5 +62A1,F3A6 +62A2,F3A8 +62A3,F3B0 +62A4,F3A9 +62A5,F3AA +62A6,F3AC +62A7,F3AB +62A8,F3AD +62A9,F3AE +62AA,F3AF +62AB,F3B1 +62AC,F3B2 +62AD,F3B4 +62AE,F3B3 +62AF,F3B5 +62B0,F3B6 +62B1,F3B7 +62B2,F3B8 +62B3,F3B9 +62B4,F3BA +62B5,F3BB +62B6,F3BC +62B7,F3BD +62B8,F3BE +62B9,F3BF +62BA,F3C0 +62BB,F3C1 +62BC,F3C3 +62BD,F3C4 +62BE,F3C5 +62BF,F3C6 +62C0,F3C7 +62C1,F3C8 +62C3,F3C9 +62C4,F3CA +62C5,F3CB +62C6,F3CC +62C7,F3CD +62C8,F3CE +62C9,F3D0 +62CA,F3D1 +62CB,F3D2 +62CC,F3D3 +62CD,F3D4 +62CF,F3D5 +62D0,F3D6 +62D1,F3D7 +62D2,F3D8 +62D3,F3DB +62D4,F3DA +62D6,F3DC +62D7,F3DD +62D8,F3DE +62D9,F3DF +62DA,F3E0 +62DC,F3E2 +62DD,F3E3 +62DE,F3E4 +62DF,F3E5 +62E0,F3E6 +62E2,F3E7 +62E3,F3E8 +62E4,F3EA +62E5,F3EB +62E6,F3EC +62E7,F3ED +62E8,F3EE +62E9,F3EF +62EA,F3F0 +62EB,F3F1 +62EC,F3F4 +62ED,F3F5 +62EE,F3F6 +62EF,F3F7 +62F0,F3F8 +62F1,F3F9 +62F2,F3FA +62F3,F3FB +62F4,F3FC +62F5,F3FD +62F6,F3FE +62F8,F4A1 +62F9,F4A2 +62FA,F4A3 +62FB,F4A4 +62FC,F4A5 +62FD,F4A7 +62FE,F4A8 +6341,F4A9 +6342,F4AA +6343,F4AB +6344,F4AC +6345,F4AD +6346,F4AE +6347,F4AF +6348,F4B0 +6349,F4B1 +634C,F4B3 +634D,F4B4 +634E,F4B5 +634F,F4B6 +6350,F4B7 +6351,F4B8 +6352,F4B9 +6353,F4BA +6354,F4BB +6355,F4BC +6357,F4BE +6358,F4BF +6359,F4C0 +635A,F4C1 +635B,F4C2 +635C,F4C3 +635D,F4C4 +635E,F4C5 +635F,F4C6 +6360,F4C7 +6361,F4C8 +6362,F4CB +6363,F4C9 +6364,F4CA +6365,F4CC +6366,F4CD +6367,F4CE +6368,F4D0 +6369,F4D1 +636A,F4D2 +636B,F4D3 +636C,F4D4 +636D,F4D5 +636E,F4D6 +636F,F4D7 +6371,F4D9 +6372,F4DB +6373,F4DD +6374,F4DE +6375,F4DF +6376,F4E0 +6377,F4E1 +6378,F4E2 +6379,F4E3 +637A,F4E4 +637B,F4E5 +637C,F4E6 +637D,F4E7 +637E,F4E8 +637F,F4E9 +6380,F4EA +6382,F4EB +6383,F4EC +6384,F4ED +6385,F4EE +6386,F4EF +6387,F4F0 +6388,F4F1 +6389,F4F2 +638B,F4F3 +638C,F4F4 +638D,F4F5 +638E,F4F6 +6390,F4F7 +6391,F4F8 +6392,F4FA +6394,F4FB +6395,F4FC +6396,F4FD +6397,F4FE +6398,F5A1 +6399,F5A2 +639A,F5A3 +639B,F5A4 +639C,F5A5 +639D,F5A6 +639E,F5A7 +639F,F5A8 +63A0,F5A9 +63A1,F5AA +63A3,F5AB +63A4,F5AE +63A5,F5AF +63A6,F5B0 +63A7,F5B1 +63A8,F5B2 +63A9,F5B3 +63AA,F5B4 +63AD,F5B5 +63AE,F5B6 +63B0,F5B7 +63B1,F5B8 +63B2,F5B9 +63B3,F5BA +63B6,F5BB +63B7,F5BC +63B8,F5BD +63B9,F5BF +63BA,F5C0 +63BB,F5C1 +63BD,F5C4 +63BE,F5C5 +63BF,F5C6 +63C1,F5C8 +63C2,F5C9 +63C3,F5CA +63C4,F5CB +63C6,F5CC +63C7,F5CD +63C8,F5CE +63C9,F5CF +63CA,F5D0 +63CB,F5D1 +63CD,F5D2 +63CE,F5D3 +63D0,F5D4 +63D1,F5D5 +63D3,F5D6 +63D4,F5D7 +63D5,F5D9 +63D6,F5DA +63D7,F5DB +63D8,F5DC +63D9,F5DD +63DA,F5DF +63DB,F5DE +63DC,F5E1 +63DE,F5E3 +63E1,F5E4 +63E3,F5E6 +63E4,F5E5 +63E5,F5E7 +63E6,F5E8 +63E7,F5E9 +63E8,F5EA +63EA,F5EB +63EB,F5ED +63EC,F5EE +63ED,F5EF +63EE,F5F0 +63EF,F5F1 +63F0,F5F3 +63F1,F5F5 +63F2,F5F6 +63F4,F5F7 +63F5,F5F8 +63F6,F5F9 +63F7,F5FA +63F8,F5FB +63F9,F5FC +63FA,F5FD +63FB,F5FE +63FC,F6A2 +63FD,F6A3 +63FE,F6A4 +6441,F6A5 +6442,F6A6 +6444,F6A7 +6445,F6A8 +6446,F6A9 +6447,F6AA +6448,F6AB +644A,F6AC +644B,F6AD +644C,F6AE +644D,F6AF +644E,F6B1 +644F,F6B0 +6450,F6B3 +6451,F6B4 +6452,F6B5 +6453,F6B6 +6454,F6B7 +6455,F6B8 +6456,F6B9 +6458,F6BA +645A,F6BC +645B,F6BD +645C,F6BE +645D,F6BF +645E,F6C0 +645F,F6C1 +6460,F6C2 +6461,F6CB +6462,F6C3 +6463,F6C5 +6464,F6C6 +6465,F6C7 +6466,F6BB +6467,F6C8 +6468,F6CA +6469,F6CC +646B,F6CD +646C,F6CE +646D,F6CF +646E,F6D0 +646F,F6D1 +6470,F6D2 +6471,F6D3 +6472,F6D4 +6473,F6D5 +6474,F6D6 +6476,F6D7 +6477,F6D8 +6478,F6D9 +6479,F6DB +647A,F6DC +647B,F6DD +647C,F6DE +647D,F6DF +647E,F6E0 +647F,F6E1 +6480,F6E2 +6481,F6E4 +6482,F6E5 +6483,F6E6 +6484,F6E7 +6485,F6E8 +6486,F6EA +6487,F6EB +6488,F6EC +6489,F6ED +648A,F6EF +648B,F6F0 +648C,F6F1 +648D,F6F2 +648E,F6F4 +648F,F6F5 +6491,F6F6 +6492,F6F7 +6493,F6F9 +6495,F6FA +6496,F6FB +6497,F6FC +6498,F6FE +6499,F7A1 +649A,F7A2 +649B,F7A3 +649C,F7A4 +649D,F7A5 +649E,F7A6 +649F,F7A7 +64A0,F7A8 +64A1,F7A9 +64A2,F7AA +64A3,F7AB +64A4,F7AC +64A5,F7AD +64A6,F7AE +64A7,F7B0 +64A8,F7B1 +64A9,F7B2 +64AA,F7B3 +64AB,F7B4 +64AC,F7B5 +64AD,F7B6 +64AE,F7B7 +64AF,F7B9 +64B0,F7BA +64B1,F7BB +64B2,F7BC +64B3,F7BD +64B4,F7BE +64B5,F7BF +64B6,F7C0 +64B7,F7C1 +64B8,F7C2 +64B9,F7C3 +64BA,F7C4 +64BB,F7C5 +64BC,F7C6 +64BD,F7C7 +64BF,F7C8 +64C0,F7C9 +64C1,F7CA +64C3,F7CB +64C4,F7CC +64C5,F7CD +64C6,F7CE +64C7,F7CF +64C8,F7D0 +64C9,F7D1 +64CA,F7D2 +64CB,F7D3 +64CC,F7D4 +64CD,F7D5 +64CE,F7D6 +64CF,F7D7 +64D0,F7D8 +64D1,F7DA +64D2,F7DB +64D3,F7DC +64D4,F7DD +64D5,F7DE +64D6,F7DF +64D7,F7E0 +64D8,F7E1 +64D9,F7E2 +64DA,F7E3 +64DB,F7E4 +64DC,F7E5 +64DD,F7E8 +64DE,F7E7 +64DF,F7E9 +64E0,F7EA +64E1,F7EB +64E2,F7ED +64E3,F7EE +64E4,F7EF +64E5,F7F0 +64E6,F7F1 +64E7,F7F2 +64E8,F7F3 +64E9,F7F4 +64EA,F7F5 +64EB,F7F6 +64EC,F7F8 +64ED,F7F7 +64EE,F7F9 +64EF,F7FA +64F0,F7FC +64F1,F7FD +64F2,F7FB +64F3,F8A1 +64F4,F8A2 +64F5,F8A3 +64F6,F8A4 +64F7,F8A5 +64F8,F8A6 +64F9,F8A7 +64FA,F8A9 +64FB,F8AA +64FC,F8AB +64FD,F8AC +64FE,F8AD +6541,F8AF +6542,F8A8 +6543,F8AE +6544,F8B0 +6545,F8B1 +6546,F8B2 +6547,F8B3 +6548,F8B4 +6549,F8B5 +654A,F8B6 +654B,F8B7 +654C,F8B8 +654D,F8B9 +654E,F8BA +654F,F8BB +6551,F8BC +6552,F8BD +6553,F8BF +6554,F8C0 +6555,F8C1 +6556,F8C3 +6557,F8C4 +6558,F8C5 +6559,F8C6 +655A,F8C7 +655B,F8C8 +655C,F8C9 +655D,F8CA +655E,F8CB +655F,F8CC +6560,F8CD +6561,F8CE +6562,F8CF +6563,F8D0 +6564,F8D1 +6565,F8D2 +6566,F8D3 +6567,F8D4 +6568,F8D5 +656A,F8D6 +656B,F8D7 +656C,F8D9 +656D,F8D8 +656E,F8DA +656F,F8DC +6570,F8DD +6572,F8DE +6573,F8DF +6574,F8E0 +6575,F8E1 +6577,F8E3 +6578,F8E4 +6579,F8E5 +657A,F8E6 +657C,F8E8 +657E,F8E9 +657F,F8EA +6580,F8EB +6581,F8EC +6582,F8EE +6583,F8EF +6584,F8F1 +6585,F8F2 +6586,F8F3 +6587,F8F4 +6588,F8F5 +6589,F8F6 +658A,F8F7 +658B,F8F8 +658C,F8F9 +658D,F8FA +658E,F8FB +658F,F8FD +6591,F9A1 +6592,F9A2 +6593,F9A7 +6594,F9A3 +6595,F9A4 +6596,F9A5 +6597,F9A6 +6598,F9A8 +6599,F9A9 +659A,F9AA +659B,F9AB +659D,F9AC +659E,F9AD +659F,F9AF +65A0,F9B0 +65A1,F9B1 +65A2,F9B2 +65A3,F9B4 +65A4,F9B5 +65A5,F9B6 +65A7,F9B9 +65A8,F9BA +65A9,F9BB +65AA,F9BC +65AB,F9BE +65AC,F9BF +65AD,F9C0 +65AE,F9C1 +65AF,F9C2 +65B0,F9C4 +65B1,F9C3 +65B2,F9C5 +65B3,F9C6 +65B4,F9C7 +65B5,F9C8 +65B6,F9C9 +65B7,F9CA +65B9,F9CB +65BA,F9CC +65BB,F9CD +65BC,F9CE +65BD,F9CF +65BE,F9D0 +65BF,F9D1 +65C0,F9D2 +65C1,F9D3 +65C2,F9D4 +65C3,F9D6 +65C4,F9D7 +65C6,F9D9 +65C7,F9D8 +65C8,F9DA +65C9,F9DB +65CB,F9DC +65CC,F9DD +65CD,F9DE +65CE,F9DF +65CF,F9E0 +65D0,F9E1 +65D1,F9E2 +65D2,F9E3 +65D3,F9E4 +65D4,F9E5 +65D5,F9E6 +65D6,F9E8 +65D7,F9EA +65D8,F9EB +65D9,F9EC +65DA,F9ED +65DB,F9EE +65DC,F9F0 +65DD,F9F1 +65DE,F9F2 +65DF,F9F3 +65E0,F9F5 +65E1,F9F6 +65E2,F9F7 +65E3,F9F8 +65E4,F9F9 +65E5,F9FA +65E6,F9FB +65E8,F9FC +65E9,F9FD +65EA,F9FE +65EB,FAA2 +65EC,FAA3 +65ED,FAA4 +65EE,FAA5 +65EF,FAA6 +65F0,FAA8 +65F1,FAA7 +65F2,FAA9 +65F3,FAAA +65F5,FAAB +65F6,FAAC +65F7,FAAD +65F8,FAAF +65F9,FAB0 +65FA,FAB1 +65FB,FAB2 +65FC,FAB3 +65FD,FAB4 +65FE,FAB5 +6641,FAB6 +6642,FAB7 +6643,FAB8 +6644,FAB9 +6645,FABA +6646,FABC +6647,FABD +6648,FABE +6649,FABF +664A,FAC1 +664B,FAC0 +664C,FAC2 +664D,FAC3 +664E,FAC4 +664F,FAC5 +6650,FAC6 +6651,FAC7 +6652,FAC8 +6653,FAC9 +6654,FACA +6655,FACD +6656,FACC +6657,FACE +6658,FACF +6659,FAD0 +665A,FAD1 +665B,FAD2 +665C,FAD3 +665D,FAD4 +665E,FAD6 +665F,FAD7 +6660,FAD8 +6661,FADB +6662,FADE +6663,FADC +6664,FADF +6665,FAE1 +6666,FAE2 +6667,FAE3 +6668,FAE4 +6669,FAE5 +666A,FAE6 +666B,FAE7 +666C,FAE8 +666D,FAE9 +666E,FAEA +666F,FAEB +6670,FAEC +6671,FAED +6672,FAEE +6674,FAEF +6675,FAF0 +6676,FAF1 +6677,FAF2 +6678,FAF3 +6679,FAF4 +667A,FAF5 +667C,FAF7 +667D,FAF6 +667E,FAF8 +6680,FAF9 +6681,FAFA +6682,FAFB +6683,FAFD +6684,FAFE +6685,FBA1 +6686,FAFC +6687,FBA4 +6688,FBA6 +6689,FBA8 +668A,FBAA +668B,FBAB +668C,FBAC +668D,FBAE +668E,FBAF +668F,FBB0 +6690,FBB1 +6691,FBB2 +6692,FBB3 +6693,FBB4 +6694,FBB6 +6695,FBB8 +6696,FBB9 +6697,FBBA +6698,FBBB +6699,FBDF +669A,FBBC +669B,FBBE +669C,FBBD +669D,FBBF +669E,FBC1 +669F,FBC4 +66A0,FBC2 +66A1,FBC6 +66A2,FBC7 +66A3,FBC8 +66A4,FBC9 +66A5,FBCA +66A6,FBCB +66A7,FBCD +66A8,FBCC +66A9,FBCE +66AA,FBCF +66AB,FBD1 +66AC,FBD2 +66AD,FBD3 +66AF,FBD4 +66B0,FBD5 +66B1,FBD6 +66B2,FBD7 +66B3,FBD9 +66B4,FBDB +66B5,FBDC +66B6,FBDD +66B7,FBDE +66B8,FBC3 +66BA,FBE0 +66BB,FBE1 +66BC,FBE2 +66BD,FBE3 +66BE,FBE4 +66BF,FBE5 +66C0,FBE6 +66C1,FBE7 +66C2,FBE8 +66C3,FBE9 +66C4,FBEA +66C5,FBEB +66C6,FBEC +66C7,FBED +66C8,FBEE +66CA,FBF0 +66CB,FBEF +66CC,FBF1 +66CD,FBF2 +66CE,FBF3 +66CF,FBF8 +66D0,FBF5 +66D1,FBF6 +66D2,FBF7 +66D3,FBF9 +66D4,FBFB +66D5,FBFC +66D6,FBFD +66D7,FCA1 +66D8,FBFE +66D9,FCA2 +66DA,FBFA +66DB,FCA3 +66DC,FCA4 +66DD,FCA5 +66DE,FCA8 +66DF,FCA7 +66E0,FCA9 +66E1,FCAA +66E2,FCAB +66E3,FCAC +66E4,FCAD +66E5,FCAE +66E7,FCAF +66E8,FCB0 +66EA,FCB2 +66EB,FCB3 +66EC,FCB4 +66EE,FCB5 +66EF,FCB8 +66F0,FCB6 +66F1,FCB9 +66F2,FCBA +66F3,FCBB +66F4,FCBC +66F5,FCBD +66F6,FCBE +66F7,FCBF +66F9,FCC0 +66FA,FCC1 +66FB,FCC2 +66FC,FCC3 +66FD,FCC4 +66FE,FCC5 +6742,FCC7 +6744,FCC8 +6745,FCCB +6746,FCC9 +6747,FCCC +6748,FCCF +6749,FCD1 +674A,FCD3 +674B,FCD5 +674C,FCD6 +674D,FCD8 +674E,FCD9 +674F,FCDA +6750,FCDB +6751,FCDC +6752,FCDE +6753,FCDF +6754,FCE0 +6755,FCE1 +6756,FCE2 +6757,FCE3 +6758,FCE4 +6759,FCE5 +675A,FCE6 +675B,FCE7 +675C,FCE8 +675D,FCE9 +675E,FCEA +675F,FCEB +6760,FCEC +6761,FCEE +6762,FCEF +6763,FCF0 +6764,FCF1 +6765,FCF2 +6766,FCF4 +6767,FCF6 +6768,FCF7 +676A,FCF8 +676B,FCF9 +676C,FCFB +676D,FCFC +676E,FDA1 +676F,FDA2 +6770,FDA3 +6771,FDA5 +6772,FDA6 +6773,FDA7 +6774,FDA8 +6775,FDA9 +6776,FDAA +6777,FDAB +6778,FDAD +6779,FDAE +677B,FDB1 +677D,FDB3 +677E,FDB4 +677F,FDB5 +6780,FDBB +6781,FDB6 +6782,FDB7 +6783,FDB8 +6784,FDB9 +6785,FDBA +6786,FDBC +6787,FDBD +6788,FDC0 +6789,FDC1 +678A,FDC2 +678B,FDC3 +678C,FDC4 +678D,FDC5 +678E,FDC6 +678F,FDC7 +6790,FDC8 +6791,FDC9 +6792,FDCA +6793,FDCB +6794,FDCC +6795,FDCD +6796,FDCE +6797,FDCF +6798,FDD0 +6799,FDD1 +679A,FDD2 +679B,FDD3 +679C,FDD5 +679D,FDD6 +679E,FDD4 +679F,FDD7 +67A0,FDD8 +67A1,FDD9 +67A3,FDDA +67A4,FDDB +67A5,FDDD +67A6,FDDE +67A7,FDDF +67A8,FDE0 +67AA,FDE2 +67AB,FDE4 +67AC,FDE3 +67AD,FDE5 +67AE,FDE6 +67AF,FDE7 +67B0,FDE9 +67B1,FDEA +67B2,FDEC +67B3,FDED +67B4,FDEF +67B5,FDF0 +67B6,FDF1 +67B7,FDF6 +67B8,FDF2 +67B9,FDF4 +67BA,FDFA +67BB,FDF7 +67BC,FDEB +67BD,FDF8 +67BE,FDFB +67BF,FDFC +67C0,FDFD +67C1,FDFE +6841,CAAE +6842,CAB1 +6843,CAB2 +6844,CAC2 +6845,CAC9 +6846,CAD3 +6847,CAD4 +6848,CAD8 +6849,CAE9 +684A,CAF1 +684B,CAF9 +684C,CAFB +684D,CAFD +684E,CBA8 +684F,CBB1 +6850,CBB4 +6851,CBB6 +6852,CBB8 +6853,CBBE +6854,CBC3 +6855,CBD0 +6856,CBD1 +6857,CBD3 +6858,CBDA +6859,CBE4 +685A,CBE6 +685B,CBE9 +685C,CBF1 +685D,CBF2 +685E,CBFA +685F,CBFD +6860,CCA2 +6861,CCA6 +6862,CCAE +6863,CCBC +6864,CCC6 +6865,CCC9 +6866,CCCA +6867,CCCC +6868,CCD0 +6869,CCD5 +686A,CCDE +686B,CCE0 +686C,CCF7 +686D,CDA1 +686E,CDB6 +686F,CDBC +6870,CDBE +6871,CDC4 +6872,CDC9 +6873,CDCA +6874,CDE4 +6875,CDE6 +6876,CDF5 +6877,CDF7 +6878,CDF9 +6879,CDFA +687A,CEA5 +687B,CEA7 +687C,CEB5 +687D,CEC2 +687E,CEC9 +687F,CFA6 +6880,CFBE +6881,CFCA +6882,CFD4 +6883,CFD9 +6884,CFE4 +6885,CFEC +6886,CFEE +6887,CFF1 +6888,CFF2 +6889,CFFB +688A,CFFC +688B,D0A7 +688C,D0AB +688D,D0B2 +688E,D0B4 +688F,D0C2 +6890,D0D2 +6891,D0D4 +6892,D0D9 +6893,D0DF +6894,D0F2 +6895,D1AC +6896,D1AF +6897,D1B5 +6898,D1BC +6899,D1C5 +689A,D1D4 +689B,D1D5 +689C,D1D6 +689D,D1D8 +689E,D1DB +689F,D1DC +68A0,D1DD +68A1,D1DE +68A2,D1DF +68A3,D1E0 +68A4,D1E2 +68A5,D1E3 +68A6,D1E4 +68A7,D1E5 +68A8,D1E6 +68A9,D1E8 +68AA,D1E9 +68AB,D1EA +68AC,D1EB +68AD,D1ED +68AE,D1EF +68AF,D1F0 +68B0,D1F2 +68B1,D1F6 +68B2,D1F7 +68B3,D1F8 +68B4,D1F9 +68B5,D1FA +68B6,D1FC +68B7,D1FD +68B8,D1FE +68B9,D2A2 +68BA,D2A3 +68BB,D2A4 +68BC,D2A7 +68BD,D2A8 +68BE,D2A9 +68BF,D2AA +68C0,D2AB +68C1,D2AD +68C2,D2B2 +68C3,D2B5 +68C4,D2BC +68C5,D2BE +68C6,D2C2 +68C7,D2C3 +68C8,D2C4 +68C9,D2C6 +68CA,D2C7 +68CB,D2C8 +68CC,D2C9 +68CD,D2CA +68CE,D2CB +68CF,D2CC +68D0,D2CD +68D1,D2CE +68D2,D2CF +68D3,D2D0 +68D4,D2D1 +68D5,D2D2 +68D6,D2D3 +68D7,D2D4 +68D8,D2D5 +68D9,D2D6 +68DA,D2D7 +68DB,D2D9 +68DC,D2DA +68DD,D2DE +68DE,D2DF +68DF,D2E1 +68E0,D2E2 +68E1,D2E4 +68E2,D2E5 +68E3,D2E6 +68E4,D2E7 +68E5,D2E8 +68E6,D2E9 +68E7,D2EA +68E8,D2EB +68E9,D2EE +68EA,D2F0 +68EB,D2F1 +68EC,D2F2 +68ED,D2F3 +68EE,D2F4 +68EF,D2F5 +68F0,D2F7 +68F1,D2F8 +68F2,D3A2 +68F3,D3A7 +68F4,D3B6 +68F5,D3BB +68F6,D3BC +68F7,D3C0 +68F8,D3C6 +68F9,D3CA +68FA,D3CC +68FB,D3D4 +68FC,D3D9 +68FD,D3DD +68FE,D3F7 +6941,D3FC +6942,D4A2 +6943,D4AD +6944,D4C5 +6945,D4C8 +6946,D4E8 +6947,D4EC +6948,D4F1 +6949,D4FC +694A,D5AB +694B,D5AE +694C,D5CF +694D,D5D0 +694E,D5E3 +694F,D6A2 +6950,D6B8 +6951,D6B9 +6952,D6BD +6953,D6C0 +6954,D6C8 +6955,D6CD +6956,D6CF +6957,D6D1 +6958,D6DF +6959,D6E1 +695A,D6EE +695B,D6F2 +695C,D7A2 +695D,D7A5 +695E,D7AA +695F,D7AD +6960,D7AF +6961,D7B2 +6962,D7B7 +6963,D7C2 +6964,D7CF +6965,D7DA +6966,D7DF +6967,D7E4 +6968,D7E8 +6969,D7E9 +696A,D7EB +696B,D7F1 +696C,D8A7 +696D,D8B1 +696E,D8B2 +696F,D8B3 +6970,D8C5 +6971,D8C9 +6972,D8D6 +6973,D8F7 +6974,D9A7 +6975,D9AA +6976,D9AC +6977,D9B9 +6978,D9C1 +6979,D9C5 +697A,D9D0 +697B,D9DF +697C,D9E4 +697D,D9EA +697E,D9EE +697F,D9FA +6980,DAA7 +6981,DAA9 +6982,DAB2 +6983,DAB3 +6984,DAB5 +6985,DABD +6986,DABE +6987,DAC9 +6988,DAEE +6989,DAF0 +698A,DAF1 +698B,DAFD +698C,DBB3 +698D,DBB5 +698E,DBB6 +698F,DBCC +6990,DBDF +6991,DBE2 +6992,DBFC +6993,DCA2 +6994,DCB8 +6995,DCC0 +6996,DCCA +6997,DCCC +6998,DCDE +6999,DCEC +699A,DCF4 +699B,DCF6 +699C,DCFB +699D,DDA1 +699E,DDB2 +699F,DDB4 +69A0,DDC3 +69A1,DDCB +69A2,DDD3 +69A3,DDD8 +69A4,DDED +69A5,DDF0 +69A6,DDF1 +69A7,DDF9 +69A8,DDFB +69A9,DEAD +69AA,DEB3 +69AB,DEB7 +69AC,DEC6 +69AD,DEDA +69AE,DEFA +69AF,DFAC +69B0,DFB0 +69B1,DFBC +69B2,DFC7 +69B3,DFE0 +69B4,DFF2 +69B5,DFFB +69B6,E0BD +69B7,E0C0 +69B8,E0C2 +69B9,E0C4 +69BA,E0D6 +69BB,E0D7 +69BC,E0DC +69BD,E0E1 +69BE,E0E5 +69BF,E0E6 +69C0,E0ED +69C1,E0F4 +69C2,E0FB +69C3,E1C4 +69C4,E1C6 +69C5,E1D7 +69C6,E1DA +69C7,E1DB +69C8,E1DE +69C9,E1E0 +69CA,E1E2 +69CB,E1E5 +69CC,E1E7 +69CD,E1FC +69CE,E2AF +69CF,E2B0 +69D0,E2C2 +69D1,E2CA +69D2,E2D8 +69D3,E2DA +69D4,E2DB +69D5,E2DF +69D6,E2E3 +69D7,E2E5 +69D8,E2F1 +69D9,E2F2 +69DA,E2F4 +69DB,E2FC +69DC,E3BA +69DD,E3CE +69DE,E3D9 +69DF,E3DA +69E0,E3E0 +69E1,E3F0 +69E2,E4A6 +69E3,E4AF +69E4,E4B5 +69E5,E4C1 +69E6,E4C7 +69E7,E4C8 +69E8,E4CA +69E9,E4D5 +69EA,E4DA +69EB,E4DB +69EC,E4F9 +69ED,E4FC +69EE,E5B1 +69EF,E5B2 +69F0,E5B6 +69F1,E5B9 +69F2,E5BB +69F3,E5BC +69F4,E5C4 +69F5,E5CC +69F6,E5CE +69F7,E5D0 +69F8,E5D2 +69F9,E5D6 +69FA,E5DC +69FB,E5EE +69FC,E5EF +69FD,E5F7 +69FE,E5FA +6A41,E5FB +6A42,E5FC +6A43,E5FE +6A44,E6A1 +6A45,E6A4 +6A46,E6A5 +6A47,E6A6 +6A48,E6A7 +6A49,E6A9 +6A4A,E6AA +6A4B,E6AB +6A4C,E6AC +6A4D,E6AD +6A4E,E6AF +6A4F,E6B0 +6A50,E6B1 +6A51,E6B3 +6A52,E6B7 +6A53,E6B8 +6A54,E6BC +6A55,E6C4 +6A56,E6C6 +6A57,E6C7 +6A58,E6C9 +6A59,E6CC +6A5A,E6D2 +6A5B,E6D6 +6A5C,E6D9 +6A5D,E6DC +6A5E,E6DF +6A5F,E6E0 +6A60,E6E1 +6A61,E6E4 +6A62,E6E5 +6A63,E6E6 +6A64,E6E8 +6A65,E6EA +6A66,E6EB +6A67,E6EF +6A68,E6F1 +6A69,E6F5 +6A6A,E6F6 +6A6B,E6F7 +6A6C,E6F9 +6A6D,E6FC +6A6E,E7A1 +6A6F,E7A6 +6A70,E7A9 +6A71,E7AA +6A72,E7AC +6A73,E7AD +6A74,E7AE +6A75,E7B0 +6A76,E7B7 +6A77,E7B9 +6A78,E7BB +6A79,E7BC +6A7A,E7BE +6A7B,E7BF +6A7C,E7C4 +6A7D,E7C6 +6A7E,E7C7 +6A7F,E7CB +6A80,E7CC +6A81,E7CD +6A82,E7CE +6A83,E7CF +6A84,E7D0 +6A85,E7D1 +6A86,E7D3 +6A87,E7D7 +6A88,E7DB +6A89,E7DF +6A8A,E7E4 +6A8B,E7E6 +6A8C,E7EB +6A8D,E7F1 +6A8E,E7F8 +6A8F,E7F9 +6A90,E7FE +6A91,E8A2 +6A92,E8A4 +6A93,E8A7 +6A94,E8A8 +6A95,E8B2 +6A96,E8BD +6A97,E8C1 +6A98,E8C9 +6A99,E8CA +6A9A,E8CD +6A9B,E8D2 +6A9C,E8DF +6A9D,E8E3 +6A9E,E8E7 +6A9F,E8E8 +6AA0,E8EF +6AA1,E8F0 +6AA2,E8F1 +6AA3,E8F5 +6AA4,E8F7 +6AA5,E8FB +6AA6,E8FC +6AA7,E8FE +6AA8,E9A7 +6AA9,E9AC +6AAA,E9B2 +6AAB,E9B5 +6AAC,E9B9 +6AAD,E9BA +6AAE,E9BD +6AAF,E9BF +6AB0,E9C5 +6AB1,E9CC +6AB2,E9D9 +6AB3,E9DB +6AB4,E9DC +6AB5,E9E1 +6AB6,E9E4 +6AB7,E9E9 +6AB8,E9ED +6AB9,E9EE +6ABA,E9F1 +6ABB,E9F8 +6ABC,E9FA +6ABD,E9FB +6ABE,E9FE +6ABF,EAA7 +6AC0,EAB1 +6AC1,EAB6 +6AC2,EAB7 +6AC3,EAB8 +6AC4,EAC1 +6AC5,EAD1 +6AC6,EAD9 +6AC7,EADC +6AC8,EAE5 +6AC9,EAF4 +6ACA,EAF7 +6ACB,EAF9 +6ACC,EAFB +6ACD,EAFC +6ACE,EAFE +6ACF,EBA3 +6AD0,EBA4 +6AD1,EBA7 +6AD2,EBA9 +6AD3,EBAA +6AD4,EBBA +6AD5,EBBB +6AD6,EBBC +6AD7,EBBD +6AD8,EBC1 +6AD9,EBC2 +6ADA,EBC6 +6ADB,EBC7 +6ADC,EBCB +6ADD,EBCC +6ADE,EBCD +6ADF,EBCF +6AE0,EBD0 +6AE1,EBD1 +6AE2,EBD2 +6AE3,EBD5 +6AE4,EBD8 +6AE5,EBF5 +6AE6,EBFB +6AE7,ECA6 +6AE8,ECA7 +6AE9,ECAA +6AEA,ECB0 +6AEB,ECB1 +6AEC,ECB2 +6AED,ECB5 +6AEE,ECB8 +6AEF,ECBA +6AF0,ECBD +6AF1,ECBE +6AF2,ECC0 +6AF3,ECC1 +6AF4,ECC2 +6AF5,ECC4 +6AF6,ECC5 +6AF7,ECC6 +6AF8,ECC9 +6AF9,ECCA +6AFA,ECD0 +6AFB,ECD5 +6AFC,ECDD +6AFD,ECDE +6AFE,ECDF +6B41,ECE0 +6B42,ECE1 +6B43,ECE2 +6B44,ECE4 +6B45,ECE7 +6B46,ECE8 +6B47,ECEA +6B48,ECF6 +6B49,ECF7 +6B4A,ECF8 +6B4B,ECFA +6B4C,ECFE +6B4D,EDA1 +6B4E,EDA2 +6B4F,EDA3 +6B50,EDA7 +6B51,EDBC +6B52,EDCF +6B53,EDF5 +6B54,EEAA +6B55,EEAD +6B56,EEC7 +6B57,EEC9 +6B58,EED1 +6B59,EED2 +6B5A,EED4 +6B5B,EEDB +6B5C,EEE1 +6B5D,EEEB +6B5E,EEEC +6B5F,EEED +6B60,EEF4 +6B61,EFA2 +6B62,EFA5 +6B63,EFA7 +6B64,EFB2 +6B65,EFBB +6B66,EFC6 +6B67,EFDE +6B68,EFE0 +6B69,EFE3 +6B6A,EFE6 +6B6B,EFE7 +6B6C,EFE8 +6B6D,EFE9 +6B6E,EFEA +6B6F,EFF2 +6B70,EFFB +6B71,F0D1 +6B72,F0E7 +6B73,F0F5 +6B74,F1A1 +6B75,F1AF +6B76,F1BE +6B77,F1BF +6B78,F1D9 +6B79,F1E0 +6B7A,F1E6 +6B7B,F1F9 +6B7C,F2AF +6B7D,F2BA +6B7E,F2C6 +6B7F,F2CA +6B80,F2CC +6B81,F2CD +6B82,F2CF +6B83,F2D5 +6B84,F2DC +6B85,F2DD +6B86,F2DE +6B87,F2DF +6B88,F2E9 +6B89,F2EF +6B8A,F2FA +6B8B,F2FC +6B8C,F3A1 +6B8D,F3A7 +6B8E,F3C2 +6B8F,F3CF +6B90,F3D9 +6B91,F3E1 +6B92,F3E9 +6B93,F3F2 +6B94,F3F3 +6B95,F4A6 +6B96,F4B2 +6B97,F4BD +6B98,F4CF +6B99,F4D8 +6B9A,F4DA +6B9B,F4DC +6B9C,F4F9 +6B9D,F5AC +6B9E,F5AD +6B9F,F5BE +6BA0,F5C2 +6BA1,F5C3 +6BA2,F5C7 +6BA3,F5D8 +6BA4,F5E0 +6BA5,F5E2 +6BA6,F5EC +6BA7,F5F2 +6BA8,F5F4 +6BA9,F6A1 +6BAA,F6B2 +6BAB,F6C4 +6BAC,F6C9 +6BAD,F6DA +6BAE,F6E3 +6BAF,F6E9 +6BB0,F6EE +6BB1,F6F3 +6BB2,F6F8 +6BB3,F6FD +6BB4,F7AF +6BB5,F7B8 +6BB6,F7D9 +6BB7,F7E6 +6BB8,F7EC +6BB9,F7FE +6BBA,F8BE +6BBB,F8C2 +6BBC,F8DB +6BBD,F8E2 +6BBE,F8E7 +6BBF,F8ED +6BC0,F8F0 +6BC1,F8FC +6BC2,F8FE +6BC3,F9AE +6BC4,F9B3 +6BC5,F9B7 +6BC6,F9B8 +6BC7,F9BD +6BC8,F9D5 +6BC9,F9E7 +6BCA,F9E9 +6BCB,F9EF +6BCC,F9F4 +6BCD,FAA1 +6BCE,FAAE +6BCF,FABB +6BD0,FACB +6BD1,FAD5 +6BD2,FAE0 +6BD3,FADA +6BD4,FADD +6BD5,FAD9 +6BD6,FBA2 +6BD7,FBA3 +6BD8,FBA5 +6BD9,FBA7 +6BDA,FBA9 +6BDB,FBAD +6BDC,FBB5 +6BDD,FBB7 +6BDE,FBC0 +6BDF,FBC5 +6BE0,FBD0 +6BE1,FBD8 +6BE2,FBDA +6BE3,FBF4 +6BE4,FCA6 +6BE5,FCB1 +6BE6,FCB7 +6BE7,FCC6 +6BE8,FCCA +6BE9,FCCD +6BEA,FCCE +6BEB,FCD0 +6BEC,FCD2 +6BED,FCD4 +6BEE,FCD7 +6BEF,FCDD +6BF0,FCED +6BF1,FCF3 +6BF2,FCF5 +6BF3,FCFA +6BF4,FCFD +6BF5,FCFE +6BF6,FDA4 +6BF7,FDAC +6BF8,FDAF +6BF9,FDB0 +6BFA,FDB2 +6BFB,FDBE +6BFC,FDBF +6BFD,FDDC +6BFE,FDE1 +6C41,FDE8 +6C42,FDEE +6C43,FDF3 +6C44,FDF5 +6C45,FDF9 +8441,A1A1 +8442,A1A1 +8443,A1A1 +8444,A1A1 +8445,A1A1 +8446,A1A1 +8447,A1A1 +8448,A1A1 +8449,A1A1 +844A,A1A1 +844B,A1A1 +844C,A1A1 +844D,A1A1 +844E,A1A1 +844F,A1A1 +8450,A1A1 +8451,A1A1 +8453,A1A1 +8454,A1A1 +8455,A1A1 +8456,A1A1 +8457,A1A1 +8458,A1A1 +8459,A1A1 +845A,A1A1 +845B,A1A1 +845C,A1A1 +845D,A1A1 +8461,A1A1 +8481,A1A1 +84A1,A1A1 +84C1,A1A1 +84E1,A1A1 +8541,A1A1 +8561,A1A1 +8581,A1A1 +85A1,A1A1 +85C1,A1A1 +85E1,A1A1 +8641,A1A1 +8661,A1A1 +8681,A1A1 +86A1,A1A1 +86C1,A1A1 +86E1,A1A1 +8741,A1A1 +8761,A1A1 +8781,A1A1 +87A1,A1A1 +8841,A1A1 +8855,A1A1 +8861,B0A1 +8862,B0A2 +8863,B0A2 +8864,B0A2 +8865,B0A3 +8866,B0A3 +8867,B0A3 +8868,B0A4 +8869,B0A5 +886A,B0A6 +886B,B0A7 +886C,B0A5 +886D,B0A5 +886E,B0A5 +886F,B0B1 +8870,B0A5 +8871,B0A8 +8873,B0A9 +8874,B0AA +8875,B0AB +8876,B0AC +8877,B0AD +8878,B0AE +8879,B0AF +887A,B0A2 +887B,B0B0 +887C,B0B1 +887D,B0B2 +8881,B0B3 +8882,B0B4 +8883,B0B4 +8884,B0B4 +8885,B0B5 +8886,B0B5 +8887,B0B5 +8888,B0B9 +8889,B0B6 +888A,B0B4 +888B,B0B7 +888C,B0B6 +888D,B0B6 +888E,B0B6 +888F,B0B8 +8890,B0B6 +8891,B0B7 +8893,B0B8 +8894,B0B8 +8895,B0B9 +8896,B0BA +8897,B0BB +8898,B0B9 +8899,B0B9 +889A,B0B4 +889B,B0B9 +889C,B0B8 +889D,B0BB +88A1,B0BC +88A2,B0BD +88A3,B0BD +88A4,B0BD +88A5,B0BE +88A6,B0BE +88A7,B0BE +88A8,B0C0 +88A9,B0BF +88AA,B0BD +88AB,B0A7 +88AC,B0BF +88AD,B0BF +88AE,B0BF +88AF,B0B1 +88B0,B0BF +88B1,B0A8 +88B3,B0A9 +88B4,B0AA +88B5,B0C0 +88B6,B0C0 +88B7,B0C1 +88B8,B0C0 +88B9,B0C0 +88BA,B0BD +88BB,B0C0 +88BC,B0B1 +88BD,B0B2 +88C1,B0C2 +88C2,B0B4 +88C3,B0B4 +88C4,B0B4 +88C5,B0C3 +88C6,B0C3 +88C7,B0C3 +88C8,B0EC +88C9,B0C4 +88CA,B0B4 +88CB,B0B7 +88CC,B0C4 +88CD,B0C4 +88CE,B0C4 +88CF,B0EB +88D0,B0C4 +88D1,B0B7 +88D3,B0EB +88D4,B0EB +88D5,B0EC +88D6,B0EC +88D7,B0BB +88D8,B0EC +88D9,B0EC +88DA,B0B4 +88DB,B0EC +88DC,B0EB +88DD,B0BB +88E1,B0C5 +88E2,B0C6 +88E3,B0C6 +88E4,B0C6 +88E5,B0C7 +88E6,B0C7 +88E7,B0C7 +88E8,B0C8 +88E9,B0C9 +88EA,B0C6 +88EB,B0CA +88EC,B0C9 +88ED,B0C9 +88EE,B0C9 +88EF,B0D2 +88F0,B0C9 +88F1,B0CB +88F3,B0CC +88F4,B0CC +88F5,B0CD +88F6,B0CE +88F7,B0CF +88F8,B0D0 +88F9,B0C8 +88FA,B0C6 +88FB,B0D1 +88FC,B0D2 +88FD,B0D3 +8941,B0D4 +8942,B0B4 +8943,B0B4 +8944,B0B4 +8945,B0D5 +8946,B0D5 +8947,B0D5 +8948,B0D9 +8949,B0D6 +894A,B0B4 +894B,B0D7 +894C,B0D6 +894D,B0D6 +894E,B0D6 +894F,B0D8 +8950,B0D6 +8951,B0D7 +8953,B0D8 +8954,B0D8 +8955,B0D9 +8956,B0DA +8957,B0DB +8958,B0D9 +8959,B0D9 +895A,B0B4 +895B,B0D9 +895C,B0D8 +895D,B0DB +8961,B0DC +8962,B0DD +8963,B0DE +8964,B0DD +8965,B0DF +8966,B0DF +8967,B0DF +8968,B0E0 +8969,B0E1 +896A,B0DD +896B,B0E2 +896C,B0E1 +896D,B0E1 +896E,B0E1 +896F,B0E3 +8970,B0E1 +8971,B0E2 +8973,B0E3 +8974,B0E3 +8975,B0E4 +8976,B0E5 +8977,B0E6 +8978,B0E0 +8979,B0E0 +897A,B0DD +897B,B0E7 +897C,B0E3 +897D,B0D3 +8981,B0E8 +8982,B0B4 +8983,B0B4 +8984,B0B4 +8985,B0E9 +8986,B0E9 +8987,B0E9 +8988,B0EC +8989,B0EA +898A,B0B4 +898B,B0D7 +898C,B0EA +898D,B0EA +898E,B0EA +898F,B0EB +8990,B0EA +8991,B0D7 +8993,B0EB +8994,B0EB +8995,B0EC +8996,B0EC +8997,B0DB +8998,B0EC +8999,B0EC +899A,B0B4 +899B,B0EC +899C,B0EB +899D,B0DB +89A1,B0ED +89A2,B0EE +89A3,B0EE +89A4,B0EE +89A5,B0EF +89A6,B0EF +89A7,B0EF +89A8,B0F0 +89A9,B0F1 +89AA,B0EE +89AB,B0F2 +89AC,B0F1 +89AD,B0F3 +89AE,B0F1 +89AF,B0F6 +89B0,B0F4 +89B1,B0F5 +89B3,B0F6 +89B4,B0F6 +89B5,B0F7 +89B6,B0F0 +89B7,B0F8 +89B8,B0F9 +89B9,B0F0 +89BA,B0EE +89BB,B0F0 +89BC,B0F6 +89BD,B0F8 +89C1,B0FA +89C2,B0FB +89C3,B0FB +89C4,B0FB +89C5,B0FC +89C6,B0FC +89C7,B0FC +89C8,B1A3 +89C9,B0FD +89CA,B0FB +89CB,B0FE +89CC,B0FD +89CD,B0FD +89CE,B0FD +89CF,B1A2 +89D0,B0FD +89D1,B1A1 +89D3,B1A2 +89D4,B1A2 +89D5,B1A3 +89D6,B1A3 +89D7,B1A4 +89D8,B1A3 +89D9,B1A3 +89DA,B0FB +89DB,B1A3 +89DC,B1A2 +89DD,B0B2 +89E1,B1A5 +89E2,B1AC +89E3,B1AC +89E4,B1AC +89E5,B1A6 +89E6,B1A6 +89E7,B1A6 +89E8,B1A9 +89E9,B1A7 +89EA,B1AC +89EB,B1AF +89EC,B1A7 +89ED,B1A7 +89EE,B1A7 +89EF,B1A8 +89F0,B1A7 +89F1,B1AF +89F3,B1A8 +89F4,B1A8 +89F5,B1A9 +89F6,B1A9 +89F7,B1AA +89F8,B1A9 +89F9,B1A9 +89FA,B1AC +89FB,B1A9 +89FC,B1A8 +89FD,B1AA +8A41,B1AB +8A42,B1AC +8A43,B1AC +8A44,B1AC +8A45,B1AD +8A46,B1AD +8A47,B1AD +8A48,B1B1 +8A49,B1AE +8A4A,B1AC +8A4B,B1AF +8A4C,B1AE +8A4D,B1AE +8A4E,B1AE +8A4F,B1B0 +8A50,B1AE +8A51,B1AF +8A53,B1B0 +8A54,B1B0 +8A55,B1B1 +8A56,B1B1 +8A57,B1B2 +8A58,B1B1 +8A59,B1B1 +8A5A,B1AC +8A5B,B1B1 +8A5C,B1B0 +8A5D,B1B2 +8A61,B1B3 +8A62,B0EE +8A63,B0EE +8A64,B0EE +8A65,B1B4 +8A66,B1B4 +8A67,B1B4 +8A68,B1B7 +8A69,B1B5 +8A6A,B0EE +8A6B,B0F2 +8A6C,B1B5 +8A6D,B1B5 +8A6E,B1B5 +8A6F,B1B6 +8A70,B1B5 +8A71,B0F5 +8A73,B1B6 +8A74,B1B6 +8A75,B1B7 +8A76,B1B7 +8A77,B0F8 +8A78,B1B7 +8A79,B1B7 +8A7A,B0EE +8A7B,B1B7 +8A7C,B1B6 +8A7D,B0F8 +8A81,B1B8 +8A82,B1B9 +8A83,B1B9 +8A84,B1B9 +8A85,B1BA +8A86,B1BA +8A87,B1BA +8A88,B1BB +8A89,B1BC +8A8A,B1BD +8A8B,B1BE +8A8C,B1BC +8A8D,B1BC +8A8E,B1BC +8A8F,B1C1 +8A90,B1BF +8A91,B1C0 +8A93,B1C1 +8A94,B1C1 +8A95,B1C2 +8A96,B1BB +8A97,B1C3 +8A98,B1C4 +8A99,B1BB +8A9A,B1B9 +8A9B,B1BB +8A9C,B1C1 +8A9D,B1C3 +8AA1,B1C5 +8AA2,B1C6 +8AA3,B1C6 +8AA4,B1C6 +8AA5,B1C7 +8AA6,B1C7 +8AA7,B1C7 +8AA8,B1C9 +8AA9,B1C8 +8AAA,B1C6 +8AAB,B0CA +8AAC,B1C8 +8AAD,B1C8 +8AAE,B1C8 +8AAF,B0D2 +8AB0,B1C8 +8AB1,B0CB +8AB3,B0CC +8AB4,B0CC +8AB5,B1C9 +8AB6,B1C9 +8AB7,B1CA +8AB8,B1C9 +8AB9,B1C9 +8ABA,B1C6 +8ABB,B1C9 +8ABC,B0D2 +8ABD,B0D3 +8AC1,B1CB +8AC2,B2E8 +8AC3,B2E8 +8AC4,B2E8 +8AC5,B1A6 +8AC6,B1A6 +8AC7,B1A6 +8AC8,B1CC +8AC9,B1A7 +8ACA,B2E8 +8ACB,B0D7 +8ACC,B1A7 +8ACD,B1A7 +8ACE,B1A7 +8ACF,B1A8 +8AD0,B1A7 +8AD1,B0D7 +8AD3,B1A8 +8AD4,B1A8 +8AD5,B1CC +8AD6,B1CC +8AD7,B1AA +8AD8,B1CC +8AD9,B1CC +8ADA,B2E8 +8ADB,B1CC +8ADC,B1A8 +8ADD,B1AA +8AE1,B1CD +8AE2,B1CE +8AE3,B1CE +8AE4,B1CE +8AE5,B1CF +8AE6,B1CF +8AE7,B1CF +8AE8,B1D3 +8AE9,B1D0 +8AEA,B1CE +8AEB,B1D1 +8AEC,B1D0 +8AED,B1D0 +8AEE,B1D0 +8AEF,B1D2 +8AF0,B1D0 +8AF1,B1D1 +8AF3,B1D2 +8AF4,B1D2 +8AF5,B1D3 +8AF6,B1D3 +8AF7,B1EB +8AF8,B1D3 +8AF9,B1D3 +8AFA,B1CE +8AFB,B1D3 +8AFC,B1D2 +8AFD,B1EB +8B41,B1D4 +8B42,B1B9 +8B43,B1B9 +8B44,B1B9 +8B45,B1D5 +8B46,B1D5 +8B47,B1D5 +8B48,B1BB +8B49,B1D6 +8B4A,B1BD +8B4B,B1BE +8B4C,B1D6 +8B4D,B1D6 +8B4E,B1D6 +8B4F,B1C1 +8B50,B1D6 +8B51,B1C0 +8B53,B1C1 +8B54,B1C1 +8B55,B1C2 +8B56,B1BB +8B57,B1C3 +8B58,B1C4 +8B59,B1BB +8B5A,B1B9 +8B5B,B1BB +8B5C,B1C1 +8B5D,B1C3 +8B61,B1D7 +8B62,B1D8 +8B63,B1D8 +8B64,B1D8 +8B65,B1D9 +8B66,B1D9 +8B67,B1D9 +8B68,B1DA +8B69,B1DB +8B6A,B1DC +8B6B,B1DD +8B6C,B1DB +8B6D,B1DB +8B6E,B1DB +8B6F,B1DE +8B70,B1DB +8B71,B1DD +8B73,B1DE +8B74,B1DE +8B75,B1DF +8B76,B1DA +8B77,B1E0 +8B78,B1DA +8B79,B1DA +8B7A,B1D8 +8B7B,B1DA +8B7C,B1DE +8B7D,B1E0 +8B81,B1E1 +8B82,B1E3 +8B83,B1E3 +8B84,B1E3 +8B85,B1E4 +8B86,B1E4 +8B87,B1E4 +8B88,B1E5 +8B89,B1E6 +8B8A,B1E3 +8B8B,B1E7 +8B8C,B1E6 +8B8D,B1E6 +8B8E,B1E6 +8B8F,B1ED +8B90,B1E6 +8B91,B1E8 +8B93,B1E9 +8B94,B1E9 +8B95,B1EA +8B96,B1E5 +8B97,B1EB +8B98,B1EC +8B99,B1E5 +8B9A,B1E3 +8B9B,B1E5 +8B9C,B1ED +8B9D,B1EB +8BA1,B1E2 +8BA2,B1E3 +8BA3,B1E3 +8BA4,B1E3 +8BA5,B1E4 +8BA6,B1E4 +8BA7,B1E4 +8BA8,B1E5 +8BA9,B1E6 +8BAA,B1E3 +8BAB,B1E7 +8BAC,B1E6 +8BAD,B1E6 +8BAE,B1E6 +8BAF,B1ED +8BB0,B1E6 +8BB1,B1E8 +8BB3,B1E9 +8BB4,B1E9 +8BB5,B1EA +8BB6,B1E5 +8BB7,B1EB +8BB8,B1EC +8BB9,B1E5 +8BBA,B1E3 +8BBB,B1E5 +8BBC,B1ED +8BBD,B1EB +8C41,A1A1 +8C61,B1EE +8C62,B1EF +8C63,B1F0 +8C64,B1EF +8C65,B1F1 +8C66,B1F1 +8C67,B1F1 +8C68,B1F6 +8C69,B1F2 +8C6A,B1EF +8C6B,B1F3 +8C6C,B1F2 +8C6D,B1F2 +8C6E,B1F2 +8C6F,B1F5 +8C70,B1F2 +8C71,B1F4 +8C73,B1F5 +8C74,B1F5 +8C75,B1F6 +8C76,B1F7 +8C77,B1F8 +8C78,B1F6 +8C79,B1F6 +8C7A,B1EF +8C7B,B1F9 +8C7C,B1F5 +8C7D,B0B2 +8C81,B1FA +8C82,B1FB +8C83,B1FB +8C84,B1FB +8C85,B1FC +8C86,B1FC +8C87,B1FC +8C88,B2A2 +8C89,B1FD +8C8A,B1FB +8C8B,B1FE +8C8C,B1FD +8C8D,B1FD +8C8E,B1FD +8C8F,B2A1 +8C90,B1FD +8C91,B1FE +8C93,B2A1 +8C94,B2A1 +8C95,B2A2 +8C96,B2A3 +8C97,B2A4 +8C98,B2A2 +8C99,B2A2 +8C9A,B1FB +8C9B,B2A2 +8C9C,B2A1 +8C9D,B2A4 +8CA1,B2A5 +8CA2,B2A6 +8CA3,B2A6 +8CA4,B2A6 +8CA5,B0BE +8CA6,B0BE +8CA7,B0BE +8CA8,B0C0 +8CA9,B2A7 +8CAA,B2A6 +8CAB,B1F3 +8CAC,B2A7 +8CAD,B2A7 +8CAE,B2A7 +8CAF,B1F5 +8CB0,B2A7 +8CB1,B1F4 +8CB3,B1F5 +8CB4,B1F5 +8CB5,B0C0 +8CB6,B0C0 +8CB7,B0C1 +8CB8,B0C0 +8CB9,B0C0 +8CBA,B2A6 +8CBB,B0C0 +8CBC,B1F5 +8CBD,B0B2 +8CC1,B2BE +8CC2,B1FB +8CC3,B1FB +8CC4,B1FB +8CC5,B0C3 +8CC6,B0C3 +8CC7,B0C3 +8CC8,B2A2 +8CC9,B0C4 +8CCA,B1FB +8CCB,B1FE +8CCC,B0C4 +8CCD,B0C4 +8CCE,B0C4 +8CCF,B2A1 +8CD0,B0C4 +8CD1,B1FE +8CD3,B2A1 +8CD4,B2A1 +8CD5,B2A2 +8CD6,B2A3 +8CD7,B2A4 +8CD8,B2A2 +8CD9,B2A2 +8CDA,B1FB +8CDB,B2A2 +8CDC,B2A1 +8CDD,B2A4 +8CE1,B2A8 +8CE2,B2A9 +8CE3,B2AA +8CE4,B2A9 +8CE5,B2AB +8CE6,B2AB +8CE7,B2AB +8CE8,B2AF +8CE9,B2AC +8CEA,B2A9 +8CEB,B2AD +8CEC,B2AC +8CED,B2AC +8CEE,B2AC +8CEF,B2AE +8CF0,B2AC +8CF1,B2AD +8CF3,B2AE +8CF4,B2AE +8CF5,B2AF +8CF6,B2B0 +8CF7,B2B1 +8CF8,B2AF +8CF9,B2AF +8CFA,B2A9 +8CFB,B2AF +8CFC,B2AE +8CFD,B0D3 +8D41,B2B2 +8D42,B2B3 +8D43,B2B3 +8D44,B2B3 +8D45,B2B4 +8D46,B2B4 +8D47,B2B4 +8D48,B2B6 +8D49,B1FD +8D4A,B2B3 +8D4B,B2B5 +8D4C,B1FD +8D4D,B1FD +8D4E,B1FD +8D4F,B2A1 +8D50,B1FD +8D51,B2B5 +8D53,B2A1 +8D54,B2A1 +8D55,B2B6 +8D56,B2B6 +8D57,B2B7 +8D58,B2B6 +8D59,B2B6 +8D5A,B2B3 +8D5B,B2B6 +8D5C,B2A1 +8D5D,B2B7 +8D61,B2B8 +8D62,B0DD +8D63,B0DE +8D64,B0DD +8D65,B2B9 +8D66,B2B9 +8D67,B2B9 +8D68,B2BB +8D69,B2BA +8D6A,B0DD +8D6B,B0E2 +8D6C,B2BA +8D6D,B2BA +8D6E,B2BA +8D6F,B0E3 +8D70,B2BA +8D71,B0E2 +8D73,B0E3 +8D74,B0E3 +8D75,B2BB +8D76,B2BC +8D77,B0E6 +8D78,B2BB +8D79,B2BB +8D7A,B0DD +8D7B,B2BD +8D7C,B0E3 +8D7D,B0D3 +8D81,B2BE +8D82,B2B3 +8D83,B2B3 +8D84,B2B3 +8D85,B0E9 +8D86,B0E9 +8D87,B0E9 +8D88,B0EC +8D89,B0EA +8D8A,B2B3 +8D8B,B2B5 +8D8C,B0EA +8D8D,B0EA +8D8E,B0EA +8D8F,B0EB +8D90,B0EA +8D91,B2B5 +8D93,B0EB +8D94,B0EB +8D95,B0EC +8D96,B0EC +8D97,B2B7 +8D98,B0EC +8D99,B0EC +8D9A,B2B3 +8D9B,B0EC +8D9C,B0EB +8D9D,B2B7 +8DA1,B2BF +8DA2,B2C0 +8DA3,B2C0 +8DA4,B2C0 +8DA5,B2C1 +8DA6,B2C1 +8DA7,B2C2 +8DA8,B2C6 +8DA9,B2C3 +8DAA,B2C0 +8DAB,B2C4 +8DAC,B2C3 +8DAD,B2C3 +8DAE,B2C3 +8DAF,B2C5 +8DB0,B2C3 +8DB1,B2C4 +8DB3,B2C5 +8DB4,B2C5 +8DB5,B2C6 +8DB6,B2C6 +8DB7,B2C7 +8DB8,B2C8 +8DB9,B2C9 +8DBA,B2C0 +8DBB,B2C6 +8DBC,B2C5 +8DBD,B2C7 +8DC1,B2CA +8DC2,B2CB +8DC3,B2CB +8DC4,B2CB +8DC5,B0FC +8DC6,B0FC +8DC7,B0FC +8DC8,B2CD +8DC9,B2CC +8DCA,B2CB +8DCB,B0FE +8DCC,B2CC +8DCD,B2CC +8DCE,B2CC +8DCF,B1A2 +8DD0,B2CC +8DD1,B1A1 +8DD3,B1A2 +8DD4,B1A2 +8DD5,B2CD +8DD6,B2CD +8DD7,B2CE +8DD8,B2CD +8DD9,B2CD +8DDA,B2CB +8DDB,B2CD +8DDC,B1A2 +8DDD,B2CE +8DE1,B2CF +8DE2,B2D0 +8DE3,B2D0 +8DE4,B2D0 +8DE5,B2D3 +8DE6,B2D3 +8DE7,B2D3 +8DE8,B1A9 +8DE9,B2D4 +8DEA,B2D0 +8DEB,B2D5 +8DEC,B2D4 +8DED,B2D4 +8DEE,B2D4 +8DEF,B2D6 +8DF0,B2D4 +8DF1,B2D5 +8DF3,B2D6 +8DF4,B2D6 +8DF5,B1A9 +8DF6,B1A9 +8DF7,B2D1 +8DF8,B1A9 +8DF9,B1A9 +8DFA,B2D0 +8DFB,B1A9 +8DFC,B2D6 +8DFD,B2D1 +8E41,B2D2 +8E42,B2D0 +8E43,B2D0 +8E44,B2D0 +8E45,B2D3 +8E46,B2D3 +8E47,B2D3 +8E48,B1B1 +8E49,B2D4 +8E4A,B2D0 +8E4B,B2D5 +8E4C,B2D4 +8E4D,B2D4 +8E4E,B2D4 +8E4F,B2D6 +8E50,B2D4 +8E51,B2D5 +8E53,B2D6 +8E54,B2D6 +8E55,B1B1 +8E56,B1B1 +8E57,B2D7 +8E58,B1B1 +8E59,B1B1 +8E5A,B2D0 +8E5B,B1B1 +8E5C,B2D6 +8E5D,B2D7 +8E61,B2D8 +8E62,B2C0 +8E63,B2C0 +8E64,B2C0 +8E65,B1B4 +8E66,B1B4 +8E67,B1B4 +8E68,B1B7 +8E69,B1B5 +8E6A,B2C0 +8E6B,B2C4 +8E6C,B1B5 +8E6D,B1B5 +8E6E,B1B5 +8E6F,B1B6 +8E70,B1B5 +8E71,B2C4 +8E73,B1B6 +8E74,B1B6 +8E75,B1B7 +8E76,B1B7 +8E77,B2C7 +8E78,B1B7 +8E79,B1B7 +8E7A,B2C0 +8E7B,B1B7 +8E7C,B1B6 +8E7D,B2C7 +8E81,B2D9 +8E82,B2DA +8E83,B2DA +8E84,B2DA +8E85,B2DB +8E86,B2DB +8E87,B2DB +8E88,B2E0 +8E89,B2DC +8E8A,B2DA +8E8B,B2DE +8E8C,B2DC +8E8D,B2DC +8E8E,B2DC +8E8F,B2DF +8E90,B2DD +8E91,B2DE +8E93,B2DF +8E94,B2DF +8E95,B2E0 +8E96,B2E0 +8E97,B2E1 +8E98,B2E2 +8E99,B2E0 +8E9A,B2DA +8E9B,B2E0 +8E9C,B2DF +8E9D,B2E1 +8EA1,B2E3 +8EA2,B1C6 +8EA3,B1C6 +8EA4,B1C6 +8EA5,B1C7 +8EA6,B1C7 +8EA7,B1C7 +8EA8,B2E5 +8EA9,B2E4 +8EAA,B1C6 +8EAB,B2AD +8EAC,B2E4 +8EAD,B2E4 +8EAE,B2E4 +8EAF,B2AE +8EB0,B2E4 +8EB1,B2AD +8EB3,B2AE +8EB4,B2AE +8EB5,B2E5 +8EB6,B2E5 +8EB7,B2E6 +8EB8,B2E5 +8EB9,B2E5 +8EBA,B1C6 +8EBB,B2E5 +8EBC,B2AE +8EBD,B2E6 +8EC1,B2E7 +8EC2,B2E8 +8EC3,B2E8 +8EC4,B2E8 +8EC5,B2E9 +8EC6,B2E9 +8EC7,B2E9 +8EC8,B2ED +8EC9,B2EA +8ECA,B2E8 +8ECB,B2EB +8ECC,B2EA +8ECD,B2EA +8ECE,B2EA +8ECF,B2EC +8ED0,B2EA +8ED1,B2EB +8ED3,B2EC +8ED4,B2EC +8ED5,B2ED +8ED6,B2ED +8ED7,B2D1 +8ED8,B2ED +8ED9,B2ED +8EDA,B2E8 +8EDB,B2ED +8EDC,B2EC +8EDD,B2D1 +8EE1,B2EE +8EE2,B1CE +8EE3,B1CE +8EE4,B1CE +8EE5,B2EF +8EE6,B2EF +8EE7,B2EF +8EE8,B1D3 +8EE9,B2F0 +8EEA,B1CE +8EEB,B2F1 +8EEC,B2F0 +8EED,B2F0 +8EEE,B2F0 +8EEF,B2F2 +8EF0,B2F0 +8EF1,B2F1 +8EF3,B2F2 +8EF4,B2F2 +8EF5,B1D3 +8EF6,B1D3 +8EF7,B3A9 +8EF8,B1D3 +8EF9,B1D3 +8EFA,B1CE +8EFB,B1D3 +8EFC,B2F2 +8EFD,B3A9 +8F41,B2F3 +8F42,B2DA +8F43,B2DA +8F44,B2DA +8F45,B1D5 +8F46,B1D5 +8F47,B1D5 +8F48,B2E0 +8F49,B1D6 +8F4A,B2DA +8F4B,B2DE +8F4C,B1D6 +8F4D,B1D6 +8F4E,B1D6 +8F4F,B2DF +8F50,B1D6 +8F51,B2DE +8F53,B2DF +8F54,B2DF +8F55,B2E0 +8F56,B2E0 +8F57,B2E1 +8F58,B2E2 +8F59,B2E0 +8F5A,B2DA +8F5B,B2E0 +8F5C,B2DF +8F5D,B2E1 +8F61,B2F4 +8F62,B2F5 +8F63,B2F5 +8F64,B2F5 +8F65,B2F6 +8F66,B2F6 +8F67,B2F7 +8F68,B2FD +8F69,B2F8 +8F6A,B2F5 +8F6B,B2F9 +8F6C,B2F8 +8F6D,B2F8 +8F6E,B2F8 +8F6F,B2FC +8F70,B2FA +8F71,B2FB +8F73,B2FC +8F74,B2FC +8F75,B2FD +8F76,B2FD +8F77,B2FE +8F78,B2FD +8F79,B2FD +8F7A,B2F5 +8F7B,B3A1 +8F7C,B2FC +8F7D,B2FE +8F81,B1E1 +8F82,B3A3 +8F83,B3A3 +8F84,B3A3 +8F85,B3A4 +8F86,B3A4 +8F87,B3A4 +8F88,B3A8 +8F89,B3A5 +8F8A,B3A3 +8F8B,B3A6 +8F8C,B3A5 +8F8D,B3A5 +8F8E,B3A5 +8F8F,B3A7 +8F90,B3A5 +8F91,B3A6 +8F93,B3A7 +8F94,B3A7 +8F95,B3A8 +8F96,B3A8 +8F97,B3A9 +8F98,B3A8 +8F99,B3A8 +8F9A,B3A3 +8F9B,B3A8 +8F9C,B3A7 +8F9D,B3A9 +8FA1,B3A2 +8FA2,B3A3 +8FA3,B3A3 +8FA4,B3A3 +8FA5,B3A4 +8FA6,B3A4 +8FA7,B3A4 +8FA8,B3A8 +8FA9,B3A5 +8FAA,B3A3 +8FAB,B3A6 +8FAC,B3A5 +8FAD,B3A5 +8FAE,B3A5 +8FAF,B3A7 +8FB0,B3A5 +8FB1,B3A6 +8FB3,B3A7 +8FB4,B3A7 +8FB5,B3A8 +8FB6,B3A8 +8FB7,B3A9 +8FB8,B3A8 +8FB9,B3A8 +8FBA,B3A3 +8FBB,B3A8 +8FBC,B3A7 +8FBD,B3A9 +9041,A1A1 +9058,A1A1 +905D,A1A1 +9061,B3AA +9062,B3AB +9063,B3AC +9064,B3AB +9065,B3AD +9066,B3AD +9067,B3AD +9068,B3AE +9069,B3AF +906A,B3B0 +906B,B3B1 +906C,B3AF +906D,B3AF +906E,B3AF +906F,B3B3 +9070,B3AF +9071,B3B2 +9073,B3B3 +9074,B3B3 +9075,B3B4 +9076,B3B5 +9077,B3B6 +9078,B3B7 +9079,B3B8 +907A,B3AB +907B,B3B9 +907C,B3B3 +907D,B3BA +9081,B3BB +9082,B3BC +9083,B3BC +9084,B3BC +9085,B3BD +9086,B3BD +9087,B3BD +9088,B3C1 +9089,B3BE +908A,B3BC +908B,B3BF +908C,B3BE +908D,B3BE +908E,B3BE +908F,B3C0 +9090,B3BE +9091,B3BF +9093,B3C0 +9094,B3C0 +9095,B3C1 +9096,B3C2 +9097,B3C3 +9098,B3C1 +9099,B3C1 +909A,B3BC +909B,B3C1 +909C,B3C0 +909D,B3C3 +90A1,B3C4 +90A2,B3C5 +90A3,B3C5 +90A4,B3C5 +90A5,B3C6 +90A6,B3C6 +90A7,B3C6 +90A8,B3AE +90A9,B3C7 +90AA,B3C5 +90AB,B3C8 +90AC,B3C7 +90AD,B3C7 +90AE,B3C7 +90AF,B3B3 +90B0,B3C7 +90B1,B3C8 +90B3,B3B3 +90B4,B3B3 +90B5,B3B4 +90B6,B3B5 +90B7,B3C9 +90B8,B3B7 +90B9,B3B8 +90BA,B3C5 +90BB,B3B9 +90BC,B3B3 +90BD,B3BA +90C1,B3E9 +90C2,B3BC +90C3,B3BC +90C4,B3BC +90C5,B3EA +90C6,B3EA +90C7,B3EA +90C8,B3C1 +90C9,B3BE +90CA,B3BC +90CB,B3BF +90CC,B3BE +90CD,B3BE +90CE,B3BE +90CF,B3C0 +90D0,B3BE +90D1,B3BF +90D3,B3C0 +90D4,B3C0 +90D5,B3C1 +90D6,B3C2 +90D7,B3C3 +90D8,B3C1 +90D9,B3C1 +90DA,B3BC +90DB,B3C1 +90DC,B3C0 +90DD,B3C3 +90E1,B3CA +90E2,B3CB +90E3,B3CB +90E4,B3CC +90E5,B3CD +90E6,B3CD +90E7,B3CD +90E8,B3D3 +90E9,B3CE +90EA,B3CB +90EB,B3CF +90EC,B3D0 +90ED,B3CE +90EE,B3CE +90EF,B3D2 +90F0,B3CE +90F1,B3D1 +90F3,B3D2 +90F4,B3D2 +90F5,B3D3 +90F6,B3D4 +90F7,B3D5 +90F8,B3D3 +90F9,B3D3 +90FA,B3CB +90FB,B3D3 +90FC,B3D2 +90FD,B3D6 +9141,B3D7 +9142,B3D8 +9143,B3D8 +9144,B3D8 +9145,B3D9 +9146,B3D9 +9147,B3D9 +9148,B3DD +9149,B3DA +914A,B3D8 +914B,B3DB +914C,B3DA +914D,B3DA +914E,B3DA +914F,B3DC +9150,B3DA +9151,B3DB +9153,B3DC +9154,B3DC +9155,B3DD +9156,B3DE +9157,B3DF +9158,B3DD +9159,B3DD +915A,B3D8 +915B,B3DD +915C,B3DC +915D,B3DF +9161,B3E0 +9162,B3E1 +9163,B3E1 +9164,B3E1 +9165,B3E2 +9166,B3E2 +9167,B3E2 +9168,B3E6 +9169,B3E3 +916A,B3E1 +916B,B3E4 +916C,B3E3 +916D,B3E3 +916E,B3E3 +916F,B3E5 +9170,B3E3 +9171,B3E4 +9173,B3E5 +9174,B3E5 +9175,B3E6 +9176,B3E6 +9177,B3E7 +9178,B3E6 +9179,B3E6 +917A,B3E8 +917B,B3E6 +917C,B3E5 +917D,B3D6 +9181,B3E9 +9182,B3D8 +9183,B3D8 +9184,B3D8 +9185,B3EA +9186,B3EA +9187,B3EA +9188,B3DD +9189,B3DA +918A,B3D8 +918B,B3DB +918C,B3DA +918D,B3DA +918E,B3DA +918F,B3DC +9190,B3DA +9191,B3DB +9193,B3DC +9194,B3DC +9195,B3DD +9196,B3DE +9197,B3DF +9198,B3DD +9199,B3DD +919A,B3D8 +919B,B3DD +919C,B3DC +919D,B3DF +91A1,B3EB +91A2,B3EC +91A3,B3EC +91A4,B3EC +91A5,B3ED +91A6,B3ED +91A7,B3ED +91A8,B3F2 +91A9,B3EE +91AA,B3EC +91AB,B3EF +91AC,B3EE +91AD,B3EE +91AE,B3EE +91AF,B3F4 +91B0,B3EE +91B1,B3F0 +91B3,B3F1 +91B4,B3F1 +91B5,B3F2 +91B6,B3F2 +91B7,B3F3 +91B8,B3F2 +91B9,B3F2 +91BA,B3EC +91BB,B3F2 +91BC,B3F4 +91BD,B3F5 +91C1,B3F6 +91C2,B3AB +91C3,B3AC +91C4,B3AB +91C5,B3F7 +91C6,B3F7 +91C7,B3F7 +91C8,B3F9 +91C9,B3F8 +91CA,B3B0 +91CB,B3B1 +91CC,B3F8 +91CD,B3F8 +91CE,B3F8 +91CF,B3B3 +91D0,B3F8 +91D1,B3B2 +91D3,B3B3 +91D4,B3B3 +91D5,B3F9 +91D6,B3F9 +91D7,B3B6 +91D8,B3F9 +91D9,B3F9 +91DA,B3AB +91DB,B3F9 +91DC,B3B3 +91DD,B3BA +91E1,B3FA +91E2,B3BC +91E3,B3BC +91E4,B3BC +91E5,B3FB +91E6,B3FB +91E7,B3FB +91E8,B4A1 +91E9,B3FC +91EA,B3BC +91EB,B3FD +91EC,B3FC +91ED,B3FC +91EE,B3FC +91EF,B3FE +91F0,B3FC +91F1,B3FD +91F3,B3FE +91F4,B3FE +91F5,B4A1 +91F6,B4A1 +91F7,B3C3 +91F8,B4A1 +91F9,B4A1 +91FA,B3BC +91FB,B4A1 +91FC,B3FE +91FD,B3C3 +9241,B3FA +9242,B4D0 +9243,B4D0 +9244,B4D0 +9245,B3FB +9246,B3FB +9247,B3FB +9248,B4A1 +9249,B3FC +924A,B4D0 +924B,B3FD +924C,B3FC +924D,B3FC +924E,B3FC +924F,B3FE +9250,B3FC +9251,B3FD +9253,B3FE +9254,B3FE +9255,B4A1 +9256,B4A1 +9257,B4D7 +9258,B4A1 +9259,B4A1 +925A,B4D0 +925B,B4A1 +925C,B3FE +925D,B4D7 +9261,B4A2 +9262,B4A3 +9263,B4A3 +9264,B4A3 +9265,B4A4 +9266,B4A4 +9267,B4A4 +9268,B4A7 +9269,B4A5 +926A,B4A3 +926B,B3EF +926C,B4A5 +926D,B4A5 +926E,B4A5 +926F,B4A6 +9270,B4A5 +9271,B3F0 +9273,B4A6 +9274,B4A6 +9275,B4A7 +9276,B4A7 +9277,B4A8 +9278,B4A7 +9279,B4A7 +927A,B4A3 +927B,B4A7 +927C,B4A6 +927D,B3F5 +9281,B4A9 +9282,B4AA +9283,B4AA +9284,B4AA +9285,B4AB +9286,B4AB +9287,B4AB +9288,B4AC +9289,B4AD +928A,B4AA +928B,B4AE +928C,B4AD +928D,B4AD +928E,B4AD +928F,B4AF +9290,B4AD +9291,B4AE +9293,B4AF +9294,B4AF +9295,B4B0 +9296,B4AC +9297,B4B1 +9298,B4AC +9299,B4AC +929A,B4AA +929B,B4AC +929C,B4AF +929D,B4B1 +92A1,B4B2 +92A2,B3CB +92A3,B3CB +92A4,B3CC +92A5,B3CD +92A6,B3CD +92A7,B3CD +92A8,B4B3 +92A9,B3CE +92AA,B3CB +92AB,B3CF +92AC,B3D0 +92AD,B3CE +92AE,B3CE +92AF,B3D2 +92B0,B3CE +92B1,B3D1 +92B3,B3D2 +92B4,B3D2 +92B5,B4B3 +92B6,B4B3 +92B7,B3D5 +92B8,B4B3 +92B9,B4B3 +92BA,B3CB +92BB,B4B3 +92BC,B3D2 +92BD,B3D6 +92C1,B4B4 +92C2,B3D8 +92C3,B3D8 +92C4,B3D8 +92C5,B3D9 +92C6,B3D9 +92C7,B3D9 +92C8,B3DD +92C9,B3DA +92CA,B3D8 +92CB,B3DB +92CC,B3DA +92CD,B3DA +92CE,B3DA +92CF,B3DC +92D0,B3DA +92D1,B3DB +92D3,B3DC +92D4,B3DC +92D5,B3DD +92D6,B3DE +92D7,B3DF +92D8,B3DD +92D9,B3DD +92DA,B3D8 +92DB,B3DD +92DC,B3DC +92DD,B3DF +92E1,B4B5 +92E2,B4D0 +92E3,B4D0 +92E4,B4D0 +92E5,B4B6 +92E6,B4B6 +92E7,B4B6 +92E8,B4D6 +92E9,B4B7 +92EA,B4D0 +92EB,B4B8 +92EC,B4B7 +92ED,B4B7 +92EE,B4B7 +92EF,B4B9 +92F0,B4B7 +92F1,B4B8 +92F3,B4B9 +92F4,B4B9 +92F5,B4D6 +92F6,B4D6 +92F7,B4D7 +92F8,B4D6 +92F9,B4D6 +92FA,B4D0 +92FB,B4D6 +92FC,B4B9 +92FD,B4D7 +9341,B4BA +9342,B4BB +9343,B4BB +9344,B4BB +9345,B4AB +9346,B4AB +9347,B4AB +9348,B4AC +9349,B4BC +934A,B4BB +934B,B4BD +934C,B4BC +934D,B4BC +934E,B4BC +934F,B4BE +9350,B4BC +9351,B4BD +9353,B4BE +9354,B4BE +9355,B4B0 +9356,B4AC +9357,B4BF +9358,B4AC +9359,B4AC +935A,B4BB +935B,B4AC +935C,B4BE +935D,B4BF +9361,B4C0 +9362,B4C1 +9363,B4C1 +9364,B4C1 +9365,B4C2 +9366,B4C2 +9367,B4C2 +9368,B4C8 +9369,B4C3 +936A,B4C4 +936B,B4C5 +936C,B4C3 +936D,B4C3 +936E,B4C3 +936F,B4CB +9370,B4C3 +9371,B4C6 +9373,B4C7 +9374,B4C7 +9375,B4C8 +9376,B4C8 +9377,B4C9 +9378,B4CA +9379,B4C8 +937A,B4C1 +937B,B4C8 +937C,B4CB +937D,B4C9 +9381,B4CC +9382,B4D0 +9383,B4D0 +9384,B4D0 +9385,B4CD +9386,B4CD +9387,B4CD +9388,B4D6 +9389,B4CE +938A,B4D0 +938B,B4D3 +938C,B4CE +938D,B4CE +938E,B4CE +938F,B4D8 +9390,B4CE +9391,B4D4 +9393,B4D5 +9394,B4D5 +9395,B4D6 +9396,B4D6 +9397,B4D7 +9398,B4D6 +9399,B4D6 +939A,B4D0 +939B,B4D6 +939C,B4D8 +939D,B4D7 +93A1,B4CF +93A2,B4D0 +93A3,B4D0 +93A4,B4D0 +93A5,B4D1 +93A6,B4D1 +93A7,B4D1 +93A8,B4D6 +93A9,B4D2 +93AA,B4D0 +93AB,B4D3 +93AC,B4D2 +93AD,B4D2 +93AE,B4D2 +93AF,B4D8 +93B0,B4D2 +93B1,B4D4 +93B3,B4D5 +93B4,B4D5 +93B5,B4D6 +93B6,B4D6 +93B7,B4D7 +93B8,B4D6 +93B9,B4D6 +93BA,B4D0 +93BB,B4D6 +93BC,B4D8 +93BD,B4D7 +9441,A1A1 +9461,B4D9 +9462,B4DA +9463,B4DB +9464,B4DA +9465,B4DC +9466,B4DC +9467,B4DC +9468,B4DD +9469,B4DE +946A,B4DF +946B,B4E0 +946C,B4E1 +946D,B4DE +946E,B4DE +946F,B4E4 +9470,B4E2 +9471,B4E3 +9473,B4E4 +9474,B4E4 +9475,B4E5 +9476,B4E6 +9477,B4E7 +9478,B4E8 +9479,B4E9 +947A,B4DA +947B,B4DD +947C,B4E4 +947D,B4EA +9481,B4EB +9482,B4EC +9483,B4EC +9484,B4EC +9485,B4ED +9486,B4ED +9487,B4ED +9488,B4F1 +9489,B4EE +948A,B4EC +948B,B4EF +948C,B4EE +948D,B4EE +948E,B4EE +948F,B4F0 +9490,B4EE +9491,B4EF +9493,B4F0 +9494,B4F0 +9495,B4F1 +9496,B4F2 +9497,B4F3 +9498,B4F1 +9499,B4F1 +949A,B4EC +949B,B4F1 +949C,B4F0 +949D,B4F3 +94A1,B4F4 +94A2,B4DA +94A3,B4DB +94A4,B4DA +94A5,B4DC +94A6,B4DC +94A7,B4DC +94A8,B4DD +94A9,B4DE +94AA,B4DF +94AB,B4E0 +94AC,B4E1 +94AD,B4DE +94AE,B4DE +94AF,B4E4 +94B0,B4E2 +94B1,B4E3 +94B3,B4E4 +94B4,B4E4 +94B5,B4E5 +94B6,B4E6 +94B7,B4E7 +94B8,B4E8 +94B9,B4E9 +94BA,B4DA +94BB,B4DD +94BC,B4E4 +94BD,B4EA +94C1,B5B3 +94C2,B4EC +94C3,B4EC +94C4,B4EC +94C5,B5B4 +94C6,B5B4 +94C7,B5B4 +94C8,B4F1 +94C9,B4EE +94CA,B4EC +94CB,B4EF +94CC,B4EE +94CD,B4EE +94CE,B4EE +94CF,B4F0 +94D0,B4EE +94D1,B4EF +94D3,B4F0 +94D4,B4F0 +94D5,B4F1 +94D6,B4F2 +94D7,B4F3 +94D8,B4F1 +94D9,B4F1 +94DA,B4EC +94DB,B4F1 +94DC,B4F0 +94DD,B4F3 +94E1,B4F5 +94E2,B4F6 +94E3,B4F7 +94E4,B4F6 +94E5,B4F8 +94E6,B4F8 +94E7,B4F8 +94E8,B4F9 +94E9,B4FA +94EA,B4F6 +94EB,B4FB +94EC,B4FC +94ED,B4FA +94EE,B4FA +94EF,B5A4 +94F0,B4FA +94F1,B4FD +94F3,B4FE +94F4,B4FE +94F5,B5A1 +94F6,B4F9 +94F7,B5A2 +94F8,B4F9 +94F9,B5A3 +94FA,B4F6 +94FB,B4F9 +94FC,B5A4 +94FD,B5A2 +9541,B5A5 +9542,B5A6 +9543,B5A6 +9544,B5A6 +9545,B5A7 +9546,B5A7 +9547,B5A7 +9548,B5AB +9549,B5A8 +954A,B5A6 +954B,B5A9 +954C,B5A8 +954D,B5A8 +954E,B5A8 +954F,B5AA +9550,B5A8 +9551,B5A9 +9553,B5AA +9554,B5AA +9555,B5AB +9556,B5AC +9557,B5AD +9558,B5AB +9559,B5AB +955A,B5A6 +955B,B5AB +955C,B5AA +955D,B5AD +9561,B5AE +9562,B4F6 +9563,B4F7 +9564,B4F6 +9565,B5AF +9566,B5AF +9567,B5AF +9568,B5B1 +9569,B5B0 +956A,B4F6 +956B,B4FB +956C,B5B0 +956D,B5B0 +956E,B5B0 +956F,B5A4 +9570,B5B0 +9571,B4FD +9573,B4FE +9574,B4FE +9575,B5B1 +9576,B5B1 +9577,B5B2 +9578,B5B1 +9579,B5B1 +957A,B4F6 +957B,B5B1 +957C,B5A4 +957D,B5B2 +9581,B5B3 +9582,B5A6 +9583,B5A6 +9584,B5A6 +9585,B5B4 +9586,B5B4 +9587,B5B4 +9588,B5AB +9589,B5A8 +958A,B5A6 +958B,B5A9 +958C,B5A8 +958D,B5A8 +958E,B5A8 +958F,B5AA +9590,B5A8 +9591,B5A9 +9593,B5AA +9594,B5AA +9595,B5AB +9596,B5AC +9597,B5AD +9598,B5AB +9599,B5AB +959A,B5A6 +959B,B5AB +959C,B5AA +959D,B5AD +95A1,B5B5 +95A2,B5B6 +95A3,B5B6 +95A4,B5B6 +95A5,B5B7 +95A6,B5B7 +95A7,B5B7 +95A8,B5B8 +95A9,B5B9 +95AA,B5B6 +95AB,B5BA +95AC,B5B9 +95AD,B5BB +95AE,B5B9 +95AF,B5BD +95B0,B5B9 +95B1,B5BC +95B3,B5BD +95B4,B5BD +95B5,B5BE +95B6,B5B8 +95B7,B5BF +95B8,B5B8 +95B9,B5C0 +95BA,B5B6 +95BB,B5C1 +95BC,B5BD +95BD,B5BF +95C1,B5C2 +95C2,B4DA +95C3,B4DB +95C4,B4DA +95C5,B5C3 +95C6,B5C3 +95C7,B5C3 +95C8,B4DD +95C9,B5C4 +95CA,B4DF +95CB,B4E0 +95CC,B5C4 +95CD,B5C4 +95CE,B5C4 +95CF,B4E4 +95D0,B5C4 +95D1,B4E3 +95D3,B4E4 +95D4,B4E4 +95D5,B4E5 +95D6,B4E6 +95D7,B4E7 +95D8,B4E8 +95D9,B4E9 +95DA,B4DA +95DB,B4DD +95DC,B4E4 +95DD,B4EA +95E1,B5C5 +95E2,B4EC +95E3,B4EC +95E4,B4EC +95E5,B5C8 +95E6,B5C8 +95E7,B5C8 +95E8,B5C6 +95E9,B5C9 +95EA,B4EC +95EB,B5CA +95EC,B5C9 +95ED,B5C9 +95EE,B5C9 +95EF,B5CB +95F0,B5C9 +95F1,B5CA +95F3,B5CB +95F4,B5CB +95F5,B5C6 +95F6,B5C6 +95F7,B4F3 +95F8,B5C6 +95F9,B5C6 +95FA,B4EC +95FB,B5C6 +95FC,B5CB +95FD,B4F3 +9641,B5C7 +9642,B5F1 +9643,B5F1 +9644,B5F1 +9645,B5C8 +9646,B5C8 +9647,B5C8 +9648,B5CC +9649,B5C9 +964A,B5F1 +964B,B5CA +964C,B5C9 +964D,B5C9 +964E,B5C9 +964F,B5CB +9650,B5C9 +9651,B5CA +9653,B5CB +9654,B5CB +9655,B5CC +9656,B5CC +9657,B5F9 +9658,B5CC +9659,B5CC +965A,B5F1 +965B,B5CC +965C,B5CB +965D,B5F9 +9661,B5CD +9662,B5B6 +9663,B5B6 +9664,B5B6 +9665,B5B7 +9666,B5B7 +9667,B5B7 +9668,B5B8 +9669,B5B9 +966A,B5B6 +966B,B5BA +966C,B5B9 +966D,B5BB +966E,B5B9 +966F,B5BD +9670,B5B9 +9671,B5BC +9673,B5BD +9674,B5BD +9675,B5BE +9676,B5B8 +9677,B5BF +9678,B5B8 +9679,B5C0 +967A,B5B6 +967B,B5C1 +967C,B5BD +967D,B5BF +9681,B5CE +9682,B5CF +9683,B5CF +9684,B5CF +9685,B5D0 +9686,B5D0 +9687,B5D0 +9688,B5D4 +9689,B5D1 +968A,B5CF +968B,B5D2 +968C,B5D1 +968D,B5D1 +968E,B5D1 +968F,B5D3 +9690,B5D1 +9691,B5D2 +9693,B5D3 +9694,B5D3 +9695,B5D4 +9696,B5D4 +9697,B5D5 +9698,B5D4 +9699,B5D4 +969A,B5CF +969B,B5D4 +969C,B5D3 +969D,B5D5 +96A1,B5D6 +96A2,B4F6 +96A3,B4F7 +96A4,B4F6 +96A5,B4F8 +96A6,B4F8 +96A7,B4F8 +96A8,B5D7 +96A9,B4FA +96AA,B4F6 +96AB,B4FB +96AC,B4FC +96AD,B4FA +96AE,B4FA +96AF,B5A4 +96B0,B4FA +96B1,B4FD +96B3,B4FE +96B4,B4FE +96B5,B5D7 +96B6,B5D7 +96B7,B5A2 +96B8,B5D7 +96B9,B5D7 +96BA,B4F6 +96BB,B5D7 +96BC,B5A4 +96BD,B5A2 +96C1,B5D8 +96C2,B5A6 +96C3,B5A6 +96C4,B5A6 +96C5,B5A7 +96C6,B5A7 +96C7,B5A7 +96C8,B5C6 +96C9,B5A8 +96CA,B5A6 +96CB,B5A9 +96CC,B5A8 +96CD,B5A8 +96CE,B5A8 +96CF,B5AA +96D0,B5A8 +96D1,B5A9 +96D3,B5AA +96D4,B5AA +96D5,B5C6 +96D6,B5C6 +96D7,B5D9 +96D8,B5C6 +96D9,B5C6 +96DA,B5A6 +96DB,B5C6 +96DC,B5AA +96DD,B5D9 +96E1,B5DA +96E2,B5F1 +96E3,B5F1 +96E4,B5F1 +96E5,B5DB +96E6,B5DB +96E7,B5DB +96E8,B5DE +96E9,B5DC +96EA,B5F1 +96EB,B5F5 +96EC,B5DC +96ED,B5DC +96EE,B5DC +96EF,B5DD +96F0,B5DC +96F1,B5F5 +96F3,B5DD +96F4,B5DD +96F5,B5DE +96F6,B5DE +96F7,B5DF +96F8,B5DE +96F9,B5DE +96FA,B5F1 +96FB,B5DE +96FC,B5DD +96FD,B5DF +9741,B5E0 +9742,B5CF +9743,B5CF +9744,B5CF +9745,B5E1 +9746,B5E1 +9747,B5E1 +9748,B5D4 +9749,B5E2 +974A,B5CF +974B,B5E3 +974C,B5E2 +974D,B5E2 +974E,B5E2 +974F,B5D3 +9750,B5E2 +9751,B5E3 +9753,B5D3 +9754,B5D3 +9755,B5D4 +9756,B5D4 +9757,B5E4 +9758,B5D4 +9759,B5D4 +975A,B5CF +975B,B5D4 +975C,B5D3 +975D,B5E4 +9761,B5E5 +9762,B5E6 +9763,B5E6 +9764,B5E6 +9765,B5E7 +9766,B5E7 +9767,B5E7 +9768,B5E8 +9769,B5E9 +976A,B5E6 +976B,B5EA +976C,B5E9 +976D,B5E9 +976E,B5E9 +976F,B5EC +9770,B5E9 +9771,B5EB +9773,B5EC +9774,B5EC +9775,B5ED +9776,B5E8 +9777,B5EE +9778,B5E8 +9779,B5E8 +977A,B5E6 +977B,B5E8 +977C,B5EC +977D,B5EE +9781,B5EF +9782,B5F1 +9783,B5F1 +9784,B5F1 +9785,B5F2 +9786,B5F2 +9787,B5F2 +9788,B5F3 +9789,B5F4 +978A,B5F1 +978B,B5F5 +978C,B5F4 +978D,B5F4 +978E,B5F4 +978F,B5F6 +9790,B5F4 +9791,B5F5 +9793,B5F6 +9794,B5F6 +9795,B5F7 +9796,B5F8 +9797,B5F9 +9798,B5FA +9799,B5F3 +979A,B5F1 +979B,B5F3 +979C,B5F6 +979D,B5F9 +97A1,B5F0 +97A2,B5F1 +97A3,B5F1 +97A4,B5F1 +97A5,B5F2 +97A6,B5F2 +97A7,B5F2 +97A8,B5F3 +97A9,B5F4 +97AA,B5F1 +97AB,B5F5 +97AC,B5F4 +97AD,B5F4 +97AE,B5F4 +97AF,B5F6 +97B0,B5F4 +97B1,B5F5 +97B3,B5F6 +97B4,B5F6 +97B5,B5F7 +97B6,B5F8 +97B7,B5F9 +97B8,B5FA +97B9,B5F3 +97BA,B5F1 +97BB,B5F3 +97BC,B5F6 +97BD,B5F9 +9841,A1A1 +9861,B5FB +9862,B5FC +9863,B5FC +9864,B5FC +9865,B5FD +9866,B5FD +9867,B5FD +9868,B6A3 +9869,B5FE +986A,B5FC +986B,B6A1 +986C,B5FE +986D,B5FE +986E,B5FE +986F,B6A2 +9870,B5FE +9871,B6A1 +9873,B6A2 +9874,B6A2 +9875,B6A3 +9876,B6A4 +9877,B6A5 +9878,B6A3 +9879,B6A3 +987A,B5FC +987B,B6A3 +987C,B6A2 +987D,B6A6 +9881,B6A7 +9882,B6A8 +9883,B6A8 +9884,B6A8 +9885,B6A9 +9886,B6A9 +9887,B6A9 +9888,B6AD +9889,B6AA +988A,B6A8 +988B,B6AB +988C,B6AA +988D,B6AA +988E,B6AA +988F,B6AC +9890,B6AA +9891,B6AB +9893,B6AC +9894,B6AC +9895,B6AD +9896,B6AE +9897,B6AF +9898,B6AD +9899,B6AD +989A,B6A8 +989B,B6AD +989C,B6AC +989D,B6AF +98A1,B4F4 +98A2,B5FC +98A3,B5FC +98A4,B5FC +98A5,B5FD +98A6,B5FD +98A7,B5FD +98A8,B6A3 +98A9,B5FE +98AA,B5FC +98AB,B6A1 +98AC,B5FE +98AD,B5FE +98AE,B5FE +98AF,B6A2 +98B0,B5FE +98B1,B6A1 +98B3,B6A2 +98B4,B6A2 +98B5,B6A3 +98B6,B6A4 +98B7,B6A5 +98B8,B6A3 +98B9,B6A3 +98BA,B5FC +98BB,B6A3 +98BC,B6A2 +98BD,B6A6 +98C1,B6A7 +98C2,B6A8 +98C3,B6A8 +98C4,B6A8 +98C5,B6A9 +98C6,B6A9 +98C7,B6A9 +98C8,B6AD +98C9,B6AA +98CA,B6A8 +98CB,B6AB +98CC,B6AA +98CD,B6AA +98CE,B6AA +98CF,B6AC +98D0,B6AA +98D1,B6AB +98D3,B6AC +98D4,B6AC +98D5,B6AD +98D6,B6AE +98D7,B6AF +98D8,B6AD +98D9,B6AD +98DA,B6A8 +98DB,B6AD +98DC,B6AC +98DD,B6AF +98E1,B6B0 +98E2,B6B1 +98E3,B6B1 +98E4,B6B1 +98E5,B6B2 +98E6,B6B2 +98E7,B6B2 +98E8,B6B8 +98E9,B6B3 +98EA,B6B1 +98EB,B6B4 +98EC,B6B5 +98ED,B6B3 +98EE,B6B3 +98EF,B6B7 +98F0,B6B3 +98F1,B6B6 +98F3,B6B7 +98F4,B6B7 +98F5,B6B8 +98F6,B6B9 +98F7,B6BA +98F8,B6B8 +98F9,B6B8 +98FA,B6B1 +98FB,B6B8 +98FC,B6B7 +98FD,B6BB +9941,B6BC +9942,B6BD +9943,B6BD +9944,B6BD +9945,B6BE +9946,B6BE +9947,B6BE +9948,B6C2 +9949,B6BF +994A,B6BD +994B,B6C0 +994C,B6BF +994D,B6BF +994E,B6BF +994F,B6C1 +9950,B6BF +9951,B6C0 +9953,B6C1 +9954,B6C1 +9955,B6C2 +9956,B6C3 +9957,B6C4 +9958,B6C2 +9959,B6C2 +995A,B6BD +995B,B6C2 +995C,B6C1 +995D,B6C4 +9961,B6C5 +9962,B6B1 +9963,B6B1 +9964,B6B1 +9965,B5AF +9966,B5AF +9967,B5AF +9968,B6C6 +9969,B5B0 +996A,B6B1 +996B,B6B4 +996C,B5B0 +996D,B5B0 +996E,B5B0 +996F,B6B7 +9970,B5B0 +9971,B6B6 +9973,B6B7 +9974,B6B7 +9975,B6C6 +9976,B6C6 +9977,B5B2 +9978,B6C6 +9979,B6C6 +997A,B6B1 +997B,B6C6 +997C,B6B7 +997D,B6BB +9981,B5B3 +9982,B6BD +9983,B6BD +9984,B6BD +9985,B5B4 +9986,B5B4 +9987,B5B4 +9988,B6C2 +9989,B6BF +998A,B6BD +998B,B6C0 +998C,B6BF +998D,B6BF +998E,B6BF +998F,B6C1 +9990,B6BF +9991,B6C0 +9993,B6C1 +9994,B6C1 +9995,B6C2 +9996,B6C3 +9997,B6C4 +9998,B6C2 +9999,B6C2 +999A,B6BD +999B,B6C2 +999C,B6C1 +999D,B6C4 +99A1,B6C7 +99A2,B6C8 +99A3,B6C8 +99A4,B6C8 +99A5,B6C9 +99A6,B6C9 +99A7,B6C9 +99A8,B5B8 +99A9,B6CA +99AA,B6C8 +99AB,B5BA +99AC,B6CA +99AD,B6CA +99AE,B6CA +99AF,B5BD +99B0,B6CA +99B1,B5BC +99B3,B5BD +99B4,B5BD +99B5,B5BE +99B6,B5B8 +99B7,B6CB +99B8,B5B8 +99B9,B5C0 +99BA,B6C8 +99BB,B5C1 +99BC,B5BD +99BD,B6CB +99C1,B6CC +99C2,B5FC +99C3,B5FC +99C4,B5FC +99C5,B5C3 +99C6,B5C3 +99C7,B5C3 +99C8,B6A3 +99C9,B6CD +99CA,B5FC +99CB,B6A1 +99CC,B6CD +99CD,B6CD +99CE,B6CD +99CF,B6A2 +99D0,B6CD +99D1,B6A1 +99D3,B6A2 +99D4,B6A2 +99D5,B6A3 +99D6,B6A4 +99D7,B6A5 +99D8,B6A3 +99D9,B6A3 +99DA,B5FC +99DB,B6A3 +99DC,B6A2 +99DD,B6A6 +99E1,B6CE +99E2,B6A8 +99E3,B6A8 +99E4,B6A8 +99E5,B6D0 +99E6,B6D0 +99E7,B6D0 +99E8,B5C6 +99E9,B5C9 +99EA,B6A8 +99EB,B5CA +99EC,B5C9 +99ED,B5C9 +99EE,B5C9 +99EF,B5CB +99F0,B5C9 +99F1,B5CA +99F3,B5CB +99F4,B5CB +99F5,B5C6 +99F6,B5C6 +99F7,B6AF +99F8,B5C6 +99F9,B5C6 +99FA,B6A8 +99FB,B5C6 +99FC,B5CB +99FD,B6AF +9A41,B6CF +9A42,B5F1 +9A43,B5F1 +9A44,B5F1 +9A45,B6D0 +9A46,B6D0 +9A47,B6D0 +9A48,B5CC +9A49,B5C9 +9A4A,B5F1 +9A4B,B5CA +9A4C,B5C9 +9A4D,B5C9 +9A4E,B5C9 +9A4F,B5CB +9A50,B5C9 +9A51,B5CA +9A53,B5CB +9A54,B5CB +9A55,B5CC +9A56,B5CC +9A57,B6F2 +9A58,B5CC +9A59,B5CC +9A5A,B5F1 +9A5B,B5CC +9A5C,B5CB +9A5D,B6F2 +9A61,B5CD +9A62,B6C8 +9A63,B6C8 +9A64,B6C8 +9A65,B6C9 +9A66,B6C9 +9A67,B6C9 +9A68,B5B8 +9A69,B6CA +9A6A,B6C8 +9A6B,B5BA +9A6C,B6CA +9A6D,B6CA +9A6E,B6CA +9A6F,B5BD +9A70,B6CA +9A71,B5BC +9A73,B5BD +9A74,B5BD +9A75,B5BE +9A76,B5B8 +9A77,B6CB +9A78,B5B8 +9A79,B5C0 +9A7A,B6C8 +9A7B,B5C1 +9A7C,B5BD +9A7D,B6CB +9A81,B6D1 +9A82,B6D2 +9A83,B6D2 +9A84,B6D2 +9A85,B6D3 +9A86,B6D3 +9A87,B6D3 +9A88,B5D4 +9A89,B6D4 +9A8A,B6D2 +9A8B,B6D6 +9A8C,B6D4 +9A8D,B6D4 +9A8E,B6D4 +9A8F,B5D3 +9A90,B6D5 +9A91,B6D6 +9A93,B5D3 +9A94,B5D3 +9A95,B5D4 +9A96,B5D4 +9A97,B6D7 +9A98,B5D4 +9A99,B5D4 +9A9A,B6D2 +9A9B,B5D4 +9A9C,B5D3 +9A9D,B6D7 +9AA1,B5D6 +9AA2,B6B1 +9AA3,B6B1 +9AA4,B6B1 +9AA5,B6B2 +9AA6,B6B2 +9AA7,B6B2 +9AA8,B5D7 +9AA9,B6B3 +9AAA,B6B1 +9AAB,B6B4 +9AAC,B6B5 +9AAD,B6B3 +9AAE,B6B3 +9AAF,B6B7 +9AB0,B6B3 +9AB1,B6B6 +9AB3,B6B7 +9AB4,B6B7 +9AB5,B5D7 +9AB6,B5D7 +9AB7,B6BA +9AB8,B5D7 +9AB9,B5D7 +9ABA,B6B1 +9ABB,B5D7 +9ABC,B6B7 +9ABD,B6BB +9AC1,B6D8 +9AC2,B6BD +9AC3,B6BD +9AC4,B6BD +9AC5,B6BE +9AC6,B6BE +9AC7,B6BE +9AC8,B6C2 +9AC9,B6BF +9ACA,B6BD +9ACB,B6C0 +9ACC,B6BF +9ACD,B6BF +9ACE,B6BF +9ACF,B6C1 +9AD0,B6BF +9AD1,B6C0 +9AD3,B6C1 +9AD4,B6C1 +9AD5,B6C2 +9AD6,B6C3 +9AD7,B5D9 +9AD8,B6C2 +9AD9,B6C2 +9ADA,B6BD +9ADB,B6C2 +9ADC,B6C1 +9ADD,B5D9 +9AE1,B6D9 +9AE2,B5F1 +9AE3,B5F1 +9AE4,B5F1 +9AE5,B6DA +9AE6,B6DA +9AE7,B6DA +9AE8,B5DE +9AE9,B6DB +9AEA,B5F1 +9AEB,B6DC +9AEC,B6DB +9AED,B6DB +9AEE,B6DB +9AEF,B6DD +9AF0,B6DB +9AF1,B6DC +9AF3,B6DD +9AF4,B6DD +9AF5,B5DE +9AF6,B5DE +9AF7,B6DE +9AF8,B5DE +9AF9,B5DE +9AFA,B5F1 +9AFB,B5DE +9AFC,B6DD +9AFD,B6DE +9B41,B5E0 +9B42,B6D2 +9B43,B6D2 +9B44,B6D2 +9B45,B5E1 +9B46,B5E1 +9B47,B5E1 +9B48,B5D4 +9B49,B5E2 +9B4A,B6D2 +9B4B,B5E3 +9B4C,B5E2 +9B4D,B5E2 +9B4E,B5E2 +9B4F,B5D3 +9B50,B5E2 +9B51,B5E3 +9B53,B5D3 +9B54,B5D3 +9B55,B5D4 +9B56,B5D4 +9B57,B5E4 +9B58,B5D4 +9B59,B5D4 +9B5A,B6D2 +9B5B,B5D4 +9B5C,B5D3 +9B5D,B5E4 +9B61,B6DF +9B62,B6E0 +9B63,B6E0 +9B64,B6E0 +9B65,B6E1 +9B66,B6E1 +9B67,B6E1 +9B68,B6E2 +9B69,B6E3 +9B6A,B6E0 +9B6B,B6E4 +9B6C,B6E3 +9B6D,B6E3 +9B6E,B6E3 +9B6F,B6E5 +9B70,B6E3 +9B71,B6E4 +9B73,B6E5 +9B74,B6E5 +9B75,B6E6 +9B76,B6E2 +9B77,B5EE +9B78,B6E2 +9B79,B6E2 +9B7A,B6E0 +9B7B,B6E2 +9B7C,B6E5 +9B7D,B5EE +9B81,B6E7 +9B82,B5F1 +9B83,B5F1 +9B84,B5F1 +9B85,B6E8 +9B86,B6E8 +9B87,B6E8 +9B88,B6F1 +9B89,B6E9 +9B8A,B5F1 +9B8B,B6EA +9B8C,B6E9 +9B8D,B6E9 +9B8E,B6E9 +9B8F,B6EB +9B90,B6E9 +9B91,B6EA +9B93,B6EB +9B94,B6EB +9B95,B6F1 +9B96,B6F1 +9B97,B6F2 +9B98,B6F1 +9B99,B6F1 +9B9A,B5F1 +9B9B,B6F1 +9B9C,B6EB +9B9D,B6F2 +9BA1,B6EC +9BA2,B5F1 +9BA3,B5F1 +9BA4,B5F1 +9BA5,B6ED +9BA6,B6ED +9BA7,B6ED +9BA8,B6F1 +9BA9,B6EE +9BAA,B5F1 +9BAB,B6EF +9BAC,B6EE +9BAD,B6EE +9BAE,B6EE +9BAF,B6F0 +9BB0,B6EE +9BB1,B6EF +9BB3,B6F0 +9BB4,B6F0 +9BB5,B6F1 +9BB6,B6F1 +9BB7,B6F2 +9BB8,B6F1 +9BB9,B6F1 +9BBA,B5F1 +9BBB,B6F1 +9BBC,B6F0 +9BBD,B6F2 +9C41,A1A1 +9C42,A1A1 +9C51,A1A1 +9C53,A1A1 +9C55,A1A1 +9C5B,A1A1 +9C5C,A1A1 +9C5D,A1A1 +9C61,B6F3 +9C62,B6F4 +9C63,B6F4 +9C64,B6F4 +9C65,B6F5 +9C66,B6F5 +9C67,B6F5 +9C68,B6F9 +9C69,B6F6 +9C6A,B6F4 +9C6B,B6F7 +9C6C,B6F6 +9C6D,B6F6 +9C6E,B6F6 +9C6F,B6FD +9C70,B6F6 +9C71,B6F7 +9C73,B6F8 +9C74,B6F8 +9C75,B6F9 +9C76,B6FA +9C77,B6FB +9C78,B6FC +9C79,B6F9 +9C7A,B6F4 +9C7B,B6F9 +9C7C,B6FD +9C7D,B6FE +9C81,B7A1 +9C82,B7A2 +9C83,B7A2 +9C84,B7A2 +9C85,B7A3 +9C86,B7A3 +9C87,B7A3 +9C88,B7A7 +9C89,B7A4 +9C8A,B7A2 +9C8B,B7A5 +9C8C,B7A4 +9C8D,B7A4 +9C8E,B7A4 +9C8F,B7A6 +9C90,B7A4 +9C91,B7A5 +9C93,B7A6 +9C94,B7A6 +9C95,B7A7 +9C96,B7A8 +9C97,B7A9 +9C98,B7A7 +9C99,B7A7 +9C9A,B7A2 +9C9B,B7A7 +9C9C,B7A6 +9C9D,B7A9 +9CA1,B7AA +9CA2,B7AB +9CA3,B7AB +9CA4,B7AB +9CA5,B7AC +9CA6,B7AC +9CA7,B7AC +9CA8,B7AD +9CA9,B6F6 +9CAA,B7AB +9CAB,B6F7 +9CAC,B6F6 +9CAD,B6F6 +9CAE,B6F6 +9CAF,B6FD +9CB0,B6F6 +9CB1,B6F7 +9CB3,B6F8 +9CB4,B6F8 +9CB5,B7AD +9CB6,B7AD +9CB7,B7AE +9CB8,B7AD +9CB9,B7AD +9CBA,B7AB +9CBB,B7AD +9CBC,B6FD +9CBD,B6FE +9CC1,B7CA +9CC2,B7A2 +9CC3,B7A2 +9CC4,B7A2 +9CC5,B7CB +9CC6,B7CB +9CC7,B7CB +9CC8,B7CD +9CC9,B7A4 +9CCA,B7A2 +9CCB,B7A5 +9CCC,B7A4 +9CCD,B7A4 +9CCE,B7A4 +9CCF,B7CC +9CD0,B7A4 +9CD1,B7A5 +9CD3,B7CC +9CD4,B7CC +9CD5,B7CD +9CD6,B7CD +9CD7,B7A9 +9CD8,B7CD +9CD9,B7CD +9CDA,B7A2 +9CDB,B7CD +9CDC,B7CC +9CDD,B7A9 +9CE1,B7AF +9CE2,B7B0 +9CE3,B7B0 +9CE4,B7B0 +9CE5,B7B1 +9CE6,B7B1 +9CE7,B7B1 +9CE8,B7B5 +9CE9,B7B2 +9CEA,B7B0 +9CEB,B7B3 +9CEC,B7B2 +9CED,B7B2 +9CEE,B7B2 +9CEF,B7B4 +9CF0,B7B2 +9CF1,B7B3 +9CF3,B7B4 +9CF4,B7B4 +9CF5,B7B5 +9CF6,B7B6 +9CF7,B7B7 +9CF8,B7B5 +9CF9,B7B5 +9CFA,B7B0 +9CFB,B7B5 +9CFC,B7B4 +9CFD,B7B8 +9D41,B7B9 +9D42,B7BA +9D43,B7BA +9D44,B7BA +9D45,B7BB +9D46,B7BB +9D47,B7BB +9D48,B7BF +9D49,B7BC +9D4A,B7BA +9D4B,B7BD +9D4C,B7BC +9D4D,B7BC +9D4E,B7BC +9D4F,B7BE +9D50,B7BC +9D51,B7BD +9D53,B7BE +9D54,B7BE +9D55,B7BF +9D56,B7BF +9D57,B7C0 +9D58,B7BF +9D59,B7BF +9D5A,B7BA +9D5B,B7BF +9D5C,B7BE +9D5D,B7C0 +9D61,B7C1 +9D62,B7C2 +9D63,B7C2 +9D64,B7C2 +9D65,B7C3 +9D66,B7C3 +9D67,B7C3 +9D68,B7C7 +9D69,B7C4 +9D6A,B7C2 +9D6B,B7C5 +9D6C,B7C4 +9D6D,B7C4 +9D6E,B7C4 +9D6F,B7C6 +9D70,B7C4 +9D71,B7C5 +9D73,B7C6 +9D74,B7C6 +9D75,B7C7 +9D76,B7C8 +9D77,B7C9 +9D78,B7C7 +9D79,B7C7 +9D7A,B7C2 +9D7B,B7C7 +9D7C,B7C6 +9D7D,B7B8 +9D81,B7CA +9D82,B7BA +9D83,B7BA +9D84,B7BA +9D85,B7CB +9D86,B7CB +9D87,B7CB +9D88,B7CD +9D89,B7BC +9D8A,B7BA +9D8B,B7BD +9D8C,B7BC +9D8D,B7BC +9D8E,B7BC +9D8F,B7CC +9D90,B7BC +9D91,B7BD +9D93,B7CC +9D94,B7CC +9D95,B7CD +9D96,B7CD +9D97,B7C0 +9D98,B7CD +9D99,B7CD +9D9A,B7BA +9D9B,B7CD +9D9C,B7CC +9D9D,B7C0 +9DA1,B7CE +9DA2,B7CF +9DA3,B7CF +9DA4,B7CF +9DA5,B7D0 +9DA6,B7D0 +9DA7,B7D0 +9DA8,B7D4 +9DA9,B7D1 +9DAA,B7CF +9DAB,B7D2 +9DAC,B7D1 +9DAD,B7D1 +9DAE,B7D1 +9DAF,B7D3 +9DB0,B7D1 +9DB1,B7D2 +9DB3,B7D3 +9DB4,B7D3 +9DB5,B7D4 +9DB6,B7D4 +9DB7,B7D5 +9DB8,B7D4 +9DB9,B7D4 +9DBA,B7CF +9DBB,B7D4 +9DBC,B7D3 +9DBD,B7D5 +9DC1,B7D6 +9DC2,B6F4 +9DC3,B6F4 +9DC4,B6F4 +9DC5,B7D7 +9DC6,B7D7 +9DC7,B7D7 +9DC8,B6F9 +9DC9,B6F6 +9DCA,B6F4 +9DCB,B6F7 +9DCC,B6F6 +9DCD,B6F6 +9DCE,B6F6 +9DCF,B6FD +9DD0,B6F6 +9DD1,B6F7 +9DD3,B6F8 +9DD4,B6F8 +9DD5,B6F9 +9DD6,B6FA +9DD7,B7D8 +9DD8,B6FC +9DD9,B6F9 +9DDA,B6F4 +9DDB,B6F9 +9DDC,B6FD +9DDD,B6FE +9DE1,B7DA +9DE2,B7A2 +9DE3,B7A2 +9DE4,B7A2 +9DE5,B7DB +9DE6,B7DB +9DE7,B7DB +9DE8,B7D9 +9DE9,B7DC +9DEA,B7A2 +9DEB,B7DD +9DEC,B7DC +9DED,B7DC +9DEE,B7DC +9DEF,B7DE +9DF0,B7DC +9DF1,B7DD +9DF3,B7DE +9DF4,B7DE +9DF5,B7D9 +9DF6,B7D9 +9DF7,B7E0 +9DF8,B7D9 +9DF9,B7D9 +9DFA,B7A2 +9DFB,B7D9 +9DFC,B7DE +9DFD,B7E0 +9E41,B7DA +9E42,B8AF +9E43,B8AF +9E44,B8AF +9E45,B7DB +9E46,B7DB +9E47,B7DB +9E48,B7DF +9E49,B7DC +9E4A,B8AF +9E4B,B7DD +9E4C,B7DC +9E4D,B7DC +9E4E,B7DC +9E4F,B7DE +9E50,B7DC +9E51,B7DD +9E53,B7DE +9E54,B7DE +9E55,B7DF +9E56,B7DF +9E57,B7E0 +9E58,B7DF +9E59,B7DF +9E5A,B8AF +9E5B,B7DF +9E5C,B7DE +9E5D,B7E0 +9E61,B7E1 +9E62,B7CF +9E63,B7CF +9E64,B7CF +9E65,B7E2 +9E66,B7E2 +9E67,B7E2 +9E68,B7E5 +9E69,B7E3 +9E6A,B7CF +9E6B,B7D2 +9E6C,B7E3 +9E6D,B7E3 +9E6E,B7E3 +9E6F,B7E4 +9E70,B7E3 +9E71,B7D2 +9E73,B7E4 +9E74,B7E4 +9E75,B7E5 +9E76,B7E5 +9E77,B7E6 +9E78,B7E5 +9E79,B7E5 +9E7A,B7CF +9E7B,B7E5 +9E7C,B7E4 +9E7D,B7E6 +9E81,B7E7 +9E82,B7E8 +9E83,B7E8 +9E84,B7E8 +9E85,B7E9 +9E86,B7E9 +9E87,B7E9 +9E88,B7ED +9E89,B7EA +9E8A,B7E8 +9E8B,B7EB +9E8C,B7EA +9E8D,B7EA +9E8E,B7EA +9E8F,B7EC +9E90,B7EA +9E91,B7EB +9E93,B7EC +9E94,B7EC +9E95,B7ED +9E96,B7ED +9E97,B7EE +9E98,B7ED +9E99,B7ED +9E9A,B7E8 +9E9B,B7ED +9E9C,B7EC +9E9D,B7EE +9EA1,B7EF +9EA2,B7B0 +9EA3,B7B0 +9EA4,B7B0 +9EA5,B7B1 +9EA6,B7B1 +9EA7,B7B1 +9EA8,B7F0 +9EA9,B7B2 +9EAA,B7B0 +9EAB,B7B3 +9EAC,B7B2 +9EAD,B7B2 +9EAE,B7B2 +9EAF,B7B4 +9EB0,B7B2 +9EB1,B7B3 +9EB3,B7B4 +9EB4,B7B4 +9EB5,B7F0 +9EB6,B7F0 +9EB7,B7B7 +9EB8,B7F0 +9EB9,B7F0 +9EBA,B7B0 +9EBB,B7F0 +9EBC,B7B4 +9EBD,B7B8 +9EC1,B7F1 +9EC2,B7BA +9EC3,B7BA +9EC4,B7BA +9EC5,B7BB +9EC6,B7BB +9EC7,B7BB +9EC8,B7D9 +9EC9,B7BC +9ECA,B7BA +9ECB,B7BD +9ECC,B7BC +9ECD,B7BC +9ECE,B7BC +9ECF,B7BE +9ED0,B7BC +9ED1,B7BD +9ED3,B7BE +9ED4,B7BE +9ED5,B7D9 +9ED6,B7D9 +9ED7,B7C0 +9ED8,B7D9 +9ED9,B7D9 +9EDA,B7BA +9EDB,B7D9 +9EDC,B7BE +9EDD,B7C0 +9EE1,B7F2 +9EE2,B7F3 +9EE3,B7F3 +9EE4,B7F3 +9EE5,B7F4 +9EE6,B7F4 +9EE7,B7F4 +9EE8,B7F7 +9EE9,B7F5 +9EEA,B7F3 +9EEB,B7F6 +9EEC,B7F5 +9EED,B7F5 +9EEE,B7F5 +9EEF,B8B3 +9EF0,B7F5 +9EF1,B7F6 +9EF3,B8B3 +9EF4,B8B3 +9EF5,B7F7 +9EF6,B7F7 +9EF7,B7F8 +9EF8,B7F7 +9EF9,B7F7 +9EFA,B7F3 +9EFB,B7F7 +9EFC,B8B3 +9EFD,B7F8 +9F41,B7F9 +9F42,B7FA +9F43,B7FA +9F44,B7FA +9F45,B7FB +9F46,B7FB +9F47,B7FB +9F48,B8A1 +9F49,B7FC +9F4A,B7FA +9F4B,B7FD +9F4C,B7FC +9F4D,B7FC +9F4E,B7FC +9F4F,B7FE +9F50,B7FC +9F51,B7FD +9F53,B7FE +9F54,B7FE +9F55,B8A1 +9F56,B8A1 +9F57,B8A2 +9F58,B8A1 +9F59,B8A1 +9F5A,B7FA +9F5B,B8A1 +9F5C,B7FE +9F5D,B8A2 +9F61,B8A3 +9F62,B8A4 +9F63,B8A4 +9F64,B8A4 +9F65,B8A5 +9F66,B8A5 +9F67,B8A5 +9F68,B8A9 +9F69,B8A6 +9F6A,B8A4 +9F6B,B8A7 +9F6C,B8A6 +9F6D,B8A6 +9F6E,B8A6 +9F6F,B8AD +9F70,B8A6 +9F71,B8A7 +9F73,B8A8 +9F74,B8A8 +9F75,B8A9 +9F76,B8A9 +9F77,B8AA +9F78,B8AB +9F79,B8A9 +9F7A,B8A4 +9F7B,B8AC +9F7C,B8AD +9F7D,B8AA +9F81,B8AE +9F82,B8AF +9F83,B8AF +9F84,B8AF +9F85,B8B0 +9F86,B8B0 +9F87,B8B0 +9F88,B8B4 +9F89,B8B1 +9F8A,B8AF +9F8B,B8B2 +9F8C,B8B1 +9F8D,B8B1 +9F8E,B8B1 +9F8F,B8B3 +9F90,B8B1 +9F91,B8B2 +9F93,B8B3 +9F94,B8B3 +9F95,B8B4 +9F96,B8B4 +9F97,B8B5 +9F98,B8B4 +9F99,B8B4 +9F9A,B8AF +9F9B,B8B4 +9F9C,B8B3 +9F9D,B8B5 +9FA1,B8AE +9FA2,B8AF +9FA3,B8AF +9FA4,B8AF +9FA5,B8B0 +9FA6,B8B0 +9FA7,B8B0 +9FA8,B8B4 +9FA9,B8B1 +9FAA,B8AF +9FAB,B8B2 +9FAC,B8B1 +9FAD,B8B1 +9FAE,B8B1 +9FAF,B8B3 +9FB0,B8B1 +9FB1,B8B2 +9FB3,B8B3 +9FB4,B8B3 +9FB5,B8B4 +9FB6,B8B4 +9FB7,B8B5 +9FB8,B8B4 +9FB9,B8B4 +9FBA,B8AF +9FBB,B8B4 +9FBC,B8B3 +9FBD,B8B5 +A041,A1A1 +A061,B8B6 +A062,B8B7 +A063,B8B7 +A064,B8B7 +A065,B8B8 +A066,B8B8 +A067,B8B9 +A068,B8BA +A069,B8BB +A06A,B8BC +A06B,B8BD +A06C,B8BB +A06D,B8BB +A06E,B8BB +A06F,B8BF +A070,B8BB +A071,B8BE +A073,B8BF +A074,B8BF +A075,B8C0 +A076,B8BA +A077,B8C1 +A078,B8C2 +A079,B8BA +A07A,B8B7 +A07B,B8C3 +A07C,B8BF +A07D,B8C4 +A081,B8C5 +A082,B8C6 +A083,B8C6 +A084,B8C6 +A085,B8C7 +A086,B8C7 +A087,B8C7 +A088,B8CB +A089,B8C8 +A08A,B8C6 +A08B,B8C9 +A08C,B8C8 +A08D,B8C8 +A08E,B8C8 +A08F,B8CA +A090,B8C8 +A091,B8C9 +A093,B8CA +A094,B8CA +A095,B8CB +A096,B8CC +A097,B8CD +A098,B8CE +A099,B8CB +A09A,B8C6 +A09B,B8CB +A09C,B8CA +A09D,B8CD +A0A1,B8CF +A0A2,B8D0 +A0A3,B8D0 +A0A4,B8D0 +A0A5,B8B8 +A0A6,B8B8 +A0A7,B8B9 +A0A8,B8BA +A0A9,B8D1 +A0AA,B8D0 +A0AB,B8BD +A0AC,B8D1 +A0AD,B8D1 +A0AE,B8D1 +A0AF,B8BF +A0B0,B8D1 +A0B1,B8BE +A0B3,B8BF +A0B4,B8BF +A0B5,B8C0 +A0B6,B8BA +A0B7,B8D2 +A0B8,B8C2 +A0B9,B8BA +A0BA,B8D0 +A0BB,B8C3 +A0BC,B8BF +A0BD,B8C4 +A0C1,B8EF +A0C2,B8C6 +A0C3,B8C6 +A0C4,B8C6 +A0C5,B8C7 +A0C6,B8C7 +A0C7,B8C7 +A0C8,B8CB +A0C9,B8C8 +A0CA,B8C6 +A0CB,B8C9 +A0CC,B8C8 +A0CD,B8C8 +A0CE,B8C8 +A0CF,B8CA +A0D0,B8C8 +A0D1,B8C9 +A0D3,B8CA +A0D4,B8CA +A0D5,B8CB +A0D6,B8CC +A0D7,B8CD +A0D8,B8CE +A0D9,B8CB +A0DA,B8C6 +A0DB,B8CB +A0DC,B8CA +A0DD,B8CD +A0E1,B8D3 +A0E2,B8D4 +A0E3,B8D4 +A0E4,B8D4 +A0E5,B8D5 +A0E6,B8D5 +A0E7,B8D5 +A0E8,B8DA +A0E9,B8D6 +A0EA,B8D4 +A0EB,B8D7 +A0EC,B8D6 +A0ED,B8D6 +A0EE,B8D6 +A0EF,B8D9 +A0F0,B8D6 +A0F1,B8D8 +A0F3,B8D9 +A0F4,B8D9 +A0F5,B8DA +A0F6,B8DA +A0F7,B8DB +A0F8,B8DC +A0F9,B8DA +A0FA,B8D4 +A0FB,B8DA +A0FC,B8D9 +A0FD,B8DD +A141,B8DE +A142,B8DF +A143,B8DF +A144,B8DF +A145,B8E0 +A146,B8E0 +A147,B8E0 +A148,B8E4 +A149,B8E1 +A14A,B8DF +A14B,B8E2 +A14C,B8E1 +A14D,B8E1 +A14E,B8E1 +A14F,B8E3 +A150,B8E1 +A151,B8E2 +A153,B8E3 +A154,B8E3 +A155,B8E4 +A156,B8E5 +A157,B8E6 +A158,B8E4 +A159,B8E4 +A15A,B8DF +A15B,B8E4 +A15C,B8E3 +A15D,B8E6 +A161,B8E7 +A162,B8E8 +A163,B8E8 +A164,B8E8 +A165,B8E9 +A166,B8E9 +A167,B8E9 +A168,B8EB +A169,B8EA +A16A,B8E8 +A16B,B8D7 +A16C,B8EA +A16D,B8EA +A16E,B8EA +A16F,B8D9 +A170,B8EA +A171,B8D8 +A173,B8D9 +A174,B8D9 +A175,B8EB +A176,B8EC +A177,B8ED +A178,B8EB +A179,B8EE +A17A,B8E8 +A17B,B8EB +A17C,B8D9 +A17D,B8DD +A181,B8EF +A182,B8DF +A183,B8DF +A184,B8DF +A185,B8E0 +A186,B8E0 +A187,B8E0 +A188,B8E4 +A189,B8E1 +A18A,B8DF +A18B,B8E2 +A18C,B8E1 +A18D,B8E1 +A18E,B8E1 +A18F,B8E3 +A190,B8E1 +A191,B8E2 +A193,B8E3 +A194,B8E3 +A195,B8E4 +A196,B8E5 +A197,B8E6 +A198,B8E4 +A199,B8E4 +A19A,B8DF +A19B,B8E4 +A19C,B8E3 +A19D,B8E6 +A1A1,B8F0 +A1A2,B8F1 +A1A3,B8F1 +A1A4,B8F2 +A1A5,B8F3 +A1A6,B8F3 +A1A7,B8F3 +A1A8,B8F8 +A1A9,B8F4 +A1AA,B8F1 +A1AB,B8F5 +A1AC,B8F4 +A1AD,B8F4 +A1AE,B8F4 +A1AF,B8F7 +A1B0,B8F4 +A1B1,B8F6 +A1B3,B8F7 +A1B4,B8F7 +A1B5,B8F8 +A1B6,B8F8 +A1B7,B8F9 +A1B8,B8F8 +A1B9,B8F8 +A1BA,B8F1 +A1BB,B8F8 +A1BC,B8F7 +A1BD,B8F9 +A1C1,B8FA +A1C2,B8B7 +A1C3,B8B7 +A1C4,B8B7 +A1C5,B8FB +A1C6,B8FB +A1C7,B8FB +A1C8,B8FC +A1C9,B8BB +A1CA,B8BC +A1CB,B8BD +A1CC,B8BB +A1CD,B8BB +A1CE,B8BB +A1CF,B8BF +A1D0,B8BB +A1D1,B8BE +A1D3,B8BF +A1D4,B8BF +A1D5,B8FC +A1D6,B8FC +A1D7,B8FD +A1D8,B8FC +A1D9,B8FC +A1DA,B8B7 +A1DB,B8FC +A1DC,B8BF +A1DD,B8C4 +A1E1,B8FE +A1E2,B8C6 +A1E3,B8C6 +A1E4,B8C6 +A1E5,B9A1 +A1E6,B9A1 +A1E7,B9A1 +A1E8,B9A4 +A1E9,B9A2 +A1EA,B8C6 +A1EB,B8C9 +A1EC,B9A2 +A1ED,B9A2 +A1EE,B9A2 +A1EF,B9A3 +A1F0,B9A2 +A1F1,B8C9 +A1F3,B9A3 +A1F4,B9A3 +A1F5,B9A4 +A1F6,B9A4 +A1F7,B9A5 +A1F8,B9A4 +A1F9,B9A4 +A1FA,B8C6 +A1FB,B9A4 +A1FC,B9A3 +A1FD,B9A5 +A241,B8FE +A242,B9CD +A243,B9CD +A244,B9CD +A245,B9A1 +A246,B9A1 +A247,B9A1 +A248,B9A4 +A249,B9A2 +A24A,B9CD +A24B,B9D1 +A24C,B9A2 +A24D,B9A2 +A24E,B9A2 +A24F,B9A3 +A250,B9A2 +A251,B9D2 +A253,B9A3 +A254,B9A3 +A255,B9A4 +A256,B9A4 +A257,B9A5 +A258,B9A4 +A259,B9A4 +A25A,B9CD +A25B,B9A4 +A25C,B9A3 +A25D,B9A5 +A261,B9A6 +A262,B8F1 +A263,B8F1 +A264,B8F2 +A265,B9A7 +A266,B9A7 +A267,B9A7 +A268,B9AA +A269,B9A8 +A26A,B8F1 +A26B,B8F5 +A26C,B9A8 +A26D,B9A8 +A26E,B9A8 +A26F,B9A9 +A270,B9A8 +A271,B8F6 +A273,B9A9 +A274,B9A9 +A275,B9AA +A276,B9AA +A277,B8F9 +A278,B9AA +A279,B9AA +A27A,B8F1 +A27B,B9AA +A27C,B9A9 +A27D,B8F9 +A281,B9AB +A282,B9AC +A283,B9AD +A284,B9AC +A285,B9AE +A286,B9AE +A287,B9AE +A288,B9AF +A289,B9B0 +A28A,B9B1 +A28B,B9B2 +A28C,B9B0 +A28D,B9B0 +A28E,B9B0 +A28F,B9B4 +A290,B9B0 +A291,B9B3 +A293,B9B4 +A294,B9B4 +A295,B9B5 +A296,B9AF +A297,B9B6 +A298,B9AF +A299,B9AF +A29A,B9AC +A29B,B9B7 +A29C,B9B4 +A29D,B9B8 +A2A1,B9B9 +A2A2,B8D4 +A2A3,B8D4 +A2A4,B8D4 +A2A5,B9BA +A2A6,B9BA +A2A7,B9BA +A2A8,B9BD +A2A9,B9BB +A2AA,B8D4 +A2AB,B8D7 +A2AC,B9BB +A2AD,B9BB +A2AE,B9BB +A2AF,B9BC +A2B0,B9BB +A2B1,B8D8 +A2B3,B9BC +A2B4,B9BC +A2B5,B9BD +A2B6,B9BD +A2B7,B8DB +A2B8,B9BD +A2B9,B9BD +A2BA,B8D4 +A2BB,B9BD +A2BC,B9BC +A2BD,B8DD +A2C1,B9BE +A2C2,B8DF +A2C3,B8DF +A2C4,B8DF +A2C5,B8E0 +A2C6,B8E0 +A2C7,B8E0 +A2C8,B8E4 +A2C9,B8E1 +A2CA,B8DF +A2CB,B8E2 +A2CC,B8E1 +A2CD,B8E1 +A2CE,B8E1 +A2CF,B8E3 +A2D0,B8E1 +A2D1,B8E2 +A2D3,B8E3 +A2D4,B8E3 +A2D5,B8E4 +A2D6,B8E5 +A2D7,B8E6 +A2D8,B8E4 +A2D9,B8E4 +A2DA,B8DF +A2DB,B8E4 +A2DC,B8E3 +A2DD,B8E6 +A2E1,B9BF +A2E2,B9CD +A2E3,B9CD +A2E4,B9CD +A2E5,B9C0 +A2E6,B9C0 +A2E7,B9C0 +A2E8,B9CF +A2E9,B9C1 +A2EA,B9CD +A2EB,B9D1 +A2EC,B9C1 +A2ED,B9C1 +A2EE,B9C1 +A2EF,B9D3 +A2F0,B9C1 +A2F1,B9D2 +A2F3,B9D3 +A2F4,B9D3 +A2F5,B9D4 +A2F6,B9D5 +A2F7,B9D6 +A2F8,B9CF +A2F9,B9D7 +A2FA,B9CD +A2FB,B9D8 +A2FC,B9D3 +A2FD,B9D6 +A341,B9C2 +A342,B9AC +A343,B9AD +A344,B9AC +A345,B9C3 +A346,B9C3 +A347,B9C3 +A348,B9C6 +A349,B9C4 +A34A,B9B1 +A34B,B9C5 +A34C,B9C4 +A34D,B9C4 +A34E,B9C4 +A34F,B9B4 +A350,B9C4 +A351,B9C5 +A353,B9B4 +A354,B9B4 +A355,B9C6 +A356,B9C6 +A357,B9B6 +A358,B9C6 +A359,B9C6 +A35A,B9AC +A35B,B9C6 +A35C,B9B4 +A35D,B9B8 +A361,B9C7 +A362,B9AC +A363,B9AD +A364,B9AC +A365,B9C8 +A366,B9C8 +A367,B9C8 +A368,B9CB +A369,B9C9 +A36A,B9B1 +A36B,B9CA +A36C,B9C9 +A36D,B9C9 +A36E,B9C9 +A36F,B9B4 +A370,B9C9 +A371,B9CA +A373,B9B4 +A374,B9B4 +A375,B9CB +A376,B9CB +A377,B9B6 +A378,B9CB +A379,B9CB +A37A,B9AC +A37B,B9CB +A37C,B9B4 +A37D,B9B8 +A381,B9CC +A382,B9CD +A383,B9CD +A384,B9CD +A385,B9CE +A386,B9CE +A387,B9CE +A388,B9CF +A389,B9D0 +A38A,B9CD +A38B,B9D1 +A38C,B9D0 +A38D,B9D0 +A38E,B9D0 +A38F,B9D3 +A390,B9D0 +A391,B9D2 +A393,B9D3 +A394,B9D3 +A395,B9D4 +A396,B9D5 +A397,B9D6 +A398,B9CF +A399,B9D7 +A39A,B9CD +A39B,B9D8 +A39C,B9D3 +A39D,B9D6 +A3A1,B9CC +A3A2,B9CD +A3A3,B9CD +A3A4,B9CD +A3A5,B9CE +A3A6,B9CE +A3A7,B9CE +A3A8,B9CF +A3A9,B9D0 +A3AA,B9CD +A3AB,B9D1 +A3AC,B9D0 +A3AD,B9D0 +A3AE,B9D0 +A3AF,B9D3 +A3B0,B9D0 +A3B1,B9D2 +A3B3,B9D3 +A3B4,B9D3 +A3B5,B9D4 +A3B6,B9D5 +A3B7,B9D6 +A3B8,B9CF +A3B9,B9D7 +A3BA,B9CD +A3BB,B9D8 +A3BC,B9D3 +A3BD,B9D6 +A441,A1A1 +A455,A1A1 +A461,B9D9 +A462,B9DA +A463,B9DB +A464,B9DC +A465,B9DD +A466,B9DD +A467,B9DD +A468,B9DE +A469,B9DF +A46A,B9E0 +A46B,B9E1 +A46C,B9E2 +A46D,B9DF +A46E,B9DF +A46F,B9E4 +A470,B9DF +A471,B9E3 +A473,B9E4 +A474,B9E4 +A475,B9E5 +A476,B9DE +A477,B9E6 +A478,B9DE +A479,B9DE +A47A,B9DA +A47B,B9E7 +A47C,B9E4 +A47D,B9E6 +A481,B9E8 +A482,B9E9 +A483,B9E9 +A484,B9E9 +A485,B9EA +A486,B9EA +A487,B9EA +A488,B9EE +A489,B9EB +A48A,B9E9 +A48B,B9EC +A48C,B9EB +A48D,B9EB +A48E,B9EB +A48F,B9ED +A490,B9EB +A491,B9EC +A493,B9ED +A494,B9ED +A495,B9EE +A496,B9EF +A497,B9F0 +A498,B9EE +A499,B9EE +A49A,B9E9 +A49B,B9F1 +A49C,B9ED +A49D,B9F0 +A4A1,B9F2 +A4A2,B9F3 +A4A3,B9F3 +A4A4,B9F3 +A4A5,B9F4 +A4A6,B9F4 +A4A7,B9F4 +A4A8,B9DE +A4A9,B9DF +A4AA,B9F3 +A4AB,B9E1 +A4AC,B9E2 +A4AD,B9DF +A4AE,B9DF +A4AF,B9F5 +A4B0,B9DF +A4B1,B9E3 +A4B3,B9F5 +A4B4,B9F5 +A4B5,B9E5 +A4B6,B9DE +A4B7,B9E6 +A4B8,B9DE +A4B9,B9DE +A4BA,B9F3 +A4BB,B9E7 +A4BC,B9F5 +A4BD,B9E6 +A4C1,BAB6 +A4C2,B9E9 +A4C3,B9E9 +A4C4,B9E9 +A4C5,BAB7 +A4C6,BAB7 +A4C7,BAB7 +A4C8,B9EE +A4C9,B9EB +A4CA,B9E9 +A4CB,B9EC +A4CC,B9EB +A4CD,B9EB +A4CE,B9EB +A4CF,B9ED +A4D0,B9EB +A4D1,B9EC +A4D3,B9ED +A4D4,B9ED +A4D5,B9EE +A4D6,B9EF +A4D7,B9F0 +A4D8,B9EE +A4D9,B9EE +A4DA,B9E9 +A4DB,B9F1 +A4DC,B9ED +A4DD,B9F0 +A4E1,B9F6 +A4E2,B9F7 +A4E3,B9F7 +A4E4,B9F7 +A4E5,B9F8 +A4E6,B9F8 +A4E7,B9F8 +A4E8,B9F9 +A4E9,B9FA +A4EA,B9F7 +A4EB,B9FB +A4EC,B9FA +A4ED,B9FA +A4EE,B9FA +A4EF,B9FD +A4F0,B9FA +A4F1,B9FC +A4F3,B9FD +A4F4,B9FD +A4F5,B9FE +A4F6,B9F9 +A4F7,BAA1 +A4F8,BAA2 +A4F9,B9F9 +A4FA,B9F7 +A4FB,B9F9 +A4FC,B9FD +A4FD,BAA1 +A541,BAA3 +A542,BAA4 +A543,BAA4 +A544,BAA4 +A545,BAA5 +A546,BAA5 +A547,BAA5 +A548,BAA6 +A549,BAA7 +A54A,BAA4 +A54B,BAA8 +A54C,BAA7 +A54D,BAA7 +A54E,BAA7 +A54F,BAA9 +A550,BAA7 +A551,BAA8 +A553,BAA9 +A554,BAA9 +A555,BAAA +A556,BAAB +A557,BAAC +A558,BAA6 +A559,BAA6 +A55A,BAA4 +A55B,BAA6 +A55C,BAA9 +A55D,BAAC +A561,BAAD +A562,BAAE +A563,BAAE +A564,BAAE +A565,BAAF +A566,BAAF +A567,BAAF +A568,BAB2 +A569,BAB0 +A56A,BAAE +A56B,B9FB +A56C,BAB0 +A56D,BAB0 +A56E,BAB0 +A56F,BAB1 +A570,BAB0 +A571,B9FC +A573,BAB1 +A574,BAB1 +A575,BAB2 +A576,BAB3 +A577,BAB4 +A578,BAB2 +A579,BAB2 +A57A,BAAE +A57B,BAB5 +A57C,BAB1 +A57D,BAB4 +A581,BAB6 +A582,BAA4 +A583,BAA4 +A584,BAA4 +A585,BAB7 +A586,BAB7 +A587,BAB7 +A588,BAA6 +A589,BAA7 +A58A,BAA4 +A58B,BAA8 +A58C,BAA7 +A58D,BAA7 +A58E,BAA7 +A58F,BAA9 +A590,BAA7 +A591,BAA8 +A593,BAA9 +A594,BAA9 +A595,BAAA +A596,BAAB +A597,BAAC +A598,BAA6 +A599,BAA6 +A59A,BAA4 +A59B,BAA6 +A59C,BAA9 +A59D,BAAC +A5A1,BAB8 +A5A2,BAB9 +A5A3,BABA +A5A4,BAB9 +A5A5,BABB +A5A6,BABB +A5A7,BABB +A5A8,BABF +A5A9,BABC +A5AA,BAB9 +A5AB,BABD +A5AC,BABC +A5AD,BABC +A5AE,BABC +A5AF,BABE +A5B0,BABC +A5B1,BABD +A5B3,BABE +A5B4,BABE +A5B5,BABF +A5B6,BABF +A5B7,BAC0 +A5B8,BABF +A5B9,BABF +A5BA,BAB9 +A5BB,BABF +A5BC,BABE +A5BD,BAC0 +A5C1,BAC1 +A5C2,B9DA +A5C3,B9DB +A5C4,B9DC +A5C5,BAC2 +A5C6,BAC2 +A5C7,BAC2 +A5C8,BAC3 +A5C9,B9DF +A5CA,B9E0 +A5CB,B9E1 +A5CC,B9E2 +A5CD,B9DF +A5CE,B9DF +A5CF,B9E4 +A5D0,B9DF +A5D1,B9E3 +A5D3,B9E4 +A5D4,B9E4 +A5D5,BAC3 +A5D6,BAC3 +A5D7,B9E6 +A5D8,BAC3 +A5D9,BAC3 +A5DA,B9DA +A5DB,BAC3 +A5DC,B9E4 +A5DD,B9E6 +A5E1,BAC4 +A5E2,BAC7 +A5E3,BAC7 +A5E4,BAC7 +A5E5,BAC8 +A5E6,BAC8 +A5E7,BAC8 +A5E8,BAC5 +A5E9,BAC9 +A5EA,BAC7 +A5EB,BACA +A5EC,BAC9 +A5ED,BAC9 +A5EE,BAC9 +A5EF,BACB +A5F0,BAC9 +A5F1,BACA +A5F3,BACB +A5F4,BACB +A5F5,BAC5 +A5F6,BAC5 +A5F7,B9F0 +A5F8,BAC5 +A5F9,BAC5 +A5FA,BAC7 +A5FB,BAC5 +A5FC,BACB +A5FD,B9F0 +A641,BAC6 +A642,BAC7 +A643,BAC7 +A644,BAC7 +A645,BAC8 +A646,BAC8 +A647,BAC8 +A648,BAC5 +A649,BAC9 +A64A,BAC7 +A64B,BACA +A64C,BAC9 +A64D,BAC9 +A64E,BAC9 +A64F,BACB +A650,BAC9 +A651,BACA +A653,BACB +A654,BACB +A655,BAC5 +A656,BAC5 +A657,BAF9 +A658,BAC5 +A659,BAC5 +A65A,BAC7 +A65B,BAC5 +A65C,BACB +A65D,BAF9 +A661,BACC +A662,BAB9 +A663,BABA +A664,BAB9 +A665,BACD +A666,BACD +A667,BACD +A668,BABF +A669,BABC +A66A,BAB9 +A66B,BABD +A66C,BABC +A66D,BABC +A66E,BABC +A66F,BABE +A670,BABC +A671,BABD +A673,BABE +A674,BABE +A675,BABF +A676,BABF +A677,BAC0 +A678,BABF +A679,BABF +A67A,BAB9 +A67B,BABF +A67C,BABE +A67D,BAC0 +A681,BACE +A682,BACF +A683,BACF +A684,BACF +A685,BAD0 +A686,BAD0 +A687,BAD0 +A688,BAD1 +A689,BAD2 +A68A,BAD3 +A68B,BAD4 +A68C,BAD2 +A68D,BAD2 +A68E,BAD2 +A68F,BADA +A690,BAD2 +A691,BAD5 +A693,BAD6 +A694,BAD6 +A695,BAD7 +A696,BAD1 +A697,BAD8 +A698,BAD1 +A699,BAD1 +A69A,BACF +A69B,BAD9 +A69C,BADA +A69D,BAD8 +A6A1,BADB +A6A2,B9F7 +A6A3,B9F7 +A6A4,B9F7 +A6A5,B9F8 +A6A6,B9F8 +A6A7,B9F8 +A6A8,BADD +A6A9,BADC +A6AA,B9F7 +A6AB,B9FB +A6AC,BADC +A6AD,BADC +A6AE,BADC +A6AF,B9FD +A6B0,BADC +A6B1,B9FC +A6B3,B9FD +A6B4,B9FD +A6B5,BADD +A6B6,BADD +A6B7,BAA1 +A6B8,BADD +A6B9,BADD +A6BA,B9F7 +A6BB,BADD +A6BC,B9FD +A6BD,BAA1 +A6C1,BADE +A6C2,BAA4 +A6C3,BAA4 +A6C4,BAA4 +A6C5,BAA5 +A6C6,BAA5 +A6C7,BAA5 +A6C8,BAC5 +A6C9,BAA7 +A6CA,BAA4 +A6CB,BAA8 +A6CC,BAA7 +A6CD,BAA7 +A6CE,BAA7 +A6CF,BAA9 +A6D0,BAA7 +A6D1,BAA8 +A6D3,BAA9 +A6D4,BAA9 +A6D5,BAC5 +A6D6,BAC5 +A6D7,BAAC +A6D8,BAC5 +A6D9,BAC5 +A6DA,BAA4 +A6DB,BAC5 +A6DC,BAA9 +A6DD,BAAC +A6E1,BADF +A6E2,BAE0 +A6E3,BAE0 +A6E4,BAE0 +A6E5,BAE1 +A6E6,BAE1 +A6E7,BAE1 +A6E8,BAF8 +A6E9,BAE2 +A6EA,BAE0 +A6EB,BAF5 +A6EC,BAE2 +A6ED,BAE2 +A6EE,BAE2 +A6EF,BAF7 +A6F0,BAE2 +A6F1,BAF6 +A6F3,BAF7 +A6F4,BAF7 +A6F5,BAF8 +A6F6,BAF8 +A6F7,BAE3 +A6F8,BAFA +A6F9,BAFB +A6FA,BAE0 +A6FB,BAF8 +A6FC,BAF7 +A6FD,BAE3 +A741,BAE4 +A742,BACF +A743,BACF +A744,BACF +A745,BAE5 +A746,BAE5 +A747,BAE5 +A748,BAE8 +A749,BAE6 +A74A,BAD3 +A74B,BAE7 +A74C,BAE6 +A74D,BAE6 +A74E,BAE6 +A74F,BADA +A750,BAE6 +A751,BAE7 +A753,BAD6 +A754,BAD6 +A755,BAE8 +A756,BAE8 +A757,BAE9 +A758,BAE8 +A759,BAE8 +A75A,BACF +A75B,BAE8 +A75C,BADA +A75D,BAE9 +A761,BAEA +A762,BAEB +A763,BAEB +A764,BAEB +A765,BAEC +A766,BAEC +A767,BAEC +A768,BAF0 +A769,BAED +A76A,BAEB +A76B,BAEE +A76C,BAED +A76D,BAED +A76E,BAED +A76F,BAEF +A770,BAED +A771,BAEE +A773,BAEF +A774,BAEF +A775,BAF0 +A776,BAF0 +A777,BAD8 +A778,BAF0 +A779,BAF0 +A77A,BAEB +A77B,BAF0 +A77C,BAEF +A77D,BAD8 +A781,BAF1 +A782,BAF2 +A783,BAF2 +A784,BAF2 +A785,BAF3 +A786,BAF3 +A787,BAF3 +A788,BAF8 +A789,BAF4 +A78A,BAF2 +A78B,BAF5 +A78C,BAF4 +A78D,BAF4 +A78E,BAF4 +A78F,BAF7 +A790,BAF4 +A791,BAF6 +A793,BAF7 +A794,BAF7 +A795,BAF8 +A796,BAF8 +A797,BAF9 +A798,BAFA +A799,BAFB +A79A,BAF2 +A79B,BAF8 +A79C,BAF7 +A79D,BAF9 +A7A1,BAF1 +A7A2,BAF2 +A7A3,BAF2 +A7A4,BAF2 +A7A5,BAF3 +A7A6,BAF3 +A7A7,BAF3 +A7A8,BAF8 +A7A9,BAF4 +A7AA,BAF2 +A7AB,BAF5 +A7AC,BAF4 +A7AD,BAF4 +A7AE,BAF4 +A7AF,BAF7 +A7B0,BAF4 +A7B1,BAF6 +A7B3,BAF7 +A7B4,BAF7 +A7B5,BAF8 +A7B6,BAF8 +A7B7,BAF9 +A7B8,BAFA +A7B9,BAFB +A7BA,BAF2 +A7BB,BAF8 +A7BC,BAF7 +A7BD,BAF9 +A841,A1A1 +A861,BAFC +A862,BAFD +A863,BAFD +A864,BAFD +A865,BAFE +A866,BAFE +A867,BAFE +A868,BBA5 +A869,BBA1 +A86A,BAFD +A86B,BBA2 +A86C,BBA1 +A86D,BBA1 +A86E,BBA1 +A86F,BBA4 +A870,BBA1 +A871,BBA3 +A873,BBA4 +A874,BBA4 +A875,BBA5 +A876,BBA6 +A877,BBA7 +A878,BBA5 +A879,BBA5 +A87A,BAFD +A87B,BBA5 +A87C,BBA4 +A87D,BBA8 +A881,BBA9 +A882,BBAA +A883,BBAA +A884,BBAA +A885,BBAB +A886,BBAB +A887,BBAB +A888,BBAF +A889,BBAC +A88A,BBAA +A88B,BBAD +A88C,BBAC +A88D,BBAC +A88E,BBAC +A88F,BBAE +A890,BBAC +A891,BBAD +A893,BBAE +A894,BBAE +A895,BBAF +A896,BBB0 +A897,BBB1 +A898,BBAF +A899,BBAF +A89A,BBAA +A89B,BBAF +A89C,BBAE +A89D,BBB1 +A8A1,BBB2 +A8A2,BBB3 +A8A3,BBB3 +A8A4,BBB3 +A8A5,B9F4 +A8A6,B9F4 +A8A7,B9F4 +A8A8,BBA5 +A8A9,BBA1 +A8AA,BBB3 +A8AB,BBB4 +A8AC,BBA1 +A8AD,BBA1 +A8AE,BBA1 +A8AF,B9F5 +A8B0,BBA1 +A8B1,BBB4 +A8B3,B9F5 +A8B4,B9F5 +A8B5,BBA5 +A8B6,BBA6 +A8B7,BBA7 +A8B8,BBA5 +A8B9,BBA5 +A8BA,BBB3 +A8BB,BBA5 +A8BC,B9F5 +A8BD,BBA8 +A8C1,BBA9 +A8C2,BBAA +A8C3,BBAA +A8C4,BBAA +A8C5,BBAB +A8C6,BBAB +A8C7,BBAB +A8C8,BBAF +A8C9,BBAC +A8CA,BBAA +A8CB,BBAD +A8CC,BBAC +A8CD,BBAC +A8CE,BBAC +A8CF,BBAE +A8D0,BBAC +A8D1,BBAD +A8D3,BBAE +A8D4,BBAE +A8D5,BBAF +A8D6,BBB0 +A8D7,BBB1 +A8D8,BBAF +A8D9,BBAF +A8DA,BBAA +A8DB,BBAF +A8DC,BBAE +A8DD,BBB1 +A8E1,BBB5 +A8E2,BBB6 +A8E3,BBB6 +A8E4,BBB6 +A8E5,BBB7 +A8E6,BBB7 +A8E7,BBB7 +A8E8,BBB8 +A8E9,BBB9 +A8EA,BBB6 +A8EB,BBBA +A8EC,BBB9 +A8ED,BBB9 +A8EE,BBB9 +A8EF,B9FD +A8F0,BBB9 +A8F1,BBBA +A8F3,B9FD +A8F4,B9FD +A8F5,BBBB +A8F6,BBBC +A8F7,BBBD +A8F8,BBB8 +A8F9,BBB8 +A8FA,BBB6 +A8FB,BBB8 +A8FC,B9FD +A8FD,BBBD +A941,BBBE +A942,BBAA +A943,BBAA +A944,BBAA +A945,BBAB +A946,BBAB +A947,BBAB +A948,BBAF +A949,BBAC +A94A,BBAA +A94B,BBAD +A94C,BBAC +A94D,BBAC +A94E,BBAC +A94F,BBAE +A950,BBAC +A951,BBAD +A953,BBAE +A954,BBAE +A955,BBAF +A956,BBB0 +A957,BBBF +A958,BBAF +A959,BBAF +A95A,BBAA +A95B,BBAF +A95C,BBAE +A95D,BBBF +A961,BBC0 +A962,BBC1 +A963,BBC1 +A964,BBC1 +A965,BAAF +A966,BAAF +A967,BAAF +A968,BBC4 +A969,BAB0 +A96A,BBC1 +A96B,BBC2 +A96C,BAB0 +A96D,BAB0 +A96E,BAB0 +A96F,BBC3 +A970,BAB0 +A971,BBC2 +A973,BBC3 +A974,BBC3 +A975,BBC4 +A976,BBC5 +A977,BBC6 +A978,BBC4 +A979,BBC4 +A97A,BBC1 +A97B,BBC4 +A97C,BBC3 +A97D,BBC6 +A981,BAB6 +A982,BAA4 +A983,BAA4 +A984,BAA4 +A985,BAB7 +A986,BAB7 +A987,BAB7 +A988,BAA6 +A989,BAA7 +A98A,BAA4 +A98B,BAA8 +A98C,BAA7 +A98D,BAA7 +A98E,BAA7 +A98F,BAA9 +A990,BAA7 +A991,BAA8 +A993,BAA9 +A994,BAA9 +A995,BAAA +A996,BAAB +A997,BBBF +A998,BAA6 +A999,BAA6 +A99A,BAA4 +A99B,BAA6 +A99C,BAA9 +A99D,BBBF +A9A1,BBC7 +A9A2,BBC8 +A9A3,BBC8 +A9A4,BBC8 +A9A5,BBC9 +A9A6,BBC9 +A9A7,BBC9 +A9A8,BABF +A9A9,BBCA +A9AA,BBC8 +A9AB,BBCB +A9AC,BBCA +A9AD,BBCA +A9AE,BBCA +A9AF,BBCC +A9B0,BBCA +A9B1,BBCB +A9B3,BBCC +A9B4,BBCC +A9B5,BABF +A9B6,BABF +A9B7,BBCD +A9B8,BABF +A9B9,BABF +A9BA,BBC8 +A9BB,BABF +A9BC,BBCC +A9BD,BBCD +A9C1,BAC1 +A9C2,BAFD +A9C3,BAFD +A9C4,BAFD +A9C5,BAC2 +A9C6,BAC2 +A9C7,BAC2 +A9C8,BAC3 +A9C9,BBA1 +A9CA,BAFD +A9CB,BBA2 +A9CC,BBA1 +A9CD,BBA1 +A9CE,BBA1 +A9CF,BBA4 +A9D0,BBA1 +A9D1,BBA3 +A9D3,BBA4 +A9D4,BBA4 +A9D5,BAC3 +A9D6,BAC3 +A9D7,BBA7 +A9D8,BAC3 +A9D9,BAC3 +A9DA,BAFD +A9DB,BAC3 +A9DC,BBA4 +A9DD,BBA8 +A9E1,BBCE +A9E2,BAC7 +A9E3,BAC7 +A9E4,BAC7 +A9E5,BAC8 +A9E6,BAC8 +A9E7,BAC8 +A9E8,BAC5 +A9E9,BAC9 +A9EA,BAC7 +A9EB,BACA +A9EC,BAC9 +A9ED,BAC9 +A9EE,BAC9 +A9EF,BACB +A9F0,BAC9 +A9F1,BACA +A9F3,BACB +A9F4,BACB +A9F5,BAC5 +A9F6,BAC5 +A9F7,BBB1 +A9F8,BAC5 +A9F9,BAC5 +A9FA,BAC7 +A9FB,BAC5 +A9FC,BACB +A9FD,BBB1 +AA41,BBCE +AA42,BAC7 +AA43,BAC7 +AA44,BAC7 +AA45,BAC8 +AA46,BAC8 +AA47,BAC8 +AA48,BAC5 +AA49,BAC9 +AA4A,BAC7 +AA4B,BACA +AA4C,BAC9 +AA4D,BAC9 +AA4E,BAC9 +AA4F,BACB +AA50,BAC9 +AA51,BACA +AA53,BACB +AA54,BACB +AA55,BAC5 +AA56,BAC5 +AA57,BBE6 +AA58,BAC5 +AA59,BAC5 +AA5A,BAC7 +AA5B,BAC5 +AA5C,BACB +AA5D,BBE6 +AA61,BBCF +AA62,BBC8 +AA63,BBC8 +AA64,BBC8 +AA65,BACD +AA66,BACD +AA67,BACD +AA68,BABF +AA69,BBCA +AA6A,BBC8 +AA6B,BBCB +AA6C,BBCA +AA6D,BBCA +AA6E,BBCA +AA6F,BBCC +AA70,BBCA +AA71,BBCB +AA73,BBCC +AA74,BBCC +AA75,BABF +AA76,BABF +AA77,BBD0 +AA78,BABF +AA79,BABF +AA7A,BBC8 +AA7B,BABF +AA7C,BBCC +AA7D,BBD0 +AA81,BBD1 +AA82,BBD2 +AA83,BBD2 +AA84,BBD2 +AA85,BBD3 +AA86,BBD3 +AA87,BBD3 +AA88,BBD6 +AA89,BBD4 +AA8A,BBD2 +AA8B,BBD5 +AA8C,BBD4 +AA8D,BBD4 +AA8E,BBD4 +AA8F,BADA +AA90,BBD4 +AA91,BBD5 +AA93,BAD6 +AA94,BAD6 +AA95,BBD6 +AA96,BBD6 +AA97,BBD7 +AA98,BBD6 +AA99,BBD6 +AA9A,BBD2 +AA9B,BBD6 +AA9C,BADA +AA9D,BBD7 +AAA1,BADB +AAA2,BBB6 +AAA3,BBB6 +AAA4,BBB6 +AAA5,BBB7 +AAA6,BBB7 +AAA7,BBB7 +AAA8,BADD +AAA9,BADC +AAAA,BBB6 +AAAB,BBBA +AAAC,BADC +AAAD,BADC +AAAE,BADC +AAAF,B9FD +AAB0,BADC +AAB1,BBBA +AAB3,B9FD +AAB4,B9FD +AAB5,BADD +AAB6,BADD +AAB7,BBBD +AAB8,BADD +AAB9,BADD +AABA,BBB6 +AABB,BADD +AABC,B9FD +AABD,BBBD +AAC1,BADE +AAC2,BAA4 +AAC3,BAA4 +AAC4,BAA4 +AAC5,BAA5 +AAC6,BAA5 +AAC7,BAA5 +AAC8,BAC5 +AAC9,BAA7 +AACA,BAA4 +AACB,BAA8 +AACC,BAA7 +AACD,BAA7 +AACE,BAA7 +AACF,BAA9 +AAD0,BAA7 +AAD1,BAA8 +AAD3,BAA9 +AAD4,BAA9 +AAD5,BAC5 +AAD6,BAC5 +AAD7,BBBF +AAD8,BAC5 +AAD9,BAC5 +AADA,BAA4 +AADB,BAC5 +AADC,BAA9 +AADD,BBBF +AAE1,BADF +AAE2,BAE0 +AAE3,BAE0 +AAE4,BAE0 +AAE5,BAE1 +AAE6,BAE1 +AAE7,BAE1 +AAE8,BBE5 +AAE9,BAE2 +AAEA,BAE0 +AAEB,BBE3 +AAEC,BAE2 +AAED,BAE2 +AAEE,BAE2 +AAEF,BBE4 +AAF0,BAE2 +AAF1,BBE3 +AAF3,BBE4 +AAF4,BBE4 +AAF5,BBE5 +AAF6,BBE5 +AAF7,BAE3 +AAF8,BBE5 +AAF9,BBE5 +AAFA,BAE0 +AAFB,BBE5 +AAFC,BBE4 +AAFD,BAE3 +AB41,BBD8 +AB42,BBD2 +AB43,BBD2 +AB44,BBD2 +AB45,BAE5 +AB46,BAE5 +AB47,BAE5 +AB48,BAE8 +AB49,BAE6 +AB4A,BBD2 +AB4B,BAE7 +AB4C,BAE6 +AB4D,BAE6 +AB4E,BAE6 +AB4F,BADA +AB50,BAE6 +AB51,BAE7 +AB53,BAD6 +AB54,BAD6 +AB55,BAE8 +AB56,BAE8 +AB57,BBD9 +AB58,BAE8 +AB59,BAE8 +AB5A,BBD2 +AB5B,BAE8 +AB5C,BADA +AB5D,BBD9 +AB61,BBDA +AB62,BAEB +AB63,BAEB +AB64,BAEB +AB65,BBDB +AB66,BBDB +AB67,BBDB +AB68,BAF0 +AB69,BBDC +AB6A,BAEB +AB6B,BBDD +AB6C,BBDC +AB6D,BBDC +AB6E,BBDC +AB6F,BBDE +AB70,BBDC +AB71,BBDD +AB73,BBDE +AB74,BBDE +AB75,BAF0 +AB76,BAF0 +AB77,BBD7 +AB78,BAF0 +AB79,BAF0 +AB7A,BAEB +AB7B,BAF0 +AB7C,BBDE +AB7D,BBD7 +AB81,BBDF +AB82,BBE0 +AB83,BBE0 +AB84,BBE0 +AB85,BBE1 +AB86,BBE1 +AB87,BBE1 +AB88,BBE5 +AB89,BBE2 +AB8A,BBE0 +AB8B,BBE3 +AB8C,BBE2 +AB8D,BBE2 +AB8E,BBE2 +AB8F,BBE4 +AB90,BBE2 +AB91,BBE3 +AB93,BBE4 +AB94,BBE4 +AB95,BBE5 +AB96,BBE5 +AB97,BBE6 +AB98,BBE5 +AB99,BBE5 +AB9A,BBE0 +AB9B,BBE5 +AB9C,BBE4 +AB9D,BBE6 +ABA1,BBDF +ABA2,BBE0 +ABA3,BBE0 +ABA4,BBE0 +ABA5,BBE1 +ABA6,BBE1 +ABA7,BBE1 +ABA8,BBE5 +ABA9,BBE2 +ABAA,BBE0 +ABAB,BBE3 +ABAC,BBE2 +ABAD,BBE2 +ABAE,BBE2 +ABAF,BBE4 +ABB0,BBE2 +ABB1,BBE3 +ABB3,BBE4 +ABB4,BBE4 +ABB5,BBE5 +ABB6,BBE5 +ABB7,BBE6 +ABB8,BBE5 +ABB9,BBE5 +ABBA,BBE0 +ABBB,BBE5 +ABBC,BBE4 +ABBD,BBE6 +AC41,A1A1 +AC61,BBE7 +AC62,BBE8 +AC63,BBE8 +AC64,BBE9 +AC65,BBEA +AC66,BBEA +AC67,BBEA +AC68,BBEB +AC69,BBEC +AC6A,BBED +AC6B,BBEE +AC6C,BBEC +AC6D,BBEC +AC6E,BBEC +AC6F,BBF0 +AC70,BBEC +AC71,BBEF +AC73,BBF0 +AC74,BBF0 +AC75,BBF1 +AC76,BBF2 +AC77,BBF3 +AC78,BBEB +AC79,BBEB +AC7A,BBE8 +AC7B,BBF4 +AC7C,BBF0 +AC7D,BBF3 +AC81,BBF5 +AC82,BBF6 +AC83,BBF6 +AC84,BBF6 +AC85,BBF7 +AC86,BBF7 +AC87,BBF7 +AC88,BBFB +AC89,BBF8 +AC8A,BBF6 +AC8B,BBF9 +AC8C,BBF8 +AC8D,BBF8 +AC8E,BBF8 +AC8F,BBFA +AC90,BBF8 +AC91,BBF9 +AC93,BBFA +AC94,BBFA +AC95,BBFB +AC96,BBFC +AC97,BBFD +AC98,BBFB +AC99,BBFB +AC9A,BBF6 +AC9B,BBFB +AC9C,BBFA +AC9D,BBFD +ACA1,BBFE +ACA2,BCA1 +ACA3,BCA1 +ACA4,BCA1 +ACA5,BCA2 +ACA6,BCA2 +ACA7,BCA2 +ACA8,BCA6 +ACA9,BCA3 +ACAA,BCA1 +ACAB,BCA4 +ACAC,BCA3 +ACAD,BCA3 +ACAE,BCA3 +ACAF,BCA5 +ACB0,BCA3 +ACB1,BCA4 +ACB3,BCA5 +ACB4,BCA5 +ACB5,BCA6 +ACB6,BCA6 +ACB7,BCA7 +ACB8,BCA6 +ACB9,BCA6 +ACBA,BCA1 +ACBB,BCA6 +ACBC,BCA5 +ACBD,BCA7 +ACC1,BCA8 +ACC2,BBF6 +ACC3,BBF6 +ACC4,BBF6 +ACC5,BCA9 +ACC6,BCA9 +ACC7,BCA9 +ACC8,BBFB +ACC9,BCAA +ACCA,BBF6 +ACCB,BCAB +ACCC,BCAA +ACCD,BCAA +ACCE,BCAA +ACCF,BBFA +ACD0,BCAA +ACD1,BCAB +ACD3,BBFA +ACD4,BBFA +ACD5,BBFB +ACD6,BBFC +ACD7,BCAC +ACD8,BBFB +ACD9,BBFB +ACDA,BBF6 +ACDB,BBFB +ACDC,BBFA +ACDD,BCAC +ACE1,BCAD +ACE2,BCAE +ACE3,BCAF +ACE4,BCB0 +ACE5,BCB1 +ACE6,BCB1 +ACE7,BCB1 +ACE8,BCB2 +ACE9,BCB3 +ACEA,BCAE +ACEB,BCB4 +ACEC,BCB5 +ACED,BCB3 +ACEE,BCB3 +ACEF,BCBB +ACF0,BCB3 +ACF1,BCB6 +ACF3,BCB7 +ACF4,BCB7 +ACF5,BCB8 +ACF6,BCB9 +ACF7,BCBA +ACF8,BCB2 +ACF9,BCB2 +ACFA,BCAE +ACFB,BCB2 +ACFC,BCBB +ACFD,BCBA +AD41,BCBC +AD42,BCBD +AD43,BCBD +AD44,BCBD +AD45,BCBE +AD46,BCBE +AD47,BCBE +AD48,BCC2 +AD49,BCBF +AD4A,BCBD +AD4B,BCC0 +AD4C,BCBF +AD4D,BCBF +AD4E,BCBF +AD4F,BCC1 +AD50,BCBF +AD51,BCC0 +AD53,BCC1 +AD54,BCC1 +AD55,BCC2 +AD56,BCC3 +AD57,BCC4 +AD58,BCC2 +AD59,BCC2 +AD5A,BCBD +AD5B,BCC2 +AD5C,BCC1 +AD5D,BCC4 +AD61,BCC5 +AD62,BCC6 +AD63,BCC6 +AD64,BCC6 +AD65,BCC7 +AD66,BCC7 +AD67,BCC7 +AD68,BCCB +AD69,BCC8 +AD6A,BCC6 +AD6B,BCC9 +AD6C,BCC8 +AD6D,BCC8 +AD6E,BCC8 +AD6F,BCCA +AD70,BCC8 +AD71,BCC9 +AD73,BCCA +AD74,BCCA +AD75,BCCB +AD76,BCCC +AD77,BCCD +AD78,BCCB +AD79,BCCB +AD7A,BCC6 +AD7B,BCCB +AD7C,BCCA +AD7D,BCCD +AD81,BCCE +AD82,BCBD +AD83,BCBD +AD84,BCBD +AD85,BCCF +AD86,BCCF +AD87,BCCF +AD88,BCC2 +AD89,BCD0 +AD8A,BCBD +AD8B,BCAB +AD8C,BCD0 +AD8D,BCD0 +AD8E,BCD0 +AD8F,BCC1 +AD90,BCD0 +AD91,BCAB +AD93,BCC1 +AD94,BCC1 +AD95,BCC2 +AD96,BCC3 +AD97,BCD1 +AD98,BCC2 +AD99,BCC2 +AD9A,BCBD +AD9B,BCC2 +AD9C,BCC1 +AD9D,BCD1 +ADA1,BCD2 +ADA2,BCD3 +ADA3,BCD4 +ADA4,BCD3 +ADA5,BCD5 +ADA6,BCD5 +ADA7,BCD5 +ADA8,BCDA +ADA9,BCD6 +ADAA,BCD3 +ADAB,BCD7 +ADAC,BCD6 +ADAD,BCD6 +ADAE,BCD6 +ADAF,BCD9 +ADB0,BCD6 +ADB1,BCD8 +ADB3,BCD9 +ADB4,BCD9 +ADB5,BCDA +ADB6,BCDA +ADB7,BCDB +ADB8,BCDA +ADB9,BCDA +ADBA,BCD3 +ADBB,BCDC +ADBC,BCD9 +ADBD,BCDB +ADC1,BCDD +ADC2,BCDE +ADC3,BCDE +ADC4,BCDE +ADC5,BCDF +ADC6,BCDF +ADC7,BCDF +ADC8,BBEB +ADC9,BCE0 +ADCA,BCDE +ADCB,BBEE +ADCC,BCE0 +ADCD,BCE0 +ADCE,BCE0 +ADCF,BBF0 +ADD0,BCE0 +ADD1,BBEF +ADD3,BBF0 +ADD4,BBF0 +ADD5,BBF1 +ADD6,BBF2 +ADD7,BCE1 +ADD8,BBEB +ADD9,BBEB +ADDA,BCDE +ADDB,BBF4 +ADDC,BBF0 +ADDD,BCE1 +ADE1,BCE2 +ADE2,BBF6 +ADE3,BBF6 +ADE4,BBF6 +ADE5,BCE3 +ADE6,BCE3 +ADE7,BCE3 +ADE8,BCE6 +ADE9,BCE4 +ADEA,BBF6 +ADEB,BCE5 +ADEC,BCE4 +ADED,BCE4 +ADEE,BCE4 +ADEF,BCEC +ADF0,BCE4 +ADF1,BCE5 +ADF3,BCEC +ADF4,BCEC +ADF5,BCE6 +ADF6,BCE7 +ADF7,BBFD +ADF8,BCE6 +ADF9,BCE6 +ADFA,BBF6 +ADFB,BCE6 +ADFC,BCEC +ADFD,BBFD +AE41,BCE8 +AE42,BDC4 +AE43,BDC4 +AE44,BDC4 +AE45,BCE9 +AE46,BCE9 +AE47,BCE9 +AE48,BCED +AE49,BCEA +AE4A,BDC4 +AE4B,BCEB +AE4C,BCEA +AE4D,BCEA +AE4E,BCEA +AE4F,BCEC +AE50,BCEA +AE51,BCEB +AE53,BCEC +AE54,BCEC +AE55,BCED +AE56,BCED +AE57,BDCC +AE58,BCED +AE59,BCED +AE5A,BDC4 +AE5B,BCED +AE5C,BCEC +AE5D,BDCC +AE61,BCEE +AE62,BCEF +AE63,BCEF +AE64,BCEF +AE65,BCF0 +AE66,BCF0 +AE67,BCF0 +AE68,BCF4 +AE69,BCF1 +AE6A,BCEF +AE6B,BCF2 +AE6C,BCF1 +AE6D,BCF1 +AE6E,BCF1 +AE6F,BCF3 +AE70,BCF1 +AE71,BCF2 +AE73,BCF3 +AE74,BCF3 +AE75,BCF4 +AE76,BCF4 +AE77,BCF5 +AE78,BCF4 +AE79,BCF4 +AE7A,BCEF +AE7B,BCF4 +AE7C,BCF3 +AE7D,BCF5 +AE81,BCF6 +AE82,BCF7 +AE83,BCF7 +AE84,BCF7 +AE85,BCF8 +AE86,BCF8 +AE87,BCF8 +AE88,BCF9 +AE89,BCFA +AE8A,BCF7 +AE8B,BCFB +AE8C,BCFA +AE8D,BCFA +AE8E,BCFA +AE8F,BDA3 +AE90,BCFA +AE91,BCFB +AE93,BCFC +AE94,BCFC +AE95,BCFD +AE96,BCF9 +AE97,BCFE +AE98,BCF9 +AE99,BDA1 +AE9A,BCF7 +AE9B,BDA2 +AE9C,BDA3 +AE9D,BCFE +AEA1,BDA4 +AEA2,BCAE +AEA3,BCAF +AEA4,BCB0 +AEA5,BCB1 +AEA6,BCB1 +AEA7,BCB1 +AEA8,BDA5 +AEA9,BCB3 +AEAA,BCAE +AEAB,BCB4 +AEAC,BCB5 +AEAD,BCB3 +AEAE,BCB3 +AEAF,BCBB +AEB0,BCB3 +AEB1,BCB6 +AEB3,BCB7 +AEB4,BCB7 +AEB5,BDA5 +AEB6,BDA5 +AEB7,BCBA +AEB8,BDA5 +AEB9,BDA5 +AEBA,BCAE +AEBB,BDA5 +AEBC,BCBB +AEBD,BCBA +AEC1,BDA6 +AEC2,BDA7 +AEC3,BDA7 +AEC4,BDA7 +AEC5,BDA8 +AEC6,BDA8 +AEC7,BDA8 +AEC8,BCE6 +AEC9,BDA9 +AECA,BDA7 +AECB,BDAA +AECC,BDA9 +AECD,BDA9 +AECE,BDA9 +AECF,BCC1 +AED0,BDA9 +AED1,BDAA +AED3,BCC1 +AED4,BCC1 +AED5,BCE6 +AED6,BCE7 +AED7,BDAB +AED8,BCE6 +AED9,BCE6 +AEDA,BDA7 +AEDB,BCE6 +AEDC,BCC1 +AEDD,BDAB +AEE1,BDAC +AEE2,BDAD +AEE3,BDAD +AEE4,BDAD +AEE5,BDAE +AEE6,BDAE +AEE7,BDAE +AEE8,BDB2 +AEE9,BDAF +AEEA,BDAD +AEEB,BDB0 +AEEC,BDAF +AEED,BDAF +AEEE,BDAF +AEEF,BDB1 +AEF0,BDAF +AEF1,BDB0 +AEF3,BDB1 +AEF4,BDB1 +AEF5,BDB2 +AEF6,BDB2 +AEF7,BDB3 +AEF8,BDB2 +AEF9,BDB2 +AEFA,BDAD +AEFB,BDB2 +AEFC,BDB1 +AEFD,BDB3 +AF41,BDB4 +AF42,BDB5 +AF43,BDB5 +AF44,BDB5 +AF45,BCF8 +AF46,BCF8 +AF47,BCF8 +AF48,BDB8 +AF49,BDB6 +AF4A,BDB5 +AF4B,BDB7 +AF4C,BDB6 +AF4D,BDB6 +AF4E,BDB6 +AF4F,BDA3 +AF50,BDB6 +AF51,BDB7 +AF53,BCFC +AF54,BCFC +AF55,BDB8 +AF56,BDB8 +AF57,BDB9 +AF58,BDB8 +AF59,BDB8 +AF5A,BDB5 +AF5B,BDB8 +AF5C,BDA3 +AF5D,BDB9 +AF61,BDBA +AF62,BDBB +AF63,BDBB +AF64,BDBB +AF65,BDBC +AF66,BDBC +AF67,BDBC +AF68,BDC1 +AF69,BDBD +AF6A,BDBE +AF6B,BDBF +AF6C,BDBD +AF6D,BDBD +AF6E,BDBD +AF6F,BDC0 +AF70,BDBD +AF71,BDBF +AF73,BDC0 +AF74,BDC0 +AF75,BDC1 +AF76,BDC1 +AF77,BDC2 +AF78,BDC1 +AF79,BDC1 +AF7A,BDBB +AF7B,BDC1 +AF7C,BDC0 +AF7D,BDC2 +AF81,BDC3 +AF82,BDC4 +AF83,BDC4 +AF84,BDC4 +AF85,BDC5 +AF86,BDC5 +AF87,BDC5 +AF88,BDC6 +AF89,BDC7 +AF8A,BDC4 +AF8B,BDC9 +AF8C,BDC7 +AF8D,BDC7 +AF8E,BDC7 +AF8F,BDCD +AF90,BDC8 +AF91,BDC9 +AF93,BDCA +AF94,BDCA +AF95,BDCB +AF96,BDC6 +AF97,BDCC +AF98,BDC6 +AF99,BDC6 +AF9A,BDC4 +AF9B,BDC6 +AF9C,BDCD +AF9D,BDCC +AFA1,BDC3 +AFA2,BDC4 +AFA3,BDC4 +AFA4,BDC4 +AFA5,BDC5 +AFA6,BDC5 +AFA7,BDC5 +AFA8,BDC6 +AFA9,BDC7 +AFAA,BDC4 +AFAB,BDC9 +AFAC,BDC7 +AFAD,BDC7 +AFAE,BDC7 +AFAF,BDCD +AFB0,BDC8 +AFB1,BDC9 +AFB3,BDCA +AFB4,BDCA +AFB5,BDCB +AFB6,BDC6 +AFB7,BDCC +AFB8,BDC6 +AFB9,BDC6 +AFBA,BDC4 +AFBB,BDC6 +AFBC,BDCD +AFBD,BDCC +B041,A1A1 +B061,BDCE +B062,BDCF +B063,BDCF +B064,BDD0 +B065,BDD1 +B066,BDD1 +B067,BDD1 +B068,BDD5 +B069,BDD2 +B06A,BDCF +B06B,BDD3 +B06C,BDD2 +B06D,BDD2 +B06E,BDD2 +B06F,BDD4 +B070,BDD2 +B071,BDD3 +B073,BDD4 +B074,BDD4 +B075,BDD5 +B076,BDD5 +B077,BDD6 +B078,BDD5 +B079,BDD5 +B07A,BDCF +B07B,BDD5 +B07C,BDD4 +B07D,BDD7 +B081,BDD8 +B082,BDD9 +B083,BDD9 +B084,BDD9 +B085,BDDA +B086,BDDA +B087,BDDA +B088,BDDE +B089,BDDB +B08A,BDD9 +B08B,BDDC +B08C,BDDB +B08D,BDDB +B08E,BDDB +B08F,BDDD +B090,BDDB +B091,BDDC +B093,BDDD +B094,BDDD +B095,BDDE +B096,BDDE +B097,BDDF +B098,BDDE +B099,BDDE +B09A,BDD9 +B09B,BDDE +B09C,BDDD +B09D,BDDF +B0A1,BBFE +B0A2,BCA1 +B0A3,BCA1 +B0A4,BCA1 +B0A5,BCA2 +B0A6,BCA2 +B0A7,BCA2 +B0A8,BCA6 +B0A9,BCA3 +B0AA,BCA1 +B0AB,BCA4 +B0AC,BCA3 +B0AD,BCA3 +B0AE,BCA3 +B0AF,BCA5 +B0B0,BCA3 +B0B1,BCA4 +B0B3,BCA5 +B0B4,BCA5 +B0B5,BCA6 +B0B6,BCA6 +B0B7,BDE0 +B0B8,BCA6 +B0B9,BCA6 +B0BA,BCA1 +B0BB,BCA6 +B0BC,BCA5 +B0BD,BDD7 +B0C1,BCA8 +B0C2,BDD9 +B0C3,BDD9 +B0C4,BDD9 +B0C5,BDED +B0C6,BDED +B0C7,BDED +B0C8,BDDE +B0C9,BCAA +B0CA,BDD9 +B0CB,BCAB +B0CC,BCAA +B0CD,BCAA +B0CE,BCAA +B0CF,BDDD +B0D0,BCAA +B0D1,BCAB +B0D3,BDDD +B0D4,BDDD +B0D5,BDDE +B0D6,BDDE +B0D7,BCAC +B0D8,BDDE +B0D9,BDDE +B0DA,BDD9 +B0DB,BDDE +B0DC,BDDD +B0DD,BCAC +B0E1,BDE1 +B0E2,BDE2 +B0E3,BDE2 +B0E4,BDE2 +B0E5,BDE3 +B0E6,BDE3 +B0E7,BDE3 +B0E8,BDE8 +B0E9,BDE4 +B0EA,BDE2 +B0EB,BDE5 +B0EC,BDE4 +B0ED,BDE4 +B0EE,BDE4 +B0EF,BDE7 +B0F0,BDE4 +B0F1,BDE6 +B0F3,BDE7 +B0F4,BDE7 +B0F5,BDE8 +B0F6,BDE8 +B0F7,BDE9 +B0F8,BDE8 +B0F9,BDE8 +B0FA,BDE2 +B0FB,BDE8 +B0FC,BDE7 +B0FD,BDE9 +B141,BDEA +B142,BDD9 +B143,BDD9 +B144,BDD9 +B145,BDEB +B146,BDEB +B147,BDEB +B148,BDDE +B149,BDEC +B14A,BDD9 +B14B,BDDC +B14C,BDEC +B14D,BDEC +B14E,BDEC +B14F,BDDD +B150,BDEC +B151,BDDC +B153,BDDD +B154,BDDD +B155,BDDE +B156,BDDE +B157,BDDF +B158,BDDE +B159,BDDE +B15A,BDD9 +B15B,BDDE +B15C,BDDD +B15D,BDDF +B161,BCC5 +B162,BCC6 +B163,BCC6 +B164,BCC6 +B165,BCC7 +B166,BCC7 +B167,BCC7 +B168,BCCB +B169,BCC8 +B16A,BCC6 +B16B,BCC9 +B16C,BCC8 +B16D,BCC8 +B16E,BCC8 +B16F,BCCA +B170,BCC8 +B171,BCC9 +B173,BCCA +B174,BCCA +B175,BCCB +B176,BCCC +B177,BCCD +B178,BCCB +B179,BCCB +B17A,BCC6 +B17B,BCCB +B17C,BCCA +B17D,BCCD +B181,BCCE +B182,BCBD +B183,BCBD +B184,BCBD +B185,BDED +B186,BDED +B187,BDED +B188,BCC2 +B189,BCD0 +B18A,BCBD +B18B,BCAB +B18C,BCD0 +B18D,BCD0 +B18E,BCD0 +B18F,BCC1 +B190,BCD0 +B191,BCAB +B193,BCC1 +B194,BCC1 +B195,BCC2 +B196,BCC3 +B197,BCD1 +B198,BCC2 +B199,BCC2 +B19A,BCBD +B19B,BCC2 +B19C,BCC1 +B19D,BCD1 +B1A1,BDEE +B1A2,BDEF +B1A3,BDEF +B1A4,BDEF +B1A5,BDF0 +B1A6,BDF0 +B1A7,BDF0 +B1A8,BDF1 +B1A9,BDF2 +B1AA,BDEF +B1AB,BDF3 +B1AC,BDF2 +B1AD,BDF2 +B1AE,BDF2 +B1AF,BDF5 +B1B0,BDF2 +B1B1,BDF4 +B1B3,BDF5 +B1B4,BDF5 +B1B5,BDF1 +B1B6,BDF1 +B1B7,BDF6 +B1B8,BDF1 +B1B9,BDF1 +B1BA,BDEF +B1BB,BDF1 +B1BC,BDF5 +B1BD,BDF6 +B1C1,BDF7 +B1C2,BDF8 +B1C3,BDF8 +B1C4,BDF8 +B1C5,BDF9 +B1C6,BDF9 +B1C7,BDF9 +B1C8,BDFA +B1C9,BCE0 +B1CA,BDF8 +B1CB,BDD3 +B1CC,BCE0 +B1CD,BCE0 +B1CE,BCE0 +B1CF,BDD4 +B1D0,BCE0 +B1D1,BDD3 +B1D3,BDD4 +B1D4,BDD4 +B1D5,BDFA +B1D6,BDFA +B1D7,BCE1 +B1D8,BDFA +B1D9,BDFA +B1DA,BDF8 +B1DB,BDFA +B1DC,BDD4 +B1DD,BDD7 +B1E1,BDFB +B1E2,BDD9 +B1E3,BDD9 +B1E4,BDD9 +B1E5,BDFE +B1E6,BDFE +B1E7,BDFE +B1E8,BDFC +B1E9,BEA1 +B1EA,BDD9 +B1EB,BEA2 +B1EC,BEA1 +B1ED,BEA1 +B1EE,BEA1 +B1EF,BEA3 +B1F0,BEA1 +B1F1,BEA2 +B1F3,BEA3 +B1F4,BEA3 +B1F5,BDFC +B1F6,BDFC +B1F7,BDDF +B1F8,BDFC +B1F9,BDFC +B1FA,BDD9 +B1FB,BDFC +B1FC,BEA3 +B1FD,BDDF +B241,BDFD +B242,BEBF +B243,BEBF +B244,BEBF +B245,BDFE +B246,BDFE +B247,BDFE +B248,BDFC +B249,BEA1 +B24A,BEBF +B24B,BEA2 +B24C,BEA1 +B24D,BEA1 +B24E,BEA1 +B24F,BEA3 +B250,BEA1 +B251,BEA2 +B253,BEA3 +B254,BEA3 +B255,BDFC +B256,BDFC +B257,BEC5 +B258,BDFC +B259,BDFC +B25A,BEBF +B25B,BDFC +B25C,BEA3 +B25D,BEC5 +B261,BEA4 +B262,BCEF +B263,BCEF +B264,BCEF +B265,BCF0 +B266,BCF0 +B267,BCF0 +B268,BCF4 +B269,BCF1 +B26A,BCEF +B26B,BCF2 +B26C,BCF1 +B26D,BCF1 +B26E,BCF1 +B26F,BCF3 +B270,BCF1 +B271,BCF2 +B273,BCF3 +B274,BCF3 +B275,BCF4 +B276,BCF4 +B277,BCF5 +B278,BCF4 +B279,BCF4 +B27A,BCEF +B27B,BCF4 +B27C,BCF3 +B27D,BCF5 +B281,BEA5 +B282,BEA6 +B283,BEA6 +B284,BEA6 +B285,BEA7 +B286,BEA7 +B287,BEA7 +B288,BCF9 +B289,BEA8 +B28A,BEA6 +B28B,BEA9 +B28C,BEA8 +B28D,BEA8 +B28E,BEA8 +B28F,BEAA +B290,BEA8 +B291,BEA9 +B293,BEAA +B294,BEAA +B295,BCFD +B296,BCF9 +B297,BEAB +B298,BCF9 +B299,BDA1 +B29A,BEA6 +B29B,BDA2 +B29C,BEAA +B29D,BEAB +B2A1,BEAC +B2A2,BDE2 +B2A3,BDE2 +B2A4,BDE2 +B2A5,BDE3 +B2A6,BDE3 +B2A7,BDE3 +B2A8,BEAD +B2A9,BDE4 +B2AA,BDE2 +B2AB,BDE5 +B2AC,BDE4 +B2AD,BDE4 +B2AE,BDE4 +B2AF,BDE7 +B2B0,BDE4 +B2B1,BDE6 +B2B3,BDE7 +B2B4,BDE7 +B2B5,BEAD +B2B6,BEAD +B2B7,BDE9 +B2B8,BEAD +B2B9,BEAD +B2BA,BDE2 +B2BB,BEAD +B2BC,BDE7 +B2BD,BDE9 +B2C1,BEAE +B2C2,BDA7 +B2C3,BDA7 +B2C4,BDA7 +B2C5,BDA8 +B2C6,BDA8 +B2C7,BDA8 +B2C8,BDFC +B2C9,BDA9 +B2CA,BDA7 +B2CB,BDAA +B2CC,BDA9 +B2CD,BDA9 +B2CE,BDA9 +B2CF,BCC1 +B2D0,BDA9 +B2D1,BDAA +B2D3,BCC1 +B2D4,BCC1 +B2D5,BDFC +B2D6,BDFC +B2D7,BDAB +B2D8,BDFC +B2D9,BDFC +B2DA,BDA7 +B2DB,BDFC +B2DC,BCC1 +B2DD,BDAB +B2E1,BEAF +B2E2,BDAD +B2E3,BDAD +B2E4,BDAD +B2E5,BEB0 +B2E6,BEB0 +B2E7,BEB0 +B2E8,BDB2 +B2E9,BDAF +B2EA,BDAD +B2EB,BDB0 +B2EC,BDAF +B2ED,BDAF +B2EE,BDAF +B2EF,BDB1 +B2F0,BDAF +B2F1,BDB0 +B2F3,BDB1 +B2F4,BDB1 +B2F5,BDB2 +B2F6,BDB2 +B2F7,BDB3 +B2F8,BDB2 +B2F9,BDB2 +B2FA,BDAD +B2FB,BDB2 +B2FC,BDB1 +B2FD,BDB3 +B341,BDB4 +B342,BDB5 +B343,BDB5 +B344,BDB5 +B345,BEA7 +B346,BEA7 +B347,BEA7 +B348,BDB8 +B349,BDB6 +B34A,BDB5 +B34B,BDB7 +B34C,BDB6 +B34D,BDB6 +B34E,BDB6 +B34F,BEAA +B350,BDB6 +B351,BDB7 +B353,BEAA +B354,BEAA +B355,BDB8 +B356,BDB8 +B357,BEB1 +B358,BDB8 +B359,BDB8 +B35A,BDB5 +B35B,BDB8 +B35C,BEAA +B35D,BEB1 +B361,BEB2 +B362,BEB3 +B363,BEB3 +B364,BEB3 +B365,BEB4 +B366,BEB4 +B367,BEB4 +B368,BDC1 +B369,BEB5 +B36A,BEB3 +B36B,BEB6 +B36C,BEB5 +B36D,BEB5 +B36E,BEB5 +B36F,BEB9 +B370,BEB7 +B371,BEB8 +B373,BEB9 +B374,BEB9 +B375,BDC1 +B376,BDC1 +B377,BDC2 +B378,BDC1 +B379,BDC1 +B37A,BEB3 +B37B,BDC1 +B37C,BEB9 +B37D,BDC2 +B381,BEBA +B382,BEBF +B383,BEBF +B384,BEBF +B385,BEBB +B386,BEBB +B387,BEBB +B388,BEC4 +B389,BEBC +B38A,BEBF +B38B,BEBD +B38C,BEBC +B38D,BEBC +B38E,BEBC +B38F,BEC3 +B390,BEBC +B391,BEBD +B393,BEC3 +B394,BEC3 +B395,BEC4 +B396,BEC4 +B397,BEC5 +B398,BEC4 +B399,BEC4 +B39A,BEBF +B39B,BEC4 +B39C,BEC3 +B39D,BEC5 +B3A1,BEBE +B3A2,BEBF +B3A3,BEBF +B3A4,BEBF +B3A5,BEC0 +B3A6,BEC0 +B3A7,BEC0 +B3A8,BEC4 +B3A9,BEC1 +B3AA,BEBF +B3AB,BEC2 +B3AC,BEC1 +B3AD,BEC1 +B3AE,BEC1 +B3AF,BEC3 +B3B0,BEC1 +B3B1,BEC2 +B3B3,BEC3 +B3B4,BEC3 +B3B5,BEC4 +B3B6,BEC4 +B3B7,BEC5 +B3B8,BEC4 +B3B9,BEC4 +B3BA,BEBF +B3BB,BEC4 +B3BC,BEC3 +B3BD,BEC5 +B441,A1A1 +B461,BEC6 +B462,BEC7 +B463,BEC7 +B464,BEC7 +B465,BEC8 +B466,BEC9 +B467,BECA +B468,BED1 +B469,BECB +B46A,BECC +B46B,BECD +B46C,BECB +B46D,BECB +B46E,BECB +B46F,BED5 +B470,BECE +B471,BECF +B473,BED0 +B474,BED0 +B475,BED1 +B476,BED2 +B477,BED3 +B478,BED1 +B479,BED1 +B47A,BEC7 +B47B,BED4 +B47C,BED5 +B47D,BED3 +B481,BED6 +B482,BED7 +B483,BED7 +B484,BED7 +B485,BED8 +B486,BED8 +B487,BED8 +B488,BEDC +B489,BED9 +B48A,BED7 +B48B,BEDA +B48C,BED9 +B48D,BED9 +B48E,BED9 +B48F,BEDB +B490,BED9 +B491,BEDA +B493,BEDB +B494,BEDB +B495,BEDC +B496,BEDD +B497,BEDE +B498,BEDC +B499,BEDC +B49A,BED7 +B49B,BEDC +B49C,BEDB +B49D,BEDE +B4A1,BEDF +B4A2,BEE0 +B4A3,BEE0 +B4A4,BEE0 +B4A5,BEE1 +B4A6,BEE1 +B4A7,BEE1 +B4A8,BEE6 +B4A9,BEE2 +B4AA,BEE0 +B4AB,BEE4 +B4AC,BEE3 +B4AD,BEE2 +B4AE,BEE2 +B4AF,BEE5 +B4B0,BEE2 +B4B1,BEE4 +B4B3,BEE5 +B4B4,BEE5 +B4B5,BEE6 +B4B6,BEE6 +B4B7,BEE7 +B4B8,BEE6 +B4B9,BEE6 +B4BA,BEE0 +B4BB,BEE8 +B4BC,BEE5 +B4BD,BEE9 +B4C1,BEEA +B4C2,BED7 +B4C3,BED7 +B4C4,BED7 +B4C5,BEEB +B4C6,BEEB +B4C7,BEEB +B4C8,BFBE +B4C9,BEEC +B4CA,BED7 +B4CB,BFBC +B4CC,BEEC +B4CD,BEEC +B4CE,BEEC +B4CF,BEED +B4D0,BEEC +B4D1,BFBC +B4D3,BEED +B4D4,BEED +B4D5,BFBE +B4D6,BFBF +B4D7,BEDE +B4D8,BFBE +B4D9,BFBE +B4DA,BED7 +B4DB,BFBE +B4DC,BEED +B4DD,BEDE +B4E1,BEEE +B4E2,BEEF +B4E3,BEEF +B4E4,BEEF +B4E5,BEF0 +B4E6,BEF1 +B4E7,BEF0 +B4E8,BEF2 +B4E9,BEF3 +B4EA,BEF4 +B4EB,BEF5 +B4EC,BEF3 +B4ED,BEF3 +B4EE,BEF3 +B4EF,BEFE +B4F0,BEF3 +B4F1,BEF6 +B4F3,BEF7 +B4F4,BEF8 +B4F5,BEF9 +B4F6,BEFA +B4F7,BEFB +B4F8,BEFC +B4F9,BEF2 +B4FA,BEFD +B4FB,BEF2 +B4FC,BEFE +B4FD,BEFB +B541,BFA1 +B542,BFA2 +B543,BFA2 +B544,BFA2 +B545,BFA3 +B546,BFA3 +B547,BFA3 +B548,BFA7 +B549,BFA4 +B54A,BFA2 +B54B,BFA5 +B54C,BFA4 +B54D,BFA4 +B54E,BFA4 +B54F,BFA6 +B550,BFA4 +B551,BFA5 +B553,BFA6 +B554,BFA6 +B555,BFA7 +B556,BFA7 +B557,BFA8 +B558,BFA7 +B559,BFA7 +B55A,BFA2 +B55B,BFA7 +B55C,BFA6 +B55D,BFA8 +B561,BFA9 +B562,BFAA +B563,BFAB +B564,BFAA +B565,BFAC +B566,BFAC +B567,BFAC +B568,BFB3 +B569,BFAD +B56A,BFAA +B56B,BFAE +B56C,BFAF +B56D,BFAD +B56E,BFAD +B56F,BFB7 +B570,BFAD +B571,BFB0 +B573,BFB1 +B574,BFB2 +B575,BFB3 +B576,BFB4 +B577,BFB5 +B578,BFB3 +B579,BFB3 +B57A,BFAA +B57B,BFB6 +B57C,BFB7 +B57D,BFB8 +B581,BFB9 +B582,BFA2 +B583,BFA2 +B584,BFA2 +B585,BFBA +B586,BFBA +B587,BFBA +B588,BFBE +B589,BFBB +B58A,BFA2 +B58B,BFBC +B58C,BFBB +B58D,BFBB +B58E,BFBB +B58F,BFBD +B590,BFBB +B591,BFBC +B593,BFBD +B594,BFBD +B595,BFBE +B596,BFBF +B597,BFA8 +B598,BFBE +B599,BFBE +B59A,BFA2 +B59B,BFBE +B59C,BFBD +B59D,BFA8 +B5A1,BFC0 +B5A2,BFC1 +B5A3,BFC1 +B5A4,BFC1 +B5A5,BFC2 +B5A6,BFC2 +B5A7,BFC2 +B5A8,BFCA +B5A9,BFC3 +B5AA,BFC4 +B5AB,BFC5 +B5AC,BFC3 +B5AD,BFC6 +B5AE,BFC3 +B5AF,BFC9 +B5B0,BFC7 +B5B1,BFC8 +B5B3,BFC9 +B5B4,BFC9 +B5B5,BFCA +B5B6,BFCA +B5B7,BFCB +B5B8,BFCA +B5B9,BFCC +B5BA,BFC1 +B5BB,BFCA +B5BC,BFC9 +B5BD,BFCB +B5C1,BFCD +B5C2,BFCE +B5C3,BFCE +B5C4,BFCE +B5C5,BFCF +B5C6,BFCF +B5C7,BFCF +B5C8,BFD3 +B5C9,BFD0 +B5CA,BFCE +B5CB,BFD1 +B5CC,BFD0 +B5CD,BFD0 +B5CE,BFD0 +B5CF,BFD2 +B5D0,BFD0 +B5D1,BFD1 +B5D3,BFD2 +B5D4,BFD2 +B5D5,BFD3 +B5D6,BFD4 +B5D7,BFD5 +B5D8,BFD3 +B5D9,BFD3 +B5DA,BFCE +B5DB,BFD3 +B5DC,BFD2 +B5DD,BFD5 +B5E1,BFD6 +B5E2,BFD7 +B5E3,BFD7 +B5E4,BFD7 +B5E5,BFD8 +B5E6,BFD8 +B5E7,BFD8 +B5E8,BFDA +B5E9,BFDF +B5EA,BFD7 +B5EB,BFD9 +B5EC,BFDF +B5ED,BFDF +B5EE,BFDF +B5EF,BFE1 +B5F0,BFDF +B5F1,BFD9 +B5F3,BFE1 +B5F4,BFE1 +B5F5,BFDA +B5F6,BFDA +B5F7,BFDB +B5F8,BFDA +B5F9,BFDA +B5FA,BFD7 +B5FB,BFDA +B5FC,BFE1 +B5FD,BFDB +B641,BFDC +B642,BFDD +B643,BFDD +B644,BFDD +B645,BFDE +B646,BFDE +B647,BFDE +B648,BFE2 +B649,BFDF +B64A,BFDD +B64B,BFE0 +B64C,BFDF +B64D,BFDF +B64E,BFDF +B64F,BFE1 +B650,BFDF +B651,BFE0 +B653,BFE1 +B654,BFE1 +B655,BFE2 +B656,BFE2 +B657,BFE3 +B658,BFE2 +B659,BFE2 +B65A,BFDD +B65B,BFE2 +B65C,BFE1 +B65D,BFE3 +B661,BFE4 +B662,BFE5 +B663,BFE5 +B664,BFE5 +B665,BFE6 +B666,BFE6 +B667,BFE6 +B668,BFEA +B669,BFE7 +B66A,BFE5 +B66B,BFE8 +B66C,BFE7 +B66D,BFE7 +B66E,BFE7 +B66F,BFE9 +B670,BFE7 +B671,BFE8 +B673,BFE9 +B674,BFE9 +B675,BFEA +B676,BFEA +B677,BFEB +B678,BFEA +B679,BFEA +B67A,BFE5 +B67B,BFEA +B67C,BFE9 +B67D,BFEB +B681,BFEC +B682,BFED +B683,BFED +B684,BFED +B685,BFEE +B686,BFEE +B687,BFEE +B688,BFF4 +B689,BFEF +B68A,BFF0 +B68B,BFF1 +B68C,BFEF +B68D,BFEF +B68E,BFEF +B68F,BFF3 +B690,BFEF +B691,BFF2 +B693,BFF3 +B694,BFF3 +B695,BFF4 +B696,BFF4 +B697,BFF5 +B698,BFF4 +B699,BFF4 +B69A,BFED +B69B,BFF4 +B69C,BFF3 +B69D,BFF5 +B6A1,BFF6 +B6A2,BFF7 +B6A3,BFF7 +B6A4,BFF7 +B6A5,BFF8 +B6A6,BFF8 +B6A7,BFF8 +B6A8,BFFC +B6A9,BFF9 +B6AA,BFF7 +B6AB,BFFA +B6AC,BFF9 +B6AD,BFF9 +B6AE,BFF9 +B6AF,BFFB +B6B0,BFF9 +B6B1,BFFA +B6B3,BFFB +B6B4,BFFB +B6B5,BFFC +B6B6,BFFC +B6B7,BFFD +B6B8,BFFC +B6B9,BFFC +B6BA,BFF7 +B6BB,BFFC +B6BC,BFFB +B6BD,BFFD +B6C1,BFFE +B6C2,C0A1 +B6C3,C0A1 +B6C4,C0A1 +B6C5,C0A2 +B6C6,C0A2 +B6C7,C0A2 +B6C8,BFDA +B6C9,C0A3 +B6CA,C0A1 +B6CB,C0A4 +B6CC,C0A3 +B6CD,C0A3 +B6CE,C0A3 +B6CF,C0A5 +B6D0,C0A3 +B6D1,C0A4 +B6D3,C0A5 +B6D4,C0A5 +B6D5,BFDA +B6D6,BFDA +B6D7,C0A6 +B6D8,BFDA +B6D9,BFDA +B6DA,C0A1 +B6DB,BFDA +B6DC,C0A5 +B6DD,C0A6 +B6E1,C0A7 +B6E2,C0A8 +B6E3,C0A8 +B6E4,C0A8 +B6E5,C0A9 +B6E6,C0A9 +B6E7,C0A9 +B6E8,C0AD +B6E9,C0AA +B6EA,C0A8 +B6EB,C0AB +B6EC,C0AA +B6ED,C0AA +B6EE,C0AA +B6EF,C0AC +B6F0,C0AA +B6F1,C0AB +B6F3,C0AC +B6F4,C0AC +B6F5,C0AD +B6F6,C0AD +B6F7,C0AE +B6F8,C0AD +B6F9,C0AD +B6FA,C0A8 +B6FB,C0AD +B6FC,C0AC +B6FD,C0AE +B741,C0AF +B742,C0B0 +B743,C0B0 +B744,C0B0 +B745,C0B1 +B746,C0B1 +B747,C0B1 +B748,C0B5 +B749,C0B2 +B74A,C0B0 +B74B,C0B3 +B74C,C0B2 +B74D,C0B2 +B74E,C0B2 +B74F,C0B4 +B750,C0B2 +B751,C0B3 +B753,C0B4 +B754,C0B4 +B755,C0B5 +B756,C0B5 +B757,C0B6 +B758,C0B5 +B759,C0B7 +B75A,C0B0 +B75B,C0B5 +B75C,C0B4 +B75D,C0B6 +B761,C0B8 +B762,C0B9 +B763,C0B9 +B764,C0B9 +B765,C0BA +B766,C0BA +B767,C0BA +B768,C0BF +B769,C0BB +B76A,C0B9 +B76B,C0BD +B76C,C0BB +B76D,C0BB +B76E,C0BB +B76F,C0BC +B770,C0BB +B771,C0BD +B773,C0BE +B774,C0BE +B775,C0BF +B776,C0BF +B777,C0C0 +B778,C0C1 +B779,C0C2 +B77A,C0C3 +B77B,C0C4 +B77C,C0C5 +B77D,C0C6 +B781,C0C7 +B782,C0CD +B783,C0CD +B784,C0CD +B785,C0C8 +B786,C0C8 +B787,C0C8 +B788,C0CB +B789,C0C9 +B78A,C0D0 +B78B,C0CA +B78C,C0C9 +B78D,C0C9 +B78E,C0C9 +B78F,C0D9 +B790,C0C9 +B791,C0CA +B793,C0D4 +B794,C0D4 +B795,C0CB +B796,C0CB +B797,C0D7 +B798,C0CB +B799,C0CB +B79A,C0CD +B79B,C0CB +B79C,C0D9 +B79D,C0D7 +B7A1,C0CC +B7A2,C0CD +B7A3,C0CD +B7A4,C0CD +B7A5,C0CE +B7A6,C0CE +B7A7,C0CE +B7A8,C0D5 +B7A9,C0CF +B7AA,C0D0 +B7AB,C0D1 +B7AC,C0CF +B7AD,C0CF +B7AE,C0CF +B7AF,C0D9 +B7B0,C0D2 +B7B1,C0D3 +B7B3,C0D4 +B7B4,C0D4 +B7B5,C0D5 +B7B6,C0D6 +B7B7,C0D7 +B7B8,C0D8 +B7B9,C0D5 +B7BA,C0CD +B7BB,C0D5 +B7BC,C0D9 +B7BD,C0D7 +B841,A1A1 +B861,C0DA +B862,C0DB +B863,C0DB +B864,C0DB +B865,C0DC +B866,C0DC +B867,C0DD +B868,C0DE +B869,C0DF +B86A,C0DB +B86B,C0E0 +B86C,C0DF +B86D,C0DF +B86E,C0DF +B86F,C0E2 +B870,C0DF +B871,C0E1 +B873,C0E2 +B874,C0E2 +B875,C0E3 +B876,C0E4 +B877,C0E5 +B878,C0E6 +B879,C0DE +B87A,C0DB +B87B,C0DE +B87C,C0E2 +B87D,C0E5 +B881,C0E7 +B882,C0E8 +B883,C0E8 +B884,C0E8 +B885,C0E9 +B886,C0E9 +B887,C0E9 +B888,C0ED +B889,C0EA +B88A,C0E8 +B88B,C0EB +B88C,C0EA +B88D,C0EA +B88E,C0EA +B88F,C0EC +B890,C0EA +B891,C0EB +B893,C0EC +B894,C0EC +B895,C0ED +B896,C0EE +B897,C0EF +B898,C0ED +B899,C0ED +B89A,C0E8 +B89B,C0ED +B89C,C0EC +B89D,C0EF +B8A1,C0F0 +B8A2,C0F1 +B8A3,C0F1 +B8A4,C0F1 +B8A5,C0F2 +B8A6,C0F2 +B8A7,C0F3 +B8A8,C0DE +B8A9,C0F4 +B8AA,C0F1 +B8AB,C0F5 +B8AC,C0F4 +B8AD,C0F4 +B8AE,C0F4 +B8AF,C0E2 +B8B0,C0F4 +B8B1,C0F5 +B8B3,C0E2 +B8B4,C0E2 +B8B5,C0E3 +B8B6,C0E4 +B8B7,C0F6 +B8B8,C0E6 +B8B9,C0DE +B8BA,C0F1 +B8BB,C0DE +B8BC,C0E2 +B8BD,C0F6 +B8C1,C0F7 +B8C2,C0E8 +B8C3,C0E8 +B8C4,C0E8 +B8C5,C0F8 +B8C6,C0F8 +B8C7,C0F8 +B8C8,C0ED +B8C9,C0F9 +B8CA,C0E8 +B8CB,C0EB +B8CC,C0F9 +B8CD,C0F9 +B8CE,C0F9 +B8CF,C0EC +B8D0,C0F9 +B8D1,C0EB +B8D3,C0EC +B8D4,C0EC +B8D5,C0ED +B8D6,C0EE +B8D7,C0EF +B8D8,C0ED +B8D9,C0ED +B8DA,C0E8 +B8DB,C0ED +B8DC,C0EC +B8DD,C0EF +B8E1,C0FA +B8E2,C0FB +B8E3,C0FB +B8E4,C0FB +B8E5,C0FC +B8E6,C0FC +B8E7,C0FC +B8E8,C1A3 +B8E9,C0FD +B8EA,C0FB +B8EB,C0FE +B8EC,C0FD +B8ED,C0FD +B8EE,C0FD +B8EF,C1A2 +B8F0,C0FD +B8F1,C1A1 +B8F3,C1A2 +B8F4,C1A2 +B8F5,C1A3 +B8F6,C1A3 +B8F7,C1A4 +B8F8,C1A5 +B8F9,C1A3 +B8FA,C0FB +B8FB,C1A3 +B8FC,C1A2 +B8FD,C1A4 +B941,C1A6 +B942,C1A7 +B943,C1A7 +B944,C1A7 +B945,C1A8 +B946,C1A8 +B947,C1A8 +B948,C1AC +B949,C1A9 +B94A,C1A7 +B94B,C1AA +B94C,C1A9 +B94D,C1A9 +B94E,C1A9 +B94F,C1AB +B950,C1A9 +B951,C1AA +B953,C1AB +B954,C1AB +B955,C1AC +B956,C1AC +B957,C1AD +B958,C1AC +B959,C1AC +B95A,C1A7 +B95B,C1AC +B95C,C1AB +B95D,C1AD +B961,C1AE +B962,C0FB +B963,C0FB +B964,C0FB +B965,C1AF +B966,C1AF +B967,C1AF +B968,C1B3 +B969,C1B0 +B96A,C0FB +B96B,C1B1 +B96C,C1B0 +B96D,C1B0 +B96E,C1B0 +B96F,C1B2 +B970,C1B0 +B971,C1B1 +B973,C1B2 +B974,C1B2 +B975,C1B3 +B976,C1B3 +B977,C1B4 +B978,C1B3 +B979,C1B3 +B97A,C0FB +B97B,C1B3 +B97C,C1B2 +B97D,C1B4 +B981,C1B5 +B982,C1A7 +B983,C1A7 +B984,C1A7 +B985,C0F8 +B986,C0F8 +B987,C0F8 +B988,C1AC +B989,C0F9 +B98A,C1A7 +B98B,C1AA +B98C,C0F9 +B98D,C0F9 +B98E,C0F9 +B98F,C1AB +B990,C0F9 +B991,C1AA +B993,C1AB +B994,C1AB +B995,C1AC +B996,C1AC +B997,C1AD +B998,C1AC +B999,C1AC +B99A,C1A7 +B99B,C1AC +B99C,C1AB +B99D,C1AD +B9A1,C1B6 +B9A2,C1B7 +B9A3,C1B7 +B9A4,C1B7 +B9A5,C1B8 +B9A6,C1B8 +B9A7,C1B8 +B9A8,C1BD +B9A9,C1B9 +B9AA,C1B7 +B9AB,C1BA +B9AC,C1B9 +B9AD,C1B9 +B9AE,C1B9 +B9AF,C1BC +B9B0,C1B9 +B9B1,C1BB +B9B3,C1BC +B9B4,C1BC +B9B5,C1BD +B9B6,C1BD +B9B7,C1BE +B9B8,C1BF +B9B9,C1C0 +B9BA,C1B7 +B9BB,C1BD +B9BC,C1BC +B9BD,C1C1 +B9C1,C1C2 +B9C2,C1C3 +B9C3,C1C3 +B9C4,C1C3 +B9C5,C0DC +B9C6,C0DC +B9C7,C0DD +B9C8,C1C6 +B9C9,C1C4 +B9CA,C1C3 +B9CB,C0E0 +B9CC,C1C4 +B9CD,C1C4 +B9CE,C1C4 +B9CF,C1C5 +B9D0,C1C4 +B9D1,C0E1 +B9D3,C1C5 +B9D4,C1C5 +B9D5,C1C6 +B9D6,C1C6 +B9D7,C1C7 +B9D8,C1C6 +B9D9,C1C6 +B9DA,C1C3 +B9DB,C1C6 +B9DC,C1C5 +B9DD,C1C7 +B9E1,C1C8 +B9E2,C0E8 +B9E3,C0E8 +B9E4,C0E8 +B9E5,C1CC +B9E6,C1CC +B9E7,C1CC +B9E8,C1C9 +B9E9,C1CD +B9EA,C0E8 +B9EB,C1CE +B9EC,C1CD +B9ED,C1CD +B9EE,C1CD +B9EF,C1CF +B9F0,C1CD +B9F1,C1CE +B9F3,C1CF +B9F4,C1CF +B9F5,C1C9 +B9F6,C1C9 +B9F7,C1CA +B9F8,C1C9 +B9F9,C1C9 +B9FA,C0E8 +B9FB,C1C9 +B9FC,C1CF +B9FD,C1CA +BA41,C1CB +BA42,C1F7 +BA43,C1F7 +BA44,C1F7 +BA45,C1CC +BA46,C1CC +BA47,C1CC +BA48,C1D0 +BA49,C1CD +BA4A,C1F7 +BA4B,C1CE +BA4C,C1CD +BA4D,C1CD +BA4E,C1CD +BA4F,C1CF +BA50,C1CD +BA51,C1CE +BA53,C1CF +BA54,C1CF +BA55,C1D0 +BA56,C1D0 +BA57,C1D1 +BA58,C1D0 +BA59,C1D0 +BA5A,C1F7 +BA5B,C1D0 +BA5C,C1CF +BA5D,C1D1 +BA61,C1D2 +BA62,C1D3 +BA63,C1D3 +BA64,C1D3 +BA65,C1D4 +BA66,C1D4 +BA67,C1D4 +BA68,C1BD +BA69,C1B9 +BA6A,C1D3 +BA6B,C1BA +BA6C,C1B9 +BA6D,C1B9 +BA6E,C1B9 +BA6F,C1BC +BA70,C1B9 +BA71,C1BB +BA73,C1BC +BA74,C1BC +BA75,C1BD +BA76,C1BD +BA77,C1D5 +BA78,C1BF +BA79,C1C0 +BA7A,C1D3 +BA7B,C1BD +BA7C,C1BC +BA7D,C1C1 +BA81,C1D6 +BA82,C1D7 +BA83,C1D7 +BA84,C1D7 +BA85,C1D8 +BA86,C1D8 +BA87,C1D8 +BA88,C1DE +BA89,C1D9 +BA8A,C1DA +BA8B,C1DB +BA8C,C1D9 +BA8D,C1D9 +BA8E,C1D9 +BA8F,C1DD +BA90,C1D9 +BA91,C1DC +BA93,C1DD +BA94,C1DD +BA95,C1DE +BA96,C1DE +BA97,C1DF +BA98,C1DE +BA99,C1DE +BA9A,C1D7 +BA9B,C1DE +BA9C,C1DD +BA9D,C1DF +BAA1,C1E0 +BAA2,C0FB +BAA3,C0FB +BAA4,C0FB +BAA5,C0FC +BAA6,C0FC +BAA7,C0FC +BAA8,C1E1 +BAA9,C0FD +BAAA,C0FB +BAAB,C0FE +BAAC,C0FD +BAAD,C0FD +BAAE,C0FD +BAAF,C1A2 +BAB0,C0FD +BAB1,C1A1 +BAB3,C1A2 +BAB4,C1A2 +BAB5,C1E1 +BAB6,C1E1 +BAB7,C1A4 +BAB8,C1E1 +BAB9,C1E1 +BABA,C0FB +BABB,C1E1 +BABC,C1A2 +BABD,C1A4 +BAC1,C1E2 +BAC2,C1A7 +BAC3,C1A7 +BAC4,C1A7 +BAC5,C1A8 +BAC6,C1A8 +BAC7,C1A8 +BAC8,C1C9 +BAC9,C1A9 +BACA,C1A7 +BACB,C1AA +BACC,C1A9 +BACD,C1A9 +BACE,C1A9 +BACF,C1AB +BAD0,C1A9 +BAD1,C1AA +BAD3,C1AB +BAD4,C1AB +BAD5,C1C9 +BAD6,C1C9 +BAD7,C1CA +BAD8,C1C9 +BAD9,C1C9 +BADA,C1A7 +BADB,C1C9 +BADC,C1AB +BADD,C1CA +BAE1,C1E3 +BAE2,C1E4 +BAE3,C1E4 +BAE4,C1E4 +BAE5,C1E5 +BAE6,C1E5 +BAE7,C1E5 +BAE8,C1E9 +BAE9,C1E6 +BAEA,C1E4 +BAEB,C1E7 +BAEC,C1E6 +BAED,C1E6 +BAEE,C1E6 +BAEF,C1E8 +BAF0,C1E6 +BAF1,C1E7 +BAF3,C1E8 +BAF4,C1E8 +BAF5,C1E9 +BAF6,C1E9 +BAF7,C2A1 +BAF8,C1E9 +BAF9,C1E9 +BAFA,C1E4 +BAFB,C1E9 +BAFC,C1E8 +BAFD,C2A1 +BB41,C1EA +BB42,C1D7 +BB43,C1D7 +BB44,C1D7 +BB45,C1EB +BB46,C1EB +BB47,C1EB +BB48,C1DE +BB49,C1EC +BB4A,C1DA +BB4B,C1ED +BB4C,C1EC +BB4D,C1EC +BB4E,C1EC +BB4F,C1DD +BB50,C1EC +BB51,C1ED +BB53,C1DD +BB54,C1DD +BB55,C1DE +BB56,C1DE +BB57,C1DF +BB58,C1DE +BB59,C1DE +BB5A,C1D7 +BB5B,C1DE +BB5C,C1DD +BB5D,C1DF +BB61,C1EE +BB62,C1EF +BB63,C1EF +BB64,C1EF +BB65,C1F0 +BB66,C1F0 +BB67,C1F0 +BB68,C1F4 +BB69,C1F1 +BB6A,C1EF +BB6B,C1F2 +BB6C,C1F1 +BB6D,C1F1 +BB6E,C1F1 +BB6F,C1F3 +BB70,C1F1 +BB71,C1F2 +BB73,C1F3 +BB74,C1F3 +BB75,C1F4 +BB76,C1F4 +BB77,C1F5 +BB78,C1F4 +BB79,C1F4 +BB7A,C1EF +BB7B,C1F4 +BB7C,C1F3 +BB7D,C1F5 +BB81,C1F6 +BB82,C1F7 +BB83,C1F7 +BB84,C1F7 +BB85,C1F8 +BB86,C1F8 +BB87,C1F8 +BB88,C1F9 +BB89,C1FA +BB8A,C1F7 +BB8B,C1FB +BB8C,C1FA +BB8D,C1FA +BB8E,C1FA +BB8F,C2A4 +BB90,C1FA +BB91,C1FC +BB93,C1FD +BB94,C1FD +BB95,C1FE +BB96,C1F9 +BB97,C2A1 +BB98,C2A2 +BB99,C1F9 +BB9A,C1F7 +BB9B,C2A3 +BB9C,C2A4 +BB9D,C2A1 +BBA1,C1F6 +BBA2,C1F7 +BBA3,C1F7 +BBA4,C1F7 +BBA5,C1F8 +BBA6,C1F8 +BBA7,C1F8 +BBA8,C1F9 +BBA9,C1FA +BBAA,C1F7 +BBAB,C1FB +BBAC,C1FA +BBAD,C1FA +BBAE,C1FA +BBAF,C2A4 +BBB0,C1FA +BBB1,C1FC +BBB3,C1FD +BBB4,C1FD +BBB5,C1FE +BBB6,C1F9 +BBB7,C2A1 +BBB8,C2A2 +BBB9,C1F9 +BBBA,C1F7 +BBBB,C2A3 +BBBC,C2A4 +BBBD,C2A1 +BC41,A1A1 +BC61,C2A5 +BC62,C2A6 +BC63,C2A6 +BC64,C2A6 +BC65,C2A7 +BC66,C2A7 +BC67,C2A8 +BC68,C2AD +BC69,C2A9 +BC6A,C2A6 +BC6B,C2AB +BC6C,C2AA +BC6D,C2A9 +BC6E,C2A9 +BC6F,C2AC +BC70,C2A9 +BC71,C2AB +BC73,C2AC +BC74,C2AC +BC75,C2AD +BC76,C2AE +BC77,C2AF +BC78,C2AD +BC79,C2AD +BC7A,C2A6 +BC7B,C2AD +BC7C,C2AC +BC7D,C2AF +BC81,C2B0 +BC82,C2B1 +BC83,C2B1 +BC84,C2B1 +BC85,C2B2 +BC86,C2B2 +BC87,C2B2 +BC88,C2B6 +BC89,C2B3 +BC8A,C2B1 +BC8B,C2B4 +BC8C,C2B3 +BC8D,C2B3 +BC8E,C2B3 +BC8F,C2B5 +BC90,C2B3 +BC91,C2B4 +BC93,C2B5 +BC94,C2B5 +BC95,C2B6 +BC96,C2B7 +BC97,C2B8 +BC98,C2B6 +BC99,C2B6 +BC9A,C2B1 +BC9B,C2B6 +BC9C,C2B5 +BC9D,C2B8 +BCA1,C2B9 +BCA2,C0F1 +BCA3,C0F1 +BCA4,C0F1 +BCA5,C2BA +BCA6,C2BA +BCA7,C2BA +BCA8,C2AD +BCA9,C0F4 +BCAA,C0F1 +BCAB,C0F5 +BCAC,C0F4 +BCAD,C0F4 +BCAE,C0F4 +BCAF,C2AC +BCB0,C0F4 +BCB1,C0F5 +BCB3,C2AC +BCB4,C2AC +BCB5,C2AD +BCB6,C2AE +BCB7,C2BB +BCB8,C2AD +BCB9,C2AD +BCBA,C0F1 +BCBB,C2AD +BCBC,C2AC +BCBD,C2BB +BCC1,C0F7 +BCC2,C2B1 +BCC3,C2B1 +BCC4,C2B1 +BCC5,C0F8 +BCC6,C0F8 +BCC7,C0F8 +BCC8,C2B6 +BCC9,C0F9 +BCCA,C2B1 +BCCB,C2B4 +BCCC,C0F9 +BCCD,C0F9 +BCCE,C0F9 +BCCF,C2B5 +BCD0,C0F9 +BCD1,C2B4 +BCD3,C2B5 +BCD4,C2B5 +BCD5,C2B6 +BCD6,C2B7 +BCD7,C2B8 +BCD8,C2B6 +BCD9,C2B6 +BCDA,C2B1 +BCDB,C2B6 +BCDC,C2B5 +BCDD,C2B8 +BCE1,C2BC +BCE2,C2BD +BCE3,C2BD +BCE4,C2BD +BCE5,C2BE +BCE6,C2BE +BCE7,C2BE +BCE8,C2C2 +BCE9,C2BF +BCEA,C2BD +BCEB,C2C0 +BCEC,C2BF +BCED,C2BF +BCEE,C2BF +BCEF,C2C1 +BCF0,C2BF +BCF1,C2C0 +BCF3,C2C1 +BCF4,C2C1 +BCF5,C2C2 +BCF6,C2C3 +BCF7,C2C4 +BCF8,C2C2 +BCF9,C2C2 +BCFA,C2BD +BCFB,C2C2 +BCFC,C2C1 +BCFD,C2C4 +BD41,C2C5 +BD42,C2B1 +BD43,C2B1 +BD44,C2B1 +BD45,C2B2 +BD46,C2B2 +BD47,C2B2 +BD48,C2B6 +BD49,C2B3 +BD4A,C2B1 +BD4B,C2B4 +BD4C,C2B3 +BD4D,C2B3 +BD4E,C2B3 +BD4F,C2B5 +BD50,C2B3 +BD51,C2B4 +BD53,C2B5 +BD54,C2B5 +BD55,C2B6 +BD56,C2B7 +BD57,C2C6 +BD58,C2B6 +BD59,C2B6 +BD5A,C2B1 +BD5B,C2B6 +BD5C,C2B5 +BD5D,C2C6 +BD61,C2C7 +BD62,C2BD +BD63,C2BD +BD64,C2BD +BD65,C1AF +BD66,C1AF +BD67,C1AF +BD68,C2C8 +BD69,C1B0 +BD6A,C2BD +BD6B,C1B1 +BD6C,C1B0 +BD6D,C1B0 +BD6E,C1B0 +BD6F,C1B2 +BD70,C1B0 +BD71,C1B1 +BD73,C1B2 +BD74,C1B2 +BD75,C2C8 +BD76,C2C8 +BD77,C1B4 +BD78,C2C8 +BD79,C2C8 +BD7A,C2BD +BD7B,C2C8 +BD7C,C1B2 +BD7D,C1B4 +BD81,C1B5 +BD82,C1A7 +BD83,C1A7 +BD84,C1A7 +BD85,C0F8 +BD86,C0F8 +BD87,C0F8 +BD88,C1AC +BD89,C0F9 +BD8A,C1A7 +BD8B,C1AA +BD8C,C0F9 +BD8D,C0F9 +BD8E,C0F9 +BD8F,C1AB +BD90,C0F9 +BD91,C1AA +BD93,C1AB +BD94,C1AB +BD95,C1AC +BD96,C1AC +BD97,C2C6 +BD98,C1AC +BD99,C1AC +BD9A,C1A7 +BD9B,C1AC +BD9C,C1AB +BD9D,C2C6 +BDA1,C2C9 +BDA2,C2CA +BDA3,C2CA +BDA4,C2CA +BDA5,C2CB +BDA6,C2CB +BDA7,C2CB +BDA8,C2CF +BDA9,C2CC +BDAA,C2CA +BDAB,C2CD +BDAC,C2CC +BDAD,C2CC +BDAE,C2CC +BDAF,C2CE +BDB0,C2CC +BDB1,C2CD +BDB3,C2CE +BDB4,C2CE +BDB5,C2CF +BDB6,C2CF +BDB7,C2D0 +BDB8,C2CF +BDB9,C2D1 +BDBA,C2CA +BDBB,C2CF +BDBC,C2CE +BDBD,C1C1 +BDC1,C2D2 +BDC2,C2D3 +BDC3,C2D3 +BDC4,C2D3 +BDC5,C2A7 +BDC6,C2A7 +BDC7,C2A8 +BDC8,C2D5 +BDC9,C2D4 +BDCA,C2D3 +BDCB,C2AB +BDCC,C2D4 +BDCD,C2D4 +BDCE,C2D4 +BDCF,C1C5 +BDD0,C2D4 +BDD1,C2AB +BDD3,C1C5 +BDD4,C1C5 +BDD5,C2D5 +BDD6,C2D5 +BDD7,C1C7 +BDD8,C2D5 +BDD9,C2D5 +BDDA,C2D3 +BDDB,C2D5 +BDDC,C1C5 +BDDD,C1C7 +BDE1,C2D6 +BDE2,C2B1 +BDE3,C2B1 +BDE4,C2B1 +BDE5,C2D9 +BDE6,C2D9 +BDE7,C2D9 +BDE8,C2D7 +BDE9,C2DA +BDEA,C2B1 +BDEB,C2DB +BDEC,C2DA +BDED,C2DA +BDEE,C2DA +BDEF,C2DC +BDF0,C2DA +BDF1,C2DB +BDF3,C2DC +BDF4,C2DC +BDF5,C2D7 +BDF6,C2D7 +BDF7,C1CA +BDF8,C2D7 +BDF9,C2D7 +BDFA,C2B1 +BDFB,C2D7 +BDFC,C2DC +BDFD,C1CA +BE41,C2D8 +BE42,C2EF +BE43,C2EF +BE44,C2EF +BE45,C2D9 +BE46,C2D9 +BE47,C2D9 +BE48,C2D7 +BE49,C2DA +BE4A,C2EF +BE4B,C2DB +BE4C,C2DA +BE4D,C2DA +BE4E,C2DA +BE4F,C2DC +BE50,C2DA +BE51,C2DB +BE53,C2DC +BE54,C2DC +BE55,C2D7 +BE56,C2D7 +BE57,C1D1 +BE58,C2D7 +BE59,C2D7 +BE5A,C2EF +BE5B,C2D7 +BE5C,C2DC +BE5D,C2F6 +BE61,C1D2 +BE62,C1D3 +BE63,C1D3 +BE64,C1D3 +BE65,C1D4 +BE66,C1D4 +BE67,C1D4 +BE68,C2CF +BE69,C2CC +BE6A,C1D3 +BE6B,C2CD +BE6C,C2CC +BE6D,C2CC +BE6E,C2CC +BE6F,C2CE +BE70,C2CC +BE71,C2CD +BE73,C2CE +BE74,C2CE +BE75,C2CF +BE76,C2CF +BE77,C2DD +BE78,C2CF +BE79,C2D1 +BE7A,C1D3 +BE7B,C2CF +BE7C,C2CE +BE7D,C2DD +BE81,C2DE +BE82,C2DF +BE83,C2DF +BE84,C2DF +BE85,C2E0 +BE86,C2E0 +BE87,C2E0 +BE88,C1DE +BE89,C2E1 +BE8A,C2DF +BE8B,C2E2 +BE8C,C2E1 +BE8D,C2E1 +BE8E,C2E1 +BE8F,C2E3 +BE90,C2E1 +BE91,C2E2 +BE93,C2E3 +BE94,C2E3 +BE95,C1DE +BE96,C1DE +BE97,C2E4 +BE98,C1DE +BE99,C1DE +BE9A,C2DF +BE9B,C1DE +BE9C,C2E3 +BE9D,C2E4 +BEA1,C2E5 +BEA2,C2BD +BEA3,C2BD +BEA4,C2BD +BEA5,C2BE +BEA6,C2BE +BEA7,C2BE +BEA8,C2E6 +BEA9,C2BF +BEAA,C2BD +BEAB,C2C0 +BEAC,C2BF +BEAD,C2BF +BEAE,C2BF +BEAF,C2C1 +BEB0,C2BF +BEB1,C2C0 +BEB3,C2C1 +BEB4,C2C1 +BEB5,C2E6 +BEB6,C2E6 +BEB7,C2E7 +BEB8,C2E6 +BEB9,C2E6 +BEBA,C2BD +BEBB,C2E6 +BEBC,C2C1 +BEBD,C2E7 +BEC1,C1E2 +BEC2,C1A7 +BEC3,C1A7 +BEC4,C1A7 +BEC5,C1A8 +BEC6,C1A8 +BEC7,C1A8 +BEC8,C2D7 +BEC9,C1A9 +BECA,C1A7 +BECB,C1AA +BECC,C1A9 +BECD,C1A9 +BECE,C1A9 +BECF,C1AB +BED0,C1A9 +BED1,C1AA +BED3,C1AB +BED4,C1AB +BED5,C2D7 +BED6,C2D7 +BED7,C2C6 +BED8,C2D7 +BED9,C2D7 +BEDA,C1A7 +BEDB,C2D7 +BEDC,C1AB +BEDD,C2C6 +BEE1,C2E8 +BEE2,C1E4 +BEE3,C1E4 +BEE4,C1E4 +BEE5,C1E5 +BEE6,C1E5 +BEE7,C1E5 +BEE8,C1E9 +BEE9,C1E6 +BEEA,C1E4 +BEEB,C1E7 +BEEC,C1E6 +BEED,C1E6 +BEEE,C1E6 +BEEF,C1E8 +BEF0,C1E6 +BEF1,C1E7 +BEF3,C1E8 +BEF4,C1E8 +BEF5,C1E9 +BEF6,C1E9 +BEF7,C2F4 +BEF8,C1E9 +BEF9,C1E9 +BEFA,C1E4 +BEFB,C1E9 +BEFC,C1E8 +BEFD,C2F6 +BF41,C2E9 +BF42,C2DF +BF43,C2DF +BF44,C2DF +BF45,C1EB +BF46,C1EB +BF47,C1EB +BF48,C1DE +BF49,C1EC +BF4A,C2DF +BF4B,C1ED +BF4C,C1EC +BF4D,C1EC +BF4E,C1EC +BF4F,C2E3 +BF50,C1EC +BF51,C1ED +BF53,C2E3 +BF54,C2E3 +BF55,C1DE +BF56,C1DE +BF57,C2E4 +BF58,C1DE +BF59,C1DE +BF5A,C2DF +BF5B,C1DE +BF5C,C2E3 +BF5D,C2E4 +BF61,C2EA +BF62,C1EF +BF63,C1EF +BF64,C1EF +BF65,C1F0 +BF66,C1F0 +BF67,C1F0 +BF68,C2EC +BF69,C1F1 +BF6A,C1EF +BF6B,C2EB +BF6C,C1F1 +BF6D,C1F1 +BF6E,C1F1 +BF6F,C1F3 +BF70,C1F1 +BF71,C2EB +BF73,C1F3 +BF74,C1F3 +BF75,C2EC +BF76,C2EC +BF77,C2ED +BF78,C2EC +BF79,C2EC +BF7A,C1EF +BF7B,C2EC +BF7C,C1F3 +BF7D,C2ED +BF81,C2EE +BF82,C2EF +BF83,C2EF +BF84,C2EF +BF85,C2F0 +BF86,C2F0 +BF87,C2F0 +BF88,C2F5 +BF89,C2F1 +BF8A,C2EF +BF8B,C2F2 +BF8C,C2F1 +BF8D,C2F1 +BF8E,C2F1 +BF8F,C2F3 +BF90,C2F1 +BF91,C2F2 +BF93,C2F3 +BF94,C2F3 +BF95,C2F5 +BF96,C2F5 +BF97,C2F4 +BF98,C2F5 +BF99,C2F5 +BF9A,C2EF +BF9B,C2F5 +BF9C,C2F3 +BF9D,C2F6 +BFA1,C2EE +BFA2,C2EF +BFA3,C2EF +BFA4,C2EF +BFA5,C2F0 +BFA6,C2F0 +BFA7,C2F0 +BFA8,C2F5 +BFA9,C2F1 +BFAA,C2EF +BFAB,C2F2 +BFAC,C2F1 +BFAD,C2F1 +BFAE,C2F1 +BFAF,C2F3 +BFB0,C2F1 +BFB1,C2F2 +BFB3,C2F3 +BFB4,C2F3 +BFB5,C2F5 +BFB6,C2F5 +BFB7,C2F4 +BFB8,C2F5 +BFB9,C2F5 +BFBA,C2EF +BFBB,C2F5 +BFBC,C2F3 +BFBD,C2F6 +C041,A1A1 +C061,C2F7 +C062,C2F8 +C063,C2F8 +C064,C2F8 +C065,C2F9 +C066,C2F9 +C067,C2FA +C068,C2FE +C069,C2FB +C06A,C2F8 +C06B,C2FC +C06C,C2FB +C06D,C2FB +C06E,C2FB +C06F,C2FD +C070,C2FB +C071,C2FC +C073,C2FD +C074,C2FD +C075,C2FE +C076,C3A1 +C077,C3A2 +C078,C3A3 +C079,C2FE +C07A,C2F8 +C07B,C2FE +C07C,C2FD +C07D,C3A2 +C081,C3A4 +C082,C3A5 +C083,C3A5 +C084,C3A5 +C085,C3A6 +C086,C3A6 +C087,C3A6 +C088,C3AA +C089,C3A7 +C08A,C3A5 +C08B,C3A8 +C08C,C3A7 +C08D,C3A7 +C08E,C3A7 +C08F,C3A9 +C090,C3A7 +C091,C3A8 +C093,C3A9 +C094,C3A9 +C095,C3AA +C096,C3AB +C097,C3AC +C098,C3AA +C099,C3AA +C09A,C3A5 +C09B,C3AA +C09C,C3A9 +C09D,C3AC +C0A1,C3AD +C0A2,C2F8 +C0A3,C2F8 +C0A4,C2F8 +C0A5,C3AE +C0A6,C3AE +C0A7,C3AF +C0A8,C2FE +C0A9,C3B0 +C0AA,C2F8 +C0AB,C3B1 +C0AC,C3B0 +C0AD,C3B0 +C0AE,C3B0 +C0AF,C2FD +C0B0,C3B0 +C0B1,C3B1 +C0B3,C2FD +C0B4,C2FD +C0B5,C2FE +C0B6,C3A1 +C0B7,C3B2 +C0B8,C3A3 +C0B9,C2FE +C0BA,C2F8 +C0BB,C2FE +C0BC,C2FD +C0BD,C3B2 +C0C1,C3C7 +C0C2,C3A5 +C0C3,C3A5 +C0C4,C3A5 +C0C5,C3C8 +C0C6,C3C8 +C0C7,C3C8 +C0C8,C3AA +C0C9,C3A7 +C0CA,C3A5 +C0CB,C3A8 +C0CC,C3A7 +C0CD,C3A7 +C0CE,C3A7 +C0CF,C3A9 +C0D0,C3A7 +C0D1,C3A8 +C0D3,C3A9 +C0D4,C3A9 +C0D5,C3AA +C0D6,C3AB +C0D7,C3C9 +C0D8,C3AA +C0D9,C3AA +C0DA,C3A5 +C0DB,C3AA +C0DC,C3A9 +C0DD,C3C9 +C0E1,C3B3 +C0E2,C3B4 +C0E3,C3B4 +C0E4,C3B4 +C0E5,C3B5 +C0E6,C3B5 +C0E7,C3B5 +C0E8,C3B9 +C0E9,C3B6 +C0EA,C3B4 +C0EB,C3B7 +C0EC,C3B6 +C0ED,C3B6 +C0EE,C3B6 +C0EF,C3B8 +C0F0,C3B6 +C0F1,C3B7 +C0F3,C3B8 +C0F4,C3B8 +C0F5,C3B9 +C0F6,C3BA +C0F7,C3BB +C0F8,C3B9 +C0F9,C3B9 +C0FA,C3B4 +C0FB,C3B9 +C0FC,C3B8 +C0FD,C3BB +C141,C3BC +C142,C3BD +C143,C3BD +C144,C3BD +C145,C3BE +C146,C3BE +C147,C3BE +C148,C3C2 +C149,C3BF +C14A,C3BD +C14B,C3C0 +C14C,C3BF +C14D,C3BF +C14E,C3BF +C14F,C3C1 +C150,C3BF +C151,C3C0 +C153,C3C1 +C154,C3C1 +C155,C3C2 +C156,C3C2 +C157,C3C3 +C158,C3C2 +C159,C3C2 +C15A,C3BD +C15B,C3C2 +C15C,C3C1 +C15D,C3C3 +C161,C3C4 +C162,C3B4 +C163,C3B4 +C164,C3B4 +C165,C3C5 +C166,C3C5 +C167,C3C5 +C168,C3C6 +C169,C3B6 +C16A,C3B4 +C16B,C3B7 +C16C,C3B6 +C16D,C3B6 +C16E,C3B6 +C16F,C3B8 +C170,C3B6 +C171,C3B7 +C173,C3B8 +C174,C3B8 +C175,C3C6 +C176,C3C6 +C177,C3BB +C178,C3C6 +C179,C3C6 +C17A,C3B4 +C17B,C3C6 +C17C,C3B8 +C17D,C3BB +C181,C3C7 +C182,C3BD +C183,C3BD +C184,C3BD +C185,C3C8 +C186,C3C8 +C187,C3C8 +C188,C3C2 +C189,C3BF +C18A,C3BD +C18B,C3C0 +C18C,C3BF +C18D,C3BF +C18E,C3BF +C18F,C3C1 +C190,C3BF +C191,C3C0 +C193,C3C1 +C194,C3C1 +C195,C3C2 +C196,C3C2 +C197,C3C9 +C198,C3C2 +C199,C3C2 +C19A,C3BD +C19B,C3C2 +C19C,C3C1 +C19D,C3C9 +C1A1,C3CA +C1A2,C3CB +C1A3,C3CB +C1A4,C3CB +C1A5,C3CC +C1A6,C3CC +C1A7,C3CC +C1A8,C3D0 +C1A9,C3CD +C1AA,C3CB +C1AB,C3CE +C1AC,C3CD +C1AD,C3CD +C1AE,C3CD +C1AF,C3CF +C1B0,C3CD +C1B1,C3CE +C1B3,C3CF +C1B4,C3CF +C1B5,C3D0 +C1B6,C3D0 +C1B7,C3D1 +C1B8,C3D0 +C1B9,C3D0 +C1BA,C3CB +C1BB,C3D0 +C1BC,C3CF +C1BD,C3D1 +C1C1,C3D2 +C1C2,C2F8 +C1C3,C2F8 +C1C4,C2F8 +C1C5,C3D3 +C1C6,C3D3 +C1C7,C3D3 +C1C8,C2FE +C1C9,C3D4 +C1CA,C2F8 +C1CB,C2FC +C1CC,C3D4 +C1CD,C3D4 +C1CE,C3D4 +C1CF,C2FD +C1D0,C3D4 +C1D1,C2FC +C1D3,C2FD +C1D4,C2FD +C1D5,C2FE +C1D6,C3A1 +C1D7,C3D5 +C1D8,C3A3 +C1D9,C2FE +C1DA,C2F8 +C1DB,C2FE +C1DC,C2FD +C1DD,C3D5 +C1E1,C3D6 +C1E2,C3A5 +C1E3,C3A5 +C1E4,C3A5 +C1E5,C3D7 +C1E6,C3D7 +C1E7,C3D7 +C1E8,C3DB +C1E9,C3D8 +C1EA,C3A5 +C1EB,C3D9 +C1EC,C3D8 +C1ED,C3D8 +C1EE,C3D8 +C1EF,C3DA +C1F0,C3D8 +C1F1,C3D9 +C1F3,C3DA +C1F4,C3DA +C1F5,C3DB +C1F6,C3DB +C1F7,C3DC +C1F8,C3DB +C1F9,C3DB +C1FA,C3A5 +C1FB,C3DB +C1FC,C3DA +C1FD,C3DC +C241,C3D6 +C242,C4A2 +C243,C4A2 +C244,C4A2 +C245,C3D7 +C246,C3D7 +C247,C3D7 +C248,C3DB +C249,C3D8 +C24A,C4A6 +C24B,C3D9 +C24C,C3D8 +C24D,C3D8 +C24E,C3D8 +C24F,C3DA +C250,C3D8 +C251,C3D9 +C253,C3DA +C254,C3DA +C255,C3DB +C256,C3DB +C257,C3DC +C258,C3DB +C259,C3DB +C25A,C4A2 +C25B,C3DB +C25C,C3DA +C25D,C3DC +C261,C3DD +C262,C3CB +C263,C3CB +C264,C3CB +C265,C3CC +C266,C3CC +C267,C3CC +C268,C3D0 +C269,C3CD +C26A,C3CB +C26B,C3DE +C26C,C3CD +C26D,C3CD +C26E,C3CD +C26F,C3CF +C270,C3CD +C271,C3DE +C273,C3CF +C274,C3CF +C275,C3D0 +C276,C3D0 +C277,C3D1 +C278,C3D0 +C279,C3D0 +C27A,C3CB +C27B,C3D0 +C27C,C3CF +C27D,C3D1 +C281,C3DF +C282,C3E0 +C283,C3E0 +C284,C3E0 +C285,C3E1 +C286,C3E1 +C287,C3E1 +C288,C3E5 +C289,C3E2 +C28A,C3E0 +C28B,C3E3 +C28C,C3E2 +C28D,C3E2 +C28E,C3E2 +C28F,C3E4 +C290,C3E2 +C291,C3E3 +C293,C3E4 +C294,C3E4 +C295,C3E5 +C296,C3E5 +C297,C3E6 +C298,C3E5 +C299,C3E5 +C29A,C3E0 +C29B,C3E5 +C29C,C3E4 +C29D,C3E6 +C2A1,C3E7 +C2A2,C3B4 +C2A3,C3B4 +C2A4,C3B4 +C2A5,C3B5 +C2A6,C3B5 +C2A7,C3B5 +C2A8,C3E8 +C2A9,C3B6 +C2AA,C3B4 +C2AB,C3B7 +C2AC,C3B6 +C2AD,C3B6 +C2AE,C3B6 +C2AF,C3B8 +C2B0,C3B6 +C2B1,C3B7 +C2B3,C3B8 +C2B4,C3B8 +C2B5,C3E8 +C2B6,C3E8 +C2B7,C3BB +C2B8,C3E8 +C2B9,C3E8 +C2BA,C3B4 +C2BB,C3E8 +C2BC,C3B8 +C2BD,C3BB +C2C1,C3E9 +C2C2,C3BD +C2C3,C3BD +C2C4,C3BD +C2C5,C3EA +C2C6,C3EA +C2C7,C3EA +C2C8,C3C2 +C2C9,C3BF +C2CA,C3BD +C2CB,C3C0 +C2CC,C3BF +C2CD,C3BF +C2CE,C3BF +C2CF,C3C1 +C2D0,C3BF +C2D1,C3C0 +C2D3,C3C1 +C2D4,C3C1 +C2D5,C3C2 +C2D6,C3C2 +C2D7,C3C3 +C2D8,C3C2 +C2D9,C3C2 +C2DA,C3BD +C2DB,C3C2 +C2DC,C3C1 +C2DD,C3C3 +C2E1,C3EB +C2E2,C4A2 +C2E3,C4A2 +C2E4,C4A2 +C2E5,C3EC +C2E6,C3EC +C2E7,C3EC +C2E8,C3F0 +C2E9,C3ED +C2EA,C4A6 +C2EB,C3EE +C2EC,C3ED +C2ED,C3ED +C2EE,C3ED +C2EF,C3EF +C2F0,C3ED +C2F1,C3EE +C2F3,C3EF +C2F4,C3EF +C2F5,C3F0 +C2F6,C3F0 +C2F7,C3F1 +C2F8,C3F0 +C2F9,C3F0 +C2FA,C4A2 +C2FB,C3F0 +C2FC,C3EF +C2FD,C3F1 +C341,C3F2 +C342,C3E0 +C343,C3E0 +C344,C3E0 +C345,C3F3 +C346,C3F3 +C347,C3F3 +C348,C3E5 +C349,C3F4 +C34A,C3E0 +C34B,C3F5 +C34C,C3F4 +C34D,C3F4 +C34E,C3F4 +C34F,C3E4 +C350,C3F4 +C351,C3F5 +C353,C3E4 +C354,C3E4 +C355,C3E5 +C356,C3E5 +C357,C3F6 +C358,C3E5 +C359,C3E5 +C35A,C3E0 +C35B,C3E5 +C35C,C3E4 +C35D,C3F6 +C361,C3F7 +C362,C3F8 +C363,C3F8 +C364,C3F8 +C365,C3F9 +C366,C3F9 +C367,C3F9 +C368,C3FD +C369,C3FA +C36A,C3F8 +C36B,C3FB +C36C,C3FA +C36D,C3FA +C36E,C3FA +C36F,C3FC +C370,C3FA +C371,C3FB +C373,C3FC +C374,C3FC +C375,C3FD +C376,C3FD +C377,C3FE +C378,C3FD +C379,C3FD +C37A,C3F8 +C37B,C3FD +C37C,C3FC +C37D,C3FE +C381,C4A1 +C382,C4A2 +C383,C4A2 +C384,C4A2 +C385,C4A3 +C386,C4A3 +C387,C4A3 +C388,C4A4 +C389,C4A5 +C38A,C4A6 +C38B,C4A7 +C38C,C4A5 +C38D,C4A5 +C38E,C4A5 +C38F,C4A8 +C390,C4A5 +C391,C4A7 +C393,C4A8 +C394,C4A8 +C395,C4A9 +C396,C4A4 +C397,C4AA +C398,C4A4 +C399,C4A4 +C39A,C4A2 +C39B,C4A4 +C39C,C4A8 +C39D,C4AA +C3A1,C4A1 +C3A2,C4A2 +C3A3,C4A2 +C3A4,C4A2 +C3A5,C4A3 +C3A6,C4A3 +C3A7,C4A3 +C3A8,C4A4 +C3A9,C4A5 +C3AA,C4A6 +C3AB,C4A7 +C3AC,C4A5 +C3AD,C4A5 +C3AE,C4A5 +C3AF,C4A8 +C3B0,C4A5 +C3B1,C4A7 +C3B3,C4A8 +C3B4,C4A8 +C3B5,C4A9 +C3B6,C4A4 +C3B7,C4AA +C3B8,C4A4 +C3B9,C4A4 +C3BA,C4A2 +C3BB,C4A4 +C3BC,C4A8 +C3BD,C4AA +C441,A1A1 +C461,C4AB +C462,C4AC +C463,C4AC +C464,C4AC +C465,C4AD +C466,C4AD +C467,C4AD +C468,C4B1 +C469,C4AE +C46A,C4AC +C46B,C4AF +C46C,C4AE +C46D,C4AE +C46E,C4AE +C46F,C4B0 +C470,C4AE +C471,C4AF +C473,C4B0 +C474,C4B0 +C475,C4B1 +C476,C4B1 +C477,C4B2 +C478,C4B1 +C479,C4B1 +C47A,C4AC +C47B,C4B1 +C47C,C4B0 +C47D,C4B2 +C481,C4B3 +C482,C4B4 +C483,C4B4 +C484,C4B4 +C485,C4B5 +C486,C4B5 +C487,C4B5 +C488,C4B9 +C489,C4B6 +C48A,C4B4 +C48B,C4B7 +C48C,C4B6 +C48D,C4B6 +C48E,C4B6 +C48F,C4B8 +C490,C4B6 +C491,C4B7 +C493,C4B8 +C494,C4B8 +C495,C4B9 +C496,C4BA +C497,C4BB +C498,C4B9 +C499,C4B9 +C49A,C4B4 +C49B,C4B9 +C49C,C4B8 +C49D,C4BB +C4A1,C4BC +C4A2,C4BD +C4A3,C4BD +C4A4,C4BD +C4A5,C4AD +C4A6,C4AD +C4A7,C4AD +C4A8,C4B1 +C4A9,C4AE +C4AA,C4BD +C4AB,C4AF +C4AC,C4AE +C4AD,C4AE +C4AE,C4AE +C4AF,C4B0 +C4B0,C4AE +C4B1,C4AF +C4B3,C4B0 +C4B4,C4B0 +C4B5,C4B1 +C4B6,C4B1 +C4B7,C4BE +C4B8,C4B1 +C4B9,C4B1 +C4BA,C4BD +C4BB,C4B1 +C4BC,C4B0 +C4BD,C4BE +C4C1,C4D9 +C4C2,C4B4 +C4C3,C4B4 +C4C4,C4B4 +C4C5,C4B5 +C4C6,C4B5 +C4C7,C4B5 +C4C8,C4B9 +C4C9,C4B6 +C4CA,C4B4 +C4CB,C4B7 +C4CC,C4B6 +C4CD,C4B6 +C4CE,C4B6 +C4CF,C4B8 +C4D0,C4B6 +C4D1,C4B7 +C4D3,C4B8 +C4D4,C4B8 +C4D5,C4B9 +C4D6,C4BA +C4D7,C4BB +C4D8,C4B9 +C4D9,C4B9 +C4DA,C4B4 +C4DB,C4B9 +C4DC,C4B8 +C4DD,C4BB +C4E1,C4BF +C4E2,C4C0 +C4E3,C4C0 +C4E4,C4C0 +C4E5,C4C1 +C4E6,C4C1 +C4E7,C4C1 +C4E8,C4C2 +C4E9,C4C3 +C4EA,C4C0 +C4EB,C4C4 +C4EC,C4C3 +C4ED,C4C3 +C4EE,C4C3 +C4EF,C4C5 +C4F0,C4C3 +C4F1,C4C4 +C4F3,C4C5 +C4F4,C4C5 +C4F5,C4C6 +C4F6,C4C7 +C4F7,C4C8 +C4F8,C4C2 +C4F9,C4C2 +C4FA,C4C0 +C4FB,C4C2 +C4FC,C4C5 +C4FD,C4C8 +C541,C4C9 +C542,C4CA +C543,C4CA +C544,C4CA +C545,C4CB +C546,C4CB +C547,C4CB +C548,C4CF +C549,C4CC +C54A,C4CA +C54B,C4CD +C54C,C4CC +C54D,C4CC +C54E,C4CC +C54F,C4CE +C550,C4CC +C551,C4CD +C553,C4CE +C554,C4CE +C555,C4CF +C556,C4CF +C557,C4D0 +C558,C4CF +C559,C4CF +C55A,C4CA +C55B,C4CF +C55C,C4CE +C55D,C4D0 +C561,C4D1 +C562,C4C0 +C563,C4C0 +C564,C4C0 +C565,C4D2 +C566,C4D2 +C567,C4D2 +C568,C4D6 +C569,C4D3 +C56A,C4C0 +C56B,C4D4 +C56C,C4D3 +C56D,C4D3 +C56E,C4D3 +C56F,C4D5 +C570,C4D3 +C571,C4D4 +C573,C4D5 +C574,C4D5 +C575,C4D6 +C576,C4D7 +C577,C4D8 +C578,C4D6 +C579,C4D6 +C57A,C4C0 +C57B,C4D6 +C57C,C4D5 +C57D,C4D8 +C581,C4D9 +C582,C4CA +C583,C4CA +C584,C4CA +C585,C4CB +C586,C4CB +C587,C4CB +C588,C4CF +C589,C4CC +C58A,C4CA +C58B,C4CD +C58C,C4CC +C58D,C4CC +C58E,C4CC +C58F,C4CE +C590,C4CC +C591,C4CD +C593,C4CE +C594,C4CE +C595,C4CF +C596,C4CF +C597,C4D0 +C598,C4CF +C599,C4CF +C59A,C4CA +C59B,C4CF +C59C,C4CE +C59D,C4D0 +C5A1,C4DA +C5A2,C4DB +C5A3,C4DB +C5A4,C4DB +C5A5,C4DC +C5A6,C4DC +C5A7,C4DC +C5A8,C4E0 +C5A9,C4DD +C5AA,C4DB +C5AB,C4DE +C5AC,C4DD +C5AD,C4DD +C5AE,C4DD +C5AF,C4DF +C5B0,C4DD +C5B1,C4DE +C5B3,C4DF +C5B4,C4DF +C5B5,C4E0 +C5B6,C4E0 +C5B7,C4E1 +C5B8,C4E0 +C5B9,C4E0 +C5BA,C4DB +C5BB,C4E0 +C5BC,C4DF +C5BD,C4E1 +C5C1,C4E2 +C5C2,C4E3 +C5C3,C4E3 +C5C4,C4E3 +C5C5,C4E4 +C5C6,C4E4 +C5C7,C4E4 +C5C8,C4B1 +C5C9,C4E5 +C5CA,C4E3 +C5CB,C4E6 +C5CC,C4E5 +C5CD,C4E5 +C5CE,C4E5 +C5CF,C4B0 +C5D0,C4E5 +C5D1,C4E6 +C5D3,C4B0 +C5D4,C4B0 +C5D5,C4B1 +C5D6,C4B1 +C5D7,C4E7 +C5D8,C4B1 +C5D9,C4B1 +C5DA,C4E3 +C5DB,C4B1 +C5DC,C4B0 +C5DD,C4E7 +C5E1,C4E8 +C5E2,C4B4 +C5E3,C4B4 +C5E4,C4B4 +C5E5,C4B5 +C5E6,C4B5 +C5E7,C4B5 +C5E8,C4B9 +C5E9,C4EB +C5EA,C4B4 +C5EB,C4B7 +C5EC,C4EB +C5ED,C4EB +C5EE,C4EB +C5EF,C4B8 +C5F0,C4EB +C5F1,C4B7 +C5F3,C4B8 +C5F4,C4B8 +C5F5,C4B9 +C5F6,C4BA +C5F7,C4E9 +C5F8,C4B9 +C5F9,C4B9 +C5FA,C4B4 +C5FB,C4B9 +C5FC,C4B8 +C5FD,C4E9 +C641,C4EA +C642,C5B1 +C643,C5B1 +C644,C5B1 +C645,C5B2 +C646,C5B2 +C647,C5B2 +C648,C5B6 +C649,C4EB +C64A,C5B1 +C64B,C5B4 +C64C,C4EB +C64D,C4EB +C64E,C4EB +C64F,C5B5 +C650,C4EB +C651,C5B4 +C653,C5B5 +C654,C5B5 +C655,C5B6 +C656,C5B6 +C657,C4E9 +C658,C5B6 +C659,C5B6 +C65A,C5B1 +C65B,C5B6 +C65C,C5B5 +C65D,C4E9 +C661,C4EC +C662,C4DB +C663,C4DB +C664,C4DB +C665,C4DC +C666,C4DC +C667,C4DC +C668,C4E0 +C669,C4DD +C66A,C4DB +C66B,C4DE +C66C,C4DD +C66D,C4DD +C66E,C4DD +C66F,C4DF +C670,C4DD +C671,C4DE +C673,C4DF +C674,C4DF +C675,C4E0 +C676,C4E0 +C677,C4E1 +C678,C4E0 +C679,C4E0 +C67A,C4DB +C67B,C4E0 +C67C,C4DF +C67D,C4E1 +C681,C4ED +C682,C4EE +C683,C4EE +C684,C4EE +C685,C4EF +C686,C4EF +C687,C4EF +C688,C4F3 +C689,C4F0 +C68A,C4EE +C68B,C4F1 +C68C,C4F0 +C68D,C4F0 +C68E,C4F0 +C68F,C4F2 +C690,C4F0 +C691,C4F1 +C693,C4F2 +C694,C4F2 +C695,C4F3 +C696,C4F3 +C697,C4F4 +C698,C4F3 +C699,C4F3 +C69A,C4EE +C69B,C4F3 +C69C,C4F2 +C69D,C4F4 +C6A1,C4F5 +C6A2,C4C0 +C6A3,C4C0 +C6A4,C4C0 +C6A5,C4F6 +C6A6,C4F6 +C6A7,C4F6 +C6A8,C4C2 +C6A9,C4F7 +C6AA,C4C0 +C6AB,C4C4 +C6AC,C4F7 +C6AD,C4F7 +C6AE,C4F7 +C6AF,C4C5 +C6B0,C4F7 +C6B1,C4C4 +C6B3,C4C5 +C6B4,C4C5 +C6B5,C4C6 +C6B6,C4C7 +C6B7,C4F8 +C6B8,C4C2 +C6B9,C4C2 +C6BA,C4C0 +C6BB,C4C2 +C6BC,C4C5 +C6BD,C4F8 +C6C1,C4F9 +C6C2,C4CA +C6C3,C4CA +C6C4,C4CA +C6C5,C4CB +C6C6,C4CB +C6C7,C4CB +C6C8,C4CF +C6C9,C4CC +C6CA,C4CA +C6CB,C4CD +C6CC,C4CC +C6CD,C4CC +C6CE,C4CC +C6CF,C4CE +C6D0,C4CC +C6D1,C4CD +C6D3,C4CE +C6D4,C4CE +C6D5,C4CF +C6D6,C4CF +C6D7,C4FA +C6D8,C4CF +C6D9,C4CF +C6DA,C4CA +C6DB,C4CF +C6DC,C4CE +C6DD,C4FA +C6E1,C4FB +C6E2,C4FC +C6E3,C4FC +C6E4,C4FC +C6E5,C4FD +C6E6,C4FD +C6E7,C4FD +C6E8,C5A3 +C6E9,C4FE +C6EA,C4FC +C6EB,C5A1 +C6EC,C4FE +C6ED,C4FE +C6EE,C4FE +C6EF,C5A2 +C6F0,C4FE +C6F1,C5A1 +C6F3,C5A2 +C6F4,C5A2 +C6F5,C5A3 +C6F6,C5A3 +C6F7,C5A4 +C6F8,C5A3 +C6F9,C5A3 +C6FA,C4FC +C6FB,C5A3 +C6FC,C5A2 +C6FD,C5A4 +C741,C5A5 +C742,C4EE +C743,C4EE +C744,C4EE +C745,C5A6 +C746,C5A6 +C747,C5A6 +C748,C4F3 +C749,C5A7 +C74A,C4EE +C74B,C5A8 +C74C,C5A7 +C74D,C5A7 +C74E,C5A7 +C74F,C4F2 +C750,C5A7 +C751,C5A8 +C753,C4F2 +C754,C4F2 +C755,C4F3 +C756,C4F3 +C757,C4F4 +C758,C4F3 +C759,C4F3 +C75A,C4EE +C75B,C4F3 +C75C,C4F2 +C75D,C4F4 +C761,C5A9 +C762,C5AA +C763,C5AA +C764,C5AA +C765,C5AB +C766,C5AB +C767,C5AB +C768,C4F3 +C769,C5AC +C76A,C5AA +C76B,C5AD +C76C,C5AC +C76D,C5AC +C76E,C5AC +C76F,C5AE +C770,C5AC +C771,C5AD +C773,C5AE +C774,C5AE +C775,C4F3 +C776,C4F3 +C777,C5AF +C778,C4F3 +C779,C4F3 +C77A,C5AA +C77B,C4F3 +C77C,C5AE +C77D,C5AF +C781,C5B0 +C782,C5B1 +C783,C5B1 +C784,C5B1 +C785,C5B2 +C786,C5B2 +C787,C5B2 +C788,C5B6 +C789,C5B3 +C78A,C5B1 +C78B,C5B4 +C78C,C5B3 +C78D,C5B3 +C78E,C5B3 +C78F,C5B5 +C790,C5B3 +C791,C5B4 +C793,C5B5 +C794,C5B5 +C795,C5B6 +C796,C5B6 +C797,C5B7 +C798,C5B6 +C799,C5B6 +C79A,C5B1 +C79B,C5B6 +C79C,C5B5 +C79D,C5B7 +C7A1,C5B0 +C7A2,C5B1 +C7A3,C5B1 +C7A4,C5B1 +C7A5,C5B2 +C7A6,C5B2 +C7A7,C5B2 +C7A8,C5B6 +C7A9,C5B3 +C7AA,C5B1 +C7AB,C5B4 +C7AC,C5B3 +C7AD,C5B3 +C7AE,C5B3 +C7AF,C5B5 +C7B0,C5B3 +C7B1,C5B4 +C7B3,C5B5 +C7B4,C5B5 +C7B5,C5B6 +C7B6,C5B6 +C7B7,C5B7 +C7B8,C5B6 +C7B9,C5B6 +C7BA,C5B1 +C7BB,C5B6 +C7BC,C5B5 +C7BD,C5B7 +C841,A1A1 +C861,C5B8 +C862,C5B9 +C863,C5B9 +C864,C5B9 +C865,C5BA +C866,C5BA +C867,C5BA +C868,C5BF +C869,C5BB +C86A,C5BC +C86B,C5BD +C86C,C5BB +C86D,C5BB +C86E,C5BB +C86F,C5BE +C870,C5BB +C871,C5BD +C873,C5BE +C874,C5BE +C875,C5BF +C876,C5C0 +C877,C5C1 +C878,C5BF +C879,C5BF +C87A,C5B9 +C87B,C5BF +C87C,C5BE +C87D,C5C1 +C881,C5C2 +C882,C5C3 +C883,C5C3 +C884,C5C3 +C885,C5C4 +C886,C5C4 +C887,C5C4 +C888,C5C8 +C889,C5C5 +C88A,C5C3 +C88B,C5C6 +C88C,C5C5 +C88D,C5C5 +C88E,C5C5 +C88F,C5C7 +C890,C5C5 +C891,C5C6 +C893,C5C7 +C894,C5C7 +C895,C5C8 +C896,C5C9 +C897,C5CA +C898,C5C8 +C899,C5C8 +C89A,C5C3 +C89B,C5C8 +C89C,C5C7 +C89D,C5CA +C8A1,C5CB +C8A2,C5B9 +C8A3,C5B9 +C8A4,C5B9 +C8A5,C5BA +C8A6,C5BA +C8A7,C5BA +C8A8,C5BF +C8A9,C5BB +C8AA,C5BC +C8AB,C5BD +C8AC,C5BB +C8AD,C5BB +C8AE,C5BB +C8AF,C5BE +C8B0,C5BB +C8B1,C5BD +C8B3,C5BE +C8B4,C5BE +C8B5,C5BF +C8B6,C5C0 +C8B7,C5CC +C8B8,C5BF +C8B9,C5BF +C8BA,C5B9 +C8BB,C5BF +C8BC,C5BE +C8BD,C5CC +C8C1,C5E2 +C8C2,C5C3 +C8C3,C5C3 +C8C4,C5C3 +C8C5,C5E3 +C8C6,C5E3 +C8C7,C5E3 +C8C8,C5C8 +C8C9,C5C5 +C8CA,C5C3 +C8CB,C5C6 +C8CC,C5C5 +C8CD,C5C5 +C8CE,C5C5 +C8CF,C5C7 +C8D0,C5C5 +C8D1,C5C6 +C8D3,C5C7 +C8D4,C5C7 +C8D5,C5C8 +C8D6,C5C9 +C8D7,C5CA +C8D8,C5C8 +C8D9,C5C8 +C8DA,C5C3 +C8DB,C5C8 +C8DC,C5C7 +C8DD,C5CA +C8E1,C5CD +C8E2,C5CE +C8E3,C5CE +C8E4,C5CE +C8E5,C5CF +C8E6,C5CF +C8E7,C5CF +C8E8,C5D4 +C8E9,C5D0 +C8EA,C5CE +C8EB,C5D1 +C8EC,C5D0 +C8ED,C5D0 +C8EE,C5D0 +C8EF,C5D3 +C8F0,C5D0 +C8F1,C5D2 +C8F3,C5D3 +C8F4,C5D3 +C8F5,C5D4 +C8F6,C5D5 +C8F7,C5D6 +C8F8,C5D4 +C8F9,C5D4 +C8FA,C5CE +C8FB,C5D4 +C8FC,C5D3 +C8FD,C5D6 +C941,C5D7 +C942,C5D8 +C943,C5D8 +C944,C5D8 +C945,C5D9 +C946,C5D9 +C947,C5D9 +C948,C5DD +C949,C5DA +C94A,C5D8 +C94B,C5DB +C94C,C5DA +C94D,C5DA +C94E,C5DA +C94F,C5DC +C950,C5DA +C951,C5DB +C953,C5DC +C954,C5DC +C955,C5DD +C956,C5DD +C957,C5DE +C958,C5DD +C959,C5DD +C95A,C5D8 +C95B,C5DD +C95C,C5DC +C95D,C5DE +C961,C5DF +C962,C5CE +C963,C5CE +C964,C5CE +C965,C5E0 +C966,C5E0 +C967,C5E0 +C968,C5E1 +C969,C5D0 +C96A,C5CE +C96B,C5D1 +C96C,C5D0 +C96D,C5D0 +C96E,C5D0 +C96F,C5D3 +C970,C5D0 +C971,C5D2 +C973,C5D3 +C974,C5D3 +C975,C5E1 +C976,C5E1 +C977,C5D6 +C978,C5E1 +C979,C5E1 +C97A,C5CE +C97B,C5E1 +C97C,C5D3 +C97D,C5D6 +C981,C5E2 +C982,C5D8 +C983,C5D8 +C984,C5D8 +C985,C5E3 +C986,C5E3 +C987,C5E3 +C988,C5DD +C989,C5DA +C98A,C5D8 +C98B,C5DB +C98C,C5DA +C98D,C5DA +C98E,C5DA +C98F,C5DC +C990,C5DA +C991,C5DB +C993,C5DC +C994,C5DC +C995,C5DD +C996,C5DD +C997,C5DE +C998,C5DD +C999,C5DD +C99A,C5D8 +C99B,C5DD +C99C,C5DC +C99D,C5DE +C9A1,C5E4 +C9A2,C5E5 +C9A3,C5E5 +C9A4,C5E5 +C9A5,C5E6 +C9A6,C5E6 +C9A7,C5E6 +C9A8,C5EA +C9A9,C5E7 +C9AA,C5E5 +C9AB,C5E8 +C9AC,C5E7 +C9AD,C5E7 +C9AE,C5E7 +C9AF,C5EC +C9B0,C5E7 +C9B1,C5E8 +C9B3,C5E9 +C9B4,C5E9 +C9B5,C5EA +C9B6,C5EA +C9B7,C5EB +C9B8,C5EA +C9B9,C5EA +C9BA,C5E5 +C9BB,C5EA +C9BC,C5EC +C9BD,C5EB +C9C1,C5ED +C9C2,C5B9 +C9C3,C5B9 +C9C4,C5B9 +C9C5,C5EE +C9C6,C5EE +C9C7,C5EE +C9C8,C5BF +C9C9,C5BB +C9CA,C5BC +C9CB,C5BD +C9CC,C5BB +C9CD,C5BB +C9CE,C5BB +C9CF,C5BE +C9D0,C5BB +C9D1,C5BD +C9D3,C5BE +C9D4,C5BE +C9D5,C5BF +C9D6,C5C0 +C9D7,C5C1 +C9D8,C5BF +C9D9,C5BF +C9DA,C5B9 +C9DB,C5BF +C9DC,C5BE +C9DD,C5C1 +C9E1,C5EF +C9E2,C5C3 +C9E3,C5C3 +C9E4,C5C3 +C9E5,C5F1 +C9E6,C5F1 +C9E7,C5F1 +C9E8,C5F2 +C9E9,C5C5 +C9EA,C5C3 +C9EB,C5C6 +C9EC,C5C5 +C9ED,C5C5 +C9EE,C5C5 +C9EF,C5C7 +C9F0,C5C5 +C9F1,C5C6 +C9F3,C5C7 +C9F4,C5C7 +C9F5,C5F2 +C9F6,C5F2 +C9F7,C5F3 +C9F8,C5F2 +C9F9,C5F2 +C9FA,C5C3 +C9FB,C5F2 +C9FC,C5C7 +C9FD,C5F3 +CA41,C5F0 +CA42,C6BD +CA43,C6BD +CA44,C6BD +CA45,C5F1 +CA46,C5F1 +CA47,C5F1 +CA48,C5F2 +CA49,C6BF +CA4A,C6BD +CA4B,C6C0 +CA4C,C6BF +CA4D,C6BF +CA4E,C6BF +CA4F,C6C1 +CA50,C6BF +CA51,C6C0 +CA53,C6C1 +CA54,C6C1 +CA55,C5F2 +CA56,C5F2 +CA57,C5F3 +CA58,C5F2 +CA59,C5F2 +CA5A,C6BD +CA5B,C5F2 +CA5C,C6C1 +CA5D,C5F3 +CA61,C5F4 +CA62,C5E5 +CA63,C5E5 +CA64,C5E5 +CA65,C5E6 +CA66,C5E6 +CA67,C5E6 +CA68,C5EA +CA69,C5E7 +CA6A,C5E5 +CA6B,C5E8 +CA6C,C5E7 +CA6D,C5E7 +CA6E,C5E7 +CA6F,C5EC +CA70,C5E7 +CA71,C5E8 +CA73,C5E9 +CA74,C5E9 +CA75,C5EA +CA76,C5EA +CA77,C5EB +CA78,C5EA +CA79,C5EA +CA7A,C5E5 +CA7B,C5EA +CA7C,C5EC +CA7D,C5EB +CA81,C5F5 +CA82,C5F6 +CA83,C5F6 +CA84,C5F6 +CA85,C5F7 +CA86,C5F7 +CA87,C5F7 +CA88,C5FB +CA89,C5F8 +CA8A,C5F6 +CA8B,C5F9 +CA8C,C5F8 +CA8D,C5F8 +CA8E,C5F8 +CA8F,C5FA +CA90,C5F8 +CA91,C5F9 +CA93,C5FA +CA94,C5FA +CA95,C5FB +CA96,C5FB +CA97,C5FC +CA98,C5FB +CA99,C5FB +CA9A,C5F6 +CA9B,C5FB +CA9C,C5FA +CA9D,C5FC +CAA1,C5FD +CAA2,C5CE +CAA3,C5CE +CAA4,C5CE +CAA5,C5CF +CAA6,C5CF +CAA7,C5CF +CAA8,C5FE +CAA9,C5D0 +CAAA,C5CE +CAAB,C5D1 +CAAC,C5D0 +CAAD,C5D0 +CAAE,C5D0 +CAAF,C5D3 +CAB0,C5D0 +CAB1,C5D2 +CAB3,C5D3 +CAB4,C5D3 +CAB5,C5FE +CAB6,C5FE +CAB7,C5D6 +CAB8,C5FE +CAB9,C5FE +CABA,C5CE +CABB,C5FE +CABC,C5D3 +CABD,C5D6 +CAC1,C6A1 +CAC2,C5D8 +CAC3,C5D8 +CAC4,C5D8 +CAC5,C5D9 +CAC6,C5D9 +CAC7,C5D9 +CAC8,C5DD +CAC9,C5DA +CACA,C5D8 +CACB,C5DB +CACC,C5DA +CACD,C5DA +CACE,C5DA +CACF,C5DC +CAD0,C5DA +CAD1,C5DB +CAD3,C5DC +CAD4,C5DC +CAD5,C5DD +CAD6,C5DD +CAD7,C5DE +CAD8,C5DD +CAD9,C5DD +CADA,C5D8 +CADB,C5DD +CADC,C5DC +CADD,C5DE +CAE1,C6A2 +CAE2,C6A3 +CAE3,C6A3 +CAE4,C6A3 +CAE5,C6A4 +CAE6,C6A4 +CAE7,C6A4 +CAE8,C6C2 +CAE9,C6A5 +CAEA,C6A3 +CAEB,C6A6 +CAEC,C6A5 +CAED,C6A5 +CAEE,C6A5 +CAEF,C6A7 +CAF0,C6A5 +CAF1,C6A6 +CAF3,C6A7 +CAF4,C6A7 +CAF5,C6C2 +CAF6,C6C2 +CAF7,C6A8 +CAF8,C6C2 +CAF9,C6C2 +CAFA,C6A3 +CAFB,C6C2 +CAFC,C6A7 +CAFD,C6A8 +CB41,C6A9 +CB42,C5F6 +CB43,C5F6 +CB44,C5F6 +CB45,C6AA +CB46,C6AA +CB47,C6AA +CB48,C5FB +CB49,C6AB +CB4A,C5F6 +CB4B,C6AC +CB4C,C6AB +CB4D,C6AB +CB4E,C6AB +CB4F,C5FA +CB50,C6AB +CB51,C6AC +CB53,C5FA +CB54,C5FA +CB55,C5FB +CB56,C5FB +CB57,C6AD +CB58,C5FB +CB59,C5FB +CB5A,C5F6 +CB5B,C5FB +CB5C,C5FA +CB5D,C6AD +CB61,C6AE +CB62,C6AF +CB63,C6AF +CB64,C6AF +CB65,C6B0 +CB66,C6B0 +CB67,C6B0 +CB68,C6B1 +CB69,C6B2 +CB6A,C6AF +CB6B,C6B3 +CB6C,C6B2 +CB6D,C6B2 +CB6E,C6B2 +CB6F,C6B5 +CB70,C6B2 +CB71,C6B4 +CB73,C6B5 +CB74,C6B5 +CB75,C6B6 +CB76,C6B1 +CB77,C5FC +CB78,C6B1 +CB79,C6B1 +CB7A,C6AF +CB7B,C6B1 +CB7C,C6B5 +CB7D,C5FC +CB81,C6B7 +CB82,C6BD +CB83,C6BD +CB84,C6BD +CB85,C6B8 +CB86,C6B8 +CB87,C6B8 +CB88,C6C2 +CB89,C6B9 +CB8A,C6BD +CB8B,C6BA +CB8C,C6B9 +CB8D,C6B9 +CB8E,C6B9 +CB8F,C6BB +CB90,C6B9 +CB91,C6BA +CB93,C6BB +CB94,C6BB +CB95,C6C2 +CB96,C6C2 +CB97,C6C3 +CB98,C6C2 +CB99,C6C2 +CB9A,C6BD +CB9B,C6C2 +CB9C,C6BB +CB9D,C6C3 +CBA1,C6BC +CBA2,C6BD +CBA3,C6BD +CBA4,C6BD +CBA5,C6BE +CBA6,C6BE +CBA7,C6BE +CBA8,C6C2 +CBA9,C6BF +CBAA,C6BD +CBAB,C6C0 +CBAC,C6BF +CBAD,C6BF +CBAE,C6BF +CBAF,C6C1 +CBB0,C6BF +CBB1,C6C0 +CBB3,C6C1 +CBB4,C6C1 +CBB5,C6C2 +CBB6,C6C2 +CBB7,C6C3 +CBB8,C6C2 +CBB9,C6C2 +CBBA,C6BD +CBBB,C6C2 +CBBC,C6C1 +CBBD,C6C3 +CC41,A1A1 +CC61,C6C4 +CC62,C6C5 +CC63,C6C6 +CC64,C6C5 +CC65,C6C7 +CC66,C6C7 +CC67,C6C7 +CC68,C6CC +CC69,C6C8 +CC6A,C6C5 +CC6B,C6C9 +CC6C,C6C8 +CC6D,C6C8 +CC6E,C6C8 +CC6F,C6CB +CC70,C6C8 +CC71,C6CA +CC73,C6CB +CC74,C6CB +CC75,C6CC +CC76,C6CD +CC77,C6CE +CC78,C6CC +CC79,C6CC +CC7A,C6C5 +CC7B,C6CF +CC7C,C6CB +CC7D,C6CE +CC81,C6D0 +CC82,C6D1 +CC83,C6D1 +CC84,C6D1 +CC85,C6D2 +CC86,C6D2 +CC87,C6D2 +CC88,C6D6 +CC89,C6D3 +CC8A,C6D1 +CC8B,C6D4 +CC8C,C6D3 +CC8D,C6D3 +CC8E,C6D3 +CC8F,C6D5 +CC90,C6D3 +CC91,C6D4 +CC93,C6D5 +CC94,C6D5 +CC95,C6D6 +CC96,C6D7 +CC97,C6D8 +CC98,C6D6 +CC99,C6D6 +CC9A,C6D1 +CC9B,C6D6 +CC9C,C6D5 +CC9D,C6D8 +CCA1,C6D9 +CCA2,C6DA +CCA3,C6DA +CCA4,C6DA +CCA5,C6C7 +CCA6,C6C7 +CCA7,C6C7 +CCA8,C6CC +CCA9,C6C8 +CCAA,C6DA +CCAB,C6C9 +CCAC,C6C8 +CCAD,C6C8 +CCAE,C6C8 +CCAF,C6CB +CCB0,C6C8 +CCB1,C6CA +CCB3,C6CB +CCB4,C6CB +CCB5,C6CC +CCB6,C6CD +CCB7,C6CE +CCB8,C6CC +CCB9,C6CC +CCBA,C6DA +CCBB,C6CF +CCBC,C6CB +CCBD,C6CE +CCC1,C6F3 +CCC2,C6D1 +CCC3,C6D1 +CCC4,C6D1 +CCC5,C6D2 +CCC6,C6D2 +CCC7,C6D2 +CCC8,C6F6 +CCC9,C6F4 +CCCA,C6D1 +CCCB,C6D4 +CCCC,C6F4 +CCCD,C6F4 +CCCE,C6F4 +CCCF,C6F5 +CCD0,C6F4 +CCD1,C6D4 +CCD3,C6F5 +CCD4,C6F5 +CCD5,C6F6 +CCD6,C6F6 +CCD7,C6D8 +CCD8,C6F6 +CCD9,C6F6 +CCDA,C6D1 +CCDB,C6F6 +CCDC,C6F5 +CCDD,C6D8 +CCE1,C6DB +CCE2,C6DC +CCE3,C6DC +CCE4,C6DC +CCE5,C6DD +CCE6,C6DD +CCE7,C6DD +CCE8,C6E1 +CCE9,C6DE +CCEA,C6DC +CCEB,C6DF +CCEC,C6DE +CCED,C6DE +CCEE,C6DE +CCEF,C6E0 +CCF0,C6DE +CCF1,C6DF +CCF3,C6E0 +CCF4,C6E0 +CCF5,C6E1 +CCF6,C6E2 +CCF7,C6E3 +CCF8,C6E1 +CCF9,C6E1 +CCFA,C6DC +CCFB,C6E1 +CCFC,C6E0 +CCFD,C6E3 +CD41,C6E4 +CD42,C6E5 +CD43,C6E5 +CD44,C6E5 +CD45,C6E6 +CD46,C6E6 +CD47,C6E6 +CD48,C6EA +CD49,C6E7 +CD4A,C6E5 +CD4B,C6E8 +CD4C,C6E7 +CD4D,C6E7 +CD4E,C6E7 +CD4F,C6E9 +CD50,C6E7 +CD51,C6E8 +CD53,C6E9 +CD54,C6E9 +CD55,C6EA +CD56,C6EA +CD57,C6EB +CD58,C6EA +CD59,C6EA +CD5A,C6E5 +CD5B,C6EA +CD5C,C6E9 +CD5D,C6EB +CD61,C6EC +CD62,C6DC +CD63,C6DC +CD64,C6DC +CD65,C6ED +CD66,C6ED +CD67,C6ED +CD68,C6F1 +CD69,C6EE +CD6A,C6DC +CD6B,C6EF +CD6C,C6EE +CD6D,C6EE +CD6E,C6EE +CD6F,C6F0 +CD70,C6EE +CD71,C6EF +CD73,C6F0 +CD74,C6F0 +CD75,C6F1 +CD76,C6F1 +CD77,C6F2 +CD78,C6F1 +CD79,C6F1 +CD7A,C6DC +CD7B,C6F1 +CD7C,C6F0 +CD7D,C6F2 +CD81,C6F3 +CD82,C6E5 +CD83,C6E5 +CD84,C6E5 +CD85,C6E6 +CD86,C6E6 +CD87,C6E6 +CD88,C6F6 +CD89,C6F4 +CD8A,C6E5 +CD8B,C6E8 +CD8C,C6F4 +CD8D,C6F4 +CD8E,C6F4 +CD8F,C6F5 +CD90,C6F4 +CD91,C6E8 +CD93,C6F5 +CD94,C6F5 +CD95,C6F6 +CD96,C6F6 +CD97,C6EB +CD98,C6F6 +CD99,C6F6 +CD9A,C6E5 +CD9B,C6F6 +CD9C,C6F5 +CD9D,C6EB +CDA1,C6F7 +CDA2,C6F8 +CDA3,C6F8 +CDA4,C6F8 +CDA5,C6F9 +CDA6,C6F9 +CDA7,C6F9 +CDA8,C6FD +CDA9,C6FA +CDAA,C6F8 +CDAB,C6FB +CDAC,C6FA +CDAD,C6FA +CDAE,C6FA +CDAF,C6FC +CDB0,C6FA +CDB1,C6FB +CDB3,C6FC +CDB4,C6FC +CDB5,C6FD +CDB6,C6FD +CDB7,C6FE +CDB8,C6FD +CDB9,C6FD +CDBA,C6F8 +CDBB,C6FD +CDBC,C6FC +CDBD,C6FE +CDC1,C7A1 +CDC2,C6C5 +CDC3,C6C6 +CDC4,C6C5 +CDC5,C6C7 +CDC6,C6C7 +CDC7,C6C7 +CDC8,C6CC +CDC9,C6C8 +CDCA,C6C5 +CDCB,C6C9 +CDCC,C6C8 +CDCD,C6C8 +CDCE,C6C8 +CDCF,C6CB +CDD0,C6C8 +CDD1,C6CA +CDD3,C6CB +CDD4,C6CB +CDD5,C6CC +CDD6,C6CD +CDD7,C7A2 +CDD8,C6CC +CDD9,C6CC +CDDA,C6C5 +CDDB,C6CF +CDDC,C6CB +CDDD,C7A2 +CDE1,C7A3 +CDE2,C6D1 +CDE3,C6D1 +CDE4,C6D1 +CDE5,C7A4 +CDE6,C7A4 +CDE7,C7A4 +CDE8,C6D6 +CDE9,C6D3 +CDEA,C6D1 +CDEB,C6D4 +CDEC,C6D3 +CDED,C6D3 +CDEE,C6D3 +CDEF,C6D5 +CDF0,C6D3 +CDF1,C6D4 +CDF3,C6D5 +CDF4,C6D5 +CDF5,C6D6 +CDF6,C6D7 +CDF7,C6D8 +CDF8,C6D6 +CDF9,C6D6 +CDFA,C6D1 +CDFB,C6D6 +CDFC,C6D5 +CDFD,C6D8 +CE41,C7A3 +CE42,C7C8 +CE43,C7C8 +CE44,C7C8 +CE45,C7A4 +CE46,C7A4 +CE47,C7A4 +CE48,C7CD +CE49,C7CA +CE4A,C7C8 +CE4B,C7CB +CE4C,C7CA +CE4D,C7CA +CE4E,C7CA +CE4F,C7CC +CE50,C7CA +CE51,C7CB +CE53,C7CC +CE54,C7CC +CE55,C7CD +CE56,C7CD +CE57,C7CE +CE58,C7CD +CE59,C7CD +CE5A,C7C8 +CE5B,C7CD +CE5C,C7CC +CE5D,C7CE +CE61,C7A5 +CE62,C6F8 +CE63,C6F8 +CE64,C6F8 +CE65,C7A6 +CE66,C7A6 +CE67,C7A6 +CE68,C7A9 +CE69,C7A7 +CE6A,C6F8 +CE6B,C6FB +CE6C,C7A7 +CE6D,C7A7 +CE6E,C7A7 +CE6F,C7A8 +CE70,C7A7 +CE71,C6FB +CE73,C7A8 +CE74,C7A8 +CE75,C7A9 +CE76,C7A9 +CE77,C6FE +CE78,C7A9 +CE79,C7A9 +CE7A,C6F8 +CE7B,C7A9 +CE7C,C7A8 +CE7D,C6FE +CE81,C7AA +CE82,C7AB +CE83,C7AB +CE84,C7AB +CE85,C7AC +CE86,C7AC +CE87,C7AC +CE88,C7AD +CE89,C7AE +CE8A,C7AB +CE8B,C7AF +CE8C,C7AE +CE8D,C7AE +CE8E,C7AE +CE8F,C7B1 +CE90,C7AE +CE91,C7B0 +CE93,C7B1 +CE94,C7B1 +CE95,C7B2 +CE96,C7AD +CE97,C7B3 +CE98,C7AD +CE99,C7AD +CE9A,C7AB +CE9B,C7AD +CE9C,C7B1 +CE9D,C7B3 +CEA1,C7B4 +CEA2,C6DC +CEA3,C6DC +CEA4,C6DC +CEA5,C6DD +CEA6,C6DD +CEA7,C6DD +CEA8,C6E1 +CEA9,C6DE +CEAA,C6DC +CEAB,C6DF +CEAC,C6DE +CEAD,C6DE +CEAE,C6DE +CEAF,C6E0 +CEB0,C6DE +CEB1,C6DF +CEB3,C6E0 +CEB4,C6E0 +CEB5,C6E1 +CEB6,C6E2 +CEB7,C7B5 +CEB8,C6E1 +CEB9,C6E1 +CEBA,C6DC +CEBB,C6E1 +CEBC,C6E0 +CEBD,C7B5 +CEC1,C6E4 +CEC2,C6E5 +CEC3,C6E5 +CEC4,C6E5 +CEC5,C6E6 +CEC6,C6E6 +CEC7,C6E6 +CEC8,C6EA +CEC9,C6E7 +CECA,C6E5 +CECB,C6E8 +CECC,C6E7 +CECD,C6E7 +CECE,C6E7 +CECF,C6E9 +CED0,C6E7 +CED1,C6E8 +CED3,C6E9 +CED4,C6E9 +CED5,C6EA +CED6,C6EA +CED7,C6EB +CED8,C6EA +CED9,C6EA +CEDA,C6E5 +CEDB,C6EA +CEDC,C6E9 +CEDD,C6EB +CEE1,C7B6 +CEE2,C7C8 +CEE3,C7C8 +CEE4,C7C8 +CEE5,C7B7 +CEE6,C7B7 +CEE7,C7B7 +CEE8,C7BA +CEE9,C7B8 +CEEA,C7C8 +CEEB,C7B9 +CEEC,C7B8 +CEED,C7B8 +CEEE,C7B8 +CEEF,C7CC +CEF0,C7B8 +CEF1,C7B9 +CEF3,C7CC +CEF4,C7CC +CEF5,C7BA +CEF6,C7BA +CEF7,C7CE +CEF8,C7BA +CEF9,C7BA +CEFA,C7C8 +CEFB,C7BA +CEFC,C7CC +CEFD,C7CE +CF41,C7BB +CF42,C7AB +CF43,C7AB +CF44,C7AB +CF45,C7BC +CF46,C7BC +CF47,C7BC +CF48,C7BF +CF49,C7BD +CF4A,C7AB +CF4B,C7BE +CF4C,C7BD +CF4D,C7BD +CF4E,C7BD +CF4F,C7B1 +CF50,C7BD +CF51,C7BE +CF53,C7B1 +CF54,C7B1 +CF55,C7BF +CF56,C7BF +CF57,C7C0 +CF58,C7BF +CF59,C7BF +CF5A,C7AB +CF5B,C7BF +CF5C,C7B1 +CF5D,C7C0 +CF61,C7C1 +CF62,C7AB +CF63,C7AB +CF64,C7AB +CF65,C7C2 +CF66,C7C2 +CF67,C7C2 +CF68,C7C6 +CF69,C7C3 +CF6A,C7AB +CF6B,C7C4 +CF6C,C7C3 +CF6D,C7C3 +CF6E,C7C3 +CF6F,C7C5 +CF70,C7C3 +CF71,C7C4 +CF73,C7C5 +CF74,C7C5 +CF75,C7C6 +CF76,C7C6 +CF77,C7B3 +CF78,C7C6 +CF79,C7C6 +CF7A,C7AB +CF7B,C7C6 +CF7C,C7C5 +CF7D,C7B3 +CF81,C7C7 +CF82,C7C8 +CF83,C7C8 +CF84,C7C8 +CF85,C7C9 +CF86,C7C9 +CF87,C7C9 +CF88,C7CD +CF89,C7CA +CF8A,C7C8 +CF8B,C7CB +CF8C,C7CA +CF8D,C7CA +CF8E,C7CA +CF8F,C7CC +CF90,C7CA +CF91,C7CB +CF93,C7CC +CF94,C7CC +CF95,C7CD +CF96,C7CD +CF97,C7CE +CF98,C7CD +CF99,C7CD +CF9A,C7C8 +CF9B,C7CD +CF9C,C7CC +CF9D,C7CE +CFA1,C7C7 +CFA2,C7C8 +CFA3,C7C8 +CFA4,C7C8 +CFA5,C7C9 +CFA6,C7C9 +CFA7,C7C9 +CFA8,C7CD +CFA9,C7CA +CFAA,C7C8 +CFAB,C7CB +CFAC,C7CA +CFAD,C7CA +CFAE,C7CA +CFAF,C7CC +CFB0,C7CA +CFB1,C7CB +CFB3,C7CC +CFB4,C7CC +CFB5,C7CD +CFB6,C7CD +CFB7,C7CE +CFB8,C7CD +CFB9,C7CD +CFBA,C7C8 +CFBB,C7CD +CFBC,C7CC +CFBD,C7CE +D041,A1A1 +D061,C7CF +D062,C7D0 +D063,C7D0 +D064,C7D0 +D065,C7D1 +D066,C7D1 +D067,C7D1 +D068,C7D6 +D069,C7D2 +D06A,C7D0 +D06B,C7D4 +D06C,C7D2 +D06D,C7D2 +D06E,C7D3 +D06F,C7D5 +D070,C7D2 +D071,C7D4 +D073,C7D5 +D074,C7D5 +D075,C7D6 +D076,C7D6 +D077,C7D7 +D078,C7D6 +D079,C7D6 +D07A,C7D0 +D07B,C7D6 +D07C,C7D5 +D07D,C7D7 +D081,C7D8 +D082,C7D9 +D083,C7D9 +D084,C7D9 +D085,C7DA +D086,C7DA +D087,C7DA +D088,C7DE +D089,C7DB +D08A,C7D9 +D08B,C7DC +D08C,C7DB +D08D,C7DB +D08E,C7DB +D08F,C7DD +D090,C7DB +D091,C7DC +D093,C7DD +D094,C7DD +D095,C7DE +D096,C7DF +D097,C7E0 +D098,C7DE +D099,C7DE +D09A,C7D9 +D09B,C7DE +D09C,C7DD +D09D,C7E0 +D0A1,C7E1 +D0A2,C7D0 +D0A3,C7D0 +D0A4,C7D0 +D0A5,C7D1 +D0A6,C7D1 +D0A7,C7D1 +D0A8,C7D6 +D0A9,C7D2 +D0AA,C7D0 +D0AB,C7D4 +D0AC,C7D2 +D0AD,C7D2 +D0AE,C7D3 +D0AF,C7D5 +D0B0,C7D2 +D0B1,C7D4 +D0B3,C7D5 +D0B4,C7D5 +D0B5,C7D6 +D0B6,C7D6 +D0B7,C7E2 +D0B8,C7D6 +D0B9,C7D6 +D0BA,C7D0 +D0BB,C7D6 +D0BC,C7D5 +D0BD,C7E2 +D0C1,C7FD +D0C2,C7D9 +D0C3,C7D9 +D0C4,C7D9 +D0C5,C7FE +D0C6,C7FE +D0C7,C7FE +D0C8,C7DE +D0C9,C8A1 +D0CA,C7D9 +D0CB,C7DC +D0CC,C8A1 +D0CD,C8A1 +D0CE,C8A1 +D0CF,C8A2 +D0D0,C8A1 +D0D1,C7DC +D0D3,C8A2 +D0D4,C8A2 +D0D5,C7DE +D0D6,C7DF +D0D7,C7E0 +D0D8,C7DE +D0D9,C7DE +D0DA,C7D9 +D0DB,C7DE +D0DC,C8A2 +D0DD,C7E0 +D0E1,C7E3 +D0E2,C7E4 +D0E3,C7E4 +D0E4,C7E4 +D0E5,C7E5 +D0E6,C7E5 +D0E7,C7E5 +D0E8,C7EA +D0E9,C7E6 +D0EA,C7E4 +D0EB,C7E7 +D0EC,C7E6 +D0ED,C7E6 +D0EE,C7E6 +D0EF,C7E9 +D0F0,C7E6 +D0F1,C7E8 +D0F3,C7E9 +D0F4,C7E9 +D0F5,C7EA +D0F6,C7EA +D0F7,C7EB +D0F8,C7EA +D0F9,C7EA +D0FA,C7E4 +D0FB,C7EA +D0FC,C7E9 +D0FD,C7EB +D141,C7EC +D142,C7ED +D143,C7ED +D144,C7ED +D145,C7EE +D146,C7EE +D147,C7EE +D148,C7F2 +D149,C7EF +D14A,C7ED +D14B,C7F0 +D14C,C7EF +D14D,C7EF +D14E,C7EF +D14F,C7F1 +D150,C7EF +D151,C7F0 +D153,C7F1 +D154,C7F1 +D155,C7F2 +D156,C7F2 +D157,C7F3 +D158,C7F2 +D159,C7F2 +D15A,C7ED +D15B,C7F2 +D15C,C7F1 +D15D,C7F3 +D161,C7F4 +D162,C7F5 +D163,C7F5 +D164,C7F5 +D165,C7F6 +D166,C7F6 +D167,C7F6 +D168,C7FA +D169,C7F7 +D16A,C7F5 +D16B,C7F8 +D16C,C7F7 +D16D,C7F7 +D16E,C7F7 +D16F,C7F9 +D170,C7F7 +D171,C7F8 +D173,C7F9 +D174,C7F9 +D175,C7FA +D176,C7FB +D177,C7FC +D178,C7FA +D179,C7FA +D17A,C7F5 +D17B,C7FA +D17C,C7F9 +D17D,C7FC +D181,C7FD +D182,C7ED +D183,C7ED +D184,C7ED +D185,C7FE +D186,C7FE +D187,C7FE +D188,C7F2 +D189,C8A1 +D18A,C7ED +D18B,C7F0 +D18C,C8A1 +D18D,C8A1 +D18E,C8A1 +D18F,C8A2 +D190,C8A1 +D191,C7F0 +D193,C8A2 +D194,C8A2 +D195,C7F2 +D196,C7F2 +D197,C7F3 +D198,C7F2 +D199,C7F2 +D19A,C7ED +D19B,C7F2 +D19C,C8A2 +D19D,C7F3 +D1A1,C8A3 +D1A2,C8A4 +D1A3,C8A4 +D1A4,C8A4 +D1A5,C8A5 +D1A6,C8A5 +D1A7,C8A5 +D1A8,C8AA +D1A9,C8A6 +D1AA,C8A4 +D1AB,C8A8 +D1AC,C8A6 +D1AD,C8A6 +D1AE,C8A7 +D1AF,C8A9 +D1B0,C8A6 +D1B1,C8A8 +D1B3,C8A9 +D1B4,C8A9 +D1B5,C8AA +D1B6,C8AA +D1B7,C8AB +D1B8,C8AA +D1B9,C8AA +D1BA,C8A4 +D1BB,C8AC +D1BC,C8A9 +D1BD,C8AB +D1C1,C8AD +D1C2,C8AE +D1C3,C8AE +D1C4,C8AE +D1C5,C8AF +D1C6,C8AF +D1C7,C8AF +D1C8,C8B1 +D1C9,C8B0 +D1CA,C8AE +D1CB,C7D4 +D1CC,C8B0 +D1CD,C8B0 +D1CE,C8B0 +D1CF,C7D5 +D1D0,C8B0 +D1D1,C7D4 +D1D3,C7D5 +D1D4,C7D5 +D1D5,C8B1 +D1D6,C8B1 +D1D7,C8B2 +D1D8,C8B1 +D1D9,C8B1 +D1DA,C8AE +D1DB,C8B1 +D1DC,C7D5 +D1DD,C8B2 +D1E1,C8B3 +D1E2,C8B4 +D1E3,C8B4 +D1E4,C8B4 +D1E5,C8B5 +D1E6,C8B5 +D1E7,C8B5 +D1E8,C8B6 +D1E9,C8BB +D1EA,C8B4 +D1EB,C7DC +D1EC,C8BB +D1ED,C8BB +D1EE,C8BB +D1EF,C8BC +D1F0,C8BB +D1F1,C7DC +D1F3,C8BC +D1F4,C8BC +D1F5,C8B6 +D1F6,C8B6 +D1F7,C8B7 +D1F8,C8B6 +D1F9,C8B6 +D1FA,C8B4 +D1FB,C8B6 +D1FC,C8BC +D1FD,C8B7 +D241,C8B8 +D242,C8B9 +D243,C8B9 +D244,C8B9 +D245,C8BA +D246,C8BA +D247,C8BA +D248,C8BD +D249,C8BB +D24A,C8B9 +D24B,C8FB +D24C,C8BB +D24D,C8BB +D24E,C8BB +D24F,C8BC +D250,C8BB +D251,C8FB +D253,C8BC +D254,C8BC +D255,C8BD +D256,C8BD +D257,C8BE +D258,C8BD +D259,C8BD +D25A,C8B9 +D25B,C8BD +D25C,C8BC +D25D,C8BE +D261,C8BF +D262,C8A4 +D263,C8A4 +D264,C8A4 +D265,C8C0 +D266,C8C0 +D267,C8C0 +D268,C8C3 +D269,C8C1 +D26A,C8A4 +D26B,C8A8 +D26C,C8C1 +D26D,C8C1 +D26E,C8C1 +D26F,C8C2 +D270,C8C1 +D271,C8A8 +D273,C8C2 +D274,C8C2 +D275,C8C3 +D276,C8C3 +D277,C8AB +D278,C8C3 +D279,C8C3 +D27A,C8A4 +D27B,C8C3 +D27C,C8C2 +D27D,C8AB +D281,C8C4 +D282,C8C5 +D283,C8C5 +D284,C8C5 +D285,C8C6 +D286,C8C6 +D287,C8C6 +D288,C8CA +D289,C8C7 +D28A,C8C5 +D28B,C8C9 +D28C,C8C7 +D28D,C8C7 +D28E,C8C8 +D28F,C8ED +D290,C8C7 +D291,C8C9 +D293,C8ED +D294,C8ED +D295,C8CA +D296,C8CA +D297,C8CB +D298,C8CA +D299,C8CA +D29A,C8C5 +D29B,C8CA +D29C,C8ED +D29D,C8CB +D2A1,C8CC +D2A2,C7E4 +D2A3,C7E4 +D2A4,C7E4 +D2A5,C8CD +D2A6,C8CD +D2A7,C8CD +D2A8,C7EA +D2A9,C8CE +D2AA,C7E4 +D2AB,C8CF +D2AC,C8CE +D2AD,C8CE +D2AE,C8CE +D2AF,C7E9 +D2B0,C8CE +D2B1,C8CF +D2B3,C7E9 +D2B4,C7E9 +D2B5,C7EA +D2B6,C7EA +D2B7,C8D0 +D2B8,C7EA +D2B9,C7EA +D2BA,C7E4 +D2BB,C7EA +D2BC,C7E9 +D2BD,C8D0 +D2C1,C8D1 +D2C2,C8D2 +D2C3,C8D2 +D2C4,C8D2 +D2C5,C8D3 +D2C6,C8D3 +D2C7,C8D3 +D2C8,C8B6 +D2C9,C8D4 +D2CA,C8D2 +D2CB,C7F0 +D2CC,C8D4 +D2CD,C8D4 +D2CE,C8D4 +D2CF,C7F1 +D2D0,C8D4 +D2D1,C7F0 +D2D3,C7F1 +D2D4,C7F1 +D2D5,C8B6 +D2D6,C8B6 +D2D7,C8D5 +D2D8,C8B6 +D2D9,C8B6 +D2DA,C8D2 +D2DB,C8B6 +D2DC,C7F1 +D2DD,C8D5 +D2E1,C8D6 +D2E2,C8D7 +D2E3,C8D7 +D2E4,C8D7 +D2E5,C8D8 +D2E6,C8D8 +D2E7,C8D8 +D2E8,C8DC +D2E9,C8D9 +D2EA,C8D7 +D2EB,C8DA +D2EC,C8D9 +D2ED,C8D9 +D2EE,C8D9 +D2EF,C8DB +D2F0,C8D9 +D2F1,C8DA +D2F3,C8DB +D2F4,C8DB +D2F5,C8DC +D2F6,C8DC +D2F7,C8DD +D2F8,C8DC +D2F9,C8DC +D2FA,C8D7 +D2FB,C8DC +D2FC,C8DB +D2FD,C8DD +D341,C8DE +D342,C8DF +D343,C8DF +D344,C8DF +D345,C8E0 +D346,C8E0 +D347,C8E0 +D348,C8E3 +D349,C8E1 +D34A,C8DF +D34B,C8E2 +D34C,C8E1 +D34D,C8E1 +D34E,C8E1 +D34F,C8ED +D350,C8E1 +D351,C8E2 +D353,C8ED +D354,C8ED +D355,C8E3 +D356,C8E3 +D357,C8E4 +D358,C8E3 +D359,C8E3 +D35A,C8DF +D35B,C8E3 +D35C,C8ED +D35D,C8E4 +D361,C8E5 +D362,C8E6 +D363,C8E6 +D364,C8E6 +D365,C8E7 +D366,C8E7 +D367,C8E8 +D368,C8E9 +D369,C8EA +D36A,C8EB +D36B,C8EC +D36C,C8EA +D36D,C8EA +D36E,C8EA +D36F,C8ED +D370,C8EA +D371,C8EC +D373,C8ED +D374,C8ED +D375,C8EE +D376,C8E9 +D377,C8EF +D378,C8E9 +D379,C8E9 +D37A,C8E6 +D37B,C8F0 +D37C,C8ED +D37D,C8EF +D381,C8F1 +D382,C8F8 +D383,C8F8 +D384,C8F8 +D385,C8F2 +D386,C8F2 +D387,C8F2 +D388,C8FD +D389,C8F3 +D38A,C8F8 +D38B,C8F4 +D38C,C8F3 +D38D,C8F3 +D38E,C8F3 +D38F,C8F5 +D390,C8F3 +D391,C8F4 +D393,C8F5 +D394,C8F5 +D395,C8FD +D396,C8FD +D397,C8F6 +D398,C8FD +D399,C8FD +D39A,C8F8 +D39B,C8FD +D39C,C8F5 +D39D,C8F6 +D3A1,C8F7 +D3A2,C8F8 +D3A3,C8F8 +D3A4,C8F8 +D3A5,C8F9 +D3A6,C8F9 +D3A7,C8F9 +D3A8,C8FD +D3A9,C8FA +D3AA,C8F8 +D3AB,C8FB +D3AC,C8FA +D3AD,C8FA +D3AE,C8FA +D3AF,C8FC +D3B0,C8FA +D3B1,C8FB +D3B3,C8FC +D3B4,C8FC +D3B5,C8FD +D3B6,C8FD +D3B7,C8FE +D3B8,C8FD +D3B9,C8FD +D3BA,C8F8 +D3BB,C8FD +D3BC,C8FC +D3BD,C8FE +#2018.02.14 ߰ +8841,A4A1 +8C41,A4A2 +8444,A4A3 +9041,A4A4 +8446,A4A5 +8447,A4A6 +9441,A4A7 +9841,A4A8 +9C41,A4A9 +844A,A4AA +844B,A4AB +844C,A4AC +844D,A4AD +844E,A4AE +844F,A4AF +8450,A4B0 +A041,A4B1 +A441,A4B2 +A841,A4B3 +8454,A4B4 +AC41,A4B5 +B041,A4B6 +B441,A4B7 +B841,A4B8 +BC41,A4B9 +C041,A4BA +C441,A4BB +C841,A4BC +CC41,A4BD +D041,A4BE +8461,A4BF +8481,A4C0 +84A1,A4C1 +84C1,A4C2 +84E1,A4C3 +8541,A4C4 +8561,A4C5 +8581,A4C6 +85A1,A4C7 +85C1,A4C8 +85E1,A4C9 +8641,A4CA +8661,A4CB +8681,A4CC +86A1,A4CD +86C1,A4CE +86E1,A4CF +8741,A4D0 +8761,A4D1 +8781,A4D2 +87A1,A4D3 \ No newline at end of file diff --git a/src/main/java/com/eactive/eai/transformer/util/code_ext.tab b/src/main/java/com/eactive/eai/transformer/util/code_ext.tab new file mode 100644 index 0000000..3c0679d --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/code_ext.tab @@ -0,0 +1,17076 @@ +#EBCDIC,ASCII +4040,A1A1 +4141,A1A2 +4142,A1A3 +4143,A1A4 +4144,A1A5 +4145,A1A6 +4146,A1A7 +4147,A1A8 +4148,A1A9 +4149,A1AA +414A,A1AB +414B,A1AC +414C,A3FE +414D,A1AE +414E,A1AF +414F,A1B0 +4150,A1B1 +4151,A1B2 +4152,A1B3 +4153,A1B4 +4154,A1B5 +4155,A1B6 +4156,A1B7 +4157,A1B8 +4158,A1B9 +4159,A1BA +415A,A1BB +415B,A1BC +415C,A1BD +415D,A1BE +415E,A1BF +415F,A1C0 +4163,A1C4 +4164,A1C5 +4165,A1C6 +4166,A1C7 +4167,A1C8 +4168,A1C9 +416A,A3DE +416B,A1CC +416C,A1CD +416D,A7A2 +416E,A7A3 +416F,A7A4 +4170,A7A6 +4171,A7AE +4172,A7AF +4173,A7B0 +4174,A7B7 +4175,A7B8 +4176,A1D7 +4177,A1D8 +4178,A1D9 +4179,A1DA +417A,A1DB +417B,A1DC +417C,A1DD +417D,A1DE +417E,A1DF +417F,A1E0 +4180,A1E1 +4181,A1E2 +4182,A1E3 +4183,A1E4 +4184,A1E5 +4185,A1E6 +4186,A1E7 +4187,A1E8 +4188,A1E9 +4189,A1EA +418A,A1EB +418B,A3DB +418C,A3DD +418D,A1C1 +418E,A1C2 +418F,A1C3 +4190,A1CA +4191,A1CE +4192,A1CF +4193,A1D0 +4194,A1D1 +4195,A1D2 +4196,A1D3 +4197,A1D4 +4198,A1D5 +4199,A1D6 +419A,A1EC +419B,A1ED +419C,A1EE +419D,A1EF +424A,A1CB +424B,A3AE +424C,A3BC +424D,A3A8 +424E,A3AB +424F,A3FC +4250,A3A6 +425A,A3A1 +425B,A3A4 +425C,A3AA +425D,A3A9 +425E,A3BB +425F,A1FE +4260,A3AD +4261,A3AF +426B,A3AC +426C,A3A5 +426D,A3DF +426E,A3BE +426F,A3BF +4279,A3E0 +427A,A3BA +427B,A3A3 +427C,A3C0 +427D,A3A7 +427E,A3BD +427F,A3A2 +4281,A3E1 +4282,A3E2 +4283,A3E3 +4284,A3E4 +4285,A3E5 +4286,A3E6 +4287,A3E7 +4288,A3E8 +4289,A3E9 +4291,A3EA +4292,A3EB +4293,A3EC +4294,A3ED +4295,A3EE +4296,A3EF +4297,A3F0 +4298,A3F1 +4299,A3F2 +42A1,A1AD +42A2,A3F3 +42A3,A3F4 +42A4,A3F5 +42A5,A3F6 +42A6,A3F7 +42A7,A3F8 +42A8,A3F9 +42A9,A3FA +42C0,A3FB +42C1,A3C1 +42C2,A3C2 +42C3,A3C3 +42C4,A3C4 +42C5,A3C5 +42C6,A3C6 +42C7,A3C7 +42C8,A3C8 +42C9,A3C9 +42D0,A3FD +42D1,A3CA +42D2,A3CB +42D3,A3CC +42D4,A3CD +42D5,A3CE +42D6,A3CF +42D7,A3D0 +42D8,A3D1 +42D9,A3D2 +42E0,A3DC +42E2,A3D3 +42E3,A3D4 +42E4,A3D5 +42E5,A3D6 +42E6,A3D7 +42E7,A3D8 +42E8,A3D9 +42E9,A3DA +42F0,A3B0 +42F1,A3B1 +42F2,A3B2 +42F3,A3B3 +42F4,A3B4 +42F5,A3B5 +42F6,A3B6 +42F7,A3B7 +42F8,A3B8 +42F9,A3B9 +4341,A4D5 +4342,A4D6 +4343,A4D7 +4344,A4D8 +4345,A4D9 +4346,A4DA +4347,A4DB +4348,A4DC +4349,A4DD +434A,A4DE +434B,A4DF +434C,A4E0 +434D,A4E1 +434E,A4E2 +434F,A4E3 +4350,A4E4 +4351,A4E5 +4352,A4E6 +4353,A4E7 +4354,A4E8 +4355,A4E9 +4356,A4EA +4357,A4EB +4358,A4EC +4359,A4ED +435A,A4EE +435B,A4EF +435C,A4F0 +435D,A4F1 +435E,A4F2 +435F,A4F3 +4360,A4F4 +4361,A4F5 +4362,A4F6 +4363,A4F7 +4364,A4F8 +4365,A4F9 +4366,A4FA +4367,A4FB +4368,A4FC +4369,A4FD +436A,A4FE +4441,AAA1 +4442,AAA2 +4443,AAA3 +4444,AAA4 +4445,AAA5 +4446,AAA6 +4447,AAA7 +4448,AAA8 +4449,AAA9 +444A,AAAA +444B,AAAB +444C,AAAC +444D,AAAD +444E,AAAE +444F,AAAF +4450,AAB0 +4451,AAB1 +4452,AAB2 +4453,AAB3 +4454,AAB4 +4455,AAB5 +4456,AAB6 +4457,AAB7 +4458,AAB8 +4459,AAB9 +445A,AABA +445B,AABB +445C,AABC +445D,AABD +445E,AABE +445F,AABF +4460,AAC0 +4461,AAC1 +4462,AAC2 +4463,AAC3 +4464,AAC4 +4465,AAC5 +4466,AAC6 +4467,AAC7 +4468,AAC8 +4469,AAC9 +446A,AACA +446B,AACB +446C,AACC +446D,AACD +446E,AACE +446F,AACF +4470,AAD0 +4471,AAD1 +4472,AAD2 +4473,AAD3 +4474,AAD4 +4475,AAD5 +4476,AAD6 +4477,AAD7 +4478,AAD8 +4479,AAD9 +447A,AADA +447B,AADB +447C,AADC +447D,AADD +447E,AADE +447F,AADF +4480,AAE0 +4481,AAE1 +4482,AAE2 +4483,AAE3 +4484,AAE4 +4485,AAE5 +4486,AAE6 +4487,AAE7 +4488,AAE8 +4489,AAE9 +448A,AAEA +448B,AAEB +448C,AAEC +448D,AAED +448E,AAEE +448F,AAEF +4490,AAF0 +4491,AAF1 +4492,AAF2 +4493,AAF3 +4541,ABA1 +4542,ABA2 +4543,ABA3 +4544,ABA4 +4545,ABA5 +4546,ABA6 +4547,ABA7 +4548,ABA8 +4549,ABA9 +454A,ABAA +454B,ABAB +454C,ABAC +454D,ABAD +454E,ABAE +454F,ABAF +4550,ABB0 +4551,ABB1 +4552,ABB2 +4553,ABB3 +4554,ABB4 +4555,ABB5 +4556,ABB6 +4557,ABB7 +4558,ABB8 +4559,ABB9 +455A,ABBA +455B,ABBB +455C,ABBC +455D,ABBD +455E,ABBE +455F,ABBF +4560,ABC0 +4561,ABC1 +4562,ABC2 +4563,ABC3 +4564,ABC4 +4565,ABC5 +4566,ABC6 +4567,ABC7 +4568,ABC8 +4569,ABC9 +456A,ABCA +456B,ABCB +456C,ABCC +456D,ABCD +456E,ABCE +456F,ABCF +4570,ABD0 +4571,ABD1 +4572,ABD2 +4573,ABD3 +4574,ABD4 +4575,ABD5 +4576,ABD6 +4577,ABD7 +4578,ABD8 +4579,ABD9 +457A,ABDA +457B,ABDB +457C,ABDC +457D,ABDD +457E,ABDE +457F,ABDF +4580,ABE0 +4581,ABE1 +4582,ABE2 +4583,ABE3 +4584,ABE4 +4585,ABE5 +4586,ABE6 +4587,ABE7 +4588,ABE8 +4589,ABE9 +458A,ABEA +458B,ABEB +458C,ABEC +458D,ABED +458E,ABEE +458F,ABEF +4590,ABF0 +4591,ABF1 +4592,ABF2 +4593,ABF3 +4594,ABF4 +4595,ABF5 +4596,ABF6 +4641,A5A1 +4642,A5A2 +4643,A5A3 +4644,A5A4 +4645,A5A5 +4646,A5A6 +4647,A5A7 +4648,A5A8 +4649,A5A9 +464A,A5AA +4650,A5B0 +4651,A5B1 +4652,A5B2 +4653,A5B3 +4654,A5B4 +4655,A5B5 +4656,A5B6 +4657,A5B7 +4658,A5B8 +4659,A5B9 +4661,A5C1 +4662,A5C2 +4663,A5C3 +4664,A5C4 +4665,A5C5 +4666,A5C6 +4667,A5C7 +4668,A5C8 +4669,A5C9 +466A,A5CA +466B,A5CB +466C,A5CC +466D,A5CD +466E,A5CE +466F,A5CF +4670,A5D0 +4671,A5D1 +4672,A5D2 +4673,A5D3 +4674,A5D4 +4675,A5D5 +4676,A5D6 +4677,A5D7 +4678,A5D8 +4681,A5E1 +4682,A5E2 +4683,A5E3 +4684,A5E4 +4685,A5E5 +4686,A5E6 +4687,A5E7 +4688,A5E8 +4689,A5E9 +468A,A5EA +468B,A5EB +468C,A5EC +468D,A5ED +468E,A5EE +468F,A5EF +4690,A5F0 +4691,A5F1 +4692,A5F2 +4693,A5F3 +4694,A5F4 +4695,A5F5 +4696,A5F6 +4697,A5F7 +4698,A5F8 +4741,A6A1 +4742,A6A2 +4743,A6A3 +4744,A6A4 +4745,A6A5 +4746,A6A6 +4747,A6A7 +4748,A6A8 +4749,A6A9 +474A,A6AA +474B,A6AB +474C,A6AC +474D,A6AD +474E,A6AE +474F,A6AF +4750,A6B0 +4751,A6B1 +4752,A6B2 +4753,A6B3 +4754,A6B4 +4755,A6B5 +4756,A6B6 +4757,A6B7 +4758,A6B8 +4759,A6B9 +475A,A6BA +475B,A6BB +475C,A6BC +475D,A6BD +475E,A6BE +475F,A6BF +4760,A6C0 +4761,A6C1 +4762,A6C2 +4763,A6C3 +4764,A6C4 +4765,A6C5 +4766,A6C6 +4767,A6C7 +4768,A6C8 +4769,A6C9 +476A,A6CA +476B,A6CB +476C,A6CC +476D,A6CD +476E,A6CE +476F,A6CF +4770,A6D0 +4771,A6D1 +4772,A6D2 +4773,A6D3 +4774,A6D4 +4775,A6D5 +4776,A6D6 +4777,A6D7 +4778,A6D8 +4779,A6D9 +477A,A6DA +477B,A6DB +477C,A6DC +477D,A6DD +477E,A6DE +477F,A6DF +4780,A6E0 +4781,A6E1 +4782,A6E2 +4783,A6E3 +4784,A6E4 +4841,A7A1 +4842,A7A5 +4843,A7A7 +4844,A7A8 +4845,A7A9 +4846,A7AA +4847,A7AB +4848,A7AC +4849,A7AD +484A,A7B1 +484B,A7B2 +484C,A7B3 +484D,A7B4 +484E,A7B5 +484F,A7B6 +4850,A7B9 +4851,A7BA +4852,A7BB +4853,A7BC +4854,A7BD +4855,A7BE +4856,A7BF +4857,A7C0 +4858,A7C1 +4859,A7C2 +485A,A7C3 +485B,A7C4 +485C,A7C5 +485D,A7C6 +485E,A7C7 +485F,A7C8 +4860,A7C9 +4861,A7CA +4862,A7CB +4863,A7CC +4864,A7CD +4865,A7CE +4866,A7CF +4867,A7D0 +4868,A7D1 +4869,A7D2 +486A,A7D3 +486B,A7D4 +486C,A7D5 +486D,A7D6 +486E,A7D7 +486F,A7D8 +4870,A7D9 +4871,A7DA +4872,A7DB +4873,A7DC +4874,A7DD +4875,A7DE +4876,A7DF +4877,A7E0 +4878,A7E1 +4879,A7E2 +487A,A7E3 +487B,A7E4 +487C,A7E5 +487D,A7E6 +487E,A7E7 +487F,A7E8 +4880,A7E9 +4881,A7EA +4882,A7EB +4883,A7EC +4884,A7ED +4885,A7EE +4886,A7EF +4941,A1F0 +4942,A1F1 +4943,A1F2 +4944,A1F3 +4945,A1F4 +4946,A1F5 +4947,A1F6 +4948,A1F7 +4949,A1F8 +494A,A1F9 +494B,A1FA +494C,A1FB +494D,A1FC +494E,A1FD +494F,A2A1 +4950,A2A2 +4951,A2A3 +4952,A2A4 +4953,A2A5 +4954,A2A6 +4955,A2A7 +4956,A2A8 +4957,A2A9 +4958,A2AA +4959,A2AB +495A,A2AC +495B,A2AD +495C,A2AE +495D,A2AF +495E,A2B0 +495F,A2B1 +4960,A2B2 +4961,A2B3 +4962,A2B4 +4963,A2B5 +4964,A2B6 +4965,A2B7 +4966,A2B8 +4967,A2B9 +4968,A2BA +4969,A2BB +496A,A2BC +496B,A2BD +496C,A2BE +496D,A2BF +496E,A2C0 +496F,A2C1 +4970,A2C2 +4971,A2C3 +4972,A2C4 +4973,A2C5 +4974,A2C6 +4975,A2C7 +4976,A2C8 +4977,A2C9 +4978,A2CA +4979,A2CB +497A,A2CC +497B,A2CD +497C,A2CE +497D,A2CF +497E,A2D0 +497F,A2D1 +4980,A2D2 +4981,A2D3 +4982,A2D4 +4983,A2D5 +4984,A2D6 +4985,A2D7 +4986,A2D8 +4987,A2D9 +4988,A2DA +4989,A2DB +498A,A2DC +498B,A2DD +498C,A2DE +498D,A2DF +498E,A2E0 +498F,A2E1 +4990,A2E2 +4991,A2E3 +4992,A2E4 +4993,A2E5 +4995,A2E6 +4996,A2E7 +4A41,ACA1 +4A42,ACA2 +4A43,ACA3 +4A44,ACA4 +4A45,ACA5 +4A46,ACA6 +4A47,ACA7 +4A48,ACA8 +4A49,ACA9 +4A4A,ACAA +4A4B,ACAB +4A4C,ACAC +4A4D,ACAD +4A4E,ACAE +4A4F,ACAF +4A50,ACB0 +4A51,ACB1 +4A52,ACB2 +4A53,ACB3 +4A54,ACB4 +4A55,ACB5 +4A56,ACB6 +4A57,ACB7 +4A58,ACB8 +4A59,ACB9 +4A5A,ACBA +4A5B,ACBB +4A5C,ACBC +4A5D,ACBD +4A5E,ACBE +4A5F,ACBF +4A60,ACC0 +4A61,ACC1 +4A62,ACD1 +4A63,ACD2 +4A64,ACD3 +4A65,ACD4 +4A66,ACD5 +4A67,ACD6 +4A68,ACD7 +4A69,ACD8 +4A6A,ACD9 +4A6B,ACDA +4A6C,ACDB +4A6D,ACDC +4A6E,ACDD +4A6F,ACDE +4A70,ACDF +4A71,ACE0 +4A72,ACE1 +4A73,ACE2 +4A74,ACE3 +4A75,ACE4 +4A76,ACE5 +4A77,ACE6 +4A78,ACE7 +4A79,ACE8 +4A7A,ACE9 +4A7B,ACEA +4A7C,ACEB +4A7D,ACEC +4A7E,ACED +4A7F,ACEE +4A80,ACEF +4A81,ACF0 +4A82,ACF1 +4B41,A8A1 +4B42,A8A2 +4B43,A8A3 +4B44,A8A4 +4B46,A8A6 +4B48,A8A8 +4B49,A8A9 +4B4A,A8AA +4B4B,A8AB +4B4C,A8AC +4B4D,A8AD +4B4E,A8AE +4B4F,A8AF +4B51,A8B1 +4B52,A8B2 +4B53,A8B3 +4B54,A8B4 +4B55,A8B5 +4B56,A8B6 +4B57,A8B7 +4B58,A8B8 +4B59,A8B9 +4B5A,A8BA +4B5B,A8BB +4B5C,A8BC +4B5D,A8BD +4B5E,A8BE +4B5F,A8BF +4B60,A8C0 +4B61,A8C1 +4B62,A8C2 +4B63,A8C3 +4B64,A8C4 +4B65,A8C5 +4B66,A8C6 +4B67,A8C7 +4B68,A8C8 +4B69,A8C9 +4B6A,A8CA +4B6B,A8CB +4B6C,A8CC +4B6D,A8CD +4B6E,A8CE +4B6F,A8CF +4B70,A8D0 +4B71,A8D1 +4B72,A8D2 +4B73,A8D3 +4B74,A8D4 +4B75,A8D5 +4B76,A8D6 +4B77,A8D7 +4B78,A8D8 +4B79,A8D9 +4B7A,A8DA +4B7B,A8DB +4B7C,A8DC +4B7D,A8DD +4B7E,A8DE +4B7F,A8DF +4B80,A8E0 +4B81,A8E1 +4B82,A8E2 +4B83,A8E3 +4B84,A8E4 +4B85,A8E5 +4B86,A8E6 +4B87,A8E7 +4B88,A8E8 +4B89,A8E9 +4B8A,A8EA +4B8B,A8EB +4B8C,A8EC +4B8D,A8ED +4B8E,A8EE +4B8F,A8EF +4B90,A8F0 +4B91,A8F1 +4B92,A8F2 +4B93,A8F3 +4B94,A8F4 +4B95,A8F5 +4B96,A8F6 +4B97,A8F7 +4B98,A8F8 +4B99,A8F9 +4B9A,A8FA +4B9B,A8FB +4B9C,A8FC +4B9D,A8FD +4B9E,A8FE +4BA0,A9A1 +4BA1,A9A2 +4BA2,A9A3 +4BA3,A9A4 +4BA4,A9A5 +4BA5,A9A6 +4BA6,A9A7 +4BA7,A9A8 +4BA8,A9A9 +4BA9,A9AA +4BAA,A9AB +4BAB,A9AC +4BAC,A9AD +4BAD,A9AE +4BAE,A9AF +4BAF,A9B0 +4BB0,A9B1 +4BB1,A9B2 +4BB2,A9B3 +4BB3,A9B4 +4BB4,A9B5 +4BB5,A9B6 +4BB6,A9B7 +4BB7,A9B8 +4BB8,A9B9 +4BB9,A9BA +4BBA,A9BB +4BBB,A9BC +4BBC,A9BD +4BBD,A9BE +4BBE,A9BF +4BBF,A9C0 +4BC0,A9C1 +4BC1,A9C2 +4BC2,A9C3 +4BC3,A9C4 +4BC4,A9C5 +4BC5,A9C6 +4BC6,A9C7 +4BC7,A9C8 +4BC8,A9C9 +4BC9,A9CA +4BCA,A9CB +4BCB,A9CC +4BCC,A9CD +4BCD,A9CE +4BCE,A9CF +4BCF,A9D0 +4BD0,A9D1 +4BD1,A9D2 +4BD2,A9D3 +4BD3,A9D4 +4BD4,A9D5 +4BD5,A9D6 +4BD6,A9D7 +4BD7,A9D8 +4BD8,A9D9 +4BD9,A9DA +4BDA,A9DB +4BDB,A9DC +4BDC,A9DD +4BDD,A9DE +4BDE,A9DF +4BDF,A9E0 +4BE0,A9E1 +4BE1,A9E2 +4BE2,A9E3 +4BE3,A9E4 +4BE4,A9E5 +4BE5,A9E6 +4BE6,A9E7 +4BE7,A9E8 +4BE8,A9E9 +4BE9,A9EA +4BEA,A9EB +4BEB,A9EC +4BEC,A9ED +4BED,A9EE +4BEE,A9EF +4BEF,A9F0 +4BF0,A9F1 +4BF1,A9F2 +4BF2,A9F3 +4BF3,A9F4 +4BF4,A9F5 +4BF5,A9F6 +4BF6,A9F7 +4BF7,A9F8 +4BF8,A9F9 +4BF9,A9FA +4BFA,A9FB +4BFB,A9FC +4BFC,A9FD +4BFD,A9FE +5041,CAA1 +5042,CAA2 +5043,CAA3 +5044,CAA4 +5045,CAA5 +5046,CAA6 +5047,CAA7 +5048,CAA8 +5049,CAA9 +504A,CAAA +504B,CAAB +504C,CAAC +504D,CAAF +504E,CAAD +504F,CAB0 +5050,CAB3 +5051,CAB4 +5052,CAB5 +5053,CAB6 +5054,CAB7 +5055,CAB8 +5056,CAB9 +5057,CABA +5058,CABB +5059,CABC +505A,CABD +505B,CABE +505C,CABF +505D,CAC0 +505F,CAC1 +5061,CAC3 +5062,CAC4 +5063,CAC5 +5064,CAC6 +5065,CAC7 +5066,CAC8 +5067,CACA +5068,CACB +5069,CACC +506A,CACD +506B,CACE +506C,CACF +506D,CAD0 +506E,CAD1 +506F,CAD2 +5070,CAD5 +5071,CAD6 +5072,CAD7 +5073,CAD9 +5074,CADA +5075,CADB +5076,CADD +5077,CADE +5078,CADC +5079,CADF +507A,CAE0 +507B,CAE1 +507C,CAE2 +507D,CAE3 +507E,CAE4 +507F,CAE5 +5080,CAE6 +5081,CAE8 +5083,CAE7 +5084,CAEA +5085,CAEB +5086,CAEC +5087,CAED +5088,CAEE +5089,CAEF +508A,CAF0 +508B,CAF2 +508C,CAF3 +508D,CAF4 +508E,CAF5 +508F,CAF6 +5090,CAF7 +5091,CAF8 +5092,CAFA +5094,CAFC +5095,CAFE +5096,CBA1 +5097,CBA2 +5098,CBA3 +5099,CBA4 +509A,CBA5 +509B,CBA6 +509C,CBAA +509D,CBA7 +509E,CBA9 +509F,CBAB +50A0,CBAC +50A1,CBAD +50A2,CBAE +50A3,CBAF +50A4,CBB0 +50A5,CBB2 +50A6,CBB5 +50A7,CBBA +50A8,CBB3 +50A9,CBB7 +50AA,CBB9 +50AB,CBBB +50AC,CBBC +50AD,CBBD +50AE,CBBF +50AF,CBC0 +50B0,CBC1 +50B1,CBC2 +50B2,CBC4 +50B3,CBC5 +50B4,CBC6 +50B5,CBC7 +50B6,CBC8 +50B7,CBC9 +50B8,CBCA +50B9,CBCB +50BA,CBCC +50BB,CBCD +50BC,CBCE +50BD,CBCF +50BE,CBD2 +50BF,CBD4 +50C0,CBD5 +50C1,CBD6 +50C2,CBD7 +50C3,CBD8 +50C4,CBD9 +50C5,CBDB +50C6,CBDC +50C7,CBDD +50C8,CBDE +50C9,CBDF +50CA,CBE0 +50CB,CBE2 +50CC,CBE3 +50CD,CBE1 +50CE,CBE5 +50CF,CBE8 +50D0,CBE7 +50D2,CBEA +50D3,CBEB +50D4,CBEC +50D5,CBED +50D6,CBEE +50D7,CBEF +50D8,CBF0 +50D9,CBF3 +50DA,CBF4 +50DB,CBF5 +50DC,CBF6 +50DD,CBF7 +50DE,CBF8 +50DF,CBF9 +50E0,CBFB +50E1,CBFC +50E2,CBFE +50E3,CCA1 +50E4,CCA3 +50E5,CCA4 +50E6,CCA5 +50E7,CCA7 +50E8,CCA8 +50E9,CCA9 +50EA,CCAA +50EB,CCAB +50EC,CCAC +50ED,CCAD +50EE,CCAF +50EF,CCB0 +50F1,CCB1 +50F2,CCB7 +50F3,CCB2 +50F4,CCB3 +50F5,CCB4 +50F6,CCB5 +50F7,CCB6 +50F8,CCB8 +50F9,CCB9 +50FA,CCBA +50FB,CCBB +50FC,CCBE +50FD,CCBD +50FE,CCBF +5141,CCC0 +5142,CCC1 +5143,CCC2 +5144,CCC3 +5145,CCC4 +5147,CCC5 +5148,CCC7 +5149,CCC8 +514A,CCCB +514B,CCCD +514C,CCCE +514D,CCCF +514F,CCD1 +5150,CCD2 +5151,CCD3 +5152,CCD4 +5153,CCD9 +5155,CCD6 +5156,CCD7 +5157,CCD8 +5158,CCDA +5159,CCDB +515B,CCDC +515C,CCDD +515E,CCDF +515F,CCE1 +5161,CCE2 +5162,CCE3 +5163,CCE4 +5164,CCE5 +5165,CCE6 +5166,CCE7 +5167,CCE8 +5168,CCE9 +5169,CCEA +516A,CCEB +516B,CCEC +516C,CCED +516D,CCEE +516E,CCEF +516F,CCF0 +5170,CCF1 +5171,CCF2 +5172,CCF3 +5173,CCF4 +5174,CCF5 +5175,CCF6 +5176,CCF8 +5177,CCF9 +5178,CCFA +5179,CCFB +517A,CCFC +517B,CCFD +517C,CCFE +517D,CDA2 +517E,CDA3 +517F,CDA4 +5180,CDA5 +5182,CDA6 +5183,CDA7 +5184,CDA8 +5185,CDA9 +5186,CDAA +5187,CDAB +5188,CDAD +5189,CDAC +518B,CDAE +518C,CDB0 +518D,CDAF +518E,CDB1 +518F,CDB2 +5190,CDB3 +5191,CDB4 +5192,CDB5 +5193,CDB7 +5194,CDB8 +5195,CDB9 +5196,CDBA +5197,CDBB +5198,CDBD +519A,CDBF +519B,CDC0 +519C,CDC1 +519D,CDCC +519F,CDC3 +51A0,CDC2 +51A1,CDC5 +51A2,CDC6 +51A3,CDC7 +51A4,CDC8 +51A5,CDCB +51A6,CDCD +51A8,CDCE +51A9,CDCF +51AA,CDD0 +51AB,CDD1 +51AC,CDD2 +51AD,CDD3 +51AE,CDD4 +51AF,CDD5 +51B0,CDD6 +51B1,CDD7 +51B2,CDD8 +51B3,CDD9 +51B4,CDDA +51B5,CDDB +51B6,CDDC +51B7,CDDD +51B8,CDDE +51B9,CDDF +51BA,CDE0 +51BB,CDE1 +51BC,CDE2 +51BD,CDE3 +51BE,CDE5 +51BF,CDE7 +51C0,CDE8 +51C1,CDE9 +51C2,CDEA +51C3,CDEB +51C4,CDEC +51C5,CDED +51C6,CDEE +51C7,CDEF +51C8,CDF8 +51C9,CDF1 +51CA,CDF0 +51CB,CDF2 +51CC,CDF3 +51CD,CDF4 +51D0,CDF6 +51D2,CDFB +51D3,CDFC +51D4,CDFD +51D5,CDFE +51D6,CEA1 +51D7,CEA2 +51D9,CEA3 +51DA,CEA4 +51DB,CEA6 +51DC,CEA8 +51DD,CEA9 +51DE,CEAA +51DF,CEAB +51E0,CEAC +51E2,CEAD +51E3,CEAE +51E4,CEAF +51E5,CEB0 +51E6,CEB1 +51E7,CEB2 +51E8,CEB6 +51E9,CEB3 +51EA,CEB4 +51EC,CEB7 +51ED,CEB8 +51EE,CEB9 +51EF,CEBA +51F0,CEBB +51F1,CEBC +51F2,CEBD +51F4,CEBE +51F5,CEBF +51F6,CEC0 +51F7,CEC1 +51F8,CEC3 +51F9,CEC4 +51FA,CEC5 +51FB,CEC6 +51FC,CEC7 +51FD,CEC8 +51FE,CECA +5241,CECB +5242,CECC +5243,CECD +5244,CECE +5245,CECF +5246,CED0 +5247,CED1 +5248,CED2 +5249,CED3 +524A,CED4 +524B,CED5 +524C,CED6 +524D,CED7 +524E,CED8 +524F,CED9 +5250,CEDA +5251,CEDB +5252,CEDC +5253,CEDD +5254,CEDE +5255,CEDF +5256,CEE0 +5257,CEE1 +5258,CEE2 +5259,CEE3 +525A,CEE4 +525B,CEE5 +525C,CEE7 +525D,CEE6 +525E,CEE8 +525F,CEE9 +5260,CEEA +5261,CEEB +5262,CEEC +5263,CEED +5264,CEEE +5265,CEEF +5266,CEF0 +5267,CEF1 +5268,CEF2 +5269,CEF3 +526A,CEF4 +526C,CEF5 +526D,CEF6 +526E,CEF7 +526F,CEF8 +5270,CEF9 +5271,CEFA +5272,CEFB +5274,CEFC +5276,CEFD +5277,CEFE +5278,CFA1 +5279,CFA2 +527A,CFA3 +527B,CFA4 +527C,CFA5 +527D,CFA7 +5280,CFA8 +5281,CFA9 +5282,CFAA +5283,CFAB +5284,CFAC +5285,CFAD +5287,CFAE +5288,CFAF +5289,CFB0 +528A,CFB1 +528B,CFB2 +528C,CFB3 +528D,CFB4 +528E,CFB5 +528F,CFB6 +5290,CFB7 +5291,CFB8 +5292,CFB9 +5294,CFBA +5295,CFBB +5296,CFBC +5297,CFBD +5298,CFC5 +5299,CFBF +529A,CFC0 +529B,CFC1 +529C,CFC2 +529D,CFC3 +529F,CFC4 +52A0,CFC6 +52A1,CFC7 +52A2,CFC8 +52A3,CFC9 +52A5,CFCB +52A6,CFCC +52A7,CFCD +52A8,CFCE +52A9,CFCF +52AA,CFD0 +52AB,CFD1 +52AD,CFD2 +52AE,CFD3 +52AF,CFD5 +52B0,CFD7 +52B1,CFD8 +52B2,CFDA +52B3,CFD6 +52B4,CFDB +52B5,CFDC +52B6,CFDD +52B7,CFDE +52B8,CFDF +52B9,CFE0 +52BA,CFE1 +52BB,CFE2 +52BC,CFE3 +52BD,CFE5 +52BE,CFE6 +52BF,CFE7 +52C0,CFE8 +52C1,CFE9 +52C2,CFEA +52C3,CFEB +52C4,CFED +52C5,CFEF +52C6,CFF0 +52C7,CFF3 +52C8,CFF4 +52C9,CFF5 +52CA,CFF6 +52CB,CFF7 +52CC,CFF8 +52CE,CFF9 +52CF,CFFA +52D0,CFFD +52D1,CFFE +52D2,D0A1 +52D3,D0A2 +52D4,D0A3 +52D5,D0A4 +52D6,D0A5 +52D7,D0A6 +52D8,D0A8 +52D9,D0A9 +52DA,D0AA +52DB,D0AD +52DC,D0AC +52DD,D0AE +52DE,D0AF +52DF,D0B0 +52E0,D0B1 +52E1,D0B3 +52E2,D0B5 +52E3,D0B6 +52E4,D0B7 +52E5,D0B8 +52E6,D0B9 +52E7,D0BA +52E8,D0BB +52E9,D0BC +52EA,D0BD +52EB,D0BF +52EC,D0BE +52ED,D0C0 +52EE,D0C1 +52EF,D0C3 +52F1,D0C4 +52F2,D0C5 +52F3,D0C6 +52F4,D0C7 +52F6,D0C8 +52F7,D0C9 +52F8,D0CA +52F9,D0CB +52FA,D0CC +52FB,D0CD +52FC,D0CE +52FD,D0CF +52FE,D0D0 +5341,D0D1 +5342,D0D3 +5343,D0D5 +5344,D0D6 +5345,D0D7 +5346,D0D8 +5347,D0DB +5348,D0DA +5349,D0DC +534A,D0DD +534B,D0DE +534C,D0E0 +534E,D0E1 +534F,D0E2 +5350,D0E3 +5352,D0E4 +5353,D0E5 +5354,D0E6 +5355,D0E7 +5356,D0E8 +5357,D0E9 +5358,D0EA +5359,D0EB +535A,D0EC +535B,D0ED +535C,D0EE +535D,D0EF +535E,D0F0 +535F,D0F1 +5360,D0F3 +5361,D0F4 +5362,D0F5 +5363,D0F6 +5364,D0F7 +5365,D1C2 +5366,D0F8 +5367,D0FA +5368,D0F9 +5369,D0FB +536A,D0FC +536B,D0FD +536C,D0FE +536D,D1A2 +536E,D1A3 +536F,D1A4 +5370,D1A5 +5371,D1A6 +5372,D1A7 +5373,D1A8 +5374,D1A9 +5375,D1AA +5376,D1AB +5377,D1AD +5378,D1AE +5379,D1B0 +537A,D1B1 +537B,D1B2 +537C,D1B3 +537D,D1B4 +537E,D1B6 +537F,D1B7 +5380,D1B8 +5381,D1B9 +5382,D1BA +5383,D1BB +5385,D1BD +5386,D1BE +5387,D1BF +5388,D1A1 +5389,D1C0 +538A,D1C1 +538B,D1C3 +538C,D1C4 +538D,D1C6 +538E,D1C7 +538F,D1C8 +5390,D1C9 +5391,D1CA +5393,D1CB +5394,D1CC +5395,D1CD +5396,D1CE +5397,D1CF +5398,D1D0 +5399,D1D1 +539B,D1D2 +539C,D1D3 +539D,D1D7 +539E,D1D9 +539F,D1DA +53A1,D1E1 +53A2,D1E7 +53A3,D1EC +53A4,D1EE +53A5,D1F1 +53A6,D1F4 +53A7,D1F3 +53A8,D1F5 +53AA,D1FB +53AB,D2A1 +53AC,D2A5 +53AD,D2A6 +53AF,D2AC +53B0,D2AE +53B1,D2AF +53B2,D2B0 +53B3,D2B1 +53B5,D2B3 +53B6,D2B4 +53B7,D2B6 +53B8,D2B7 +53B9,D2B8 +53BA,D2B9 +53BB,D2BA +53BD,D2BB +53BF,D2BD +53C0,D2BF +53C2,D2C0 +53C3,D2C1 +53C4,D2C5 +53C5,D2D8 +53C6,D2DB +53C7,D2DC +53C8,D2DD +53C9,D2E0 +53CA,D2E3 +53CC,D2EC +53CD,D2ED +53CE,D2EF +53CF,D2F6 +53D0,D2F9 +53D1,D2FA +53D2,D2FB +53D3,D2FC +53D4,D2FD +53D5,D2FE +53D6,D3A1 +53D7,D3A3 +53D8,D3A4 +53D9,D3A5 +53DA,D3A6 +53DB,D3A8 +53DC,D3A9 +53DD,D3AA +53DE,D3AB +53DF,D3AC +53E0,D3AD +53E1,D3AE +53E2,D3AF +53E3,D3B0 +53E4,D3B1 +53E5,D3B2 +53E6,D3B3 +53E7,D3B4 +53EA,D3B5 +53EB,D3B7 +53EC,D3B8 +53ED,D3B9 +53F0,D3BA +53F1,D3BD +53F2,D3BE +53F3,D3BF +53F4,D3C1 +53F5,D3C2 +53F6,D3C3 +53F7,D3C4 +53F8,D3C5 +53F9,D3C7 +53FA,D3C8 +53FB,D3C9 +53FC,D3CB +53FD,D3CD +53FE,D3CE +5441,D3CF +5443,D3D1 +5444,D3D2 +5445,D3D3 +5446,D3D0 +5447,D3D5 +5448,D3D6 +5449,D3D7 +544A,D3D8 +544C,D3DA +544D,D3DB +544E,D3DC +544F,D3DE +5450,D3DF +5451,D3E0 +5452,D3E1 +5453,D3E2 +5454,D3E3 +5455,D3E4 +5456,D3E5 +5458,D3E6 +5459,D3E7 +545A,D3E8 +545B,D3E9 +545C,D3EA +545D,D3EB +545E,D3EC +545F,D3ED +5460,D3EE +5461,D3EF +5462,D3F0 +5463,D3F1 +5464,D3F2 +5465,D3F3 +5466,D3F4 +5467,D3F5 +5468,D3F6 +5469,D3F8 +546A,D3F9 +546B,D3FA +546C,D3FB +546D,D3FD +546E,D3FE +546F,D4A1 +5470,D4A3 +5471,D4A4 +5472,D4A5 +5473,D4A6 +5474,D4A7 +5475,D4A8 +5476,D4A9 +5477,D4AA +5478,D4AB +5479,D4AC +547B,D4AE +547C,D4AF +547D,D4B0 +547E,D4B1 +547F,D4B2 +5480,D4B3 +5481,D4B4 +5482,D4B5 +5483,D4B6 +5484,D4B7 +5485,D4B8 +5486,D4B9 +5487,D4BA +5488,D4BB +5489,D4BC +548A,D4BD +548B,D4BE +548C,D4BF +548D,D4C0 +548E,D4C1 +548F,D4C2 +5490,D4C3 +5491,D4C4 +5492,D4C6 +5493,D4C7 +5494,D4C9 +5495,D4CA +5496,D4CB +5498,D4CC +5499,D4CD +549A,D4CE +549B,D4CF +549C,D4D0 +549D,D4D1 +549E,D4D2 +54A0,D4D3 +54A1,D4D4 +54A2,D4D5 +54A3,D4D6 +54A4,D4D7 +54A5,D4D8 +54A6,D4DB +54A7,D4D9 +54A8,D4DA +54A9,D4DD +54AA,D4DC +54AB,D4DE +54AC,D4DF +54AD,D4E0 +54AE,D4E1 +54AF,D4E2 +54B0,D4E3 +54B1,D4E4 +54B2,D4E5 +54B5,D4E6 +54B6,D4E7 +54B7,D4E9 +54B8,D4EA +54B9,D4EB +54BA,D4ED +54BB,D4EE +54BC,D4EF +54BD,D4F0 +54BE,D4F2 +54C1,D4F3 +54C2,D4F4 +54C3,D4F5 +54C4,D4F6 +54C5,D4F7 +54C6,D4F8 +54C8,D4F9 +54C9,D4FA +54CA,D4FB +54CB,D4FD +54CC,D4FE +54CD,D5A1 +54CE,D5A2 +54CF,D5A3 +54D0,D5A4 +54D1,D5A5 +54D2,D5A6 +54D3,D5A7 +54D5,D5A8 +54D6,D5A9 +54D7,D5AA +54D8,D5AC +54D9,D5AD +54DA,D5AF +54DB,D5B0 +54DD,D5B1 +54DE,D5B2 +54DF,D5B3 +54E0,D5B4 +54E1,D5B5 +54E2,D5B6 +54E3,D5B7 +54E5,D5B8 +54E6,D5B9 +54E7,D5BA +54E8,D5BB +54E9,D5BC +54EA,D5BD +54EB,D5BE +54EC,D5BF +54ED,D5C0 +54EE,D5C1 +54EF,D5C2 +54F0,D5C3 +54F1,D5C4 +54F2,D5C5 +54F3,D5C6 +54F4,D5C7 +54F6,D5C8 +54F7,D5C9 +54F8,D5CA +54F9,D5CB +54FA,D5CC +54FB,D5CD +54FC,D5CE +54FD,D5D1 +54FE,D5D2 +5541,D5D3 +5542,D5D4 +5543,D5D5 +5544,D5D7 +5545,D5D6 +5546,D5D8 +5547,D5D9 +5549,D5DA +554A,D5DB +554B,D5DC +554C,D5DD +554D,D5DE +554E,D5DF +554F,D5E0 +5550,D5E1 +5552,D5E2 +5553,D5E4 +5554,D5E5 +5555,D5E6 +5556,D5E8 +5557,D5E9 +5558,D5EA +5559,D5EB +555B,D5EC +555D,D5ED +555E,D5E7 +555F,D5EE +5562,D5EF +5563,D5F0 +5564,D5F1 +5565,D5F2 +5566,D5F3 +5567,D5F4 +5568,D5F6 +5569,D5F5 +556B,D5F7 +556C,D5F8 +556D,D5F9 +556E,D5FA +556F,D5FB +5570,D5FC +5571,D5FD +5572,D5FE +5573,D6A1 +5574,D6A3 +5575,D6A4 +5576,D6A5 +5577,D6A6 +5578,D6A7 +5579,D6A8 +557A,D6A9 +557B,D6AB +557C,D6AA +557D,D6AC +557E,D6AD +557F,D6AE +5580,D6AF +5581,D6B0 +5582,D6B1 +5583,D6B2 +5584,D6B3 +5585,D6B4 +5587,D6B5 +5588,D6B6 +5589,D6B7 +558A,D6BA +558B,D6BB +558E,D6BC +558F,D6BE +5590,D6BF +5593,D6C1 +5594,D6C3 +5595,D6C4 +5596,D6C2 +5597,D6C5 +5598,D6C6 +5599,D6C7 +559A,D6C9 +559B,D6CA +559C,D6CB +559D,D6CC +559E,D6CE +559F,D6D0 +55A1,D6D3 +55A2,D6D2 +55A3,D6D4 +55A4,D6D5 +55A6,D6D6 +55A7,D6D7 +55A8,D6D8 +55A9,D6D9 +55AB,D6DA +55AC,D6DB +55AD,D6DC +55AE,D6DD +55B0,D6DE +55B2,D6E0 +55B4,D6E2 +55B5,D6E4 +55B6,D6E3 +55B7,D6E5 +55B8,D6E6 +55B9,D6E7 +55BA,D6E8 +55BB,D6E9 +55BC,D6EA +55BD,D6EB +55BE,D6EC +55BF,D6ED +55C0,D6EF +55C1,D6F0 +55C5,D6F3 +55C6,D6F1 +55C7,D6F4 +55C8,D6F5 +55C9,D6F6 +55CB,D6F7 +55CC,D6F8 +55CD,D6FA +55CE,D6FB +55CF,D6FC +55D0,D6F9 +55D1,D6FD +55D2,D6FE +55D3,D7A1 +55D4,D7A3 +55D6,D7A4 +55D7,D7A6 +55D8,D7A7 +55D9,D7A8 +55DA,D7A9 +55DB,D7AB +55DC,D7AC +55DD,D7AE +55DE,D7B0 +55E0,D7B1 +55E1,D7B3 +55E2,D7B4 +55E3,D7B5 +55E4,D7B6 +55E5,D7B8 +55E6,D7B9 +55E7,D7BA +55E8,D7BB +55E9,D7BC +55EA,D7BD +55EB,D7BE +55EC,D7BF +55ED,D7C0 +55EE,D7C1 +55EF,D7C3 +55F0,D7C4 +55F1,D7C5 +55F2,D7C6 +55F3,D7C7 +55F4,D7C8 +55F5,D7C9 +55F6,D7CA +55F7,D7CB +55F9,D7CC +55FA,D7CE +55FB,D7CD +55FE,D7D0 +5641,D7D1 +5642,D7D2 +5643,D7D3 +5644,D7D4 +5645,D7D5 +5646,D7D6 +5647,D7D7 +5648,D7D8 +5649,D7D9 +564A,D7DB +564B,D7DC +564D,D7DD +564E,D7DE +5650,D7E0 +5651,D7E1 +5652,D7E2 +5653,D7E3 +5654,D7E5 +5656,D7E7 +5657,D7E6 +5659,D7EA +565A,D7EC +565B,D7ED +565C,D7EE +565E,D7EF +565F,D7F0 +5660,D7F2 +5661,D7F3 +5662,D7F4 +5663,D7F5 +5664,D7F6 +5665,D7F7 +5666,D7F8 +5667,D7F9 +5668,D7FA +5669,D7FB +566B,D7FC +566C,D7FD +566E,D7FE +566F,D8A1 +5670,D8A2 +5671,D8A3 +5673,D8A4 +5674,D8A5 +5675,D8A6 +5676,D8A8 +5678,D8A9 +5679,D8AA +567A,D8AB +567B,D8AC +567C,D8AD +567D,D8AE +567E,D8AF +567F,D8B0 +5680,D8B4 +5681,D8B5 +5682,D8B6 +5683,D8B7 +5684,D8B8 +5685,D8B9 +5686,D8BA +5687,D8BB +5688,D8BC +5689,D8BD +568A,D8BE +568B,D8BF +568C,D8C0 +568D,D8C1 +568F,D8C2 +5691,D8C3 +5693,D8C4 +5694,D8C6 +5695,D8C7 +5696,D8C8 +5697,D8CA +5698,D8CB +5699,D8CC +569A,D8CD +569B,D8CE +569C,D8CF +569D,D8D0 +569E,D8D1 +569F,D8D2 +56A0,D8D3 +56A1,D8D4 +56A2,D8D5 +56A3,D8D7 +56A5,D8D8 +56A6,D8D9 +56A7,D8DA +56A8,D8DB +56A9,D8DC +56AA,D8DD +56AB,D8DE +56AC,D8DF +56AD,D8E0 +56AF,D8E1 +56B1,D8E2 +56B2,D8E3 +56B3,D8E4 +56B4,D8E5 +56B5,D8E6 +56B7,D8E7 +56B8,D8E8 +56B9,D8E9 +56BA,D8EA +56BB,D8EB +56BC,D8EC +56BD,D8ED +56BE,D8EF +56BF,D8EE +56C0,D8F0 +56C1,D8F1 +56C2,D8F2 +56C4,D8F3 +56C5,D8F5 +56C6,D8F4 +56C7,D8F6 +56C8,D8F8 +56C9,D8F9 +56CA,D8FA +56CB,D8FB +56CC,D8FC +56CD,D8FD +56CE,D8FE +56CF,D9A1 +56D0,D9A4 +56D1,D9A2 +56D2,D9A3 +56D3,D9B0 +56D4,D9A5 +56D5,D9A6 +56D6,D9A8 +56D7,D9A9 +56D8,D9AB +56D9,D9AD +56DA,D9AE +56DB,D9AF +56DC,D9B1 +56DD,D9B2 +56DE,D9B4 +56DF,D9B6 +56E0,D9B5 +56E1,D9B7 +56E2,D9B8 +56E3,D9BA +56E4,D9B3 +56E5,D9BB +56E6,D9BC +56E7,D9BD +56E8,D9BE +56E9,D9BF +56EA,D9C0 +56EB,D9C2 +56EC,D9C3 +56EE,D9C4 +56EF,D9C6 +56F0,D9C7 +56F1,D9C8 +56F2,D9C9 +56F4,D9CA +56F5,D9CB +56F6,D9CC +56F7,D9CD +56F8,D9CE +56F9,D9CF +56FA,D9D1 +56FB,D9D2 +56FC,D9D3 +56FD,D9D4 +5742,D9D5 +5743,D9D6 +5744,D9D7 +5745,D9D8 +5746,D9D9 +5747,D9DA +5748,D9DB +5749,D9DC +574A,D9DD +574B,D9DE +574C,D9E0 +574D,D9E1 +574E,D9E2 +574F,D9E3 +5750,D9E5 +5751,D9E6 +5752,D9E7 +5753,D9E8 +5754,D9E9 +5755,D9EB +5756,D9EC +5757,D9ED +5758,D9EF +5759,D9F0 +575A,D9F1 +575B,D9F2 +575C,D9F3 +575D,D9F4 +575E,D9F5 +575F,D9F6 +5760,D9F7 +5761,D9F8 +5762,D9F9 +5763,D9FB +5764,D9FC +5765,D9FE +5766,DAA1 +5767,DAA3 +5768,DAA2 +5769,DAA5 +576A,DAA6 +576B,D9FD +576C,DAA4 +576D,DAA8 +576E,DAAA +576F,DAAB +5770,DAAC +5771,DAAD +5772,DAAE +5773,DABC +5774,DAAF +5775,DAB0 +5776,DAB1 +5777,DAB4 +5779,DAB6 +577A,DAB7 +577C,DAB8 +577D,DAB9 +577E,DABA +577F,DABB +5780,DABF +5781,DAC0 +5782,DAC1 +5783,DAC2 +5784,DAC4 +5785,DAC3 +5786,DAC5 +5787,DAC6 +5788,DAC7 +5789,DAC8 +578A,DACA +578C,DACB +578D,DACC +578E,DACD +5790,DACE +5791,DACF +5792,DAD0 +5793,DAD1 +5794,DAD2 +5795,DAD3 +5796,DAD4 +5798,DAD5 +579A,DAD6 +579B,DAD7 +579C,DAD8 +579D,DADA +579E,DAD9 +579F,DADB +57A0,DADC +57A1,DADD +57A2,DADE +57A3,DADF +57A4,DAE0 +57A5,DAE1 +57A6,DAE2 +57A7,DAE3 +57A8,DAE4 +57A9,DAE5 +57AA,DAE6 +57AB,DAE7 +57AC,DAE8 +57AD,DAE9 +57AE,DAEB +57AF,DAEA +57B0,DAEC +57B1,DAED +57B2,DAEF +57B3,DAF2 +57B4,DAF3 +57B5,DAF4 +57B7,DAF6 +57B8,DAF5 +57B9,DAF7 +57BA,DAF8 +57BB,DAF9 +57BC,DAFA +57BD,DAFB +57BE,DAFE +57BF,DAFC +57C0,DBA1 +57C1,DBA2 +57C2,DBA3 +57C3,DBA4 +57C4,DBA5 +57C5,DBA6 +57C6,DBA7 +57C7,DBA8 +57C8,DBA9 +57C9,DBAA +57CA,DBAB +57CB,DBAC +57CC,DBAD +57CD,DBAE +57CE,DBAF +57CF,DBB0 +57D0,DBB1 +57D1,DBB2 +57D2,DBB4 +57D3,DBB7 +57D4,DBB8 +57D5,DBB9 +57D6,DBBA +57D7,DBBB +57D8,DBBC +57D9,DBBD +57DA,DBBE +57DB,DBBF +57DC,DBC0 +57DD,DBC1 +57E0,DBC2 +57E1,DBC4 +57E2,DBC3 +57E3,DBC5 +57E4,DBC6 +57E5,DBC7 +57E6,DBC8 +57E7,DBC9 +57E8,DBCA +57E9,DBCB +57EA,DBCD +57EB,DBCF +57EC,DBCE +57ED,DBD1 +57EE,DBD0 +57EF,DBD2 +57F0,DBD3 +57F1,DBD4 +57F2,DBD5 +57F3,DBD6 +57F4,DBD7 +57F5,DBD8 +57F6,DBD9 +57F7,DBDA +57F8,DBDB +57F9,DBDC +57FA,DBDD +57FB,DBDE +57FC,DBE0 +57FE,DBE1 +5841,DBE3 +5842,DBE4 +5843,DBE5 +5845,DBE6 +5846,DBE7 +5847,DBE8 +5848,DBE9 +5849,DBEA +584A,DBEB +584B,DBEC +584C,DBED +584D,DBEE +584E,DBEF +584F,DBF0 +5850,DBF1 +5851,DBF2 +5852,DBF3 +5853,DBF4 +5854,DBF5 +5855,DBF6 +5856,DBF7 +5857,DBF8 +5858,DBF9 +5859,DBFA +585A,DBFB +585B,DBFD +585C,DBFE +585D,DCA1 +585F,DCA3 +5860,DCA4 +5861,DCA5 +5862,DCA6 +5863,DCA7 +5866,DCA8 +5867,DCA9 +5868,DCAA +586A,DCAB +586C,DCAC +586E,DCAD +586F,DCAE +5870,DCAF +5871,DCB0 +5872,DCB1 +5873,DCB2 +5874,DCB3 +5875,DCB4 +5876,DCB5 +5877,DCB6 +5878,DCB7 +5879,DCB9 +587A,DCBA +587B,DCBB +587C,DCBD +587D,DCBC +587E,DCBE +5880,DCBF +5881,DCC1 +5882,DCC2 +5883,DCC3 +5884,DCC4 +5885,DCC5 +5886,DCC6 +5887,DCC8 +5888,DCC7 +5889,DCC9 +588A,DCCB +588B,DCCD +588C,DCCE +588D,DCCF +588E,DCD0 +5891,DCD1 +5892,DCD2 +5893,DCD3 +5894,DCD4 +5895,DCD5 +5896,DCD6 +5897,DCD8 +5898,DCD7 +5899,DCD9 +589A,DCDA +589B,DCDB +589C,DCDD +589E,DCDC +589F,DCDF +58A0,DCE0 +58A1,DCE1 +58A2,DCE2 +58A3,DCE3 +58A5,DCE4 +58A6,DCE5 +58A7,DCE6 +58A8,DCE8 +58A9,DCE7 +58AA,DCE9 +58AB,DCED +58AC,DCEA +58AD,DCEB +58AE,DCEE +58B0,DCEF +58B1,DCF0 +58B2,DCF1 +58B3,DCF2 +58B4,DCF3 +58B6,DCF5 +58B7,DCF7 +58B8,DCF8 +58B9,DCF9 +58BA,DCFA +58BB,DCFC +58BC,DCFD +58BD,DCFE +58BE,DDA2 +58BF,DDA3 +58C0,DDA4 +58C1,DDA5 +58C2,DDA6 +58C3,DDA7 +58C4,DDA8 +58C5,DDA9 +58C6,DDAA +58C7,DDAB +58C8,DDAD +58C9,DDAE +58CA,DDAC +58CC,DDB0 +58CD,DDAF +58CE,DDB1 +58CF,DDB3 +58D2,DDB5 +58D3,DDB6 +58D4,DDB7 +58D5,DDB8 +58D6,DDB9 +58D7,DDBA +58D8,DDBB +58D9,DDBC +58DA,DDBD +58DB,DDBE +58DD,DDBF +58DF,DDC0 +58E0,DDC1 +58E1,DDC2 +58E2,DDC4 +58E4,DDC5 +58E5,DDC6 +58E6,DDC7 +58E7,DDC8 +58E8,DDC9 +58E9,DDCA +58EA,DDCC +58EB,DDCD +58EC,DDCE +58ED,DDCF +58EE,DDD0 +58EF,DDD1 +58F0,DDD2 +58F2,DDD4 +58F3,DDD5 +58F4,DDD6 +58F6,DDD7 +58F7,DDD9 +58FA,DDDA +58FB,DDDB +58FC,DDDC +58FD,DDDD +58FE,DDDE +5941,DDDF +5942,DDE0 +5943,DDE1 +5944,DDE2 +5945,DDE3 +5946,DDE4 +5947,DDE5 +5949,DDE6 +594A,DDE7 +594B,DDE8 +594C,DDE9 +594D,DDEA +594E,DDEB +594F,DDEC +5951,DDEE +5953,DDF4 +5954,DDF3 +5955,DDEF +5956,DDF2 +5957,DDF5 +5958,DDF6 +595A,DDF7 +595B,DDF8 +595C,DDFA +595E,DDFC +595F,DDFD +5960,DDFE +5962,DEA1 +5963,DEA2 +5964,DEA3 +5965,DEA4 +5966,DEA5 +5967,DEA6 +5968,DEA7 +5969,DEA8 +596B,DEA9 +596C,DEAA +596D,DEAB +596F,DEAC +5970,DEAE +5971,DEB9 +5972,DEAF +5974,DEB0 +5975,DEB1 +5976,DEB2 +5977,DEB4 +5978,DEB5 +5979,DEB6 +597B,DEB8 +597D,DEBA +5980,DEBB +5981,DEBC +5982,DEBD +5983,DEBE +5984,DEBF +5985,DEC0 +5986,DEC1 +5987,DEC2 +5988,DEC4 +5989,DEC3 +598A,DEEC +598B,DEC5 +598C,DEC7 +598D,DEC8 +598E,DEC9 +598F,DECC +5990,DECA +5991,DECB +5992,DECD +5993,DECE +5995,DECF +5996,DED0 +5997,DED1 +5998,DED3 +5999,DED4 +599B,DED5 +599C,DED6 +599D,DED7 +599E,DEF5 +599F,DED9 +59A0,DED8 +59A1,DEDB +59A2,DEDC +59A5,DEDE +59A6,DEDF +59A7,DEE0 +59A8,DEE1 +59A9,DEF7 +59AA,DEE2 +59AB,DEE5 +59AC,DEE4 +59AD,DEE6 +59AE,DEDD +59AF,DEE3 +59B0,DEE7 +59B2,DEE8 +59B3,DEEE +59B4,DEE9 +59B5,DEEA +59B6,DEED +59B7,DEEF +59B8,DEF0 +59B9,DEF1 +59BA,DEF2 +59BB,DEF3 +59BC,DEF4 +59BD,DED2 +59BE,DEF6 +59BF,DEEB +59C0,DEF8 +59C1,DEF9 +59C2,DEFB +59C3,DEFC +59C5,DEFD +59C6,DEFE +59C8,DFA1 +59C9,DFA2 +59CA,DFA3 +59CB,DFA4 +59CC,DFA5 +59CD,DFA6 +59CE,DFA7 +59CF,DFA8 +59D0,DFA9 +59D1,DFAA +59D2,DFAB +59D3,DFAE +59D4,DFAF +59D5,DFAD +59D6,DFB1 +59D7,DFB2 +59D8,DFB3 +59D9,DFB4 +59DA,DFB5 +59DB,DFB6 +59DC,DFB9 +59DD,DFB7 +59DE,DFB8 +59E0,DFBA +59E1,DFBB +59E2,DFBD +59E5,DFBE +59E6,DFBF +59E7,DFC0 +59E8,DFC1 +59E9,DFC2 +59EA,DFC3 +59EB,DFC4 +59EC,DFD0 +59ED,DFC5 +59EE,DFC6 +59EF,DFC9 +59F0,DFCA +59F1,DFCB +59F2,DFC8 +59F3,DFCC +59F4,DFD3 +59F5,DFCD +59F6,DFCE +59F8,DFCF +59F9,DFD2 +59FA,DFD1 +59FB,DFD4 +59FC,DFD5 +59FD,DFD6 +59FE,DFD7 +5A41,DFD8 +5A42,DFDA +5A43,DFDB +5A44,DFD9 +5A45,DFDC +5A46,DFDD +5A47,DFDE +5A48,DFDF +5A4A,DFE1 +5A4B,DFE2 +5A4C,DFE3 +5A4D,DFE4 +5A4E,DFE5 +5A4F,DFE6 +5A50,DFE7 +5A51,DFE8 +5A52,DFE9 +5A54,DFEB +5A55,DFEA +5A57,DFF9 +5A58,DFEC +5A59,DFED +5A5A,DFEE +5A5B,DFEF +5A5C,DFF0 +5A5D,DFF1 +5A5E,DFF3 +5A5F,DFF4 +5A60,DFF5 +5A61,DFF6 +5A62,DFF7 +5A63,DFF8 +5A64,DFFA +5A65,DFFC +5A66,DFFD +5A67,DFFE +5A68,E0A1 +5A69,E0A2 +5A6A,E0A3 +5A6B,E0A4 +5A6C,E0A5 +5A6D,E0A7 +5A6E,E0A6 +5A6F,E0A8 +5A71,E0A9 +5A72,E0AA +5A73,E0AB +5A75,E0AC +5A76,E0AD +5A77,E0AE +5A78,E0AF +5A79,E0B0 +5A7A,E0B1 +5A7B,E0B2 +5A7C,E0B3 +5A7D,E0B4 +5A7E,E0B5 +5A7F,E0B6 +5A80,E0B7 +5A81,E0B8 +5A82,E0BB +5A83,E0B9 +5A84,E0BA +5A86,E0BC +5A87,E0BE +5A8A,E0BF +5A8B,E0C1 +5A8D,E0C3 +5A8F,E0C9 +5A90,E0C5 +5A91,E0C6 +5A92,E0C7 +5A93,E0C8 +5A94,E0CA +5A95,E0CB +5A96,E0CC +5A97,E0CD +5A98,E0CE +5A99,E0CF +5A9A,E0D0 +5A9B,E0D1 +5A9C,E0D2 +5A9D,E0D3 +5A9E,E0D4 +5A9F,E0D5 +5AA1,E0D8 +5AA3,E0D9 +5AA4,E0DF +5AA6,E0DA +5AA8,E0DB +5AA9,E0DD +5AAA,E0DE +5AAB,E0E0 +5AAC,E0E2 +5AAD,E0E3 +5AAE,E0E4 +5AAF,E0E8 +5AB0,E0E9 +5AB1,E0EA +5AB2,E0EB +5AB3,E0E7 +5AB4,E0EC +5AB5,E0F0 +5AB6,E0EE +5AB7,E0EF +5AB8,E0F1 +5AB9,E0F2 +5ABA,E0F3 +5ABB,E0F5 +5ABC,E0F6 +5ABD,E0F7 +5ABE,E0F8 +5ABF,E0F9 +5AC0,E0FA +5AC1,E0FC +5AC2,E0FD +5AC3,E0FE +5AC4,E1A1 +5AC5,E1A2 +5AC6,E1A3 +5AC7,E1A4 +5AC8,E1A5 +5AC9,E1A6 +5ACA,E1A7 +5ACB,E1A8 +5ACC,E1A9 +5ACD,E1AA +5ACE,E1AB +5ACF,E1AC +5AD0,E1AD +5AD1,E1AE +5AD2,E1AF +5AD3,E1B0 +5AD4,E1B1 +5AD5,E1B3 +5AD6,E1B4 +5AD7,E1B2 +5AD8,E1B5 +5AD9,E1B7 +5ADA,E1B8 +5ADB,E1B6 +5ADC,E1B9 +5ADD,E1BA +5ADE,E1BB +5ADF,E1BC +5AE0,E1BD +5AE1,E1BE +5AE2,E1BF +5AE3,E1C0 +5AE4,E1C1 +5AE5,E1C3 +5AE6,E1C2 +5AE7,E1C5 +5AE8,E1C7 +5AE9,E1C8 +5AEA,E1C9 +5AEC,E1CA +5AED,E1CB +5AEE,E1CC +5AEF,E1CD +5AF0,E1CE +5AF1,E1CF +5AF2,E1D0 +5AF3,E1D1 +5AF5,E1D2 +5AF6,E1D3 +5AF7,E1D4 +5AF8,E1D5 +5AF9,E1D6 +5AFA,E1D8 +5AFB,E1D9 +5AFC,E1DC +5AFD,E1DD +5AFE,E1DF +5B41,E1E1 +5B42,E1E3 +5B44,E1E4 +5B45,E1E6 +5B46,E1E8 +5B47,E1E9 +5B48,E1EA +5B49,E1EB +5B4A,E1EC +5B4B,E1ED +5B4C,E1EE +5B4E,E1EF +5B4F,E1F0 +5B50,E1F1 +5B51,E1F2 +5B52,E1F3 +5B53,E1F4 +5B55,E1F6 +5B56,E1F5 +5B57,E1F7 +5B58,E1F8 +5B59,E1F9 +5B5A,E1FA +5B5C,E1FB +5B5D,E1FD +5B5E,E2A1 +5B5F,E1FE +5B60,E2A2 +5B61,E2A3 +5B62,E2A4 +5B63,E2A5 +5B64,E2A6 +5B66,E2A7 +5B67,E2A8 +5B68,E2AC +5B69,E2A9 +5B6A,E2AA +5B6C,E2AB +5B6D,E2AD +5B6E,E2AE +5B70,E2B1 +5B71,E2B2 +5B73,E2B3 +5B74,E2B4 +5B75,E2B5 +5B76,E2B6 +5B77,E2B7 +5B78,E2B8 +5B79,E2B9 +5B7A,E2BA +5B7B,E2BB +5B7C,E2BC +5B7D,E2BD +5B7E,E2BE +5B7F,E2BF +5B80,E2C0 +5B81,E2C1 +5B82,E2C3 +5B83,E2C4 +5B84,E2C5 +5B85,E2C6 +5B86,E2C7 +5B87,E2C8 +5B88,E2C9 +5B89,E2CB +5B8A,E2CC +5B8B,E2CD +5B8C,E2CE +5B8D,E2CF +5B8E,E2D0 +5B8F,E2D1 +5B90,E2D2 +5B91,E2D3 +5B92,E2D4 +5B93,E2D5 +5B94,E2D6 +5B95,E2D7 +5B96,E2D9 +5B97,E2DC +5B98,E2DD +5B99,E2E0 +5B9A,E2E1 +5B9B,E2E2 +5B9C,E2E4 +5B9D,E2E6 +5B9E,E2E7 +5B9F,E2E8 +5BA0,E2E9 +5BA1,E2EA +5BA2,E2EB +5BA3,E2EC +5BA4,E2ED +5BA5,E2EE +5BA6,E2EF +5BA7,E2F0 +5BA8,E2F3 +5BA9,E2DE +5BAA,E2F5 +5BAB,E2F6 +5BAC,E2F7 +5BAD,E2F8 +5BAF,E2F9 +5BB0,E2FA +5BB1,E2FB +5BB2,E2FD +5BB3,E2FE +5BB4,E3A1 +5BB5,E3A2 +5BB6,E3A3 +5BB8,E3A4 +5BB9,E3A6 +5BBA,E3A5 +5BBB,E3A7 +5BBC,E3A8 +5BBD,E3A9 +5BBE,E3AA +5BBF,E3AB +5BC0,E3AC +5BC1,E3AE +5BC2,E3AF +5BC3,E3B0 +5BC4,E3AD +5BC5,E3B1 +5BC6,E3B2 +5BC7,E3B3 +5BC8,E3B4 +5BC9,E3B5 +5BCB,E3B6 +5BCC,E3B7 +5BCD,E3B8 +5BCF,E3B9 +5BD0,E3BB +5BD1,E3BC +5BD2,E3BD +5BD3,E3BE +5BD4,E3BF +5BD5,E3C0 +5BD6,E3C1 +5BD7,E3C2 +5BD8,E3C3 +5BD9,E3C4 +5BDA,E3C5 +5BDB,E3C6 +5BDC,E3CA +5BDE,E3C7 +5BDF,E3C8 +5BE0,E3C9 +5BE1,E3CC +5BE2,E3CB +5BE3,E3CD +5BE4,E3CF +5BE5,E3D0 +5BE6,E3D1 +5BE7,E3D2 +5BE8,E3D3 +5BE9,E3D4 +5BEA,E3D5 +5BEB,E3D6 +5BEC,E3D7 +5BED,E3D8 +5BEE,E3DB +5BEF,E3DC +5BF0,E3DD +5BF1,E3DE +5BF2,E3DF +5BF3,E3E1 +5BF4,E3E2 +5BF5,E3E3 +5BF6,E3E4 +5BF7,E3E5 +5BF8,E3E6 +5BF9,E3E7 +5BFA,E3E8 +5BFB,E3E9 +5BFD,E3EA +5BFE,E3EB +5C41,E3EC +5C42,E3ED +5C43,E3EE +5C44,E3EF +5C45,E3F1 +5C46,E3F2 +5C47,E3F3 +5C48,E3F4 +5C49,E3F5 +5C4A,E3F6 +5C4B,E3F7 +5C4C,E3F8 +5C4D,E3F9 +5C4E,E3FA +5C50,E3FB +5C51,E3FC +5C52,E3FD +5C53,E4A1 +5C54,E3FE +5C55,E4A2 +5C56,E4A3 +5C57,E4A4 +5C58,E4A5 +5C59,E4A7 +5C5A,E4A8 +5C5B,E4A9 +5C5C,E4AA +5C5D,E4AB +5C5E,E4AC +5C5F,E4AD +5C60,E4AE +5C61,E4B0 +5C62,E4B1 +5C63,E4B2 +5C64,E4B3 +5C65,E4B4 +5C66,E4B6 +5C67,E4B7 +5C68,E4B8 +5C69,E4B9 +5C6A,E4BA +5C6B,E4BB +5C6C,E4BC +5C6D,E4BD +5C6E,E4BE +5C6F,E4BF +5C70,E4C0 +5C71,E4C3 +5C72,E4C2 +5C73,E4C4 +5C74,E4C5 +5C75,E4C6 +5C77,E4C9 +5C78,E4CB +5C79,E4CC +5C7A,E4CD +5C7B,E4CE +5C7C,E4CF +5C7D,E4D0 +5C7E,E4D1 +5C7F,E4D2 +5C81,E4D3 +5C82,E4D4 +5C85,E4D6 +5C86,E4D7 +5C87,E4D8 +5C89,E4D9 +5C8B,E4DC +5C8C,E4DD +5C8D,E4DE +5C8E,E4DF +5C8F,E4E0 +5C91,E4E1 +5C93,E4E2 +5C94,E4E3 +5C95,E4E4 +5C96,E4E5 +5C97,E4E6 +5C98,E4E7 +5C99,E4E8 +5C9A,E4E9 +5C9B,E4EA +5C9C,E4EB +5C9E,E4EC +5C9F,E4ED +5CA0,E4EF +5CA1,E4F0 +5CA2,E4F1 +5CA4,E4F3 +5CA6,E4F2 +5CA7,E4F4 +5CA9,E4F5 +5CAA,E4EE +5CAB,E4F6 +5CAC,E4F7 +5CAE,E4F8 +5CAF,E4FA +5CB0,E4FB +5CB1,E4FD +5CB3,E4FE +5CB4,E5A1 +5CB5,E5A2 +5CB6,E5A3 +5CB7,E5A4 +5CB8,E5A5 +5CB9,E5A6 +5CBA,E5A7 +5CBB,E5A8 +5CBD,E5AA +5CBE,E5AB +5CBF,E5AC +5CC0,E5AD +5CC1,E5AE +5CC2,E5A9 +5CC3,E5AF +5CC4,E5B0 +5CC7,E5B3 +5CC8,E5B4 +5CC9,E5B5 +5CCA,E5B7 +5CCB,E5B8 +5CCC,E5BA +5CCD,E5BD +5CCE,E5BE +5CCF,E5BF +5CD0,E5C0 +5CD1,E5C1 +5CD2,E5C2 +5CD3,E5C3 +5CD4,E5C5 +5CD5,E5C6 +5CD6,E5C7 +5CD7,E5C8 +5CD8,E5C9 +5CD9,E5CD +5CDA,E5CA +5CDB,E5CB +5CDC,E5CF +5CDE,E5D1 +5CDF,E5D3 +5CE0,E5D4 +5CE1,E5D5 +5CE2,E5D7 +5CE3,E5D8 +5CE4,E5D9 +5CE6,E5DA +5CE7,E5DB +5CE8,E5DD +5CE9,E5DE +5CEA,E5DF +5CEB,E5E0 +5CEC,E5E1 +5CED,E5E2 +5CEE,E5E3 +5CEF,E5E4 +5CF0,E5E5 +5CF1,E5E6 +5CF2,E5E7 +5CF3,E5E8 +5CF4,E5E9 +5CF5,E5EA +5CF6,E5EB +5CF7,E5EC +5CF8,E5ED +5CF9,E5F0 +5CFA,E5F1 +5CFB,E5F2 +5CFC,E5F3 +5CFD,E5F4 +5CFE,E5F5 +5D41,E5F6 +5D43,E5F8 +5D44,E5F9 +5D45,E5FD +5D46,E6A2 +5D47,E6A3 +5D48,E6A8 +5D49,E6AE +5D4A,E6B2 +5D4B,E6B4 +5D4D,E6B5 +5D4E,E6B6 +5D4F,E6B9 +5D50,E6BA +5D51,E6BB +5D52,E6BD +5D53,E6BE +5D54,E6BF +5D55,E6C0 +5D56,E6C1 +5D57,E6C2 +5D58,E6C3 +5D59,E6C5 +5D5A,E6C8 +5D5B,E6CA +5D5C,E6CB +5D5D,E6CD +5D5E,E6CF +5D5F,E6CE +5D60,E6D0 +5D61,E6D1 +5D62,E6D3 +5D63,E6D4 +5D64,E6D5 +5D65,E6D7 +5D66,E6D8 +5D67,E6DA +5D68,E6DB +5D69,E6DD +5D6A,E6DE +5D6E,E6E2 +5D70,E6E3 +5D71,E6E7 +5D72,E6E9 +5D73,E6EC +5D74,E6ED +5D75,E6EE +5D76,E6F0 +5D77,E6F2 +5D78,E6F3 +5D79,E6F4 +5D7B,E6F8 +5D7C,E6FA +5D7D,E6FB +5D7E,E7A4 +5D7F,E6FE +5D80,E6FD +5D81,E7A2 +5D83,E7A3 +5D84,E7A5 +5D85,E7A7 +5D86,E7A8 +5D87,E7AB +5D89,E7AF +5D8A,E7B1 +5D8B,E7B2 +5D8C,E7B3 +5D8D,E7B4 +5D8E,E7B5 +5D8F,E7B6 +5D90,E7B8 +5D91,E7BA +5D92,E7BD +5D93,E7C0 +5D94,E7C1 +5D95,E7C2 +5D96,E7C3 +5D97,E7C5 +5D98,E7C8 +5D99,E7C9 +5D9A,E7CA +5D9B,E7D2 +5D9C,E7D4 +5D9D,E7D5 +5D9E,E7D6 +5D9F,E7D8 +5DA0,E7D9 +5DA2,E7DA +5DA4,E7DC +5DA6,E7DD +5DA7,E7DE +5DA8,E7E0 +5DA9,E7E1 +5DAA,E7E2 +5DAB,E7E3 +5DAC,E7E5 +5DAD,E7E7 +5DAE,E7E8 +5DAF,E7E9 +5DB0,E7EA +5DB1,E7EC +5DB2,E7ED +5DB3,E7EF +5DB4,E7F0 +5DB5,E7F2 +5DB6,E7F3 +5DB7,E7F4 +5DB8,E7F5 +5DB9,E7F6 +5DBA,E7F7 +5DBB,E7FA +5DBC,E7FB +5DBD,E7FC +5DBE,E7FD +5DBF,E8A1 +5DC0,E8A3 +5DC1,E8A5 +5DC2,E8A6 +5DC4,E7EE +5DC5,E8A9 +5DC6,E8AA +5DC7,E8AB +5DC8,E8AC +5DC9,E8AD +5DCB,E8AE +5DCC,E8AF +5DCD,E8B0 +5DCE,E8B1 +5DD0,E8B3 +5DD2,E8B4 +5DD3,E8B5 +5DD4,E8B7 +5DD5,E8B9 +5DD6,E8B6 +5DD7,E8B8 +5DD8,E8BA +5DD9,E8BB +5DDA,E8BC +5DDB,E8BE +5DDC,E8BF +5DDD,E8C0 +5DDE,E8C3 +5DDF,E8C4 +5DE0,E8C5 +5DE1,E8C2 +5DE2,E8C6 +5DE3,E8C7 +5DE4,E8C8 +5DE5,E8CB +5DE6,E8CC +5DE7,E8CE +5DE8,E8CF +5DE9,E8D0 +5DEA,E8D1 +5DEB,E8D3 +5DEC,E8D4 +5DED,E8D5 +5DEE,E8D6 +5DEF,E8D7 +5DF0,E8D8 +5DF1,E8D9 +5DF2,E8DA +5DF3,E8DB +5DF4,E8DC +5DF5,E8DD +5DF6,E8DE +5DF7,E8E0 +5DF8,E8E1 +5DF9,E8E2 +5DFA,E8E4 +5DFB,E8E5 +5DFC,E8E6 +5DFD,E8E9 +5DFE,E8EA +5E41,E8EB +5E42,E8EC +5E43,E8ED +5E44,E8EE +5E45,E8F2 +5E46,E8F3 +5E47,E8F4 +5E48,E8F6 +5E49,E8F8 +5E4A,E9A6 +5E4B,E8F9 +5E4C,E8FA +5E4D,E8FD +5E4E,E9A1 +5E4F,E9A2 +5E50,E9A3 +5E51,E9A4 +5E52,E9A5 +5E54,E9A8 +5E55,E9A9 +5E56,E9AA +5E57,E9AB +5E58,E9AD +5E59,E9AE +5E5A,E9B4 +5E5B,E9AF +5E5C,E9B0 +5E5D,E9B1 +5E5E,E9B3 +5E5F,E9B6 +5E60,E9B8 +5E61,E9BB +5E62,E9BC +5E63,E9B7 +5E64,E9BE +5E65,E9C0 +5E66,E9C1 +5E67,E9C2 +5E68,E9C3 +5E69,E9C4 +5E6A,E9C6 +5E6C,E9C7 +5E6D,E9C8 +5E6F,E9C9 +5E70,E9CA +5E71,E9CB +5E72,E9CE +5E73,E9CF +5E74,E9D0 +5E75,E9D1 +5E76,E9D2 +5E77,E9D3 +5E79,E9D4 +5E7A,E9D5 +5E7B,E9D6 +5E7C,E9CD +5E7D,E9D7 +5E7E,E9D8 +5E7F,E9DA +5E80,E9DD +5E81,E9DE +5E82,E9DF +5E83,E9E0 +5E84,E9E2 +5E85,E9E3 +5E86,E9E5 +5E87,E9E6 +5E88,E9E7 +5E89,E9E8 +5E8A,E9EA +5E8B,E9EB +5E8C,E9EC +5E8D,E9EF +5E8E,E9F0 +5E8F,E9F2 +5E90,E9F3 +5E91,E9F4 +5E92,E9F5 +5E93,E9F6 +5E94,E9F7 +5E95,E9F9 +5E96,E9FC +5E97,E9FD +5E98,EAA1 +5E99,EAA2 +5E9A,EAA3 +5E9B,EAA4 +5E9D,EAA5 +5E9E,EAA6 +5E9F,EAA8 +5EA0,EAA9 +5EA1,EAAA +5EA2,EAAB +5EA3,EAAC +5EA4,EAAE +5EA5,EAAD +5EA6,EABA +5EA7,EAAF +5EA8,EAB0 +5EA9,EAB2 +5EAA,EAB3 +5EAB,EAB4 +5EAC,EAB5 +5EAD,EAB9 +5EAE,EABB +5EAF,EABC +5EB0,EABD +5EB2,EABE +5EB3,EABF +5EB4,EAC0 +5EB5,EAC2 +5EB6,EAC3 +5EB7,EAC4 +5EB8,EAC5 +5EB9,EAC6 +5EBA,EAC7 +5EBB,EAC8 +5EBC,EAC9 +5EBD,EACA +5EBE,EACB +5EBF,EACC +5EC0,EACD +5EC1,EACF +5EC3,EAD0 +5EC4,EACE +5EC5,EAD2 +5EC6,EAD3 +5EC7,EAD4 +5EC8,EAD5 +5EC9,EAD6 +5ECA,EAD7 +5ECB,EAD8 +5ECC,EADA +5ECD,EADB +5ECF,EADD +5ED0,EADE +5ED1,EADF +5ED2,EAE0 +5ED3,EAE1 +5ED4,EAF2 +5ED5,EAE2 +5ED6,EAE3 +5ED7,EAE4 +5ED8,EAEA +5ED9,EAE6 +5EDA,EAE7 +5EDC,EAE8 +5EDD,EAE9 +5EDF,EAEB +5EE0,EAEC +5EE1,EAED +5EE2,EAEE +5EE3,EAF0 +5EE4,EAEF +5EE5,EAF1 +5EE6,EAF3 +5EE7,EAF5 +5EE8,EAF6 +5EE9,EAF8 +5EEA,EAFA +5EEB,EAFD +5EEC,EBA1 +5EED,EBA2 +5EEE,EBA5 +5EEF,EBA6 +5EF0,EBA8 +5EF1,EBAB +5EF2,EBAC +5EF3,EBAD +5EF5,EBAE +5EF6,EBAF +5EF7,EBB0 +5EF8,EBB1 +5EF9,EBB3 +5EFA,EBB2 +5EFB,EBB4 +5EFC,EBB5 +5EFD,EBB6 +5EFE,EBB7 +5F41,EBB8 +5F42,EBB9 +5F44,EBBE +5F45,EBBF +5F46,EBC0 +5F48,EBC3 +5F49,EBC4 +5F4A,EBC5 +5F4B,EBC8 +5F4C,EBC9 +5F4D,EBCA +5F4E,EBCE +5F4F,EBD3 +5F50,EBD4 +5F51,EBD6 +5F52,EBD7 +5F53,EBD9 +5F54,EBDA +5F55,EBDB +5F57,EBDC +5F59,EBDE +5F5A,EBDD +5F5B,EBDF +5F5D,EBE0 +5F5E,EBE1 +5F5F,EBE2 +5F60,EBE3 +5F61,EBE4 +5F62,EBE6 +5F63,EBE5 +5F65,EBE7 +5F66,EBE8 +5F67,EBE9 +5F68,EBEA +5F69,EBEB +5F6A,EBEC +5F6B,EBED +5F6C,EBEE +5F6D,EBEF +5F6E,EBF0 +5F6F,EBF7 +5F70,EBF8 +5F71,EBF1 +5F72,EBF2 +5F73,EBF3 +5F74,EBF4 +5F75,EBF6 +5F76,EBF9 +5F77,EBFA +5F78,EBFC +5F79,EBFD +5F7A,EBFE +5F7B,ECA1 +5F7C,ECA2 +5F7D,ECA3 +5F7E,ECA4 +5F7F,ECA5 +5F80,ECA8 +5F81,ECA9 +5F82,ECAB +5F83,ECC3 +5F84,ECAC +5F85,ECAD +5F86,ECAE +5F87,ECAF +5F89,ECB3 +5F8A,ECB4 +5F8B,ECB6 +5F8C,ECB7 +5F8D,ECB9 +5F8E,ECBB +5F8F,ECBC +5F90,ECBF +5F91,ECC7 +5F92,ECC8 +5F94,ECCB +5F95,ECCF +5F96,ECCC +5F97,ECCD +5F98,ECCE +5F99,ECD1 +5F9A,ECD2 +5F9C,ECD3 +5F9D,ECD4 +5F9E,ECD6 +5F9F,ECD7 +5FA0,ECD8 +5FA1,ECD9 +5FA2,ECDA +5FA3,ECDB +5FA4,ECDC +5FA5,ECE3 +5FA6,ECE5 +5FA7,ECE6 +5FA8,ECE9 +5FA9,ECEB +5FAA,ECEC +5FAB,ECED +5FAC,ECEE +5FAD,ECEF +5FAE,ECF0 +5FAF,ECF1 +5FB0,ECF2 +5FB1,ECF3 +5FB2,ECF4 +5FB3,ECF5 +5FB4,ECF9 +5FB5,ECFB +5FB6,ECFC +5FB7,ECFD +5FB8,EDA4 +5FB9,EDA6 +5FBA,EDA5 +5FBB,EDA8 +5FBC,EDA9 +5FBD,EDAA +5FBE,EDAB +5FBF,EDAC +5FC0,EDAD +5FC1,EDAF +5FC2,EDAE +5FC3,EDB0 +5FC4,EDB1 +5FC5,EDB2 +5FC6,EDB3 +5FC7,EDB4 +5FC8,EDB5 +5FC9,EDB6 +5FCA,EDB7 +5FCC,EDB8 +5FCE,EDB9 +5FCF,EDBA +5FD1,EDBB +5FD2,EDBD +5FD3,EDBE +5FD5,EDBF +5FD6,EDC0 +5FD8,EDC1 +5FD9,EDC2 +5FDA,EDC3 +5FDB,EDC4 +5FDC,EDC5 +5FDD,EDC6 +5FDF,EDC7 +5FE0,EDC8 +5FE1,EDC9 +5FE2,EDCA +5FE3,EDCB +5FE4,EDCC +5FE5,EDCD +5FE6,EDCE +5FE7,EDD0 +5FE8,EDD1 +5FE9,EDD2 +5FEA,EDD3 +5FEB,EDD4 +5FEC,EDD5 +5FED,EDD6 +5FEF,EDD7 +5FF0,EDD8 +5FF2,EDD9 +5FF3,EDDA +5FF4,EDDB +5FF5,EDDC +5FF6,EDDD +5FF7,EDDE +5FF8,EDDF +5FF9,EDE1 +5FFB,EDE3 +5FFC,EDE4 +5FFD,EDE5 +5FFE,EDE6 +6041,EDE7 +6042,EDE8 +6043,EDE9 +6044,EDEA +6045,EDEB +6046,EDEC +6047,EDE0 +6048,EDE2 +6049,EDED +604A,EDEE +604B,EDEF +604C,EDF0 +604E,EDF1 +604F,EDF2 +6050,EDF3 +6051,EDF4 +6052,EDF6 +6053,EDF7 +6054,EDF8 +6055,EDF9 +6056,EDFA +6058,EDFB +6059,EDFC +605A,EDFD +605B,EDFE +605C,EEA1 +605D,EEA2 +605E,EEA3 +605F,EEA4 +6060,EEA5 +6061,EEA6 +6062,EEA7 +6063,EEA8 +6064,EEA9 +6065,EEAB +6066,EEAC +6068,EEAE +6069,EEAF +606A,EEB0 +606B,EEB1 +606C,EEB2 +606D,EEB3 +606E,EEB4 +606F,EEB5 +6070,EEB6 +6071,EEB8 +6072,EEB7 +6073,EEB9 +6074,EEBA +6075,EEBB +6076,EEBC +6077,EEBD +6078,EEBE +607A,EEBF +607B,EEC0 +607C,EEC1 +607D,EEC2 +607E,EEC3 +607F,EEC4 +6080,EEC5 +6081,EEC6 +6082,EEC8 +6083,EECA +6084,EECB +6086,EECC +6088,EECD +6089,EECE +608A,EECF +608B,EED0 +608C,EED3 +608D,EED5 +608E,EED6 +608F,EED7 +6090,EED8 +6091,EED9 +6092,EEDA +6093,EEDC +6094,EEDD +6095,EEDE +6096,EEDF +6098,EEE0 +6099,EEE2 +609A,EEE3 +609B,EEE4 +609C,EEE5 +609D,EEE6 +609E,EEE7 +609F,EEE8 +60A0,EEE9 +60A1,EEEA +60A2,EEEE +60A3,EEEF +60A4,EEF0 +60A5,EEF1 +60A6,EEF2 +60A8,EEF3 +60A9,EEF5 +60AA,EEF6 +60AB,EEF7 +60AD,EEF8 +60AE,EEF9 +60AF,EEFA +60B0,EEFB +60B1,EEFC +60B2,EEFD +60B3,EEFE +60B4,EFA1 +60B5,EFA3 +60B6,EFA4 +60B7,EFA6 +60B9,EFA8 +60BA,EFA9 +60BB,EFAA +60BC,EFAB +60BE,EFAC +60BF,EFAD +60C0,EFAE +60C1,EFAF +60C2,EFB0 +60C3,EFB1 +60C4,EFB3 +60C5,EFB4 +60C6,EFB5 +60C7,EFB6 +60C8,EFB7 +60C9,EFB8 +60CA,EFB9 +60CB,EFBA +60CD,EFBC +60CE,EFBD +60CF,EFBE +60D0,EFBF +60D1,EFC0 +60D2,EFC1 +60D3,EFC2 +60D4,EFC3 +60D5,EFC7 +60D6,EFC4 +60D7,EFC5 +60D8,EFC8 +60D9,EFC9 +60DB,EFCA +60DC,EFCB +60DD,EFCC +60DE,EFCD +60DF,EFCE +60E0,EFCF +60E1,EFD0 +60E2,EFD1 +60E3,EFD3 +60E4,EFD5 +60E5,EFD6 +60E6,EFD2 +60E7,EFD4 +60E8,EFD7 +60E9,EFD8 +60EA,EFD9 +60EB,EFDA +60EC,EFDB +60ED,EFDC +60EE,EFDD +60F0,EFDF +60F1,EFE1 +60F2,EFE2 +60F3,EFE4 +60F4,EFE5 +60F5,EFEB +60F6,EFEC +60F7,EFED +60F8,EFEE +60F9,EFEF +60FA,EFF0 +60FB,EFFE +60FC,EFF1 +60FD,EFF3 +60FE,EFF4 +6141,EFF5 +6142,EFF6 +6143,EFF7 +6144,EFF8 +6145,EFF9 +6146,EFFA +6147,EFFC +6148,EFFD +6149,F0A1 +614A,F0A2 +614B,F0A3 +614C,F0A4 +614D,F0A5 +614E,F0A6 +614F,F0A7 +6150,F0A8 +6151,F0A9 +6152,F0AA +6153,F0AB +6155,F0AC +6156,F0AD +6158,F0B0 +6159,F0AE +615A,F0AF +615B,F0B1 +615C,F0B2 +615D,F0B3 +615F,F0B4 +6160,F0B5 +6161,F0B6 +6162,F0B7 +6163,F0B8 +6164,F0B9 +6165,F0BA +6166,F0BB +6167,F0BD +6168,F0BC +6169,F0BE +616B,F0BF +616D,F0C0 +616E,F0C1 +616F,F0C2 +6170,F0C3 +6171,F0C4 +6172,F0C5 +6173,F0C6 +6174,F0C7 +6175,F0C8 +6176,F0C9 +6177,F0CA +6178,F0CB +6179,F0CC +617A,F0CD +617B,F0CE +617C,F0CF +617D,F0D0 +617F,F0D2 +6180,F0D3 +6181,F0D4 +6182,F0D5 +6183,F0D6 +6184,F0D7 +6187,F0D8 +6188,F0D9 +618A,F0DA +618C,F0DB +618D,F0DC +618E,F0DD +618F,F0DE +6190,F0DF +6191,F0E0 +6192,F0E1 +6193,F0E2 +6194,F0E3 +6195,F0E4 +6196,F0E5 +6197,F0E6 +6199,F0E8 +619A,F0E9 +619B,F0EA +619C,F0EB +619D,F0EC +619E,F0ED +619F,F0EE +61A0,F0EF +61A1,F0F0 +61A2,F0F1 +61A3,F0F2 +61A4,F0F3 +61A5,F0F4 +61A6,F0F6 +61A7,F0F7 +61A9,F0F8 +61AA,F0F9 +61AB,F0FA +61AC,F0FB +61AD,F0FC +61AE,F0FD +61AF,F0FE +61B0,F1A2 +61B2,F1A3 +61B3,F1A4 +61B4,F1A5 +61B5,F1A6 +61B6,F1A7 +61B7,F1A8 +61B8,F1A9 +61B9,F1AA +61BA,F1AB +61BB,F1AC +61BC,F1AD +61BD,F1AE +61BE,F1B7 +61BF,F1B1 +61C0,F1B2 +61C1,F1B3 +61C2,F1B4 +61C3,F1B5 +61C4,F1B6 +61C5,F1B8 +61C6,F1B9 +61C7,F1BA +61C8,F1BB +61C9,F1C0 +61CA,F1BC +61CB,F1BD +61CC,F1D0 +61CD,F1C1 +61CE,F1C2 +61D0,F1C3 +61D1,F1C4 +61D2,F1C5 +61D3,F1C6 +61D5,F1B0 +61D6,F1C7 +61D7,F1C8 +61D8,F1C9 +61D9,F1CA +61DA,F1CB +61DB,F1CC +61DC,F1CD +61DD,F1CF +61DE,F1CE +61DF,F1D1 +61E0,F1D2 +61E1,F1D3 +61E2,F1D4 +61E3,F1D5 +61E4,F1D6 +61E5,F1D7 +61E6,F1D8 +61E7,F1DA +61E8,F1DB +61E9,F1DC +61EA,F1DD +61EB,F1DE +61EC,F1DF +61ED,F1E1 +61EE,F1E2 +61EF,F1E3 +61F0,F1E4 +61F1,F1E5 +61F3,F1E7 +61F4,F1E8 +61F5,F1E9 +61F6,F1EA +61F7,F1EB +61F8,F1EC +61FA,F1ED +61FB,F1EE +61FC,F1EF +61FD,F1F0 +61FE,F1F1 +6241,F1F2 +6242,F1F3 +6243,F1F5 +6244,F1F6 +6245,F1F4 +6246,F1F7 +6247,F1F8 +6248,F1FA +624A,F1FB +624B,F1FC +624C,F1FD +624D,F1FE +624E,F2A1 +624F,F2A2 +6250,F2A3 +6251,F2A4 +6252,F2A5 +6253,F2A6 +6254,F2A7 +6255,F2A8 +6256,F2A9 +6257,F2AA +6258,F2AB +6259,F2AC +625A,F2AD +625B,F2AE +625C,F2B0 +625E,F2B1 +625F,F2B2 +6260,F2B4 +6261,F2B3 +6262,F2B5 +6263,F2B6 +6264,F2B7 +6265,F2B8 +6266,F2B9 +6267,F2BB +6268,F2BC +6269,F2BD +626A,F2BE +626B,F2BF +626C,F2C0 +626D,F2C1 +626E,F2C2 +626F,F2C3 +6270,F2C4 +6271,F2C5 +6272,F2E3 +6273,F2C7 +6274,F2C8 +6275,F2C9 +6276,F2CB +6277,F2CE +6278,F2D0 +6279,F2D1 +627A,F2D2 +627B,F2D3 +627C,F2D4 +627D,F2D6 +627E,F2D7 +627F,F2D8 +6280,F2D9 +6281,F2DA +6282,F2DB +6283,F2E0 +6284,F2E1 +6285,F2E2 +6286,F2E4 +6287,F2E5 +6288,F2E6 +6289,F2E7 +628A,F2E8 +628B,F2EA +628C,F2F2 +628D,F2EB +628E,F2EC +628F,F2ED +6290,F2EE +6291,F2F0 +6292,F2F1 +6293,F2F3 +6294,F2F4 +6295,F2F5 +6296,F2F6 +6297,F2F7 +6298,F2F8 +6299,F2F9 +629A,F2FB +629B,F3A2 +629C,F2FD +629D,F2FE +629E,F3A3 +629F,F3A4 +62A0,F3A5 +62A1,F3A6 +62A2,F3A8 +62A3,F3B0 +62A4,F3A9 +62A5,F3AA +62A6,F3AC +62A7,F3AB +62A8,F3AD +62A9,F3AE +62AA,F3AF +62AB,F3B1 +62AC,F3B2 +62AD,F3B4 +62AE,F3B3 +62AF,F3B5 +62B0,F3B6 +62B1,F3B7 +62B2,F3B8 +62B3,F3B9 +62B4,F3BA +62B5,F3BB +62B6,F3BC +62B7,F3BD +62B8,F3BE +62B9,F3BF +62BA,F3C0 +62BB,F3C1 +62BC,F3C3 +62BD,F3C4 +62BE,F3C5 +62BF,F3C6 +62C0,F3C7 +62C1,F3C8 +62C3,F3C9 +62C4,F3CA +62C5,F3CB +62C6,F3CC +62C7,F3CD +62C8,F3CE +62C9,F3D0 +62CA,F3D1 +62CB,F3D2 +62CC,F3D3 +62CD,F3D4 +62CF,F3D5 +62D0,F3D6 +62D1,F3D7 +62D2,F3D8 +62D3,F3DB +62D4,F3DA +62D6,F3DC +62D7,F3DD +62D8,F3DE +62D9,F3DF +62DA,F3E0 +62DC,F3E2 +62DD,F3E3 +62DE,F3E4 +62DF,F3E5 +62E0,F3E6 +62E2,F3E7 +62E3,F3E8 +62E4,F3EA +62E5,F3EB +62E6,F3EC +62E7,F3ED +62E8,F3EE +62E9,F3EF +62EA,F3F0 +62EB,F3F1 +62EC,F3F4 +62ED,F3F5 +62EE,F3F6 +62EF,F3F7 +62F0,F3F8 +62F1,F3F9 +62F2,F3FA +62F3,F3FB +62F4,F3FC +62F5,F3FD +62F6,F3FE +62F8,F4A1 +62F9,F4A2 +62FA,F4A3 +62FB,F4A4 +62FC,F4A5 +62FD,F4A7 +62FE,F4A8 +6341,F4A9 +6342,F4AA +6343,F4AB +6344,F4AC +6345,F4AD +6346,F4AE +6347,F4AF +6348,F4B0 +6349,F4B1 +634C,F4B3 +634D,F4B4 +634E,F4B5 +634F,F4B6 +6350,F4B7 +6351,F4B8 +6352,F4B9 +6353,F4BA +6354,F4BB +6355,F4BC +6357,F4BE +6358,F4BF +6359,F4C0 +635A,F4C1 +635B,F4C2 +635C,F4C3 +635D,F4C4 +635E,F4C5 +635F,F4C6 +6360,F4C7 +6361,F4C8 +6362,F4CB +6363,F4C9 +6364,F4CA +6365,F4CC +6366,F4CD +6367,F4CE +6368,F4D0 +6369,F4D1 +636A,F4D2 +636B,F4D3 +636C,F4D4 +636D,F4D5 +636E,F4D6 +636F,F4D7 +6371,F4D9 +6372,F4DB +6373,F4DD +6374,F4DE +6375,F4DF +6376,F4E0 +6377,F4E1 +6378,F4E2 +6379,F4E3 +637A,F4E4 +637B,F4E5 +637C,F4E6 +637D,F4E7 +637E,F4E8 +637F,F4E9 +6380,F4EA +6382,F4EB +6383,F4EC +6384,F4ED +6385,F4EE +6386,F4EF +6387,F4F0 +6388,F4F1 +6389,F4F2 +638B,F4F3 +638C,F4F4 +638D,F4F5 +638E,F4F6 +6390,F4F7 +6391,F4F8 +6392,F4FA +6394,F4FB +6395,F4FC +6396,F4FD +6397,F4FE +6398,F5A1 +6399,F5A2 +639A,F5A3 +639B,F5A4 +639C,F5A5 +639D,F5A6 +639E,F5A7 +639F,F5A8 +63A0,F5A9 +63A1,F5AA +63A3,F5AB +63A4,F5AE +63A5,F5AF +63A6,F5B0 +63A7,F5B1 +63A8,F5B2 +63A9,F5B3 +63AA,F5B4 +63AD,F5B5 +63AE,F5B6 +63B0,F5B7 +63B1,F5B8 +63B2,F5B9 +63B3,F5BA +63B6,F5BB +63B7,F5BC +63B8,F5BD +63B9,F5BF +63BA,F5C0 +63BB,F5C1 +63BD,F5C4 +63BE,F5C5 +63BF,F5C6 +63C1,F5C8 +63C2,F5C9 +63C3,F5CA +63C4,F5CB +63C6,F5CC +63C7,F5CD +63C8,F5CE +63C9,F5CF +63CA,F5D0 +63CB,F5D1 +63CD,F5D2 +63CE,F5D3 +63D0,F5D4 +63D1,F5D5 +63D3,F5D6 +63D4,F5D7 +63D5,F5D9 +63D6,F5DA +63D7,F5DB +63D8,F5DC +63D9,F5DD +63DA,F5DF +63DB,F5DE +63DC,F5E1 +63DE,F5E3 +63E1,F5E4 +63E3,F5E6 +63E4,F5E5 +63E5,F5E7 +63E6,F5E8 +63E7,F5E9 +63E8,F5EA +63EA,F5EB +63EB,F5ED +63EC,F5EE +63ED,F5EF +63EE,F5F0 +63EF,F5F1 +63F0,F5F3 +63F1,F5F5 +63F2,F5F6 +63F4,F5F7 +63F5,F5F8 +63F6,F5F9 +63F7,F5FA +63F8,F5FB +63F9,F5FC +63FA,F5FD +63FB,F5FE +63FC,F6A2 +63FD,F6A3 +63FE,F6A4 +6441,F6A5 +6442,F6A6 +6444,F6A7 +6445,F6A8 +6446,F6A9 +6447,F6AA +6448,F6AB +644A,F6AC +644B,F6AD +644C,F6AE +644D,F6AF +644E,F6B1 +644F,F6B0 +6450,F6B3 +6451,F6B4 +6452,F6B5 +6453,F6B6 +6454,F6B7 +6455,F6B8 +6456,F6B9 +6458,F6BA +645A,F6BC +645B,F6BD +645C,F6BE +645D,F6BF +645E,F6C0 +645F,F6C1 +6460,F6C2 +6461,F6CB +6462,F6C3 +6463,F6C5 +6464,F6C6 +6465,F6C7 +6466,F6BB +6467,F6C8 +6468,F6CA +6469,F6CC +646B,F6CD +646C,F6CE +646D,F6CF +646E,F6D0 +646F,F6D1 +6470,F6D2 +6471,F6D3 +6472,F6D4 +6473,F6D5 +6474,F6D6 +6476,F6D7 +6477,F6D8 +6478,F6D9 +6479,F6DB +647A,F6DC +647B,F6DD +647C,F6DE +647D,F6DF +647E,F6E0 +647F,F6E1 +6480,F6E2 +6481,F6E4 +6482,F6E5 +6483,F6E6 +6484,F6E7 +6485,F6E8 +6486,F6EA +6487,F6EB +6488,F6EC +6489,F6ED +648A,F6EF +648B,F6F0 +648C,F6F1 +648D,F6F2 +648E,F6F4 +648F,F6F5 +6491,F6F6 +6492,F6F7 +6493,F6F9 +6495,F6FA +6496,F6FB +6497,F6FC +6498,F6FE +6499,F7A1 +649A,F7A2 +649B,F7A3 +649C,F7A4 +649D,F7A5 +649E,F7A6 +649F,F7A7 +64A0,F7A8 +64A1,F7A9 +64A2,F7AA +64A3,F7AB +64A4,F7AC +64A5,F7AD +64A6,F7AE +64A7,F7B0 +64A8,F7B1 +64A9,F7B2 +64AA,F7B3 +64AB,F7B4 +64AC,F7B5 +64AD,F7B6 +64AE,F7B7 +64AF,F7B9 +64B0,F7BA +64B1,F7BB +64B2,F7BC +64B3,F7BD +64B4,F7BE +64B5,F7BF +64B6,F7C0 +64B7,F7C1 +64B8,F7C2 +64B9,F7C3 +64BA,F7C4 +64BB,F7C5 +64BC,F7C6 +64BD,F7C7 +64BF,F7C8 +64C0,F7C9 +64C1,F7CA +64C3,F7CB +64C4,F7CC +64C5,F7CD +64C6,F7CE +64C7,F7CF +64C8,F7D0 +64C9,F7D1 +64CA,F7D2 +64CB,F7D3 +64CC,F7D4 +64CD,F7D5 +64CE,F7D6 +64CF,F7D7 +64D0,F7D8 +64D1,F7DA +64D2,F7DB +64D3,F7DC +64D4,F7DD +64D5,F7DE +64D6,F7DF +64D7,F7E0 +64D8,F7E1 +64D9,F7E2 +64DA,F7E3 +64DB,F7E4 +64DC,F7E5 +64DD,F7E8 +64DE,F7E7 +64DF,F7E9 +64E0,F7EA +64E1,F7EB +64E2,F7ED +64E3,F7EE +64E4,F7EF +64E5,F7F0 +64E6,F7F1 +64E7,F7F2 +64E8,F7F3 +64E9,F7F4 +64EA,F7F5 +64EB,F7F6 +64EC,F7F8 +64ED,F7F7 +64EE,F7F9 +64EF,F7FA +64F0,F7FC +64F1,F7FD +64F2,F7FB +64F3,F8A1 +64F4,F8A2 +64F5,F8A3 +64F6,F8A4 +64F7,F8A5 +64F8,F8A6 +64F9,F8A7 +64FA,F8A9 +64FB,F8AA +64FC,F8AB +64FD,F8AC +64FE,F8AD +6541,F8AF +6542,F8A8 +6543,F8AE +6544,F8B0 +6545,F8B1 +6546,F8B2 +6547,F8B3 +6548,F8B4 +6549,F8B5 +654A,F8B6 +654B,F8B7 +654C,F8B8 +654D,F8B9 +654E,F8BA +654F,F8BB +6551,F8BC +6552,F8BD +6553,F8BF +6554,F8C0 +6555,F8C1 +6556,F8C3 +6557,F8C4 +6558,F8C5 +6559,F8C6 +655A,F8C7 +655B,F8C8 +655C,F8C9 +655D,F8CA +655E,F8CB +655F,F8CC +6560,F8CD +6561,F8CE +6562,F8CF +6563,F8D0 +6564,F8D1 +6565,F8D2 +6566,F8D3 +6567,F8D4 +6568,F8D5 +656A,F8D6 +656B,F8D7 +656C,F8D9 +656D,F8D8 +656E,F8DA +656F,F8DC +6570,F8DD +6572,F8DE +6573,F8DF +6574,F8E0 +6575,F8E1 +6577,F8E3 +6578,F8E4 +6579,F8E5 +657A,F8E6 +657C,F8E8 +657E,F8E9 +657F,F8EA +6580,F8EB +6581,F8EC +6582,F8EE +6583,F8EF +6584,F8F1 +6585,F8F2 +6586,F8F3 +6587,F8F4 +6588,F8F5 +6589,F8F6 +658A,F8F7 +658B,F8F8 +658C,F8F9 +658D,F8FA +658E,F8FB +658F,F8FD +6591,F9A1 +6592,F9A2 +6593,F9A7 +6594,F9A3 +6595,F9A4 +6596,F9A5 +6597,F9A6 +6598,F9A8 +6599,F9A9 +659A,F9AA +659B,F9AB +659D,F9AC +659E,F9AD +659F,F9AF +65A0,F9B0 +65A1,F9B1 +65A2,F9B2 +65A3,F9B4 +65A4,F9B5 +65A5,F9B6 +65A7,F9B9 +65A8,F9BA +65A9,F9BB +65AA,F9BC +65AB,F9BE +65AC,F9BF +65AD,F9C0 +65AE,F9C1 +65AF,F9C2 +65B0,F9C4 +65B1,F9C3 +65B2,F9C5 +65B3,F9C6 +65B4,F9C7 +65B5,F9C8 +65B6,F9C9 +65B7,F9CA +65B9,F9CB +65BA,F9CC +65BB,F9CD +65BC,F9CE +65BD,F9CF +65BE,F9D0 +65BF,F9D1 +65C0,F9D2 +65C1,F9D3 +65C2,F9D4 +65C3,F9D6 +65C4,F9D7 +65C6,F9D9 +65C7,F9D8 +65C8,F9DA +65C9,F9DB +65CB,F9DC +65CC,F9DD +65CD,F9DE +65CE,F9DF +65CF,F9E0 +65D0,F9E1 +65D1,F9E2 +65D2,F9E3 +65D3,F9E4 +65D4,F9E5 +65D5,F9E6 +65D6,F9E8 +65D7,F9EA +65D8,F9EB +65D9,F9EC +65DA,F9ED +65DB,F9EE +65DC,F9F0 +65DD,F9F1 +65DE,F9F2 +65DF,F9F3 +65E0,F9F5 +65E1,F9F6 +65E2,F9F7 +65E3,F9F8 +65E4,F9F9 +65E5,F9FA +65E6,F9FB +65E8,F9FC +65E9,F9FD +65EA,F9FE +65EB,FAA2 +65EC,FAA3 +65ED,FAA4 +65EE,FAA5 +65EF,FAA6 +65F0,FAA8 +65F1,FAA7 +65F2,FAA9 +65F3,FAAA +65F5,FAAB +65F6,FAAC +65F7,FAAD +65F8,FAAF +65F9,FAB0 +65FA,FAB1 +65FB,FAB2 +65FC,FAB3 +65FD,FAB4 +65FE,FAB5 +6641,FAB6 +6642,FAB7 +6643,FAB8 +6644,FAB9 +6645,FABA +6646,FABC +6647,FABD +6648,FABE +6649,FABF +664A,FAC1 +664B,FAC0 +664C,FAC2 +664D,FAC3 +664E,FAC4 +664F,FAC5 +6650,FAC6 +6651,FAC7 +6652,FAC8 +6653,FAC9 +6654,FACA +6655,FACD +6656,FACC +6657,FACE +6658,FACF +6659,FAD0 +665A,FAD1 +665B,FAD2 +665C,FAD3 +665D,FAD4 +665E,FAD6 +665F,FAD7 +6660,FAD8 +6661,FADB +6662,FADE +6663,FADC +6664,FADF +6665,FAE1 +6666,FAE2 +6667,FAE3 +6668,FAE4 +6669,FAE5 +666A,FAE6 +666B,FAE7 +666C,FAE8 +666D,FAE9 +666E,FAEA +666F,FAEB +6670,FAEC +6671,FAED +6672,FAEE +6674,FAEF +6675,FAF0 +6676,FAF1 +6677,FAF2 +6678,FAF3 +6679,FAF4 +667A,FAF5 +667C,FAF7 +667D,FAF6 +667E,FAF8 +6680,FAF9 +6681,FAFA +6682,FAFB +6683,FAFD +6684,FAFE +6685,FBA1 +6686,FAFC +6687,FBA4 +6688,FBA6 +6689,FBA8 +668A,FBAA +668B,FBAB +668C,FBAC +668D,FBAE +668E,FBAF +668F,FBB0 +6690,FBB1 +6691,FBB2 +6692,FBB3 +6693,FBB4 +6694,FBB6 +6695,FBB8 +6696,FBB9 +6697,FBBA +6698,FBBB +6699,FBDF +669A,FBBC +669B,FBBE +669C,FBBD +669D,FBBF +669E,FBC1 +669F,FBC4 +66A0,FBC2 +66A1,FBC6 +66A2,FBC7 +66A3,FBC8 +66A4,FBC9 +66A5,FBCA +66A6,FBCB +66A7,FBCD +66A8,FBCC +66A9,FBCE +66AA,FBCF +66AB,FBD1 +66AC,FBD2 +66AD,FBD3 +66AF,FBD4 +66B0,FBD5 +66B1,FBD6 +66B2,FBD7 +66B3,FBD9 +66B4,FBDB +66B5,FBDC +66B6,FBDD +66B7,FBDE +66B8,FBC3 +66BA,FBE0 +66BB,FBE1 +66BC,FBE2 +66BD,FBE3 +66BE,FBE4 +66BF,FBE5 +66C0,FBE6 +66C1,FBE7 +66C2,FBE8 +66C3,FBE9 +66C4,FBEA +66C5,FBEB +66C6,FBEC +66C7,FBED +66C8,FBEE +66CA,FBF0 +66CB,FBEF +66CC,FBF1 +66CD,FBF2 +66CE,FBF3 +66CF,FBF8 +66D0,FBF5 +66D1,FBF6 +66D2,FBF7 +66D3,FBF9 +66D4,FBFB +66D5,FBFC +66D6,FBFD +66D7,FCA1 +66D8,FBFE +66D9,FCA2 +66DA,FBFA +66DB,FCA3 +66DC,FCA4 +66DD,FCA5 +66DE,FCA8 +66DF,FCA7 +66E0,FCA9 +66E1,FCAA +66E2,FCAB +66E3,FCAC +66E4,FCAD +66E5,FCAE +66E7,FCAF +66E8,FCB0 +66EA,FCB2 +66EB,FCB3 +66EC,FCB4 +66EE,FCB5 +66EF,FCB8 +66F0,FCB6 +66F1,FCB9 +66F2,FCBA +66F3,FCBB +66F4,FCBC +66F5,FCBD +66F6,FCBE +66F7,FCBF +66F9,FCC0 +66FA,FCC1 +66FB,FCC2 +66FC,FCC3 +66FD,FCC4 +66FE,FCC5 +6742,FCC7 +6744,FCC8 +6745,FCCB +6746,FCC9 +6747,FCCC +6748,FCCF +6749,FCD1 +674A,FCD3 +674B,FCD5 +674C,FCD6 +674D,FCD8 +674E,FCD9 +674F,FCDA +6750,FCDB +6751,FCDC +6752,FCDE +6753,FCDF +6754,FCE0 +6755,FCE1 +6756,FCE2 +6757,FCE3 +6758,FCE4 +6759,FCE5 +675A,FCE6 +675B,FCE7 +675C,FCE8 +675D,FCE9 +675E,FCEA +675F,FCEB +6760,FCEC +6761,FCEE +6762,FCEF +6763,FCF0 +6764,FCF1 +6765,FCF2 +6766,FCF4 +6767,FCF6 +6768,FCF7 +676A,FCF8 +676B,FCF9 +676C,FCFB +676D,FCFC +676E,FDA1 +676F,FDA2 +6770,FDA3 +6771,FDA5 +6772,FDA6 +6773,FDA7 +6774,FDA8 +6775,FDA9 +6776,FDAA +6777,FDAB +6778,FDAD +6779,FDAE +677B,FDB1 +677D,FDB3 +677E,FDB4 +677F,FDB5 +6780,FDBB +6781,FDB6 +6782,FDB7 +6783,FDB8 +6784,FDB9 +6785,FDBA +6786,FDBC +6787,FDBD +6788,FDC0 +6789,FDC1 +678A,FDC2 +678B,FDC3 +678C,FDC4 +678D,FDC5 +678E,FDC6 +678F,FDC7 +6790,FDC8 +6791,FDC9 +6792,FDCA +6793,FDCB +6794,FDCC +6795,FDCD +6796,FDCE +6797,FDCF +6798,FDD0 +6799,FDD1 +679A,FDD2 +679B,FDD3 +679C,FDD5 +679D,FDD6 +679E,FDD4 +679F,FDD7 +67A0,FDD8 +67A1,FDD9 +67A3,FDDA +67A4,FDDB +67A5,FDDD +67A6,FDDE +67A7,FDDF +67A8,FDE0 +67AA,FDE2 +67AB,FDE4 +67AC,FDE3 +67AD,FDE5 +67AE,FDE6 +67AF,FDE7 +67B0,FDE9 +67B1,FDEA +67B2,FDEC +67B3,FDED +67B4,FDEF +67B5,FDF0 +67B6,FDF1 +67B7,FDF6 +67B8,FDF2 +67B9,FDF4 +67BA,FDFA +67BB,FDF7 +67BC,FDEB +67BD,FDF8 +67BE,FDFB +67BF,FDFC +67C0,FDFD +67C1,FDFE +6841,CAAE +6842,CAB1 +6843,CAB2 +6844,CAC2 +6845,CAC9 +6846,CAD3 +6847,CAD4 +6848,CAD8 +6849,CAE9 +684A,CAF1 +684B,CAF9 +684C,CAFB +684D,CAFD +684E,CBA8 +684F,CBB1 +6850,CBB4 +6851,CBB6 +6852,CBB8 +6853,CBBE +6854,CBC3 +6855,CBD0 +6856,CBD1 +6857,CBD3 +6858,CBDA +6859,CBE4 +685A,CBE6 +685B,CBE9 +685C,CBF1 +685D,CBF2 +685E,CBFA +685F,CBFD +6860,CCA2 +6861,CCA6 +6862,CCAE +6863,CCBC +6864,CCC6 +6865,CCC9 +6866,CCCA +6867,CCCC +6868,CCD0 +6869,CCD5 +686A,CCDE +686B,CCE0 +686C,CCF7 +686D,CDA1 +686E,CDB6 +686F,CDBC +6870,CDBE +6871,CDC4 +6872,CDC9 +6873,CDCA +6874,CDE4 +6875,CDE6 +6876,CDF5 +6877,CDF7 +6878,CDF9 +6879,CDFA +687A,CEA5 +687B,CEA7 +687C,CEB5 +687D,CEC2 +687E,CEC9 +687F,CFA6 +6880,CFBE +6881,CFCA +6882,CFD4 +6883,CFD9 +6884,CFE4 +6885,CFEC +6886,CFEE +6887,CFF1 +6888,CFF2 +6889,CFFB +688A,CFFC +688B,D0A7 +688C,D0AB +688D,D0B2 +688E,D0B4 +688F,D0C2 +6890,D0D2 +6891,D0D4 +6892,D0D9 +6893,D0DF +6894,D0F2 +6895,D1AC +6896,D1AF +6897,D1B5 +6898,D1BC +6899,D1C5 +689A,D1D4 +689B,D1D5 +689C,D1D6 +689D,D1D8 +689E,D1DB +689F,D1DC +68A0,D1DD +68A1,D1DE +68A2,D1DF +68A3,D1E0 +68A4,D1E2 +68A5,D1E3 +68A6,D1E4 +68A7,D1E5 +68A8,D1E6 +68A9,D1E8 +68AA,D1E9 +68AB,D1EA +68AC,D1EB +68AD,D1ED +68AE,D1EF +68AF,D1F0 +68B0,D1F2 +68B1,D1F6 +68B2,D1F7 +68B3,D1F8 +68B4,D1F9 +68B5,D1FA +68B6,D1FC +68B7,D1FD +68B8,D1FE +68B9,D2A2 +68BA,D2A3 +68BB,D2A4 +68BC,D2A7 +68BD,D2A8 +68BE,D2A9 +68BF,D2AA +68C0,D2AB +68C1,D2AD +68C2,D2B2 +68C3,D2B5 +68C4,D2BC +68C5,D2BE +68C6,D2C2 +68C7,D2C3 +68C8,D2C4 +68C9,D2C6 +68CA,D2C7 +68CB,D2C8 +68CC,D2C9 +68CD,D2CA +68CE,D2CB +68CF,D2CC +68D0,D2CD +68D1,D2CE +68D2,D2CF +68D3,D2D0 +68D4,D2D1 +68D5,D2D2 +68D6,D2D3 +68D7,D2D4 +68D8,D2D5 +68D9,D2D6 +68DA,D2D7 +68DB,D2D9 +68DC,D2DA +68DD,D2DE +68DE,D2DF +68DF,D2E1 +68E0,D2E2 +68E1,D2E4 +68E2,D2E5 +68E3,D2E6 +68E4,D2E7 +68E5,D2E8 +68E6,D2E9 +68E7,D2EA +68E8,D2EB +68E9,D2EE +68EA,D2F0 +68EB,D2F1 +68EC,D2F2 +68ED,D2F3 +68EE,D2F4 +68EF,D2F5 +68F0,D2F7 +68F1,D2F8 +68F2,D3A2 +68F3,D3A7 +68F4,D3B6 +68F5,D3BB +68F6,D3BC +68F7,D3C0 +68F8,D3C6 +68F9,D3CA +68FA,D3CC +68FB,D3D4 +68FC,D3D9 +68FD,D3DD +68FE,D3F7 +6941,D3FC +6942,D4A2 +6943,D4AD +6944,D4C5 +6945,D4C8 +6946,D4E8 +6947,D4EC +6948,D4F1 +6949,D4FC +694A,D5AB +694B,D5AE +694C,D5CF +694D,D5D0 +694E,D5E3 +694F,D6A2 +6950,D6B8 +6951,D6B9 +6952,D6BD +6953,D6C0 +6954,D6C8 +6955,D6CD +6956,D6CF +6957,D6D1 +6958,D6DF +6959,D6E1 +695A,D6EE +695B,D6F2 +695C,D7A2 +695D,D7A5 +695E,D7AA +695F,D7AD +6960,D7AF +6961,D7B2 +6962,D7B7 +6963,D7C2 +6964,D7CF +6965,D7DA +6966,D7DF +6967,D7E4 +6968,D7E8 +6969,D7E9 +696A,D7EB +696B,D7F1 +696C,D8A7 +696D,D8B1 +696E,D8B2 +696F,D8B3 +6970,D8C5 +6971,D8C9 +6972,D8D6 +6973,D8F7 +6974,D9A7 +6975,D9AA +6976,D9AC +6977,D9B9 +6978,D9C1 +6979,D9C5 +697A,D9D0 +697B,D9DF +697C,D9E4 +697D,D9EA +697E,D9EE +697F,D9FA +6980,DAA7 +6981,DAA9 +6982,DAB2 +6983,DAB3 +6984,DAB5 +6985,DABD +6986,DABE +6987,DAC9 +6988,DAEE +6989,DAF0 +698A,DAF1 +698B,DAFD +698C,DBB3 +698D,DBB5 +698E,DBB6 +698F,DBCC +6990,DBDF +6991,DBE2 +6992,DBFC +6993,DCA2 +6994,DCB8 +6995,DCC0 +6996,DCCA +6997,DCCC +6998,DCDE +6999,DCEC +699A,DCF4 +699B,DCF6 +699C,DCFB +699D,DDA1 +699E,DDB2 +699F,DDB4 +69A0,DDC3 +69A1,DDCB +69A2,DDD3 +69A3,DDD8 +69A4,DDED +69A5,DDF0 +69A6,DDF1 +69A7,DDF9 +69A8,DDFB +69A9,DEAD +69AA,DEB3 +69AB,DEB7 +69AC,DEC6 +69AD,DEDA +69AE,DEFA +69AF,DFAC +69B0,DFB0 +69B1,DFBC +69B2,DFC7 +69B3,DFE0 +69B4,DFF2 +69B5,DFFB +69B6,E0BD +69B7,E0C0 +69B8,E0C2 +69B9,E0C4 +69BA,E0D6 +69BB,E0D7 +69BC,E0DC +69BD,E0E1 +69BE,E0E5 +69BF,E0E6 +69C0,E0ED +69C1,E0F4 +69C2,E0FB +69C3,E1C4 +69C4,E1C6 +69C5,E1D7 +69C6,E1DA +69C7,E1DB +69C8,E1DE +69C9,E1E0 +69CA,E1E2 +69CB,E1E5 +69CC,E1E7 +69CD,E1FC +69CE,E2AF +69CF,E2B0 +69D0,E2C2 +69D1,E2CA +69D2,E2D8 +69D3,E2DA +69D4,E2DB +69D5,E2DF +69D6,E2E3 +69D7,E2E5 +69D8,E2F1 +69D9,E2F2 +69DA,E2F4 +69DB,E2FC +69DC,E3BA +69DD,E3CE +69DE,E3D9 +69DF,E3DA +69E0,E3E0 +69E1,E3F0 +69E2,E4A6 +69E3,E4AF +69E4,E4B5 +69E5,E4C1 +69E6,E4C7 +69E7,E4C8 +69E8,E4CA +69E9,E4D5 +69EA,E4DA +69EB,E4DB +69EC,E4F9 +69ED,E4FC +69EE,E5B1 +69EF,E5B2 +69F0,E5B6 +69F1,E5B9 +69F2,E5BB +69F3,E5BC +69F4,E5C4 +69F5,E5CC +69F6,E5CE +69F7,E5D0 +69F8,E5D2 +69F9,E5D6 +69FA,E5DC +69FB,E5EE +69FC,E5EF +69FD,E5F7 +69FE,E5FA +6A41,E5FB +6A42,E5FC +6A43,E5FE +6A44,E6A1 +6A45,E6A4 +6A46,E6A5 +6A47,E6A6 +6A48,E6A7 +6A49,E6A9 +6A4A,E6AA +6A4B,E6AB +6A4C,E6AC +6A4D,E6AD +6A4E,E6AF +6A4F,E6B0 +6A50,E6B1 +6A51,E6B3 +6A52,E6B7 +6A53,E6B8 +6A54,E6BC +6A55,E6C4 +6A56,E6C6 +6A57,E6C7 +6A58,E6C9 +6A59,E6CC +6A5A,E6D2 +6A5B,E6D6 +6A5C,E6D9 +6A5D,E6DC +6A5E,E6DF +6A5F,E6E0 +6A60,E6E1 +6A61,E6E4 +6A62,E6E5 +6A63,E6E6 +6A64,E6E8 +6A65,E6EA +6A66,E6EB +6A67,E6EF +6A68,E6F1 +6A69,E6F5 +6A6A,E6F6 +6A6B,E6F7 +6A6C,E6F9 +6A6D,E6FC +6A6E,E7A1 +6A6F,E7A6 +6A70,E7A9 +6A71,E7AA +6A72,E7AC +6A73,E7AD +6A74,E7AE +6A75,E7B0 +6A76,E7B7 +6A77,E7B9 +6A78,E7BB +6A79,E7BC +6A7A,E7BE +6A7B,E7BF +6A7C,E7C4 +6A7D,E7C6 +6A7E,E7C7 +6A7F,E7CB +6A80,E7CC +6A81,E7CD +6A82,E7CE +6A83,E7CF +6A84,E7D0 +6A85,E7D1 +6A86,E7D3 +6A87,E7D7 +6A88,E7DB +6A89,E7DF +6A8A,E7E4 +6A8B,E7E6 +6A8C,E7EB +6A8D,E7F1 +6A8E,E7F8 +6A8F,E7F9 +6A90,E7FE +6A91,E8A2 +6A92,E8A4 +6A93,E8A7 +6A94,E8A8 +6A95,E8B2 +6A96,E8BD +6A97,E8C1 +6A98,E8C9 +6A99,E8CA +6A9A,E8CD +6A9B,E8D2 +6A9C,E8DF +6A9D,E8E3 +6A9E,E8E7 +6A9F,E8E8 +6AA0,E8EF +6AA1,E8F0 +6AA2,E8F1 +6AA3,E8F5 +6AA4,E8F7 +6AA5,E8FB +6AA6,E8FC +6AA7,E8FE +6AA8,E9A7 +6AA9,E9AC +6AAA,E9B2 +6AAB,E9B5 +6AAC,E9B9 +6AAD,E9BA +6AAE,E9BD +6AAF,E9BF +6AB0,E9C5 +6AB1,E9CC +6AB2,E9D9 +6AB3,E9DB +6AB4,E9DC +6AB5,E9E1 +6AB6,E9E4 +6AB7,E9E9 +6AB8,E9ED +6AB9,E9EE +6ABA,E9F1 +6ABB,E9F8 +6ABC,E9FA +6ABD,E9FB +6ABE,E9FE +6ABF,EAA7 +6AC0,EAB1 +6AC1,EAB6 +6AC2,EAB7 +6AC3,EAB8 +6AC4,EAC1 +6AC5,EAD1 +6AC6,EAD9 +6AC7,EADC +6AC8,EAE5 +6AC9,EAF4 +6ACA,EAF7 +6ACB,EAF9 +6ACC,EAFB +6ACD,EAFC +6ACE,EAFE +6ACF,EBA3 +6AD0,EBA4 +6AD1,EBA7 +6AD2,EBA9 +6AD3,EBAA +6AD4,EBBA +6AD5,EBBB +6AD6,EBBC +6AD7,EBBD +6AD8,EBC1 +6AD9,EBC2 +6ADA,EBC6 +6ADB,EBC7 +6ADC,EBCB +6ADD,EBCC +6ADE,EBCD +6ADF,EBCF +6AE0,EBD0 +6AE1,EBD1 +6AE2,EBD2 +6AE3,EBD5 +6AE4,EBD8 +6AE5,EBF5 +6AE6,EBFB +6AE7,ECA6 +6AE8,ECA7 +6AE9,ECAA +6AEA,ECB0 +6AEB,ECB1 +6AEC,ECB2 +6AED,ECB5 +6AEE,ECB8 +6AEF,ECBA +6AF0,ECBD +6AF1,ECBE +6AF2,ECC0 +6AF3,ECC1 +6AF4,ECC2 +6AF5,ECC4 +6AF6,ECC5 +6AF7,ECC6 +6AF8,ECC9 +6AF9,ECCA +6AFA,ECD0 +6AFB,ECD5 +6AFC,ECDD +6AFD,ECDE +6AFE,ECDF +6B41,ECE0 +6B42,ECE1 +6B43,ECE2 +6B44,ECE4 +6B45,ECE7 +6B46,ECE8 +6B47,ECEA +6B48,ECF6 +6B49,ECF7 +6B4A,ECF8 +6B4B,ECFA +6B4C,ECFE +6B4D,EDA1 +6B4E,EDA2 +6B4F,EDA3 +6B50,EDA7 +6B51,EDBC +6B52,EDCF +6B53,EDF5 +6B54,EEAA +6B55,EEAD +6B56,EEC7 +6B57,EEC9 +6B58,EED1 +6B59,EED2 +6B5A,EED4 +6B5B,EEDB +6B5C,EEE1 +6B5D,EEEB +6B5E,EEEC +6B5F,EEED +6B60,EEF4 +6B61,EFA2 +6B62,EFA5 +6B63,EFA7 +6B64,EFB2 +6B65,EFBB +6B66,EFC6 +6B67,EFDE +6B68,EFE0 +6B69,EFE3 +6B6A,EFE6 +6B6B,EFE7 +6B6C,EFE8 +6B6D,EFE9 +6B6E,EFEA +6B6F,EFF2 +6B70,EFFB +6B71,F0D1 +6B72,F0E7 +6B73,F0F5 +6B74,F1A1 +6B75,F1AF +6B76,F1BE +6B77,F1BF +6B78,F1D9 +6B79,F1E0 +6B7A,F1E6 +6B7B,F1F9 +6B7C,F2AF +6B7D,F2BA +6B7E,F2C6 +6B7F,F2CA +6B80,F2CC +6B81,F2CD +6B82,F2CF +6B83,F2D5 +6B84,F2DC +6B85,F2DD +6B86,F2DE +6B87,F2DF +6B88,F2E9 +6B89,F2EF +6B8A,F2FA +6B8B,F2FC +6B8C,F3A1 +6B8D,F3A7 +6B8E,F3C2 +6B8F,F3CF +6B90,F3D9 +6B91,F3E1 +6B92,F3E9 +6B93,F3F2 +6B94,F3F3 +6B95,F4A6 +6B96,F4B2 +6B97,F4BD +6B98,F4CF +6B99,F4D8 +6B9A,F4DA +6B9B,F4DC +6B9C,F4F9 +6B9D,F5AC +6B9E,F5AD +6B9F,F5BE +6BA0,F5C2 +6BA1,F5C3 +6BA2,F5C7 +6BA3,F5D8 +6BA4,F5E0 +6BA5,F5E2 +6BA6,F5EC +6BA7,F5F2 +6BA8,F5F4 +6BA9,F6A1 +6BAA,F6B2 +6BAB,F6C4 +6BAC,F6C9 +6BAD,F6DA +6BAE,F6E3 +6BAF,F6E9 +6BB0,F6EE +6BB1,F6F3 +6BB2,F6F8 +6BB3,F6FD +6BB4,F7AF +6BB5,F7B8 +6BB6,F7D9 +6BB7,F7E6 +6BB8,F7EC +6BB9,F7FE +6BBA,F8BE +6BBB,F8C2 +6BBC,F8DB +6BBD,F8E2 +6BBE,F8E7 +6BBF,F8ED +6BC0,F8F0 +6BC1,F8FC +6BC2,F8FE +6BC3,F9AE +6BC4,F9B3 +6BC5,F9B7 +6BC6,F9B8 +6BC7,F9BD +6BC8,F9D5 +6BC9,F9E7 +6BCA,F9E9 +6BCB,F9EF +6BCC,F9F4 +6BCD,FAA1 +6BCE,FAAE +6BCF,FABB +6BD0,FACB +6BD1,FAD5 +6BD2,FAE0 +6BD3,FADA +6BD4,FADD +6BD5,FAD9 +6BD6,FBA2 +6BD7,FBA3 +6BD8,FBA5 +6BD9,FBA7 +6BDA,FBA9 +6BDB,FBAD +6BDC,FBB5 +6BDD,FBB7 +6BDE,FBC0 +6BDF,FBC5 +6BE0,FBD0 +6BE1,FBD8 +6BE2,FBDA +6BE3,FBF4 +6BE4,FCA6 +6BE5,FCB1 +6BE6,FCB7 +6BE7,FCC6 +6BE8,FCCA +6BE9,FCCD +6BEA,FCCE +6BEB,FCD0 +6BEC,FCD2 +6BED,FCD4 +6BEE,FCD7 +6BEF,FCDD +6BF0,FCED +6BF1,FCF3 +6BF2,FCF5 +6BF3,FCFA +6BF4,FCFD +6BF5,FCFE +6BF6,FDA4 +6BF7,FDAC +6BF8,FDAF +6BF9,FDB0 +6BFA,FDB2 +6BFB,FDBE +6BFC,FDBF +6BFD,FDDC +6BFE,FDE1 +6C41,FDE8 +6C42,FDEE +6C43,FDF3 +6C44,FDF5 +6C45,FDF9 +8441,A4D4 +8442,A4A1 +8443,A4A2 +8444,A4A3 +8445,A4A4 +8446,A4A5 +8447,A4A6 +8448,A4A7 +8449,A4A9 +844A,A4AA +844B,A4AB +844C,A4AC +844D,A4AD +844E,A4AE +844F,A4AF +8450,A4B0 +8451,A4B1 +8453,A4B2 +8454,A4B4 +8455,A4B5 +8456,A4B6 +8457,A4B7 +8458,A4B8 +8459,A4BA +845A,A4BB +845B,A4BC +845C,A4BD +845D,A4BE +8461,A4BF +8481,A4C0 +84A1,A4C1 +84C1,A4C2 +84E1,A4C3 +8541,A4C4 +8561,A4C5 +8581,A4C6 +85A1,A4C7 +85C1,A4C8 +85E1,A4C9 +8641,A4CA +8661,A4CB +8681,A4CC +86A1,A4CD +86C1,A4CE +86E1,A4CF +8741,A4D0 +8761,A4D1 +8781,A4D2 +87A1,A4D3 +8841,A4A1 +8855,A4A3 +8861,B0A1 +8862,B0A2 +8863,8141 +8864,8142 +8865,B0A3 +8866,8143 +8867,8144 +8868,B0A4 +8869,B0A5 +886A,B0A6 +886B,B0A7 +886C,8145 +886D,8146 +886E,8147 +886F,8148 +8870,8149 +8871,B0A8 +8873,B0A9 +8874,B0AA +8875,B0AB +8876,B0AC +8877,B0AD +8878,B0AE +8879,B0AF +887A,814A +887B,B0B0 +887C,B0B1 +887D,B0B2 +8881,B0B3 +8882,B0B4 +8883,814B +8884,814C +8885,B0B5 +8886,814D +8887,814E +8888,814F +8889,B0B6 +888A,8150 +888B,8151 +888C,8152 +888D,8153 +888E,8154 +888F,8155 +8890,8156 +8891,B0B7 +8893,B0B8 +8894,8157 +8895,B0B9 +8896,B0BA +8897,B0BB +8898,8158 +8899,8159 +889A,815A +889B,8161 +889C,8162 +889D,8163 +88A1,B0BC +88A2,B0BD +88A3,8164 +88A4,8165 +88A5,B0BE +88A6,8166 +88A7,8167 +88A8,8168 +88A9,B0BF +88AA,8169 +88AB,816A +88AC,816B +88AD,816C +88AE,816D +88AF,816E +88B0,816F +88B1,8170 +88B3,8171 +88B4,8172 +88B5,B0C0 +88B6,8173 +88B7,B0C1 +88B8,8174 +88B9,8175 +88BA,8176 +88BB,8177 +88BC,8178 +88BD,8179 +88C1,B0C2 +88C2,817A +88C3,8181 +88C4,8182 +88C5,B0C3 +88C6,8183 +88C7,8184 +88C8,8185 +88C9,B0C4 +88CA,8186 +88CB,8187 +88CC,8188 +88CD,8189 +88CE,818A +88CF,818B +88D0,818C +88D1,818D +88D3,818E +88D4,818F +88D5,8190 +88D6,8191 +88D7,8192 +88D8,8193 +88D9,8194 +88DA,8195 +88DB,8196 +88DC,8197 +88DD,8198 +88E1,B0C5 +88E2,B0C6 +88E3,8199 +88E4,819A +88E5,B0C7 +88E6,819B +88E7,819C +88E8,B0C8 +88E9,B0C9 +88EA,819D +88EB,B0CA +88EC,819E +88ED,819F +88EE,81A0 +88EF,81A1 +88F0,81A2 +88F1,B0CB +88F3,B0CC +88F4,81A3 +88F5,B0CD +88F6,B0CE +88F7,B0CF +88F8,B0D0 +88F9,81A4 +88FA,81A5 +88FB,B0D1 +88FC,B0D2 +88FD,B0D3 +8941,B0D4 +8942,81A6 +8943,81A7 +8944,81A8 +8945,B0D5 +8946,81A9 +8947,81AA +8948,81AB +8949,B0D6 +894A,81AC +894B,81AD +894C,81AE +894D,81AF +894E,81B0 +894F,81B1 +8950,81B2 +8951,B0D7 +8953,B0D8 +8954,81B3 +8955,B0D9 +8956,B0DA +8957,B0DB +8958,81B4 +8959,81B5 +895A,81B6 +895B,81B7 +895C,81B8 +895D,81B9 +8961,B0DC +8962,B0DD +8963,B0DE +8964,81BA +8965,B0DF +8966,81BB +8967,81BC +8968,B0E0 +8969,B0E1 +896A,81BD +896B,81BE +896C,81BF +896D,81C0 +896E,81C1 +896F,81C2 +8970,81C3 +8971,B0E2 +8973,B0E3 +8974,81C4 +8975,B0E4 +8976,B0E5 +8977,B0E6 +8978,81C5 +8979,81C6 +897A,81C7 +897B,B0E7 +897C,81C8 +897D,81C9 +8981,B0E8 +8982,81CA +8983,81CB +8984,81CC +8985,B0E9 +8986,81CD +8987,81CE +8988,81CF +8989,B0EA +898A,81D0 +898B,81D1 +898C,81D2 +898D,81D3 +898E,81D4 +898F,81D5 +8990,81D6 +8991,81D7 +8993,B0EB +8994,81D8 +8995,B0EC +8996,81D9 +8997,81DA +8998,81DB +8999,81DC +899A,81DD +899B,81DE +899C,81DF +899D,81E0 +89A1,B0ED +89A2,B0EE +89A3,81E1 +89A4,81E2 +89A5,B0EF +89A6,81E3 +89A7,81E4 +89A8,B0F0 +89A9,B0F1 +89AA,81E5 +89AB,B0F2 +89AC,81E6 +89AD,B0F3 +89AE,81E7 +89AF,81E8 +89B0,B0F4 +89B1,B0F5 +89B3,B0F6 +89B4,81E9 +89B5,B0F7 +89B6,81EA +89B7,B0F8 +89B8,B0F9 +89B9,81EB +89BA,81EC +89BB,81ED +89BC,81EE +89BD,81EF +89C1,B0FA +89C2,B0FB +89C3,81F0 +89C4,81F1 +89C5,B0FC +89C6,81F2 +89C7,81F3 +89C8,81F4 +89C9,B0FD +89CA,81F5 +89CB,B0FE +89CC,81F6 +89CD,81F7 +89CE,81F8 +89CF,81F9 +89D0,81FA +89D1,B1A1 +89D3,B1A2 +89D4,81FB +89D5,B1A3 +89D6,81FC +89D7,B1A4 +89D8,81FD +89D9,81FE +89DA,8241 +89DB,8242 +89DC,8243 +89DD,8244 +89E1,B1A5 +89E2,8245 +89E3,8246 +89E4,8247 +89E5,B1A6 +89E6,8248 +89E7,8249 +89E8,824A +89E9,B1A7 +89EA,824B +89EB,824C +89EC,824D +89ED,824E +89EE,824F +89EF,8250 +89F0,8251 +89F1,8252 +89F3,B1A8 +89F4,8253 +89F5,8254 +89F6,B1A9 +89F7,B1AA +89F8,8255 +89F9,8256 +89FA,8257 +89FB,8258 +89FC,8259 +89FD,825A +8A41,B1AB +8A42,B1AC +8A43,8261 +8A44,8262 +8A45,B1AD +8A46,8263 +8A47,8264 +8A48,8265 +8A49,B1AE +8A4A,8266 +8A4B,8267 +8A4C,8268 +8A4D,8269 +8A4E,826A +8A4F,826B +8A50,826C +8A51,B1AF +8A53,B1B0 +8A54,826D +8A55,B1B1 +8A56,826E +8A57,B1B2 +8A58,826F +8A59,8270 +8A5A,8271 +8A5B,8272 +8A5C,8273 +8A5D,8274 +8A61,B1B3 +8A62,8275 +8A63,8276 +8A64,8277 +8A65,B1B4 +8A66,8278 +8A67,8279 +8A68,827A +8A69,B1B5 +8A6A,8281 +8A6B,8282 +8A6C,8283 +8A6D,8284 +8A6E,8285 +8A6F,8286 +8A70,8287 +8A71,8288 +8A73,B1B6 +8A74,8289 +8A75,B1B7 +8A76,828A +8A77,828B +8A78,828C +8A79,828D +8A7A,828E +8A7B,828F +8A7C,8290 +8A7D,8291 +8A81,B1B8 +8A82,B1B9 +8A83,8292 +8A84,8293 +8A85,B1BA +8A86,8294 +8A87,8295 +8A88,B1BB +8A89,B1BC +8A8A,B1BD +8A8B,B1BE +8A8C,8296 +8A8D,8297 +8A8E,8298 +8A8F,8299 +8A90,B1BF +8A91,B1C0 +8A93,B1C1 +8A94,829A +8A95,B1C2 +8A96,829B +8A97,B1C3 +8A98,B1C4 +8A99,829C +8A9A,829D +8A9B,829E +8A9C,829F +8A9D,82A0 +8AA1,B1C5 +8AA2,B1C6 +8AA3,82A1 +8AA4,82A2 +8AA5,B1C7 +8AA6,82A3 +8AA7,82A4 +8AA8,82A5 +8AA9,B1C8 +8AAA,82A6 +8AAB,82A7 +8AAC,82A8 +8AAD,82A9 +8AAE,82AA +8AAF,82AB +8AB0,82AC +8AB1,82AD +8AB3,82AE +8AB4,82AF +8AB5,82B0 +8AB6,B1C9 +8AB7,B1CA +8AB8,82B1 +8AB9,82B2 +8ABA,82B3 +8ABB,82B4 +8ABC,82B5 +8ABD,82B6 +8AC1,B1CB +8AC2,82B7 +8AC3,82B8 +8AC4,82B9 +8AC5,82BA +8AC6,82BB +8AC7,82BC +8AC8,82BD +8AC9,82BE +8ACA,82BF +8ACB,82C0 +8ACC,82C1 +8ACD,82C2 +8ACE,82C3 +8ACF,82C4 +8AD0,82C5 +8AD1,82C6 +8AD3,82C7 +8AD4,82C8 +8AD5,B1CC +8AD6,82C9 +8AD7,82CA +8AD8,82CB +8AD9,82CC +8ADA,82CD +8ADB,82CE +8ADC,82CF +8ADD,82D0 +8AE1,B1CD +8AE2,B1CE +8AE3,82D1 +8AE4,82D2 +8AE5,B1CF +8AE6,82D3 +8AE7,82D4 +8AE8,82D5 +8AE9,B1D0 +8AEA,82D6 +8AEB,82D7 +8AEC,82D8 +8AED,82D9 +8AEE,82DA +8AEF,82DB +8AF0,82DC +8AF1,B1D1 +8AF3,B1D2 +8AF4,82DD +8AF5,B1D3 +8AF6,82DE +8AF7,82DF +8AF8,82E0 +8AF9,82E1 +8AFA,82E2 +8AFB,82E3 +8AFC,82E4 +8AFD,82E5 +8B41,B1D4 +8B42,82E6 +8B43,82E7 +8B44,82E8 +8B45,B1D5 +8B46,82E9 +8B47,82EA +8B48,82EB +8B49,B1D6 +8B4A,82EC +8B4B,82ED +8B4C,82EE +8B4D,82EF +8B4E,82F0 +8B4F,82F1 +8B50,82F2 +8B51,82F3 +8B53,82F4 +8B54,82F5 +8B55,82F6 +8B56,82F7 +8B57,82F8 +8B58,82F9 +8B59,82FA +8B5A,82FB +8B5B,82FC +8B5C,82FD +8B5D,82FE +8B61,B1D7 +8B62,B1D8 +8B63,8341 +8B64,8342 +8B65,B1D9 +8B66,8343 +8B67,8344 +8B68,B1DA +8B69,B1DB +8B6A,B1DC +8B6B,8345 +8B6C,8346 +8B6D,8347 +8B6E,8348 +8B6F,8349 +8B70,834A +8B71,B1DD +8B73,B1DE +8B74,834B +8B75,B1DF +8B76,834C +8B77,B1E0 +8B78,834D +8B79,834E +8B7A,834F +8B7B,8350 +8B7C,8351 +8B7D,8352 +8B81,B1E1 +8B82,8353 +8B83,8354 +8B84,8355 +8B85,8356 +8B86,8357 +8B87,8358 +8B88,8359 +8B89,835A +8B8A,8361 +8B8B,8362 +8B8C,8363 +8B8D,8364 +8B8E,8365 +8B8F,8366 +8B90,8367 +8B91,8368 +8B93,8369 +8B94,836A +8B95,836B +8B96,836C +8B97,836D +8B98,836E +8B99,836F +8B9A,8370 +8B9B,8371 +8B9C,8372 +8B9D,8373 +8BA1,B1E2 +8BA2,B1E3 +8BA3,8374 +8BA4,8375 +8BA5,B1E4 +8BA6,8376 +8BA7,8377 +8BA8,B1E5 +8BA9,B1E6 +8BAA,8378 +8BAB,B1E7 +8BAC,8379 +8BAD,837A +8BAE,8381 +8BAF,8382 +8BB0,8383 +8BB1,B1E8 +8BB3,B1E9 +8BB4,8384 +8BB5,B1EA +8BB6,8385 +8BB7,B1EB +8BB8,B1EC +8BB9,8386 +8BBA,8387 +8BBB,8388 +8BBC,B1ED +8BBD,8389 +8C41,A4A2 +8C61,B1EE +8C62,B1EF +8C63,B1F0 +8C64,838A +8C65,B1F1 +8C66,838B +8C67,838C +8C68,838D +8C69,B1F2 +8C6A,838E +8C6B,B1F3 +8C6C,838F +8C6D,8390 +8C6E,8391 +8C6F,8392 +8C70,8393 +8C71,B1F4 +8C73,B1F5 +8C74,8394 +8C75,B1F6 +8C76,B1F7 +8C77,B1F8 +8C78,8395 +8C79,8396 +8C7A,8397 +8C7B,B1F9 +8C7C,8398 +8C7D,8399 +8C81,B1FA +8C82,B1FB +8C83,839A +8C84,839B +8C85,B1FC +8C86,839C +8C87,839D +8C88,839E +8C89,B1FD +8C8A,839F +8C8B,83A0 +8C8C,83A1 +8C8D,83A2 +8C8E,83A3 +8C8F,83A4 +8C90,83A5 +8C91,B1FE +8C93,B2A1 +8C94,83A6 +8C95,B2A2 +8C96,B2A3 +8C97,B2A4 +8C98,83A7 +8C99,83A8 +8C9A,83A9 +8C9B,83AA +8C9C,83AB +8C9D,83AC +8CA1,B2A5 +8CA2,B2A6 +8CA3,83AD +8CA4,83AE +8CA5,83AF +8CA6,83B0 +8CA7,83B1 +8CA8,83B2 +8CA9,B2A7 +8CAA,83B3 +8CAB,83B4 +8CAC,83B5 +8CAD,83B6 +8CAE,83B7 +8CAF,83B8 +8CB0,83B9 +8CB1,83BA +8CB3,83BB +8CB4,83BC +8CB5,83BD +8CB6,83BE +8CB7,83BF +8CB8,83C0 +8CB9,83C1 +8CBA,83C2 +8CBB,83C3 +8CBC,83C4 +8CBD,83C5 +8CC1,83C6 +8CC2,83C7 +8CC3,83C8 +8CC4,83C9 +8CC5,83CA +8CC6,83CB +8CC7,83CC +8CC8,83CD +8CC9,83CE +8CCA,83CF +8CCB,83D0 +8CCC,83D1 +8CCD,83D2 +8CCE,83D3 +8CCF,83D4 +8CD0,83D5 +8CD1,83D6 +8CD3,83D7 +8CD4,83D8 +8CD5,83D9 +8CD6,83DA +8CD7,83DB +8CD8,83DC +8CD9,83DD +8CDA,83DE +8CDB,83DF +8CDC,83E0 +8CDD,83E1 +8CE1,B2A8 +8CE2,B2A9 +8CE3,B2AA +8CE4,83E2 +8CE5,B2AB +8CE6,83E3 +8CE7,83E4 +8CE8,83E5 +8CE9,B2AC +8CEA,83E6 +8CEB,83E7 +8CEC,83E8 +8CED,83E9 +8CEE,83EA +8CEF,83EB +8CF0,83EC +8CF1,B2AD +8CF3,B2AE +8CF4,83ED +8CF5,B2AF +8CF6,B2B0 +8CF7,B2B1 +8CF8,83EE +8CF9,83EF +8CFA,83F0 +8CFB,83F1 +8CFC,83F2 +8CFD,83F3 +8D41,B2B2 +8D42,B2B3 +8D43,83F4 +8D44,83F5 +8D45,B2B4 +8D46,83F6 +8D47,83F7 +8D48,83F8 +8D49,83F9 +8D4A,83FA +8D4B,83FB +8D4C,83FC +8D4D,83FD +8D4E,83FE +8D4F,8441 +8D50,8442 +8D51,B2B5 +8D53,8443 +8D54,8444 +8D55,B2B6 +8D56,8445 +8D57,B2B7 +8D58,8446 +8D59,8447 +8D5A,8448 +8D5B,8449 +8D5C,844A +8D5D,844B +8D61,B2B8 +8D62,844C +8D63,844D +8D64,844E +8D65,B2B9 +8D66,844F +8D67,8450 +8D68,8451 +8D69,B2BA +8D6A,8452 +8D6B,8453 +8D6C,8454 +8D6D,8455 +8D6E,8456 +8D6F,8457 +8D70,8458 +8D71,8459 +8D73,845A +8D74,8461 +8D75,B2BB +8D76,B2BC +8D77,8462 +8D78,8463 +8D79,8464 +8D7A,8465 +8D7B,B2BD +8D7C,8466 +8D7D,8467 +8D81,B2BE +8D82,8468 +8D83,8469 +8D84,846A +8D85,846B +8D86,846C +8D87,846D +8D88,846E +8D89,846F +8D8A,8470 +8D8B,8471 +8D8C,8472 +8D8D,8473 +8D8E,8474 +8D8F,8475 +8D90,8476 +8D91,8477 +8D93,8478 +8D94,8479 +8D95,847A +8D96,8481 +8D97,8482 +8D98,8483 +8D99,8484 +8D9A,8485 +8D9B,8486 +8D9C,8487 +8D9D,8488 +8DA1,B2BF +8DA2,B2C0 +8DA3,8489 +8DA4,848A +8DA5,B2C1 +8DA6,848B +8DA7,B2C2 +8DA8,848C +8DA9,B2C3 +8DAA,848D +8DAB,848E +8DAC,848F +8DAD,8490 +8DAE,8491 +8DAF,8492 +8DB0,8493 +8DB1,B2C4 +8DB3,B2C5 +8DB4,8494 +8DB5,B2C6 +8DB6,8495 +8DB7,B2C7 +8DB8,B2C8 +8DB9,B2C9 +8DBA,8496 +8DBB,8497 +8DBC,8498 +8DBD,8499 +8DC1,B2CA +8DC2,B2CB +8DC3,849A +8DC4,849B +8DC5,849C +8DC6,849D +8DC7,849E +8DC8,849F +8DC9,B2CC +8DCA,84A0 +8DCB,84A1 +8DCC,84A2 +8DCD,84A3 +8DCE,84A4 +8DCF,84A5 +8DD0,84A6 +8DD1,84A7 +8DD3,84A8 +8DD4,84A9 +8DD5,84AA +8DD6,B2CD +8DD7,B2CE +8DD8,84AB +8DD9,84AC +8DDA,84AD +8DDB,84AE +8DDC,84AF +8DDD,84B0 +8DE1,B2CF +8DE2,B2D0 +8DE3,84B1 +8DE4,84B2 +8DE5,84B3 +8DE6,84B4 +8DE7,84B5 +8DE8,84B6 +8DE9,84B7 +8DEA,84B8 +8DEB,84B9 +8DEC,84BA +8DED,84BB +8DEE,84BC +8DEF,84BD +8DF0,84BE +8DF1,84BF +8DF3,84C0 +8DF4,84C1 +8DF5,84C2 +8DF6,84C3 +8DF7,B2D1 +8DF8,84C4 +8DF9,84C5 +8DFA,84C6 +8DFB,84C7 +8DFC,84C8 +8DFD,84C9 +8E41,B2D2 +8E42,84CA +8E43,84CB +8E44,84CC +8E45,B2D3 +8E46,84CD +8E47,84CE +8E48,84CF +8E49,B2D4 +8E4A,84D0 +8E4B,84D1 +8E4C,84D2 +8E4D,84D3 +8E4E,84D4 +8E4F,84D5 +8E50,84D6 +8E51,B2D5 +8E53,B2D6 +8E54,84D7 +8E55,84D8 +8E56,84D9 +8E57,B2D7 +8E58,84DA +8E59,84DB +8E5A,84DC +8E5B,84DD +8E5C,84DE +8E5D,84DF +8E61,B2D8 +8E62,84E0 +8E63,84E1 +8E64,84E2 +8E65,84E3 +8E66,84E4 +8E67,84E5 +8E68,84E6 +8E69,84E7 +8E6A,84E8 +8E6B,84E9 +8E6C,84EA +8E6D,84EB +8E6E,84EC +8E6F,84ED +8E70,84EE +8E71,84EF +8E73,84F0 +8E74,84F1 +8E75,84F2 +8E76,84F3 +8E77,84F4 +8E78,84F5 +8E79,84F6 +8E7A,84F7 +8E7B,84F8 +8E7C,84F9 +8E7D,84FA +8E81,B2D9 +8E82,B2DA +8E83,84FB +8E84,84FC +8E85,B2DB +8E86,84FD +8E87,84FE +8E88,8541 +8E89,B2DC +8E8A,8542 +8E8B,8543 +8E8C,8544 +8E8D,8545 +8E8E,8546 +8E8F,8547 +8E90,B2DD +8E91,B2DE +8E93,B2DF +8E94,8548 +8E95,B2E0 +8E96,8549 +8E97,B2E1 +8E98,B2E2 +8E99,854A +8E9A,854B +8E9B,854C +8E9C,854D +8E9D,854E +8EA1,B2E3 +8EA2,854F +8EA3,8550 +8EA4,8551 +8EA5,8552 +8EA6,8553 +8EA7,8554 +8EA8,8555 +8EA9,B2E4 +8EAA,8556 +8EAB,8557 +8EAC,8558 +8EAD,8559 +8EAE,855A +8EAF,8561 +8EB0,8562 +8EB1,8563 +8EB3,8564 +8EB4,8565 +8EB5,8566 +8EB6,B2E5 +8EB7,B2E6 +8EB8,8567 +8EB9,8568 +8EBA,8569 +8EBB,856A +8EBC,856B +8EBD,856C +8EC1,B2E7 +8EC2,B2E8 +8EC3,856D +8EC4,856E +8EC5,B2E9 +8EC6,856F +8EC7,8570 +8EC8,8571 +8EC9,B2EA +8ECA,8572 +8ECB,8573 +8ECC,8574 +8ECD,8575 +8ECE,8576 +8ECF,8577 +8ED0,8578 +8ED1,B2EB +8ED3,B2EC +8ED4,8579 +8ED5,857A +8ED6,B2ED +8ED7,8581 +8ED8,8582 +8ED9,8583 +8EDA,8584 +8EDB,8585 +8EDC,8586 +8EDD,8587 +8EE1,B2EE +8EE2,8588 +8EE3,8589 +8EE4,858A +8EE5,B2EF +8EE6,858B +8EE7,858C +8EE8,858D +8EE9,B2F0 +8EEA,858E +8EEB,858F +8EEC,8590 +8EED,8591 +8EEE,8592 +8EEF,8593 +8EF0,8594 +8EF1,B2F1 +8EF3,B2F2 +8EF4,8595 +8EF5,8596 +8EF6,8597 +8EF7,8598 +8EF8,8599 +8EF9,859A +8EFA,859B +8EFB,859C +8EFC,859D +8EFD,859E +8F41,B2F3 +8F42,859F +8F43,85A0 +8F44,85A1 +8F45,85A2 +8F46,85A3 +8F47,85A4 +8F48,85A5 +8F49,85A6 +8F4A,85A7 +8F4B,85A8 +8F4C,85A9 +8F4D,85AA +8F4E,85AB +8F4F,85AC +8F50,85AD +8F51,85AE +8F53,85AF +8F54,85B0 +8F55,85B1 +8F56,85B2 +8F57,85B3 +8F58,85B4 +8F59,85B5 +8F5A,85B6 +8F5B,85B7 +8F5C,85B8 +8F5D,85B9 +8F61,B2F4 +8F62,B2F5 +8F63,85BA +8F64,85BB +8F65,B2F6 +8F66,85BC +8F67,B2F7 +8F68,85BD +8F69,B2F8 +8F6A,85BE +8F6B,B2F9 +8F6C,85BF +8F6D,85C0 +8F6E,85C1 +8F6F,85C2 +8F70,B2FA +8F71,B2FB +8F73,B2FC +8F74,85C3 +8F75,B2FD +8F76,85C4 +8F77,B2FE +8F78,85C5 +8F79,85C6 +8F7A,85C7 +8F7B,B3A1 +8F7C,85C8 +8F7D,85C9 +8F81,85CA +8F82,85CB +8F83,85CC +8F84,85CD +8F85,85CE +8F86,85CF +8F87,85D0 +8F88,85D1 +8F89,85D2 +8F8A,85D3 +8F8B,85D4 +8F8C,85D5 +8F8D,85D6 +8F8E,85D7 +8F8F,85D8 +8F90,85D9 +8F91,85DA +8F93,85DB +8F94,85DC +8F95,85DD +8F96,85DE +8F97,85DF +8F98,85E0 +8F99,85E1 +8F9A,85E2 +8F9B,85E3 +8F9C,85E4 +8F9D,85E5 +8FA1,B3A2 +8FA2,B3A3 +8FA3,85E6 +8FA4,85E7 +8FA5,B3A4 +8FA6,85E8 +8FA7,85E9 +8FA8,85EA +8FA9,B3A5 +8FAA,85EB +8FAB,85EC +8FAC,85ED +8FAD,85EE +8FAE,85EF +8FAF,85F0 +8FB0,85F1 +8FB1,B3A6 +8FB3,B3A7 +8FB4,85F2 +8FB5,B3A8 +8FB6,85F3 +8FB7,B3A9 +8FB8,85F4 +8FB9,85F5 +8FBA,85F6 +8FBB,85F7 +8FBC,85F8 +8FBD,85F9 +9041,A4A4 +9058,A4A5 +905D,A4A6 +9061,B3AA +9062,B3AB +9063,B3AC +9064,85FA +9065,B3AD +9066,85FB +9067,85FC +9068,B3AE +9069,B3AF +906A,B3B0 +906B,B3B1 +906C,85FD +906D,85FE +906E,8641 +906F,8642 +9070,8643 +9071,B3B2 +9073,B3B3 +9074,8644 +9075,B3B4 +9076,B3B5 +9077,B3B6 +9078,B3B7 +9079,B3B8 +907A,8645 +907B,B3B9 +907C,8646 +907D,B3BA +9081,B3BB +9082,B3BC +9083,8647 +9084,8648 +9085,B3BD +9086,8649 +9087,864A +9088,864B +9089,B3BE +908A,864C +908B,864D +908C,864E +908D,864F +908E,8650 +908F,8651 +9090,8652 +9091,B3BF +9093,B3C0 +9094,8653 +9095,B3C1 +9096,B3C2 +9097,B3C3 +9098,8654 +9099,8655 +909A,8656 +909B,8657 +909C,8658 +909D,8659 +90A1,B3C4 +90A2,B3C5 +90A3,865A +90A4,8661 +90A5,B3C6 +90A6,8662 +90A7,8663 +90A8,8664 +90A9,B3C7 +90AA,8665 +90AB,8666 +90AC,8667 +90AD,8668 +90AE,8669 +90AF,866A +90B0,866B +90B1,B3C8 +90B3,866C +90B4,866D +90B5,866E +90B6,866F +90B7,B3C9 +90B8,8670 +90B9,8671 +90BA,8672 +90BB,8673 +90BC,8674 +90BD,8675 +90C1,8676 +90C2,8677 +90C3,8678 +90C4,8679 +90C5,867A +90C6,8681 +90C7,8682 +90C8,8683 +90C9,8684 +90CA,8685 +90CB,8686 +90CC,8687 +90CD,8688 +90CE,8689 +90CF,868A +90D0,868B +90D1,868C +90D3,868D +90D4,868E +90D5,868F +90D6,8690 +90D7,8691 +90D8,8692 +90D9,8693 +90DA,8694 +90DB,8695 +90DC,8696 +90DD,8697 +90E1,B3CA +90E2,B3CB +90E3,8698 +90E4,B3CC +90E5,B3CD +90E6,8699 +90E7,869A +90E8,869B +90E9,B3CE +90EA,869C +90EB,B3CF +90EC,B3D0 +90ED,869D +90EE,869E +90EF,869F +90F0,86A0 +90F1,B3D1 +90F3,B3D2 +90F4,86A1 +90F5,B3D3 +90F6,B3D4 +90F7,B3D5 +90F8,86A2 +90F9,86A3 +90FA,86A4 +90FB,86A5 +90FC,86A6 +90FD,B3D6 +9141,B3D7 +9142,B3D8 +9143,86A7 +9144,86A8 +9145,B3D9 +9146,86A9 +9147,86AA +9148,86AB +9149,B3DA +914A,86AC +914B,86AD +914C,86AE +914D,86AF +914E,86B0 +914F,86B1 +9150,86B2 +9151,B3DB +9153,B3DC +9154,86B3 +9155,B3DD +9156,B3DE +9157,B3DF +9158,86B4 +9159,86B5 +915A,86B6 +915B,86B7 +915C,86B8 +915D,86B9 +9161,B3E0 +9162,B3E1 +9163,86BA +9164,86BB +9165,B3E2 +9166,86BC +9167,86BD +9168,86BE +9169,B3E3 +916A,86BF +916B,86C0 +916C,86C1 +916D,86C2 +916E,86C3 +916F,86C4 +9170,86C5 +9171,B3E4 +9173,B3E5 +9174,86C6 +9175,86C7 +9176,B3E6 +9177,B3E7 +9178,86C8 +9179,86C9 +917A,B3E8 +917B,86CA +917C,86CB +917D,86CC +9181,B3E9 +9182,86CD +9183,86CE +9184,86CF +9185,B3EA +9186,86D0 +9187,86D1 +9188,86D2 +9189,86D3 +918A,86D4 +918B,86D5 +918C,86D6 +918D,86D7 +918E,86D8 +918F,86D9 +9190,86DA +9191,86DB +9193,86DC +9194,86DD +9195,86DE +9196,86DF +9197,86E0 +9198,86E1 +9199,86E2 +919A,86E3 +919B,86E4 +919C,86E5 +919D,86E6 +91A1,B3EB +91A2,B3EC +91A3,86E7 +91A4,86E8 +91A5,B3ED +91A6,86E9 +91A7,86EA +91A8,86EB +91A9,B3EE +91AA,86EC +91AB,B3EF +91AC,86ED +91AD,86EE +91AE,86EF +91AF,86F0 +91B0,86F1 +91B1,B3F0 +91B3,B3F1 +91B4,86F2 +91B5,B3F2 +91B6,86F3 +91B7,B3F3 +91B8,86F4 +91B9,86F5 +91BA,86F6 +91BB,86F7 +91BC,B3F4 +91BD,B3F5 +91C1,B3F6 +91C2,86F8 +91C3,86F9 +91C4,86FA +91C5,B3F7 +91C6,86FB +91C7,86FC +91C8,86FD +91C9,B3F8 +91CA,86FE +91CB,8741 +91CC,8742 +91CD,8743 +91CE,8744 +91CF,8745 +91D0,8746 +91D1,8747 +91D3,8748 +91D4,8749 +91D5,874A +91D6,B3F9 +91D7,874B +91D8,874C +91D9,874D +91DA,874E +91DB,874F +91DC,8750 +91DD,8751 +91E1,8752 +91E2,8753 +91E3,8754 +91E4,8755 +91E5,8756 +91E6,8757 +91E7,8758 +91E8,8759 +91E9,875A +91EA,8761 +91EB,8762 +91EC,8763 +91ED,8764 +91EE,8765 +91EF,8766 +91F0,8767 +91F1,8768 +91F3,8769 +91F4,876A +91F5,876B +91F6,876C +91F7,876D +91F8,876E +91F9,876F +91FA,8770 +91FB,8771 +91FC,8772 +91FD,8773 +9241,B3FA +9242,8774 +9243,8775 +9244,8776 +9245,B3FB +9246,8777 +9247,8778 +9248,8779 +9249,B3FC +924A,877A +924B,8781 +924C,8782 +924D,8783 +924E,8784 +924F,8785 +9250,8786 +9251,B3FD +9253,B3FE +9254,8787 +9255,B4A1 +9256,8788 +9257,8789 +9258,878A +9259,878B +925A,878C +925B,878D +925C,878E +925D,878F +9261,B4A2 +9262,B4A3 +9263,8790 +9264,8791 +9265,B4A4 +9266,8792 +9267,8793 +9268,8794 +9269,B4A5 +926A,8795 +926B,8796 +926C,8797 +926D,8798 +926E,8799 +926F,879A +9270,879B +9271,879C +9273,B4A6 +9274,879D +9275,B4A7 +9276,879E +9277,B4A8 +9278,879F +9279,87A0 +927A,87A1 +927B,87A2 +927C,87A3 +927D,87A4 +9281,B4A9 +9282,B4AA +9283,87A5 +9284,87A6 +9285,B4AB +9286,87A7 +9287,87A8 +9288,B4AC +9289,B4AD +928A,87A9 +928B,87AA +928C,87AB +928D,87AC +928E,87AD +928F,87AE +9290,87AF +9291,B4AE +9293,B4AF +9294,87B0 +9295,B4B0 +9296,87B1 +9297,B4B1 +9298,87B2 +9299,87B3 +929A,87B4 +929B,87B5 +929C,87B6 +929D,87B7 +92A1,B4B2 +92A2,87B8 +92A3,87B9 +92A4,87BA +92A5,87BB +92A6,87BC +92A7,87BD +92A8,87BE +92A9,87BF +92AA,87C0 +92AB,87C1 +92AC,87C2 +92AD,87C3 +92AE,87C4 +92AF,87C5 +92B0,87C6 +92B1,87C7 +92B3,87C8 +92B4,87C9 +92B5,87CA +92B6,B4B3 +92B7,87CB +92B8,87CC +92B9,87CD +92BA,87CE +92BB,87CF +92BC,87D0 +92BD,87D1 +92C1,B4B4 +92C2,87D2 +92C3,87D3 +92C4,87D4 +92C5,87D5 +92C6,87D6 +92C7,87D7 +92C8,87D8 +92C9,87D9 +92CA,87DA +92CB,87DB +92CC,87DC +92CD,87DD +92CE,87DE +92CF,87DF +92D0,87E0 +92D1,87E1 +92D3,87E2 +92D4,87E3 +92D5,87E4 +92D6,87E5 +92D7,87E6 +92D8,87E7 +92D9,87E8 +92DA,87E9 +92DB,87EA +92DC,87EB +92DD,87EC +92E1,B4B5 +92E2,87ED +92E3,87EE +92E4,87EF +92E5,B4B6 +92E6,87F0 +92E7,87F1 +92E8,87F2 +92E9,B4B7 +92EA,87F3 +92EB,87F4 +92EC,87F5 +92ED,87F6 +92EE,87F7 +92EF,87F8 +92F0,87F9 +92F1,B4B8 +92F3,B4B9 +92F4,87FA +92F5,87FB +92F6,87FC +92F7,87FD +92F8,87FE +92F9,8841 +92FA,8842 +92FB,8843 +92FC,8844 +92FD,8845 +9341,B4BA +9342,B4BB +9343,8846 +9344,8847 +9345,8848 +9346,8849 +9347,884A +9348,884B +9349,B4BC +934A,884C +934B,884D +934C,884E +934D,884F +934E,8850 +934F,8851 +9350,8852 +9351,B4BD +9353,B4BE +9354,8853 +9355,8854 +9356,8855 +9357,B4BF +9358,8856 +9359,8857 +935A,8858 +935B,8859 +935C,885A +935D,8861 +9361,B4C0 +9362,B4C1 +9363,8862 +9364,8863 +9365,B4C2 +9366,8864 +9367,8865 +9368,8866 +9369,B4C3 +936A,B4C4 +936B,B4C5 +936C,8867 +936D,8868 +936E,8869 +936F,886A +9370,886B +9371,B4C6 +9373,B4C7 +9374,886C +9375,B4C8 +9376,886D +9377,B4C9 +9378,B4CA +9379,886E +937A,886F +937B,8870 +937C,B4CB +937D,8871 +9381,B4CC +9382,8872 +9383,8873 +9384,8874 +9385,B4CD +9386,8875 +9387,8876 +9388,8877 +9389,B4CE +938A,8878 +938B,8879 +938C,887A +938D,8881 +938E,8882 +938F,8883 +9390,8884 +9391,8885 +9393,8886 +9394,8887 +9395,8888 +9396,8889 +9397,888A +9398,888B +9399,888C +939A,888D +939B,888E +939C,888F +939D,8890 +93A1,B4CF +93A2,B4D0 +93A3,8891 +93A4,8892 +93A5,B4D1 +93A6,8893 +93A7,8894 +93A8,8895 +93A9,B4D2 +93AA,8896 +93AB,B4D3 +93AC,8897 +93AD,8898 +93AE,8899 +93AF,889A +93B0,889B +93B1,B4D4 +93B3,B4D5 +93B4,889C +93B5,B4D6 +93B6,889D +93B7,B4D7 +93B8,889E +93B9,889F +93BA,88A0 +93BB,88A1 +93BC,B4D8 +93BD,88A2 +9441,A4A7 +9461,B4D9 +9462,B4DA +9463,B4DB +9464,88A3 +9465,B4DC +9466,88A4 +9467,88A5 +9468,B4DD +9469,B4DE +946A,B4DF +946B,B4E0 +946C,B4E1 +946D,88A6 +946E,88A7 +946F,88A8 +9470,B4E2 +9471,B4E3 +9473,B4E4 +9474,88A9 +9475,B4E5 +9476,B4E6 +9477,B4E7 +9478,B4E8 +9479,B4E9 +947A,88AA +947B,88AB +947C,88AC +947D,B4EA +9481,B4EB +9482,B4EC +9483,88AD +9484,88AE +9485,B4ED +9486,88AF +9487,88B0 +9488,88B1 +9489,B4EE +948A,88B2 +948B,88B3 +948C,88B4 +948D,88B5 +948E,88B6 +948F,88B7 +9490,88B8 +9491,B4EF +9493,B4F0 +9494,88B9 +9495,B4F1 +9496,B4F2 +9497,B4F3 +9498,88BA +9499,88BB +949A,88BC +949B,88BD +949C,88BE +949D,88BF +94A1,B4F4 +94A2,88C0 +94A3,88C1 +94A4,88C2 +94A5,88C3 +94A6,88C4 +94A7,88C5 +94A8,88C6 +94A9,88C7 +94AA,88C8 +94AB,88C9 +94AC,88CA +94AD,88CB +94AE,88CC +94AF,88CD +94B0,88CE +94B1,88CF +94B3,88D0 +94B4,88D1 +94B5,88D2 +94B6,88D3 +94B7,88D4 +94B8,88D5 +94B9,88D6 +94BA,88D7 +94BB,88D8 +94BC,88D9 +94BD,88DA +94C1,88DB +94C2,88DC +94C3,88DD +94C4,88DE +94C5,88DF +94C6,88E0 +94C7,88E1 +94C8,88E2 +94C9,88E3 +94CA,88E4 +94CB,88E5 +94CC,88E6 +94CD,88E7 +94CE,88E8 +94CF,88E9 +94D0,88EA +94D1,88EB +94D3,88EC +94D4,88ED +94D5,88EE +94D6,88EF +94D7,88F0 +94D8,88F1 +94D9,88F2 +94DA,88F3 +94DB,88F4 +94DC,88F5 +94DD,88F6 +94E1,B4F5 +94E2,B4F6 +94E3,B4F7 +94E4,88F7 +94E5,B4F8 +94E6,88F8 +94E7,88F9 +94E8,B4F9 +94E9,B4FA +94EA,88FA +94EB,B4FB +94EC,B4FC +94ED,88FB +94EE,88FC +94EF,88FD +94F0,88FE +94F1,B4FD +94F3,B4FE +94F4,8941 +94F5,B5A1 +94F6,8942 +94F7,B5A2 +94F8,8943 +94F9,B5A3 +94FA,8944 +94FB,8945 +94FC,B5A4 +94FD,8946 +9541,B5A5 +9542,B5A6 +9543,8947 +9544,8948 +9545,B5A7 +9546,8949 +9547,894A +9548,894B +9549,B5A8 +954A,894C +954B,894D +954C,894E +954D,894F +954E,8950 +954F,8951 +9550,8952 +9551,B5A9 +9553,B5AA +9554,8953 +9555,B5AB +9556,B5AC +9557,B5AD +9558,8954 +9559,8955 +955A,8956 +955B,8957 +955C,8958 +955D,8959 +9561,B5AE +9562,895A +9563,8961 +9564,8962 +9565,B5AF +9566,8963 +9567,8964 +9568,8965 +9569,B5B0 +956A,8966 +956B,8967 +956C,8968 +956D,8969 +956E,896A +956F,896B +9570,896C +9571,896D +9573,896E +9574,896F +9575,8970 +9576,B5B1 +9577,B5B2 +9578,8971 +9579,8972 +957A,8973 +957B,8974 +957C,8975 +957D,8976 +9581,B5B3 +9582,8977 +9583,8978 +9584,8979 +9585,B5B4 +9586,897A +9587,8981 +9588,8982 +9589,8983 +958A,8984 +958B,8985 +958C,8986 +958D,8987 +958E,8988 +958F,8989 +9590,898A +9591,898B +9593,898C +9594,898D +9595,898E +9596,898F +9597,8990 +9598,8991 +9599,8992 +959A,8993 +959B,8994 +959C,8995 +959D,8996 +95A1,B5B5 +95A2,B5B6 +95A3,8997 +95A4,8998 +95A5,B5B7 +95A6,8999 +95A7,899A +95A8,B5B8 +95A9,B5B9 +95AA,899B +95AB,B5BA +95AC,899C +95AD,B5BB +95AE,899D +95AF,899E +95B0,899F +95B1,B5BC +95B3,B5BD +95B4,89A0 +95B5,B5BE +95B6,89A1 +95B7,B5BF +95B8,89A2 +95B9,B5C0 +95BA,89A3 +95BB,B5C1 +95BC,89A4 +95BD,89A5 +95C1,B5C2 +95C2,89A6 +95C3,89A7 +95C4,89A8 +95C5,B5C3 +95C6,89A9 +95C7,89AA +95C8,89AB +95C9,B5C4 +95CA,89AC +95CB,89AD +95CC,89AE +95CD,89AF +95CE,89B0 +95CF,89B1 +95D0,89B2 +95D1,89B3 +95D3,89B4 +95D4,89B5 +95D5,89B6 +95D6,89B7 +95D7,89B8 +95D8,89B9 +95D9,89BA +95DA,89BB +95DB,89BC +95DC,89BD +95DD,89BE +95E1,B5C5 +95E2,89BF +95E3,89C0 +95E4,89C1 +95E5,89C2 +95E6,89C3 +95E7,89C4 +95E8,89C5 +95E9,89C6 +95EA,89C7 +95EB,89C8 +95EC,89C9 +95ED,89CA +95EE,89CB +95EF,89CC +95F0,89CD +95F1,89CE +95F3,89CF +95F4,89D0 +95F5,89D1 +95F6,B5C6 +95F7,89D2 +95F8,89D3 +95F9,89D4 +95FA,89D5 +95FB,89D6 +95FC,89D7 +95FD,89D8 +9641,B5C7 +9642,89D9 +9643,89DA +9644,89DB +9645,B5C8 +9646,89DC +9647,89DD +9648,89DE +9649,B5C9 +964A,89DF +964B,89E0 +964C,89E1 +964D,89E2 +964E,89E3 +964F,89E4 +9650,89E5 +9651,B5CA +9653,B5CB +9654,89E6 +9655,B5CC +9656,89E7 +9657,89E8 +9658,89E9 +9659,89EA +965A,89EB +965B,89EC +965C,89ED +965D,89EE +9661,B5CD +9662,89EF +9663,89F0 +9664,89F1 +9665,89F2 +9666,89F3 +9667,89F4 +9668,89F5 +9669,89F6 +966A,89F7 +966B,89F8 +966C,89F9 +966D,89FA +966E,89FB +966F,89FC +9670,89FD +9671,89FE +9673,8A41 +9674,8A42 +9675,8A43 +9676,8A44 +9677,8A45 +9678,8A46 +9679,8A47 +967A,8A48 +967B,8A49 +967C,8A4A +967D,8A4B +9681,B5CE +9682,B5CF +9683,8A4C +9684,8A4D +9685,B5D0 +9686,8A4E +9687,8A4F +9688,8A50 +9689,B5D1 +968A,8A51 +968B,8A52 +968C,8A53 +968D,8A54 +968E,8A55 +968F,8A56 +9690,8A57 +9691,B5D2 +9693,B5D3 +9694,8A58 +9695,B5D4 +9696,8A59 +9697,B5D5 +9698,8A5A +9699,8A61 +969A,8A62 +969B,8A63 +969C,8A64 +969D,8A65 +96A1,B5D6 +96A2,8A66 +96A3,8A67 +96A4,8A68 +96A5,8A69 +96A6,8A6A +96A7,8A6B +96A8,8A6C +96A9,8A6D +96AA,8A6E +96AB,8A6F +96AC,8A70 +96AD,8A71 +96AE,8A72 +96AF,8A73 +96B0,8A74 +96B1,8A75 +96B3,8A76 +96B4,8A77 +96B5,8A78 +96B6,B5D7 +96B7,8A79 +96B8,8A7A +96B9,8A81 +96BA,8A82 +96BB,8A83 +96BC,8A84 +96BD,8A85 +96C1,B5D8 +96C2,8A86 +96C3,8A87 +96C4,8A88 +96C5,8A89 +96C6,8A8A +96C7,8A8B +96C8,8A8C +96C9,8A8D +96CA,8A8E +96CB,8A8F +96CC,8A90 +96CD,8A91 +96CE,8A92 +96CF,8A93 +96D0,8A94 +96D1,8A95 +96D3,8A96 +96D4,8A97 +96D5,8A98 +96D6,8A99 +96D7,B5D9 +96D8,8A9A +96D9,8A9B +96DA,8A9C +96DB,8A9D +96DC,8A9E +96DD,8A9F +96E1,B5DA +96E2,8AA0 +96E3,8AA1 +96E4,8AA2 +96E5,B5DB +96E6,8AA3 +96E7,8AA4 +96E8,8AA5 +96E9,B5DC +96EA,8AA6 +96EB,8AA7 +96EC,8AA8 +96ED,8AA9 +96EE,8AAA +96EF,8AAB +96F0,8AAC +96F1,8AAD +96F3,B5DD +96F4,8AAE +96F5,B5DE +96F6,8AAF +96F7,B5DF +96F8,8AB0 +96F9,8AB1 +96FA,8AB2 +96FB,8AB3 +96FC,8AB4 +96FD,8AB5 +9741,B5E0 +9742,8AB6 +9743,8AB7 +9744,8AB8 +9745,B5E1 +9746,8AB9 +9747,8ABA +9748,8ABB +9749,B5E2 +974A,8ABC +974B,8ABD +974C,8ABE +974D,8ABF +974E,8AC0 +974F,8AC1 +9750,8AC2 +9751,B5E3 +9753,8AC3 +9754,8AC4 +9755,8AC5 +9756,8AC6 +9757,B5E4 +9758,8AC7 +9759,8AC8 +975A,8AC9 +975B,8ACA +975C,8ACB +975D,8ACC +9761,B5E5 +9762,B5E6 +9763,8ACD +9764,8ACE +9765,B5E7 +9766,8ACF +9767,8AD0 +9768,B5E8 +9769,B5E9 +976A,8AD1 +976B,B5EA +976C,8AD2 +976D,8AD3 +976E,8AD4 +976F,8AD5 +9770,8AD6 +9771,B5EB +9773,B5EC +9774,8AD7 +9775,B5ED +9776,8AD8 +9777,B5EE +9778,8AD9 +9779,8ADA +977A,8ADB +977B,8ADC +977C,8ADD +977D,8ADE +9781,B5EF +9782,8ADF +9783,8AE0 +9784,8AE1 +9785,8AE2 +9786,8AE3 +9787,8AE4 +9788,8AE5 +9789,8AE6 +978A,8AE7 +978B,8AE8 +978C,8AE9 +978D,8AEA +978E,8AEB +978F,8AEC +9790,8AED +9791,8AEE +9793,8AEF +9794,8AF0 +9795,8AF1 +9796,8AF2 +9797,8AF3 +9798,8AF4 +9799,8AF5 +979A,8AF6 +979B,8AF7 +979C,8AF8 +979D,8AF9 +97A1,B5F0 +97A2,B5F1 +97A3,8AFA +97A4,8AFB +97A5,B5F2 +97A6,8AFC +97A7,8AFD +97A8,B5F3 +97A9,B5F4 +97AA,8AFE +97AB,8B41 +97AC,8B42 +97AD,8B43 +97AE,8B44 +97AF,8B45 +97B0,8B46 +97B1,B5F5 +97B3,B5F6 +97B4,8B47 +97B5,B5F7 +97B6,B5F8 +97B7,B5F9 +97B8,B5FA +97B9,8B48 +97BA,8B49 +97BB,8B4A +97BC,8B4B +97BD,8B4C +9841,A4A8 +9861,B5FB +9862,B5FC +9863,8B4D +9864,8B4E +9865,B5FD +9866,8B4F +9867,8B50 +9868,8B51 +9869,B5FE +986A,8B52 +986B,8B53 +986C,8B54 +986D,8B55 +986E,8B56 +986F,8B57 +9870,8B58 +9871,B6A1 +9873,B6A2 +9874,8B59 +9875,B6A3 +9876,B6A4 +9877,B6A5 +9878,8B5A +9879,8B61 +987A,8B62 +987B,8B63 +987C,8B64 +987D,B6A6 +9881,B6A7 +9882,B6A8 +9883,8B65 +9884,8B66 +9885,B6A9 +9886,8B67 +9887,8B68 +9888,8B69 +9889,B6AA +988A,8B6A +988B,8B6B +988C,8B6C +988D,8B6D +988E,8B6E +988F,8B6F +9890,8B70 +9891,B6AB +9893,B6AC +9894,8B71 +9895,B6AD +9896,B6AE +9897,B6AF +9898,8B72 +9899,8B73 +989A,8B74 +989B,8B75 +989C,8B76 +989D,8B77 +98A1,8B78 +98A2,8B79 +98A3,8B7A +98A4,8B81 +98A5,8B82 +98A6,8B83 +98A7,8B84 +98A8,8B85 +98A9,8B86 +98AA,8B87 +98AB,8B88 +98AC,8B89 +98AD,8B8A +98AE,8B8B +98AF,8B8C +98B0,8B8D +98B1,8B8E +98B3,8B8F +98B4,8B90 +98B5,8B91 +98B6,8B92 +98B7,8B93 +98B8,8B94 +98B9,8B95 +98BA,8B96 +98BB,8B97 +98BC,8B98 +98BD,8B99 +98C1,8B9A +98C2,8B9B +98C3,8B9C +98C4,8B9D +98C5,8B9E +98C6,8B9F +98C7,8BA0 +98C8,8BA1 +98C9,8BA2 +98CA,8BA3 +98CB,8BA4 +98CC,8BA5 +98CD,8BA6 +98CE,8BA7 +98CF,8BA8 +98D0,8BA9 +98D1,8BAA +98D3,8BAB +98D4,8BAC +98D5,8BAD +98D6,8BAE +98D7,8BAF +98D8,8BB0 +98D9,8BB1 +98DA,8BB2 +98DB,8BB3 +98DC,8BB4 +98DD,8BB5 +98E1,B6B0 +98E2,B6B1 +98E3,8BB6 +98E4,8BB7 +98E5,B6B2 +98E6,8BB8 +98E7,8BB9 +98E8,8BBA +98E9,B6B3 +98EA,8BBB +98EB,B6B4 +98EC,B6B5 +98ED,8BBC +98EE,8BBD +98EF,8BBE +98F0,8BBF +98F1,B6B6 +98F3,B6B7 +98F4,8BC0 +98F5,B6B8 +98F6,B6B9 +98F7,B6BA +98F8,8BC1 +98F9,8BC2 +98FA,8BC3 +98FB,8BC4 +98FC,8BC5 +98FD,B6BB +9941,B6BC +9942,B6BD +9943,8BC6 +9944,8BC7 +9945,B6BE +9946,8BC8 +9947,8BC9 +9948,8BCA +9949,B6BF +994A,8BCB +994B,8BCC +994C,8BCD +994D,8BCE +994E,8BCF +994F,8BD0 +9950,8BD1 +9951,B6C0 +9953,B6C1 +9954,8BD2 +9955,B6C2 +9956,B6C3 +9957,B6C4 +9958,8BD3 +9959,8BD4 +995A,8BD5 +995B,8BD6 +995C,8BD7 +995D,8BD8 +9961,B6C5 +9962,8BD9 +9963,8BDA +9964,8BDB +9965,8BDC +9966,8BDD +9967,8BDE +9968,8BDF +9969,8BE0 +996A,8BE1 +996B,8BE2 +996C,8BE3 +996D,8BE4 +996E,8BE5 +996F,8BE6 +9970,8BE7 +9971,8BE8 +9973,8BE9 +9974,8BEA +9975,8BEB +9976,B6C6 +9977,8BEC +9978,8BED +9979,8BEE +997A,8BEF +997B,8BF0 +997C,8BF1 +997D,8BF2 +9981,8BF3 +9982,8BF4 +9983,8BF5 +9984,8BF6 +9985,8BF7 +9986,8BF8 +9987,8BF9 +9988,8BFA +9989,8BFB +998A,8BFC +998B,8BFD +998C,8BFE +998D,8C41 +998E,8C42 +998F,8C43 +9990,8C44 +9991,8C45 +9993,8C46 +9994,8C47 +9995,8C48 +9996,8C49 +9997,8C4A +9998,8C4B +9999,8C4C +999A,8C4D +999B,8C4E +999C,8C4F +999D,8C50 +99A1,B6C7 +99A2,B6C8 +99A3,8C51 +99A4,8C52 +99A5,B6C9 +99A6,8C53 +99A7,8C54 +99A8,8C55 +99A9,B6CA +99AA,8C56 +99AB,8C57 +99AC,8C58 +99AD,8C59 +99AE,8C5A +99AF,8C61 +99B0,8C62 +99B1,8C63 +99B3,8C64 +99B4,8C65 +99B5,8C66 +99B6,8C67 +99B7,B6CB +99B8,8C68 +99B9,8C69 +99BA,8C6A +99BB,8C6B +99BC,8C6C +99BD,8C6D +99C1,B6CC +99C2,8C6E +99C3,8C6F +99C4,8C70 +99C5,8C71 +99C6,8C72 +99C7,8C73 +99C8,8C74 +99C9,B6CD +99CA,8C75 +99CB,8C76 +99CC,8C77 +99CD,8C78 +99CE,8C79 +99CF,8C7A +99D0,8C81 +99D1,8C82 +99D3,8C83 +99D4,8C84 +99D5,8C85 +99D6,8C86 +99D7,8C87 +99D8,8C88 +99D9,8C89 +99DA,8C8A +99DB,8C8B +99DC,8C8C +99DD,8C8D +99E1,B6CE +99E2,8C8E +99E3,8C8F +99E4,8C90 +99E5,8C91 +99E6,8C92 +99E7,8C93 +99E8,8C94 +99E9,8C95 +99EA,8C96 +99EB,8C97 +99EC,8C98 +99ED,8C99 +99EE,8C9A +99EF,8C9B +99F0,8C9C +99F1,8C9D +99F3,8C9E +99F4,8C9F +99F5,8CA0 +99F6,8CA1 +99F7,8CA2 +99F8,8CA3 +99F9,8CA4 +99FA,8CA5 +99FB,8CA6 +99FC,8CA7 +99FD,8CA8 +9A41,B6CF +9A42,8CA9 +9A43,8CAA +9A44,8CAB +9A45,B6D0 +9A46,8CAC +9A47,8CAD +9A48,8CAE +9A49,8CAF +9A4A,8CB0 +9A4B,8CB1 +9A4C,8CB2 +9A4D,8CB3 +9A4E,8CB4 +9A4F,8CB5 +9A50,8CB6 +9A51,8CB7 +9A53,8CB8 +9A54,8CB9 +9A55,8CBA +9A56,8CBB +9A57,8CBC +9A58,8CBD +9A59,8CBE +9A5A,8CBF +9A5B,8CC0 +9A5C,8CC1 +9A5D,8CC2 +9A61,8CC3 +9A62,8CC4 +9A63,8CC5 +9A64,8CC6 +9A65,8CC7 +9A66,8CC8 +9A67,8CC9 +9A68,8CCA +9A69,8CCB +9A6A,8CCC +9A6B,8CCD +9A6C,8CCE +9A6D,8CCF +9A6E,8CD0 +9A6F,8CD1 +9A70,8CD2 +9A71,8CD3 +9A73,8CD4 +9A74,8CD5 +9A75,8CD6 +9A76,8CD7 +9A77,8CD8 +9A78,8CD9 +9A79,8CDA +9A7A,8CDB +9A7B,8CDC +9A7C,8CDD +9A7D,8CDE +9A81,B6D1 +9A82,B6D2 +9A83,8CDF +9A84,8CE0 +9A85,B6D3 +9A86,8CE1 +9A87,8CE2 +9A88,8CE3 +9A89,B6D4 +9A8A,8CE4 +9A8B,8CE5 +9A8C,8CE6 +9A8D,8CE7 +9A8E,8CE8 +9A8F,8CE9 +9A90,B6D5 +9A91,B6D6 +9A93,8CEA +9A94,8CEB +9A95,8CEC +9A96,8CED +9A97,B6D7 +9A98,8CEE +9A99,8CEF +9A9A,8CF0 +9A9B,8CF1 +9A9C,8CF2 +9A9D,8CF3 +9AA1,8CF4 +9AA2,8CF5 +9AA3,8CF6 +9AA4,8CF7 +9AA5,8CF8 +9AA6,8CF9 +9AA7,8CFA +9AA8,8CFB +9AA9,8CFC +9AAA,8CFD +9AAB,8CFE +9AAC,8D41 +9AAD,8D42 +9AAE,8D43 +9AAF,8D44 +9AB0,8D45 +9AB1,8D46 +9AB3,8D47 +9AB4,8D48 +9AB5,8D49 +9AB6,8D4A +9AB7,8D4B +9AB8,8D4C +9AB9,8D4D +9ABA,8D4E +9ABB,8D4F +9ABC,8D50 +9ABD,8D51 +9AC1,B6D8 +9AC2,8D52 +9AC3,8D53 +9AC4,8D54 +9AC5,8D55 +9AC6,8D56 +9AC7,8D57 +9AC8,8D58 +9AC9,8D59 +9ACA,8D5A +9ACB,8D61 +9ACC,8D62 +9ACD,8D63 +9ACE,8D64 +9ACF,8D65 +9AD0,8D66 +9AD1,8D67 +9AD3,8D68 +9AD4,8D69 +9AD5,8D6A +9AD6,8D6B +9AD7,8D6C +9AD8,8D6D +9AD9,8D6E +9ADA,8D6F +9ADB,8D70 +9ADC,8D71 +9ADD,8D72 +9AE1,B6D9 +9AE2,8D73 +9AE3,8D74 +9AE4,8D75 +9AE5,B6DA +9AE6,8D76 +9AE7,8D77 +9AE8,8D78 +9AE9,B6DB +9AEA,8D79 +9AEB,8D7A +9AEC,8D81 +9AED,8D82 +9AEE,8D83 +9AEF,8D84 +9AF0,8D85 +9AF1,B6DC +9AF3,B6DD +9AF4,8D86 +9AF5,8D87 +9AF6,8D88 +9AF7,B6DE +9AF8,8D89 +9AF9,8D8A +9AFA,8D8B +9AFB,8D8C +9AFC,8D8D +9AFD,8D8E +9B41,8D8F +9B42,8D90 +9B43,8D91 +9B44,8D92 +9B45,8D93 +9B46,8D94 +9B47,8D95 +9B48,8D96 +9B49,8D97 +9B4A,8D98 +9B4B,8D99 +9B4C,8D9A +9B4D,8D9B +9B4E,8D9C +9B4F,8D9D +9B50,8D9E +9B51,8D9F +9B53,8DA0 +9B54,8DA1 +9B55,8DA2 +9B56,8DA3 +9B57,8DA4 +9B58,8DA5 +9B59,8DA6 +9B5A,8DA7 +9B5B,8DA8 +9B5C,8DA9 +9B5D,8DAA +9B61,B6DF +9B62,B6E0 +9B63,8DAB +9B64,8DAC +9B65,B6E1 +9B66,8DAD +9B67,8DAE +9B68,B6E2 +9B69,B6E3 +9B6A,8DAF +9B6B,8DB0 +9B6C,8DB1 +9B6D,8DB2 +9B6E,8DB3 +9B6F,8DB4 +9B70,8DB5 +9B71,B6E4 +9B73,B6E5 +9B74,8DB6 +9B75,B6E6 +9B76,8DB7 +9B77,8DB8 +9B78,8DB9 +9B79,8DBA +9B7A,8DBB +9B7B,8DBC +9B7C,8DBD +9B7D,8DBE +9B81,B6E7 +9B82,8DBF +9B83,8DC0 +9B84,8DC1 +9B85,B6E8 +9B86,8DC2 +9B87,8DC3 +9B88,8DC4 +9B89,B6E9 +9B8A,8DC5 +9B8B,8DC6 +9B8C,8DC7 +9B8D,8DC8 +9B8E,8DC9 +9B8F,8DCA +9B90,8DCB +9B91,B6EA +9B93,B6EB +9B94,8DCC +9B95,8DCD +9B96,8DCE +9B97,8DCF +9B98,8DD0 +9B99,8DD1 +9B9A,8DD2 +9B9B,8DD3 +9B9C,8DD4 +9B9D,8DD5 +9BA1,B6EC +9BA2,8DD6 +9BA3,8DD7 +9BA4,8DD8 +9BA5,B6ED +9BA6,8DD9 +9BA7,8DDA +9BA8,8DDB +9BA9,B6EE +9BAA,8DDC +9BAB,8DDD +9BAC,8DDE +9BAD,8DDF +9BAE,8DE0 +9BAF,8DE1 +9BB0,8DE2 +9BB1,B6EF +9BB3,B6F0 +9BB4,8DE3 +9BB5,B6F1 +9BB6,8DE4 +9BB7,B6F2 +9BB8,8DE5 +9BB9,8DE6 +9BBA,8DE7 +9BBB,8DE8 +9BBC,8DE9 +9BBD,8DEA +9C41,A4A9 +9C42,A4AA +9C51,A4AB +9C53,A4AC +9C55,A4AD +9C5B,A4AE +9C5C,A4AF +9C5D,A4B0 +9C61,B6F3 +9C62,B6F4 +9C63,8DEB +9C64,8DEC +9C65,B6F5 +9C66,8DED +9C67,8DEE +9C68,8DEF +9C69,B6F6 +9C6A,8DF0 +9C6B,8DF1 +9C6C,8DF2 +9C6D,8DF3 +9C6E,8DF4 +9C6F,8DF5 +9C70,8DF6 +9C71,B6F7 +9C73,B6F8 +9C74,8DF7 +9C75,B6F9 +9C76,B6FA +9C77,B6FB +9C78,B6FC +9C79,8DF8 +9C7A,8DF9 +9C7B,8DFA +9C7C,B6FD +9C7D,B6FE +9C81,B7A1 +9C82,B7A2 +9C83,8DFB +9C84,8DFC +9C85,B7A3 +9C86,8DFD +9C87,8DFE +9C88,8E41 +9C89,B7A4 +9C8A,8E42 +9C8B,8E43 +9C8C,8E44 +9C8D,8E45 +9C8E,8E46 +9C8F,8E47 +9C90,8E48 +9C91,B7A5 +9C93,B7A6 +9C94,8E49 +9C95,B7A7 +9C96,B7A8 +9C97,B7A9 +9C98,8E4A +9C99,8E4B +9C9A,8E4C +9C9B,8E4D +9C9C,8E4E +9C9D,8E4F +9CA1,B7AA +9CA2,B7AB +9CA3,8E50 +9CA4,8E51 +9CA5,B7AC +9CA6,8E52 +9CA7,8E53 +9CA8,8E54 +9CA9,8E55 +9CAA,8E56 +9CAB,8E57 +9CAC,8E58 +9CAD,8E59 +9CAE,8E5A +9CAF,8E61 +9CB0,8E62 +9CB1,8E63 +9CB3,8E64 +9CB4,8E65 +9CB5,B7AD +9CB6,8E66 +9CB7,B7AE +9CB8,8E67 +9CB9,8E68 +9CBA,8E69 +9CBB,8E6A +9CBC,8E6B +9CBD,8E6C +9CC1,8E6D +9CC2,8E6E +9CC3,8E6F +9CC4,8E70 +9CC5,8E71 +9CC6,8E72 +9CC7,8E73 +9CC8,8E74 +9CC9,8E75 +9CCA,8E76 +9CCB,8E77 +9CCC,8E78 +9CCD,8E79 +9CCE,8E7A +9CCF,8E81 +9CD0,8E82 +9CD1,8E83 +9CD3,8E84 +9CD4,8E85 +9CD5,8E86 +9CD6,8E87 +9CD7,8E88 +9CD8,8E89 +9CD9,8E8A +9CDA,8E8B +9CDB,8E8C +9CDC,8E8D +9CDD,8E8E +9CE1,B7AF +9CE2,B7B0 +9CE3,8E8F +9CE4,8E90 +9CE5,B7B1 +9CE6,8E91 +9CE7,8E92 +9CE8,8E93 +9CE9,B7B2 +9CEA,8E94 +9CEB,8E95 +9CEC,8E96 +9CED,8E97 +9CEE,8E98 +9CEF,8E99 +9CF0,8E9A +9CF1,B7B3 +9CF3,B7B4 +9CF4,8E9B +9CF5,B7B5 +9CF6,B7B6 +9CF7,B7B7 +9CF8,8E9C +9CF9,8E9D +9CFA,8E9E +9CFB,8E9F +9CFC,8EA0 +9CFD,B7B8 +9D41,B7B9 +9D42,B7BA +9D43,8EA1 +9D44,8EA2 +9D45,B7BB +9D46,8EA3 +9D47,8EA4 +9D48,8EA5 +9D49,B7BC +9D4A,8EA6 +9D4B,8EA7 +9D4C,8EA8 +9D4D,8EA9 +9D4E,8EAA +9D4F,8EAB +9D50,8EAC +9D51,B7BD +9D53,B7BE +9D54,8EAD +9D55,B7BF +9D56,8EAE +9D57,B7C0 +9D58,8EAF +9D59,8EB0 +9D5A,8EB1 +9D5B,8EB2 +9D5C,8EB3 +9D5D,8EB4 +9D61,B7C1 +9D62,B7C2 +9D63,8EB5 +9D64,8EB6 +9D65,B7C3 +9D66,8EB7 +9D67,8EB8 +9D68,8EB9 +9D69,B7C4 +9D6A,8EBA +9D6B,8EBB +9D6C,8EBC +9D6D,8EBD +9D6E,8EBE +9D6F,8EBF +9D70,8EC0 +9D71,B7C5 +9D73,B7C6 +9D74,8EC1 +9D75,B7C7 +9D76,B7C8 +9D77,B7C9 +9D78,8EC2 +9D79,8EC3 +9D7A,8EC4 +9D7B,8EC5 +9D7C,8EC6 +9D7D,8EC7 +9D81,B7CA +9D82,8EC8 +9D83,8EC9 +9D84,8ECA +9D85,B7CB +9D86,8ECB +9D87,8ECC +9D88,8ECD +9D89,8ECE +9D8A,8ECF +9D8B,8ED0 +9D8C,8ED1 +9D8D,8ED2 +9D8E,8ED3 +9D8F,8ED4 +9D90,8ED5 +9D91,8ED6 +9D93,B7CC +9D94,8ED7 +9D95,B7CD +9D96,8ED8 +9D97,8ED9 +9D98,8EDA +9D99,8EDB +9D9A,8EDC +9D9B,8EDD +9D9C,8EDE +9D9D,8EDF +9DA1,B7CE +9DA2,B7CF +9DA3,8EE0 +9DA4,8EE1 +9DA5,B7D0 +9DA6,8EE2 +9DA7,8EE3 +9DA8,8EE4 +9DA9,B7D1 +9DAA,8EE5 +9DAB,8EE6 +9DAC,8EE7 +9DAD,8EE8 +9DAE,8EE9 +9DAF,8EEA +9DB0,8EEB +9DB1,B7D2 +9DB3,B7D3 +9DB4,8EEC +9DB5,B7D4 +9DB6,8EED +9DB7,B7D5 +9DB8,8EEE +9DB9,8EEF +9DBA,8EF0 +9DBB,8EF1 +9DBC,8EF2 +9DBD,8EF3 +9DC1,B7D6 +9DC2,8EF4 +9DC3,8EF5 +9DC4,8EF6 +9DC5,B7D7 +9DC6,8EF7 +9DC7,8EF8 +9DC8,8EF9 +9DC9,8EFA +9DCA,8EFB +9DCB,8EFC +9DCC,8EFD +9DCD,8EFE +9DCE,8F41 +9DCF,8F42 +9DD0,8F43 +9DD1,8F44 +9DD3,8F45 +9DD4,8F46 +9DD5,8F47 +9DD6,8F48 +9DD7,B7D8 +9DD8,8F49 +9DD9,8F4A +9DDA,8F4B +9DDB,8F4C +9DDC,8F4D +9DDD,8F4E +9DE1,8F4F +9DE2,8F50 +9DE3,8F51 +9DE4,8F52 +9DE5,8F53 +9DE6,8F54 +9DE7,8F55 +9DE8,8F56 +9DE9,8F57 +9DEA,8F58 +9DEB,8F59 +9DEC,8F5A +9DED,8F61 +9DEE,8F62 +9DEF,8F63 +9DF0,8F64 +9DF1,8F65 +9DF3,8F66 +9DF4,8F67 +9DF5,8F68 +9DF6,B7D9 +9DF7,8F69 +9DF8,8F6A +9DF9,8F6B +9DFA,8F6C +9DFB,8F6D +9DFC,8F6E +9DFD,8F6F +9E41,B7DA +9E42,8F70 +9E43,8F71 +9E44,8F72 +9E45,B7DB +9E46,8F73 +9E47,8F74 +9E48,8F75 +9E49,B7DC +9E4A,8F76 +9E4B,8F77 +9E4C,8F78 +9E4D,8F79 +9E4E,8F7A +9E4F,8F81 +9E50,8F82 +9E51,B7DD +9E53,B7DE +9E54,8F83 +9E55,B7DF +9E56,8F84 +9E57,B7E0 +9E58,8F85 +9E59,8F86 +9E5A,8F87 +9E5B,8F88 +9E5C,8F89 +9E5D,8F8A +9E61,B7E1 +9E62,8F8B +9E63,8F8C +9E64,8F8D +9E65,B7E2 +9E66,8F8E +9E67,8F8F +9E68,8F90 +9E69,B7E3 +9E6A,8F91 +9E6B,8F92 +9E6C,8F93 +9E6D,8F94 +9E6E,8F95 +9E6F,8F96 +9E70,8F97 +9E71,8F98 +9E73,B7E4 +9E74,8F99 +9E75,B7E5 +9E76,8F9A +9E77,B7E6 +9E78,8F9B +9E79,8F9C +9E7A,8F9D +9E7B,8F9E +9E7C,8F9F +9E7D,8FA0 +9E81,B7E7 +9E82,B7E8 +9E83,8FA1 +9E84,8FA2 +9E85,B7E9 +9E86,8FA3 +9E87,8FA4 +9E88,8FA5 +9E89,B7EA +9E8A,8FA6 +9E8B,8FA7 +9E8C,8FA8 +9E8D,8FA9 +9E8E,8FAA +9E8F,8FAB +9E90,8FAC +9E91,B7EB +9E93,B7EC +9E94,8FAD +9E95,B7ED +9E96,8FAE +9E97,B7EE +9E98,8FAF +9E99,8FB0 +9E9A,8FB1 +9E9B,8FB2 +9E9C,8FB3 +9E9D,8FB4 +9EA1,B7EF +9EA2,8FB5 +9EA3,8FB6 +9EA4,8FB7 +9EA5,8FB8 +9EA6,8FB9 +9EA7,8FBA +9EA8,8FBB +9EA9,8FBC +9EAA,8FBD +9EAB,8FBE +9EAC,8FBF +9EAD,8FC0 +9EAE,8FC1 +9EAF,8FC2 +9EB0,8FC3 +9EB1,8FC4 +9EB3,8FC5 +9EB4,8FC6 +9EB5,8FC7 +9EB6,B7F0 +9EB7,8FC8 +9EB8,8FC9 +9EB9,8FCA +9EBA,8FCB +9EBB,8FCC +9EBC,8FCD +9EBD,8FCE +9EC1,B7F1 +9EC2,8FCF +9EC3,8FD0 +9EC4,8FD1 +9EC5,8FD2 +9EC6,8FD3 +9EC7,8FD4 +9EC8,8FD5 +9EC9,8FD6 +9ECA,8FD7 +9ECB,8FD8 +9ECC,8FD9 +9ECD,8FDA +9ECE,8FDB +9ECF,8FDC +9ED0,8FDD +9ED1,8FDE +9ED3,8FDF +9ED4,8FE0 +9ED5,8FE1 +9ED6,8FE2 +9ED7,8FE3 +9ED8,8FE4 +9ED9,8FE5 +9EDA,8FE6 +9EDB,8FE7 +9EDC,8FE8 +9EDD,8FE9 +9EE1,B7F2 +9EE2,B7F3 +9EE3,8FEA +9EE4,8FEB +9EE5,B7F4 +9EE6,8FEC +9EE7,8FED +9EE8,8FEE +9EE9,B7F5 +9EEA,8FEF +9EEB,8FF0 +9EEC,8FF1 +9EED,8FF2 +9EEE,8FF3 +9EEF,8FF4 +9EF0,8FF5 +9EF1,B7F6 +9EF3,8FF6 +9EF4,8FF7 +9EF5,B7F7 +9EF6,8FF8 +9EF7,B7F8 +9EF8,8FF9 +9EF9,8FFA +9EFA,8FFB +9EFB,8FFC +9EFC,8FFD +9EFD,8FFE +9F41,B7F9 +9F42,B7FA +9F43,9041 +9F44,9042 +9F45,B7FB +9F46,9043 +9F47,9044 +9F48,9045 +9F49,B7FC +9F4A,9046 +9F4B,9047 +9F4C,9048 +9F4D,9049 +9F4E,904A +9F4F,904B +9F50,904C +9F51,B7FD +9F53,B7FE +9F54,904D +9F55,B8A1 +9F56,904E +9F57,B8A2 +9F58,904F +9F59,9050 +9F5A,9051 +9F5B,9052 +9F5C,9053 +9F5D,9054 +9F61,B8A3 +9F62,B8A4 +9F63,9055 +9F64,9056 +9F65,B8A5 +9F66,9057 +9F67,9058 +9F68,9059 +9F69,B8A6 +9F6A,905A +9F6B,9061 +9F6C,9062 +9F6D,9063 +9F6E,9064 +9F6F,9065 +9F70,9066 +9F71,B8A7 +9F73,B8A8 +9F74,9067 +9F75,B8A9 +9F76,9068 +9F77,B8AA +9F78,B8AB +9F79,9069 +9F7A,906A +9F7B,B8AC +9F7C,B8AD +9F7D,906B +9F81,906C +9F82,906D +9F83,906E +9F84,906F +9F85,9070 +9F86,9071 +9F87,9072 +9F88,9073 +9F89,9074 +9F8A,9075 +9F8B,9076 +9F8C,9077 +9F8D,9078 +9F8E,9079 +9F8F,907A +9F90,9081 +9F91,9082 +9F93,9083 +9F94,9084 +9F95,9085 +9F96,9086 +9F97,9087 +9F98,9088 +9F99,9089 +9F9A,908A +9F9B,908B +9F9C,908C +9F9D,908D +9FA1,B8AE +9FA2,B8AF +9FA3,908E +9FA4,908F +9FA5,B8B0 +9FA6,9090 +9FA7,9091 +9FA8,9092 +9FA9,B8B1 +9FAA,9093 +9FAB,9094 +9FAC,9095 +9FAD,9096 +9FAE,9097 +9FAF,9098 +9FB0,9099 +9FB1,B8B2 +9FB3,B8B3 +9FB4,909A +9FB5,B8B4 +9FB6,909B +9FB7,B8B5 +9FB8,909C +9FB9,909D +9FBA,909E +9FBB,909F +9FBC,90A0 +9FBD,90A1 +A041,A4B1 +A061,B8B6 +A062,B8B7 +A063,90A2 +A064,90A3 +A065,B8B8 +A066,90A4 +A067,B8B9 +A068,B8BA +A069,B8BB +A06A,B8BC +A06B,B8BD +A06C,90A5 +A06D,90A6 +A06E,90A7 +A06F,90A8 +A070,90A9 +A071,B8BE +A073,B8BF +A074,90AA +A075,B8C0 +A076,90AB +A077,B8C1 +A078,B8C2 +A079,90AC +A07A,90AD +A07B,B8C3 +A07C,90AE +A07D,B8C4 +A081,B8C5 +A082,B8C6 +A083,90AF +A084,90B0 +A085,B8C7 +A086,90B1 +A087,90B2 +A088,90B3 +A089,B8C8 +A08A,90B4 +A08B,90B5 +A08C,90B6 +A08D,90B7 +A08E,90B8 +A08F,90B9 +A090,90BA +A091,B8C9 +A093,B8CA +A094,90BB +A095,B8CB +A096,B8CC +A097,B8CD +A098,B8CE +A099,90BC +A09A,90BD +A09B,90BE +A09C,90BF +A09D,90C0 +A0A1,B8CF +A0A2,B8D0 +A0A3,90C1 +A0A4,90C2 +A0A5,90C3 +A0A6,90C4 +A0A7,90C5 +A0A8,90C6 +A0A9,B8D1 +A0AA,90C7 +A0AB,90C8 +A0AC,90C9 +A0AD,90CA +A0AE,90CB +A0AF,90CC +A0B0,90CD +A0B1,90CE +A0B3,90CF +A0B4,90D0 +A0B5,90D1 +A0B6,90D2 +A0B7,B8D2 +A0B8,90D3 +A0B9,90D4 +A0BA,90D5 +A0BB,90D6 +A0BC,90D7 +A0BD,90D8 +A0C1,90D9 +A0C2,90DA +A0C3,90DB +A0C4,90DC +A0C5,90DD +A0C6,90DE +A0C7,90DF +A0C8,90E0 +A0C9,90E1 +A0CA,90E2 +A0CB,90E3 +A0CC,90E4 +A0CD,90E5 +A0CE,90E6 +A0CF,90E7 +A0D0,90E8 +A0D1,90E9 +A0D3,90EA +A0D4,90EB +A0D5,90EC +A0D6,90ED +A0D7,90EE +A0D8,90EF +A0D9,90F0 +A0DA,90F1 +A0DB,90F2 +A0DC,90F3 +A0DD,90F4 +A0E1,B8D3 +A0E2,B8D4 +A0E3,90F5 +A0E4,90F6 +A0E5,B8D5 +A0E6,90F7 +A0E7,90F8 +A0E8,90F9 +A0E9,B8D6 +A0EA,90FA +A0EB,B8D7 +A0EC,90FB +A0ED,90FC +A0EE,90FD +A0EF,90FE +A0F0,9141 +A0F1,B8D8 +A0F3,B8D9 +A0F4,9142 +A0F5,B8DA +A0F6,9143 +A0F7,B8DB +A0F8,B8DC +A0F9,9144 +A0FA,9145 +A0FB,9146 +A0FC,9147 +A0FD,B8DD +A141,B8DE +A142,B8DF +A143,9148 +A144,9149 +A145,B8E0 +A146,914A +A147,914B +A148,914C +A149,B8E1 +A14A,914D +A14B,914E +A14C,914F +A14D,9150 +A14E,9151 +A14F,9152 +A150,9153 +A151,B8E2 +A153,B8E3 +A154,9154 +A155,B8E4 +A156,B8E5 +A157,B8E6 +A158,9155 +A159,9156 +A15A,9157 +A15B,9158 +A15C,9159 +A15D,915A +A161,B8E7 +A162,B8E8 +A163,9161 +A164,9162 +A165,B8E9 +A166,9163 +A167,9164 +A168,9165 +A169,B8EA +A16A,9166 +A16B,9167 +A16C,9168 +A16D,9169 +A16E,916A +A16F,916B +A170,916C +A171,916D +A173,916E +A174,916F +A175,B8EB +A176,B8EC +A177,B8ED +A178,9170 +A179,B8EE +A17A,9171 +A17B,9172 +A17C,9173 +A17D,9174 +A181,B8EF +A182,9175 +A183,9176 +A184,9177 +A185,9178 +A186,9179 +A187,917A +A188,9181 +A189,9182 +A18A,9183 +A18B,9184 +A18C,9185 +A18D,9186 +A18E,9187 +A18F,9188 +A190,9189 +A191,918A +A193,918B +A194,918C +A195,918D +A196,918E +A197,918F +A198,9190 +A199,9191 +A19A,9192 +A19B,9193 +A19C,9194 +A19D,9195 +A1A1,B8F0 +A1A2,B8F1 +A1A3,9196 +A1A4,B8F2 +A1A5,B8F3 +A1A6,9197 +A1A7,9198 +A1A8,9199 +A1A9,B8F4 +A1AA,919A +A1AB,B8F5 +A1AC,919B +A1AD,919C +A1AE,919D +A1AF,919E +A1B0,919F +A1B1,B8F6 +A1B3,B8F7 +A1B4,91A0 +A1B5,B8F8 +A1B6,91A1 +A1B7,B8F9 +A1B8,91A2 +A1B9,91A3 +A1BA,91A4 +A1BB,91A5 +A1BC,91A6 +A1BD,91A7 +A1C1,B8FA +A1C2,91A8 +A1C3,91A9 +A1C4,91AA +A1C5,B8FB +A1C6,91AB +A1C7,91AC +A1C8,91AD +A1C9,91AE +A1CA,91AF +A1CB,91B0 +A1CC,91B1 +A1CD,91B2 +A1CE,91B3 +A1CF,91B4 +A1D0,91B5 +A1D1,91B6 +A1D3,91B7 +A1D4,91B8 +A1D5,91B9 +A1D6,B8FC +A1D7,B8FD +A1D8,91BA +A1D9,91BB +A1DA,91BC +A1DB,91BD +A1DC,91BE +A1DD,91BF +A1E1,91C0 +A1E2,91C1 +A1E3,91C2 +A1E4,91C3 +A1E5,91C4 +A1E6,91C5 +A1E7,91C6 +A1E8,91C7 +A1E9,91C8 +A1EA,91C9 +A1EB,91CA +A1EC,91CB +A1ED,91CC +A1EE,91CD +A1EF,91CE +A1F0,91CF +A1F1,91D0 +A1F3,91D1 +A1F4,91D2 +A1F5,91D3 +A1F6,91D4 +A1F7,91D5 +A1F8,91D6 +A1F9,91D7 +A1FA,91D8 +A1FB,91D9 +A1FC,91DA +A1FD,91DB +A241,B8FE +A242,91DC +A243,91DD +A244,91DE +A245,B9A1 +A246,91DF +A247,91E0 +A248,91E1 +A249,B9A2 +A24A,91E2 +A24B,91E3 +A24C,91E4 +A24D,91E5 +A24E,91E6 +A24F,91E7 +A250,91E8 +A251,91E9 +A253,B9A3 +A254,91EA +A255,B9A4 +A256,91EB +A257,B9A5 +A258,91EC +A259,91ED +A25A,91EE +A25B,91EF +A25C,91F0 +A25D,91F1 +A261,B9A6 +A262,91F2 +A263,91F3 +A264,91F4 +A265,B9A7 +A266,91F5 +A267,91F6 +A268,91F7 +A269,B9A8 +A26A,91F8 +A26B,91F9 +A26C,91FA +A26D,91FB +A26E,91FC +A26F,91FD +A270,91FE +A271,9241 +A273,B9A9 +A274,9242 +A275,B9AA +A276,9243 +A277,9244 +A278,9245 +A279,9246 +A27A,9247 +A27B,9248 +A27C,9249 +A27D,924A +A281,B9AB +A282,B9AC +A283,B9AD +A284,924B +A285,B9AE +A286,924C +A287,924D +A288,B9AF +A289,B9B0 +A28A,B9B1 +A28B,B9B2 +A28C,924E +A28D,924F +A28E,9250 +A28F,9251 +A290,9252 +A291,B9B3 +A293,B9B4 +A294,9253 +A295,B9B5 +A296,9254 +A297,B9B6 +A298,9255 +A299,9256 +A29A,9257 +A29B,B9B7 +A29C,9258 +A29D,B9B8 +A2A1,B9B9 +A2A2,9259 +A2A3,925A +A2A4,9261 +A2A5,B9BA +A2A6,9262 +A2A7,9263 +A2A8,9264 +A2A9,B9BB +A2AA,9265 +A2AB,9266 +A2AC,9267 +A2AD,9268 +A2AE,9269 +A2AF,926A +A2B0,926B +A2B1,926C +A2B3,B9BC +A2B4,926D +A2B5,B9BD +A2B6,926E +A2B7,926F +A2B8,9270 +A2B9,9271 +A2BA,9272 +A2BB,9273 +A2BC,9274 +A2BD,9275 +A2C1,B9BE +A2C2,9276 +A2C3,9277 +A2C4,9278 +A2C5,9279 +A2C6,927A +A2C7,9281 +A2C8,9282 +A2C9,9283 +A2CA,9284 +A2CB,9285 +A2CC,9286 +A2CD,9287 +A2CE,9288 +A2CF,9289 +A2D0,928A +A2D1,928B +A2D3,928C +A2D4,928D +A2D5,928E +A2D6,928F +A2D7,9290 +A2D8,9291 +A2D9,9292 +A2DA,9293 +A2DB,9294 +A2DC,9295 +A2DD,9296 +A2E1,B9BF +A2E2,9297 +A2E3,9298 +A2E4,9299 +A2E5,B9C0 +A2E6,929A +A2E7,929B +A2E8,929C +A2E9,B9C1 +A2EA,929D +A2EB,929E +A2EC,929F +A2ED,92A0 +A2EE,92A1 +A2EF,92A2 +A2F0,92A3 +A2F1,92A4 +A2F3,92A5 +A2F4,92A6 +A2F5,92A7 +A2F6,92A8 +A2F7,92A9 +A2F8,92AA +A2F9,92AB +A2FA,92AC +A2FB,92AD +A2FC,92AE +A2FD,92AF +A341,B9C2 +A342,92B0 +A343,92B1 +A344,92B2 +A345,B9C3 +A346,92B3 +A347,92B4 +A348,92B5 +A349,B9C4 +A34A,92B6 +A34B,92B7 +A34C,92B8 +A34D,92B9 +A34E,92BA +A34F,92BB +A350,92BC +A351,B9C5 +A353,92BD +A354,92BE +A355,B9C6 +A356,92BF +A357,92C0 +A358,92C1 +A359,92C2 +A35A,92C3 +A35B,92C4 +A35C,92C5 +A35D,92C6 +A361,B9C7 +A362,92C7 +A363,92C8 +A364,92C9 +A365,B9C8 +A366,92CA +A367,92CB +A368,92CC +A369,B9C9 +A36A,92CD +A36B,92CE +A36C,92CF +A36D,92D0 +A36E,92D1 +A36F,92D2 +A370,92D3 +A371,B9CA +A373,92D4 +A374,92D5 +A375,B9CB +A376,92D6 +A377,92D7 +A378,92D8 +A379,92D9 +A37A,92DA +A37B,92DB +A37C,92DC +A37D,92DD +A381,92DE +A382,92DF +A383,92E0 +A384,92E1 +A385,92E2 +A386,92E3 +A387,92E4 +A388,92E5 +A389,92E6 +A38A,92E7 +A38B,92E8 +A38C,92E9 +A38D,92EA +A38E,92EB +A38F,92EC +A390,92ED +A391,92EE +A393,92EF +A394,92F0 +A395,92F1 +A396,92F2 +A397,92F3 +A398,92F4 +A399,92F5 +A39A,92F6 +A39B,92F7 +A39C,92F8 +A39D,92F9 +A3A1,B9CC +A3A2,B9CD +A3A3,92FA +A3A4,92FB +A3A5,B9CE +A3A6,92FC +A3A7,92FD +A3A8,B9CF +A3A9,B9D0 +A3AA,92FE +A3AB,B9D1 +A3AC,9341 +A3AD,9342 +A3AE,9343 +A3AF,9344 +A3B0,9345 +A3B1,B9D2 +A3B3,B9D3 +A3B4,9346 +A3B5,B9D4 +A3B6,B9D5 +A3B7,B9D6 +A3B8,9347 +A3B9,B9D7 +A3BA,9348 +A3BB,B9D8 +A3BC,9349 +A3BD,934A +A441,A4B2 +A455,A4B4 +A461,B9D9 +A462,B9DA +A463,B9DB +A464,B9DC +A465,B9DD +A466,934B +A467,934C +A468,B9DE +A469,B9DF +A46A,B9E0 +A46B,B9E1 +A46C,B9E2 +A46D,934D +A46E,934E +A46F,934F +A470,9350 +A471,B9E3 +A473,B9E4 +A474,9351 +A475,B9E5 +A476,9352 +A477,B9E6 +A478,9353 +A479,9354 +A47A,9355 +A47B,B9E7 +A47C,9356 +A47D,9357 +A481,B9E8 +A482,B9E9 +A483,9358 +A484,9359 +A485,B9EA +A486,935A +A487,9361 +A488,9362 +A489,B9EB +A48A,9363 +A48B,9364 +A48C,9365 +A48D,9366 +A48E,9367 +A48F,9368 +A490,9369 +A491,B9EC +A493,B9ED +A494,936A +A495,B9EE +A496,B9EF +A497,B9F0 +A498,936B +A499,936C +A49A,936D +A49B,B9F1 +A49C,936E +A49D,936F +A4A1,B9F2 +A4A2,B9F3 +A4A3,9370 +A4A4,9371 +A4A5,B9F4 +A4A6,9372 +A4A7,9373 +A4A8,9374 +A4A9,9375 +A4AA,9376 +A4AB,9377 +A4AC,9378 +A4AD,9379 +A4AE,937A +A4AF,9381 +A4B0,9382 +A4B1,9383 +A4B3,B9F5 +A4B4,9384 +A4B5,9385 +A4B6,9386 +A4B7,9387 +A4B8,9388 +A4B9,9389 +A4BA,938A +A4BB,938B +A4BC,938C +A4BD,938D +A4C1,938E +A4C2,938F +A4C3,9390 +A4C4,9391 +A4C5,9392 +A4C6,9393 +A4C7,9394 +A4C8,9395 +A4C9,9396 +A4CA,9397 +A4CB,9398 +A4CC,9399 +A4CD,939A +A4CE,939B +A4CF,939C +A4D0,939D +A4D1,939E +A4D3,939F +A4D4,93A0 +A4D5,93A1 +A4D6,93A2 +A4D7,93A3 +A4D8,93A4 +A4D9,93A5 +A4DA,93A6 +A4DB,93A7 +A4DC,93A8 +A4DD,93A9 +A4E1,B9F6 +A4E2,B9F7 +A4E3,93AA +A4E4,93AB +A4E5,B9F8 +A4E6,93AC +A4E7,93AD +A4E8,B9F9 +A4E9,B9FA +A4EA,93AE +A4EB,B9FB +A4EC,93AF +A4ED,93B0 +A4EE,93B1 +A4EF,93B2 +A4F0,93B3 +A4F1,B9FC +A4F3,B9FD +A4F4,93B4 +A4F5,B9FE +A4F6,93B5 +A4F7,BAA1 +A4F8,BAA2 +A4F9,93B6 +A4FA,93B7 +A4FB,93B8 +A4FC,93B9 +A4FD,93BA +A541,BAA3 +A542,BAA4 +A543,93BB +A544,93BC +A545,BAA5 +A546,93BD +A547,93BE +A548,BAA6 +A549,BAA7 +A54A,93BF +A54B,93C0 +A54C,93C1 +A54D,93C2 +A54E,93C3 +A54F,93C4 +A550,93C5 +A551,BAA8 +A553,BAA9 +A554,93C6 +A555,BAAA +A556,BAAB +A557,BAAC +A558,93C7 +A559,93C8 +A55A,93C9 +A55B,93CA +A55C,93CB +A55D,93CC +A561,BAAD +A562,BAAE +A563,93CD +A564,93CE +A565,BAAF +A566,93CF +A567,93D0 +A568,93D1 +A569,BAB0 +A56A,93D2 +A56B,93D3 +A56C,93D4 +A56D,93D5 +A56E,93D6 +A56F,93D7 +A570,93D8 +A571,93D9 +A573,BAB1 +A574,93DA +A575,BAB2 +A576,BAB3 +A577,BAB4 +A578,93DB +A579,93DC +A57A,93DD +A57B,BAB5 +A57C,93DE +A57D,93DF +A581,BAB6 +A582,93E0 +A583,93E1 +A584,93E2 +A585,BAB7 +A586,93E3 +A587,93E4 +A588,93E5 +A589,93E6 +A58A,93E7 +A58B,93E8 +A58C,93E9 +A58D,93EA +A58E,93EB +A58F,93EC +A590,93ED +A591,93EE +A593,93EF +A594,93F0 +A595,93F1 +A596,93F2 +A597,93F3 +A598,93F4 +A599,93F5 +A59A,93F6 +A59B,93F7 +A59C,93F8 +A59D,93F9 +A5A1,BAB8 +A5A2,BAB9 +A5A3,BABA +A5A4,93FA +A5A5,BABB +A5A6,93FB +A5A7,93FC +A5A8,93FD +A5A9,BABC +A5AA,93FE +A5AB,9441 +A5AC,9442 +A5AD,9443 +A5AE,9444 +A5AF,9445 +A5B0,9446 +A5B1,BABD +A5B3,BABE +A5B4,9447 +A5B5,BABF +A5B6,9448 +A5B7,BAC0 +A5B8,9449 +A5B9,944A +A5BA,944B +A5BB,944C +A5BC,944D +A5BD,944E +A5C1,BAC1 +A5C2,944F +A5C3,9450 +A5C4,9451 +A5C5,BAC2 +A5C6,9452 +A5C7,9453 +A5C8,9454 +A5C9,9455 +A5CA,9456 +A5CB,9457 +A5CC,9458 +A5CD,9459 +A5CE,945A +A5CF,9461 +A5D0,9462 +A5D1,9463 +A5D3,9464 +A5D4,9465 +A5D5,9466 +A5D6,BAC3 +A5D7,9467 +A5D8,9468 +A5D9,9469 +A5DA,946A +A5DB,946B +A5DC,946C +A5DD,946D +A5E1,BAC4 +A5E2,946E +A5E3,946F +A5E4,9470 +A5E5,9471 +A5E6,9472 +A5E7,9473 +A5E8,9474 +A5E9,9475 +A5EA,9476 +A5EB,9477 +A5EC,9478 +A5ED,9479 +A5EE,947A +A5EF,9481 +A5F0,9482 +A5F1,9483 +A5F3,9484 +A5F4,9485 +A5F5,9486 +A5F6,BAC5 +A5F7,9487 +A5F8,9488 +A5F9,9489 +A5FA,948A +A5FB,948B +A5FC,948C +A5FD,948D +A641,BAC6 +A642,BAC7 +A643,948E +A644,948F +A645,BAC8 +A646,9490 +A647,9491 +A648,9492 +A649,BAC9 +A64A,9493 +A64B,9494 +A64C,9495 +A64D,9496 +A64E,9497 +A64F,9498 +A650,9499 +A651,BACA +A653,BACB +A654,949A +A655,949B +A656,949C +A657,949D +A658,949E +A659,949F +A65A,94A0 +A65B,94A1 +A65C,94A2 +A65D,94A3 +A661,BACC +A662,94A4 +A663,94A5 +A664,94A6 +A665,BACD +A666,94A7 +A667,94A8 +A668,94A9 +A669,94AA +A66A,94AB +A66B,94AC +A66C,94AD +A66D,94AE +A66E,94AF +A66F,94B0 +A670,94B1 +A671,94B2 +A673,94B3 +A674,94B4 +A675,94B5 +A676,94B6 +A677,94B7 +A678,94B8 +A679,94B9 +A67A,94BA +A67B,94BB +A67C,94BC +A67D,94BD +A681,BACE +A682,BACF +A683,94BE +A684,94BF +A685,BAD0 +A686,94C0 +A687,94C1 +A688,BAD1 +A689,BAD2 +A68A,BAD3 +A68B,BAD4 +A68C,94C2 +A68D,94C3 +A68E,94C4 +A68F,94C5 +A690,94C6 +A691,BAD5 +A693,BAD6 +A694,94C7 +A695,BAD7 +A696,94C8 +A697,BAD8 +A698,94C9 +A699,94CA +A69A,94CB +A69B,BAD9 +A69C,BADA +A69D,94CC +A6A1,BADB +A6A2,94CD +A6A3,94CE +A6A4,94CF +A6A5,94D0 +A6A6,94D1 +A6A7,94D2 +A6A8,94D3 +A6A9,BADC +A6AA,94D4 +A6AB,94D5 +A6AC,94D6 +A6AD,94D7 +A6AE,94D8 +A6AF,94D9 +A6B0,94DA +A6B1,94DB +A6B3,94DC +A6B4,94DD +A6B5,94DE +A6B6,BADD +A6B7,94DF +A6B8,94E0 +A6B9,94E1 +A6BA,94E2 +A6BB,94E3 +A6BC,94E4 +A6BD,94E5 +A6C1,BADE +A6C2,94E6 +A6C3,94E7 +A6C4,94E8 +A6C5,94E9 +A6C6,94EA +A6C7,94EB +A6C8,94EC +A6C9,94ED +A6CA,94EE +A6CB,94EF +A6CC,94F0 +A6CD,94F1 +A6CE,94F2 +A6CF,94F3 +A6D0,94F4 +A6D1,94F5 +A6D3,94F6 +A6D4,94F7 +A6D5,94F8 +A6D6,94F9 +A6D7,94FA +A6D8,94FB +A6D9,94FC +A6DA,94FD +A6DB,94FE +A6DC,9541 +A6DD,9542 +A6E1,BADF +A6E2,BAE0 +A6E3,9543 +A6E4,9544 +A6E5,BAE1 +A6E6,9545 +A6E7,9546 +A6E8,9547 +A6E9,BAE2 +A6EA,9548 +A6EB,9549 +A6EC,954A +A6ED,954B +A6EE,954C +A6EF,954D +A6F0,954E +A6F1,954F +A6F3,9550 +A6F4,9551 +A6F5,9552 +A6F6,9553 +A6F7,BAE3 +A6F8,9554 +A6F9,9555 +A6FA,9556 +A6FB,9557 +A6FC,9558 +A6FD,9559 +A741,BAE4 +A742,955A +A743,9561 +A744,9562 +A745,BAE5 +A746,9563 +A747,9564 +A748,9565 +A749,BAE6 +A74A,9566 +A74B,9567 +A74C,9568 +A74D,9569 +A74E,956A +A74F,956B +A750,956C +A751,BAE7 +A753,956D +A754,956E +A755,BAE8 +A756,956F +A757,BAE9 +A758,9570 +A759,9571 +A75A,9572 +A75B,9573 +A75C,9574 +A75D,9575 +A761,BAEA +A762,BAEB +A763,9576 +A764,9577 +A765,BAEC +A766,9578 +A767,9579 +A768,957A +A769,BAED +A76A,9581 +A76B,9582 +A76C,9583 +A76D,9584 +A76E,9585 +A76F,9586 +A770,9587 +A771,BAEE +A773,BAEF +A774,9588 +A775,BAF0 +A776,9589 +A777,958A +A778,958B +A779,958C +A77A,958D +A77B,958E +A77C,958F +A77D,9590 +A781,9591 +A782,9592 +A783,9593 +A784,9594 +A785,9595 +A786,9596 +A787,9597 +A788,9598 +A789,9599 +A78A,959A +A78B,959B +A78C,959C +A78D,959D +A78E,959E +A78F,959F +A790,95A0 +A791,95A1 +A793,95A2 +A794,95A3 +A795,95A4 +A796,95A5 +A797,95A6 +A798,95A7 +A799,95A8 +A79A,95A9 +A79B,95AA +A79C,95AB +A79D,95AC +A7A1,BAF1 +A7A2,BAF2 +A7A3,95AD +A7A4,95AE +A7A5,BAF3 +A7A6,95AF +A7A7,95B0 +A7A8,95B1 +A7A9,BAF4 +A7AA,95B2 +A7AB,BAF5 +A7AC,95B3 +A7AD,95B4 +A7AE,95B5 +A7AF,95B6 +A7B0,95B7 +A7B1,BAF6 +A7B3,BAF7 +A7B4,95B8 +A7B5,BAF8 +A7B6,95B9 +A7B7,BAF9 +A7B8,BAFA +A7B9,BAFB +A7BA,95BA +A7BB,95BB +A7BC,95BC +A7BD,95BD +A841,A4B3 +A861,BAFC +A862,BAFD +A863,95BE +A864,95BF +A865,BAFE +A866,95C0 +A867,95C1 +A868,95C2 +A869,BBA1 +A86A,95C3 +A86B,BBA2 +A86C,95C4 +A86D,95C5 +A86E,95C6 +A86F,95C7 +A870,95C8 +A871,BBA3 +A873,BBA4 +A874,95C9 +A875,BBA5 +A876,BBA6 +A877,BBA7 +A878,95CA +A879,95CB +A87A,95CC +A87B,95CD +A87C,95CE +A87D,BBA8 +A881,BBA9 +A882,BBAA +A883,95CF +A884,95D0 +A885,BBAB +A886,95D1 +A887,95D2 +A888,95D3 +A889,BBAC +A88A,95D4 +A88B,95D5 +A88C,95D6 +A88D,95D7 +A88E,95D8 +A88F,95D9 +A890,95DA +A891,BBAD +A893,BBAE +A894,95DB +A895,BBAF +A896,BBB0 +A897,BBB1 +A898,95DC +A899,95DD +A89A,95DE +A89B,95DF +A89C,95E0 +A89D,95E1 +A8A1,BBB2 +A8A2,BBB3 +A8A3,95E2 +A8A4,95E3 +A8A5,95E4 +A8A6,95E5 +A8A7,95E6 +A8A8,95E7 +A8A9,95E8 +A8AA,95E9 +A8AB,95EA +A8AC,95EB +A8AD,95EC +A8AE,95ED +A8AF,95EE +A8B0,95EF +A8B1,BBB4 +A8B3,95F0 +A8B4,95F1 +A8B5,95F2 +A8B6,95F3 +A8B7,95F4 +A8B8,95F5 +A8B9,95F6 +A8BA,95F7 +A8BB,95F8 +A8BC,95F9 +A8BD,95FA +A8C1,95FB +A8C2,95FC +A8C3,95FD +A8C4,95FE +A8C5,9641 +A8C6,9642 +A8C7,9643 +A8C8,9644 +A8C9,9645 +A8CA,9646 +A8CB,9647 +A8CC,9648 +A8CD,9649 +A8CE,964A +A8CF,964B +A8D0,964C +A8D1,964D +A8D3,964E +A8D4,964F +A8D5,9650 +A8D6,9651 +A8D7,9652 +A8D8,9653 +A8D9,9654 +A8DA,9655 +A8DB,9656 +A8DC,9657 +A8DD,9658 +A8E1,BBB5 +A8E2,BBB6 +A8E3,9659 +A8E4,965A +A8E5,BBB7 +A8E6,9661 +A8E7,9662 +A8E8,BBB8 +A8E9,BBB9 +A8EA,9663 +A8EB,9664 +A8EC,9665 +A8ED,9666 +A8EE,9667 +A8EF,9668 +A8F0,9669 +A8F1,BBBA +A8F3,966A +A8F4,966B +A8F5,BBBB +A8F6,BBBC +A8F7,BBBD +A8F8,966C +A8F9,966D +A8FA,966E +A8FB,966F +A8FC,9670 +A8FD,9671 +A941,BBBE +A942,9672 +A943,9673 +A944,9674 +A945,9675 +A946,9676 +A947,9677 +A948,9678 +A949,9679 +A94A,967A +A94B,9681 +A94C,9682 +A94D,9683 +A94E,9684 +A94F,9685 +A950,9686 +A951,9687 +A953,9688 +A954,9689 +A955,968A +A956,968B +A957,BBBF +A958,968C +A959,968D +A95A,968E +A95B,968F +A95C,9690 +A95D,9691 +A961,BBC0 +A962,BBC1 +A963,9692 +A964,9693 +A965,9694 +A966,9695 +A967,9696 +A968,9697 +A969,9698 +A96A,9699 +A96B,969A +A96C,969B +A96D,969C +A96E,969D +A96F,969E +A970,969F +A971,BBC2 +A973,BBC3 +A974,96A0 +A975,BBC4 +A976,BBC5 +A977,BBC6 +A978,96A1 +A979,96A2 +A97A,96A3 +A97B,96A4 +A97C,96A5 +A97D,96A6 +A981,96A7 +A982,96A8 +A983,96A9 +A984,96AA +A985,96AB +A986,96AC +A987,96AD +A988,96AE +A989,96AF +A98A,96B0 +A98B,96B1 +A98C,96B2 +A98D,96B3 +A98E,96B4 +A98F,96B5 +A990,96B6 +A991,96B7 +A993,96B8 +A994,96B9 +A995,96BA +A996,96BB +A997,96BC +A998,96BD +A999,96BE +A99A,96BF +A99B,96C0 +A99C,96C1 +A99D,96C2 +A9A1,BBC7 +A9A2,BBC8 +A9A3,96C3 +A9A4,96C4 +A9A5,BBC9 +A9A6,96C5 +A9A7,96C6 +A9A8,96C7 +A9A9,BBCA +A9AA,96C8 +A9AB,96C9 +A9AC,96CA +A9AD,96CB +A9AE,96CC +A9AF,96CD +A9B0,96CE +A9B1,BBCB +A9B3,BBCC +A9B4,96CF +A9B5,96D0 +A9B6,96D1 +A9B7,BBCD +A9B8,96D2 +A9B9,96D3 +A9BA,96D4 +A9BB,96D5 +A9BC,96D6 +A9BD,96D7 +A9C1,96D8 +A9C2,96D9 +A9C3,96DA +A9C4,96DB +A9C5,96DC +A9C6,96DD +A9C7,96DE +A9C8,96DF +A9C9,96E0 +A9CA,96E1 +A9CB,96E2 +A9CC,96E3 +A9CD,96E4 +A9CE,96E5 +A9CF,96E6 +A9D0,96E7 +A9D1,96E8 +A9D3,96E9 +A9D4,96EA +A9D5,96EB +A9D6,96EC +A9D7,96ED +A9D8,96EE +A9D9,96EF +A9DA,96F0 +A9DB,96F1 +A9DC,96F2 +A9DD,96F3 +A9E1,96F4 +A9E2,96F5 +A9E3,96F6 +A9E4,96F7 +A9E5,96F8 +A9E6,96F9 +A9E7,96FA +A9E8,96FB +A9E9,96FC +A9EA,96FD +A9EB,96FE +A9EC,9741 +A9ED,9742 +A9EE,9743 +A9EF,9744 +A9F0,9745 +A9F1,9746 +A9F3,9747 +A9F4,9748 +A9F5,9749 +A9F6,974A +A9F7,974B +A9F8,974C +A9F9,974D +A9FA,974E +A9FB,974F +A9FC,9750 +A9FD,9751 +AA41,BBCE +AA42,9752 +AA43,9753 +AA44,9754 +AA45,9755 +AA46,9756 +AA47,9757 +AA48,9758 +AA49,9759 +AA4A,975A +AA4B,9761 +AA4C,9762 +AA4D,9763 +AA4E,9764 +AA4F,9765 +AA50,9766 +AA51,9767 +AA53,9768 +AA54,9769 +AA55,976A +AA56,976B +AA57,976C +AA58,976D +AA59,976E +AA5A,976F +AA5B,9770 +AA5C,9771 +AA5D,9772 +AA61,BBCF +AA62,9773 +AA63,9774 +AA64,9775 +AA65,9776 +AA66,9777 +AA67,9778 +AA68,9779 +AA69,977A +AA6A,9781 +AA6B,9782 +AA6C,9783 +AA6D,9784 +AA6E,9785 +AA6F,9786 +AA70,9787 +AA71,9788 +AA73,9789 +AA74,978A +AA75,978B +AA76,978C +AA77,BBD0 +AA78,978D +AA79,978E +AA7A,978F +AA7B,9790 +AA7C,9791 +AA7D,9792 +AA81,BBD1 +AA82,BBD2 +AA83,9793 +AA84,9794 +AA85,BBD3 +AA86,9795 +AA87,9796 +AA88,9797 +AA89,BBD4 +AA8A,9798 +AA8B,9799 +AA8C,979A +AA8D,979B +AA8E,979C +AA8F,979D +AA90,979E +AA91,BBD5 +AA93,979F +AA94,97A0 +AA95,BBD6 +AA96,97A1 +AA97,BBD7 +AA98,97A2 +AA99,97A3 +AA9A,97A4 +AA9B,97A5 +AA9C,97A6 +AA9D,97A7 +AAA1,97A8 +AAA2,97A9 +AAA3,97AA +AAA4,97AB +AAA5,97AC +AAA6,97AD +AAA7,97AE +AAA8,97AF +AAA9,97B0 +AAAA,97B1 +AAAB,97B2 +AAAC,97B3 +AAAD,97B4 +AAAE,97B5 +AAAF,97B6 +AAB0,97B7 +AAB1,97B8 +AAB3,97B9 +AAB4,97BA +AAB5,97BB +AAB6,97BC +AAB7,97BD +AAB8,97BE +AAB9,97BF +AABA,97C0 +AABB,97C1 +AABC,97C2 +AABD,97C3 +AAC1,97C4 +AAC2,97C5 +AAC3,97C6 +AAC4,97C7 +AAC5,97C8 +AAC6,97C9 +AAC7,97CA +AAC8,97CB +AAC9,97CC +AACA,97CD +AACB,97CE +AACC,97CF +AACD,97D0 +AACE,97D1 +AACF,97D2 +AAD0,97D3 +AAD1,97D4 +AAD3,97D5 +AAD4,97D6 +AAD5,97D7 +AAD6,97D8 +AAD7,97D9 +AAD8,97DA +AAD9,97DB +AADA,97DC +AADB,97DD +AADC,97DE +AADD,97DF +AAE1,97E0 +AAE2,97E1 +AAE3,97E2 +AAE4,97E3 +AAE5,97E4 +AAE6,97E5 +AAE7,97E6 +AAE8,97E7 +AAE9,97E8 +AAEA,97E9 +AAEB,97EA +AAEC,97EB +AAED,97EC +AAEE,97ED +AAEF,97EE +AAF0,97EF +AAF1,97F0 +AAF3,97F1 +AAF4,97F2 +AAF5,97F3 +AAF6,97F4 +AAF7,97F5 +AAF8,97F6 +AAF9,97F7 +AAFA,97F8 +AAFB,97F9 +AAFC,97FA +AAFD,97FB +AB41,BBD8 +AB42,97FC +AB43,97FD +AB44,97FE +AB45,9841 +AB46,9842 +AB47,9843 +AB48,9844 +AB49,9845 +AB4A,9846 +AB4B,9847 +AB4C,9848 +AB4D,9849 +AB4E,984A +AB4F,984B +AB50,984C +AB51,984D +AB53,984E +AB54,984F +AB55,9850 +AB56,9851 +AB57,BBD9 +AB58,9852 +AB59,9853 +AB5A,9854 +AB5B,9855 +AB5C,9856 +AB5D,9857 +AB61,BBDA +AB62,9858 +AB63,9859 +AB64,985A +AB65,BBDB +AB66,9861 +AB67,9862 +AB68,9863 +AB69,BBDC +AB6A,9864 +AB6B,9865 +AB6C,9866 +AB6D,9867 +AB6E,9868 +AB6F,9869 +AB70,986A +AB71,BBDD +AB73,BBDE +AB74,986B +AB75,986C +AB76,986D +AB77,986E +AB78,986F +AB79,9870 +AB7A,9871 +AB7B,9872 +AB7C,9873 +AB7D,9874 +AB81,9875 +AB82,9876 +AB83,9877 +AB84,9878 +AB85,9879 +AB86,987A +AB87,9881 +AB88,9882 +AB89,9883 +AB8A,9884 +AB8B,9885 +AB8C,9886 +AB8D,9887 +AB8E,9888 +AB8F,9889 +AB90,988A +AB91,988B +AB93,988C +AB94,988D +AB95,988E +AB96,988F +AB97,9890 +AB98,9891 +AB99,9892 +AB9A,9893 +AB9B,9894 +AB9C,9895 +AB9D,9896 +ABA1,BBDF +ABA2,BBE0 +ABA3,9897 +ABA4,9898 +ABA5,BBE1 +ABA6,9899 +ABA7,989A +ABA8,989B +ABA9,BBE2 +ABAA,989C +ABAB,989D +ABAC,989E +ABAD,989F +ABAE,98A0 +ABAF,98A1 +ABB0,98A2 +ABB1,BBE3 +ABB3,BBE4 +ABB4,98A3 +ABB5,BBE5 +ABB6,98A4 +ABB7,BBE6 +ABB8,98A5 +ABB9,98A6 +ABBA,98A7 +ABBB,98A8 +ABBC,98A9 +ABBD,98AA +AC41,A4B5 +AC61,BBE7 +AC62,BBE8 +AC63,98AB +AC64,BBE9 +AC65,BBEA +AC66,98AC +AC67,98AD +AC68,BBEB +AC69,BBEC +AC6A,BBED +AC6B,BBEE +AC6C,98AE +AC6D,98AF +AC6E,98B0 +AC6F,98B1 +AC70,98B2 +AC71,BBEF +AC73,BBF0 +AC74,98B3 +AC75,BBF1 +AC76,BBF2 +AC77,BBF3 +AC78,98B4 +AC79,98B5 +AC7A,98B6 +AC7B,BBF4 +AC7C,98B7 +AC7D,98B8 +AC81,BBF5 +AC82,BBF6 +AC83,98B9 +AC84,98BA +AC85,BBF7 +AC86,98BB +AC87,98BC +AC88,98BD +AC89,BBF8 +AC8A,98BE +AC8B,98BF +AC8C,98C0 +AC8D,98C1 +AC8E,98C2 +AC8F,98C3 +AC90,98C4 +AC91,BBF9 +AC93,BBFA +AC94,98C5 +AC95,BBFB +AC96,BBFC +AC97,BBFD +AC98,98C6 +AC99,98C7 +AC9A,98C8 +AC9B,98C9 +AC9C,98CA +AC9D,98CB +ACA1,BBFE +ACA2,BCA1 +ACA3,98CC +ACA4,98CD +ACA5,BCA2 +ACA6,98CE +ACA7,98CF +ACA8,98D0 +ACA9,BCA3 +ACAA,98D1 +ACAB,98D2 +ACAC,98D3 +ACAD,98D4 +ACAE,98D5 +ACAF,98D6 +ACB0,98D7 +ACB1,BCA4 +ACB3,BCA5 +ACB4,98D8 +ACB5,BCA6 +ACB6,98D9 +ACB7,BCA7 +ACB8,98DA +ACB9,98DB +ACBA,98DC +ACBB,98DD +ACBC,98DE +ACBD,98DF +ACC1,BCA8 +ACC2,98E0 +ACC3,98E1 +ACC4,98E2 +ACC5,BCA9 +ACC6,98E3 +ACC7,98E4 +ACC8,98E5 +ACC9,BCAA +ACCA,98E6 +ACCB,98E7 +ACCC,98E8 +ACCD,98E9 +ACCE,98EA +ACCF,98EB +ACD0,98EC +ACD1,BCAB +ACD3,98ED +ACD4,98EE +ACD5,98EF +ACD6,98F0 +ACD7,BCAC +ACD8,98F1 +ACD9,98F2 +ACDA,98F3 +ACDB,98F4 +ACDC,98F5 +ACDD,98F6 +ACE1,BCAD +ACE2,BCAE +ACE3,BCAF +ACE4,BCB0 +ACE5,BCB1 +ACE6,98F7 +ACE7,98F8 +ACE8,BCB2 +ACE9,BCB3 +ACEA,98F9 +ACEB,BCB4 +ACEC,BCB5 +ACED,98FA +ACEE,98FB +ACEF,98FC +ACF0,98FD +ACF1,BCB6 +ACF3,BCB7 +ACF4,98FE +ACF5,BCB8 +ACF6,BCB9 +ACF7,BCBA +ACF8,9941 +ACF9,9942 +ACFA,9943 +ACFB,9944 +ACFC,BCBB +ACFD,9945 +AD41,BCBC +AD42,BCBD +AD43,9946 +AD44,9947 +AD45,BCBE +AD46,9948 +AD47,9949 +AD48,994A +AD49,BCBF +AD4A,994B +AD4B,994C +AD4C,994D +AD4D,994E +AD4E,994F +AD4F,9950 +AD50,9951 +AD51,BCC0 +AD53,BCC1 +AD54,9952 +AD55,BCC2 +AD56,BCC3 +AD57,BCC4 +AD58,9953 +AD59,9954 +AD5A,9955 +AD5B,9956 +AD5C,9957 +AD5D,9958 +AD61,BCC5 +AD62,BCC6 +AD63,9959 +AD64,995A +AD65,BCC7 +AD66,9961 +AD67,9962 +AD68,9963 +AD69,BCC8 +AD6A,9964 +AD6B,9965 +AD6C,9966 +AD6D,9967 +AD6E,9968 +AD6F,9969 +AD70,996A +AD71,BCC9 +AD73,BCCA +AD74,996B +AD75,BCCB +AD76,BCCC +AD77,BCCD +AD78,996C +AD79,996D +AD7A,996E +AD7B,996F +AD7C,9970 +AD7D,9971 +AD81,BCCE +AD82,9972 +AD83,9973 +AD84,9974 +AD85,BCCF +AD86,9975 +AD87,9976 +AD88,9977 +AD89,BCD0 +AD8A,9978 +AD8B,9979 +AD8C,997A +AD8D,9981 +AD8E,9982 +AD8F,9983 +AD90,9984 +AD91,9985 +AD93,9986 +AD94,9987 +AD95,9988 +AD96,9989 +AD97,BCD1 +AD98,998A +AD99,998B +AD9A,998C +AD9B,998D +AD9C,998E +AD9D,998F +ADA1,BCD2 +ADA2,BCD3 +ADA3,BCD4 +ADA4,9990 +ADA5,BCD5 +ADA6,9991 +ADA7,9992 +ADA8,9993 +ADA9,BCD6 +ADAA,9994 +ADAB,BCD7 +ADAC,9995 +ADAD,9996 +ADAE,9997 +ADAF,9998 +ADB0,9999 +ADB1,BCD8 +ADB3,BCD9 +ADB4,999A +ADB5,BCDA +ADB6,999B +ADB7,BCDB +ADB8,999C +ADB9,999D +ADBA,999E +ADBB,BCDC +ADBC,999F +ADBD,99A0 +ADC1,BCDD +ADC2,BCDE +ADC3,99A1 +ADC4,99A2 +ADC5,BCDF +ADC6,99A3 +ADC7,99A4 +ADC8,99A5 +ADC9,BCE0 +ADCA,99A6 +ADCB,99A7 +ADCC,99A8 +ADCD,99A9 +ADCE,99AA +ADCF,99AB +ADD0,99AC +ADD1,99AD +ADD3,99AE +ADD4,99AF +ADD5,99B0 +ADD6,99B1 +ADD7,BCE1 +ADD8,99B2 +ADD9,99B3 +ADDA,99B4 +ADDB,99B5 +ADDC,99B6 +ADDD,99B7 +ADE1,BCE2 +ADE2,99B8 +ADE3,99B9 +ADE4,99BA +ADE5,BCE3 +ADE6,99BB +ADE7,99BC +ADE8,99BD +ADE9,BCE4 +ADEA,99BE +ADEB,99BF +ADEC,99C0 +ADED,99C1 +ADEE,99C2 +ADEF,99C3 +ADF0,99C4 +ADF1,BCE5 +ADF3,99C5 +ADF4,99C6 +ADF5,BCE6 +ADF6,BCE7 +ADF7,99C7 +ADF8,99C8 +ADF9,99C9 +ADFA,99CA +ADFB,99CB +ADFC,99CC +ADFD,99CD +AE41,BCE8 +AE42,99CE +AE43,99CF +AE44,99D0 +AE45,BCE9 +AE46,99D1 +AE47,99D2 +AE48,99D3 +AE49,BCEA +AE4A,99D4 +AE4B,99D5 +AE4C,99D6 +AE4D,99D7 +AE4E,99D8 +AE4F,99D9 +AE50,99DA +AE51,BCEB +AE53,BCEC +AE54,99DB +AE55,BCED +AE56,99DC +AE57,99DD +AE58,99DE +AE59,99DF +AE5A,99E0 +AE5B,99E1 +AE5C,99E2 +AE5D,99E3 +AE61,BCEE +AE62,BCEF +AE63,99E4 +AE64,99E5 +AE65,BCF0 +AE66,99E6 +AE67,99E7 +AE68,99E8 +AE69,BCF1 +AE6A,99E9 +AE6B,99EA +AE6C,99EB +AE6D,99EC +AE6E,99ED +AE6F,99EE +AE70,99EF +AE71,BCF2 +AE73,BCF3 +AE74,99F0 +AE75,BCF4 +AE76,99F1 +AE77,BCF5 +AE78,99F2 +AE79,99F3 +AE7A,99F4 +AE7B,99F5 +AE7C,99F6 +AE7D,99F7 +AE81,BCF6 +AE82,BCF7 +AE83,99F8 +AE84,99F9 +AE85,BCF8 +AE86,99FA +AE87,99FB +AE88,BCF9 +AE89,BCFA +AE8A,99FC +AE8B,99FD +AE8C,99FE +AE8D,9A41 +AE8E,9A42 +AE8F,9A43 +AE90,9A44 +AE91,BCFB +AE93,BCFC +AE94,9A45 +AE95,BCFD +AE96,9A46 +AE97,BCFE +AE98,9A47 +AE99,BDA1 +AE9A,9A48 +AE9B,BDA2 +AE9C,BDA3 +AE9D,9A49 +AEA1,BDA4 +AEA2,9A4A +AEA3,9A4B +AEA4,9A4C +AEA5,9A4D +AEA6,9A4E +AEA7,9A4F +AEA8,9A50 +AEA9,9A51 +AEAA,9A52 +AEAB,9A53 +AEAC,9A54 +AEAD,9A55 +AEAE,9A56 +AEAF,9A57 +AEB0,9A58 +AEB1,9A59 +AEB3,9A5A +AEB4,9A61 +AEB5,9A62 +AEB6,BDA5 +AEB7,9A63 +AEB8,9A64 +AEB9,9A65 +AEBA,9A66 +AEBB,9A67 +AEBC,9A68 +AEBD,9A69 +AEC1,BDA6 +AEC2,BDA7 +AEC3,9A6A +AEC4,9A6B +AEC5,BDA8 +AEC6,9A6C +AEC7,9A6D +AEC8,9A6E +AEC9,BDA9 +AECA,9A6F +AECB,9A70 +AECC,9A71 +AECD,9A72 +AECE,9A73 +AECF,9A74 +AED0,9A75 +AED1,BDAA +AED3,9A76 +AED4,9A77 +AED5,9A78 +AED6,9A79 +AED7,BDAB +AED8,9A7A +AED9,9A81 +AEDA,9A82 +AEDB,9A83 +AEDC,9A84 +AEDD,9A85 +AEE1,BDAC +AEE2,BDAD +AEE3,9A86 +AEE4,9A87 +AEE5,BDAE +AEE6,9A88 +AEE7,9A89 +AEE8,9A8A +AEE9,BDAF +AEEA,9A8B +AEEB,9A8C +AEEC,9A8D +AEED,9A8E +AEEE,9A8F +AEEF,9A90 +AEF0,9A91 +AEF1,BDB0 +AEF3,BDB1 +AEF4,9A92 +AEF5,BDB2 +AEF6,9A93 +AEF7,BDB3 +AEF8,9A94 +AEF9,9A95 +AEFA,9A96 +AEFB,9A97 +AEFC,9A98 +AEFD,9A99 +AF41,BDB4 +AF42,BDB5 +AF43,9A9A +AF44,9A9B +AF45,9A9C +AF46,9A9D +AF47,9A9E +AF48,9A9F +AF49,BDB6 +AF4A,9AA0 +AF4B,9AA1 +AF4C,9AA2 +AF4D,9AA3 +AF4E,9AA4 +AF4F,9AA5 +AF50,9AA6 +AF51,BDB7 +AF53,9AA7 +AF54,9AA8 +AF55,BDB8 +AF56,9AA9 +AF57,BDB9 +AF58,9AAA +AF59,9AAB +AF5A,9AAC +AF5B,9AAD +AF5C,9AAE +AF5D,9AAF +AF61,BDBA +AF62,BDBB +AF63,9AB0 +AF64,9AB1 +AF65,BDBC +AF66,9AB2 +AF67,9AB3 +AF68,9AB4 +AF69,BDBD +AF6A,BDBE +AF6B,9AB5 +AF6C,9AB6 +AF6D,9AB7 +AF6E,9AB8 +AF6F,9AB9 +AF70,9ABA +AF71,BDBF +AF73,BDC0 +AF74,9ABB +AF75,BDC1 +AF76,9ABC +AF77,BDC2 +AF78,9ABD +AF79,9ABE +AF7A,9ABF +AF7B,9AC0 +AF7C,9AC1 +AF7D,9AC2 +AF81,9AC3 +AF82,9AC4 +AF83,9AC5 +AF84,9AC6 +AF85,9AC7 +AF86,9AC8 +AF87,9AC9 +AF88,9ACA +AF89,9ACB +AF8A,9ACC +AF8B,9ACD +AF8C,9ACE +AF8D,9ACF +AF8E,9AD0 +AF8F,9AD1 +AF90,9AD2 +AF91,9AD3 +AF93,9AD4 +AF94,9AD5 +AF95,9AD6 +AF96,9AD7 +AF97,9AD8 +AF98,9AD9 +AF99,9ADA +AF9A,9ADB +AF9B,9ADC +AF9C,9ADD +AF9D,9ADE +AFA1,BDC3 +AFA2,BDC4 +AFA3,9ADF +AFA4,9AE0 +AFA5,BDC5 +AFA6,9AE1 +AFA7,9AE2 +AFA8,BDC6 +AFA9,BDC7 +AFAA,9AE3 +AFAB,9AE4 +AFAC,9AE5 +AFAD,9AE6 +AFAE,9AE7 +AFAF,9AE8 +AFB0,BDC8 +AFB1,BDC9 +AFB3,BDCA +AFB4,9AE9 +AFB5,BDCB +AFB6,9AEA +AFB7,BDCC +AFB8,9AEB +AFB9,9AEC +AFBA,9AED +AFBB,9AEE +AFBC,BDCD +AFBD,9AEF +B041,A4B6 +B061,BDCE +B062,BDCF +B063,9AF0 +B064,BDD0 +B065,BDD1 +B066,9AF1 +B067,9AF2 +B068,9AF3 +B069,BDD2 +B06A,9AF4 +B06B,9AF5 +B06C,9AF6 +B06D,9AF7 +B06E,9AF8 +B06F,9AF9 +B070,9AFA +B071,BDD3 +B073,BDD4 +B074,9AFB +B075,9AFC +B076,BDD5 +B077,BDD6 +B078,9AFD +B079,9AFE +B07A,9B41 +B07B,9B42 +B07C,9B43 +B07D,BDD7 +B081,BDD8 +B082,BDD9 +B083,9B44 +B084,9B45 +B085,BDDA +B086,9B46 +B087,9B47 +B088,9B48 +B089,BDDB +B08A,9B49 +B08B,9B4A +B08C,9B4B +B08D,9B4C +B08E,9B4D +B08F,9B4E +B090,9B4F +B091,BDDC +B093,BDDD +B094,9B50 +B095,9B51 +B096,BDDE +B097,BDDF +B098,9B52 +B099,9B53 +B09A,9B54 +B09B,9B55 +B09C,9B56 +B09D,9B57 +B0A1,9B58 +B0A2,9B59 +B0A3,9B5A +B0A4,9B61 +B0A5,9B62 +B0A6,9B63 +B0A7,9B64 +B0A8,9B65 +B0A9,9B66 +B0AA,9B67 +B0AB,9B68 +B0AC,9B69 +B0AD,9B6A +B0AE,9B6B +B0AF,9B6C +B0B0,9B6D +B0B1,9B6E +B0B3,9B6F +B0B4,9B70 +B0B5,9B71 +B0B6,9B72 +B0B7,BDE0 +B0B8,9B73 +B0B9,9B74 +B0BA,9B75 +B0BB,9B76 +B0BC,9B77 +B0BD,9B78 +B0C1,9B79 +B0C2,9B7A +B0C3,9B81 +B0C4,9B82 +B0C5,9B83 +B0C6,9B84 +B0C7,9B85 +B0C8,9B86 +B0C9,9B87 +B0CA,9B88 +B0CB,9B89 +B0CC,9B8A +B0CD,9B8B +B0CE,9B8C +B0CF,9B8D +B0D0,9B8E +B0D1,9B8F +B0D3,9B90 +B0D4,9B91 +B0D5,9B92 +B0D6,9B93 +B0D7,9B94 +B0D8,9B95 +B0D9,9B96 +B0DA,9B97 +B0DB,9B98 +B0DC,9B99 +B0DD,9B9A +B0E1,BDE1 +B0E2,BDE2 +B0E3,9B9B +B0E4,9B9C +B0E5,BDE3 +B0E6,9B9D +B0E7,9B9E +B0E8,9B9F +B0E9,BDE4 +B0EA,9BA0 +B0EB,BDE5 +B0EC,9BA1 +B0ED,9BA2 +B0EE,9BA3 +B0EF,9BA4 +B0F0,9BA5 +B0F1,BDE6 +B0F3,BDE7 +B0F4,9BA6 +B0F5,9BA7 +B0F6,BDE8 +B0F7,BDE9 +B0F8,9BA8 +B0F9,9BA9 +B0FA,9BAA +B0FB,9BAB +B0FC,9BAC +B0FD,9BAD +B141,BDEA +B142,9BAE +B143,9BAF +B144,9BB0 +B145,BDEB +B146,9BB1 +B147,9BB2 +B148,9BB3 +B149,BDEC +B14A,9BB4 +B14B,9BB5 +B14C,9BB6 +B14D,9BB7 +B14E,9BB8 +B14F,9BB9 +B150,9BBA +B151,9BBB +B153,9BBC +B154,9BBD +B155,9BBE +B156,9BBF +B157,9BC0 +B158,9BC1 +B159,9BC2 +B15A,9BC3 +B15B,9BC4 +B15C,9BC5 +B15D,9BC6 +B161,9BC7 +B162,9BC8 +B163,9BC9 +B164,9BCA +B165,9BCB +B166,9BCC +B167,9BCD +B168,9BCE +B169,9BCF +B16A,9BD0 +B16B,9BD1 +B16C,9BD2 +B16D,9BD3 +B16E,9BD4 +B16F,9BD5 +B170,9BD6 +B171,9BD7 +B173,9BD8 +B174,9BD9 +B175,9BDA +B176,9BDB +B177,9BDC +B178,9BDD +B179,9BDE +B17A,9BDF +B17B,9BE0 +B17C,9BE1 +B17D,9BE2 +B181,9BE3 +B182,9BE4 +B183,9BE5 +B184,9BE6 +B185,BDED +B186,9BE7 +B187,9BE8 +B188,9BE9 +B189,9BEA +B18A,9BEB +B18B,9BEC +B18C,9BED +B18D,9BEE +B18E,9BEF +B18F,9BF0 +B190,9BF1 +B191,9BF2 +B193,9BF3 +B194,9BF4 +B195,9BF5 +B196,9BF6 +B197,9BF7 +B198,9BF8 +B199,9BF9 +B19A,9BFA +B19B,9BFB +B19C,9BFC +B19D,9BFD +B1A1,BDEE +B1A2,BDEF +B1A3,9BFE +B1A4,9C41 +B1A5,BDF0 +B1A6,9C42 +B1A7,9C43 +B1A8,BDF1 +B1A9,BDF2 +B1AA,9C44 +B1AB,BDF3 +B1AC,9C45 +B1AD,9C46 +B1AE,9C47 +B1AF,9C48 +B1B0,9C49 +B1B1,BDF4 +B1B3,BDF5 +B1B4,9C4A +B1B5,9C4B +B1B6,9C4C +B1B7,BDF6 +B1B8,9C4D +B1B9,9C4E +B1BA,9C4F +B1BB,9C50 +B1BC,9C51 +B1BD,9C52 +B1C1,BDF7 +B1C2,BDF8 +B1C3,9C53 +B1C4,9C54 +B1C5,BDF9 +B1C6,9C55 +B1C7,9C56 +B1C8,9C57 +B1C9,9C58 +B1CA,9C59 +B1CB,9C5A +B1CC,9C61 +B1CD,9C62 +B1CE,9C63 +B1CF,9C64 +B1D0,9C65 +B1D1,9C66 +B1D3,9C67 +B1D4,9C68 +B1D5,9C69 +B1D6,BDFA +B1D7,9C6A +B1D8,9C6B +B1D9,9C6C +B1DA,9C6D +B1DB,9C6E +B1DC,9C6F +B1DD,9C70 +B1E1,BDFB +B1E2,9C71 +B1E3,9C72 +B1E4,9C73 +B1E5,9C74 +B1E6,9C75 +B1E7,9C76 +B1E8,9C77 +B1E9,9C78 +B1EA,9C79 +B1EB,9C7A +B1EC,9C81 +B1ED,9C82 +B1EE,9C83 +B1EF,9C84 +B1F0,9C85 +B1F1,9C86 +B1F3,9C87 +B1F4,9C88 +B1F5,9C89 +B1F6,BDFC +B1F7,9C8A +B1F8,9C8B +B1F9,9C8C +B1FA,9C8D +B1FB,9C8E +B1FC,9C8F +B1FD,9C90 +B241,BDFD +B242,9C91 +B243,9C92 +B244,9C93 +B245,BDFE +B246,9C94 +B247,9C95 +B248,9C96 +B249,BEA1 +B24A,9C97 +B24B,9C98 +B24C,9C99 +B24D,9C9A +B24E,9C9B +B24F,9C9C +B250,9C9D +B251,BEA2 +B253,BEA3 +B254,9C9E +B255,9C9F +B256,9CA0 +B257,9CA1 +B258,9CA2 +B259,9CA3 +B25A,9CA4 +B25B,9CA5 +B25C,9CA6 +B25D,9CA7 +B261,BEA4 +B262,9CA8 +B263,9CA9 +B264,9CAA +B265,9CAB +B266,9CAC +B267,9CAD +B268,9CAE +B269,9CAF +B26A,9CB0 +B26B,9CB1 +B26C,9CB2 +B26D,9CB3 +B26E,9CB4 +B26F,9CB5 +B270,9CB6 +B271,9CB7 +B273,9CB8 +B274,9CB9 +B275,9CBA +B276,9CBB +B277,9CBC +B278,9CBD +B279,9CBE +B27A,9CBF +B27B,9CC0 +B27C,9CC1 +B27D,9CC2 +B281,BEA5 +B282,BEA6 +B283,9CC3 +B284,9CC4 +B285,BEA7 +B286,9CC5 +B287,9CC6 +B288,9CC7 +B289,BEA8 +B28A,9CC8 +B28B,9CC9 +B28C,9CCA +B28D,9CCB +B28E,9CCC +B28F,9CCD +B290,9CCE +B291,BEA9 +B293,BEAA +B294,9CCF +B295,9CD0 +B296,9CD1 +B297,BEAB +B298,9CD2 +B299,9CD3 +B29A,9CD4 +B29B,9CD5 +B29C,9CD6 +B29D,9CD7 +B2A1,BEAC +B2A2,9CD8 +B2A3,9CD9 +B2A4,9CDA +B2A5,9CDB +B2A6,9CDC +B2A7,9CDD +B2A8,9CDE +B2A9,9CDF +B2AA,9CE0 +B2AB,9CE1 +B2AC,9CE2 +B2AD,9CE3 +B2AE,9CE4 +B2AF,9CE5 +B2B0,9CE6 +B2B1,9CE7 +B2B3,9CE8 +B2B4,9CE9 +B2B5,9CEA +B2B6,BEAD +B2B7,9CEB +B2B8,9CEC +B2B9,9CED +B2BA,9CEE +B2BB,9CEF +B2BC,9CF0 +B2BD,9CF1 +B2C1,BEAE +B2C2,9CF2 +B2C3,9CF3 +B2C4,9CF4 +B2C5,9CF5 +B2C6,9CF6 +B2C7,9CF7 +B2C8,9CF8 +B2C9,9CF9 +B2CA,9CFA +B2CB,9CFB +B2CC,9CFC +B2CD,9CFD +B2CE,9CFE +B2CF,9D41 +B2D0,9D42 +B2D1,9D43 +B2D3,9D44 +B2D4,9D45 +B2D5,9D46 +B2D6,9D47 +B2D7,9D48 +B2D8,9D49 +B2D9,9D4A +B2DA,9D4B +B2DB,9D4C +B2DC,9D4D +B2DD,9D4E +B2E1,BEAF +B2E2,9D4F +B2E3,9D50 +B2E4,9D51 +B2E5,BEB0 +B2E6,9D52 +B2E7,9D53 +B2E8,9D54 +B2E9,9D55 +B2EA,9D56 +B2EB,9D57 +B2EC,9D58 +B2ED,9D59 +B2EE,9D5A +B2EF,9D61 +B2F0,9D62 +B2F1,9D63 +B2F3,9D64 +B2F4,9D65 +B2F5,9D66 +B2F6,9D67 +B2F7,9D68 +B2F8,9D69 +B2F9,9D6A +B2FA,9D6B +B2FB,9D6C +B2FC,9D6D +B2FD,9D6E +B341,9D6F +B342,9D70 +B343,9D71 +B344,9D72 +B345,9D73 +B346,9D74 +B347,9D75 +B348,9D76 +B349,9D77 +B34A,9D78 +B34B,9D79 +B34C,9D7A +B34D,9D81 +B34E,9D82 +B34F,9D83 +B350,9D84 +B351,9D85 +B353,9D86 +B354,9D87 +B355,9D88 +B356,9D89 +B357,BEB1 +B358,9D8A +B359,9D8B +B35A,9D8C +B35B,9D8D +B35C,9D8E +B35D,9D8F +B361,BEB2 +B362,BEB3 +B363,9D90 +B364,9D91 +B365,BEB4 +B366,9D92 +B367,9D93 +B368,9D94 +B369,BEB5 +B36A,9D95 +B36B,BEB6 +B36C,9D96 +B36D,9D97 +B36E,9D98 +B36F,9D99 +B370,BEB7 +B371,BEB8 +B373,BEB9 +B374,9D9A +B375,9D9B +B376,9D9C +B377,9D9D +B378,9D9E +B379,9D9F +B37A,9DA0 +B37B,9DA1 +B37C,9DA2 +B37D,9DA3 +B381,BEBA +B382,9DA4 +B383,9DA5 +B384,9DA6 +B385,BEBB +B386,9DA7 +B387,9DA8 +B388,9DA9 +B389,BEBC +B38A,9DAA +B38B,9DAB +B38C,9DAC +B38D,9DAD +B38E,9DAE +B38F,9DAF +B390,9DB0 +B391,BEBD +B393,9DB1 +B394,9DB2 +B395,9DB3 +B396,9DB4 +B397,9DB5 +B398,9DB6 +B399,9DB7 +B39A,9DB8 +B39B,9DB9 +B39C,9DBA +B39D,9DBB +B3A1,BEBE +B3A2,BEBF +B3A3,9DBC +B3A4,9DBD +B3A5,BEC0 +B3A6,9DBE +B3A7,9DBF +B3A8,9DC0 +B3A9,BEC1 +B3AA,9DC1 +B3AB,9DC2 +B3AC,9DC3 +B3AD,9DC4 +B3AE,9DC5 +B3AF,9DC6 +B3B0,9DC7 +B3B1,BEC2 +B3B3,BEC3 +B3B4,9DC8 +B3B5,BEC4 +B3B6,9DC9 +B3B7,BEC5 +B3B8,9DCA +B3B9,9DCB +B3BA,9DCC +B3BB,9DCD +B3BC,9DCE +B3BD,9DCF +B441,A4B7 +B461,BEC6 +B462,BEC7 +B463,9DD0 +B464,9DD1 +B465,BEC8 +B466,BEC9 +B467,BECA +B468,9DD2 +B469,BECB +B46A,BECC +B46B,BECD +B46C,9DD3 +B46D,9DD4 +B46E,9DD5 +B46F,9DD6 +B470,BECE +B471,BECF +B473,BED0 +B474,9DD7 +B475,BED1 +B476,BED2 +B477,BED3 +B478,9DD8 +B479,9DD9 +B47A,9DDA +B47B,BED4 +B47C,BED5 +B47D,9DDB +B481,BED6 +B482,BED7 +B483,9DDC +B484,9DDD +B485,BED8 +B486,9DDE +B487,9DDF +B488,9DE0 +B489,BED9 +B48A,9DE1 +B48B,9DE2 +B48C,9DE3 +B48D,9DE4 +B48E,9DE5 +B48F,9DE6 +B490,9DE7 +B491,BEDA +B493,BEDB +B494,9DE8 +B495,BEDC +B496,BEDD +B497,BEDE +B498,9DE9 +B499,9DEA +B49A,9DEB +B49B,9DEC +B49C,9DED +B49D,9DEE +B4A1,BEDF +B4A2,BEE0 +B4A3,9DEF +B4A4,9DF0 +B4A5,BEE1 +B4A6,9DF1 +B4A7,9DF2 +B4A8,9DF3 +B4A9,BEE2 +B4AA,9DF4 +B4AB,9DF5 +B4AC,BEE3 +B4AD,9DF6 +B4AE,9DF7 +B4AF,9DF8 +B4B0,9DF9 +B4B1,BEE4 +B4B3,BEE5 +B4B4,9DFA +B4B5,BEE6 +B4B6,9DFB +B4B7,BEE7 +B4B8,9DFC +B4B9,9DFD +B4BA,9DFE +B4BB,BEE8 +B4BC,9E41 +B4BD,BEE9 +B4C1,BEEA +B4C2,9E42 +B4C3,9E43 +B4C4,9E44 +B4C5,BEEB +B4C6,9E45 +B4C7,9E46 +B4C8,9E47 +B4C9,BEEC +B4CA,9E48 +B4CB,9E49 +B4CC,9E4A +B4CD,9E4B +B4CE,9E4C +B4CF,9E4D +B4D0,9E4E +B4D1,9E4F +B4D3,BEED +B4D4,9E50 +B4D5,9E51 +B4D6,9E52 +B4D7,9E53 +B4D8,9E54 +B4D9,9E55 +B4DA,9E56 +B4DB,9E57 +B4DC,9E58 +B4DD,9E59 +B4E1,BEEE +B4E2,BEEF +B4E3,9E5A +B4E4,9E61 +B4E5,BEF0 +B4E6,BEF1 +B4E7,9E62 +B4E8,BEF2 +B4E9,BEF3 +B4EA,BEF4 +B4EB,BEF5 +B4EC,9E63 +B4ED,9E64 +B4EE,9E65 +B4EF,9E66 +B4F0,9E67 +B4F1,BEF6 +B4F3,BEF7 +B4F4,BEF8 +B4F5,BEF9 +B4F6,BEFA +B4F7,BEFB +B4F8,BEFC +B4F9,9E68 +B4FA,BEFD +B4FB,9E69 +B4FC,BEFE +B4FD,9E6A +B541,BFA1 +B542,BFA2 +B543,9E6B +B544,9E6C +B545,BFA3 +B546,9E6D +B547,9E6E +B548,9E6F +B549,BFA4 +B54A,9E70 +B54B,9E71 +B54C,9E72 +B54D,9E73 +B54E,9E74 +B54F,9E75 +B550,9E76 +B551,BFA5 +B553,BFA6 +B554,9E77 +B555,BFA7 +B556,9E78 +B557,BFA8 +B558,9E79 +B559,9E7A +B55A,9E81 +B55B,9E82 +B55C,9E83 +B55D,9E84 +B561,BFA9 +B562,BFAA +B563,BFAB +B564,9E85 +B565,BFAC +B566,9E86 +B567,9E87 +B568,9E88 +B569,BFAD +B56A,9E89 +B56B,BFAE +B56C,BFAF +B56D,9E8A +B56E,9E8B +B56F,9E8C +B570,9E8D +B571,BFB0 +B573,BFB1 +B574,BFB2 +B575,BFB3 +B576,BFB4 +B577,BFB5 +B578,9E8E +B579,9E8F +B57A,9E90 +B57B,BFB6 +B57C,BFB7 +B57D,BFB8 +B581,BFB9 +B582,9E91 +B583,9E92 +B584,9E93 +B585,BFBA +B586,9E94 +B587,9E95 +B588,9E96 +B589,BFBB +B58A,9E97 +B58B,9E98 +B58C,9E99 +B58D,9E9A +B58E,9E9B +B58F,9E9C +B590,9E9D +B591,BFBC +B593,BFBD +B594,9E9E +B595,BFBE +B596,BFBF +B597,9E9F +B598,9EA0 +B599,9EA1 +B59A,9EA2 +B59B,9EA3 +B59C,9EA4 +B59D,9EA5 +B5A1,BFC0 +B5A2,BFC1 +B5A3,9EA6 +B5A4,9EA7 +B5A5,BFC2 +B5A6,9EA8 +B5A7,9EA9 +B5A8,9EAA +B5A9,BFC3 +B5AA,BFC4 +B5AB,BFC5 +B5AC,9EAB +B5AD,BFC6 +B5AE,9EAC +B5AF,9EAD +B5B0,BFC7 +B5B1,BFC8 +B5B3,BFC9 +B5B4,9EAE +B5B5,BFCA +B5B6,9EAF +B5B7,BFCB +B5B8,9EB0 +B5B9,BFCC +B5BA,9EB1 +B5BB,9EB2 +B5BC,9EB3 +B5BD,9EB4 +B5C1,BFCD +B5C2,BFCE +B5C3,9EB5 +B5C4,9EB6 +B5C5,BFCF +B5C6,9EB7 +B5C7,9EB8 +B5C8,9EB9 +B5C9,BFD0 +B5CA,9EBA +B5CB,9EBB +B5CC,9EBC +B5CD,9EBD +B5CE,9EBE +B5CF,9EBF +B5D0,9EC0 +B5D1,BFD1 +B5D3,BFD2 +B5D4,9EC1 +B5D5,BFD3 +B5D6,BFD4 +B5D7,BFD5 +B5D8,9EC2 +B5D9,9EC3 +B5DA,9EC4 +B5DB,9EC5 +B5DC,9EC6 +B5DD,9EC7 +B5E1,BFD6 +B5E2,BFD7 +B5E3,9EC8 +B5E4,9EC9 +B5E5,BFD8 +B5E6,9ECA +B5E7,9ECB +B5E8,9ECC +B5E9,9ECD +B5EA,9ECE +B5EB,9ECF +B5EC,9ED0 +B5ED,9ED1 +B5EE,9ED2 +B5EF,9ED3 +B5F0,9ED4 +B5F1,BFD9 +B5F3,9ED5 +B5F4,9ED6 +B5F5,BFDA +B5F6,9ED7 +B5F7,BFDB +B5F8,9ED8 +B5F9,9ED9 +B5FA,9EDA +B5FB,9EDB +B5FC,9EDC +B5FD,9EDD +B641,BFDC +B642,BFDD +B643,9EDE +B644,9EDF +B645,BFDE +B646,9EE0 +B647,9EE1 +B648,9EE2 +B649,BFDF +B64A,9EE3 +B64B,9EE4 +B64C,9EE5 +B64D,9EE6 +B64E,9EE7 +B64F,9EE8 +B650,9EE9 +B651,BFE0 +B653,BFE1 +B654,9EEA +B655,BFE2 +B656,9EEB +B657,BFE3 +B658,9EEC +B659,9EED +B65A,9EEE +B65B,9EEF +B65C,9EF0 +B65D,9EF1 +B661,BFE4 +B662,BFE5 +B663,9EF2 +B664,9EF3 +B665,BFE6 +B666,9EF4 +B667,9EF5 +B668,9EF6 +B669,BFE7 +B66A,9EF7 +B66B,9EF8 +B66C,9EF9 +B66D,9EFA +B66E,9EFB +B66F,9EFC +B670,9EFD +B671,BFE8 +B673,BFE9 +B674,9EFE +B675,BFEA +B676,9F41 +B677,BFEB +B678,9F42 +B679,9F43 +B67A,9F44 +B67B,9F45 +B67C,9F46 +B67D,9F47 +B681,BFEC +B682,BFED +B683,9F48 +B684,9F49 +B685,BFEE +B686,9F4A +B687,9F4B +B688,9F4C +B689,BFEF +B68A,BFF0 +B68B,BFF1 +B68C,9F4D +B68D,9F4E +B68E,9F4F +B68F,9F50 +B690,9F51 +B691,BFF2 +B693,BFF3 +B694,9F52 +B695,BFF4 +B696,9F53 +B697,BFF5 +B698,9F54 +B699,9F55 +B69A,9F56 +B69B,9F57 +B69C,9F58 +B69D,9F59 +B6A1,BFF6 +B6A2,BFF7 +B6A3,9F5A +B6A4,9F61 +B6A5,BFF8 +B6A6,9F62 +B6A7,9F63 +B6A8,9F64 +B6A9,BFF9 +B6AA,9F65 +B6AB,9F66 +B6AC,9F67 +B6AD,9F68 +B6AE,9F69 +B6AF,9F6A +B6B0,9F6B +B6B1,BFFA +B6B3,BFFB +B6B4,9F6C +B6B5,9F6D +B6B6,BFFC +B6B7,BFFD +B6B8,9F6E +B6B9,9F6F +B6BA,9F70 +B6BB,9F71 +B6BC,9F72 +B6BD,9F73 +B6C1,BFFE +B6C2,C0A1 +B6C3,9F74 +B6C4,9F75 +B6C5,C0A2 +B6C6,9F76 +B6C7,9F77 +B6C8,9F78 +B6C9,C0A3 +B6CA,9F79 +B6CB,9F7A +B6CC,9F81 +B6CD,9F82 +B6CE,9F83 +B6CF,9F84 +B6D0,9F85 +B6D1,C0A4 +B6D3,C0A5 +B6D4,9F86 +B6D5,9F87 +B6D6,9F88 +B6D7,C0A6 +B6D8,9F89 +B6D9,9F8A +B6DA,9F8B +B6DB,9F8C +B6DC,9F8D +B6DD,9F8E +B6E1,C0A7 +B6E2,C0A8 +B6E3,9F8F +B6E4,9F90 +B6E5,C0A9 +B6E6,9F91 +B6E7,9F92 +B6E8,9F93 +B6E9,C0AA +B6EA,9F94 +B6EB,9F95 +B6EC,9F96 +B6ED,9F97 +B6EE,9F98 +B6EF,9F99 +B6F0,9F9A +B6F1,C0AB +B6F3,C0AC +B6F4,9F9B +B6F5,C0AD +B6F6,9F9C +B6F7,C0AE +B6F8,9F9D +B6F9,9F9E +B6FA,9F9F +B6FB,9FA0 +B6FC,9FA1 +B6FD,9FA2 +B741,C0AF +B742,C0B0 +B743,9FA3 +B744,9FA4 +B745,C0B1 +B746,9FA5 +B747,9FA6 +B748,9FA7 +B749,C0B2 +B74A,9FA8 +B74B,9FA9 +B74C,9FAA +B74D,9FAB +B74E,9FAC +B74F,9FAD +B750,9FAE +B751,C0B3 +B753,C0B4 +B754,9FAF +B755,C0B5 +B756,9FB0 +B757,C0B6 +B758,9FB1 +B759,C0B7 +B75A,9FB2 +B75B,9FB3 +B75C,9FB4 +B75D,9FB5 +B761,C0B8 +B762,C0B9 +B763,9FB6 +B764,9FB7 +B765,C0BA +B766,9FB8 +B767,9FB9 +B768,9FBA +B769,C0BB +B76A,9FBB +B76B,9FBC +B76C,9FBD +B76D,9FBE +B76E,9FBF +B76F,C0BC +B770,9FC0 +B771,C0BD +B773,C0BE +B774,9FC1 +B775,C0BF +B776,9FC2 +B777,C0C0 +B778,C0C1 +B779,C0C2 +B77A,C0C3 +B77B,C0C4 +B77C,C0C5 +B77D,C0C6 +B781,C0C7 +B782,9FC3 +B783,9FC4 +B784,9FC5 +B785,C0C8 +B786,9FC6 +B787,9FC7 +B788,9FC8 +B789,C0C9 +B78A,9FC9 +B78B,9FCA +B78C,9FCB +B78D,9FCC +B78E,9FCD +B78F,9FCE +B790,9FCF +B791,C0CA +B793,9FD0 +B794,9FD1 +B795,C0CB +B796,9FD2 +B797,9FD3 +B798,9FD4 +B799,9FD5 +B79A,9FD6 +B79B,9FD7 +B79C,9FD8 +B79D,9FD9 +B7A1,C0CC +B7A2,C0CD +B7A3,9FDA +B7A4,9FDB +B7A5,C0CE +B7A6,9FDC +B7A7,9FDD +B7A8,9FDE +B7A9,C0CF +B7AA,C0D0 +B7AB,C0D1 +B7AC,9FDF +B7AD,9FE0 +B7AE,9FE1 +B7AF,9FE2 +B7B0,C0D2 +B7B1,C0D3 +B7B3,C0D4 +B7B4,9FE3 +B7B5,C0D5 +B7B6,C0D6 +B7B7,C0D7 +B7B8,C0D8 +B7B9,9FE4 +B7BA,9FE5 +B7BB,9FE6 +B7BC,C0D9 +B7BD,9FE7 +B841,A4B8 +B861,C0DA +B862,C0DB +B863,9FE8 +B864,9FE9 +B865,C0DC +B866,9FEA +B867,C0DD +B868,C0DE +B869,C0DF +B86A,9FEB +B86B,C0E0 +B86C,9FEC +B86D,9FED +B86E,9FEE +B86F,9FEF +B870,9FF0 +B871,C0E1 +B873,C0E2 +B874,9FF1 +B875,C0E3 +B876,C0E4 +B877,C0E5 +B878,C0E6 +B879,9FF2 +B87A,9FF3 +B87B,9FF4 +B87C,9FF5 +B87D,9FF6 +B881,C0E7 +B882,C0E8 +B883,9FF7 +B884,9FF8 +B885,C0E9 +B886,9FF9 +B887,9FFA +B888,9FFB +B889,C0EA +B88A,9FFC +B88B,9FFD +B88C,9FFE +B88D,A041 +B88E,A042 +B88F,A043 +B890,A044 +B891,C0EB +B893,C0EC +B894,A045 +B895,C0ED +B896,C0EE +B897,C0EF +B898,A046 +B899,A047 +B89A,A048 +B89B,A049 +B89C,A04A +B89D,A04B +B8A1,C0F0 +B8A2,C0F1 +B8A3,A04C +B8A4,A04D +B8A5,C0F2 +B8A6,A04E +B8A7,C0F3 +B8A8,A04F +B8A9,C0F4 +B8AA,A050 +B8AB,A051 +B8AC,A052 +B8AD,A053 +B8AE,A054 +B8AF,A055 +B8B0,A056 +B8B1,C0F5 +B8B3,A057 +B8B4,A058 +B8B5,A059 +B8B6,A05A +B8B7,C0F6 +B8B8,A061 +B8B9,A062 +B8BA,A063 +B8BB,A064 +B8BC,A065 +B8BD,A066 +B8C1,C0F7 +B8C2,A067 +B8C3,A068 +B8C4,A069 +B8C5,C0F8 +B8C6,A06A +B8C7,A06B +B8C8,A06C +B8C9,C0F9 +B8CA,A06D +B8CB,A06E +B8CC,A06F +B8CD,A070 +B8CE,A071 +B8CF,A072 +B8D0,A073 +B8D1,A074 +B8D3,A075 +B8D4,A076 +B8D5,A077 +B8D6,A078 +B8D7,A079 +B8D8,A07A +B8D9,A081 +B8DA,A082 +B8DB,A083 +B8DC,A084 +B8DD,A085 +B8E1,C0FA +B8E2,C0FB +B8E3,A086 +B8E4,A087 +B8E5,C0FC +B8E6,A088 +B8E7,A089 +B8E8,A08A +B8E9,C0FD +B8EA,A08B +B8EB,C0FE +B8EC,A08C +B8ED,A08D +B8EE,A08E +B8EF,A08F +B8F0,A090 +B8F1,C1A1 +B8F3,C1A2 +B8F4,A091 +B8F5,C1A3 +B8F6,A092 +B8F7,C1A4 +B8F8,C1A5 +B8F9,A093 +B8FA,A094 +B8FB,A095 +B8FC,A096 +B8FD,A097 +B941,C1A6 +B942,C1A7 +B943,A098 +B944,A099 +B945,C1A8 +B946,A09A +B947,A09B +B948,A09C +B949,C1A9 +B94A,A09D +B94B,A09E +B94C,A09F +B94D,A0A0 +B94E,A0A1 +B94F,A0A2 +B950,A0A3 +B951,C1AA +B953,C1AB +B954,A0A4 +B955,C1AC +B956,A0A5 +B957,C1AD +B958,A0A6 +B959,A0A7 +B95A,A0A8 +B95B,A0A9 +B95C,A0AA +B95D,A0AB +B961,C1AE +B962,A0AC +B963,A0AD +B964,A0AE +B965,C1AF +B966,A0AF +B967,A0B0 +B968,A0B1 +B969,C1B0 +B96A,A0B2 +B96B,A0B3 +B96C,A0B4 +B96D,A0B5 +B96E,A0B6 +B96F,A0B7 +B970,A0B8 +B971,C1B1 +B973,C1B2 +B974,A0B9 +B975,A0BA +B976,C1B3 +B977,C1B4 +B978,A0BB +B979,A0BC +B97A,A0BD +B97B,A0BE +B97C,A0BF +B97D,A0C0 +B981,C1B5 +B982,A0C1 +B983,A0C2 +B984,A0C3 +B985,A0C4 +B986,A0C5 +B987,A0C6 +B988,A0C7 +B989,A0C8 +B98A,A0C9 +B98B,A0CA +B98C,A0CB +B98D,A0CC +B98E,A0CD +B98F,A0CE +B990,A0CF +B991,A0D0 +B993,A0D1 +B994,A0D2 +B995,A0D3 +B996,A0D4 +B997,A0D5 +B998,A0D6 +B999,A0D7 +B99A,A0D8 +B99B,A0D9 +B99C,A0DA +B99D,A0DB +B9A1,C1B6 +B9A2,C1B7 +B9A3,A0DC +B9A4,A0DD +B9A5,C1B8 +B9A6,A0DE +B9A7,A0DF +B9A8,A0E0 +B9A9,C1B9 +B9AA,A0E1 +B9AB,C1BA +B9AC,A0E2 +B9AD,A0E3 +B9AE,A0E4 +B9AF,A0E5 +B9B0,A0E6 +B9B1,C1BB +B9B3,C1BC +B9B4,A0E7 +B9B5,C1BD +B9B6,A0E8 +B9B7,C1BE +B9B8,C1BF +B9B9,C1C0 +B9BA,A0E9 +B9BB,A0EA +B9BC,A0EB +B9BD,C1C1 +B9C1,C1C2 +B9C2,C1C3 +B9C3,A0EC +B9C4,A0ED +B9C5,A0EE +B9C6,A0EF +B9C7,A0F0 +B9C8,A0F1 +B9C9,C1C4 +B9CA,A0F2 +B9CB,A0F3 +B9CC,A0F4 +B9CD,A0F5 +B9CE,A0F6 +B9CF,A0F7 +B9D0,A0F8 +B9D1,A0F9 +B9D3,C1C5 +B9D4,A0FA +B9D5,C1C6 +B9D6,A0FB +B9D7,C1C7 +B9D8,A0FC +B9D9,A0FD +B9DA,A0FE +B9DB,A141 +B9DC,A142 +B9DD,A143 +B9E1,C1C8 +B9E2,A144 +B9E3,A145 +B9E4,A146 +B9E5,A147 +B9E6,A148 +B9E7,A149 +B9E8,A14A +B9E9,A14B +B9EA,A14C +B9EB,A14D +B9EC,A14E +B9ED,A14F +B9EE,A150 +B9EF,A151 +B9F0,A152 +B9F1,A153 +B9F3,A154 +B9F4,A155 +B9F5,A156 +B9F6,C1C9 +B9F7,C1CA +B9F8,A157 +B9F9,A158 +B9FA,A159 +B9FB,A15A +B9FC,A161 +B9FD,A162 +BA41,C1CB +BA42,A163 +BA43,A164 +BA44,A165 +BA45,C1CC +BA46,A166 +BA47,A167 +BA48,A168 +BA49,C1CD +BA4A,A169 +BA4B,A16A +BA4C,A16B +BA4D,A16C +BA4E,A16D +BA4F,A16E +BA50,A16F +BA51,C1CE +BA53,C1CF +BA54,A170 +BA55,C1D0 +BA56,A171 +BA57,C1D1 +BA58,A172 +BA59,A173 +BA5A,A174 +BA5B,A175 +BA5C,A176 +BA5D,A177 +BA61,C1D2 +BA62,C1D3 +BA63,A178 +BA64,A179 +BA65,C1D4 +BA66,A17A +BA67,A181 +BA68,A182 +BA69,A183 +BA6A,A184 +BA6B,A185 +BA6C,A186 +BA6D,A187 +BA6E,A188 +BA6F,A189 +BA70,A18A +BA71,A18B +BA73,A18C +BA74,A18D +BA75,A18E +BA76,A18F +BA77,C1D5 +BA78,A190 +BA79,A191 +BA7A,A192 +BA7B,A193 +BA7C,A194 +BA7D,A195 +BA81,C1D6 +BA82,C1D7 +BA83,A196 +BA84,A197 +BA85,C1D8 +BA86,A198 +BA87,A199 +BA88,A19A +BA89,C1D9 +BA8A,C1DA +BA8B,C1DB +BA8C,A19B +BA8D,A19C +BA8E,A19D +BA8F,A19E +BA90,A19F +BA91,C1DC +BA93,C1DD +BA94,A1A0 +BA95,C1DE +BA96,A241 +BA97,C1DF +BA98,A242 +BA99,A243 +BA9A,A244 +BA9B,A245 +BA9C,A246 +BA9D,A247 +BAA1,C1E0 +BAA2,A248 +BAA3,A249 +BAA4,A24A +BAA5,A24B +BAA6,A24C +BAA7,A24D +BAA8,A24E +BAA9,A24F +BAAA,A250 +BAAB,A251 +BAAC,A252 +BAAD,A253 +BAAE,A254 +BAAF,A255 +BAB0,A256 +BAB1,A257 +BAB3,A258 +BAB4,A259 +BAB5,A25A +BAB6,C1E1 +BAB7,A261 +BAB8,A262 +BAB9,A263 +BABA,A264 +BABB,A265 +BABC,A266 +BABD,A267 +BAC1,C1E2 +BAC2,A268 +BAC3,A269 +BAC4,A26A +BAC5,A26B +BAC6,A26C +BAC7,A26D +BAC8,A26E +BAC9,A26F +BACA,A270 +BACB,A271 +BACC,A272 +BACD,A273 +BACE,A274 +BACF,A275 +BAD0,A276 +BAD1,A277 +BAD3,A278 +BAD4,A279 +BAD5,A27A +BAD6,A281 +BAD7,A282 +BAD8,A283 +BAD9,A284 +BADA,A285 +BADB,A286 +BADC,A287 +BADD,A288 +BAE1,C1E3 +BAE2,C1E4 +BAE3,A289 +BAE4,A28A +BAE5,C1E5 +BAE6,A28B +BAE7,A28C +BAE8,A28D +BAE9,C1E6 +BAEA,A28E +BAEB,A28F +BAEC,A290 +BAED,A291 +BAEE,A292 +BAEF,A293 +BAF0,A294 +BAF1,C1E7 +BAF3,C1E8 +BAF4,A295 +BAF5,C1E9 +BAF6,A296 +BAF7,A297 +BAF8,A298 +BAF9,A299 +BAFA,A29A +BAFB,A29B +BAFC,A29C +BAFD,A29D +BB41,C1EA +BB42,A29E +BB43,A29F +BB44,A2A0 +BB45,C1EB +BB46,A341 +BB47,A342 +BB48,A343 +BB49,C1EC +BB4A,A344 +BB4B,A345 +BB4C,A346 +BB4D,A347 +BB4E,A348 +BB4F,A349 +BB50,A34A +BB51,C1ED +BB53,A34B +BB54,A34C +BB55,A34D +BB56,A34E +BB57,A34F +BB58,A350 +BB59,A351 +BB5A,A352 +BB5B,A353 +BB5C,A354 +BB5D,A355 +BB61,C1EE +BB62,C1EF +BB63,A356 +BB64,A357 +BB65,C1F0 +BB66,A358 +BB67,A359 +BB68,A35A +BB69,C1F1 +BB6A,A361 +BB6B,A362 +BB6C,A363 +BB6D,A364 +BB6E,A365 +BB6F,A366 +BB70,A367 +BB71,C1F2 +BB73,C1F3 +BB74,A368 +BB75,C1F4 +BB76,A369 +BB77,C1F5 +BB78,A36A +BB79,A36B +BB7A,A36C +BB7B,A36D +BB7C,A36E +BB7D,A36F +BB81,A370 +BB82,A371 +BB83,A372 +BB84,A373 +BB85,A374 +BB86,A375 +BB87,A376 +BB88,A377 +BB89,A378 +BB8A,A379 +BB8B,A37A +BB8C,A381 +BB8D,A382 +BB8E,A383 +BB8F,A384 +BB90,A385 +BB91,A386 +BB93,A387 +BB94,A388 +BB95,A389 +BB96,A38A +BB97,A38B +BB98,A38C +BB99,A38D +BB9A,A38E +BB9B,A38F +BB9C,A390 +BB9D,A391 +BBA1,C1F6 +BBA2,C1F7 +BBA3,A392 +BBA4,A393 +BBA5,C1F8 +BBA6,A394 +BBA7,A395 +BBA8,C1F9 +BBA9,C1FA +BBAA,A396 +BBAB,C1FB +BBAC,A397 +BBAD,A398 +BBAE,A399 +BBAF,A39A +BBB0,A39B +BBB1,C1FC +BBB3,C1FD +BBB4,A39C +BBB5,C1FE +BBB6,A39D +BBB7,C2A1 +BBB8,C2A2 +BBB9,A39E +BBBA,A39F +BBBB,C2A3 +BBBC,C2A4 +BBBD,A3A0 +BC41,A4B9 +BC61,C2A5 +BC62,C2A6 +BC63,A441 +BC64,A442 +BC65,C2A7 +BC66,A443 +BC67,C2A8 +BC68,A444 +BC69,C2A9 +BC6A,A445 +BC6B,A446 +BC6C,C2AA +BC6D,A447 +BC6E,A448 +BC6F,A449 +BC70,A44A +BC71,C2AB +BC73,C2AC +BC74,A44B +BC75,C2AD +BC76,C2AE +BC77,C2AF +BC78,A44C +BC79,A44D +BC7A,A44E +BC7B,A44F +BC7C,A450 +BC7D,A451 +BC81,C2B0 +BC82,C2B1 +BC83,A452 +BC84,A453 +BC85,C2B2 +BC86,A454 +BC87,A455 +BC88,A456 +BC89,C2B3 +BC8A,A457 +BC8B,A458 +BC8C,A459 +BC8D,A45A +BC8E,A461 +BC8F,A462 +BC90,A463 +BC91,C2B4 +BC93,C2B5 +BC94,A464 +BC95,C2B6 +BC96,C2B7 +BC97,C2B8 +BC98,A465 +BC99,A466 +BC9A,A467 +BC9B,A468 +BC9C,A469 +BC9D,A46A +BCA1,C2B9 +BCA2,A46B +BCA3,A46C +BCA4,A46D +BCA5,C2BA +BCA6,A46E +BCA7,A46F +BCA8,A470 +BCA9,A471 +BCAA,A472 +BCAB,A473 +BCAC,A474 +BCAD,A475 +BCAE,A476 +BCAF,A477 +BCB0,A478 +BCB1,A479 +BCB3,A47A +BCB4,A481 +BCB5,A482 +BCB6,A483 +BCB7,C2BB +BCB8,A484 +BCB9,A485 +BCBA,A486 +BCBB,A487 +BCBC,A488 +BCBD,A489 +BCC1,A48A +BCC2,A48B +BCC3,A48C +BCC4,A48D +BCC5,A48E +BCC6,A48F +BCC7,A490 +BCC8,A491 +BCC9,A492 +BCCA,A493 +BCCB,A494 +BCCC,A495 +BCCD,A496 +BCCE,A497 +BCCF,A498 +BCD0,A499 +BCD1,A49A +BCD3,A49B +BCD4,A49C +BCD5,A49D +BCD6,A49E +BCD7,A49F +BCD8,A4A0 +BCD9,A541 +BCDA,A542 +BCDB,A543 +BCDC,A544 +BCDD,A545 +BCE1,C2BC +BCE2,C2BD +BCE3,A546 +BCE4,A547 +BCE5,C2BE +BCE6,A548 +BCE7,A549 +BCE8,A54A +BCE9,C2BF +BCEA,A54B +BCEB,A54C +BCEC,A54D +BCED,A54E +BCEE,A54F +BCEF,A550 +BCF0,A551 +BCF1,C2C0 +BCF3,C2C1 +BCF4,A552 +BCF5,C2C2 +BCF6,C2C3 +BCF7,C2C4 +BCF8,A553 +BCF9,A554 +BCFA,A555 +BCFB,A556 +BCFC,A557 +BCFD,A558 +BD41,C2C5 +BD42,A559 +BD43,A55A +BD44,A561 +BD45,A562 +BD46,A563 +BD47,A564 +BD48,A565 +BD49,A566 +BD4A,A567 +BD4B,A568 +BD4C,A569 +BD4D,A56A +BD4E,A56B +BD4F,A56C +BD50,A56D +BD51,A56E +BD53,A56F +BD54,A570 +BD55,A571 +BD56,A572 +BD57,C2C6 +BD58,A573 +BD59,A574 +BD5A,A575 +BD5B,A576 +BD5C,A577 +BD5D,A578 +BD61,C2C7 +BD62,A579 +BD63,A57A +BD64,A581 +BD65,A582 +BD66,A583 +BD67,A584 +BD68,A585 +BD69,A586 +BD6A,A587 +BD6B,A588 +BD6C,A589 +BD6D,A58A +BD6E,A58B +BD6F,A58C +BD70,A58D +BD71,A58E +BD73,A58F +BD74,A590 +BD75,A591 +BD76,C2C8 +BD77,A592 +BD78,A593 +BD79,A594 +BD7A,A595 +BD7B,A596 +BD7C,A597 +BD7D,A598 +BD81,A599 +BD82,A59A +BD83,A59B +BD84,A59C +BD85,A59D +BD86,A59E +BD87,A59F +BD88,A5A0 +BD89,A641 +BD8A,A642 +BD8B,A643 +BD8C,A644 +BD8D,A645 +BD8E,A646 +BD8F,A647 +BD90,A648 +BD91,A649 +BD93,A64A +BD94,A64B +BD95,A64C +BD96,A64D +BD97,A64E +BD98,A64F +BD99,A650 +BD9A,A651 +BD9B,A652 +BD9C,A653 +BD9D,A654 +BDA1,C2C9 +BDA2,C2CA +BDA3,A655 +BDA4,A656 +BDA5,C2CB +BDA6,A657 +BDA7,A658 +BDA8,A659 +BDA9,C2CC +BDAA,A65A +BDAB,A661 +BDAC,A662 +BDAD,A663 +BDAE,A664 +BDAF,A665 +BDB0,A666 +BDB1,C2CD +BDB3,C2CE +BDB4,A667 +BDB5,C2CF +BDB6,A668 +BDB7,C2D0 +BDB8,A669 +BDB9,C2D1 +BDBA,A66A +BDBB,A66B +BDBC,A66C +BDBD,A66D +BDC1,C2D2 +BDC2,C2D3 +BDC3,A66E +BDC4,A66F +BDC5,A670 +BDC6,A671 +BDC7,A672 +BDC8,A673 +BDC9,C2D4 +BDCA,A674 +BDCB,A675 +BDCC,A676 +BDCD,A677 +BDCE,A678 +BDCF,A679 +BDD0,A67A +BDD1,A681 +BDD3,A682 +BDD4,A683 +BDD5,A684 +BDD6,C2D5 +BDD7,A685 +BDD8,A686 +BDD9,A687 +BDDA,A688 +BDDB,A689 +BDDC,A68A +BDDD,A68B +BDE1,C2D6 +BDE2,A68C +BDE3,A68D +BDE4,A68E +BDE5,A68F +BDE6,A690 +BDE7,A691 +BDE8,A692 +BDE9,A693 +BDEA,A694 +BDEB,A695 +BDEC,A696 +BDED,A697 +BDEE,A698 +BDEF,A699 +BDF0,A69A +BDF1,A69B +BDF3,A69C +BDF4,A69D +BDF5,A69E +BDF6,C2D7 +BDF7,A69F +BDF8,A6A0 +BDF9,A741 +BDFA,A742 +BDFB,A743 +BDFC,A744 +BDFD,A745 +BE41,C2D8 +BE42,A746 +BE43,A747 +BE44,A748 +BE45,C2D9 +BE46,A749 +BE47,A74A +BE48,A74B +BE49,C2DA +BE4A,A74C +BE4B,A74D +BE4C,A74E +BE4D,A74F +BE4E,A750 +BE4F,A751 +BE50,A752 +BE51,C2DB +BE53,C2DC +BE54,A753 +BE55,A754 +BE56,A755 +BE57,A756 +BE58,A757 +BE59,A758 +BE5A,A759 +BE5B,A75A +BE5C,A761 +BE5D,A762 +BE61,A763 +BE62,A764 +BE63,A765 +BE64,A766 +BE65,A767 +BE66,A768 +BE67,A769 +BE68,A76A +BE69,A76B +BE6A,A76C +BE6B,A76D +BE6C,A76E +BE6D,A76F +BE6E,A770 +BE6F,A771 +BE70,A772 +BE71,A773 +BE73,A774 +BE74,A775 +BE75,A776 +BE76,A777 +BE77,C2DD +BE78,A778 +BE79,A779 +BE7A,A77A +BE7B,A781 +BE7C,A782 +BE7D,A783 +BE81,C2DE +BE82,C2DF +BE83,A784 +BE84,A785 +BE85,C2E0 +BE86,A786 +BE87,A787 +BE88,A788 +BE89,C2E1 +BE8A,A789 +BE8B,A78A +BE8C,A78B +BE8D,A78C +BE8E,A78D +BE8F,A78E +BE90,A78F +BE91,C2E2 +BE93,C2E3 +BE94,A790 +BE95,A791 +BE96,A792 +BE97,C2E4 +BE98,A793 +BE99,A794 +BE9A,A795 +BE9B,A796 +BE9C,A797 +BE9D,A798 +BEA1,C2E5 +BEA2,A799 +BEA3,A79A +BEA4,A79B +BEA5,A79C +BEA6,A79D +BEA7,A79E +BEA8,A79F +BEA9,A7A0 +BEAA,A841 +BEAB,A842 +BEAC,A843 +BEAD,A844 +BEAE,A845 +BEAF,A846 +BEB0,A847 +BEB1,A848 +BEB3,A849 +BEB4,A84A +BEB5,A84B +BEB6,C2E6 +BEB7,C2E7 +BEB8,A84C +BEB9,A84D +BEBA,A84E +BEBB,A84F +BEBC,A850 +BEBD,A851 +BEC1,A852 +BEC2,A853 +BEC3,A854 +BEC4,A855 +BEC5,A856 +BEC6,A857 +BEC7,A858 +BEC8,A859 +BEC9,A85A +BECA,A861 +BECB,A862 +BECC,A863 +BECD,A864 +BECE,A865 +BECF,A866 +BED0,A867 +BED1,A868 +BED3,A869 +BED4,A86A +BED5,A86B +BED6,A86C +BED7,A86D +BED8,A86E +BED9,A86F +BEDA,A870 +BEDB,A871 +BEDC,A872 +BEDD,A873 +BEE1,C2E8 +BEE2,A874 +BEE3,A875 +BEE4,A876 +BEE5,A877 +BEE6,A878 +BEE7,A879 +BEE8,A87A +BEE9,A881 +BEEA,A882 +BEEB,A883 +BEEC,A884 +BEED,A885 +BEEE,A886 +BEEF,A887 +BEF0,A888 +BEF1,A889 +BEF3,A88A +BEF4,A88B +BEF5,A88C +BEF6,A88D +BEF7,A88E +BEF8,A88F +BEF9,A890 +BEFA,A891 +BEFB,A892 +BEFC,A893 +BEFD,A894 +BF41,C2E9 +BF42,A895 +BF43,A896 +BF44,A897 +BF45,A898 +BF46,A899 +BF47,A89A +BF48,A89B +BF49,A89C +BF4A,A89D +BF4B,A89E +BF4C,A89F +BF4D,A8A0 +BF4E,A941 +BF4F,A942 +BF50,A943 +BF51,A944 +BF53,A945 +BF54,A946 +BF55,A947 +BF56,A948 +BF57,A949 +BF58,A94A +BF59,A94B +BF5A,A94C +BF5B,A94D +BF5C,A94E +BF5D,A94F +BF61,C2EA +BF62,A950 +BF63,A951 +BF64,A952 +BF65,A953 +BF66,A954 +BF67,A955 +BF68,A956 +BF69,A957 +BF6A,A958 +BF6B,A959 +BF6C,A95A +BF6D,A961 +BF6E,A962 +BF6F,A963 +BF70,A964 +BF71,C2EB +BF73,A965 +BF74,A966 +BF75,C2EC +BF76,A967 +BF77,C2ED +BF78,A968 +BF79,A969 +BF7A,A96A +BF7B,A96B +BF7C,A96C +BF7D,A96D +BF81,A96E +BF82,A96F +BF83,A970 +BF84,A971 +BF85,A972 +BF86,A973 +BF87,A974 +BF88,A975 +BF89,A976 +BF8A,A977 +BF8B,A978 +BF8C,A979 +BF8D,A97A +BF8E,A981 +BF8F,A982 +BF90,A983 +BF91,A984 +BF93,A985 +BF94,A986 +BF95,A987 +BF96,A988 +BF97,A989 +BF98,A98A +BF99,A98B +BF9A,A98C +BF9B,A98D +BF9C,A98E +BF9D,A98F +BFA1,C2EE +BFA2,C2EF +BFA3,A990 +BFA4,A991 +BFA5,C2F0 +BFA6,A992 +BFA7,A993 +BFA8,A994 +BFA9,C2F1 +BFAA,A995 +BFAB,A996 +BFAC,A997 +BFAD,A998 +BFAE,A999 +BFAF,A99A +BFB0,A99B +BFB1,C2F2 +BFB3,C2F3 +BFB4,A99C +BFB5,A99D +BFB6,A99E +BFB7,C2F4 +BFB8,C2F5 +BFB9,A99F +BFBA,A9A0 +BFBB,AA41 +BFBC,AA42 +BFBD,C2F6 +C041,A4BA +C061,C2F7 +C062,C2F8 +C063,AA43 +C064,AA44 +C065,C2F9 +C066,AA45 +C067,C2FA +C068,AA46 +C069,C2FB +C06A,AA47 +C06B,AA48 +C06C,AA49 +C06D,AA4A +C06E,AA4B +C06F,AA4C +C070,AA4D +C071,C2FC +C073,C2FD +C074,AA4E +C075,C2FE +C076,C3A1 +C077,C3A2 +C078,C3A3 +C079,AA4F +C07A,AA50 +C07B,AA51 +C07C,AA52 +C07D,AA53 +C081,C3A4 +C082,C3A5 +C083,AA54 +C084,AA55 +C085,C3A6 +C086,AA56 +C087,AA57 +C088,AA58 +C089,C3A7 +C08A,AA59 +C08B,AA5A +C08C,AA61 +C08D,AA62 +C08E,AA63 +C08F,AA64 +C090,AA65 +C091,C3A8 +C093,C3A9 +C094,AA66 +C095,C3AA +C096,C3AB +C097,C3AC +C098,AA67 +C099,AA68 +C09A,AA69 +C09B,AA6A +C09C,AA6B +C09D,AA6C +C0A1,C3AD +C0A2,AA6D +C0A3,AA6E +C0A4,AA6F +C0A5,C3AE +C0A6,AA70 +C0A7,C3AF +C0A8,AA71 +C0A9,C3B0 +C0AA,AA72 +C0AB,AA73 +C0AC,AA74 +C0AD,AA75 +C0AE,AA76 +C0AF,AA77 +C0B0,AA78 +C0B1,C3B1 +C0B3,AA79 +C0B4,AA7A +C0B5,AA81 +C0B6,AA82 +C0B7,C3B2 +C0B8,AA83 +C0B9,AA84 +C0BA,AA85 +C0BB,AA86 +C0BC,AA87 +C0BD,AA88 +C0C1,AA89 +C0C2,AA8A +C0C3,AA8B +C0C4,AA8C +C0C5,AA8D +C0C6,AA8E +C0C7,AA8F +C0C8,AA90 +C0C9,AA91 +C0CA,AA92 +C0CB,AA93 +C0CC,AA94 +C0CD,AA95 +C0CE,AA96 +C0CF,AA97 +C0D0,AA98 +C0D1,AA99 +C0D3,AA9A +C0D4,AA9B +C0D5,AA9C +C0D6,AA9D +C0D7,AA9E +C0D8,AA9F +C0D9,AAA0 +C0DA,AB41 +C0DB,AB42 +C0DC,AB43 +C0DD,AB44 +C0E1,C3B3 +C0E2,C3B4 +C0E3,AB45 +C0E4,AB46 +C0E5,C3B5 +C0E6,AB47 +C0E7,AB48 +C0E8,AB49 +C0E9,C3B6 +C0EA,AB4A +C0EB,AB4B +C0EC,AB4C +C0ED,AB4D +C0EE,AB4E +C0EF,AB4F +C0F0,AB50 +C0F1,C3B7 +C0F3,C3B8 +C0F4,AB51 +C0F5,C3B9 +C0F6,C3BA +C0F7,C3BB +C0F8,AB52 +C0F9,AB53 +C0FA,AB54 +C0FB,AB55 +C0FC,AB56 +C0FD,AB57 +C141,C3BC +C142,C3BD +C143,AB58 +C144,AB59 +C145,C3BE +C146,AB5A +C147,AB61 +C148,AB62 +C149,C3BF +C14A,AB63 +C14B,AB64 +C14C,AB65 +C14D,AB66 +C14E,AB67 +C14F,AB68 +C150,AB69 +C151,C3C0 +C153,C3C1 +C154,AB6A +C155,C3C2 +C156,AB6B +C157,C3C3 +C158,AB6C +C159,AB6D +C15A,AB6E +C15B,AB6F +C15C,AB70 +C15D,AB71 +C161,C3C4 +C162,AB72 +C163,AB73 +C164,AB74 +C165,C3C5 +C166,AB75 +C167,AB76 +C168,AB77 +C169,AB78 +C16A,AB79 +C16B,AB7A +C16C,AB81 +C16D,AB82 +C16E,AB83 +C16F,AB84 +C170,AB85 +C171,AB86 +C173,AB87 +C174,AB88 +C175,AB89 +C176,C3C6 +C177,AB8A +C178,AB8B +C179,AB8C +C17A,AB8D +C17B,AB8E +C17C,AB8F +C17D,AB90 +C181,C3C7 +C182,AB91 +C183,AB92 +C184,AB93 +C185,C3C8 +C186,AB94 +C187,AB95 +C188,AB96 +C189,AB97 +C18A,AB98 +C18B,AB99 +C18C,AB9A +C18D,AB9B +C18E,AB9C +C18F,AB9D +C190,AB9E +C191,AB9F +C193,ABA0 +C194,AC41 +C195,AC42 +C196,AC43 +C197,C3C9 +C198,AC44 +C199,AC45 +C19A,AC46 +C19B,AC47 +C19C,AC48 +C19D,AC49 +C1A1,C3CA +C1A2,C3CB +C1A3,AC4A +C1A4,AC4B +C1A5,C3CC +C1A6,AC4C +C1A7,AC4D +C1A8,AC4E +C1A9,C3CD +C1AA,AC4F +C1AB,AC50 +C1AC,AC51 +C1AD,AC52 +C1AE,AC53 +C1AF,AC54 +C1B0,AC55 +C1B1,C3CE +C1B3,C3CF +C1B4,AC56 +C1B5,C3D0 +C1B6,AC57 +C1B7,C3D1 +C1B8,AC58 +C1B9,AC59 +C1BA,AC5A +C1BB,AC61 +C1BC,AC62 +C1BD,AC63 +C1C1,C3D2 +C1C2,AC64 +C1C3,AC65 +C1C4,AC66 +C1C5,C3D3 +C1C6,AC67 +C1C7,AC68 +C1C8,AC69 +C1C9,C3D4 +C1CA,AC6A +C1CB,AC6B +C1CC,AC6C +C1CD,AC6D +C1CE,AC6E +C1CF,AC6F +C1D0,AC70 +C1D1,AC71 +C1D3,AC72 +C1D4,AC73 +C1D5,AC74 +C1D6,AC75 +C1D7,C3D5 +C1D8,AC76 +C1D9,AC77 +C1DA,AC78 +C1DB,AC79 +C1DC,AC7A +C1DD,AC81 +C1E1,AC82 +C1E2,AC83 +C1E3,AC84 +C1E4,AC85 +C1E5,AC86 +C1E6,AC87 +C1E7,AC88 +C1E8,AC89 +C1E9,AC8A +C1EA,AC8B +C1EB,AC8C +C1EC,AC8D +C1ED,AC8E +C1EE,AC8F +C1EF,AC90 +C1F0,AC91 +C1F1,AC92 +C1F3,AC93 +C1F4,AC94 +C1F5,AC95 +C1F6,AC96 +C1F7,AC97 +C1F8,AC98 +C1F9,AC99 +C1FA,AC9A +C1FB,AC9B +C1FC,AC9C +C1FD,AC9D +C241,C3D6 +C242,AC9E +C243,AC9F +C244,ACA0 +C245,C3D7 +C246,AD41 +C247,AD42 +C248,AD43 +C249,C3D8 +C24A,AD44 +C24B,AD45 +C24C,AD46 +C24D,AD47 +C24E,AD48 +C24F,AD49 +C250,AD4A +C251,C3D9 +C253,C3DA +C254,AD4B +C255,C3DB +C256,AD4C +C257,C3DC +C258,AD4D +C259,AD4E +C25A,AD4F +C25B,AD50 +C25C,AD51 +C25D,AD52 +C261,C3DD +C262,AD53 +C263,AD54 +C264,AD55 +C265,AD56 +C266,AD57 +C267,AD58 +C268,AD59 +C269,AD5A +C26A,AD61 +C26B,AD62 +C26C,AD63 +C26D,AD64 +C26E,AD65 +C26F,AD66 +C270,AD67 +C271,C3DE +C273,AD68 +C274,AD69 +C275,AD6A +C276,AD6B +C277,AD6C +C278,AD6D +C279,AD6E +C27A,AD6F +C27B,AD70 +C27C,AD71 +C27D,AD72 +C281,C3DF +C282,C3E0 +C283,AD73 +C284,AD74 +C285,C3E1 +C286,AD75 +C287,AD76 +C288,AD77 +C289,C3E2 +C28A,AD78 +C28B,AD79 +C28C,AD7A +C28D,AD81 +C28E,AD82 +C28F,AD83 +C290,AD84 +C291,C3E3 +C293,C3E4 +C294,AD85 +C295,C3E5 +C296,AD86 +C297,C3E6 +C298,AD87 +C299,AD88 +C29A,AD89 +C29B,AD8A +C29C,AD8B +C29D,AD8C +C2A1,C3E7 +C2A2,AD8D +C2A3,AD8E +C2A4,AD8F +C2A5,AD90 +C2A6,AD91 +C2A7,AD92 +C2A8,AD93 +C2A9,AD94 +C2AA,AD95 +C2AB,AD96 +C2AC,AD97 +C2AD,AD98 +C2AE,AD99 +C2AF,AD9A +C2B0,AD9B +C2B1,AD9C +C2B3,AD9D +C2B4,AD9E +C2B5,AD9F +C2B6,C3E8 +C2B7,ADA0 +C2B8,AE41 +C2B9,AE42 +C2BA,AE43 +C2BB,AE44 +C2BC,AE45 +C2BD,AE46 +C2C1,C3E9 +C2C2,AE47 +C2C3,AE48 +C2C4,AE49 +C2C5,C3EA +C2C6,AE4A +C2C7,AE4B +C2C8,AE4C +C2C9,AE4D +C2CA,AE4E +C2CB,AE4F +C2CC,AE50 +C2CD,AE51 +C2CE,AE52 +C2CF,AE53 +C2D0,AE54 +C2D1,AE55 +C2D3,AE56 +C2D4,AE57 +C2D5,AE58 +C2D6,AE59 +C2D7,AE5A +C2D8,AE61 +C2D9,AE62 +C2DA,AE63 +C2DB,AE64 +C2DC,AE65 +C2DD,AE66 +C2E1,C3EB +C2E2,AE67 +C2E3,AE68 +C2E4,AE69 +C2E5,C3EC +C2E6,AE6A +C2E7,AE6B +C2E8,AE6C +C2E9,C3ED +C2EA,AE6D +C2EB,AE6E +C2EC,AE6F +C2ED,AE70 +C2EE,AE71 +C2EF,AE72 +C2F0,AE73 +C2F1,C3EE +C2F3,C3EF +C2F4,AE74 +C2F5,C3F0 +C2F6,AE75 +C2F7,C3F1 +C2F8,AE76 +C2F9,AE77 +C2FA,AE78 +C2FB,AE79 +C2FC,AE7A +C2FD,AE81 +C341,C3F2 +C342,AE82 +C343,AE83 +C344,AE84 +C345,C3F3 +C346,AE85 +C347,AE86 +C348,AE87 +C349,C3F4 +C34A,AE88 +C34B,AE89 +C34C,AE8A +C34D,AE8B +C34E,AE8C +C34F,AE8D +C350,AE8E +C351,C3F5 +C353,AE8F +C354,AE90 +C355,AE91 +C356,AE92 +C357,C3F6 +C358,AE93 +C359,AE94 +C35A,AE95 +C35B,AE96 +C35C,AE97 +C35D,AE98 +C361,C3F7 +C362,C3F8 +C363,AE99 +C364,AE9A +C365,C3F9 +C366,AE9B +C367,AE9C +C368,AE9D +C369,C3FA +C36A,AE9E +C36B,AE9F +C36C,AEA0 +C36D,AF41 +C36E,AF42 +C36F,AF43 +C370,AF44 +C371,C3FB +C373,C3FC +C374,AF45 +C375,C3FD +C376,AF46 +C377,C3FE +C378,AF47 +C379,AF48 +C37A,AF49 +C37B,AF4A +C37C,AF4B +C37D,AF4C +C381,AF4D +C382,AF4E +C383,AF4F +C384,AF50 +C385,AF51 +C386,AF52 +C387,AF53 +C388,AF54 +C389,AF55 +C38A,AF56 +C38B,AF57 +C38C,AF58 +C38D,AF59 +C38E,AF5A +C38F,AF61 +C390,AF62 +C391,AF63 +C393,AF64 +C394,AF65 +C395,AF66 +C396,AF67 +C397,AF68 +C398,AF69 +C399,AF6A +C39A,AF6B +C39B,AF6C +C39C,AF6D +C39D,AF6E +C3A1,C4A1 +C3A2,C4A2 +C3A3,AF6F +C3A4,AF70 +C3A5,C4A3 +C3A6,AF71 +C3A7,AF72 +C3A8,C4A4 +C3A9,C4A5 +C3AA,C4A6 +C3AB,AF73 +C3AC,AF74 +C3AD,AF75 +C3AE,AF76 +C3AF,AF77 +C3B0,AF78 +C3B1,C4A7 +C3B3,C4A8 +C3B4,AF79 +C3B5,C4A9 +C3B6,AF7A +C3B7,C4AA +C3B8,AF81 +C3B9,AF82 +C3BA,AF83 +C3BB,AF84 +C3BC,AF85 +C3BD,AF86 +C441,A4BB +C461,C4AB +C462,C4AC +C463,AF87 +C464,AF88 +C465,C4AD +C466,AF89 +C467,AF8A +C468,AF8B +C469,C4AE +C46A,AF8C +C46B,AF8D +C46C,AF8E +C46D,AF8F +C46E,AF90 +C46F,AF91 +C470,AF92 +C471,C4AF +C473,C4B0 +C474,AF93 +C475,C4B1 +C476,AF94 +C477,C4B2 +C478,AF95 +C479,AF96 +C47A,AF97 +C47B,AF98 +C47C,AF99 +C47D,AF9A +C481,C4B3 +C482,C4B4 +C483,AF9B +C484,AF9C +C485,C4B5 +C486,AF9D +C487,AF9E +C488,AF9F +C489,C4B6 +C48A,AFA0 +C48B,B041 +C48C,B042 +C48D,B043 +C48E,B044 +C48F,B045 +C490,B046 +C491,C4B7 +C493,C4B8 +C494,B047 +C495,C4B9 +C496,C4BA +C497,C4BB +C498,B048 +C499,B049 +C49A,B04A +C49B,B04B +C49C,B04C +C49D,B04D +C4A1,C4BC +C4A2,C4BD +C4A3,B04E +C4A4,B04F +C4A5,B050 +C4A6,B051 +C4A7,B052 +C4A8,B053 +C4A9,B054 +C4AA,B055 +C4AB,B056 +C4AC,B057 +C4AD,B058 +C4AE,B059 +C4AF,B05A +C4B0,B061 +C4B1,B062 +C4B3,B063 +C4B4,B064 +C4B5,B065 +C4B6,B066 +C4B7,C4BE +C4B8,B067 +C4B9,B068 +C4BA,B069 +C4BB,B06A +C4BC,B06B +C4BD,B06C +C4C1,B06D +C4C2,B06E +C4C3,B06F +C4C4,B070 +C4C5,B071 +C4C6,B072 +C4C7,B073 +C4C8,B074 +C4C9,B075 +C4CA,B076 +C4CB,B077 +C4CC,B078 +C4CD,B079 +C4CE,B07A +C4CF,B081 +C4D0,B082 +C4D1,B083 +C4D3,B084 +C4D4,B085 +C4D5,B086 +C4D6,B087 +C4D7,B088 +C4D8,B089 +C4D9,B08A +C4DA,B08B +C4DB,B08C +C4DC,B08D +C4DD,B08E +C4E1,C4BF +C4E2,C4C0 +C4E3,B08F +C4E4,B090 +C4E5,C4C1 +C4E6,B091 +C4E7,B092 +C4E8,C4C2 +C4E9,C4C3 +C4EA,B093 +C4EB,B094 +C4EC,B095 +C4ED,B096 +C4EE,B097 +C4EF,B098 +C4F0,B099 +C4F1,C4C4 +C4F3,C4C5 +C4F4,B09A +C4F5,C4C6 +C4F6,C4C7 +C4F7,C4C8 +C4F8,B09B +C4F9,B09C +C4FA,B09D +C4FB,B09E +C4FC,B09F +C4FD,B0A0 +C541,C4C9 +C542,C4CA +C543,B141 +C544,B142 +C545,C4CB +C546,B143 +C547,B144 +C548,B145 +C549,C4CC +C54A,B146 +C54B,B147 +C54C,B148 +C54D,B149 +C54E,B14A +C54F,B14B +C550,B14C +C551,C4CD +C553,C4CE +C554,B14D +C555,C4CF +C556,B14E +C557,C4D0 +C558,B14F +C559,B150 +C55A,B151 +C55B,B152 +C55C,B153 +C55D,B154 +C561,C4D1 +C562,B155 +C563,B156 +C564,B157 +C565,C4D2 +C566,B158 +C567,B159 +C568,B15A +C569,C4D3 +C56A,B161 +C56B,B162 +C56C,B163 +C56D,B164 +C56E,B165 +C56F,B166 +C570,B167 +C571,C4D4 +C573,C4D5 +C574,B168 +C575,C4D6 +C576,C4D7 +C577,C4D8 +C578,B169 +C579,B16A +C57A,B16B +C57B,B16C +C57C,B16D +C57D,B16E +C581,C4D9 +C582,B16F +C583,B170 +C584,B171 +C585,B172 +C586,B173 +C587,B174 +C588,B175 +C589,B176 +C58A,B177 +C58B,B178 +C58C,B179 +C58D,B17A +C58E,B181 +C58F,B182 +C590,B183 +C591,B184 +C593,B185 +C594,B186 +C595,B187 +C596,B188 +C597,B189 +C598,B18A +C599,B18B +C59A,B18C +C59B,B18D +C59C,B18E +C59D,B18F +C5A1,C4DA +C5A2,C4DB +C5A3,B190 +C5A4,B191 +C5A5,C4DC +C5A6,B192 +C5A7,B193 +C5A8,B194 +C5A9,C4DD +C5AA,B195 +C5AB,B196 +C5AC,B197 +C5AD,B198 +C5AE,B199 +C5AF,B19A +C5B0,B19B +C5B1,C4DE +C5B3,C4DF +C5B4,B19C +C5B5,C4E0 +C5B6,B19D +C5B7,C4E1 +C5B8,B19E +C5B9,B19F +C5BA,B1A0 +C5BB,B241 +C5BC,B242 +C5BD,B243 +C5C1,C4E2 +C5C2,C4E3 +C5C3,B244 +C5C4,B245 +C5C5,C4E4 +C5C6,B246 +C5C7,B247 +C5C8,B248 +C5C9,C4E5 +C5CA,B249 +C5CB,B24A +C5CC,B24B +C5CD,B24C +C5CE,B24D +C5CF,B24E +C5D0,B24F +C5D1,C4E6 +C5D3,B250 +C5D4,B251 +C5D5,B252 +C5D6,B253 +C5D7,C4E7 +C5D8,B254 +C5D9,B255 +C5DA,B256 +C5DB,B257 +C5DC,B258 +C5DD,B259 +C5E1,C4E8 +C5E2,B25A +C5E3,B261 +C5E4,B262 +C5E5,B263 +C5E6,B264 +C5E7,B265 +C5E8,B266 +C5E9,B267 +C5EA,B268 +C5EB,B269 +C5EC,B26A +C5ED,B26B +C5EE,B26C +C5EF,B26D +C5F0,B26E +C5F1,B26F +C5F3,B270 +C5F4,B271 +C5F5,B272 +C5F6,B273 +C5F7,C4E9 +C5F8,B274 +C5F9,B275 +C5FA,B276 +C5FB,B277 +C5FC,B278 +C5FD,B279 +C641,C4EA +C642,B27A +C643,B281 +C644,B282 +C645,B283 +C646,B284 +C647,B285 +C648,B286 +C649,C4EB +C64A,B287 +C64B,B288 +C64C,B289 +C64D,B28A +C64E,B28B +C64F,B28C +C650,B28D +C651,B28E +C653,B28F +C654,B290 +C655,B291 +C656,B292 +C657,B293 +C658,B294 +C659,B295 +C65A,B296 +C65B,B297 +C65C,B298 +C65D,B299 +C661,C4EC +C662,B29A +C663,B29B +C664,B29C +C665,B29D +C666,B29E +C667,B29F +C668,B2A0 +C669,B341 +C66A,B342 +C66B,B343 +C66C,B344 +C66D,B345 +C66E,B346 +C66F,B347 +C670,B348 +C671,B349 +C673,B34A +C674,B34B +C675,B34C +C676,B34D +C677,B34E +C678,B34F +C679,B350 +C67A,B351 +C67B,B352 +C67C,B353 +C67D,B354 +C681,C4ED +C682,C4EE +C683,B355 +C684,B356 +C685,C4EF +C686,B357 +C687,B358 +C688,B359 +C689,C4F0 +C68A,B35A +C68B,B361 +C68C,B362 +C68D,B363 +C68E,B364 +C68F,B365 +C690,B366 +C691,C4F1 +C693,C4F2 +C694,B367 +C695,C4F3 +C696,B368 +C697,C4F4 +C698,B369 +C699,B36A +C69A,B36B +C69B,B36C +C69C,B36D +C69D,B36E +C6A1,C4F5 +C6A2,B36F +C6A3,B370 +C6A4,B371 +C6A5,C4F6 +C6A6,B372 +C6A7,B373 +C6A8,B374 +C6A9,C4F7 +C6AA,B375 +C6AB,B376 +C6AC,B377 +C6AD,B378 +C6AE,B379 +C6AF,B37A +C6B0,B381 +C6B1,B382 +C6B3,B383 +C6B4,B384 +C6B5,B385 +C6B6,B386 +C6B7,C4F8 +C6B8,B387 +C6B9,B388 +C6BA,B389 +C6BB,B38A +C6BC,B38B +C6BD,B38C +C6C1,C4F9 +C6C2,B38D +C6C3,B38E +C6C4,B38F +C6C5,B390 +C6C6,B391 +C6C7,B392 +C6C8,B393 +C6C9,B394 +C6CA,B395 +C6CB,B396 +C6CC,B397 +C6CD,B398 +C6CE,B399 +C6CF,B39A +C6D0,B39B +C6D1,B39C +C6D3,B39D +C6D4,B39E +C6D5,B39F +C6D6,B3A0 +C6D7,C4FA +C6D8,B441 +C6D9,B442 +C6DA,B443 +C6DB,B444 +C6DC,B445 +C6DD,B446 +C6E1,C4FB +C6E2,C4FC +C6E3,B447 +C6E4,B448 +C6E5,C4FD +C6E6,B449 +C6E7,B44A +C6E8,B44B +C6E9,C4FE +C6EA,B44C +C6EB,B44D +C6EC,B44E +C6ED,B44F +C6EE,B450 +C6EF,B451 +C6F0,B452 +C6F1,C5A1 +C6F3,C5A2 +C6F4,B453 +C6F5,C5A3 +C6F6,B454 +C6F7,C5A4 +C6F8,B455 +C6F9,B456 +C6FA,B457 +C6FB,B458 +C6FC,B459 +C6FD,B45A +C741,C5A5 +C742,B461 +C743,B462 +C744,B463 +C745,C5A6 +C746,B464 +C747,B465 +C748,B466 +C749,C5A7 +C74A,B467 +C74B,B468 +C74C,B469 +C74D,B46A +C74E,B46B +C74F,B46C +C750,B46D +C751,C5A8 +C753,B46E +C754,B46F +C755,B470 +C756,B471 +C757,B472 +C758,B473 +C759,B474 +C75A,B475 +C75B,B476 +C75C,B477 +C75D,B478 +C761,C5A9 +C762,C5AA +C763,B479 +C764,B47A +C765,C5AB +C766,B481 +C767,B482 +C768,B483 +C769,C5AC +C76A,B484 +C76B,B485 +C76C,B486 +C76D,B487 +C76E,B488 +C76F,B489 +C770,B48A +C771,C5AD +C773,C5AE +C774,B48B +C775,B48C +C776,B48D +C777,C5AF +C778,B48E +C779,B48F +C77A,B490 +C77B,B491 +C77C,B492 +C77D,B493 +C781,B494 +C782,B495 +C783,B496 +C784,B497 +C785,B498 +C786,B499 +C787,B49A +C788,B49B +C789,B49C +C78A,B49D +C78B,B49E +C78C,B49F +C78D,B4A0 +C78E,B541 +C78F,B542 +C790,B543 +C791,B544 +C793,B545 +C794,B546 +C795,B547 +C796,B548 +C797,B549 +C798,B54A +C799,B54B +C79A,B54C +C79B,B54D +C79C,B54E +C79D,B54F +C7A1,C5B0 +C7A2,C5B1 +C7A3,B550 +C7A4,B551 +C7A5,C5B2 +C7A6,B552 +C7A7,B553 +C7A8,B554 +C7A9,C5B3 +C7AA,B555 +C7AB,B556 +C7AC,B557 +C7AD,B558 +C7AE,B559 +C7AF,B55A +C7B0,B561 +C7B1,C5B4 +C7B3,C5B5 +C7B4,B562 +C7B5,C5B6 +C7B6,B563 +C7B7,C5B7 +C7B8,B564 +C7B9,B565 +C7BA,B566 +C7BB,B567 +C7BC,B568 +C7BD,B569 +C841,A4BC +C861,C5B8 +C862,C5B9 +C863,B56A +C864,B56B +C865,C5BA +C866,B56C +C867,B56D +C868,B56E +C869,C5BB +C86A,C5BC +C86B,B56F +C86C,B570 +C86D,B571 +C86E,B572 +C86F,B573 +C870,B574 +C871,C5BD +C873,C5BE +C874,B575 +C875,C5BF +C876,C5C0 +C877,C5C1 +C878,B576 +C879,B577 +C87A,B578 +C87B,B579 +C87C,B57A +C87D,B581 +C881,C5C2 +C882,C5C3 +C883,B582 +C884,B583 +C885,C5C4 +C886,B584 +C887,B585 +C888,B586 +C889,C5C5 +C88A,B587 +C88B,B588 +C88C,B589 +C88D,B58A +C88E,B58B +C88F,B58C +C890,B58D +C891,C5C6 +C893,C5C7 +C894,B58E +C895,C5C8 +C896,C5C9 +C897,C5CA +C898,B58F +C899,B590 +C89A,B591 +C89B,B592 +C89C,B593 +C89D,B594 +C8A1,C5CB +C8A2,B595 +C8A3,B596 +C8A4,B597 +C8A5,B598 +C8A6,B599 +C8A7,B59A +C8A8,B59B +C8A9,B59C +C8AA,B59D +C8AB,B59E +C8AC,B59F +C8AD,B5A0 +C8AE,B641 +C8AF,B642 +C8B0,B643 +C8B1,B644 +C8B3,B645 +C8B4,B646 +C8B5,B647 +C8B6,B648 +C8B7,C5CC +C8B8,B649 +C8B9,B64A +C8BA,B64B +C8BB,B64C +C8BC,B64D +C8BD,B64E +C8C1,B64F +C8C2,B650 +C8C3,B651 +C8C4,B652 +C8C5,B653 +C8C6,B654 +C8C7,B655 +C8C8,B656 +C8C9,B657 +C8CA,B658 +C8CB,B659 +C8CC,B65A +C8CD,B661 +C8CE,B662 +C8CF,B663 +C8D0,B664 +C8D1,B665 +C8D3,B666 +C8D4,B667 +C8D5,B668 +C8D6,B669 +C8D7,B66A +C8D8,B66B +C8D9,B66C +C8DA,B66D +C8DB,B66E +C8DC,B66F +C8DD,B670 +C8E1,C5CD +C8E2,C5CE +C8E3,B671 +C8E4,B672 +C8E5,C5CF +C8E6,B673 +C8E7,B674 +C8E8,B675 +C8E9,C5D0 +C8EA,B676 +C8EB,C5D1 +C8EC,B677 +C8ED,B678 +C8EE,B679 +C8EF,B67A +C8F0,B681 +C8F1,C5D2 +C8F3,C5D3 +C8F4,B682 +C8F5,C5D4 +C8F6,C5D5 +C8F7,C5D6 +C8F8,B683 +C8F9,B684 +C8FA,B685 +C8FB,B686 +C8FC,B687 +C8FD,B688 +C941,C5D7 +C942,C5D8 +C943,B689 +C944,B68A +C945,C5D9 +C946,B68B +C947,B68C +C948,B68D +C949,C5DA +C94A,B68E +C94B,B68F +C94C,B690 +C94D,B691 +C94E,B692 +C94F,B693 +C950,B694 +C951,C5DB +C953,C5DC +C954,B695 +C955,C5DD +C956,B696 +C957,C5DE +C958,B697 +C959,B698 +C95A,B699 +C95B,B69A +C95C,B69B +C95D,B69C +C961,C5DF +C962,B69D +C963,B69E +C964,B69F +C965,C5E0 +C966,B6A0 +C967,B741 +C968,B742 +C969,B743 +C96A,B744 +C96B,B745 +C96C,B746 +C96D,B747 +C96E,B748 +C96F,B749 +C970,B74A +C971,B74B +C973,B74C +C974,B74D +C975,B74E +C976,C5E1 +C977,B74F +C978,B750 +C979,B751 +C97A,B752 +C97B,B753 +C97C,B754 +C97D,B755 +C981,C5E2 +C982,B756 +C983,B757 +C984,B758 +C985,C5E3 +C986,B759 +C987,B75A +C988,B761 +C989,B762 +C98A,B763 +C98B,B764 +C98C,B765 +C98D,B766 +C98E,B767 +C98F,B768 +C990,B769 +C991,B76A +C993,B76B +C994,B76C +C995,B76D +C996,B76E +C997,B76F +C998,B770 +C999,B771 +C99A,B772 +C99B,B773 +C99C,B774 +C99D,B775 +C9A1,C5E4 +C9A2,C5E5 +C9A3,B776 +C9A4,B777 +C9A5,C5E6 +C9A6,B778 +C9A7,B779 +C9A8,B77A +C9A9,C5E7 +C9AA,B781 +C9AB,B782 +C9AC,B783 +C9AD,B784 +C9AE,B785 +C9AF,B786 +C9B0,B787 +C9B1,C5E8 +C9B3,C5E9 +C9B4,B788 +C9B5,C5EA +C9B6,B789 +C9B7,C5EB +C9B8,B78A +C9B9,B78B +C9BA,B78C +C9BB,B78D +C9BC,C5EC +C9BD,B78E +C9C1,C5ED +C9C2,B78F +C9C3,B790 +C9C4,B791 +C9C5,C5EE +C9C6,B792 +C9C7,B793 +C9C8,B794 +C9C9,B795 +C9CA,B796 +C9CB,B797 +C9CC,B798 +C9CD,B799 +C9CE,B79A +C9CF,B79B +C9D0,B79C +C9D1,B79D +C9D3,B79E +C9D4,B79F +C9D5,B7A0 +C9D6,B841 +C9D7,B842 +C9D8,B843 +C9D9,B844 +C9DA,B845 +C9DB,B846 +C9DC,B847 +C9DD,B848 +C9E1,C5EF +C9E2,B849 +C9E3,B84A +C9E4,B84B +C9E5,B84C +C9E6,B84D +C9E7,B84E +C9E8,B84F +C9E9,B850 +C9EA,B851 +C9EB,B852 +C9EC,B853 +C9ED,B854 +C9EE,B855 +C9EF,B856 +C9F0,B857 +C9F1,B858 +C9F3,B859 +C9F4,B85A +C9F5,B861 +C9F6,B862 +C9F7,B863 +C9F8,B864 +C9F9,B865 +C9FA,B866 +C9FB,B867 +C9FC,B868 +C9FD,B869 +CA41,C5F0 +CA42,B86A +CA43,B86B +CA44,B86C +CA45,C5F1 +CA46,B86D +CA47,B86E +CA48,B86F +CA49,B870 +CA4A,B871 +CA4B,B872 +CA4C,B873 +CA4D,B874 +CA4E,B875 +CA4F,B876 +CA50,B877 +CA51,B878 +CA53,B879 +CA54,B87A +CA55,C5F2 +CA56,B881 +CA57,C5F3 +CA58,B882 +CA59,B883 +CA5A,B884 +CA5B,B885 +CA5C,B886 +CA5D,B887 +CA61,C5F4 +CA62,B888 +CA63,B889 +CA64,B88A +CA65,B88B +CA66,B88C +CA67,B88D +CA68,B88E +CA69,B88F +CA6A,B890 +CA6B,B891 +CA6C,B892 +CA6D,B893 +CA6E,B894 +CA6F,B895 +CA70,B896 +CA71,B897 +CA73,B898 +CA74,B899 +CA75,B89A +CA76,B89B +CA77,B89C +CA78,B89D +CA79,B89E +CA7A,B89F +CA7B,B8A0 +CA7C,B941 +CA7D,B942 +CA81,C5F5 +CA82,C5F6 +CA83,B943 +CA84,B944 +CA85,C5F7 +CA86,B945 +CA87,B946 +CA88,B947 +CA89,C5F8 +CA8A,B948 +CA8B,B949 +CA8C,B94A +CA8D,B94B +CA8E,B94C +CA8F,B94D +CA90,B94E +CA91,C5F9 +CA93,C5FA +CA94,B94F +CA95,C5FB +CA96,B950 +CA97,C5FC +CA98,B951 +CA99,B952 +CA9A,B953 +CA9B,B954 +CA9C,B955 +CA9D,B956 +CAA1,C5FD +CAA2,B957 +CAA3,B958 +CAA4,B959 +CAA5,B95A +CAA6,B961 +CAA7,B962 +CAA8,B963 +CAA9,B964 +CAAA,B965 +CAAB,B966 +CAAC,B967 +CAAD,B968 +CAAE,B969 +CAAF,B96A +CAB0,B96B +CAB1,B96C +CAB3,B96D +CAB4,B96E +CAB5,B96F +CAB6,C5FE +CAB7,B970 +CAB8,B971 +CAB9,B972 +CABA,B973 +CABB,B974 +CABC,B975 +CABD,B976 +CAC1,C6A1 +CAC2,B977 +CAC3,B978 +CAC4,B979 +CAC5,B97A +CAC6,B981 +CAC7,B982 +CAC8,B983 +CAC9,B984 +CACA,B985 +CACB,B986 +CACC,B987 +CACD,B988 +CACE,B989 +CACF,B98A +CAD0,B98B +CAD1,B98C +CAD3,B98D +CAD4,B98E +CAD5,B98F +CAD6,B990 +CAD7,B991 +CAD8,B992 +CAD9,B993 +CADA,B994 +CADB,B995 +CADC,B996 +CADD,B997 +CAE1,C6A2 +CAE2,C6A3 +CAE3,B998 +CAE4,B999 +CAE5,C6A4 +CAE6,B99A +CAE7,B99B +CAE8,B99C +CAE9,C6A5 +CAEA,B99D +CAEB,B99E +CAEC,B99F +CAED,B9A0 +CAEE,BA41 +CAEF,BA42 +CAF0,BA43 +CAF1,C6A6 +CAF3,C6A7 +CAF4,BA44 +CAF5,BA45 +CAF6,BA46 +CAF7,C6A8 +CAF8,BA47 +CAF9,BA48 +CAFA,BA49 +CAFB,BA4A +CAFC,BA4B +CAFD,BA4C +CB41,C6A9 +CB42,BA4D +CB43,BA4E +CB44,BA4F +CB45,C6AA +CB46,BA50 +CB47,BA51 +CB48,BA52 +CB49,C6AB +CB4A,BA53 +CB4B,BA54 +CB4C,BA55 +CB4D,BA56 +CB4E,BA57 +CB4F,BA58 +CB50,BA59 +CB51,C6AC +CB53,BA5A +CB54,BA61 +CB55,BA62 +CB56,BA63 +CB57,C6AD +CB58,BA64 +CB59,BA65 +CB5A,BA66 +CB5B,BA67 +CB5C,BA68 +CB5D,BA69 +CB61,C6AE +CB62,C6AF +CB63,BA6A +CB64,BA6B +CB65,C6B0 +CB66,BA6C +CB67,BA6D +CB68,C6B1 +CB69,C6B2 +CB6A,BA6E +CB6B,C6B3 +CB6C,BA6F +CB6D,BA70 +CB6E,BA71 +CB6F,BA72 +CB70,BA73 +CB71,C6B4 +CB73,C6B5 +CB74,BA74 +CB75,C6B6 +CB76,BA75 +CB77,BA76 +CB78,BA77 +CB79,BA78 +CB7A,BA79 +CB7B,BA7A +CB7C,BA81 +CB7D,BA82 +CB81,C6B7 +CB82,BA83 +CB83,BA84 +CB84,BA85 +CB85,C6B8 +CB86,BA86 +CB87,BA87 +CB88,BA88 +CB89,C6B9 +CB8A,BA89 +CB8B,BA8A +CB8C,BA8B +CB8D,BA8C +CB8E,BA8D +CB8F,BA8E +CB90,BA8F +CB91,C6BA +CB93,C6BB +CB94,BA90 +CB95,BA91 +CB96,BA92 +CB97,BA93 +CB98,BA94 +CB99,BA95 +CB9A,BA96 +CB9B,BA97 +CB9C,BA98 +CB9D,BA99 +CBA1,C6BC +CBA2,C6BD +CBA3,BA9A +CBA4,BA9B +CBA5,C6BE +CBA6,BA9C +CBA7,BA9D +CBA8,BA9E +CBA9,C6BF +CBAA,BA9F +CBAB,BAA0 +CBAC,BB41 +CBAD,BB42 +CBAE,BB43 +CBAF,BB44 +CBB0,BB45 +CBB1,C6C0 +CBB3,C6C1 +CBB4,BB46 +CBB5,C6C2 +CBB6,BB47 +CBB7,C6C3 +CBB8,BB48 +CBB9,BB49 +CBBA,BB4A +CBBB,BB4B +CBBC,BB4C +CBBD,BB4D +CC41,A4BD +CC61,C6C4 +CC62,C6C5 +CC63,C6C6 +CC64,BB4E +CC65,C6C7 +CC66,BB4F +CC67,BB50 +CC68,BB51 +CC69,C6C8 +CC6A,BB52 +CC6B,C6C9 +CC6C,BB53 +CC6D,BB54 +CC6E,BB55 +CC6F,BB56 +CC70,BB57 +CC71,C6CA +CC73,C6CB +CC74,BB58 +CC75,C6CC +CC76,C6CD +CC77,C6CE +CC78,BB59 +CC79,BB5A +CC7A,BB61 +CC7B,C6CF +CC7C,BB62 +CC7D,BB63 +CC81,C6D0 +CC82,C6D1 +CC83,BB64 +CC84,BB65 +CC85,C6D2 +CC86,BB66 +CC87,BB67 +CC88,BB68 +CC89,C6D3 +CC8A,BB69 +CC8B,BB6A +CC8C,BB6B +CC8D,BB6C +CC8E,BB6D +CC8F,BB6E +CC90,BB6F +CC91,C6D4 +CC93,C6D5 +CC94,BB70 +CC95,C6D6 +CC96,C6D7 +CC97,C6D8 +CC98,BB71 +CC99,BB72 +CC9A,BB73 +CC9B,BB74 +CC9C,BB75 +CC9D,BB76 +CCA1,C6D9 +CCA2,C6DA +CCA3,BB77 +CCA4,BB78 +CCA5,BB79 +CCA6,BB7A +CCA7,BB81 +CCA8,BB82 +CCA9,BB83 +CCAA,BB84 +CCAB,BB85 +CCAC,BB86 +CCAD,BB87 +CCAE,BB88 +CCAF,BB89 +CCB0,BB8A +CCB1,BB8B +CCB3,BB8C +CCB4,BB8D +CCB5,BB8E +CCB6,BB8F +CCB7,BB90 +CCB8,BB91 +CCB9,BB92 +CCBA,BB93 +CCBB,BB94 +CCBC,BB95 +CCBD,BB96 +CCC1,BB97 +CCC2,BB98 +CCC3,BB99 +CCC4,BB9A +CCC5,BB9B +CCC6,BB9C +CCC7,BB9D +CCC8,BB9E +CCC9,BB9F +CCCA,BBA0 +CCCB,BC41 +CCCC,BC42 +CCCD,BC43 +CCCE,BC44 +CCCF,BC45 +CCD0,BC46 +CCD1,BC47 +CCD3,BC48 +CCD4,BC49 +CCD5,BC4A +CCD6,BC4B +CCD7,BC4C +CCD8,BC4D +CCD9,BC4E +CCDA,BC4F +CCDB,BC50 +CCDC,BC51 +CCDD,BC52 +CCE1,C6DB +CCE2,C6DC +CCE3,BC53 +CCE4,BC54 +CCE5,C6DD +CCE6,BC55 +CCE7,BC56 +CCE8,BC57 +CCE9,C6DE +CCEA,BC58 +CCEB,BC59 +CCEC,BC5A +CCED,BC61 +CCEE,BC62 +CCEF,BC63 +CCF0,BC64 +CCF1,C6DF +CCF3,C6E0 +CCF4,BC65 +CCF5,C6E1 +CCF6,C6E2 +CCF7,C6E3 +CCF8,BC66 +CCF9,BC67 +CCFA,BC68 +CCFB,BC69 +CCFC,BC6A +CCFD,BC6B +CD41,C6E4 +CD42,C6E5 +CD43,BC6C +CD44,BC6D +CD45,C6E6 +CD46,BC6E +CD47,BC6F +CD48,BC70 +CD49,C6E7 +CD4A,BC71 +CD4B,BC72 +CD4C,BC73 +CD4D,BC74 +CD4E,BC75 +CD4F,BC76 +CD50,BC77 +CD51,C6E8 +CD53,C6E9 +CD54,BC78 +CD55,C6EA +CD56,BC79 +CD57,C6EB +CD58,BC7A +CD59,BC81 +CD5A,BC82 +CD5B,BC83 +CD5C,BC84 +CD5D,BC85 +CD61,C6EC +CD62,BC86 +CD63,BC87 +CD64,BC88 +CD65,C6ED +CD66,BC89 +CD67,BC8A +CD68,BC8B +CD69,C6EE +CD6A,BC8C +CD6B,BC8D +CD6C,BC8E +CD6D,BC8F +CD6E,BC90 +CD6F,BC91 +CD70,BC92 +CD71,C6EF +CD73,C6F0 +CD74,BC93 +CD75,BC94 +CD76,C6F1 +CD77,C6F2 +CD78,BC95 +CD79,BC96 +CD7A,BC97 +CD7B,BC98 +CD7C,BC99 +CD7D,BC9A +CD81,C6F3 +CD82,BC9B +CD83,BC9C +CD84,BC9D +CD85,BC9E +CD86,BC9F +CD87,BCA0 +CD88,BD41 +CD89,C6F4 +CD8A,BD42 +CD8B,BD43 +CD8C,BD44 +CD8D,BD45 +CD8E,BD46 +CD8F,BD47 +CD90,BD48 +CD91,BD49 +CD93,C6F5 +CD94,BD4A +CD95,C6F6 +CD96,BD4B +CD97,BD4C +CD98,BD4D +CD99,BD4E +CD9A,BD4F +CD9B,BD50 +CD9C,BD51 +CD9D,BD52 +CDA1,C6F7 +CDA2,C6F8 +CDA3,BD53 +CDA4,BD54 +CDA5,C6F9 +CDA6,BD55 +CDA7,BD56 +CDA8,BD57 +CDA9,C6FA +CDAA,BD58 +CDAB,BD59 +CDAC,BD5A +CDAD,BD61 +CDAE,BD62 +CDAF,BD63 +CDB0,BD64 +CDB1,C6FB +CDB3,C6FC +CDB4,BD65 +CDB5,C6FD +CDB6,BD66 +CDB7,C6FE +CDB8,BD67 +CDB9,BD68 +CDBA,BD69 +CDBB,BD6A +CDBC,BD6B +CDBD,BD6C +CDC1,C7A1 +CDC2,BD6D +CDC3,BD6E +CDC4,BD6F +CDC5,BD70 +CDC6,BD71 +CDC7,BD72 +CDC8,BD73 +CDC9,BD74 +CDCA,BD75 +CDCB,BD76 +CDCC,BD77 +CDCD,BD78 +CDCE,BD79 +CDCF,BD7A +CDD0,BD81 +CDD1,BD82 +CDD3,BD83 +CDD4,BD84 +CDD5,BD85 +CDD6,BD86 +CDD7,C7A2 +CDD8,BD87 +CDD9,BD88 +CDDA,BD89 +CDDB,BD8A +CDDC,BD8B +CDDD,BD8C +CDE1,BD8D +CDE2,BD8E +CDE3,BD8F +CDE4,BD90 +CDE5,BD91 +CDE6,BD92 +CDE7,BD93 +CDE8,BD94 +CDE9,BD95 +CDEA,BD96 +CDEB,BD97 +CDEC,BD98 +CDED,BD99 +CDEE,BD9A +CDEF,BD9B +CDF0,BD9C +CDF1,BD9D +CDF3,BD9E +CDF4,BD9F +CDF5,BDA0 +CDF6,BE41 +CDF7,BE42 +CDF8,BE43 +CDF9,BE44 +CDFA,BE45 +CDFB,BE46 +CDFC,BE47 +CDFD,BE48 +CE41,C7A3 +CE42,BE49 +CE43,BE4A +CE44,BE4B +CE45,C7A4 +CE46,BE4C +CE47,BE4D +CE48,BE4E +CE49,BE4F +CE4A,BE50 +CE4B,BE51 +CE4C,BE52 +CE4D,BE53 +CE4E,BE54 +CE4F,BE55 +CE50,BE56 +CE51,BE57 +CE53,BE58 +CE54,BE59 +CE55,BE5A +CE56,BE61 +CE57,BE62 +CE58,BE63 +CE59,BE64 +CE5A,BE65 +CE5B,BE66 +CE5C,BE67 +CE5D,BE68 +CE61,C7A5 +CE62,BE69 +CE63,BE6A +CE64,BE6B +CE65,C7A6 +CE66,BE6C +CE67,BE6D +CE68,BE6E +CE69,C7A7 +CE6A,BE6F +CE6B,BE70 +CE6C,BE71 +CE6D,BE72 +CE6E,BE73 +CE6F,BE74 +CE70,BE75 +CE71,BE76 +CE73,C7A8 +CE74,BE77 +CE75,C7A9 +CE76,BE78 +CE77,BE79 +CE78,BE7A +CE79,BE81 +CE7A,BE82 +CE7B,BE83 +CE7C,BE84 +CE7D,BE85 +CE81,C7AA +CE82,C7AB +CE83,BE86 +CE84,BE87 +CE85,C7AC +CE86,BE88 +CE87,BE89 +CE88,C7AD +CE89,C7AE +CE8A,BE8A +CE8B,C7AF +CE8C,BE8B +CE8D,BE8C +CE8E,BE8D +CE8F,BE8E +CE90,BE8F +CE91,C7B0 +CE93,C7B1 +CE94,BE90 +CE95,C7B2 +CE96,BE91 +CE97,C7B3 +CE98,BE92 +CE99,BE93 +CE9A,BE94 +CE9B,BE95 +CE9C,BE96 +CE9D,BE97 +CEA1,C7B4 +CEA2,BE98 +CEA3,BE99 +CEA4,BE9A +CEA5,BE9B +CEA6,BE9C +CEA7,BE9D +CEA8,BE9E +CEA9,BE9F +CEAA,BEA0 +CEAB,BF41 +CEAC,BF42 +CEAD,BF43 +CEAE,BF44 +CEAF,BF45 +CEB0,BF46 +CEB1,BF47 +CEB3,BF48 +CEB4,BF49 +CEB5,BF4A +CEB6,BF4B +CEB7,C7B5 +CEB8,BF4C +CEB9,BF4D +CEBA,BF4E +CEBB,BF4F +CEBC,BF50 +CEBD,BF51 +CEC1,BF52 +CEC2,BF53 +CEC3,BF54 +CEC4,BF55 +CEC5,BF56 +CEC6,BF57 +CEC7,BF58 +CEC8,BF59 +CEC9,BF5A +CECA,BF61 +CECB,BF62 +CECC,BF63 +CECD,BF64 +CECE,BF65 +CECF,BF66 +CED0,BF67 +CED1,BF68 +CED3,BF69 +CED4,BF6A +CED5,BF6B +CED6,BF6C +CED7,BF6D +CED8,BF6E +CED9,BF6F +CEDA,BF70 +CEDB,BF71 +CEDC,BF72 +CEDD,BF73 +CEE1,C7B6 +CEE2,BF74 +CEE3,BF75 +CEE4,BF76 +CEE5,C7B7 +CEE6,BF77 +CEE7,BF78 +CEE8,BF79 +CEE9,C7B8 +CEEA,BF7A +CEEB,BF81 +CEEC,BF82 +CEED,BF83 +CEEE,BF84 +CEEF,BF85 +CEF0,BF86 +CEF1,C7B9 +CEF3,BF87 +CEF4,BF88 +CEF5,C7BA +CEF6,BF89 +CEF7,BF8A +CEF8,BF8B +CEF9,BF8C +CEFA,BF8D +CEFB,BF8E +CEFC,BF8F +CEFD,BF90 +CF41,C7BB +CF42,BF91 +CF43,BF92 +CF44,BF93 +CF45,C7BC +CF46,BF94 +CF47,BF95 +CF48,BF96 +CF49,C7BD +CF4A,BF97 +CF4B,BF98 +CF4C,BF99 +CF4D,BF9A +CF4E,BF9B +CF4F,BF9C +CF50,BF9D +CF51,C7BE +CF53,BF9E +CF54,BF9F +CF55,C7BF +CF56,BFA0 +CF57,C7C0 +CF58,C041 +CF59,C042 +CF5A,C043 +CF5B,C044 +CF5C,C045 +CF5D,C046 +CF61,C7C1 +CF62,C047 +CF63,C048 +CF64,C049 +CF65,C7C2 +CF66,C04A +CF67,C04B +CF68,C04C +CF69,C7C3 +CF6A,C04D +CF6B,C04E +CF6C,C04F +CF6D,C050 +CF6E,C051 +CF6F,C052 +CF70,C053 +CF71,C7C4 +CF73,C7C5 +CF74,C054 +CF75,C7C6 +CF76,C055 +CF77,C056 +CF78,C057 +CF79,C058 +CF7A,C059 +CF7B,C05A +CF7C,C061 +CF7D,C062 +CF81,C063 +CF82,C064 +CF83,C065 +CF84,C066 +CF85,C067 +CF86,C068 +CF87,C069 +CF88,C06A +CF89,C06B +CF8A,C06C +CF8B,C06D +CF8C,C06E +CF8D,C06F +CF8E,C070 +CF8F,C071 +CF90,C072 +CF91,C073 +CF93,C074 +CF94,C075 +CF95,C076 +CF96,C077 +CF97,C078 +CF98,C079 +CF99,C07A +CF9A,C081 +CF9B,C082 +CF9C,C083 +CF9D,C084 +CFA1,C7C7 +CFA2,C7C8 +CFA3,C085 +CFA4,C086 +CFA5,C7C9 +CFA6,C087 +CFA7,C088 +CFA8,C089 +CFA9,C7CA +CFAA,C08A +CFAB,C08B +CFAC,C08C +CFAD,C08D +CFAE,C08E +CFAF,C08F +CFB0,C090 +CFB1,C7CB +CFB3,C7CC +CFB4,C091 +CFB5,C7CD +CFB6,C092 +CFB7,C7CE +CFB8,C093 +CFB9,C094 +CFBA,C095 +CFBB,C096 +CFBC,C097 +CFBD,C098 +D041,A4BE +D061,C7CF +D062,C7D0 +D063,C099 +D064,C09A +D065,C7D1 +D066,C09B +D067,C09C +D068,C09D +D069,C7D2 +D06A,C09E +D06B,C09F +D06C,C0A0 +D06D,C141 +D06E,C7D3 +D06F,C142 +D070,C143 +D071,C7D4 +D073,C7D5 +D074,C144 +D075,C7D6 +D076,C145 +D077,C7D7 +D078,C146 +D079,C147 +D07A,C148 +D07B,C149 +D07C,C14A +D07D,C14B +D081,C7D8 +D082,C7D9 +D083,C14C +D084,C14D +D085,C7DA +D086,C14E +D087,C14F +D088,C150 +D089,C7DB +D08A,C151 +D08B,C152 +D08C,C153 +D08D,C154 +D08E,C155 +D08F,C156 +D090,C157 +D091,C7DC +D093,C7DD +D094,C158 +D095,C7DE +D096,C7DF +D097,C7E0 +D098,C159 +D099,C15A +D09A,C161 +D09B,C162 +D09C,C163 +D09D,C164 +D0A1,C7E1 +D0A2,C165 +D0A3,C166 +D0A4,C167 +D0A5,C168 +D0A6,C169 +D0A7,C16A +D0A8,C16B +D0A9,C16C +D0AA,C16D +D0AB,C16E +D0AC,C16F +D0AD,C170 +D0AE,C171 +D0AF,C172 +D0B0,C173 +D0B1,C174 +D0B3,C175 +D0B4,C176 +D0B5,C177 +D0B6,C178 +D0B7,C7E2 +D0B8,C179 +D0B9,C17A +D0BA,C181 +D0BB,C182 +D0BC,C183 +D0BD,C184 +D0C1,C185 +D0C2,C186 +D0C3,C187 +D0C4,C188 +D0C5,C189 +D0C6,C18A +D0C7,C18B +D0C8,C18C +D0C9,C18D +D0CA,C18E +D0CB,C18F +D0CC,C190 +D0CD,C191 +D0CE,C192 +D0CF,C193 +D0D0,C194 +D0D1,C195 +D0D3,C196 +D0D4,C197 +D0D5,C198 +D0D6,C199 +D0D7,C19A +D0D8,C19B +D0D9,C19C +D0DA,C19D +D0DB,C19E +D0DC,C19F +D0DD,C1A0 +D0E1,C7E3 +D0E2,C7E4 +D0E3,C241 +D0E4,C242 +D0E5,C7E5 +D0E6,C243 +D0E7,C244 +D0E8,C245 +D0E9,C7E6 +D0EA,C246 +D0EB,C7E7 +D0EC,C247 +D0ED,C248 +D0EE,C249 +D0EF,C24A +D0F0,C24B +D0F1,C7E8 +D0F3,C7E9 +D0F4,C24C +D0F5,C7EA +D0F6,C24D +D0F7,C7EB +D0F8,C24E +D0F9,C24F +D0FA,C250 +D0FB,C251 +D0FC,C252 +D0FD,C253 +D141,C7EC +D142,C7ED +D143,C254 +D144,C255 +D145,C7EE +D146,C256 +D147,C257 +D148,C258 +D149,C7EF +D14A,C259 +D14B,C25A +D14C,C261 +D14D,C262 +D14E,C263 +D14F,C264 +D150,C265 +D151,C7F0 +D153,C7F1 +D154,C266 +D155,C7F2 +D156,C267 +D157,C7F3 +D158,C268 +D159,C269 +D15A,C26A +D15B,C26B +D15C,C26C +D15D,C26D +D161,C7F4 +D162,C7F5 +D163,C26E +D164,C26F +D165,C7F6 +D166,C270 +D167,C271 +D168,C272 +D169,C7F7 +D16A,C273 +D16B,C274 +D16C,C275 +D16D,C276 +D16E,C277 +D16F,C278 +D170,C279 +D171,C7F8 +D173,C7F9 +D174,C27A +D175,C7FA +D176,C7FB +D177,C7FC +D178,C281 +D179,C282 +D17A,C283 +D17B,C284 +D17C,C285 +D17D,C286 +D181,C7FD +D182,C287 +D183,C288 +D184,C289 +D185,C7FE +D186,C28A +D187,C28B +D188,C28C +D189,C8A1 +D18A,C28D +D18B,C28E +D18C,C28F +D18D,C290 +D18E,C291 +D18F,C292 +D190,C293 +D191,C294 +D193,C8A2 +D194,C295 +D195,C296 +D196,C297 +D197,C298 +D198,C299 +D199,C29A +D19A,C29B +D19B,C29C +D19C,C29D +D19D,C29E +D1A1,C8A3 +D1A2,C8A4 +D1A3,C29F +D1A4,C2A0 +D1A5,C8A5 +D1A6,C341 +D1A7,C342 +D1A8,C343 +D1A9,C8A6 +D1AA,C344 +D1AB,C345 +D1AC,C346 +D1AD,C347 +D1AE,C8A7 +D1AF,C348 +D1B0,C349 +D1B1,C8A8 +D1B3,C8A9 +D1B4,C34A +D1B5,C8AA +D1B6,C34B +D1B7,C8AB +D1B8,C34C +D1B9,C34D +D1BA,C34E +D1BB,C8AC +D1BC,C34F +D1BD,C350 +D1C1,C8AD +D1C2,C8AE +D1C3,C351 +D1C4,C352 +D1C5,C8AF +D1C6,C353 +D1C7,C354 +D1C8,C355 +D1C9,C8B0 +D1CA,C356 +D1CB,C357 +D1CC,C358 +D1CD,C359 +D1CE,C35A +D1CF,C361 +D1D0,C362 +D1D1,C363 +D1D3,C364 +D1D4,C365 +D1D5,C8B1 +D1D6,C366 +D1D7,C8B2 +D1D8,C367 +D1D9,C368 +D1DA,C369 +D1DB,C36A +D1DC,C36B +D1DD,C36C +D1E1,C8B3 +D1E2,C8B4 +D1E3,C36D +D1E4,C36E +D1E5,C8B5 +D1E6,C36F +D1E7,C370 +D1E8,C371 +D1E9,C372 +D1EA,C373 +D1EB,C374 +D1EC,C375 +D1ED,C376 +D1EE,C377 +D1EF,C378 +D1F0,C379 +D1F1,C37A +D1F3,C381 +D1F4,C382 +D1F5,C8B6 +D1F6,C383 +D1F7,C8B7 +D1F8,C384 +D1F9,C385 +D1FA,C386 +D1FB,C387 +D1FC,C388 +D1FD,C389 +D241,C8B8 +D242,C8B9 +D243,C38A +D244,C38B +D245,C8BA +D246,C38C +D247,C38D +D248,C38E +D249,C8BB +D24A,C38F +D24B,C390 +D24C,C391 +D24D,C392 +D24E,C393 +D24F,C394 +D250,C395 +D251,C396 +D253,C8BC +D254,C397 +D255,C8BD +D256,C398 +D257,C8BE +D258,C399 +D259,C39A +D25A,C39B +D25B,C39C +D25C,C39D +D25D,C39E +D261,C8BF +D262,C39F +D263,C3A0 +D264,C441 +D265,C8C0 +D266,C442 +D267,C443 +D268,C444 +D269,C8C1 +D26A,C445 +D26B,C446 +D26C,C447 +D26D,C448 +D26E,C449 +D26F,C44A +D270,C44B +D271,C44C +D273,C8C2 +D274,C44D +D275,C8C3 +D276,C44E +D277,C44F +D278,C450 +D279,C451 +D27A,C452 +D27B,C453 +D27C,C454 +D27D,C455 +D281,C8C4 +D282,C8C5 +D283,C456 +D284,C457 +D285,C8C6 +D286,C458 +D287,C459 +D288,C45A +D289,C8C7 +D28A,C461 +D28B,C462 +D28C,C463 +D28D,C464 +D28E,C8C8 +D28F,C465 +D290,C466 +D291,C8C9 +D293,C467 +D294,C468 +D295,C8CA +D296,C469 +D297,C8CB +D298,C46A +D299,C46B +D29A,C46C +D29B,C46D +D29C,C46E +D29D,C46F +D2A1,C8CC +D2A2,C470 +D2A3,C471 +D2A4,C472 +D2A5,C8CD +D2A6,C473 +D2A7,C474 +D2A8,C475 +D2A9,C8CE +D2AA,C476 +D2AB,C477 +D2AC,C478 +D2AD,C479 +D2AE,C47A +D2AF,C481 +D2B0,C482 +D2B1,C8CF +D2B3,C483 +D2B4,C484 +D2B5,C485 +D2B6,C486 +D2B7,C8D0 +D2B8,C487 +D2B9,C488 +D2BA,C489 +D2BB,C48A +D2BC,C48B +D2BD,C48C +D2C1,C8D1 +D2C2,C8D2 +D2C3,C48D +D2C4,C48E +D2C5,C8D3 +D2C6,C48F +D2C7,C490 +D2C8,C491 +D2C9,C8D4 +D2CA,C492 +D2CB,C493 +D2CC,C494 +D2CD,C495 +D2CE,C496 +D2CF,C497 +D2D0,C498 +D2D1,C499 +D2D3,C49A +D2D4,C49B +D2D5,C49C +D2D6,C49D +D2D7,C8D5 +D2D8,C49E +D2D9,C49F +D2DA,C4A0 +D2DB,C541 +D2DC,C542 +D2DD,C543 +D2E1,C8D6 +D2E2,C8D7 +D2E3,C544 +D2E4,C545 +D2E5,C8D8 +D2E6,C546 +D2E7,C547 +D2E8,C548 +D2E9,C8D9 +D2EA,C549 +D2EB,C54A +D2EC,C54B +D2ED,C54C +D2EE,C54D +D2EF,C54E +D2F0,C54F +D2F1,C8DA +D2F3,C8DB +D2F4,C550 +D2F5,C8DC +D2F6,C551 +D2F7,C8DD +D2F8,C552 +D2F9,C553 +D2FA,C554 +D2FB,C555 +D2FC,C556 +D2FD,C557 +D341,C8DE +D342,C8DF +D343,C558 +D344,C559 +D345,C8E0 +D346,C55A +D347,C561 +D348,C562 +D349,C8E1 +D34A,C563 +D34B,C564 +D34C,C565 +D34D,C566 +D34E,C567 +D34F,C568 +D350,C569 +D351,C8E2 +D353,C56A +D354,C56B +D355,C8E3 +D356,C56C +D357,C8E4 +D358,C56D +D359,C56E +D35A,C56F +D35B,C570 +D35C,C571 +D35D,C572 +D361,C8E5 +D362,C8E6 +D363,C573 +D364,C574 +D365,C8E7 +D366,C575 +D367,C8E8 +D368,C8E9 +D369,C8EA +D36A,C8EB +D36B,C576 +D36C,C577 +D36D,C578 +D36E,C579 +D36F,C57A +D370,C581 +D371,C8EC +D373,C8ED +D374,C582 +D375,C8EE +D376,C583 +D377,C8EF +D378,C584 +D379,C585 +D37A,C586 +D37B,C8F0 +D37C,C587 +D37D,C588 +D381,C8F1 +D382,C589 +D383,C58A +D384,C58B +D385,C8F2 +D386,C58C +D387,C58D +D388,C58E +D389,C8F3 +D38A,C58F +D38B,C590 +D38C,C591 +D38D,C592 +D38E,C593 +D38F,C594 +D390,C595 +D391,C8F4 +D393,C8F5 +D394,C596 +D395,C597 +D396,C598 +D397,C8F6 +D398,C599 +D399,C59A +D39A,C59B +D39B,C59C +D39C,C59D +D39D,C59E +D3A1,C8F7 +D3A2,C8F8 +D3A3,C59F +D3A4,C5A0 +D3A5,C8F9 +D3A6,C641 +D3A7,C642 +D3A8,C643 +D3A9,C8FA +D3AA,C644 +D3AB,C645 +D3AC,C646 +D3AD,C647 +D3AE,C648 +D3AF,C649 +D3B0,C64A +D3B1,C8FB +D3B3,C8FC +D3B4,C64B +D3B5,C8FD +D3B6,C64C +D3B7,C8FE +D3B8,C64D +D3B9,C64E +D3BA,C64F +D3BB,C650 +D3BC,C651 +D3BD,C652 \ No newline at end of file diff --git a/src/main/java/com/eactive/eai/transformer/util/iconv.tab b/src/main/java/com/eactive/eai/transformer/util/iconv.tab new file mode 100644 index 0000000..673c436 --- /dev/null +++ b/src/main/java/com/eactive/eai/transformer/util/iconv.tab @@ -0,0 +1,243 @@ +*0xA1A1 - 0xA1FE:A2E=,4040,4141,4142,4143,4144,4145,4146,4147,4148,4149,414A,414B,42A1,414D,414E,414F,4150,4151,4152,4153,4154,4155,4156,4157,4158,4159,415A,415B,415C,415D,415E,415F,418D,418E,418F,4163,4164,4165,4166,4167,4168,4190,424A,416B,416C,4191,4192,4193,4194,4195,4196,4197,4198,4199,4176,4177,4178,4179,417A,417B,417C,417D,417E,417F,4180,4181,4182,4183,4184,4185,4186,4187,4188,4189,418A,419A,419B,419C,419D,4941,4942,4943,4944,4945,4946,4947,4948,4949,494A,494B,494C,494D,494E,425F, +*0xA2A1 - 0xA2FE:A2E=,494F,4950,4951,4952,4953,4954,4955,4956,4957,4958,4959,495A,495B,495C,495D,495E,495F,4960,4961,4962,4963,4964,4965,4966,4967,4968,4969,496A,496B,496C,496D,496E,496F,4970,4971,4972,4973,4974,4975,4976,4977,4978,4979,497A,497B,497C,497D,497E,497F,4980,4981,4982,4983,4984,4985,4986,4987,4988,4989,498A,498B,498C,498D,498E,498F,4990,4991,4992,4993,4994,4995,4996,4997,4998,4999,499A,499B,499C,499D,499E,499F,49A0,49A1,49A2,49A3,49A4,49A5,49A6,49A7,49A8,49A9,49AA,49AB,49AC, +*0xA3A1 - 0xA3FE:A2E=,425A,4994,427B,425B,426C,4250,427D,424D,425D,425C,424E,426B,4260,424B,4261,42F0,42F1,42F2,42F3,42F4,42F5,42F6,42F7,42F8,42F9,427A,425E,424C,427E,426E,426F,427C,42C1,42C2,42C3,42C4,42C5,42C6,42C7,42C8,42C9,42D1,42D2,42D3,42D4,42D5,42D6,42D7,42D8,42D9,42E2,42E3,42E4,42E5,42E6,42E7,42E8,42E9,418B,42E0,418C,416A,426D,4279,4281,4282,4283,4284,4285,4286,4287,4288,4289,4291,4292,4293,4294,4295,4296,4297,4298,4299,42A2,42A3,42A4,42A5,42A6,42A7,42A8,42A9,42C0,424F,42D0,414C, +*0xA4A1 - 0xA4FE:A2E=,8841,8C41,8444,9041,8446,8447,9441,9841,9C41,844A,844B,844C,844D,844E,844F,8450,A041,A441,A841,8454,AC41,B041,B441,B841,BC41,C041,C441,C841,CC41,D041,8461,8481,84A1,84C1,84E1,8541,8561,8581,85A1,85C1,85E1,8641,8661,8681,86A1,86C1,86E1,8741,8761,8781,87A1,8441,4341,4342,4343,4344,4345,4346,4347,4348,4349,434A,434B,434C,434D,434E,434F,4350,4351,4352,4353,4354,4355,4356,4357,4358,4359,435A,435B,435C,435D,435E,435F,4360,4361,4362,4363,4364,4365,4366,4367,4368,4369,436A, +*0xA5A1 - 0xA5FE:A2E=,4641,4642,4643,4644,4645,4646,4647,4648,4649,464A,464B,464C,464D,464E,464F,4650,4651,4652,4653,4654,4655,4656,4657,4658,4659,465A,465B,465C,465D,465E,465F,4660,4661,4662,4663,4664,4665,4666,4667,4668,4669,466A,466B,466C,466D,466E,466F,4670,4671,4672,4673,4674,4675,4676,4677,4678,4679,467A,467B,467C,467D,467E,467F,4680,4681,4682,4683,4684,4685,4686,4687,4688,4689,468A,468B,468C,468D,468E,468F,4690,4691,4692,4693,4694,4695,4696,4697,4698,4699,469A,469B,469C,469D,469E, +*0xA6A1 - 0xA6FE:A2E=,4741,4742,4743,4744,4745,4746,4747,4748,4749,474A,474B,474C,474D,474E,474F,4750,4751,4752,4753,4754,4755,4756,4757,4758,4759,475A,475B,475C,475D,475E,475F,4760,4761,4762,4763,4764,4765,4766,4767,4768,4769,476A,476B,476C,476D,476E,476F,4770,4771,4772,4773,4774,4775,4776,4777,4778,4779,477A,477B,477C,477D,477E,477F,4780,4781,4782,4783,4784,4785,4786,4787,4788,4789,478A,478B,478C,478D,478E,478F,4790,4791,4792,4793,4794,4795,4796,4797,4798,4799,479A,479B,479C,479D,479E, +*0xA7A1 - 0xA7FE:A2E=,4841,416D,416E,416F,4842,4170,4843,4844,4845,4846,4847,4848,4849,4171,4172,4173,484A,484B,484C,484D,484E,484F,4174,4175,4850,4851,4852,4853,4854,4855,4856,4857,4858,4859,485A,485B,485C,485D,485E,485F,4860,4861,4862,4863,4864,4865,4866,4867,4868,4869,486A,486B,486C,486D,486E,486F,4870,4871,4872,4873,4874,4875,4876,4877,4878,4879,487A,487B,487C,487D,487E,487F,4880,4881,4882,4883,4884,4885,4886,4887,4888,4889,488A,488B,488C,488D,488E,488F,4890,4891,4892,4893,4894,4895, +*0xA8A1 - 0xA8FE:A2E=,4B41,4B42,4B43,4B44,4B45,4B46,4B47,4B48,4B49,4B4A,4B4B,4B4C,4B4D,4B4E,4B4F,4B50,4B51,4B52,4B53,4B54,4B55,4B56,4B57,4B58,4B59,4B5A,4B5B,4B5C,4B5D,4B5E,4B5F,4B60,4B61,4B62,4B63,4B64,4B65,4B66,4B67,4B68,4B69,4B6A,4B6B,4B6C,4B6D,4B6E,4B6F,4B70,4B71,4B72,4B73,4B74,4B75,4B76,4B77,4B78,4B79,4B7A,4B7B,4B7C,4B7D,4B7E,4B7F,4B80,4B81,4B82,4B83,4B84,4B85,4B86,4B87,4B88,4B89,4B8A,4B8B,4B8C,4B8D,4B8E,4B8F,4B90,4B91,4B92,4B93,4B94,4B95,4B96,4B97,4B98,4B99,4B9A,4B9B,4B9C,4B9D,4B9E, +*0xA9A1 - 0xA9FE:A2E=,4BA0,4BA1,4BA2,4BA3,4BA4,4BA5,4BA6,4BA7,4BA8,4BA9,4BAA,4BAB,4BAC,4BAD,4BAE,4BAF,4BB0,4BB1,4BB2,4BB3,4BB4,4BB5,4BB6,4BB7,4BB8,4BB9,4BBA,4BBB,4BBC,4BBD,4BBE,4BBF,4BC0,4BC1,4BC2,4BC3,4BC4,4BC5,4BC6,4BC7,4BC8,4BC9,4BCA,4BCB,4BCC,4BCD,4BCE,4BCF,4BD0,4BD1,4BD2,4BD3,4BD4,4BD5,4BD6,4BD7,4BD8,4BD9,4BDA,4BDB,4BDC,4BDD,4BDE,4BDF,4BE0,4BE1,4BE2,4BE3,4BE4,4BE5,4BE6,4BE7,4BE8,4BE9,4BEA,4BEB,4BEC,4BED,4BEE,4BEF,4BF0,4BF1,4BF2,4BF3,4BF4,4BF5,4BF6,4BF7,4BF8,4BF9,4BFA,4BFB,4BFC,4BFD, +*0xAAA1 - 0xAAFE:A2E=,4441,4442,4443,4444,4445,4446,4447,4448,4449,444A,444B,444C,444D,444E,444F,4450,4451,4452,4453,4454,4455,4456,4457,4458,4459,445A,445B,445C,445D,445E,445F,4460,4461,4462,4463,4464,4465,4466,4467,4468,4469,446A,446B,446C,446D,446E,446F,4470,4471,4472,4473,4474,4475,4476,4477,4478,4479,447A,447B,447C,447D,447E,447F,4480,4481,4482,4483,4484,4485,4486,4487,4488,4489,448A,448B,448C,448D,448E,448F,4490,4491,4492,4493,4494,4495,4496,4497,4498,4499,449A,449B,449C,449D,449E, +*0xABA1 - 0xABFE:A2E=,4541,4542,4543,4544,4545,4546,4547,4548,4549,454A,454B,454C,454D,454E,454F,4550,4551,4552,4553,4554,4555,4556,4557,4558,4559,455A,455B,455C,455D,455E,455F,4560,4561,4562,4563,4564,4565,4566,4567,4568,4569,456A,456B,456C,456D,456E,456F,4570,4571,4572,4573,4574,4575,4576,4577,4578,4579,457A,457B,457C,457D,457E,457F,4580,4581,4582,4583,4584,4585,4586,4587,4588,4589,458A,458B,458C,458D,458E,458F,4590,4591,4592,4593,4594,4595,4596,4597,4598,4599,459A,459B,459C,459D,459E, +*0xACA1 - 0xACFE:A2E=,4A41,4A42,4A43,4A44,4A45,4A46,4A47,4A48,4A49,4A4A,4A4B,4A4C,4A4D,4A4E,4A4F,4A50,4A51,4A52,4A53,4A54,4A55,4A56,4A57,4A58,4A59,4A5A,4A5B,4A5C,4A5D,4A5E,4A5F,4A60,4A61,4A62,4A63,4A64,4A65,4A66,4A67,4A68,4A69,4A6A,4A6B,4A6C,4A6D,4A6E,4A6F,4A70,4A62,4A63,4A64,4A65,4A66,4A67,4A68,4A69,4A6A,4A6B,4A6C,4A6D,4A6E,4A6F,4A70,4A71,4A72,4A73,4A74,4A75,4A76,4A77,4A78,4A79,4A7A,4A7B,4A7C,4A7D,4A7E,4A7F,4A81,4A80,4A82,4A92,4A93,4A94,4A95,4A96,4A97,4A98,4A99,4A9A,4A9B,4A9C,4A9D,4A9E, +*0xADA1 - 0xADFE:A2E=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*0xAEA1 - 0xAEFE:A2E=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*0xAFA1 - 0xAFFE:A2E=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*0xB0A1 - 0xB0FE:A2E=,8861,8862,8865,8868,8869,886A,886B,8871,8873,8874,8875,8876,8877,8878,8879,887B,887C,887D,8881,8882,8885,8889,8891,8893,8895,8896,8897,88A1,88A2,88A5,88A9,88B5,88B7,88C1,88C5,88C9,88E1,88E2,88E5,88E8,88E9,88EB,88F1,88F3,88F5,88F6,88F7,88F8,88FB,88FC,88FD,8941,8945,8949,8951,8953,8955,8956,8957,8961,8962,8963,8965,8968,8969,8971,8973,8975,8976,8977,897B,8981,8985,8989,8993,8995,89A1,89A2,89A5,89A8,89A9,89AB,89AD,89B0,89B1,89B3,89B5,89B7,89B8,89C1,89C2,89C5,89C9,89CB, +*0xB1A1 - 0xB1FE:A2E=,89D1,89D3,89D5,89D7,89E1,89E5,89E9,89F3,89F6,89F7,8A41,8A42,8A45,8A49,8A51,8A53,8A55,8A57,8A61,8A65,8A69,8A73,8A75,8A81,8A82,8A85,8A88,8A89,8A8A,8A8B,8A90,8A91,8A93,8A95,8A97,8A98,8AA1,8AA2,8AA5,8AA9,8AB6,8AB7,8AC1,8AD5,8AE1,8AE2,8AE5,8AE9,8AF1,8AF3,8AF5,8B41,8B45,8B49,8B61,8B62,8B65,8B68,8B69,8B6A,8B71,8B73,8B75,8B77,8B81,8BA1,8BA2,8BA5,8BA8,8BA9,8BAB,8BB1,8BB3,8BB5,8BB7,8BB8,8BBC,8C61,8C62,8C63,8C65,8C69,8C6B,8C71,8C73,8C75,8C76,8C77,8C7B,8C81,8C82,8C85,8C89,8C91, +*0xB2A1 - 0xB2FE:A2E=,8C93,8C95,8C96,8C97,8CA1,8CA2,8CA9,8CE1,8CE2,8CE3,8CE5,8CE9,8CF1,8CF3,8CF5,8CF6,8CF7,8D41,8D42,8D45,8D51,8D55,8D57,8D61,8D65,8D69,8D75,8D76,8D7B,8D81,8DA1,8DA2,8DA5,8DA7,8DA9,8DB1,8DB3,8DB5,8DB7,8DB8,8DB9,8DC1,8DC2,8DC9,8DD6,8DD7,8DE1,8DE2,8DF7,8E41,8E45,8E49,8E51,8E53,8E57,8E61,8E81,8E82,8E85,8E89,8E90,8E91,8E93,8E95,8E97,8E98,8EA1,8EA9,8EB6,8EB7,8EC1,8EC2,8EC5,8EC9,8ED1,8ED3,8ED6,8EE1,8EE5,8EE9,8EF1,8EF3,8F41,8F61,8F62,8F65,8F67,8F69,8F6B,8F70,8F71,8F73,8F75,8F77, +*0xB3A1 - 0xB3FE:A2E=,8F7B,8FA1,8FA2,8FA5,8FA9,8FB1,8FB3,8FB5,8FB7,9061,9062,9063,9065,9068,9069,906A,906B,9071,9073,9075,9076,9077,9078,9079,907B,907D,9081,9082,9085,9089,9091,9093,9095,9096,9097,90A1,90A2,90A5,90A9,90B1,90B7,90E1,90E2,90E4,90E5,90E9,90EB,90EC,90F1,90F3,90F5,90F6,90F7,90FD,9141,9142,9145,9149,9151,9153,9155,9156,9157,9161,9162,9165,9169,9171,9173,9176,9177,917A,9181,9185,91A1,91A2,91A5,91A9,91AB,91B1,91B3,91B5,91B7,91BC,91BD,91C1,91C5,91C9,91D6,9241,9245,9249,9251,9253, +*0xB4A1 - 0xB4FE:A2E=,9255,9261,9262,9265,9269,9273,9275,9277,9281,9282,9285,9288,9289,9291,9293,9295,9297,92A1,92B6,92C1,92E1,92E5,92E9,92F1,92F3,9341,9342,9349,9351,9353,9357,9361,9362,9365,9369,936A,936B,9371,9373,9375,9377,9378,937C,9381,9385,9389,93A1,93A2,93A5,93A9,93AB,93B1,93B3,93B5,93B7,93BC,9461,9462,9463,9465,9468,9469,946A,946B,946C,9470,9471,9473,9475,9476,9477,9478,9479,947D,9481,9482,9485,9489,9491,9493,9495,9496,9497,94A1,94E1,94E2,94E3,94E5,94E8,94E9,94EB,94EC,94F1,94F3, +*0xB5A1 - 0xB5FE:A2E=,94F5,94F7,94F9,94FC,9541,9542,9545,9549,9551,9553,9555,9556,9557,9561,9565,9569,9576,9577,9581,9585,95A1,95A2,95A5,95A8,95A9,95AB,95AD,95B1,95B3,95B5,95B7,95B9,95BB,95C1,95C5,95C9,95E1,95F6,9641,9645,9649,9651,9653,9655,9661,9681,9682,9685,9689,9691,9693,9695,9697,96A1,96B6,96C1,96D7,96E1,96E5,96E9,96F3,96F5,96F7,9741,9745,9749,9751,9757,9761,9762,9765,9768,9769,976B,9771,9773,9775,9777,9781,97A1,97A2,97A5,97A8,97A9,97B1,97B3,97B5,97B6,97B7,97B8,9861,9862,9865,9869, +*0xB6A1 - 0xB6FE:A2E=,9871,9873,9875,9876,9877,987D,9881,9882,9885,9889,9891,9893,9895,9896,9897,98E1,98E2,98E5,98E9,98EB,98EC,98F1,98F3,98F5,98F6,98F7,98FD,9941,9942,9945,9949,9951,9953,9955,9956,9957,9961,9976,99A1,99A2,99A5,99A9,99B7,99C1,99C9,99E1,9A41,9A45,9A81,9A82,9A85,9A89,9A90,9A91,9A97,9AC1,9AE1,9AE5,9AE9,9AF1,9AF3,9AF7,9B61,9B62,9B65,9B68,9B69,9B71,9B73,9B75,9B81,9B85,9B89,9B91,9B93,9BA1,9BA5,9BA9,9BB1,9BB3,9BB5,9BB7,9C61,9C62,9C65,9C69,9C71,9C73,9C75,9C76,9C77,9C78,9C7C,9C7D, +*0xB7A1 - 0xB7FE:A2E=,9C81,9C82,9C85,9C89,9C91,9C93,9C95,9C96,9C97,9CA1,9CA2,9CA5,9CB5,9CB7,9CE1,9CE2,9CE5,9CE9,9CF1,9CF3,9CF5,9CF6,9CF7,9CFD,9D41,9D42,9D45,9D49,9D51,9D53,9D55,9D57,9D61,9D62,9D65,9D69,9D71,9D73,9D75,9D76,9D77,9D81,9D85,9D93,9D95,9DA1,9DA2,9DA5,9DA9,9DB1,9DB3,9DB5,9DB7,9DC1,9DC5,9DD7,9DF6,9E41,9E45,9E49,9E51,9E53,9E55,9E57,9E61,9E65,9E69,9E73,9E75,9E77,9E81,9E82,9E85,9E89,9E91,9E93,9E95,9E97,9EA1,9EB6,9EC1,9EE1,9EE2,9EE5,9EE9,9EF1,9EF5,9EF7,9F41,9F42,9F45,9F49,9F51,9F53, +*0xB8A1 - 0xB8FE:A2E=,9F55,9F57,9F61,9F62,9F65,9F69,9F71,9F73,9F75,9F77,9F78,9F7B,9F7C,9FA1,9FA2,9FA5,9FA9,9FB1,9FB3,9FB5,9FB7,A061,A062,A065,A067,A068,A069,A06A,A06B,A071,A073,A075,A077,A078,A07B,A07D,A081,A082,A085,A089,A091,A093,A095,A096,A097,A098,A0A1,A0A2,A0A9,A0B7,A0E1,A0E2,A0E5,A0E9,A0EB,A0F1,A0F3,A0F5,A0F7,A0F8,A0FD,A141,A142,A145,A149,A151,A153,A155,A156,A157,A161,A162,A165,A169,A175,A176,A177,A179,A181,A1A1,A1A2,A1A4,A1A5,A1A9,A1AB,A1B1,A1B3,A1B5,A1B7,A1C1,A1C5,A1D6,A1D7,A241, +*0xB9A1 - 0xB9FE:A2E=,A245,A249,A253,A255,A257,A261,A265,A269,A273,A275,A281,A282,A283,A285,A288,A289,A28A,A28B,A291,A293,A295,A297,A29B,A29D,A2A1,A2A5,A2A9,A2B3,A2B5,A2C1,A2E1,A2E5,A2E9,A341,A345,A349,A351,A355,A361,A365,A369,A371,A375,A3A1,A3A2,A3A5,A3A8,A3A9,A3AB,A3B1,A3B3,A3B5,A3B6,A3B7,A3B9,A3BB,A461,A462,A463,A464,A465,A468,A469,A46A,A46B,A46C,A471,A473,A475,A477,A47B,A481,A482,A485,A489,A491,A493,A495,A496,A497,A49B,A4A1,A4A2,A4A5,A4B3,A4E1,A4E2,A4E5,A4E8,A4E9,A4EB,A4F1,A4F3,A4F5, +*0xBAA1 - 0xBAFE:A2E=,A4F7,A4F8,A541,A542,A545,A548,A549,A551,A553,A555,A556,A557,A561,A562,A565,A569,A573,A575,A576,A577,A57B,A581,A585,A5A1,A5A2,A5A3,A5A5,A5A9,A5B1,A5B3,A5B5,A5B7,A5C1,A5C5,A5D6,A5E1,A5F6,A641,A642,A645,A649,A651,A653,A661,A665,A681,A682,A685,A688,A689,A68A,A68B,A691,A693,A695,A697,A69B,A69C,A6A1,A6A9,A6B6,A6C1,A6E1,A6E2,A6E5,A6E9,A6F7,A741,A745,A749,A751,A755,A757,A761,A762,A765,A769,A771,A773,A775,A7A1,A7A2,A7A5,A7A9,A7AB,A7B1,A7B3,A7B5,A7B7,A7B8,A7B9,A861,A862,A865, +*0xBBA1 - 0xBBFE:A2E=,A869,A86B,A871,A873,A875,A876,A877,A87D,A881,A882,A885,A889,A891,A893,A895,A896,A897,A8A1,A8A2,A8B1,A8E1,A8E2,A8E5,A8E8,A8E9,A8F1,A8F5,A8F6,A8F7,A941,A957,A961,A962,A971,A973,A975,A976,A977,A9A1,A9A2,A9A5,A9A9,A9B1,A9B3,A9B7,AA41,AA61,AA77,AA81,AA82,AA85,AA89,AA91,AA95,AA97,AB41,AB57,AB61,AB65,AB69,AB71,AB73,ABA1,ABA2,ABA5,ABA9,ABB1,ABB3,ABB5,ABB7,AC61,AC62,AC64,AC65,AC68,AC69,AC6A,AC6B,AC71,AC73,AC75,AC76,AC77,AC7B,AC81,AC82,AC85,AC89,AC91,AC93,AC95,AC96,AC97,ACA1, +*0xBCA1 - 0xBCFE:A2E=,ACA2,ACA5,ACA9,ACB1,ACB3,ACB5,ACB7,ACC1,ACC5,ACC9,ACD1,ACD7,ACE1,ACE2,ACE3,ACE4,ACE5,ACE8,ACE9,ACEB,ACEC,ACF1,ACF3,ACF5,ACF6,ACF7,ACFC,AD41,AD42,AD45,AD49,AD51,AD53,AD55,AD56,AD57,AD61,AD62,AD65,AD69,AD71,AD73,AD75,AD76,AD77,AD81,AD85,AD89,AD97,ADA1,ADA2,ADA3,ADA5,ADA9,ADAB,ADB1,ADB3,ADB5,ADB7,ADBB,ADC1,ADC2,ADC5,ADC9,ADD7,ADE1,ADE5,ADE9,ADF1,ADF5,ADF6,AE41,AE45,AE49,AE51,AE53,AE55,AE61,AE62,AE65,AE69,AE71,AE73,AE75,AE77,AE81,AE82,AE85,AE88,AE89,AE91,AE93,AE95,AE97, +*0xBDA1 - 0xBDFE:A2E=,AE99,AE9B,AE9C,AEA1,AEB6,AEC1,AEC2,AEC5,AEC9,AED1,AED7,AEE1,AEE2,AEE5,AEE9,AEF1,AEF3,AEF5,AEF7,AF41,AF42,AF49,AF51,AF55,AF57,AF61,AF62,AF65,AF69,AF6A,AF71,AF73,AF75,AF77,AFA1,AFA2,AFA5,AFA8,AFA9,AFB0,AFB1,AFB3,AFB5,AFB7,AFBC,B061,B062,B064,B065,B069,B071,B073,B076,B077,B07D,B081,B082,B085,B089,B091,B093,B096,B097,B0B7,B0E1,B0E2,B0E5,B0E9,B0EB,B0F1,B0F3,B0F6,B0F7,B141,B145,B149,B185,B1A1,B1A2,B1A5,B1A8,B1A9,B1AB,B1B1,B1B3,B1B7,B1C1,B1C2,B1C5,B1D6,B1E1,B1F6,B241,B245, +*0xBEA1 - 0xBEFE:A2E=,B249,B251,B253,B261,B281,B282,B285,B289,B291,B293,B297,B2A1,B2B6,B2C1,B2E1,B2E5,B357,B361,B362,B365,B369,B36B,B370,B371,B373,B381,B385,B389,B391,B3A1,B3A2,B3A5,B3A9,B3B1,B3B3,B3B5,B3B7,B461,B462,B465,B466,B467,B469,B46A,B46B,B470,B471,B473,B475,B476,B477,B47B,B47C,B481,B482,B485,B489,B491,B493,B495,B496,B497,B4A1,B4A2,B4A5,B4A9,B4AC,B4B1,B4B3,B4B5,B4B7,B4BB,B4BD,B4C1,B4C5,B4C9,B4D3,B4E1,B4E2,B4E5,B4E6,B4E8,B4E9,B4EA,B4EB,B4F1,B4F3,B4F4,B4F5,B4F6,B4F7,B4F8,B4FA,B4FC, +*0xBFA1 - 0xBFFE:A2E=,B541,B542,B545,B549,B551,B553,B555,B557,B561,B562,B563,B565,B569,B56B,B56C,B571,B573,B574,B575,B576,B577,B57B,B57C,B57D,B581,B585,B589,B591,B593,B595,B596,B5A1,B5A2,B5A5,B5A9,B5AA,B5AB,B5AD,B5B0,B5B1,B5B3,B5B5,B5B7,B5B9,B5C1,B5C2,B5C5,B5C9,B5D1,B5D3,B5D5,B5D6,B5D7,B5E1,B5E2,B5E5,B5F1,B5F5,B5F7,B641,B642,B645,B649,B651,B653,B655,B657,B661,B662,B665,B669,B671,B673,B675,B677,B681,B682,B685,B689,B68A,B68B,B691,B693,B695,B697,B6A1,B6A2,B6A5,B6A9,B6B1,B6B3,B6B6,B6B7,B6C1, +*0xC0A1 - 0xC0FE:A2E=,B6C2,B6C5,B6C9,B6D1,B6D3,B6D7,B6E1,B6E2,B6E5,B6E9,B6F1,B6F3,B6F5,B6F7,B741,B742,B745,B749,B751,B753,B755,B757,B759,B761,B762,B765,B769,B76F,B771,B773,B775,B777,B778,B779,B77A,B77B,B77C,B77D,B781,B785,B789,B791,B795,B7A1,B7A2,B7A5,B7A9,B7AA,B7AB,B7B0,B7B1,B7B3,B7B5,B7B6,B7B7,B7B8,B7BC,B861,B862,B865,B867,B868,B869,B86B,B871,B873,B875,B876,B877,B878,B881,B882,B885,B889,B891,B893,B895,B896,B897,B8A1,B8A2,B8A5,B8A7,B8A9,B8B1,B8B7,B8C1,B8C5,B8C9,B8E1,B8E2,B8E5,B8E9,B8EB, +*0xC1A1 - 0xC1FE:A2E=,B8F1,B8F3,B8F5,B8F7,B8F8,B941,B942,B945,B949,B951,B953,B955,B957,B961,B965,B969,B971,B973,B976,B977,B981,B9A1,B9A2,B9A5,B9A9,B9AB,B9B1,B9B3,B9B5,B9B7,B9B8,B9B9,B9BD,B9C1,B9C2,B9C9,B9D3,B9D5,B9D7,B9E1,B9F6,B9F7,BA41,BA45,BA49,BA51,BA53,BA55,BA57,BA61,BA62,BA65,BA77,BA81,BA82,BA85,BA89,BA8A,BA8B,BA91,BA93,BA95,BA97,BAA1,BAB6,BAC1,BAE1,BAE2,BAE5,BAE9,BAF1,BAF3,BAF5,BB41,BB45,BB49,BB51,BB61,BB62,BB65,BB69,BB71,BB73,BB75,BB77,BBA1,BBA2,BBA5,BBA8,BBA9,BBAB,BBB1,BBB3,BBB5, +*0xC2A1 - 0xC2FE:A2E=,BBB7,BBB8,BBBB,BBBC,BC61,BC62,BC65,BC67,BC69,BC6C,BC71,BC73,BC75,BC76,BC77,BC81,BC82,BC85,BC89,BC91,BC93,BC95,BC96,BC97,BCA1,BCA5,BCB7,BCE1,BCE2,BCE5,BCE9,BCF1,BCF3,BCF5,BCF6,BCF7,BD41,BD57,BD61,BD76,BDA1,BDA2,BDA5,BDA9,BDB1,BDB3,BDB5,BDB7,BDB9,BDC1,BDC2,BDC9,BDD6,BDE1,BDF6,BE41,BE45,BE49,BE51,BE53,BE77,BE81,BE82,BE85,BE89,BE91,BE93,BE97,BEA1,BEB6,BEB7,BEE1,BF41,BF61,BF71,BF75,BF77,BFA1,BFA2,BFA5,BFA9,BFB1,BFB3,BFB7,BFB8,BFBD,C061,C062,C065,C067,C069,C071,C073,C075, +*0xC3A1 - 0xC3FE:A2E=,C076,C077,C078,C081,C082,C085,C089,C091,C093,C095,C096,C097,C0A1,C0A5,C0A7,C0A9,C0B1,C0B7,C0E1,C0E2,C0E5,C0E9,C0F1,C0F3,C0F5,C0F6,C0F7,C141,C142,C145,C149,C151,C153,C155,C157,C161,C165,C176,C181,C185,C197,C1A1,C1A2,C1A5,C1A9,C1B1,C1B3,C1B5,C1B7,C1C1,C1C5,C1C9,C1D7,C241,C245,C249,C251,C253,C255,C257,C261,C271,C281,C282,C285,C289,C291,C293,C295,C297,C2A1,C2B6,C2C1,C2C5,C2E1,C2E5,C2E9,C2F1,C2F3,C2F5,C2F7,C341,C345,C349,C351,C357,C361,C362,C365,C369,C371,C373,C375,C377, +*0xC4A1 - 0xC4FE:A2E=,C3A1,C3A2,C3A5,C3A8,C3A9,C3AA,C3B1,C3B3,C3B5,C3B7,C461,C462,C465,C469,C471,C473,C475,C477,C481,C482,C485,C489,C491,C493,C495,C496,C497,C4A1,C4A2,C4B7,C4E1,C4E2,C4E5,C4E8,C4E9,C4F1,C4F3,C4F5,C4F6,C4F7,C541,C542,C545,C549,C551,C553,C555,C557,C561,C565,C569,C571,C573,C575,C576,C577,C581,C5A1,C5A2,C5A5,C5A9,C5B1,C5B3,C5B5,C5B7,C5C1,C5C2,C5C5,C5C9,C5D1,C5D7,C5E1,C5F7,C641,C649,C661,C681,C682,C685,C689,C691,C693,C695,C697,C6A1,C6A5,C6A9,C6B7,C6C1,C6D7,C6E1,C6E2,C6E5,C6E9, +*0xC5A1 - 0xC5FE:A2E=,C6F1,C6F3,C6F5,C6F7,C741,C745,C749,C751,C761,C762,C765,C769,C771,C773,C777,C7A1,C7A2,C7A5,C7A9,C7B1,C7B3,C7B5,C7B7,C861,C862,C865,C869,C86A,C871,C873,C875,C876,C877,C881,C882,C885,C889,C891,C893,C895,C896,C897,C8A1,C8B7,C8E1,C8E2,C8E5,C8E9,C8EB,C8F1,C8F3,C8F5,C8F6,C8F7,C941,C942,C945,C949,C951,C953,C955,C957,C961,C965,C976,C981,C985,C9A1,C9A2,C9A5,C9A9,C9B1,C9B3,C9B5,C9B7,C9BC,C9C1,C9C5,C9E1,CA41,CA45,CA55,CA57,CA61,CA81,CA82,CA85,CA89,CA91,CA93,CA95,CA97,CAA1,CAB6, +*0xC6A1 - 0xC6FE:A2E=,CAC1,CAE1,CAE2,CAE5,CAE9,CAF1,CAF3,CAF7,CB41,CB45,CB49,CB51,CB57,CB61,CB62,CB65,CB68,CB69,CB6B,CB71,CB73,CB75,CB81,CB85,CB89,CB91,CB93,CBA1,CBA2,CBA5,CBA9,CBB1,CBB3,CBB5,CBB7,CC61,CC62,CC63,CC65,CC69,CC6B,CC71,CC73,CC75,CC76,CC77,CC7B,CC81,CC82,CC85,CC89,CC91,CC93,CC95,CC96,CC97,CCA1,CCA2,CCE1,CCE2,CCE5,CCE9,CCF1,CCF3,CCF5,CCF6,CCF7,CD41,CD42,CD45,CD49,CD51,CD53,CD55,CD57,CD61,CD65,CD69,CD71,CD73,CD76,CD77,CD81,CD89,CD93,CD95,CDA1,CDA2,CDA5,CDA9,CDB1,CDB3,CDB5,CDB7, +*0xC7A1 - 0xC7FE:A2E=,CDC1,CDD7,CE41,CE45,CE61,CE65,CE69,CE73,CE75,CE81,CE82,CE85,CE88,CE89,CE8B,CE91,CE93,CE95,CE97,CEA1,CEB7,CEE1,CEE5,CEE9,CEF1,CEF5,CF41,CF45,CF49,CF51,CF55,CF57,CF61,CF65,CF69,CF71,CF73,CF75,CFA1,CFA2,CFA5,CFA9,CFB1,CFB3,CFB5,CFB7,D061,D062,D065,D069,D06E,D071,D073,D075,D077,D081,D082,D085,D089,D091,D093,D095,D096,D097,D0A1,D0B7,D0E1,D0E2,D0E5,D0E9,D0EB,D0F1,D0F3,D0F5,D0F7,D141,D142,D145,D149,D151,D153,D155,D157,D161,D162,D165,D169,D171,D173,D175,D176,D177,D181,D185, +*0xC8A1 - 0xC8FE:A2E=,D189,D193,D1A1,D1A2,D1A5,D1A9,D1AE,D1B1,D1B3,D1B5,D1B7,D1BB,D1C1,D1C2,D1C5,D1C9,D1D5,D1D7,D1E1,D1E2,D1E5,D1F5,D1F7,D241,D242,D245,D249,D253,D255,D257,D261,D265,D269,D273,D275,D281,D282,D285,D289,D28E,D291,D295,D297,D2A1,D2A5,D2A9,D2B1,D2B7,D2C1,D2C2,D2C5,D2C9,D2D7,D2E1,D2E2,D2E5,D2E9,D2F1,D2F3,D2F5,D2F7,D341,D342,D345,D349,D351,D355,D357,D361,D362,D365,D367,D368,D369,D36A,D371,D373,D375,D377,D37B,D381,D385,D389,D391,D393,D397,D3A1,D3A2,D3A5,D3A9,D3B1,D3B3,D3B5,D3B7, +*0xC9A1 - 0xC9FE:A2E=,D441,D442,D443,D444,D445,D446,D447,D448,D449,D44A,D44B,D44C,D44D,D44E,D44F,D450,D451,D452,D453,D454,D455,D456,D457,D458,D459,D45A,D45B,D45C,D45D,D45E,D45F,D460,D461,D462,D463,D464,D465,D466,D467,D468,D469,D46A,D46B,D46C,D46D,D46E,D46F,D470,D471,D472,D473,D474,D475,D476,D477,D478,D479,D47A,D47B,D47C,D47D,D47E,D47F,D480,D481,D482,D483,D484,D485,D486,D487,D488,D489,D48A,D48B,D48C,D48D,D48E,D48F,D490,D491,D492,D493,D494,D495,D496,D497,D498,D499,D49A,D49B,D49C,D49D,D49E, +*0xCAA1 - 0xCAFE:A2E=,5041,5042,5043,5044,5045,5046,5047,5048,5049,504A,504B,504C,504E,6841,504D,504F,6842,6843,5050,5051,5052,5053,5054,5055,5056,5057,5058,5059,505A,505B,505C,505D,505F,6844,5061,5062,5063,5064,5065,5066,6845,5067,5068,5069,506A,506B,506C,506D,506E,506F,6846,6847,5070,5071,5072,6848,5073,5074,5075,5078,5076,5077,5079,507A,507B,507C,507D,507E,507F,5080,5083,5081,6849,5084,5085,5086,5087,5088,5089,508A,684A,508B,508C,508D,508E,508F,5090,5091,684B,5092,684C,5094,684D,5095, +*0xCBA1 - 0xCBFE:A2E=,5096,5097,5098,5099,509A,509B,509D,684E,509E,509C,509F,50A0,50A1,50A2,50A3,50A4,684F,50A5,50A8,6850,50A6,6851,50A9,6852,50AA,50A7,50AB,50AC,50AD,6853,50AE,50AF,50B0,50B1,6854,50B2,50B3,50B4,50B5,50B6,50B7,50B8,50B9,50BA,50BB,50BC,50BD,6855,6856,50BE,6857,50BF,50C0,50C1,50C2,50C3,50C4,6858,50C5,50C6,50C7,50C8,50C9,50CA,50CD,50CB,50CC,6859,50CE,685A,50D0,50CF,685B,50D2,50D3,50D4,50D5,50D6,50D7,50D8,685C,685D,50D9,50DA,50DB,50DC,50DD,50DE,50DF,685E,50E0,50E1,685F,50E2, +*0xCCA1 - 0xCCFE:A2E=,50E3,6860,50E4,50E5,50E6,6861,50E7,50E8,50E9,50EA,50EB,50EC,50ED,6862,50EE,50EF,50F1,50F3,50F4,50F5,50F6,50F7,50F2,50F8,50F9,50FA,50FB,6863,50FD,50FC,50FE,5141,5142,5143,5144,5145,5147,6864,5148,5149,6865,6866,514A,6867,514B,514C,514D,6868,514F,5150,5151,5152,6869,5155,5156,5157,5153,5158,5159,515B,515C,686A,515E,686B,515F,5161,5162,5163,5164,5165,5166,5167,5168,5169,516A,516B,516C,516D,516E,516F,5170,5171,5172,5173,5174,5175,686C,5176,5177,5178,5179,517A,517B,517C, +*0xCDA1 - 0xCDFE:A2E=,686D,517D,517E,517F,5180,5182,5183,5184,5185,5186,5187,5189,5188,518B,518D,518C,518E,518F,5190,5191,5192,686E,5193,5194,5195,5196,5197,686F,5198,6870,519A,519B,519C,51A0,519F,6871,51A1,51A2,51A3,51A4,6872,6873,51A5,519D,51A6,51A8,51A9,51AA,51AB,51AC,51AD,51AE,51AF,51B0,51B1,51B2,51B3,51B4,51B5,51B6,51B7,51B8,51B9,51BA,51BB,51BC,51BD,6874,51BE,6875,51BF,51C0,51C1,51C2,51C3,51C4,51C5,51C6,51C7,51CA,51C9,51CB,51CC,51CD,6876,51D0,6877,51C8,6878,6879,51D2,51D3,51D4,51D5, +*0xCEA1 - 0xCEFE:A2E=,51D6,51D7,51D9,51DA,687A,51DB,687B,51DC,51DD,51DE,51DF,51E0,51E2,51E3,51E4,51E5,51E6,51E7,51E9,51EA,687C,51E8,51EC,51ED,51EE,51EF,51F0,51F1,51F2,51F4,51F5,51F6,51F7,687D,51F8,51F9,51FA,51FB,51FC,51FD,687E,51FE,5241,5242,5243,5244,5245,5246,5247,5248,5249,524A,524B,524C,524D,524E,524F,5250,5251,5252,5253,5254,5255,5256,5257,5258,5259,525A,525B,525D,525C,525E,525F,5260,5261,5262,5263,5264,5265,5266,5267,5268,5269,526A,526C,526D,526E,526F,5270,5271,5272,5274,5276,5277, +*0xCFA1 - 0xCFFE:A2E=,5278,5279,527A,527B,527C,687F,527D,5280,5281,5282,5283,5284,5285,5287,5288,5289,528A,528B,528C,528D,528E,528F,5290,5291,5292,5294,5295,5296,5297,6880,5299,529A,529B,529C,529D,529F,5298,52A0,52A1,52A2,52A3,6881,52A5,52A6,52A7,52A8,52A9,52AA,52AB,52AD,52AE,6882,52AF,52B3,52B0,52B1,6883,52B2,52B4,52B5,52B6,52B7,52B8,52B9,52BA,52BB,52BC,6884,52BD,52BE,52BF,52C0,52C1,52C2,52C3,6885,52C4,6886,52C5,52C6,6887,6888,52C7,52C8,52C9,52CA,52CB,52CC,52CE,52CF,6889,688A,52D0,52D1, +*0xD0A1 - 0xD0FE:A2E=,52D2,52D3,52D4,52D5,52D6,52D7,688B,52D8,52D9,52DA,688C,52DC,52DB,52DD,52DE,52DF,52E0,688D,52E1,688E,52E2,52E3,52E4,52E5,52E6,52E7,52E8,52E9,52EA,52EC,52EB,52ED,52EE,688F,52EF,52F1,52F2,52F3,52F4,52F6,52F7,52F8,52F9,52FA,52FB,52FC,52FD,52FE,5341,6890,5342,6891,5343,5344,5345,5346,6892,5348,5347,5349,534A,534B,6893,534C,534E,534F,5350,5352,5353,5354,5355,5356,5357,5358,5359,535A,535B,535C,535D,535E,535F,6894,5360,5361,5362,5363,5364,5366,5368,5367,5369,536A,536B,536C, +*0xD1A1 - 0xD1FE:A2E=,5388,536D,536E,536F,5370,5371,5372,5373,5374,5375,5376,6895,5377,5378,6896,5379,537A,537B,537C,537D,6897,537E,537F,5380,5381,5382,5383,6898,5385,5386,5387,5389,538A,5365,538B,538C,6899,538D,538E,538F,5390,5391,5393,5394,5395,5396,5397,5398,5399,539B,539C,689A,689B,689C,539D,689D,539E,539F,689E,689F,68A0,68A1,68A2,68A3,53A1,68A4,68A5,68A6,68A7,68A8,53A2,68A9,68AA,68AB,68AC,53A3,68AD,53A4,68AE,68AF,53A5,68B0,53A7,53A6,53A8,68B1,68B2,68B3,68B4,68B5,53AA,68B6,68B7,68B8, +*0xD2A1 - 0xD2FE:A2E=,53AB,68B9,68BA,68BB,53AC,53AD,68BC,68BD,68BE,68BF,68C0,53AF,68C1,53B0,53B1,53B2,53B3,68C2,53B5,53B6,68C3,53B7,53B8,53B9,53BA,53BB,53BD,68C4,53BF,68C5,53C0,53C2,53C3,68C6,68C7,68C8,53C4,68C9,68CA,68CB,68CC,68CD,68CE,68CF,68D0,68D1,68D2,68D3,68D4,68D5,68D6,68D7,68D8,68D9,68DA,53C5,68DB,68DC,53C6,53C7,53C8,68DD,68DE,53C9,68DF,68E0,53CA,68E1,68E2,68E3,68E4,68E5,68E6,68E7,68E8,53CC,53CD,68E9,53CE,68EA,68EB,68EC,68ED,68EE,68EF,53CF,68F0,68F1,53D0,53D1,53D2,53D3,53D4,53D5, +*0xD3A1 - 0xD3FE:A2E=,53D6,68F2,53D7,53D8,53D9,53DA,68F3,53DB,53DC,53DD,53DE,53DF,53E0,53E1,53E2,53E3,53E4,53E5,53E6,53E7,53EA,68F4,53EB,53EC,53ED,53F0,68F5,68F6,53F1,53F2,53F3,68F7,53F4,53F5,53F6,53F7,53F8,68F8,53F9,53FA,53FB,68F9,53FC,68FA,53FD,53FE,5441,5446,5443,5444,5445,68FB,5447,5448,5449,544A,68FC,544C,544D,544E,68FD,544F,5450,5451,5452,5453,5454,5455,5456,5458,5459,545A,545B,545C,545D,545E,545F,5460,5461,5462,5463,5464,5465,5466,5467,5468,68FE,5469,546A,546B,546C,6941,546D,546E, +*0xD4A1 - 0xD4FE:A2E=,546F,6942,5470,5471,5472,5473,5474,5475,5476,5477,5478,5479,6943,547B,547C,547D,547E,547F,5480,5481,5482,5483,5484,5485,5486,5487,5488,5489,548A,548B,548C,548D,548E,548F,5490,5491,6944,5492,5493,6945,5494,5495,5496,5498,5499,549A,549B,549C,549D,549E,54A0,54A1,54A2,54A3,54A4,54A5,54A7,54A8,54A6,54AA,54A9,54AB,54AC,54AD,54AE,54AF,54B0,54B1,54B2,54B5,54B6,6946,54B7,54B8,54B9,6947,54BA,54BB,54BC,54BD,6948,54BE,54C1,54C2,54C3,54C4,54C5,54C6,54C8,54C9,54CA,6949,54CB,54CC, +*0xD5A1 - 0xD5FE:A2E=,54CD,54CE,54CF,54D0,54D1,54D2,54D3,54D5,54D6,54D7,694A,54D8,54D9,694B,54DA,54DB,54DD,54DE,54DF,54E0,54E1,54E2,54E3,54E5,54E6,54E7,54E8,54E9,54EA,54EB,54EC,54ED,54EE,54EF,54F0,54F1,54F2,54F3,54F4,54F6,54F7,54F8,54F9,54FA,54FB,54FC,694C,694D,54FD,54FE,5541,5542,5543,5545,5544,5546,5547,5549,554A,554B,554C,554D,554E,554F,5550,5552,694E,5553,5554,5555,555E,5556,5557,5558,5559,555B,555D,555F,5562,5563,5564,5565,5566,5567,5569,5568,556B,556C,556D,556E,556F,5570,5571,5572, +*0xD6A1 - 0xD6FE:A2E=,5573,694F,5574,5575,5576,5577,5578,5579,557A,557C,557B,557D,557E,557F,5580,5581,5582,5583,5584,5585,5587,5588,5589,6950,6951,558A,558B,558E,6952,558F,5590,6953,5593,5596,5594,5595,5597,5598,5599,6954,559A,559B,559C,559D,6955,559E,6956,559F,6957,55A2,55A1,55A3,55A4,55A6,55A7,55A8,55A9,55AB,55AC,55AD,55AE,55B0,6958,55B2,6959,55B4,55B6,55B5,55B7,55B8,55B9,55BA,55BB,55BC,55BD,55BE,55BF,695A,55C0,55C1,55C6,695B,55C5,55C7,55C8,55C9,55CB,55CC,55D0,55CD,55CE,55CF,55D1,55D2, +*0xD7A1 - 0xD7FE:A2E=,55D3,695C,55D4,55D6,695D,55D7,55D8,55D9,55DA,695E,55DB,55DC,695F,55DD,6960,55DE,55E0,6961,55E1,55E2,55E3,55E4,6962,55E5,55E6,55E7,55E8,55E9,55EA,55EB,55EC,55ED,55EE,6963,55EF,55F0,55F1,55F2,55F3,55F4,55F5,55F6,55F7,55F9,55FB,55FA,6964,55FE,5641,5642,5643,5644,5645,5646,5647,5648,5649,6965,564A,564B,564D,564E,6966,5650,5651,5652,5653,6967,5654,5657,5656,6968,6969,5659,696A,565A,565B,565C,565E,565F,696B,5660,5661,5662,5663,5664,5665,5666,5667,5668,5669,566B,566C,566E, +*0xD8A1 - 0xD8FE:A2E=,566F,5670,5671,5673,5674,5675,696C,5676,5678,5679,567A,567B,567C,567D,567E,567F,696D,696E,696F,5680,5681,5682,5683,5684,5685,5686,5687,5688,5689,568A,568B,568C,568D,568F,5691,5693,6970,5694,5695,5696,6971,5697,5698,5699,569A,569B,569C,569D,569E,569F,56A0,56A1,56A2,6972,56A3,56A5,56A6,56A7,56A8,56A9,56AA,56AB,56AC,56AD,56AF,56B1,56B2,56B3,56B4,56B5,56B7,56B8,56B9,56BA,56BB,56BC,56BD,56BF,56BE,56C0,56C1,56C2,56C4,56C6,56C5,56C7,6973,56C8,56C9,56CA,56CB,56CC,56CD,56CE, +*0xD9A1 - 0xD9FE:A2E=,56CF,56D1,56D2,56D0,56D4,56D5,6974,56D6,56D7,6975,56D8,6976,56D9,56DA,56DB,56D3,56DC,56DD,56E4,56DE,56E0,56DF,56E1,56E2,6977,56E3,56E5,56E6,56E7,56E8,56E9,56EA,6978,56EB,56EC,56EE,6979,56EF,56F0,56F1,56F2,56F4,56F5,56F6,56F7,56F8,56F9,697A,56FA,56FB,56FC,56FD,5742,5743,5744,5745,5746,5747,5748,5749,574A,574B,697B,574C,574D,574E,574F,697C,5750,5751,5752,5753,5754,697D,5755,5756,5757,697E,5758,5759,575A,575B,575C,575D,575E,575F,5760,5761,5762,697F,5763,5764,576B,5765, +*0xDAA1 - 0xDAFE:A2E=,5766,5768,5767,576C,5769,576A,6980,576D,6981,576E,576F,5770,5771,5772,5774,5775,5776,6982,6983,5777,6984,5779,577A,577C,577D,577E,577F,5773,6985,6986,5780,5781,5782,5783,5785,5784,5786,5787,5788,5789,6987,578A,578C,578D,578E,5790,5791,5792,5793,5794,5795,5796,5798,579A,579B,579C,579E,579D,579F,57A0,57A1,57A2,57A3,57A4,57A5,57A6,57A7,57A8,57A9,57AA,57AB,57AC,57AD,57AF,57AE,57B0,57B1,6988,57B2,6989,698A,57B3,57B4,57B5,57B8,57B7,57B9,57BA,57BB,57BC,57BD,57BF,698B,57BE, +*0xDBA1 - 0xDBFE:A2E=,57C0,57C1,57C2,57C3,57C4,57C5,57C6,57C7,57C8,57C9,57CA,57CB,57CC,57CD,57CE,57CF,57D0,57D1,698C,57D2,698D,698E,57D3,57D4,57D5,57D6,57D7,57D8,57D9,57DA,57DB,57DC,57DD,57E0,57E2,57E1,57E3,57E4,57E5,57E6,57E7,57E8,57E9,698F,57EA,57EC,57EB,57EE,57ED,57EF,57F0,57F1,57F2,57F3,57F4,57F5,57F6,57F7,57F8,57F9,57FA,57FB,6990,57FC,57FE,6991,5841,5842,5843,5845,5846,5847,5848,5849,584A,584B,584C,584D,584E,584F,5850,5851,5852,5853,5854,5855,5856,5857,5858,5859,585A,6992,585B,585C, +*0xDCA1 - 0xDCFE:A2E=,585D,6993,585F,5860,5861,5862,5863,5866,5867,5868,586A,586C,586E,586F,5870,5871,5872,5873,5874,5875,5876,5877,5878,6994,5879,587A,587B,587D,587C,587E,5880,6995,5881,5882,5883,5884,5885,5886,5888,5887,5889,6996,588A,6997,588B,588C,588D,588E,5891,5892,5893,5894,5895,5896,5898,5897,5899,589A,589B,589E,589C,6998,589F,58A0,58A1,58A2,58A3,58A5,58A6,58A7,58A9,58A8,58AA,58AC,58AD,6999,58AB,58AE,58B0,58B1,58B2,58B3,58B4,699A,58B6,699B,58B7,58B8,58B9,58BA,699C,58BB,58BC,58BD, +*0xDDA1 - 0xDDFE:A2E=,699D,58BE,58BF,58C0,58C1,58C2,58C3,58C4,58C5,58C6,58C7,58CA,58C8,58C9,58CD,58CC,58CE,699E,58CF,699F,58D2,58D3,58D4,58D5,58D6,58D7,58D8,58D9,58DA,58DB,58DD,58DF,58E0,58E1,69A0,58E2,58E4,58E5,58E6,58E7,58E8,58E9,69A1,58EA,58EB,58EC,58ED,58EE,58EF,58F0,69A2,58F2,58F3,58F4,58F6,69A3,58F7,58FA,58FB,58FC,58FD,58FE,5941,5942,5943,5944,5945,5946,5947,5949,594A,594B,594C,594D,594E,594F,69A4,5951,5955,69A5,69A6,5956,5954,5953,5957,5958,595A,595B,69A7,595C,69A8,595E,595F,5960, +*0xDEA1 - 0xDEFE:A2E=,5962,5963,5964,5965,5966,5967,5968,5969,596B,596C,596D,596F,69A9,5970,5972,5974,5975,5976,69AA,5977,5978,5979,69AB,597B,5971,597D,5980,5981,5982,5983,5984,5985,5986,5987,5989,5988,598B,69AC,598C,598D,598E,5990,5991,598F,5992,5993,5995,5996,5997,59BD,5998,5999,599B,599C,599D,59A0,599F,69AD,59A1,59A2,59AE,59A5,59A6,59A7,59A8,59AA,59AF,59AC,59AB,59AD,59B0,59B2,59B4,59B5,59BF,598A,59B6,59B3,59B7,59B8,59B9,59BA,59BB,59BC,599E,59BE,59A9,59C0,59C1,69AE,59C2,59C3,59C5,59C6, +*0xDFA1 - 0xDFFE:A2E=,59C8,59C9,59CA,59CB,59CC,59CD,59CE,59CF,59D0,59D1,59D2,69AF,59D5,59D3,59D4,69B0,59D6,59D7,59D8,59D9,59DA,59DB,59DD,59DE,59DC,59E0,59E1,69B1,59E2,59E5,59E6,59E7,59E8,59E9,59EA,59EB,59ED,59EE,69B2,59F2,59EF,59F0,59F1,59F3,59F5,59F6,59F8,59EC,59FA,59F9,59F4,59FB,59FC,59FD,59FE,5A41,5A44,5A42,5A43,5A45,5A46,5A47,5A48,69B3,5A4A,5A4B,5A4C,5A4D,5A4E,5A4F,5A50,5A51,5A52,5A55,5A54,5A58,5A59,5A5A,5A5B,5A5C,5A5D,69B4,5A5E,5A5F,5A60,5A61,5A62,5A63,5A57,5A64,69B5,5A65,5A66,5A67, +*0xE0A1 - 0xE0FE:A2E=,5A68,5A69,5A6A,5A6B,5A6C,5A6E,5A6D,5A6F,5A71,5A72,5A73,5A75,5A76,5A77,5A78,5A79,5A7A,5A7B,5A7C,5A7D,5A7E,5A7F,5A80,5A81,5A83,5A84,5A82,5A86,69B6,5A87,5A8A,69B7,5A8B,69B8,5A8D,69B9,5A90,5A91,5A92,5A93,5A8F,5A94,5A95,5A96,5A97,5A98,5A99,5A9A,5A9B,5A9C,5A9D,5A9E,5A9F,69BA,69BB,5AA1,5AA3,5AA6,5AA8,69BC,5AA9,5AAA,5AA4,5AAB,69BD,5AAC,5AAD,5AAE,69BE,69BF,5AB3,5AAF,5AB0,5AB1,5AB2,5AB4,69C0,5AB6,5AB7,5AB5,5AB8,5AB9,5ABA,69C1,5ABB,5ABC,5ABD,5ABE,5ABF,5AC0,69C2,5AC1,5AC2,5AC3, +*0xE1A1 - 0xE1FE:A2E=,5AC4,5AC5,5AC6,5AC7,5AC8,5AC9,5ACA,5ACB,5ACC,5ACD,5ACE,5ACF,5AD0,5AD1,5AD2,5AD3,5AD4,5AD7,5AD5,5AD6,5AD8,5ADB,5AD9,5ADA,5ADC,5ADD,5ADE,5ADF,5AE0,5AE1,5AE2,5AE3,5AE4,5AE6,5AE5,69C3,5AE7,69C4,5AE8,5AE9,5AEA,5AEC,5AED,5AEE,5AEF,5AF0,5AF1,5AF2,5AF3,5AF5,5AF6,5AF7,5AF8,5AF9,69C5,5AFA,5AFB,69C6,69C7,5AFC,5AFD,69C8,5AFE,69C9,5B41,69CA,5B42,5B44,69CB,5B45,69CC,5B46,5B47,5B48,5B49,5B4A,5B4B,5B4C,5B4E,5B4F,5B50,5B51,5B52,5B53,5B56,5B55,5B57,5B58,5B59,5B5A,5B5C,69CD,5B5D,5B5F, +*0xE2A1 - 0xE2FE:A2E=,5B5E,5B60,5B61,5B62,5B63,5B64,5B66,5B67,5B69,5B6A,5B6C,5B68,5B6D,5B6E,69CE,69CF,5B70,5B71,5B73,5B74,5B75,5B76,5B77,5B78,5B79,5B7A,5B7B,5B7C,5B7D,5B7E,5B7F,5B80,5B81,69D0,5B82,5B83,5B84,5B85,5B86,5B87,5B88,69D1,5B89,5B8A,5B8B,5B8C,5B8D,5B8E,5B8F,5B90,5B91,5B92,5B93,5B94,5B95,69D2,5B96,69D3,69D4,5B97,5B98,5BA9,69D5,5B99,5B9A,5B9B,69D6,5B9C,69D7,5B9D,5B9E,5B9F,5BA0,5BA1,5BA2,5BA3,5BA4,5BA5,5BA6,5BA7,69D8,69D9,5BA8,69DA,5BAA,5BAB,5BAC,5BAD,5BAF,5BB0,5BB1,69DB,5BB2,5BB3, +*0xE3A1 - 0xE3FE:A2E=,5BB4,5BB5,5BB6,5BB8,5BBA,5BB9,5BBB,5BBC,5BBD,5BBE,5BBF,5BC0,5BC4,5BC1,5BC2,5BC3,5BC5,5BC6,5BC7,5BC8,5BC9,5BCB,5BCC,5BCD,5BCF,69DC,5BD0,5BD1,5BD2,5BD3,5BD4,5BD5,5BD6,5BD7,5BD8,5BD9,5BDA,5BDB,5BDE,5BDF,5BE0,5BDC,5BE2,5BE1,5BE3,69DD,5BE4,5BE5,5BE6,5BE7,5BE8,5BE9,5BEA,5BEB,5BEC,5BED,69DE,69DF,5BEE,5BEF,5BF0,5BF1,5BF2,69E0,5BF3,5BF4,5BF5,5BF6,5BF7,5BF8,5BF9,5BFA,5BFB,5BFD,5BFE,5C41,5C42,5C43,5C44,69E1,5C45,5C46,5C47,5C48,5C49,5C4A,5C4B,5C4C,5C4D,5C4E,5C50,5C51,5C52,5C54, +*0xE4A1 - 0xE4FE:A2E=,5C53,5C55,5C56,5C57,5C58,69E2,5C59,5C5A,5C5B,5C5C,5C5D,5C5E,5C5F,5C60,69E3,5C61,5C62,5C63,5C64,5C65,69E4,5C66,5C67,5C68,5C69,5C6A,5C6B,5C6C,5C6D,5C6E,5C6F,5C70,69E5,5C72,5C71,5C73,5C74,5C75,69E6,69E7,5C77,69E8,5C78,5C79,5C7A,5C7B,5C7C,5C7D,5C7E,5C7F,5C81,5C82,69E9,5C85,5C86,5C87,5C89,69EA,69EB,5C8B,5C8C,5C8D,5C8E,5C8F,5C91,5C93,5C94,5C95,5C96,5C97,5C98,5C99,5C9A,5C9B,5C9C,5C9E,5C9F,5CAA,5CA0,5CA1,5CA2,5CA6,5CA4,5CA7,5CA9,5CAB,5CAC,5CAE,69EC,5CAF,5CB0,69ED,5CB1,5CB3, +*0xE5A1 - 0xE5FE:A2E=,5CB4,5CB5,5CB6,5CB7,5CB8,5CB9,5CBA,5CBB,5CC2,5CBD,5CBE,5CBF,5CC0,5CC1,5CC3,5CC4,69EE,69EF,5CC7,5CC8,5CC9,69F0,5CCA,5CCB,69F1,5CCC,69F2,69F3,5CCD,5CCE,5CCF,5CD0,5CD1,5CD2,5CD3,69F4,5CD4,5CD5,5CD6,5CD7,5CD8,5CDA,5CDB,69F5,5CD9,69F6,5CDC,69F7,5CDE,69F8,5CDF,5CE0,5CE1,69F9,5CE2,5CE3,5CE4,5CE6,5CE7,69FA,5CE8,5CE9,5CEA,5CEB,5CEC,5CED,5CEE,5CEF,5CF0,5CF1,5CF2,5CF3,5CF4,5CF5,5CF6,5CF7,5CF8,69FB,69FC,5CF9,5CFA,5CFB,5CFC,5CFD,5CFE,5D41,69FD,5D43,5D44,69FE,6A41,6A42,5D45,6A43, +*0xE6A1 - 0xE6FE:A2E=,6A44,5D46,5D47,6A45,6A46,6A47,6A48,5D48,6A49,6A4A,6A4B,6A4C,6A4D,5D49,6A4E,6A4F,6A50,5D4A,6A51,5D4B,5D4D,5D4E,6A52,6A53,5D4F,5D50,5D51,6A54,5D52,5D53,5D54,5D55,5D56,5D57,5D58,6A55,5D59,6A56,6A57,5D5A,6A58,5D5B,5D5C,6A59,5D5D,5D5F,5D5E,5D60,5D61,6A5A,5D62,5D63,5D64,6A5B,5D65,5D66,6A5C,5D67,5D68,6A5D,5D69,5D6A,6A5E,6A5F,6A60,5D6E,5D70,6A61,6A62,6A63,5D71,6A64,5D72,6A65,6A66,5D73,5D74,5D75,6A67,5D76,6A68,5D77,5D78,5D79,6A69,6A6A,6A6B,5D7B,6A6C,5D7C,5D7D,6A6D,5D80,5D7F, +*0xE7A1 - 0xE7FE:A2E=,6A6E,5D81,5D83,5D7E,5D84,6A6F,5D85,5D86,6A70,6A71,5D87,6A72,6A73,6A74,5D89,6A75,5D8A,5D8B,5D8C,5D8D,5D8E,5D8F,6A76,5D90,6A77,5D91,6A78,6A79,5D92,6A7A,6A7B,5D93,5D94,5D95,5D96,6A7C,5D97,6A7D,6A7E,5D98,5D99,5D9A,6A7F,6A80,6A81,6A82,6A83,6A84,6A85,5D9B,6A86,5D9C,5D9D,5D9E,6A87,5D9F,5DA0,5DA2,6A88,5DA4,5DA6,5DA7,6A89,5DA8,5DA9,5DAA,5DAB,6A8A,5DAC,6A8B,5DAD,5DAE,5DAF,5DB0,6A8C,5DB1,5DB2,5DC4,5DB3,5DB4,6A8D,5DB5,5DB6,5DB7,5DB8,5DB9,5DBA,6A8E,6A8F,5DBB,5DBC,5DBD,5DBE,6A90, +*0xE8A1 - 0xE8FE:A2E=,5DBF,6A91,5DC0,6A92,5DC1,5DC2,6A93,6A94,5DC5,5DC6,5DC7,5DC8,5DC9,5DCB,5DCC,5DCD,5DCE,6A95,5DD0,5DD2,5DD3,5DD6,5DD4,5DD7,5DD5,5DD8,5DD9,5DDA,6A96,5DDB,5DDC,5DDD,6A97,5DE1,5DDE,5DDF,5DE0,5DE2,5DE3,5DE4,6A98,6A99,5DE5,5DE6,6A9A,5DE7,5DE8,5DE9,5DEA,6A9B,5DEB,5DEC,5DED,5DEE,5DEF,5DF0,5DF1,5DF2,5DF3,5DF4,5DF5,5DF6,6A9C,5DF7,5DF8,5DF9,6A9D,5DFA,5DFB,5DFC,6A9E,6A9F,5DFD,5DFE,5E41,5E42,5E43,5E44,6AA0,6AA1,6AA2,5E45,5E46,5E47,6AA3,5E48,6AA4,5E49,5E4B,5E4C,6AA5,6AA6,5E4D,6AA7, +*0xE9A1 - 0xE9FE:A2E=,5E4E,5E4F,5E50,5E51,5E52,5E4A,6AA8,5E54,5E55,5E56,5E57,6AA9,5E58,5E59,5E5B,5E5C,5E5D,6AAA,5E5E,5E5A,6AAB,5E5F,5E63,5E60,6AAC,6AAD,5E61,5E62,6AAE,5E64,6AAF,5E65,5E66,5E67,5E68,5E69,6AB0,5E6A,5E6C,5E6D,5E6F,5E70,5E71,6AB1,5E7C,5E72,5E73,5E74,5E75,5E76,5E77,5E79,5E7A,5E7B,5E7D,5E7E,6AB2,5E7F,6AB3,6AB4,5E80,5E81,5E82,5E83,6AB5,5E84,5E85,6AB6,5E86,5E87,5E88,5E89,6AB7,5E8A,5E8B,5E8C,6AB8,6AB9,5E8D,5E8E,6ABA,5E8F,5E90,5E91,5E92,5E93,5E94,6ABB,5E95,6ABC,6ABD,5E96,5E97,6ABE, +*0xEAA1 - 0xEAFE:A2E=,5E98,5E99,5E9A,5E9B,5E9D,5E9E,6ABF,5E9F,5EA0,5EA1,5EA2,5EA3,5EA5,5EA4,5EA7,5EA8,6AC0,5EA9,5EAA,5EAB,5EAC,6AC1,6AC2,6AC3,5EAD,5EA6,5EAE,5EAF,5EB0,5EB2,5EB3,5EB4,6AC4,5EB5,5EB6,5EB7,5EB8,5EB9,5EBA,5EBB,5EBC,5EBD,5EBE,5EBF,5EC0,5EC4,5EC1,5EC3,6AC5,5EC5,5EC6,5EC7,5EC8,5EC9,5ECA,5ECB,6AC6,5ECC,5ECD,6AC7,5ECF,5ED0,5ED1,5ED2,5ED3,5ED5,5ED6,5ED7,6AC8,5ED9,5EDA,5EDC,5EDD,5ED8,5EDF,5EE0,5EE1,5EE2,5EE4,5EE3,5EE5,5ED4,5EE6,6AC9,5EE7,5EE8,6ACA,5EE9,6ACB,5EEA,6ACC,6ACD,5EEB,6ACE, +*0xEBA1 - 0xEBFE:A2E=,5EEC,5EED,6ACF,6AD0,5EEE,5EEF,6AD1,5EF0,6AD2,6AD3,5EF1,5EF2,5EF3,5EF5,5EF6,5EF7,5EF8,5EFA,5EF9,5EFB,5EFC,5EFD,5EFE,5F41,5F42,6AD4,6AD5,6AD6,6AD7,5F44,5F45,5F46,6AD8,6AD9,5F48,5F49,5F4A,6ADA,6ADB,5F4B,5F4C,5F4D,6ADC,6ADD,6ADE,5F4E,6ADF,6AE0,6AE1,6AE2,5F4F,5F50,6AE3,5F51,5F52,6AE4,5F53,5F54,5F55,5F57,5F5A,5F59,5F5B,5F5D,5F5E,5F5F,5F60,5F61,5F63,5F62,5F65,5F66,5F67,5F68,5F69,5F6A,5F6B,5F6C,5F6D,5F6E,5F71,5F72,5F73,5F74,6AE5,5F75,5F6F,5F70,5F76,5F77,6AE6,5F78,5F79,5F7A, +*0xECA1 - 0xECFE:A2E=,5F7B,5F7C,5F7D,5F7E,5F7F,6AE7,6AE8,5F80,5F81,6AE9,5F82,5F84,5F85,5F86,5F87,6AEA,6AEB,6AEC,5F89,5F8A,6AED,5F8B,5F8C,6AEE,5F8D,6AEF,5F8E,5F8F,6AF0,6AF1,5F90,6AF2,6AF3,6AF4,5F83,6AF5,6AF6,6AF7,5F91,5F92,6AF8,6AF9,5F94,5F96,5F97,5F98,5F95,6AFA,5F99,5F9A,5F9C,5F9D,6AFB,5F9E,5F9F,5FA0,5FA1,5FA2,5FA3,5FA4,6AFC,6AFD,6AFE,6B41,6B42,6B43,5FA5,6B44,5FA6,5FA7,6B45,6B46,5FA8,6B47,5FA9,5FAA,5FAB,5FAC,5FAD,5FAE,5FAF,5FB0,5FB1,5FB2,5FB3,6B48,6B49,6B4A,5FB4,6B4B,5FB5,5FB6,5FB7,6B4C, +*0xEDA1 - 0xEDFE:A2E=,6B4D,6B4E,6B4F,5FB8,5FBA,5FB9,6B50,5FBB,5FBC,5FBD,5FBE,5FBF,5FC0,5FC2,5FC1,5FC3,5FC4,5FC5,5FC6,5FC7,5FC8,5FC9,5FCA,5FCC,5FCE,5FCF,5FD1,6B51,5FD2,5FD3,5FD5,5FD6,5FD8,5FD9,5FDA,5FDB,5FDC,5FDD,5FDF,5FE0,5FE1,5FE2,5FE3,5FE4,5FE5,5FE6,6B52,5FE7,5FE8,5FE9,5FEA,5FEB,5FEC,5FED,5FEF,5FF0,5FF2,5FF3,5FF4,5FF5,5FF6,5FF7,5FF8,6047,5FF9,6048,5FFB,5FFC,5FFD,5FFE,6041,6042,6043,6044,6045,6046,6049,604A,604B,604C,604E,604F,6050,6051,6B53,6052,6053,6054,6055,6056,6058,6059,605A,605B, +*0xEEA1 - 0xEEFE:A2E=,605C,605D,605E,605F,6060,6061,6062,6063,6064,6B54,6065,6066,6B55,6068,6069,606A,606B,606C,606D,606E,606F,6070,6072,6071,6073,6074,6075,6076,6077,6078,607A,607B,607C,607D,607E,607F,6080,6081,6B56,6082,6B57,6083,6084,6086,6088,6089,608A,608B,6B58,6B59,608C,6B5A,608D,608E,608F,6090,6091,6092,6B5B,6093,6094,6095,6096,6098,6B5C,6099,609A,609B,609C,609D,609E,609F,60A0,60A1,6B5D,6B5E,6B5F,60A2,60A3,60A4,60A5,60A6,60A8,6B60,60A9,60AA,60AB,60AD,60AE,60AF,60B0,60B1,60B2,60B3, +*0xEFA1 - 0xEFFE:A2E=,60B4,6B61,60B5,60B6,6B62,60B7,6B63,60B9,60BA,60BB,60BC,60BE,60BF,60C0,60C1,60C2,60C3,6B64,60C4,60C5,60C6,60C7,60C8,60C9,60CA,60CB,6B65,60CD,60CE,60CF,60D0,60D1,60D2,60D3,60D4,60D6,60D7,6B66,60D5,60D8,60D9,60DB,60DC,60DD,60DE,60DF,60E0,60E1,60E2,60E6,60E3,60E7,60E4,60E5,60E8,60E9,60EA,60EB,60EC,60ED,60EE,6B67,60F0,6B68,60F1,60F2,6B69,60F3,60F4,6B6A,6B6B,6B6C,6B6D,6B6E,60F5,60F6,60F7,60F8,60F9,60FA,60FC,6B6F,60FD,60FE,6141,6142,6143,6144,6145,6146,6B70,6147,6148,60FB, +*0xF0A1 - 0xF0FE:A2E=,6149,614A,614B,614C,614D,614E,614F,6150,6151,6152,6153,6155,6156,6159,615A,6158,615B,615C,615D,615F,6160,6161,6162,6163,6164,6165,6166,6168,6167,6169,616B,616D,616E,616F,6170,6171,6172,6173,6174,6175,6176,6177,6178,6179,617A,617B,617C,617D,6B71,617F,6180,6181,6182,6183,6184,6187,6188,618A,618C,618D,618E,618F,6190,6191,6192,6193,6194,6195,6196,6197,6B72,6199,619A,619B,619C,619D,619E,619F,61A0,61A1,61A2,61A3,61A4,61A5,6B73,61A6,61A7,61A9,61AA,61AB,61AC,61AD,61AE,61AF, +*0xF1A1 - 0xF1FE:A2E=,6B74,61B0,61B2,61B3,61B4,61B5,61B6,61B7,61B8,61B9,61BA,61BB,61BC,61BD,6B75,61D5,61BF,61C0,61C1,61C2,61C3,61C4,61BE,61C5,61C6,61C7,61C8,61CA,61CB,6B76,6B77,61C9,61CD,61CE,61D0,61D1,61D2,61D3,61D6,61D7,61D8,61D9,61DA,61DB,61DC,61DE,61DD,61CC,61DF,61E0,61E1,61E2,61E3,61E4,61E5,61E6,6B78,61E7,61E8,61E9,61EA,61EB,61EC,6B79,61ED,61EE,61EF,61F0,61F1,6B7A,61F3,61F4,61F5,61F6,61F7,61F8,61FA,61FB,61FC,61FD,61FE,6241,6242,6245,6243,6244,6246,6247,6B7B,6248,624A,624B,624C,624D, +*0xF2A1 - 0xF2FE:A2E=,624E,624F,6250,6251,6252,6253,6254,6255,6256,6257,6258,6259,625A,625B,6B7C,625C,625E,625F,6261,6260,6262,6263,6264,6265,6266,6B7D,6267,6268,6269,626A,626B,626C,626D,626E,626F,6270,6271,6B7E,6273,6274,6275,6B7F,6276,6B80,6B81,6277,6B82,6278,6279,627A,627B,627C,6B83,627D,627E,627F,6280,6281,6282,6B84,6B85,6B86,6B87,6283,6284,6285,6272,6286,6287,6288,6289,628A,6B88,628B,628D,628E,628F,6290,6B89,6291,6292,628C,6293,6294,6295,6296,6297,6298,6299,6B8A,629A,6B8B,629C,629D, +*0xF3A1 - 0xF3FE:A2E=,6B8C,629B,629E,629F,62A0,62A1,6B8D,62A2,62A4,62A5,62A7,62A6,62A8,62A9,62AA,62A3,62AB,62AC,62AE,62AD,62AF,62B0,62B1,62B2,62B3,62B4,62B5,62B6,62B7,62B8,62B9,62BA,62BB,6B8E,62BC,62BD,62BE,62BF,62C0,62C1,62C3,62C4,62C5,62C6,62C7,62C8,6B8F,62C9,62CA,62CB,62CC,62CD,62CF,62D0,62D1,62D2,6B90,62D4,62D3,62D6,62D7,62D8,62D9,62DA,6B91,62DC,62DD,62DE,62DF,62E0,62E2,62E3,6B92,62E4,62E5,62E6,62E7,62E8,62E9,62EA,62EB,6B93,6B94,62EC,62ED,62EE,62EF,62F0,62F1,62F2,62F3,62F4,62F5,62F6, +*0xF4A1 - 0xF4FE:A2E=,62F8,62F9,62FA,62FB,62FC,6B95,62FD,62FE,6341,6342,6343,6344,6345,6346,6347,6348,6349,6B96,634C,634D,634E,634F,6350,6351,6352,6353,6354,6355,6B97,6357,6358,6359,635A,635B,635C,635D,635E,635F,6360,6361,6363,6364,6362,6365,6366,6367,6B98,6368,6369,636A,636B,636C,636D,636E,636F,6B99,6371,6B9A,6372,6B9B,6373,6374,6375,6376,6377,6378,6379,637A,637B,637C,637D,637E,637F,6380,6382,6383,6384,6385,6386,6387,6388,6389,638B,638C,638D,638E,6390,6391,6B9C,6392,6394,6395,6396,6397, +*0xF5A1 - 0xF5FE:A2E=,6398,6399,639A,639B,639C,639D,639E,639F,63A0,63A1,63A3,6B9D,6B9E,63A4,63A5,63A6,63A7,63A8,63A9,63AA,63AD,63AE,63B0,63B1,63B2,63B3,63B6,63B7,63B8,6B9F,63B9,63BA,63BB,6BA0,6BA1,63BD,63BE,63BF,6BA2,63C1,63C2,63C3,63C4,63C6,63C7,63C8,63C9,63CA,63CB,63CD,63CE,63D0,63D1,63D3,63D4,6BA3,63D5,63D6,63D7,63D8,63D9,63DB,63DA,6BA4,63DC,6BA5,63DE,63E1,63E4,63E3,63E5,63E6,63E7,63E8,63EA,6BA6,63EB,63EC,63ED,63EE,63EF,6BA7,63F0,6BA8,63F1,63F2,63F4,63F5,63F6,63F7,63F8,63F9,63FA,63FB, +*0xF6A1 - 0xF6FE:A2E=,6BA9,63FC,63FD,63FE,6441,6442,6444,6445,6446,6447,6448,644A,644B,644C,644D,644F,644E,6BAA,6450,6451,6452,6453,6454,6455,6456,6458,6466,645A,645B,645C,645D,645E,645F,6460,6462,6BAB,6463,6464,6465,6467,6BAC,6468,6461,6469,646B,646C,646D,646E,646F,6470,6471,6472,6473,6474,6476,6477,6478,6BAD,6479,647A,647B,647C,647D,647E,647F,6480,6BAE,6481,6482,6483,6484,6485,6BAF,6486,6487,6488,6489,6BB0,648A,648B,648C,648D,6BB1,648E,648F,6491,6492,6BB2,6493,6495,6496,6497,6BB3,6498, +*0xF7A1 - 0xF7FE:A2E=,6499,649A,649B,649C,649D,649E,649F,64A0,64A1,64A2,64A3,64A4,64A5,64A6,6BB4,64A7,64A8,64A9,64AA,64AB,64AC,64AD,64AE,6BB5,64AF,64B0,64B1,64B2,64B3,64B4,64B5,64B6,64B7,64B8,64B9,64BA,64BB,64BC,64BD,64BF,64C0,64C1,64C3,64C4,64C5,64C6,64C7,64C8,64C9,64CA,64CB,64CC,64CD,64CE,64CF,64D0,6BB6,64D1,64D2,64D3,64D4,64D5,64D6,64D7,64D8,64D9,64DA,64DB,64DC,6BB7,64DE,64DD,64DF,64E0,64E1,6BB8,64E2,64E3,64E4,64E5,64E6,64E7,64E8,64E9,64EA,64EB,64ED,64EC,64EE,64EF,64F2,64F0,64F1,6BB9, +*0xF8A1 - 0xF8FE:A2E=,64F3,64F4,64F5,64F6,64F7,64F8,64F9,6542,64FA,64FB,64FC,64FD,64FE,6543,6541,6544,6545,6546,6547,6548,6549,654A,654B,654C,654D,654E,654F,6551,6552,6BBA,6553,6554,6555,6BBB,6556,6557,6558,6559,655A,655B,655C,655D,655E,655F,6560,6561,6562,6563,6564,6565,6566,6567,6568,656A,656B,656D,656C,656E,6BBC,656F,6570,6572,6573,6574,6575,6BBD,6577,6578,6579,657A,6BBE,657C,657E,657F,6580,6581,6BBF,6582,6583,6BC0,6584,6585,6586,6587,6588,6589,658A,658B,658C,658D,658E,6BC1,658F,6BC2, +*0xF9A1 - 0xF9FE:A2E=,6591,6592,6594,6595,6596,6597,6593,6598,6599,659A,659B,659D,659E,6BC3,659F,65A0,65A1,65A2,6BC4,65A3,65A4,65A5,6BC5,6BC6,65A7,65A8,65A9,65AA,6BC7,65AB,65AC,65AD,65AE,65AF,65B1,65B0,65B2,65B3,65B4,65B5,65B6,65B7,65B9,65BA,65BB,65BC,65BD,65BE,65BF,65C0,65C1,65C2,6BC8,65C3,65C4,65C7,65C6,65C8,65C9,65CB,65CC,65CD,65CE,65CF,65D0,65D1,65D2,65D3,65D4,65D5,6BC9,65D6,6BCA,65D7,65D8,65D9,65DA,65DB,6BCB,65DC,65DD,65DE,65DF,6BCC,65E0,65E1,65E2,65E3,65E4,65E5,65E6,65E8,65E9,65EA, +*0xFAA1 - 0xFAFE:A2E=,6BCD,65EB,65EC,65ED,65EE,65EF,65F1,65F0,65F2,65F3,65F5,65F6,65F7,6BCE,65F8,65F9,65FA,65FB,65FC,65FD,65FE,6641,6642,6643,6644,6645,6BCF,6646,6647,6648,6649,664B,664A,664C,664D,664E,664F,6650,6651,6652,6653,6654,6BD0,6656,6655,6657,6658,6659,665A,665B,665C,665D,6BD1,665E,665F,6660,6BD2,6BD3,6661,6663,6BD4,6662,6664,6BD5,6665,6666,6667,6668,6669,666A,666B,666C,666D,666E,666F,6670,6671,6672,6674,6675,6676,6677,6678,6679,667A,667D,667C,667E,6680,6681,6682,6686,6683,6684, +*0xFBA1 - 0xFBFE:A2E=,6685,6BD6,6BD7,6687,6BD8,6688,6BD9,6689,6BDA,668A,668B,668C,6BDB,668D,668E,668F,6690,6691,6692,6693,6BDC,6694,6BDD,6695,6696,6697,6698,669A,669C,669B,669D,6BDE,669E,66A0,66B8,669F,6BDF,66A1,66A2,66A3,66A4,66A5,66A6,66A8,66A7,66A9,66AA,6BE0,66AB,66AC,66AD,66AF,66B0,66B1,66B2,6BE1,66B3,6BE2,66B4,66B5,66B6,66B7,6699,66BA,66BB,66BC,66BD,66BE,66BF,66C0,66C1,66C2,66C3,66C4,66C5,66C6,66C7,66C8,66CB,66CA,66CC,66CD,66CE,6BE3,66D0,66D1,66D2,66CF,66D3,66DA,66D4,66D5,66D6,66D8, +*0xFCA1 - 0xFCFE:A2E=,66D7,66D9,66DB,66DC,66DD,6BE4,66DF,66DE,66E0,66E1,66E2,66E3,66E4,66E5,66E7,66E8,6BE5,66EA,66EB,66EC,66EE,66F0,6BE6,66EF,66F1,66F2,66F3,66F4,66F5,66F6,66F7,66F9,66FA,66FB,66FC,66FD,66FE,6BE7,6742,6744,6746,6BE8,6745,6747,6BE9,6BEA,6748,6BEB,6749,6BEC,674A,6BED,674B,674C,6BEE,674D,674E,674F,6750,6751,6BEF,6752,6753,6754,6755,6756,6757,6758,6759,675A,675B,675C,675D,675E,675F,6760,6BF0,6761,6762,6763,6764,6765,6BF1,6766,6BF2,6767,6768,676A,676B,6BF3,676C,676D,6BF4,6BF5, +*0xFDA1 - 0xFDFE:A2E=,676E,676F,6770,6BF6,6771,6772,6773,6774,6775,6776,6777,6BF7,6778,6779,6BF8,6BF9,677B,6BFA,677D,677E,677F,6781,6782,6783,6784,6785,6780,6786,6787,6BFB,6BFC,6788,6789,678A,678B,678C,678D,678E,678F,6790,6791,6792,6793,6794,6795,6796,6797,6798,6799,679A,679B,679E,679C,679D,679F,67A0,67A1,67A3,67A4,6BFD,67A5,67A6,67A7,67A8,6BFE,67AA,67AC,67AB,67AD,67AE,67AF,6C41,67B0,67B1,67BC,67B2,67B3,6C42,67B4,67B5,67B6,67B8,6C43,67B9,6C44,67B7,67BB,67BD,6C45,67BA,67BE,67BF,67C0,67C1, +*0xFEA1 - 0xFEFE:A2E=,D541,D542,D543,D544,D545,D546,D547,D548,D549,D54A,D54B,D54C,D54D,D54E,D54F,D550,D551,D552,D553,D554,D555,D556,D557,D558,D559,D55A,D55B,D55C,D55D,D55E,D55F,D560,D561,D562,D563,D564,D565,D566,D567,D568,D569,D56A,D56B,D56C,D56D,D56E,D56F,D570,D571,D572,D573,D574,D575,D576,D577,D578,D579,D57A,D57B,D57C,D57D,D57E,D57F,D580,D581,D582,D583,D584,D585,D586,D587,D588,D589,D58A,D58B,D58C,D58D,D58E,D58F,D590,D591,D592,D593,D594,D595,D596,D597,D598,D599,D59A,D59B,D59C,D59D,D59E, +*X'4141' -X'41FE:E2A=,A1A2,A1A3,A1A4,A1A5,A1A6,A1A7,A1A8,A1A9,A1AA,A1AB,A1AC,A3FE,A1AE,A1AF,A1B0,A1B1,A1B2,A1B3,A1B4,A1B5,A1B6,A1B7,A1B8,A1B9,A1BA,A1BB,A1BC,A1BD,A1BE,A1BF,A1C0,FFFF,FFFF,FFFF,A1C4,A1C5,A1C6,A1C7,A1C8,A1C9,FFFF,A3DE,A1CC,A1CD,A7A2,A7A3,A7A4,A7A6,A7AE,A7AF,A7B0,A7B7,A7B8,A1D7,A1D8,A1D9,A1DA,A1DB,A1DC,A1DD,A1DE,A1DF,A1E0,A1E1,A1E2,A1E3,A1E4,A1E5,A1E6,A1E7,A1E8,A1E9,A1EA,A1EB,A3DB,A3DD,A1C1,A1C2,A1C3,A1CA,A1CE,A1CF,A1D0,A1D1,A1D2,A1D3,A1D4,A1D5,A1D6,A1EC,A1ED,A1EE,A1EF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'4241' -X'42FE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A1CB,A3AE,A3BC,A3A8,A3AB,A3FC,A3A6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A3A1,A3A4,A3AA,A3A9,A3BB,A1FE,A3AD,A3AF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A3AC,A3A5,A3DF,A3BE,A3BF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A3E0,A3BA,A3A3,A3C0,A3A7,A3BD,A3A2,FFFF,A3E1,A3E2,A3E3,A3E4,A3E5,A3E6,A3E7,A3E8,A3E9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A3EA,A3EB,A3EC,A3ED,A3EE,A3EF,A3F0,A3F1,A3F2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A1AD,A3F3,A3F4,A3F5,A3F6,A3F7,A3F8,A3F9,A3FA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A3FB,A3C1,A3C2,A3C3,A3C4,A3C5,A3C6,A3C7,A3C8,A3C9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A3FD,A3CA,A3CB,A3CC,A3CD,A3CE,A3CF,A3D0,A3D1,A3D2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A3DC,FFFF,A3D3,A3D4,A3D5,A3D6,A3D7,A3D8,A3D9,A3DA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A3B0,A3B1,A3B2,A3B3,A3B4,A3B5,A3B6,A3B7,A3B8,A3B9,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'4341' -X'43FE:E2A=,A4D5,A4D6,A4D7,A4D8,A4D9,A4DA,A4DB,A4DC,A4DD,A4DE,A4DF,A4E0,A4E1,A4E2,A4E3,A4E4,A4E5,A4E6,A4E7,A4E8,A4E9,A4EA,A4EB,A4EC,A4ED,A4EE,A4EF,A4F0,A4F1,A4F2,A4F3,A4F4,A4F5,A4F6,A4F7,A4F8,A4F9,A4FA,A4FB,A4FC,A4FD,A4FE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'4441' -X'44FE:E2A=,AAA1,AAA2,AAA3,AAA4,AAA5,AAA6,AAA7,AAA8,AAA9,AAAA,AAAB,AAAC,AAAD,AAAE,AAAF,AAB0,AAB1,AAB2,AAB3,AAB4,AAB5,AAB6,AAB7,AAB8,AAB9,AABA,AABB,AABC,AABD,AABE,AABF,AAC0,AAC1,AAC2,AAC3,AAC4,AAC5,AAC6,AAC7,AAC8,AAC9,AACA,AACB,AACC,AACD,AACE,AACF,AAD0,AAD1,AAD2,AAD3,AAD4,AAD5,AAD6,AAD7,AAD8,AAD9,AADA,AADB,AADC,AADD,AADE,AADF,AAE0,AAE1,AAE2,AAE3,AAE4,AAE5,AAE6,AAE7,AAE8,AAE9,AAEA,AAEB,AAEC,AAED,AAEE,AAEF,AAF0,AAF1,AAF2,AAF3,AAF4,AAF5,AAF6,AAF7,AAF8,AAF9,AAFA,AAFB,AAFC,AAFD,AAFE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'4541' -X'45FE:E2A=,ABA1,ABA2,ABA3,ABA4,ABA5,ABA6,ABA7,ABA8,ABA9,ABAA,ABAB,ABAC,ABAD,ABAE,ABAF,ABB0,ABB1,ABB2,ABB3,ABB4,ABB5,ABB6,ABB7,ABB8,ABB9,ABBA,ABBB,ABBC,ABBD,ABBE,ABBF,ABC0,ABC1,ABC2,ABC3,ABC4,ABC5,ABC6,ABC7,ABC8,ABC9,ABCA,ABCB,ABCC,ABCD,ABCE,ABCF,ABD0,ABD1,ABD2,ABD3,ABD4,ABD5,ABD6,ABD7,ABD8,ABD9,ABDA,ABDB,ABDC,ABDD,ABDE,ABDF,ABE0,ABE1,ABE2,ABE3,ABE4,ABE5,ABE6,ABE7,ABE8,ABE9,ABEA,ABEB,ABEC,ABED,ABEE,ABEF,ABF0,ABF1,ABF2,ABF3,ABF4,ABF5,ABF6,ABF7,ABF8,ABF9,ABFA,ABFB,ABFC,ABFD,ABFE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'4641' -X'46FE:E2A=,A5A1,A5A2,A5A3,A5A4,A5A5,A5A6,A5A7,A5A8,A5A9,A5AA,A5AB,A5AC,A5AD,A5AE,A5AF,A5B0,A5B1,A5B2,A5B3,A5B4,A5B5,A5B6,A5B7,A5B8,A5B9,A5BA,A5BB,A5BC,A5BD,A5BE,A5BF,A5C0,A5C1,A5C2,A5C3,A5C4,A5C5,A5C6,A5C7,A5C8,A5C9,A5CA,A5CB,A5CC,A5CD,A5CE,A5CF,A5D0,A5D1,A5D2,A5D3,A5D4,A5D5,A5D6,A5D7,A5D8,A5D9,A5DA,A5DB,A5DC,A5DD,A5DE,A5DF,A5E0,A5E1,A5E2,A5E3,A5E4,A5E5,A5E6,A5E7,A5E8,A5E9,A5EA,A5EB,A5EC,A5ED,A5EE,A5EF,A5F0,A5F1,A5F2,A5F3,A5F4,A5F5,A5F6,A5F7,A5F8,A5F9,A5FA,A5FB,A5FC,A5FD,A5FE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'4741' -X'47FE:E2A=,A6A1,A6A2,A6A3,A6A4,A6A5,A6A6,A6A7,A6A8,A6A9,A6AA,A6AB,A6AC,A6AD,A6AE,A6AF,A6B0,A6B1,A6B2,A6B3,A6B4,A6B5,A6B6,A6B7,A6B8,A6B9,A6BA,A6BB,A6BC,A6BD,A6BE,A6BF,A6C0,A6C1,A6C2,A6C3,A6C4,A6C5,A6C6,A6C7,A6C8,A6C9,A6CA,A6CB,A6CC,A6CD,A6CE,A6CF,A6D0,A6D1,A6D2,A6D3,A6D4,A6D5,A6D6,A6D7,A6D8,A6D9,A6DA,A6DB,A6DC,A6DD,A6DE,A6DF,A6E0,A6E1,A6E2,A6E3,A6E4,A6E5,A6E6,A6E7,A6E8,A6E9,A6EA,A6EB,A6EC,A6ED,A6EE,A6EF,A6F0,A6F1,A6F2,A6F3,A6F4,A6F5,A6F6,A6F7,A6F8,A6F9,A6FA,A6FB,A6FC,A6FD,A6FE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'4841' -X'48FE:E2A=,A7A1,A7A5,A7A7,A7A8,A7A9,A7AA,A7AB,A7AC,A7AD,A7B1,A7B2,A7B3,A7B4,A7B5,A7B6,A7B9,A7BA,A7BB,A7BC,A7BD,A7BE,A7BF,A7C0,A7C1,A7C2,A7C3,A7C4,A7C5,A7C6,A7C7,A7C8,A7C9,A7CA,A7CB,A7CC,A7CD,A7CE,A7CF,A7D0,A7D1,A7D2,A7D3,A7D4,A7D5,A7D6,A7D7,A7D8,A7D9,A7DA,A7DB,A7DC,A7DD,A7DE,A7DF,A7E0,A7E1,A7E2,A7E3,A7E4,A7E5,A7E6,A7E7,A7E8,A7E9,A7EA,A7EB,A7EC,A7ED,A7EE,A7EF,A7F0,A7F1,A7F2,A7F3,A7F4,A7F5,A7F6,A7F7,A7F8,A7F9,A7FA,A7FB,A7FC,A7FD,A7FE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'4941' -X'49FE:E2A=,A1F0,A1F1,A1F2,A1F3,A1F4,A1F5,A1F6,A1F7,A1F8,A1F9,A1FA,A1FB,A1FC,A1FD,A2A1,A2A2,A2A3,A2A4,A2A5,A2A6,A2A7,A2A8,A2A9,A2AA,A2AB,A2AC,A2AD,A2AE,A2AF,A2B0,A2B1,A2B2,A2B3,A2B4,A2B5,A2B6,A2B7,A2B8,A2B9,A2BA,A2BB,A2BC,A2BD,A2BE,A2BF,A2C0,A2C1,A2C2,A2C3,A2C4,A2C5,A2C6,A2C7,A2C8,A2C9,A2CA,A2CB,A2CC,A2CD,A2CE,A2CF,A2D0,A2D1,A2D2,A2D3,A2D4,A2D5,A2D6,A2D7,A2D8,A2D9,A2DA,A2DB,A2DC,A2DD,A2DE,A2DF,A2E0,A2E1,A2E2,A2E3,A2E4,A2E5,A3A2,A2E7,A2E8,A2E9,A2EA,A2EB,A2EC,A2ED,A2EE,A2EF,A2F0,A2F1,A2F2,A2F3,A2F4,A2F5,A2F6,A2F7,A2F8,A2F9,A2FA,A2FB,A2FC,A2FD,A2FE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'4A41' -X'4AFE:E2A=,ACA1,ACA2,ACA3,ACA4,ACA5,ACA6,ACA7,ACA8,ACA9,ACAA,ACAB,ACAC,ACAD,ACAE,ACAF,ACB0,ACB1,ACB2,ACB3,ACB4,ACB5,ACB6,ACB7,ACB8,ACB9,ACBA,ACBB,ACBC,ACBD,ACBE,ACBF,ACC0,ACC1,ACD1,ACD2,ACD3,ACD4,ACD5,ACD6,ACD7,ACD8,ACD9,ACDA,ACDB,ACDC,ACDD,ACDE,ACDF,ACE0,ACE1,ACE2,ACE3,ACE4,ACE5,ACE6,ACE7,ACE8,ACE9,ACEA,ACEB,ACEC,ACED,ACEE,ACF0,ACEF,ACF1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,ACF2,ACF3,ACF4,ACF5,ACF6,ACF7,ACF8,ACF9,ACFA,ACFB,ACFC,ACFD,ACFE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'4B41' -X'4BFE:E2A=,A8A1,A8A2,A8A3,A8A4,A8A5,A8A6,A8A7,A8A8,A8A9,A8AA,A8AB,A8AC,A8AD,A8AE,A8AF,A8B0,A8B1,A8B2,A8B3,A8B4,A8B5,A8B6,A8B7,A8B8,A8B9,A8BA,A8BB,A8BC,A8BD,A8BE,A8BF,A8C0,A8C1,A8C2,A8C3,A8C4,A8C5,A8C6,A8C7,A8C8,A8C9,A8CA,A8CB,A8CC,A8CD,A8CE,A8CF,A8D0,A8D1,A8D2,A8D3,A8D4,A8D5,A8D6,A8D7,A8D8,A8D9,A8DA,A8DB,A8DC,A8DD,A8DE,A8DF,A8E0,A8E1,A8E2,A8E3,A8E4,A8E5,A8E6,A8E7,A8E8,A8E9,A8EA,A8EB,A8EC,A8ED,A8EE,A8EF,A8F0,A8F1,A8F2,A8F3,A8F4,A8F5,A8F6,A8F7,A8F8,A8F9,A8FA,A8FB,A8FC,A8FD,A8FE,FFFF,A9A1,A9A2,A9A3,A9A4,A9A5,A9A6,A9A7,A9A8,A9A9,A9AA,A9AB,A9AC,A9AD,A9AE,A9AF,A9B0,A9B1,A9B2,A9B3,A9B4,A9B5,A9B6,A9B7,A9B8,A9B9,A9BA,A9BB,A9BC,A9BD,A9BE,A9BF,A9C0,A9C1,A9C2,A9C3,A9C4,A9C5,A9C6,A9C7,A9C8,A9C9,A9CA,A9CB,A9CC,A9CD,A9CE,A9CF,A9D0,A9D1,A9D2,A9D3,A9D4,A9D5,A9D6,A9D7,A9D8,A9D9,A9DA,A9DB,A9DC,A9DD,A9DE,A9DF,A9E0,A9E1,A9E2,A9E3,A9E4,A9E5,A9E6,A9E7,A9E8,A9E9,A9EA,A9EB,A9EC,A9ED,A9EE,A9EF,A9F0,A9F1,A9F2,A9F3,A9F4,A9F5,A9F6,A9F7,A9F8,A9F9,A9FA,A9FB,A9FC,A9FD,A9FE,FFFF, +*X'4C41' -X'4CFE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'4D41' -X'4DFE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'4E41' -X'4EFE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'4F41' -X'4FFE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'5041' -X'50FE:E2A=,CAA1,CAA2,CAA3,CAA4,CAA5,CAA6,CAA7,CAA8,CAA9,CAAA,CAAB,CAAC,CAAF,CAAD,CAB0,CAB3,CAB4,CAB5,CAB6,CAB7,CAB8,CAB9,CABA,CABB,CABC,CABD,CABE,CABF,CAC0,FFFF,CAC1,FFFF,CAC3,CAC4,CAC5,CAC6,CAC7,CAC8,CACA,CACB,CACC,CACD,CACE,CACF,CAD0,CAD1,CAD2,CAD5,CAD6,CAD7,CAD9,CADA,CADB,CADD,CADE,CADC,CADF,CAE0,CAE1,CAE2,CAE3,CAE4,CAE5,CAE6,CAE8,FFFF,CAE7,CAEA,CAEB,CAEC,CAED,CAEE,CAEF,CAF0,CAF2,CAF3,CAF4,CAF5,CAF6,CAF7,CAF8,CAFA,FFFF,CAFC,CAFE,CBA1,CBA2,CBA3,CBA4,CBA5,CBA6,CBAA,CBA7,CBA9,CBAB,CBAC,CBAD,CBAE,CBAF,CBB0,CBB2,CBB5,CBBA,CBB3,CBB7,CBB9,CBBB,CBBC,CBBD,CBBF,CBC0,CBC1,CBC2,CBC4,CBC5,CBC6,CBC7,CBC8,CBC9,CBCA,CBCB,CBCC,CBCD,CBCE,CBCF,CBD2,CBD4,CBD5,CBD6,CBD7,CBD8,CBD9,CBDB,CBDC,CBDD,CBDE,CBDF,CBE0,CBE2,CBE3,CBE1,CBE5,CBE8,CBE7,FFFF,CBEA,CBEB,CBEC,CBED,CBEE,CBEF,CBF0,CBF3,CBF4,CBF5,CBF6,CBF7,CBF8,CBF9,CBFB,CBFC,CBFE,CCA1,CCA3,CCA4,CCA5,CCA7,CCA8,CCA9,CCAA,CCAB,CCAC,CCAD,CCAF,CCB0,FFFF,CCB1,CCB7,CCB2,CCB3,CCB4,CCB5,CCB6,CCB8,CCB9,CCBA,CCBB,CCBE,CCBD,CCBF, +*X'5141' -X'51FE:E2A=,CCC0,CCC1,CCC2,CCC3,CCC4,FFFF,CCC5,CCC7,CCC8,CCCB,CCCD,CCCE,CCCF,FFFF,CCD1,CCD2,CCD3,CCD4,CCD9,FFFF,CCD6,CCD7,CCD8,CCDA,CCDB,FFFF,CCDC,CCDD,FFFF,CCDF,CCE1,FFFF,CCE2,CCE3,CCE4,CCE5,CCE6,CCE7,CCE8,CCE9,CCEA,CCEB,CCEC,CCED,CCEE,CCEF,CCF0,CCF1,CCF2,CCF3,CCF4,CCF5,CCF6,CCF8,CCF9,CCFA,CCFB,CCFC,CCFD,CCFE,CDA2,CDA3,CDA4,CDA5,FFFF,CDA6,CDA7,CDA8,CDA9,CDAA,CDAB,CDAD,CDAC,FFFF,CDAE,CDB0,CDAF,CDB1,CDB2,CDB3,CDB4,CDB5,CDB7,CDB8,CDB9,CDBA,CDBB,CDBD,FFFF,CDBF,CDC0,CDC1,CDCC,FFFF,CDC3,CDC2,CDC5,CDC6,CDC7,CDC8,CDCB,CDCD,FFFF,CDCE,CDCF,CDD0,CDD1,CDD2,CDD3,CDD4,CDD5,CDD6,CDD7,CDD8,CDD9,CDDA,CDDB,CDDC,CDDD,CDDE,CDDF,CDE0,CDE1,CDE2,CDE3,CDE5,CDE7,CDE8,CDE9,CDEA,CDEB,CDEC,CDED,CDEE,CDEF,CDF8,CDF1,CDF0,CDF2,CDF3,CDF4,FFFF,FFFF,CDF6,FFFF,CDFB,CDFC,CDFD,CDFE,CEA1,CEA2,FFFF,CEA3,CEA4,CEA6,CEA8,CEA9,CEAA,CEAB,CEAC,FFFF,CEAD,CEAE,CEAF,CEB0,CEB1,CEB2,CEB6,CEB3,CEB4,FFFF,CEB7,CEB8,CEB9,CEBA,CEBB,CEBC,CEBD,FFFF,CEBE,CEBF,CEC0,CEC1,CEC3,CEC4,CEC5,CEC6,CEC7,CEC8,CECA, +*X'5241' -X'52FE:E2A=,CECB,CECC,CECD,CECE,CECF,CED0,CED1,CED2,CED3,CED4,CED5,CED6,CED7,CED8,CED9,CEDA,CEDB,CEDC,CEDD,CEDE,CEDF,CEE0,CEE1,CEE2,CEE3,CEE4,CEE5,CEE7,CEE6,CEE8,CEE9,CEEA,CEEB,CEEC,CEED,CEEE,CEEF,CEF0,CEF1,CEF2,CEF3,CEF4,FFFF,CEF5,CEF6,CEF7,CEF8,CEF9,CEFA,CEFB,FFFF,CEFC,FFFF,CEFD,CEFE,CFA1,CFA2,CFA3,CFA4,CFA5,CFA7,FFFF,FFFF,CFA8,CFA9,CFAA,CFAB,CFAC,CFAD,FFFF,CFAE,CFAF,CFB0,CFB1,CFB2,CFB3,CFB4,CFB5,CFB6,CFB7,CFB8,CFB9,FFFF,CFBA,CFBB,CFBC,CFBD,CFC5,CFBF,CFC0,CFC1,CFC2,CFC3,FFFF,CFC4,CFC6,CFC7,CFC8,CFC9,FFFF,CFCB,CFCC,CFCD,CFCE,CFCF,CFD0,CFD1,FFFF,CFD2,CFD3,CFD5,CFD7,CFD8,CFDA,CFD6,CFDB,CFDC,CFDD,CFDE,CFDF,CFE0,CFE1,CFE2,CFE3,CFE5,CFE6,CFE7,CFE8,CFE9,CFEA,CFEB,CFED,CFEF,CFF0,CFF3,CFF4,CFF5,CFF6,CFF7,CFF8,FFFF,CFF9,CFFA,CFFD,CFFE,D0A1,D0A2,D0A3,D0A4,D0A5,D0A6,D0A8,D0A9,D0AA,D0AD,D0AC,D0AE,D0AF,D0B0,D0B1,D0B3,D0B5,D0B6,D0B7,D0B8,D0B9,D0BA,D0BB,D0BC,D0BD,D0BF,D0BE,D0C0,D0C1,D0C3,FFFF,D0C4,D0C5,D0C6,D0C7,FFFF,D0C8,D0C9,D0CA,D0CB,D0CC,D0CD,D0CE,D0CF,D0D0, +*X'5341' -X'53FE:E2A=,D0D1,D0D3,D0D5,D0D6,D0D7,D0D8,D0DB,D0DA,D0DC,D0DD,D0DE,D0E0,FFFF,D0E1,D0E2,D0E3,FFFF,D0E4,D0E5,D0E6,D0E7,D0E8,D0E9,D0EA,D0EB,D0EC,D0ED,D0EE,D0EF,D0F0,D0F1,D0F3,D0F4,D0F5,D0F6,D0F7,D1C2,D0F8,D0FA,D0F9,D0FB,D0FC,D0FD,D0FE,D1A2,D1A3,D1A4,D1A5,D1A6,D1A7,D1A8,D1A9,D1AA,D1AB,D1AD,D1AE,D1B0,D1B1,D1B2,D1B3,D1B4,D1B6,D1B7,D1B8,D1B9,D1BA,D1BB,FFFF,D1BD,D1BE,D1BF,D1A1,D1C0,D1C1,D1C3,D1C4,D1C6,D1C7,D1C8,D1C9,D1CA,FFFF,D1CB,D1CC,D1CD,D1CE,D1CF,D1D0,D1D1,FFFF,D1D2,D1D3,D1D7,D1D9,D1DA,FFFF,D1E1,D1E7,D1EC,D1EE,D1F1,D1F4,D1F3,D1F5,FFFF,D1FB,D2A1,D2A5,D2A6,FFFF,D2AC,D2AE,D2AF,D2B0,D2B1,FFFF,D2B3,D2B4,D2B6,D2B7,D2B8,D2B9,D2BA,FFFF,D2BB,FFFF,D2BD,D2BF,FFFF,D2C0,D2C1,D2C5,D2D8,D2DB,D2DC,D2DD,D2E0,D2E3,FFFF,D2EC,D2ED,D2EF,D2F6,D2F9,D2FA,D2FB,D2FC,D2FD,D2FE,D3A1,D3A3,D3A4,D3A5,D3A6,D3A8,D3A9,D3AA,D3AB,D3AC,D3AD,D3AE,D3AF,D3B0,D3B1,D3B2,D3B3,D3B4,FFFF,FFFF,D3B5,D3B7,D3B8,D3B9,FFFF,FFFF,D3BA,D3BD,D3BE,D3BF,D3C1,D3C2,D3C3,D3C4,D3C5,D3C7,D3C8,D3C9,D3CB,D3CD,D3CE, +*X'5441' -X'54FE:E2A=,D3CF,FFFF,D3D1,D3D2,D3D3,D3D0,D3D5,D3D6,D3D7,D3D8,FFFF,D3DA,D3DB,D3DC,D3DE,D3DF,D3E0,D3E1,D3E2,D3E3,D3E4,D3E5,FFFF,D3E6,D3E7,D3E8,D3E9,D3EA,D3EB,D3EC,D3ED,D3EE,D3EF,D3F0,D3F1,D3F2,D3F3,D3F4,D3F5,D3F6,D3F8,D3F9,D3FA,D3FB,D3FD,D3FE,D4A1,D4A3,D4A4,D4A5,D4A6,D4A7,D4A8,D4A9,D4AA,D4AB,D4AC,FFFF,D4AE,D4AF,D4B0,D4B1,D4B2,D4B3,D4B4,D4B5,D4B6,D4B7,D4B8,D4B9,D4BA,D4BB,D4BC,D4BD,D4BE,D4BF,D4C0,D4C1,D4C2,D4C3,D4C4,D4C6,D4C7,D4C9,D4CA,D4CB,FFFF,D4CC,D4CD,D4CE,D4CF,D4D0,D4D1,D4D2,FFFF,D4D3,D4D4,D4D5,D4D6,D4D7,D4D8,D4DB,D4D9,D4DA,D4DD,D4DC,D4DE,D4DF,D4E0,D4E1,D4E2,D4E3,D4E4,D4E5,FFFF,FFFF,D4E6,D4E7,D4E9,D4EA,D4EB,D4ED,D4EE,D4EF,D4F0,D4F2,FFFF,FFFF,D4F3,D4F4,D4F5,D4F6,D4F7,D4F8,FFFF,D4F9,D4FA,D4FB,D4FD,D4FE,D5A1,D5A2,D5A3,D5A4,D5A5,D5A6,D5A7,FFFF,D5A8,D5A9,D5AA,D5AC,D5AD,D5AF,D5B0,FFFF,D5B1,D5B2,D5B3,D5B4,D5B5,D5B6,D5B7,FFFF,D5B8,D5B9,D5BA,D5BB,D5BC,D5BD,D5BE,D5BF,D5C0,D5C1,D5C2,D5C3,D5C4,D5C5,D5C6,D5C7,FFFF,D5C8,D5C9,D5CA,D5CB,D5CC,D5CD,D5CE,D5D1,D5D2, +*X'5541' -X'55FE:E2A=,D5D3,D5D4,D5D5,D5D7,D5D6,D5D8,D5D9,FFFF,D5DA,D5DB,D5DC,D5DD,D5DE,D5DF,D5E0,D5E1,FFFF,D5E2,D5E4,D5E5,D5E6,D5E8,D5E9,D5EA,D5EB,FFFF,D5EC,FFFF,D5ED,D5E7,D5EE,FFFF,FFFF,D5EF,D5F0,D5F1,D5F2,D5F3,D5F4,D5F6,D5F5,FFFF,D5F7,D5F8,D5F9,D5FA,D5FB,D5FC,D5FD,D5FE,D6A1,D6A3,D6A4,D6A5,D6A6,D6A7,D6A8,D6A9,D6AB,D6AA,D6AC,D6AD,D6AE,D6AF,D6B0,D6B1,D6B2,D6B3,D6B4,FFFF,D6B5,D6B6,D6B7,D6BA,D6BB,FFFF,FFFF,D6BC,D6BE,D6BF,FFFF,FFFF,D6C1,D6C3,D6C4,D6C2,D6C5,D6C6,D6C7,D6C9,D6CA,D6CB,D6CC,D6CE,D6D0,FFFF,D6D3,D6D2,D6D4,D6D5,FFFF,D6D6,D6D7,D6D8,D6D9,FFFF,D6DA,D6DB,D6DC,D6DD,FFFF,D6DE,FFFF,D6E0,FFFF,D6E2,D6E4,D6E3,D6E5,D6E6,D6E7,D6E8,D6E9,D6EA,D6EB,D6EC,D6ED,D6EF,D6F0,FFFF,FFFF,FFFF,D6F3,D6F1,D6F4,D6F5,D6F6,FFFF,D6F7,D6F8,D6FA,D6FB,D6FC,D6F9,D6FD,D6FE,D7A1,D7A3,FFFF,D7A4,D7A6,D7A7,D7A8,D7A9,D7AB,D7AC,D7AE,D7B0,FFFF,D7B1,D7B3,D7B4,D7B5,D7B6,D7B8,D7B9,D7BA,D7BB,D7BC,D7BD,D7BE,D7BF,D7C0,D7C1,D7C3,D7C4,D7C5,D7C6,D7C7,D7C8,D7C9,D7CA,D7CB,FFFF,D7CC,D7CE,D7CD,FFFF,FFFF,D7D0, +*X'5641' -X'56FE:E2A=,D7D1,D7D2,D7D3,D7D4,D7D5,D7D6,D7D7,D7D8,D7D9,D7DB,D7DC,FFFF,D7DD,D7DE,FFFF,D7E0,D7E1,D7E2,D7E3,D7E5,FFFF,D7E7,D7E6,FFFF,D7EA,D7EC,D7ED,D7EE,FFFF,D7EF,D7F0,D7F2,D7F3,D7F4,D7F5,D7F6,D7F7,D7F8,D7F9,D7FA,D7FB,FFFF,D7FC,D7FD,FFFF,D7FE,D8A1,D8A2,D8A3,FFFF,D8A4,D8A5,D8A6,D8A8,FFFF,D8A9,D8AA,D8AB,D8AC,D8AD,D8AE,D8AF,D8B0,D8B4,D8B5,D8B6,D8B7,D8B8,D8B9,D8BA,D8BB,D8BC,D8BD,D8BE,D8BF,D8C0,D8C1,FFFF,D8C2,FFFF,D8C3,FFFF,D8C4,D8C6,D8C7,D8C8,D8CA,D8CB,D8CC,D8CD,D8CE,D8CF,D8D0,D8D1,D8D2,D8D3,D8D4,D8D5,D8D7,FFFF,D8D8,D8D9,D8DA,D8DB,D8DC,D8DD,D8DE,D8DF,D8E0,FFFF,D8E1,FFFF,D8E2,D8E3,D8E4,D8E5,D8E6,FFFF,D8E7,D8E8,D8E9,D8EA,D8EB,D8EC,D8ED,D8EF,D8EE,D8F0,D8F1,D8F2,FFFF,D8F3,D8F5,D8F4,D8F6,D8F8,D8F9,D8FA,D8FB,D8FC,D8FD,D8FE,D9A1,D9A4,D9A2,D9A3,D9B0,D9A5,D9A6,D9A8,D9A9,D9AB,D9AD,D9AE,D9AF,D9B1,D9B2,D9B4,D9B6,D9B5,D9B7,D9B8,D9BA,D9B3,D9BB,D9BC,D9BD,D9BE,D9BF,D9C0,D9C2,D9C3,FFFF,D9C4,D9C6,D9C7,D9C8,D9C9,FFFF,D9CA,D9CB,D9CC,D9CD,D9CE,D9CF,D9D1,D9D2,D9D3,D9D4,FFFF, +*X'5741' -X'57FE:E2A=,FFFF,D9D5,D9D6,D9D7,D9D8,D9D9,D9DA,D9DB,D9DC,D9DD,D9DE,D9E0,D9E1,D9E2,D9E3,D9E5,D9E6,D9E7,D9E8,D9E9,D9EB,D9EC,D9ED,D9EF,D9F0,D9F1,D9F2,D9F3,D9F4,D9F5,D9F6,D9F7,D9F8,D9F9,D9FB,D9FC,D9FE,DAA1,DAA3,DAA2,DAA5,DAA6,D9FD,DAA4,DAA8,DAAA,DAAB,DAAC,DAAD,DAAE,DABC,DAAF,DAB0,DAB1,DAB4,FFFF,DAB6,DAB7,FFFF,DAB8,DAB9,DABA,DABB,DABF,DAC0,DAC1,DAC2,DAC4,DAC3,DAC5,DAC6,DAC7,DAC8,DACA,FFFF,DACB,DACC,DACD,FFFF,DACE,DACF,DAD0,DAD1,DAD2,DAD3,DAD4,FFFF,DAD5,FFFF,DAD6,DAD7,DAD8,DADA,DAD9,DADB,DADC,DADD,DADE,DADF,DAE0,DAE1,DAE2,DAE3,DAE4,DAE5,DAE6,DAE7,DAE8,DAE9,DAEB,DAEA,DAEC,DAED,DAEF,DAF2,DAF3,DAF4,FFFF,DAF6,DAF5,DAF7,DAF8,DAF9,DAFA,DAFB,DAFE,DAFC,DBA1,DBA2,DBA3,DBA4,DBA5,DBA6,DBA7,DBA8,DBA9,DBAA,DBAB,DBAC,DBAD,DBAE,DBAF,DBB0,DBB1,DBB2,DBB4,DBB7,DBB8,DBB9,DBBA,DBBB,DBBC,DBBD,DBBE,DBBF,DBC0,DBC1,FFFF,FFFF,DBC2,DBC4,DBC3,DBC5,DBC6,DBC7,DBC8,DBC9,DBCA,DBCB,DBCD,DBCF,DBCE,DBD1,DBD0,DBD2,DBD3,DBD4,DBD5,DBD6,DBD7,DBD8,DBD9,DBDA,DBDB,DBDC,DBDD,DBDE,DBE0,FFFF,DBE1, +*X'5841' -X'58FE:E2A=,DBE3,DBE4,DBE5,FFFF,DBE6,DBE7,DBE8,DBE9,DBEA,DBEB,DBEC,DBED,DBEE,DBEF,DBF0,DBF1,DBF2,DBF3,DBF4,DBF5,DBF6,DBF7,DBF8,DBF9,DBFA,DBFB,DBFD,DBFE,DCA1,FFFF,DCA3,DCA4,DCA5,DCA6,DCA7,FFFF,FFFF,DCA8,DCA9,DCAA,FFFF,DCAB,FFFF,DCAC,FFFF,DCAD,DCAE,DCAF,DCB0,DCB1,DCB2,DCB3,DCB4,DCB5,DCB6,DCB7,DCB9,DCBA,DCBB,DCBD,DCBC,DCBE,FFFF,DCBF,DCC1,DCC2,DCC3,DCC4,DCC5,DCC6,DCC8,DCC7,DCC9,DCCB,DCCD,DCCE,DCCF,DCD0,FFFF,FFFF,DCD1,DCD2,DCD3,DCD4,DCD5,DCD6,DCD8,DCD7,DCD9,DCDA,DCDB,DCDD,FFFF,DCDC,DCDF,DCE0,DCE1,DCE2,DCE3,FFFF,DCE4,DCE5,DCE6,DCE8,DCE7,DCE9,DCED,DCEA,DCEB,DCEE,FFFF,DCEF,DCF0,DCF1,DCF2,DCF3,FFFF,DCF5,DCF7,DCF8,DCF9,DCFA,DCFC,DCFD,DCFE,DDA2,DDA3,DDA4,DDA5,DDA6,DDA7,DDA8,DDA9,DDAA,DDAB,DDAD,DDAE,DDAC,FFFF,DDB0,DDAF,DDB1,DDB3,FFFF,FFFF,DDB5,DDB6,DDB7,DDB8,DDB9,DDBA,DDBB,DDBC,DDBD,DDBE,FFFF,DDBF,FFFF,DDC0,DDC1,DDC2,DDC4,FFFF,DDC5,DDC6,DDC7,DDC8,DDC9,DDCA,DDCC,DDCD,DDCE,DDCF,DDD0,DDD1,DDD2,FFFF,DDD4,DDD5,DDD6,FFFF,DDD7,DDD9,FFFF,FFFF,DDDA,DDDB,DDDC,DDDD,DDDE, +*X'5941' -X'59FE:E2A=,DDDF,DDE0,DDE1,DDE2,DDE3,DDE4,DDE5,FFFF,DDE6,DDE7,DDE8,DDE9,DDEA,DDEB,DDEC,FFFF,DDEE,FFFF,DDF4,DDF3,DDEF,DDF2,DDF5,DDF6,FFFF,DDF7,DDF8,DDFA,FFFF,DDFC,DDFD,DDFE,FFFF,DEA1,DEA2,DEA3,DEA4,DEA5,DEA6,DEA7,DEA8,FFFF,DEA9,DEAA,DEAB,FFFF,DEAC,DEAE,DEB9,DEAF,FFFF,DEB0,DEB1,DEB2,DEB4,DEB5,DEB6,FFFF,DEB8,FFFF,DEBA,FFFF,FFFF,DEBB,DEBC,DEBD,DEBE,DEBF,DEC0,DEC1,DEC2,DEC4,DEC3,DEEC,DEC5,DEC7,DEC8,DEC9,DECC,DECA,DECB,DECD,DECE,FFFF,DECF,DED0,DED1,DED3,DED4,FFFF,DED5,DED6,DED7,DEF5,DED9,DED8,DEDB,DEDC,FFFF,FFFF,DEDE,DEDF,DEE0,DEE1,DEF7,DEE2,DEE5,DEE4,DEE6,DEDD,DEE3,DEE7,FFFF,DEE8,DEEE,DEE9,DEEA,DEED,DEEF,DEF0,DEF1,DEF2,DEF3,DEF4,DED2,DEF6,DEEB,DEF8,DEF9,DEFB,DEFC,FFFF,DEFD,DEFE,FFFF,DFA1,DFA2,DFA3,DFA4,DFA5,DFA6,DFA7,DFA8,DFA9,DFAA,DFAB,DFAE,DFAF,DFAD,DFB1,DFB2,DFB3,DFB4,DFB5,DFB6,DFB9,DFB7,DFB8,FFFF,DFBA,DFBB,DFBD,FFFF,FFFF,DFBE,DFBF,DFC0,DFC1,DFC2,DFC3,DFC4,DFD0,DFC5,DFC6,DFC9,DFCA,DFCB,DFC8,DFCC,DFD3,DFCD,DFCE,FFFF,DFCF,DFD2,DFD1,DFD4,DFD5,DFD6,DFD7, +*X'5A41' -X'5AFE:E2A=,DFD8,DFDA,DFDB,DFD9,DFDC,DFDD,DFDE,DFDF,FFFF,DFE1,DFE2,DFE3,DFE4,DFE5,DFE6,DFE7,DFE8,DFE9,FFFF,DFEB,DFEA,FFFF,DFF9,DFEC,DFED,DFEE,DFEF,DFF0,DFF1,DFF3,DFF4,DFF5,DFF6,DFF7,DFF8,DFFA,DFFC,DFFD,DFFE,E0A1,E0A2,E0A3,E0A4,E0A5,E0A7,E0A6,E0A8,FFFF,E0A9,E0AA,E0AB,FFFF,E0AC,E0AD,E0AE,E0AF,E0B0,E0B1,E0B2,E0B3,E0B4,E0B5,E0B6,E0B7,E0B8,E0BB,E0B9,E0BA,FFFF,E0BC,E0BE,FFFF,FFFF,E0BF,E0C1,FFFF,E0C3,FFFF,E0C9,E0C5,E0C6,E0C7,E0C8,E0CA,E0CB,E0CC,E0CD,E0CE,E0CF,E0D0,E0D1,E0D2,E0D3,E0D4,E0D5,FFFF,E0D8,FFFF,E0D9,E0DF,FFFF,E0DA,FFFF,E0DB,E0DD,E0DE,E0E0,E0E2,E0E3,E0E4,E0E8,E0E9,E0EA,E0EB,E0E7,E0EC,E0F0,E0EE,E0EF,E0F1,E0F2,E0F3,E0F5,E0F6,E0F7,E0F8,E0F9,E0FA,E0FC,E0FD,E0FE,E1A1,E1A2,E1A3,E1A4,E1A5,E1A6,E1A7,E1A8,E1A9,E1AA,E1AB,E1AC,E1AD,E1AE,E1AF,E1B0,E1B1,E1B3,E1B4,E1B2,E1B5,E1B7,E1B8,E1B6,E1B9,E1BA,E1BB,E1BC,E1BD,E1BE,E1BF,E1C0,E1C1,E1C3,E1C2,E1C5,E1C7,E1C8,E1C9,FFFF,E1CA,E1CB,E1CC,E1CD,E1CE,E1CF,E1D0,E1D1,FFFF,E1D2,E1D3,E1D4,E1D5,E1D6,E1D8,E1D9,E1DC,E1DD,E1DF, +*X'5B41' -X'5BFE:E2A=,E1E1,E1E3,FFFF,E1E4,E1E6,E1E8,E1E9,E1EA,E1EB,E1EC,E1ED,E1EE,FFFF,E1EF,E1F0,E1F1,E1F2,E1F3,E1F4,FFFF,E1F6,E1F5,E1F7,E1F8,E1F9,E1FA,FFFF,E1FB,E1FD,E2A1,E1FE,E2A2,E2A3,E2A4,E2A5,E2A6,FFFF,E2A7,E2A8,E2AC,E2A9,E2AA,FFFF,E2AB,E2AD,E2AE,FFFF,E2B1,E2B2,FFFF,E2B3,E2B4,E2B5,E2B6,E2B7,E2B8,E2B9,E2BA,E2BB,E2BC,E2BD,E2BE,E2BF,E2C0,E2C1,E2C3,E2C4,E2C5,E2C6,E2C7,E2C8,E2C9,E2CB,E2CC,E2CD,E2CE,E2CF,E2D0,E2D1,E2D2,E2D3,E2D4,E2D5,E2D6,E2D7,E2D9,E2DC,E2DD,E2E0,E2E1,E2E2,E2E4,E2E6,E2E7,E2E8,E2E9,E2EA,E2EB,E2EC,E2ED,E2EE,E2EF,E2F0,E2F3,E2DE,E2F5,E2F6,E2F7,E2F8,FFFF,E2F9,E2FA,E2FB,E2FD,E2FE,E3A1,E3A2,E3A3,FFFF,E3A4,E3A6,E3A5,E3A7,E3A8,E3A9,E3AA,E3AB,E3AC,E3AE,E3AF,E3B0,E3AD,E3B1,E3B2,E3B3,E3B4,E3B5,FFFF,E3B6,E3B7,E3B8,FFFF,E3B9,E3BB,E3BC,E3BD,E3BE,E3BF,E3C0,E3C1,E3C2,E3C3,E3C4,E3C5,E3C6,E3CA,FFFF,E3C7,E3C8,E3C9,E3CC,E3CB,E3CD,E3CF,E3D0,E3D1,E3D2,E3D3,E3D4,E3D5,E3D6,E3D7,E3D8,E3DB,E3DC,E3DD,E3DE,E3DF,E3E1,E3E2,E3E3,E3E4,E3E5,E3E6,E3E7,E3E8,E3E9,FFFF,E3EA,E3EB, +*X'5C41' -X'5CFE:E2A=,E3EC,E3ED,E3EE,E3EF,E3F1,E3F2,E3F3,E3F4,E3F5,E3F6,E3F7,E3F8,E3F9,E3FA,FFFF,E3FB,E3FC,E3FD,E4A1,E3FE,E4A2,E4A3,E4A4,E4A5,E4A7,E4A8,E4A9,E4AA,E4AB,E4AC,E4AD,E4AE,E4B0,E4B1,E4B2,E4B3,E4B4,E4B6,E4B7,E4B8,E4B9,E4BA,E4BB,E4BC,E4BD,E4BE,E4BF,E4C0,E4C3,E4C2,E4C4,E4C5,E4C6,FFFF,E4C9,E4CB,E4CC,E4CD,E4CE,E4CF,E4D0,E4D1,E4D2,FFFF,E4D3,E4D4,FFFF,FFFF,E4D6,E4D7,E4D8,FFFF,E4D9,FFFF,E4DC,E4DD,E4DE,E4DF,E4E0,FFFF,E4E1,FFFF,E4E2,E4E3,E4E4,E4E5,E4E6,E4E7,E4E8,E4E9,E4EA,E4EB,FFFF,E4EC,E4ED,E4EF,E4F0,E4F1,FFFF,E4F3,FFFF,E4F2,E4F4,FFFF,E4F5,E4EE,E4F6,E4F7,FFFF,E4F8,E4FA,E4FB,E4FD,FFFF,E4FE,E5A1,E5A2,E5A3,E5A4,E5A5,E5A6,E5A7,E5A8,FFFF,E5AA,E5AB,E5AC,E5AD,E5AE,E5A9,E5AF,E5B0,FFFF,FFFF,E5B3,E5B4,E5B5,E5B7,E5B8,E5BA,E5BD,E5BE,E5BF,E5C0,E5C1,E5C2,E5C3,E5C5,E5C6,E5C7,E5C8,E5C9,E5CD,E5CA,E5CB,E5CF,FFFF,E5D1,E5D3,E5D4,E5D5,E5D7,E5D8,E5D9,FFFF,E5DA,E5DB,E5DD,E5DE,E5DF,E5E0,E5E1,E5E2,E5E3,E5E4,E5E5,E5E6,E5E7,E5E8,E5E9,E5EA,E5EB,E5EC,E5ED,E5F0,E5F1,E5F2,E5F3,E5F4,E5F5, +*X'5D41' -X'5DFE:E2A=,E5F6,FFFF,E5F8,E5F9,E5FD,E6A2,E6A3,E6A8,E6AE,E6B2,E6B4,FFFF,E6B5,E6B6,E6B9,E6BA,E6BB,E6BD,E6BE,E6BF,E6C0,E6C1,E6C2,E6C3,E6C5,E6C8,E6CA,E6CB,E6CD,E6CF,E6CE,E6D0,E6D1,E6D3,E6D4,E6D5,E6D7,E6D8,E6DA,E6DB,E6DD,E6DE,FFFF,FFFF,FFFF,E6E2,FFFF,E6E3,E6E7,E6E9,E6EC,E6ED,E6EE,E6F0,E6F2,E6F3,E6F4,FFFF,E6F8,E6FA,E6FB,E7A4,E6FE,E6FD,E7A2,FFFF,E7A3,E7A5,E7A7,E7A8,E7AB,FFFF,E7AF,E7B1,E7B2,E7B3,E7B4,E7B5,E7B6,E7B8,E7BA,E7BD,E7C0,E7C1,E7C2,E7C3,E7C5,E7C8,E7C9,E7CA,E7D2,E7D4,E7D5,E7D6,E7D8,E7D9,FFFF,E7DA,FFFF,E7DC,FFFF,E7DD,E7DE,E7E0,E7E1,E7E2,E7E3,E7E5,E7E7,E7E8,E7E9,E7EA,E7EC,E7ED,E7EF,E7F0,E7F2,E7F3,E7F4,E7F5,E7F6,E7F7,E7FA,E7FB,E7FC,E7FD,E8A1,E8A3,E8A5,E8A6,FFFF,E7EE,E8A9,E8AA,E8AB,E8AC,E8AD,FFFF,E8AE,E8AF,E8B0,E8B1,FFFF,E8B3,FFFF,E8B4,E8B5,E8B7,E8B9,E8B6,E8B8,E8BA,E8BB,E8BC,E8BE,E8BF,E8C0,E8C3,E8C4,E8C5,E8C2,E8C6,E8C7,E8C8,E8CB,E8CC,E8CE,E8CF,E8D0,E8D1,E8D3,E8D4,E8D5,E8D6,E8D7,E8D8,E8D9,E8DA,E8DB,E8DC,E8DD,E8DE,E8E0,E8E1,E8E2,E8E4,E8E5,E8E6,E8E9,E8EA, +*X'5E41' -X'5EFE:E2A=,E8EB,E8EC,E8ED,E8EE,E8F2,E8F3,E8F4,E8F6,E8F8,E9A6,E8F9,E8FA,E8FD,E9A1,E9A2,E9A3,E9A4,E9A5,FFFF,E9A8,E9A9,E9AA,E9AB,E9AD,E9AE,E9B4,E9AF,E9B0,E9B1,E9B3,E9B6,E9B8,E9BB,E9BC,E9B7,E9BE,E9C0,E9C1,E9C2,E9C3,E9C4,E9C6,FFFF,E9C7,E9C8,FFFF,E9C9,E9CA,E9CB,E9CE,E9CF,E9D0,E9D1,E9D2,E9D3,FFFF,E9D4,E9D5,E9D6,E9CD,E9D7,E9D8,E9DA,E9DD,E9DE,E9DF,E9E0,E9E2,E9E3,E9E5,E9E6,E9E7,E9E8,E9EA,E9EB,E9EC,E9EF,E9F0,E9F2,E9F3,E9F4,E9F5,E9F6,E9F7,E9F9,E9FC,E9FD,EAA1,EAA2,EAA3,EAA4,FFFF,EAA5,EAA6,EAA8,EAA9,EAAA,EAAB,EAAC,EAAE,EAAD,EABA,EAAF,EAB0,EAB2,EAB3,EAB4,EAB5,EAB9,EABB,EABC,EABD,FFFF,EABE,EABF,EAC0,EAC2,EAC3,EAC4,EAC5,EAC6,EAC7,EAC8,EAC9,EACA,EACB,EACC,EACD,EACF,FFFF,EAD0,EACE,EAD2,EAD3,EAD4,EAD5,EAD6,EAD7,EAD8,EADA,EADB,FFFF,EADD,EADE,EADF,EAE0,EAE1,EAF2,EAE2,EAE3,EAE4,EAEA,EAE6,EAE7,FFFF,EAE8,EAE9,FFFF,EAEB,EAEC,EAED,EAEE,EAF0,EAEF,EAF1,EAF3,EAF5,EAF6,EAF8,EAFA,EAFD,EBA1,EBA2,EBA5,EBA6,EBA8,EBAB,EBAC,EBAD,FFFF,EBAE,EBAF,EBB0,EBB1,EBB3,EBB2,EBB4,EBB5,EBB6,EBB7, +*X'5F41' -X'5FFE:E2A=,EBB8,EBB9,FFFF,EBBE,EBBF,EBC0,FFFF,EBC3,EBC4,EBC5,EBC8,EBC9,EBCA,EBCE,EBD3,EBD4,EBD6,EBD7,EBD9,EBDA,EBDB,FFFF,EBDC,FFFF,EBDE,EBDD,EBDF,FFFF,EBE0,EBE1,EBE2,EBE3,EBE4,EBE6,EBE5,FFFF,EBE7,EBE8,EBE9,EBEA,EBEB,EBEC,EBED,EBEE,EBEF,EBF0,EBF7,EBF8,EBF1,EBF2,EBF3,EBF4,EBF6,EBF9,EBFA,EBFC,EBFD,EBFE,ECA1,ECA2,ECA3,ECA4,ECA5,ECA8,ECA9,ECAB,ECC3,ECAC,ECAD,ECAE,ECAF,FFFF,ECB3,ECB4,ECB6,ECB7,ECB9,ECBB,ECBC,ECBF,ECC7,ECC8,FFFF,ECCB,ECCF,ECCC,ECCD,ECCE,ECD1,ECD2,FFFF,ECD3,ECD4,ECD6,ECD7,ECD8,ECD9,ECDA,ECDB,ECDC,ECE3,ECE5,ECE6,ECE9,ECEB,ECEC,ECED,ECEE,ECEF,ECF0,ECF1,ECF2,ECF3,ECF4,ECF5,ECF9,ECFB,ECFC,ECFD,EDA4,EDA6,EDA5,EDA8,EDA9,EDAA,EDAB,EDAC,EDAD,EDAF,EDAE,EDB0,EDB1,EDB2,EDB3,EDB4,EDB5,EDB6,EDB7,FFFF,EDB8,FFFF,EDB9,EDBA,FFFF,EDBB,EDBD,EDBE,FFFF,EDBF,EDC0,FFFF,EDC1,EDC2,EDC3,EDC4,EDC5,EDC6,FFFF,EDC7,EDC8,EDC9,EDCA,EDCB,EDCC,EDCD,EDCE,EDD0,EDD1,EDD2,EDD3,EDD4,EDD5,EDD6,FFFF,EDD7,EDD8,FFFF,EDD9,EDDA,EDDB,EDDC,EDDD,EDDE,EDDF,EDE1,FFFF,EDE3,EDE4,EDE5,EDE6, +*X'6041' -X'60FE:E2A=,EDE7,EDE8,EDE9,EDEA,EDEB,EDEC,EDE0,EDE2,EDED,EDEE,EDEF,EDF0,FFFF,EDF1,EDF2,EDF3,EDF4,EDF6,EDF7,EDF8,EDF9,EDFA,FFFF,EDFB,EDFC,EDFD,EDFE,EEA1,EEA2,EEA3,EEA4,EEA5,EEA6,EEA7,EEA8,EEA9,EEAB,EEAC,FFFF,EEAE,EEAF,EEB0,EEB1,EEB2,EEB3,EEB4,EEB5,EEB6,EEB8,EEB7,EEB9,EEBA,EEBB,EEBC,EEBD,EEBE,FFFF,EEBF,EEC0,EEC1,EEC2,EEC3,EEC4,EEC5,EEC6,EEC8,EECA,EECB,FFFF,EECC,FFFF,EECD,EECE,EECF,EED0,EED3,EED5,EED6,EED7,EED8,EED9,EEDA,EEDC,EEDD,EEDE,EEDF,FFFF,EEE0,EEE2,EEE3,EEE4,EEE5,EEE6,EEE7,EEE8,EEE9,EEEA,EEEE,EEEF,EEF0,EEF1,EEF2,FFFF,EEF3,EEF5,EEF6,EEF7,FFFF,EEF8,EEF9,EEFA,EEFB,EEFC,EEFD,EEFE,EFA1,EFA3,EFA4,EFA6,FFFF,EFA8,EFA9,EFAA,EFAB,FFFF,EFAC,EFAD,EFAE,EFAF,EFB0,EFB1,EFB3,EFB4,EFB5,EFB6,EFB7,EFB8,EFB9,EFBA,FFFF,EFBC,EFBD,EFBE,EFBF,EFC0,EFC1,EFC2,EFC3,EFC7,EFC4,EFC5,EFC8,EFC9,FFFF,EFCA,EFCB,EFCC,EFCD,EFCE,EFCF,EFD0,EFD1,EFD3,EFD5,EFD6,EFD2,EFD4,EFD7,EFD8,EFD9,EFDA,EFDB,EFDC,EFDD,FFFF,EFDF,EFE1,EFE2,EFE4,EFE5,EFEB,EFEC,EFED,EFEE,EFEF,EFF0,EFFE,EFF1,EFF3,EFF4, +*X'6141' -X'61FE:E2A=,EFF5,EFF6,EFF7,EFF8,EFF9,EFFA,EFFC,EFFD,F0A1,F0A2,F0A3,F0A4,F0A5,F0A6,F0A7,F0A8,F0A9,F0AA,F0AB,FFFF,F0AC,F0AD,FFFF,F0B0,F0AE,F0AF,F0B1,F0B2,F0B3,FFFF,F0B4,F0B5,F0B6,F0B7,F0B8,F0B9,F0BA,F0BB,F0BD,F0BC,F0BE,FFFF,F0BF,FFFF,F0C0,F0C1,F0C2,F0C3,F0C4,F0C5,F0C6,F0C7,F0C8,F0C9,F0CA,F0CB,F0CC,F0CD,F0CE,F0CF,F0D0,FFFF,F0D2,F0D3,F0D4,F0D5,F0D6,F0D7,FFFF,FFFF,F0D8,F0D9,FFFF,F0DA,FFFF,F0DB,F0DC,F0DD,F0DE,F0DF,F0E0,F0E1,F0E2,F0E3,F0E4,F0E5,F0E6,FFFF,F0E8,F0E9,F0EA,F0EB,F0EC,F0ED,F0EE,F0EF,F0F0,F0F1,F0F2,F0F3,F0F4,F0F6,F0F7,FFFF,F0F8,F0F9,F0FA,F0FB,F0FC,F0FD,F0FE,F1A2,FFFF,F1A3,F1A4,F1A5,F1A6,F1A7,F1A8,F1A9,F1AA,F1AB,F1AC,F1AD,F1AE,F1B7,F1B1,F1B2,F1B3,F1B4,F1B5,F1B6,F1B8,F1B9,F1BA,F1BB,F1C0,F1BC,F1BD,F1D0,F1C1,F1C2,FFFF,F1C3,F1C4,F1C5,F1C6,FFFF,F1B0,F1C7,F1C8,F1C9,F1CA,F1CB,F1CC,F1CD,F1CF,F1CE,F1D1,F1D2,F1D3,F1D4,F1D5,F1D6,F1D7,F1D8,F1DA,F1DB,F1DC,F1DD,F1DE,F1DF,F1E1,F1E2,F1E3,F1E4,F1E5,FFFF,F1E7,F1E8,F1E9,F1EA,F1EB,F1EC,FFFF,F1ED,F1EE,F1EF,F1F0,F1F1, +*X'6241' -X'62FE:E2A=,F1F2,F1F3,F1F5,F1F6,F1F4,F1F7,F1F8,F1FA,FFFF,F1FB,F1FC,F1FD,F1FE,F2A1,F2A2,F2A3,F2A4,F2A5,F2A6,F2A7,F2A8,F2A9,F2AA,F2AB,F2AC,F2AD,F2AE,F2B0,FFFF,F2B1,F2B2,F2B4,F2B3,F2B5,F2B6,F2B7,F2B8,F2B9,F2BB,F2BC,F2BD,F2BE,F2BF,F2C0,F2C1,F2C2,F2C3,F2C4,F2C5,F2E3,F2C7,F2C8,F2C9,F2CB,F2CE,F2D0,F2D1,F2D2,F2D3,F2D4,F2D6,F2D7,F2D8,F2D9,F2DA,F2DB,F2E0,F2E1,F2E2,F2E4,F2E5,F2E6,F2E7,F2E8,F2EA,F2F2,F2EB,F2EC,F2ED,F2EE,F2F0,F2F1,F2F3,F2F4,F2F5,F2F6,F2F7,F2F8,F2F9,F2FB,F3A2,F2FD,F2FE,F3A3,F3A4,F3A5,F3A6,F3A8,F3B0,F3A9,F3AA,F3AC,F3AB,F3AD,F3AE,F3AF,F3B1,F3B2,F3B4,F3B3,F3B5,F3B6,F3B7,F3B8,F3B9,F3BA,F3BB,F3BC,F3BD,F3BE,F3BF,F3C0,F3C1,F3C3,F3C4,F3C5,F3C6,F3C7,F3C8,FFFF,F3C9,F3CA,F3CB,F3CC,F3CD,F3CE,F3D0,F3D1,F3D2,F3D3,F3D4,FFFF,F3D5,F3D6,F3D7,F3D8,F3DB,F3DA,FFFF,F3DC,F3DD,F3DE,F3DF,F3E0,FFFF,F3E2,F3E3,F3E4,F3E5,F3E6,FFFF,F3E7,F3E8,F3EA,F3EB,F3EC,F3ED,F3EE,F3EF,F3F0,F3F1,F3F4,F3F5,F3F6,F3F7,F3F8,F3F9,F3FA,F3FB,F3FC,F3FD,F3FE,FFFF,F4A1,F4A2,F4A3,F4A4,F4A5,F4A7,F4A8, +*X'6341' -X'63FE:E2A=,F4A9,F4AA,F4AB,F4AC,F4AD,F4AE,F4AF,F4B0,F4B1,FFFF,FFFF,F4B3,F4B4,F4B5,F4B6,F4B7,F4B8,F4B9,F4BA,F4BB,F4BC,FFFF,F4BE,F4BF,F4C0,F4C1,F4C2,F4C3,F4C4,F4C5,F4C6,F4C7,F4C8,F4CB,F4C9,F4CA,F4CC,F4CD,F4CE,F4D0,F4D1,F4D2,F4D3,F4D4,F4D5,F4D6,F4D7,FFFF,F4D9,F4DB,F4DD,F4DE,F4DF,F4E0,F4E1,F4E2,F4E3,F4E4,F4E5,F4E6,F4E7,F4E8,F4E9,F4EA,FFFF,F4EB,F4EC,F4ED,F4EE,F4EF,F4F0,F4F1,F4F2,FFFF,F4F3,F4F4,F4F5,F4F6,FFFF,F4F7,F4F8,F4FA,FFFF,F4FB,F4FC,F4FD,F4FE,F5A1,F5A2,F5A3,F5A4,F5A5,F5A6,F5A7,F5A8,F5A9,F5AA,FFFF,F5AB,F5AE,F5AF,F5B0,F5B1,F5B2,F5B3,F5B4,FFFF,FFFF,F5B5,F5B6,FFFF,F5B7,F5B8,F5B9,F5BA,FFFF,FFFF,F5BB,F5BC,F5BD,F5BF,F5C0,F5C1,FFFF,F5C4,F5C5,F5C6,FFFF,F5C8,F5C9,F5CA,F5CB,FFFF,F5CC,F5CD,F5CE,F5CF,F5D0,F5D1,FFFF,F5D2,F5D3,FFFF,F5D4,F5D5,FFFF,F5D6,F5D7,F5D9,F5DA,F5DB,F5DC,F5DD,F5DF,F5DE,F5E1,FFFF,F5E3,FFFF,FFFF,F5E4,FFFF,F5E6,F5E5,F5E7,F5E8,F5E9,F5EA,FFFF,F5EB,F5ED,F5EE,F5EF,F5F0,F5F1,F5F3,F5F5,F5F6,FFFF,F5F7,F5F8,F5F9,F5FA,F5FB,F5FC,F5FD,F5FE,F6A2,F6A3,F6A4, +*X'6441' -X'64FE:E2A=,F6A5,F6A6,FFFF,F6A7,F6A8,F6A9,F6AA,F6AB,FFFF,F6AC,F6AD,F6AE,F6AF,F6B1,F6B0,F6B3,F6B4,F6B5,F6B6,F6B7,F6B8,F6B9,FFFF,F6BA,FFFF,F6BC,F6BD,F6BE,F6BF,F6C0,F6C1,F6C2,F6CB,F6C3,F6C5,F6C6,F6C7,F6BB,F6C8,F6CA,F6CC,FFFF,F6CD,F6CE,F6CF,F6D0,F6D1,F6D2,F6D3,F6D4,F6D5,F6D6,FFFF,F6D7,F6D8,F6D9,F6DB,F6DC,F6DD,F6DE,F6DF,F6E0,F6E1,F6E2,F6E4,F6E5,F6E6,F6E7,F6E8,F6EA,F6EB,F6EC,F6ED,F6EF,F6F0,F6F1,F6F2,F6F4,F6F5,FFFF,F6F6,F6F7,F6F9,FFFF,F6FA,F6FB,F6FC,F6FE,F7A1,F7A2,F7A3,F7A4,F7A5,F7A6,F7A7,F7A8,F7A9,F7AA,F7AB,F7AC,F7AD,F7AE,F7B0,F7B1,F7B2,F7B3,F7B4,F7B5,F7B6,F7B7,F7B9,F7BA,F7BB,F7BC,F7BD,F7BE,F7BF,F7C0,F7C1,F7C2,F7C3,F7C4,F7C5,F7C6,F7C7,FFFF,F7C8,F7C9,F7CA,FFFF,F7CB,F7CC,F7CD,F7CE,F7CF,F7D0,F7D1,F7D2,F7D3,F7D4,F7D5,F7D6,F7D7,F7D8,F7DA,F7DB,F7DC,F7DD,F7DE,F7DF,F7E0,F7E1,F7E2,F7E3,F7E4,F7E5,F7E8,F7E7,F7E9,F7EA,F7EB,F7ED,F7EE,F7EF,F7F0,F7F1,F7F2,F7F3,F7F4,F7F5,F7F6,F7F8,F7F7,F7F9,F7FA,F7FC,F7FD,F7FB,F8A1,F8A2,F8A3,F8A4,F8A5,F8A6,F8A7,F8A9,F8AA,F8AB,F8AC,F8AD, +*X'6541' -X'65FE:E2A=,F8AF,F8A8,F8AE,F8B0,F8B1,F8B2,F8B3,F8B4,F8B5,F8B6,F8B7,F8B8,F8B9,F8BA,F8BB,FFFF,F8BC,F8BD,F8BF,F8C0,F8C1,F8C3,F8C4,F8C5,F8C6,F8C7,F8C8,F8C9,F8CA,F8CB,F8CC,F8CD,F8CE,F8CF,F8D0,F8D1,F8D2,F8D3,F8D4,F8D5,FFFF,F8D6,F8D7,F8D9,F8D8,F8DA,F8DC,F8DD,FFFF,F8DE,F8DF,F8E0,F8E1,FFFF,F8E3,F8E4,F8E5,F8E6,FFFF,F8E8,FFFF,F8E9,F8EA,F8EB,F8EC,F8EE,F8EF,F8F1,F8F2,F8F3,F8F4,F8F5,F8F6,F8F7,F8F8,F8F9,F8FA,F8FB,F8FD,FFFF,F9A1,F9A2,F9A7,F9A3,F9A4,F9A5,F9A6,F9A8,F9A9,F9AA,F9AB,FFFF,F9AC,F9AD,F9AF,F9B0,F9B1,F9B2,F9B4,F9B5,F9B6,FFFF,F9B9,F9BA,F9BB,F9BC,F9BE,F9BF,F9C0,F9C1,F9C2,F9C4,F9C3,F9C5,F9C6,F9C7,F9C8,F9C9,F9CA,FFFF,F9CB,F9CC,F9CD,F9CE,F9CF,F9D0,F9D1,F9D2,F9D3,F9D4,F9D6,F9D7,FFFF,F9D9,F9D8,F9DA,F9DB,FFFF,F9DC,F9DD,F9DE,F9DF,F9E0,F9E1,F9E2,F9E3,F9E4,F9E5,F9E6,F9E8,F9EA,F9EB,F9EC,F9ED,F9EE,F9F0,F9F1,F9F2,F9F3,F9F5,F9F6,F9F7,F9F8,F9F9,F9FA,F9FB,FFFF,F9FC,F9FD,F9FE,FAA2,FAA3,FAA4,FAA5,FAA6,FAA8,FAA7,FAA9,FAAA,FFFF,FAAB,FAAC,FAAD,FAAF,FAB0,FAB1,FAB2,FAB3,FAB4,FAB5, +*X'6641' -X'66FE:E2A=,FAB6,FAB7,FAB8,FAB9,FABA,FABC,FABD,FABE,FABF,FAC1,FAC0,FAC2,FAC3,FAC4,FAC5,FAC6,FAC7,FAC8,FAC9,FACA,FACD,FACC,FACE,FACF,FAD0,FAD1,FAD2,FAD3,FAD4,FAD6,FAD7,FAD8,FADB,FADE,FADC,FADF,FAE1,FAE2,FAE3,FAE4,FAE5,FAE6,FAE7,FAE8,FAE9,FAEA,FAEB,FAEC,FAED,FAEE,FFFF,FAEF,FAF0,FAF1,FAF2,FAF3,FAF4,FAF5,FFFF,FAF7,FAF6,FAF8,FFFF,FAF9,FAFA,FAFB,FAFD,FAFE,FBA1,FAFC,FBA4,FBA6,FBA8,FBAA,FBAB,FBAC,FBAE,FBAF,FBB0,FBB1,FBB2,FBB3,FBB4,FBB6,FBB8,FBB9,FBBA,FBBB,FBDF,FBBC,FBBE,FBBD,FBBF,FBC1,FBC4,FBC2,FBC6,FBC7,FBC8,FBC9,FBCA,FBCB,FBCD,FBCC,FBCE,FBCF,FBD1,FBD2,FBD3,FFFF,FBD4,FBD5,FBD6,FBD7,FBD9,FBDB,FBDC,FBDD,FBDE,FBC3,FFFF,FBE0,FBE1,FBE2,FBE3,FBE4,FBE5,FBE6,FBE7,FBE8,FBE9,FBEA,FBEB,FBEC,FBED,FBEE,FFFF,FBF0,FBEF,FBF1,FBF2,FBF3,FBF8,FBF5,FBF6,FBF7,FBF9,FBFB,FBFC,FBFD,FCA1,FBFE,FCA2,FBFA,FCA3,FCA4,FCA5,FCA8,FCA7,FCA9,FCAA,FCAB,FCAC,FCAD,FCAE,FFFF,FCAF,FCB0,FFFF,FCB2,FCB3,FCB4,FFFF,FCB5,FCB8,FCB6,FCB9,FCBA,FCBB,FCBC,FCBD,FCBE,FCBF,FFFF,FCC0,FCC1,FCC2,FCC3,FCC4,FCC5, +*X'6741' -X'67FE:E2A=,FFFF,FCC7,FFFF,FCC8,FCCB,FCC9,FCCC,FCCF,FCD1,FCD3,FCD5,FCD6,FCD8,FCD9,FCDA,FCDB,FCDC,FCDE,FCDF,FCE0,FCE1,FCE2,FCE3,FCE4,FCE5,FCE6,FCE7,FCE8,FCE9,FCEA,FCEB,FCEC,FCEE,FCEF,FCF0,FCF1,FCF2,FCF4,FCF6,FCF7,FFFF,FCF8,FCF9,FCFB,FCFC,FDA1,FDA2,FDA3,FDA5,FDA6,FDA7,FDA8,FDA9,FDAA,FDAB,FDAD,FDAE,FFFF,FDB1,FFFF,FDB3,FDB4,FDB5,FDBB,FDB6,FDB7,FDB8,FDB9,FDBA,FDBC,FDBD,FDC0,FDC1,FDC2,FDC3,FDC4,FDC5,FDC6,FDC7,FDC8,FDC9,FDCA,FDCB,FDCC,FDCD,FDCE,FDCF,FDD0,FDD1,FDD2,FDD3,FDD5,FDD6,FDD4,FDD7,FDD8,FDD9,FFFF,FDDA,FDDB,FDDD,FDDE,FDDF,FDE0,FFFF,FDE2,FDE4,FDE3,FDE5,FDE6,FDE7,FDE9,FDEA,FDEC,FDED,FDEF,FDF0,FDF1,FDF6,FDF2,FDF4,FDFA,FDF7,FDEB,FDF8,FDFB,FDFC,FDFD,FDFE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'6841' -X'68FE:E2A=,CAAE,CAB1,CAB2,CAC2,CAC9,CAD3,CAD4,CAD8,CAE9,CAF1,CAF9,CAFB,CAFD,CBA8,CBB1,CBB4,CBB6,CBB8,CBBE,CBC3,CBD0,CBD1,CBD3,CBDA,CBE4,CBE6,CBE9,CBF1,CBF2,CBFA,CBFD,CCA2,CCA6,CCAE,CCBC,CCC6,CCC9,CCCA,CCCC,CCD0,CCD5,CCDE,CCE0,CCF7,CDA1,CDB6,CDBC,CDBE,CDC4,CDC9,CDCA,CDE4,CDE6,CDF5,CDF7,CDF9,CDFA,CEA5,CEA7,CEB5,CEC2,CEC9,CFA6,CFBE,CFCA,CFD4,CFD9,CFE4,CFEC,CFEE,CFF1,CFF2,CFFB,CFFC,D0A7,D0AB,D0B2,D0B4,D0C2,D0D2,D0D4,D0D9,D0DF,D0F2,D1AC,D1AF,D1B5,D1BC,D1C5,D1D4,D1D5,D1D6,D1D8,D1DB,D1DC,D1DD,D1DE,D1DF,D1E0,D1E2,D1E3,D1E4,D1E5,D1E6,D1E8,D1E9,D1EA,D1EB,D1ED,D1EF,D1F0,D1F2,D1F6,D1F7,D1F8,D1F9,D1FA,D1FC,D1FD,D1FE,D2A2,D2A3,D2A4,D2A7,D2A8,D2A9,D2AA,D2AB,D2AD,D2B2,D2B5,D2BC,D2BE,D2C2,D2C3,D2C4,D2C6,D2C7,D2C8,D2C9,D2CA,D2CB,D2CC,D2CD,D2CE,D2CF,D2D0,D2D1,D2D2,D2D3,D2D4,D2D5,D2D6,D2D7,D2D9,D2DA,D2DE,D2DF,D2E1,D2E2,D2E4,D2E5,D2E6,D2E7,D2E8,D2E9,D2EA,D2EB,D2EE,D2F0,D2F1,D2F2,D2F3,D2F4,D2F5,D2F7,D2F8,D3A2,D3A7,D3B6,D3BB,D3BC,D3C0,D3C6,D3CA,D3CC,D3D4,D3D9,D3DD,D3F7, +*X'6941' -X'69FE:E2A=,D3FC,D4A2,D4AD,D4C5,D4C8,D4E8,D4EC,D4F1,D4FC,D5AB,D5AE,D5CF,D5D0,D5E3,D6A2,D6B8,D6B9,D6BD,D6C0,D6C8,D6CD,D6CF,D6D1,D6DF,D6E1,D6EE,D6F2,D7A2,D7A5,D7AA,D7AD,D7AF,D7B2,D7B7,D7C2,D7CF,D7DA,D7DF,D7E4,D7E8,D7E9,D7EB,D7F1,D8A7,D8B1,D8B2,D8B3,D8C5,D8C9,D8D6,D8F7,D9A7,D9AA,D9AC,D9B9,D9C1,D9C5,D9D0,D9DF,D9E4,D9EA,D9EE,D9FA,DAA7,DAA9,DAB2,DAB3,DAB5,DABD,DABE,DAC9,DAEE,DAF0,DAF1,DAFD,DBB3,DBB5,DBB6,DBCC,DBDF,DBE2,DBFC,DCA2,DCB8,DCC0,DCCA,DCCC,DCDE,DCEC,DCF4,DCF6,DCFB,DDA1,DDB2,DDB4,DDC3,DDCB,DDD3,DDD8,DDED,DDF0,DDF1,DDF9,DDFB,DEAD,DEB3,DEB7,DEC6,DEDA,DEFA,DFAC,DFB0,DFBC,DFC7,DFE0,DFF2,DFFB,E0BD,E0C0,E0C2,E0C4,E0D6,E0D7,E0DC,E0E1,E0E5,E0E6,E0ED,E0F4,E0FB,E1C4,E1C6,E1D7,E1DA,E1DB,E1DE,E1E0,E1E2,E1E5,E1E7,E1FC,E2AF,E2B0,E2C2,E2CA,E2D8,E2DA,E2DB,E2DF,E2E3,E2E5,E2F1,E2F2,E2F4,E2FC,E3BA,E3CE,E3D9,E3DA,E3E0,E3F0,E4A6,E4AF,E4B5,E4C1,E4C7,E4C8,E4CA,E4D5,E4DA,E4DB,E4F9,E4FC,E5B1,E5B2,E5B6,E5B9,E5BB,E5BC,E5C4,E5CC,E5CE,E5D0,E5D2,E5D6,E5DC,E5EE,E5EF,E5F7,E5FA, +*X'6A41' -X'6AFE:E2A=,E5FB,E5FC,E5FE,E6A1,E6A4,E6A5,E6A6,E6A7,E6A9,E6AA,E6AB,E6AC,E6AD,E6AF,E6B0,E6B1,E6B3,E6B7,E6B8,E6BC,E6C4,E6C6,E6C7,E6C9,E6CC,E6D2,E6D6,E6D9,E6DC,E6DF,E6E0,E6E1,E6E4,E6E5,E6E6,E6E8,E6EA,E6EB,E6EF,E6F1,E6F5,E6F6,E6F7,E6F9,E6FC,E7A1,E7A6,E7A9,E7AA,E7AC,E7AD,E7AE,E7B0,E7B7,E7B9,E7BB,E7BC,E7BE,E7BF,E7C4,E7C6,E7C7,E7CB,E7CC,E7CD,E7CE,E7CF,E7D0,E7D1,E7D3,E7D7,E7DB,E7DF,E7E4,E7E6,E7EB,E7F1,E7F8,E7F9,E7FE,E8A2,E8A4,E8A7,E8A8,E8B2,E8BD,E8C1,E8C9,E8CA,E8CD,E8D2,E8DF,E8E3,E8E7,E8E8,E8EF,E8F0,E8F1,E8F5,E8F7,E8FB,E8FC,E8FE,E9A7,E9AC,E9B2,E9B5,E9B9,E9BA,E9BD,E9BF,E9C5,E9CC,E9D9,E9DB,E9DC,E9E1,E9E4,E9E9,E9ED,E9EE,E9F1,E9F8,E9FA,E9FB,E9FE,EAA7,EAB1,EAB6,EAB7,EAB8,EAC1,EAD1,EAD9,EADC,EAE5,EAF4,EAF7,EAF9,EAFB,EAFC,EAFE,EBA3,EBA4,EBA7,EBA9,EBAA,EBBA,EBBB,EBBC,EBBD,EBC1,EBC2,EBC6,EBC7,EBCB,EBCC,EBCD,EBCF,EBD0,EBD1,EBD2,EBD5,EBD8,EBF5,EBFB,ECA6,ECA7,ECAA,ECB0,ECB1,ECB2,ECB5,ECB8,ECBA,ECBD,ECBE,ECC0,ECC1,ECC2,ECC4,ECC5,ECC6,ECC9,ECCA,ECD0,ECD5,ECDD,ECDE,ECDF, +*X'6B41' -X'6BFE:E2A=,ECE0,ECE1,ECE2,ECE4,ECE7,ECE8,ECEA,ECF6,ECF7,ECF8,ECFA,ECFE,EDA1,EDA2,EDA3,EDA7,EDBC,EDCF,EDF5,EEAA,EEAD,EEC7,EEC9,EED1,EED2,EED4,EEDB,EEE1,EEEB,EEEC,EEED,EEF4,EFA2,EFA5,EFA7,EFB2,EFBB,EFC6,EFDE,EFE0,EFE3,EFE6,EFE7,EFE8,EFE9,EFEA,EFF2,EFFB,F0D1,F0E7,F0F5,F1A1,F1AF,F1BE,F1BF,F1D9,F1E0,F1E6,F1F9,F2AF,F2BA,F2C6,F2CA,F2CC,F2CD,F2CF,F2D5,F2DC,F2DD,F2DE,F2DF,F2E9,F2EF,F2FA,F2FC,F3A1,F3A7,F3C2,F3CF,F3D9,F3E1,F3E9,F3F2,F3F3,F4A6,F4B2,F4BD,F4CF,F4D8,F4DA,F4DC,F4F9,F5AC,F5AD,F5BE,F5C2,F5C3,F5C7,F5D8,F5E0,F5E2,F5EC,F5F2,F5F4,F6A1,F6B2,F6C4,F6C9,F6DA,F6E3,F6E9,F6EE,F6F3,F6F8,F6FD,F7AF,F7B8,F7D9,F7E6,F7EC,F7FE,F8BE,F8C2,F8DB,F8E2,F8E7,F8ED,F8F0,F8FC,F8FE,F9AE,F9B3,F9B7,F9B8,F9BD,F9D5,F9E7,F9E9,F9EF,F9F4,FAA1,FAAE,FABB,FACB,FAD5,FAD9,FADA,FADD,FAE0,FBA2,FBA3,FBA5,FBA7,FBA9,FBAD,FBB5,FBB7,FBC0,FBC5,FBD0,FBD8,FBDA,FBF4,FCA6,FCB1,FCB7,FCC6,FCCA,FCCD,FCCE,FCD0,FCD2,FCD4,FCD7,FCDD,FCED,FCF3,FCF5,FCFA,FCFD,FCFE,FDA4,FDAC,FDAF,FDB0,FDB2,FDBE,FDBF,FDDC,FDE1, +*X'6C41' -X'6CFE:E2A=,FDE8,FDEE,FDF3,FDF5,FDF9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'6D41' -X'6DFE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'6E41' -X'6EFE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'6F41' -X'6FFE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'7041' -X'70FE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'7141' -X'71FE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'7241' -X'72FE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'7341' -X'73FE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'7441' -X'74FE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'7541' -X'75FE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'7641' -X'76FE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'7741' -X'77FE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'7841' -X'78FE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'7941' -X'79FE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'7A41' -X'7AFE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'7B41' -X'7BFE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'7C41' -X'7CFE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'7D41' -X'7DFE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'7E41' -X'7EFE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'7F41' -X'7FFE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'8041' -X'80FE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'8141' -X'81FE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'8141' -X'81FE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'8341' -X'83FE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'8441' -X'84FE:E2A=,A4D4,FFFF,FFFF,A4A3,FFFF,A4A5,A4A6,FFFF,FFFF,A4AA,A4AB,A4AC,A4AD,A4AE,A4AF,A4B0,FFFF,FFFF,FFFF,A4B4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4BF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4C0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4C1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4C2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4C3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'8541' -X'85FE:E2A=,A4C4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4C5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4C6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4C7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4C8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4C9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'8641' -X'86FE:E2A=,A4CA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4CB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4CC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4CD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4CE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4CF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'8741' -X'87FE:E2A=,A4D0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4D1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4D2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,A4D3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'8841' -X'88FE:E2A=,A4A1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B0A1,B0A2,FFFF,FFFF,B0A3,FFFF,FFFF,B0A4,B0A5,B0A6,B0A7,FFFF,FFFF,FFFF,FFFF,FFFF,B0A8,FFFF,B0A9,B0AA,B0AB,B0AC,B0AD,B0AE,B0AF,FFFF,B0B0,B0B1,B0B2,FFFF,FFFF,FFFF,B0B3,B0B4,FFFF,FFFF,B0B5,FFFF,FFFF,FFFF,B0B6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B0B7,FFFF,B0B8,FFFF,B0B9,B0BA,B0BB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B0BC,B0BD,FFFF,FFFF,B0BE,FFFF,FFFF,FFFF,B0BF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B0C0,FFFF,B0C1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B0C2,FFFF,FFFF,FFFF,B0C3,FFFF,FFFF,FFFF,B0C4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B0C5,B0C6,FFFF,FFFF,B0C7,FFFF,FFFF,B0C8,B0C9,FFFF,B0CA,FFFF,FFFF,FFFF,FFFF,FFFF,B0CB,FFFF,B0CC,FFFF,B0CD,B0CE,B0CF,B0D0,FFFF,FFFF,B0D1,B0D2,B0D3,FFFF, +*X'8941' -X'89FE:E2A=,B0D4,FFFF,FFFF,FFFF,B0D5,FFFF,FFFF,FFFF,B0D6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B0D7,FFFF,B0D8,FFFF,B0D9,B0DA,B0DB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B0DC,B0DD,B0DE,FFFF,B0DF,FFFF,FFFF,B0E0,B0E1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B0E2,FFFF,B0E3,FFFF,B0E4,B0E5,B0E6,FFFF,FFFF,FFFF,B0E7,FFFF,FFFF,FFFF,FFFF,FFFF,B0E8,FFFF,FFFF,FFFF,B0E9,FFFF,FFFF,FFFF,B0EA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B0EB,FFFF,B0EC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B0ED,B0EE,FFFF,FFFF,B0EF,FFFF,FFFF,B0F0,B0F1,FFFF,B0F2,FFFF,B0F3,FFFF,FFFF,B0F4,B0F5,FFFF,B0F6,FFFF,B0F7,FFFF,B0F8,B0F9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B0FA,B0FB,FFFF,FFFF,B0FC,FFFF,FFFF,FFFF,B0FD,FFFF,B0FE,FFFF,FFFF,FFFF,FFFF,FFFF,B1A1,FFFF,B1A2,FFFF,B1A3,FFFF,B1A4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1A5,FFFF,FFFF,FFFF,B1A6,FFFF,FFFF,FFFF,B1A7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1A8,FFFF,FFFF,B1A9,B1AA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'8A41' -X'8AFE:E2A=,B1AB,B1AC,FFFF,FFFF,B1AD,FFFF,FFFF,FFFF,B1AE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1AF,FFFF,B1B0,FFFF,B1B1,FFFF,B1B2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1B3,FFFF,FFFF,FFFF,B1B4,FFFF,FFFF,FFFF,B1B5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1B6,FFFF,B1B7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1B8,B1B9,FFFF,FFFF,B1BA,FFFF,FFFF,B1BB,B1BC,B1BD,B1BE,FFFF,FFFF,FFFF,FFFF,B1BF,B1C0,FFFF,B1C1,FFFF,B1C2,FFFF,B1C3,B1C4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1C5,B1C6,FFFF,FFFF,B1C7,FFFF,FFFF,FFFF,B1C8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1C9,B1CA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1CB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1CC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1CD,B1CE,FFFF,FFFF,B1CF,FFFF,FFFF,FFFF,B1D0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1D1,FFFF,B1D2,FFFF,B1D3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'8B41' -X'8BFE:E2A=,B1D4,FFFF,FFFF,FFFF,B1D5,FFFF,FFFF,FFFF,B1D6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1D7,B1D8,FFFF,FFFF,B1D9,FFFF,FFFF,B1DA,B1DB,B1DC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1DD,FFFF,B1DE,FFFF,B1DF,FFFF,B1E0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1E1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1E2,B1E3,FFFF,FFFF,B1E4,FFFF,FFFF,B1E5,B1E6,FFFF,B1E7,FFFF,FFFF,FFFF,FFFF,FFFF,B1E8,FFFF,B1E9,FFFF,B1EA,FFFF,B1EB,B1EC,FFFF,FFFF,FFFF,B1ED,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'8C41' -X'8CFE:E2A=,A4A2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1EE,B1EF,B1F0,FFFF,B1F1,FFFF,FFFF,FFFF,B1F2,FFFF,B1F3,FFFF,FFFF,FFFF,FFFF,FFFF,B1F4,FFFF,B1F5,FFFF,B1F6,B1F7,B1F8,FFFF,FFFF,FFFF,B1F9,FFFF,FFFF,FFFF,FFFF,FFFF,B1FA,B1FB,FFFF,FFFF,B1FC,FFFF,FFFF,FFFF,B1FD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B1FE,FFFF,B2A1,FFFF,B2A2,B2A3,B2A4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2A5,B2A6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2A7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2A8,B2A9,B2AA,FFFF,B2AB,FFFF,FFFF,FFFF,B2AC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2AD,FFFF,B2AE,FFFF,B2AF,B2B0,B2B1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'8D41' -X'8DFE:E2A=,B2B2,B2B3,FFFF,FFFF,B2B4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2B5,FFFF,FFFF,FFFF,B2B6,FFFF,B2B7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2B8,FFFF,FFFF,FFFF,B2B9,FFFF,FFFF,FFFF,B2BA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2BB,B2BC,FFFF,FFFF,FFFF,FFFF,B2BD,FFFF,FFFF,FFFF,FFFF,FFFF,B2BE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2BF,B2C0,FFFF,FFFF,B2C1,FFFF,B2C2,FFFF,B2C3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2C4,FFFF,B2C5,FFFF,B2C6,FFFF,B2C7,B2C8,B2C9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2CA,B2CB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2CC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2CD,B2CE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2CF,B2D0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2D1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'8E41' -X'8EFE:E2A=,B2D2,FFFF,FFFF,FFFF,B2D3,FFFF,FFFF,FFFF,B2D4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2D5,FFFF,B2D6,FFFF,FFFF,FFFF,B2D7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2D8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2D9,B2DA,FFFF,FFFF,B2DB,FFFF,FFFF,FFFF,B2DC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2DD,B2DE,FFFF,B2DF,FFFF,B2E0,FFFF,B2E1,B2E2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2E3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2E4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2E5,B2E6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2E7,B2E8,FFFF,FFFF,B2E9,FFFF,FFFF,FFFF,B2EA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2EB,FFFF,B2EC,FFFF,FFFF,B2ED,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2EE,FFFF,FFFF,FFFF,B2EF,FFFF,FFFF,FFFF,B2F0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2F1,FFFF,B2F2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'8F41' -X'8FFE:E2A=,B2F3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B2F4,B2F5,FFFF,FFFF,B2F6,FFFF,B2F7,FFFF,B2F8,FFFF,B2F9,FFFF,FFFF,FFFF,FFFF,B2FA,B2FB,FFFF,B2FC,FFFF,B2FD,FFFF,B2FE,FFFF,FFFF,FFFF,B3A1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B3A2,B3A3,FFFF,FFFF,B3A4,FFFF,FFFF,FFFF,B3A5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B3A6,FFFF,B3A7,FFFF,B3A8,FFFF,B3A9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'9041' -X'90FE:E2A=,A4A4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B3AA,B3AB,B3AC,FFFF,B3AD,FFFF,FFFF,B3AE,B3AF,B3B0,B3B1,FFFF,FFFF,FFFF,FFFF,FFFF,B3B2,FFFF,B3B3,FFFF,B3B4,B3B5,B3B6,B3B7,B3B8,FFFF,B3B9,FFFF,B3BA,FFFF,FFFF,FFFF,B3BB,B3BC,FFFF,FFFF,B3BD,FFFF,FFFF,FFFF,B3BE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B3BF,FFFF,B3C0,FFFF,B3C1,B3C2,B3C3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B3C4,B3C5,FFFF,FFFF,B3C6,FFFF,FFFF,FFFF,B3C7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B3C8,FFFF,FFFF,FFFF,FFFF,FFFF,B3C9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B3CA,B3CB,FFFF,B3CC,B3CD,FFFF,FFFF,FFFF,B3CE,FFFF,B3CF,B3D0,FFFF,FFFF,FFFF,FFFF,B3D1,FFFF,B3D2,FFFF,B3D3,B3D4,B3D5,FFFF,FFFF,FFFF,FFFF,FFFF,B3D6,FFFF, +*X'9141' -X'91FE:E2A=,B3D7,B3D8,FFFF,FFFF,B3D9,FFFF,FFFF,FFFF,B3DA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B3DB,FFFF,B3DC,FFFF,B3DD,B3DE,B3DF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B3E0,B3E1,FFFF,FFFF,B3E2,FFFF,FFFF,FFFF,B3E3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B3E4,FFFF,B3E5,FFFF,FFFF,B3E6,B3E7,FFFF,FFFF,B3E8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B3E9,FFFF,FFFF,FFFF,B3EA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B3EB,B3EC,FFFF,FFFF,B3ED,FFFF,FFFF,FFFF,B3EE,FFFF,B3EF,FFFF,FFFF,FFFF,FFFF,FFFF,B3F0,FFFF,B3F1,FFFF,B3F2,FFFF,B3F3,FFFF,FFFF,FFFF,FFFF,B3F4,B3F5,FFFF,FFFF,FFFF,B3F6,FFFF,FFFF,FFFF,B3F7,FFFF,FFFF,FFFF,B3F8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B3F9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'9241' -X'92FE:E2A=,B3FA,FFFF,FFFF,FFFF,B3FB,FFFF,FFFF,FFFF,B3FC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B3FD,FFFF,B3FE,FFFF,B4A1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4A2,B4A3,FFFF,FFFF,B4A4,FFFF,FFFF,FFFF,B4A5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4A6,FFFF,B4A7,FFFF,B4A8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4A9,B4AA,FFFF,FFFF,B4AB,FFFF,FFFF,B4AC,B4AD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4AE,FFFF,B4AF,FFFF,B4B0,FFFF,B4B1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4B2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4B3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4B4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4B5,FFFF,FFFF,FFFF,B4B6,FFFF,FFFF,FFFF,B4B7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4B8,FFFF,B4B9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'9341' -X'93FE:E2A=,B4BA,B4BB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4BC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4BD,FFFF,B4BE,FFFF,FFFF,FFFF,B4BF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4C0,B4C1,FFFF,FFFF,B4C2,FFFF,FFFF,FFFF,B4C3,B4C4,B4C5,FFFF,FFFF,FFFF,FFFF,FFFF,B4C6,FFFF,B4C7,FFFF,B4C8,FFFF,B4C9,B4CA,FFFF,FFFF,FFFF,B4CB,FFFF,FFFF,FFFF,FFFF,B4CC,FFFF,FFFF,FFFF,B4CD,FFFF,FFFF,FFFF,B4CE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4CF,B4D0,FFFF,FFFF,B4D1,FFFF,FFFF,FFFF,B4D2,FFFF,B4D3,FFFF,FFFF,FFFF,FFFF,FFFF,B4D4,FFFF,B4D5,FFFF,B4D6,FFFF,B4D7,FFFF,FFFF,FFFF,FFFF,B4D8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'9441' -X'94FE:E2A=,A4A7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4D9,B4DA,B4DB,FFFF,B4DC,FFFF,FFFF,B4DD,B4DE,B4DF,B4E0,B4E1,FFFF,FFFF,FFFF,B4E2,B4E3,FFFF,B4E4,FFFF,B4E5,B4E6,B4E7,B4E8,B4E9,FFFF,FFFF,FFFF,B4EA,FFFF,FFFF,FFFF,B4EB,B4EC,FFFF,FFFF,B4ED,FFFF,FFFF,FFFF,B4EE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4EF,FFFF,B4F0,FFFF,B4F1,B4F2,B4F3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4F4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B4F5,B4F6,B4F7,FFFF,B4F8,FFFF,FFFF,B4F9,B4FA,FFFF,B4FB,B4FC,FFFF,FFFF,FFFF,FFFF,B4FD,FFFF,B4FE,FFFF,B5A1,FFFF,B5A2,FFFF,B5A3,FFFF,FFFF,B5A4,FFFF,FFFF, +*X'9541' -X'95FE:E2A=,B5A5,B5A6,FFFF,FFFF,B5A7,FFFF,FFFF,FFFF,B5A8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5A9,FFFF,B5AA,FFFF,B5AB,B5AC,B5AD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5AE,FFFF,FFFF,FFFF,B5AF,FFFF,FFFF,FFFF,B5B0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5B1,B5B2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5B3,FFFF,FFFF,FFFF,B5B4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5B5,B5B6,FFFF,FFFF,B5B7,FFFF,FFFF,B5B8,B5B9,FFFF,B5BA,FFFF,B5BB,FFFF,FFFF,FFFF,B5BC,FFFF,B5BD,FFFF,B5BE,FFFF,B5BF,FFFF,B5C0,FFFF,B5C1,FFFF,FFFF,FFFF,FFFF,FFFF,B5C2,FFFF,FFFF,FFFF,B5C3,FFFF,FFFF,FFFF,B5C4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5C5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5C6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'9641' -X'96FE:E2A=,B5C7,FFFF,FFFF,FFFF,B5C8,FFFF,FFFF,FFFF,B5C9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5CA,FFFF,B5CB,FFFF,B5CC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5CD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5CE,B5CF,FFFF,FFFF,B5D0,FFFF,FFFF,FFFF,B5D1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5D2,FFFF,B5D3,FFFF,B5D4,FFFF,B5D5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5D6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5D7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5D8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5D9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5DA,FFFF,FFFF,FFFF,B5DB,FFFF,FFFF,FFFF,B5DC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5DD,FFFF,B5DE,FFFF,B5DF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'9741' -X'97FE:E2A=,B5E0,FFFF,FFFF,FFFF,B5E1,FFFF,FFFF,FFFF,B5E2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5E3,FFFF,FFFF,FFFF,FFFF,FFFF,B5E4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5E5,B5E6,FFFF,FFFF,B5E7,FFFF,FFFF,B5E8,B5E9,FFFF,B5EA,FFFF,FFFF,FFFF,FFFF,FFFF,B5EB,FFFF,B5EC,FFFF,B5ED,FFFF,B5EE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5EF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5F0,B5F1,FFFF,FFFF,B5F2,FFFF,FFFF,B5F3,B5F4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5F5,FFFF,B5F6,FFFF,B5F7,B5F8,B5F9,B5FA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'9841' -X'98FE:E2A=,A4A8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B5FB,B5FC,FFFF,FFFF,B5FD,FFFF,FFFF,FFFF,B5FE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6A1,FFFF,B6A2,FFFF,B6A3,B6A4,B6A5,FFFF,FFFF,FFFF,FFFF,FFFF,B6A6,FFFF,FFFF,FFFF,B6A7,B6A8,FFFF,FFFF,B6A9,FFFF,FFFF,FFFF,B6AA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6AB,FFFF,B6AC,FFFF,B6AD,B6AE,B6AF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6B0,B6B1,FFFF,FFFF,B6B2,FFFF,FFFF,FFFF,B6B3,FFFF,B6B4,B6B5,FFFF,FFFF,FFFF,FFFF,B6B6,FFFF,B6B7,FFFF,B6B8,B6B9,B6BA,FFFF,FFFF,FFFF,FFFF,FFFF,B6BB,FFFF, +*X'9941' -X'99FE:E2A=,B6BC,B6BD,FFFF,FFFF,B6BE,FFFF,FFFF,FFFF,B6BF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6C0,FFFF,B6C1,FFFF,B6C2,B6C3,B6C4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6C5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6C6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6C7,B6C8,FFFF,FFFF,B6C9,FFFF,FFFF,FFFF,B6CA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6CB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6CC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6CD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6CE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'9A41' -X'9AFE:E2A=,B6CF,FFFF,FFFF,FFFF,B6D0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6D1,B6D2,FFFF,FFFF,B6D3,FFFF,FFFF,FFFF,B6D4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6D5,B6D6,FFFF,FFFF,FFFF,FFFF,FFFF,B6D7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6D8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6D9,FFFF,FFFF,FFFF,B6DA,FFFF,FFFF,FFFF,B6DB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6DC,FFFF,B6DD,FFFF,FFFF,FFFF,B6DE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'9B41' -X'9BFE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6DF,B6E0,FFFF,FFFF,B6E1,FFFF,FFFF,B6E2,B6E3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6E4,FFFF,B6E5,FFFF,B6E6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6E7,FFFF,FFFF,FFFF,B6E8,FFFF,FFFF,FFFF,B6E9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6EA,FFFF,B6EB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6EC,FFFF,FFFF,FFFF,B6ED,FFFF,FFFF,FFFF,B6EE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6EF,FFFF,B6F0,FFFF,B6F1,FFFF,B6F2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'9C41' -X'9CFE:E2A=,A4A9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6F3,B6F4,FFFF,FFFF,B6F5,FFFF,FFFF,FFFF,B6F6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B6F7,FFFF,B6F8,FFFF,B6F9,B6FA,B6FB,B6FC,FFFF,FFFF,FFFF,B6FD,B6FE,FFFF,FFFF,FFFF,B7A1,B7A2,FFFF,FFFF,B7A3,FFFF,FFFF,FFFF,B7A4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7A5,FFFF,B7A6,FFFF,B7A7,B7A8,B7A9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7AA,B7AB,FFFF,FFFF,B7AC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7AD,FFFF,B7AE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7AF,B7B0,FFFF,FFFF,B7B1,FFFF,FFFF,FFFF,B7B2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7B3,FFFF,B7B4,FFFF,B7B5,B7B6,B7B7,FFFF,FFFF,FFFF,FFFF,FFFF,B7B8,FFFF, +*X'9D41' -X'9DFE:E2A=,B7B9,B7BA,FFFF,FFFF,B7BB,FFFF,FFFF,FFFF,B7BC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7BD,FFFF,B7BE,FFFF,B7BF,FFFF,B7C0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7C1,B7C2,FFFF,FFFF,B7C3,FFFF,FFFF,FFFF,B7C4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7C5,FFFF,B7C6,FFFF,B7C7,B7C8,B7C9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7CA,FFFF,FFFF,FFFF,B7CB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7CC,FFFF,B7CD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7CE,B7CF,FFFF,FFFF,B7D0,FFFF,FFFF,FFFF,B7D1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7D2,FFFF,B7D3,FFFF,B7D4,FFFF,B7D5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7D6,FFFF,FFFF,FFFF,B7D7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7D8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7D9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'9E41' -X'9EFE:E2A=,B7DA,FFFF,FFFF,FFFF,B7DB,FFFF,FFFF,FFFF,B7DC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7DD,FFFF,B7DE,FFFF,B7DF,FFFF,B7E0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7E1,FFFF,FFFF,FFFF,B7E2,FFFF,FFFF,FFFF,B7E3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7E4,FFFF,B7E5,FFFF,B7E6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7E7,B7E8,FFFF,FFFF,B7E9,FFFF,FFFF,FFFF,B7EA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7EB,FFFF,B7EC,FFFF,B7ED,FFFF,B7EE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7EF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7F0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7F1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7F2,B7F3,FFFF,FFFF,B7F4,FFFF,FFFF,FFFF,B7F5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7F6,FFFF,FFFF,FFFF,B7F7,FFFF,B7F8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'9F41' -X'9FFE:E2A=,B7F9,B7FA,FFFF,FFFF,B7FB,FFFF,FFFF,FFFF,B7FC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B7FD,FFFF,B7FE,FFFF,B8A1,FFFF,B8A2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8A3,B8A4,FFFF,FFFF,B8A5,FFFF,FFFF,FFFF,B8A6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8A7,FFFF,B8A8,FFFF,B8A9,FFFF,B8AA,B8AB,FFFF,FFFF,B8AC,B8AD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8AE,B8AF,FFFF,FFFF,B8B0,FFFF,FFFF,FFFF,B8B1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8B2,FFFF,B8B3,FFFF,B8B4,FFFF,B8B5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'A041' -X'A0FE:E2A=,A4B1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8B6,B8B7,FFFF,FFFF,B8B8,FFFF,B8B9,B8BA,B8BB,B8BC,B8BD,FFFF,FFFF,FFFF,FFFF,FFFF,B8BE,FFFF,B8BF,FFFF,B8C0,FFFF,B8C1,B8C2,FFFF,FFFF,B8C3,FFFF,B8C4,FFFF,FFFF,FFFF,B8C5,B8C6,FFFF,FFFF,B8C7,FFFF,FFFF,FFFF,B8C8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8C9,FFFF,B8CA,FFFF,B8CB,B8CC,B8CD,B8CE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8CF,B8D0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8D1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8D2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8D3,B8D4,FFFF,FFFF,B8D5,FFFF,FFFF,FFFF,B8D6,FFFF,B8D7,FFFF,FFFF,FFFF,FFFF,FFFF,B8D8,FFFF,B8D9,FFFF,B8DA,FFFF,B8DB,B8DC,FFFF,FFFF,FFFF,FFFF,B8DD,FFFF, +*X'A141' -X'A1FE:E2A=,B8DE,B8DF,FFFF,FFFF,B8E0,FFFF,FFFF,FFFF,B8E1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8E2,FFFF,B8E3,FFFF,B8E4,B8E5,B8E6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8E7,B8E8,FFFF,FFFF,B8E9,FFFF,FFFF,FFFF,B8EA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8EB,B8EC,B8ED,FFFF,B8EE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8EF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8F0,B8F1,FFFF,B8F2,B8F3,FFFF,FFFF,FFFF,B8F4,FFFF,B8F5,FFFF,FFFF,FFFF,FFFF,FFFF,B8F6,FFFF,B8F7,FFFF,B8F8,FFFF,B8F9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8FA,FFFF,FFFF,FFFF,B8FB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B8FC,B8FD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'A241' -X'A2FE:E2A=,B8FE,FFFF,FFFF,FFFF,B9A1,FFFF,FFFF,FFFF,B9A2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B9A3,FFFF,B9A4,FFFF,B9A5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B9A6,FFFF,FFFF,FFFF,B9A7,FFFF,FFFF,FFFF,B9A8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B9A9,FFFF,B9AA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B9AB,B9AC,B9AD,FFFF,B9AE,FFFF,FFFF,B9AF,B9B0,B9B1,B9B2,FFFF,FFFF,FFFF,FFFF,FFFF,B9B3,FFFF,B9B4,FFFF,B9B5,FFFF,B9B6,FFFF,FFFF,FFFF,B9B7,FFFF,B9B8,FFFF,FFFF,FFFF,B9B9,FFFF,FFFF,FFFF,B9BA,FFFF,FFFF,FFFF,B9BB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B9BC,FFFF,B9BD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B9BE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B9BF,FFFF,FFFF,FFFF,B9C0,FFFF,FFFF,FFFF,B9C1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'A341' -X'A3FE:E2A=,B9C2,FFFF,FFFF,FFFF,B9C3,FFFF,FFFF,FFFF,B9C4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B9C5,FFFF,FFFF,FFFF,B9C6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B9C7,FFFF,FFFF,FFFF,B9C8,FFFF,FFFF,FFFF,B9C9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B9CA,FFFF,FFFF,FFFF,B9CB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B9CC,B9CD,FFFF,FFFF,B9CE,FFFF,FFFF,B9CF,B9D0,FFFF,B9D1,FFFF,FFFF,FFFF,FFFF,FFFF,B9D2,FFFF,B9D3,FFFF,B9D4,B9D5,B9D6,FFFF,B9D7,FFFF,B9D8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'A441' -X'A4FE:E2A=,A4B2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B9D9,B9DA,B9DB,B9DC,B9DD,FFFF,FFFF,B9DE,B9DF,B9E0,B9E1,B9E2,FFFF,FFFF,FFFF,FFFF,B9E3,FFFF,B9E4,FFFF,B9E5,FFFF,B9E6,FFFF,FFFF,FFFF,B9E7,FFFF,FFFF,FFFF,FFFF,FFFF,B9E8,B9E9,FFFF,FFFF,B9EA,FFFF,FFFF,FFFF,B9EB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B9EC,FFFF,B9ED,FFFF,B9EE,B9EF,B9F0,FFFF,FFFF,FFFF,B9F1,FFFF,FFFF,FFFF,FFFF,FFFF,B9F2,B9F3,FFFF,FFFF,B9F4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B9F5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,B9F6,B9F7,FFFF,FFFF,B9F8,FFFF,FFFF,B9F9,B9FA,FFFF,B9FB,FFFF,FFFF,FFFF,FFFF,FFFF,B9FC,FFFF,B9FD,FFFF,B9FE,FFFF,BAA1,BAA2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'A541' -X'A5FE:E2A=,BAA3,BAA4,FFFF,FFFF,BAA5,FFFF,FFFF,BAA6,BAA7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BAA8,FFFF,BAA9,FFFF,BAAA,BAAB,BAAC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BAAD,BAAE,FFFF,FFFF,BAAF,FFFF,FFFF,FFFF,BAB0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BAB1,FFFF,BAB2,BAB3,BAB4,FFFF,FFFF,FFFF,BAB5,FFFF,FFFF,FFFF,FFFF,FFFF,BAB6,FFFF,FFFF,FFFF,BAB7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BAB8,BAB9,BABA,FFFF,BABB,FFFF,FFFF,FFFF,BABC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BABD,FFFF,BABE,FFFF,BABF,FFFF,BAC0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BAC1,FFFF,FFFF,FFFF,BAC2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BAC3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BAC4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BAC5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'A641' -X'A6FE:E2A=,BAC6,BAC7,FFFF,FFFF,BAC8,FFFF,FFFF,FFFF,BAC9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BACA,FFFF,BACB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BACC,FFFF,FFFF,FFFF,BACD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BACE,BACF,FFFF,FFFF,BAD0,FFFF,FFFF,BAD1,BAD2,BAD3,BAD4,FFFF,FFFF,FFFF,FFFF,FFFF,BAD5,FFFF,BAD6,FFFF,BAD7,FFFF,BAD8,FFFF,FFFF,FFFF,BAD9,BADA,FFFF,FFFF,FFFF,FFFF,BADB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BADC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BADD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BADE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BADF,BAE0,FFFF,FFFF,BAE1,FFFF,FFFF,FFFF,BAE2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BAE3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'A741' -X'A7FE:E2A=,BAE4,FFFF,FFFF,FFFF,BAE5,FFFF,FFFF,FFFF,BAE6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BAE7,FFFF,FFFF,FFFF,BAE8,FFFF,BAE9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BAEA,BAEB,FFFF,FFFF,BAEC,FFFF,FFFF,FFFF,BAED,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BAEE,FFFF,BAEF,FFFF,BAF0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BAF1,BAF2,FFFF,FFFF,BAF3,FFFF,FFFF,FFFF,BAF4,FFFF,BAF5,FFFF,FFFF,FFFF,FFFF,FFFF,BAF6,FFFF,BAF7,FFFF,BAF8,FFFF,BAF9,BAFA,BAFB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'A841' -X'A8FE:E2A=,A4B3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BAFC,BAFD,FFFF,FFFF,BAFE,FFFF,FFFF,FFFF,BBA1,FFFF,BBA2,FFFF,FFFF,FFFF,FFFF,FFFF,BBA3,FFFF,BBA4,FFFF,BBA5,BBA6,BBA7,FFFF,FFFF,FFFF,FFFF,FFFF,BBA8,FFFF,FFFF,FFFF,BBA9,BBAA,FFFF,FFFF,BBAB,FFFF,FFFF,FFFF,BBAC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBAD,FFFF,BBAE,FFFF,BBAF,BBB0,BBB1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBB2,BBB3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBB4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBB5,BBB6,FFFF,FFFF,BBB7,FFFF,FFFF,BBB8,BBB9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBBA,FFFF,FFFF,FFFF,BBBB,BBBC,BBBD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'A941' -X'A9FE:E2A=,BBBE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBBF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBC0,BBC1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBC2,FFFF,BBC3,FFFF,BBC4,BBC5,BBC6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBC7,BBC8,FFFF,FFFF,BBC9,FFFF,FFFF,FFFF,BBCA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBCB,FFFF,BBCC,FFFF,FFFF,FFFF,BBCD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'AA41' -X'AAFE:E2A=,BBCE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBCF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBD0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBD1,BBD2,FFFF,FFFF,BBD3,FFFF,FFFF,FFFF,BBD4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBD5,FFFF,FFFF,FFFF,BBD6,FFFF,BBD7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'AB41' -X'ABFE:E2A=,BBD8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBD9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBDA,FFFF,FFFF,FFFF,BBDB,FFFF,FFFF,FFFF,BBDC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBDD,FFFF,BBDE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBDF,BBE0,FFFF,FFFF,BBE1,FFFF,FFFF,FFFF,BBE2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBE3,FFFF,BBE4,FFFF,BBE5,FFFF,BBE6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'AC41' -X'ACFE:E2A=,A4B5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBE7,BBE8,FFFF,BBE9,BBEA,FFFF,FFFF,BBEB,BBEC,BBED,BBEE,FFFF,FFFF,FFFF,FFFF,FFFF,BBEF,FFFF,BBF0,FFFF,BBF1,BBF2,BBF3,FFFF,FFFF,FFFF,BBF4,FFFF,FFFF,FFFF,FFFF,FFFF,BBF5,BBF6,FFFF,FFFF,BBF7,FFFF,FFFF,FFFF,BBF8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBF9,FFFF,BBFA,FFFF,BBFB,BBFC,BBFD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BBFE,BCA1,FFFF,FFFF,BCA2,FFFF,FFFF,FFFF,BCA3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCA4,FFFF,BCA5,FFFF,BCA6,FFFF,BCA7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCA8,FFFF,FFFF,FFFF,BCA9,FFFF,FFFF,FFFF,BCAA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCAB,FFFF,FFFF,FFFF,FFFF,FFFF,BCAC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCAD,BCAE,BCAF,BCB0,BCB1,FFFF,FFFF,BCB2,BCB3,FFFF,BCB4,BCB5,FFFF,FFFF,FFFF,FFFF,BCB6,FFFF,BCB7,FFFF,BCB8,BCB9,BCBA,FFFF,FFFF,FFFF,FFFF,BCBB,FFFF,FFFF, +*X'AD41' -X'ADFE:E2A=,BCBC,BCBD,FFFF,FFFF,BCBE,FFFF,FFFF,FFFF,BCBF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCC0,FFFF,BCC1,FFFF,BCC2,BCC3,BCC4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCC5,BCC6,FFFF,FFFF,BCC7,FFFF,FFFF,FFFF,BCC8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCC9,FFFF,BCCA,FFFF,BCCB,BCCC,BCCD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCCE,FFFF,FFFF,FFFF,BCCF,FFFF,FFFF,FFFF,BCD0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCD1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCD2,BCD3,BCD4,FFFF,BCD5,FFFF,FFFF,FFFF,BCD6,FFFF,BCD7,FFFF,FFFF,FFFF,FFFF,FFFF,BCD8,FFFF,BCD9,FFFF,BCDA,FFFF,BCDB,FFFF,FFFF,FFFF,BCDC,FFFF,FFFF,FFFF,FFFF,FFFF,BCDD,BCDE,FFFF,FFFF,BCDF,FFFF,FFFF,FFFF,BCE0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCE1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCE2,FFFF,FFFF,FFFF,BCE3,FFFF,FFFF,FFFF,BCE4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCE5,FFFF,FFFF,FFFF,BCE6,BCE7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'AE41' -X'AEFE:E2A=,BCE8,FFFF,FFFF,FFFF,BCE9,FFFF,FFFF,FFFF,BCEA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCEB,FFFF,BCEC,FFFF,BCED,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCEE,BCEF,FFFF,FFFF,BCF0,FFFF,FFFF,FFFF,BCF1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCF2,FFFF,BCF3,FFFF,BCF4,FFFF,BCF5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCF6,BCF7,FFFF,FFFF,BCF8,FFFF,FFFF,BCF9,BCFA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BCFB,FFFF,BCFC,FFFF,BCFD,FFFF,BCFE,FFFF,BDA1,FFFF,BDA2,BDA3,FFFF,FFFF,FFFF,FFFF,BDA4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDA5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDA6,BDA7,FFFF,FFFF,BDA8,FFFF,FFFF,FFFF,BDA9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDAA,FFFF,FFFF,FFFF,FFFF,FFFF,BDAB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDAC,BDAD,FFFF,FFFF,BDAE,FFFF,FFFF,FFFF,BDAF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDB0,FFFF,BDB1,FFFF,BDB2,FFFF,BDB3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'AF41' -X'AFFE:E2A=,BDB4,BDB5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDB6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDB7,FFFF,FFFF,FFFF,BDB8,FFFF,BDB9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDBA,BDBB,FFFF,FFFF,BDBC,FFFF,FFFF,FFFF,BDBD,BDBE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDBF,FFFF,BDC0,FFFF,BDC1,FFFF,BDC2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDC3,BDC4,FFFF,FFFF,BDC5,FFFF,FFFF,BDC6,BDC7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDC8,BDC9,FFFF,BDCA,FFFF,BDCB,FFFF,BDCC,FFFF,FFFF,FFFF,FFFF,BDCD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'B041' -X'B0FE:E2A=,A4B6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDCE,BDCF,FFFF,BDD0,BDD1,FFFF,FFFF,FFFF,BDD2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDD3,FFFF,BDD4,FFFF,FFFF,BDD5,BDD6,FFFF,FFFF,FFFF,FFFF,FFFF,BDD7,FFFF,FFFF,FFFF,BDD8,BDD9,FFFF,FFFF,BDDA,FFFF,FFFF,FFFF,BDDB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDDC,FFFF,BDDD,FFFF,FFFF,BDDE,BDDF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDE0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDE1,BDE2,FFFF,FFFF,BDE3,FFFF,FFFF,FFFF,BDE4,FFFF,BDE5,FFFF,FFFF,FFFF,FFFF,FFFF,BDE6,FFFF,BDE7,FFFF,FFFF,BDE8,BDE9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'B141' -X'B1FE:E2A=,BDEA,FFFF,FFFF,FFFF,BDEB,FFFF,FFFF,FFFF,BDEC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDED,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDEE,BDEF,FFFF,FFFF,BDF0,FFFF,FFFF,BDF1,BDF2,FFFF,BDF3,FFFF,FFFF,FFFF,FFFF,FFFF,BDF4,FFFF,BDF5,FFFF,FFFF,FFFF,BDF6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDF7,BDF8,FFFF,FFFF,BDF9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDFA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDFB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BDFC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'B241' -X'B2FE:E2A=,BDFD,FFFF,FFFF,FFFF,BDFE,FFFF,FFFF,FFFF,BEA1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEA2,FFFF,BEA3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEA4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEA5,BEA6,FFFF,FFFF,BEA7,FFFF,FFFF,FFFF,BEA8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEA9,FFFF,BEAA,FFFF,FFFF,FFFF,BEAB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEAC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEAD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEAE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEAF,FFFF,FFFF,FFFF,BEB0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'B341' -X'B3FE:E2A=,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEB1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEB2,BEB3,FFFF,FFFF,BEB4,FFFF,FFFF,FFFF,BEB5,FFFF,BEB6,FFFF,FFFF,FFFF,FFFF,BEB7,BEB8,FFFF,BEB9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEBA,FFFF,FFFF,FFFF,BEBB,FFFF,FFFF,FFFF,BEBC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEBD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEBE,BEBF,FFFF,FFFF,BEC0,FFFF,FFFF,FFFF,BEC1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEC2,FFFF,BEC3,FFFF,BEC4,FFFF,BEC5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'B441' -X'B4FE:E2A=,A4B7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEC6,BEC7,FFFF,FFFF,BEC8,BEC9,BECA,FFFF,BECB,BECC,BECD,FFFF,FFFF,FFFF,FFFF,BECE,BECF,FFFF,BED0,FFFF,BED1,BED2,BED3,FFFF,FFFF,FFFF,BED4,BED5,FFFF,FFFF,FFFF,FFFF,BED6,BED7,FFFF,FFFF,BED8,FFFF,FFFF,FFFF,BED9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEDA,FFFF,BEDB,FFFF,BEDC,BEDD,BEDE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEDF,BEE0,FFFF,FFFF,BEE1,FFFF,FFFF,FFFF,BEE2,FFFF,FFFF,BEE3,FFFF,FFFF,FFFF,FFFF,BEE4,FFFF,BEE5,FFFF,BEE6,FFFF,BEE7,FFFF,FFFF,FFFF,BEE8,FFFF,BEE9,FFFF,FFFF,FFFF,BEEA,FFFF,FFFF,FFFF,BEEB,FFFF,FFFF,FFFF,BEEC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEED,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BEEE,BEEF,FFFF,FFFF,BEF0,BEF1,FFFF,BEF2,BEF3,BEF4,BEF5,FFFF,FFFF,FFFF,FFFF,FFFF,BEF6,FFFF,BEF7,BEF8,BEF9,BEFA,BEFB,BEFC,FFFF,BEFD,FFFF,BEFE,FFFF,FFFF, +*X'B541' -X'B5FE:E2A=,BFA1,BFA2,FFFF,FFFF,BFA3,FFFF,FFFF,FFFF,BFA4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BFA5,FFFF,BFA6,FFFF,BFA7,FFFF,BFA8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BFA9,BFAA,BFAB,FFFF,BFAC,FFFF,FFFF,FFFF,BFAD,FFFF,BFAE,BFAF,FFFF,FFFF,FFFF,FFFF,BFB0,FFFF,BFB1,BFB2,BFB3,BFB4,BFB5,FFFF,FFFF,FFFF,BFB6,BFB7,BFB8,FFFF,FFFF,FFFF,BFB9,FFFF,FFFF,FFFF,BFBA,FFFF,FFFF,FFFF,BFBB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BFBC,FFFF,BFBD,FFFF,BFBE,BFBF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BFC0,BFC1,FFFF,FFFF,BFC2,FFFF,FFFF,FFFF,BFC3,BFC4,BFC5,FFFF,BFC6,FFFF,FFFF,BFC7,BFC8,FFFF,BFC9,FFFF,BFCA,FFFF,BFCB,FFFF,BFCC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BFCD,BFCE,FFFF,FFFF,BFCF,FFFF,FFFF,FFFF,BFD0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BFD1,FFFF,BFD2,FFFF,BFD3,BFD4,BFD5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BFD6,BFD7,FFFF,FFFF,BFD8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BFD9,FFFF,FFFF,FFFF,BFDA,FFFF,BFDB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'B641' -X'B6FE:E2A=,BFDC,BFDD,FFFF,FFFF,BFDE,FFFF,FFFF,FFFF,BFDF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BFE0,FFFF,BFE1,FFFF,BFE2,FFFF,BFE3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BFE4,BFE5,FFFF,FFFF,BFE6,FFFF,FFFF,FFFF,BFE7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BFE8,FFFF,BFE9,FFFF,BFEA,FFFF,BFEB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BFEC,BFED,FFFF,FFFF,BFEE,FFFF,FFFF,FFFF,BFEF,BFF0,BFF1,FFFF,FFFF,FFFF,FFFF,FFFF,BFF2,FFFF,BFF3,FFFF,BFF4,FFFF,BFF5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BFF6,BFF7,FFFF,FFFF,BFF8,FFFF,FFFF,FFFF,BFF9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BFFA,FFFF,BFFB,FFFF,FFFF,BFFC,BFFD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,BFFE,C0A1,FFFF,FFFF,C0A2,FFFF,FFFF,FFFF,C0A3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C0A4,FFFF,C0A5,FFFF,FFFF,FFFF,C0A6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C0A7,C0A8,FFFF,FFFF,C0A9,FFFF,FFFF,FFFF,C0AA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C0AB,FFFF,C0AC,FFFF,C0AD,FFFF,C0AE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'B741' -X'B7FE:E2A=,C0AF,C0B0,FFFF,FFFF,C0B1,FFFF,FFFF,FFFF,C0B2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C0B3,FFFF,C0B4,FFFF,C0B5,FFFF,C0B6,FFFF,C0B7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C0B8,C0B9,FFFF,FFFF,C0BA,FFFF,FFFF,FFFF,C0BB,FFFF,FFFF,FFFF,FFFF,FFFF,C0BC,FFFF,C0BD,FFFF,C0BE,FFFF,C0BF,FFFF,C0C0,C0C1,C0C2,C0C3,C0C4,C0C5,C0C6,FFFF,FFFF,FFFF,C0C7,FFFF,FFFF,FFFF,C0C8,FFFF,FFFF,FFFF,C0C9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C0CA,FFFF,FFFF,FFFF,C0CB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C0CC,C0CD,FFFF,FFFF,C0CE,FFFF,FFFF,FFFF,C0CF,C0D0,C0D1,FFFF,FFFF,FFFF,FFFF,C0D2,C0D3,FFFF,C0D4,FFFF,C0D5,C0D6,C0D7,C0D8,FFFF,FFFF,FFFF,C0D9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'B841' -X'B8FE:E2A=,A4B8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C0DA,C0DB,FFFF,FFFF,C0DC,FFFF,C0DD,C0DE,C0DF,FFFF,C0E0,FFFF,FFFF,FFFF,FFFF,FFFF,C0E1,FFFF,C0E2,FFFF,C0E3,C0E4,C0E5,C0E6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C0E7,C0E8,FFFF,FFFF,C0E9,FFFF,FFFF,FFFF,C0EA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C0EB,FFFF,C0EC,FFFF,C0ED,C0EE,C0EF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C0F0,C0F1,FFFF,FFFF,C0F2,FFFF,C0F3,FFFF,C0F4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C0F5,FFFF,FFFF,FFFF,FFFF,FFFF,C0F6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C0F7,FFFF,FFFF,FFFF,C0F8,FFFF,FFFF,FFFF,C0F9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C0FA,C0FB,FFFF,FFFF,C0FC,FFFF,FFFF,FFFF,C0FD,FFFF,C0FE,FFFF,FFFF,FFFF,FFFF,FFFF,C1A1,FFFF,C1A2,FFFF,C1A3,FFFF,C1A4,C1A5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'B941' -X'B9FE:E2A=,C1A6,C1A7,FFFF,FFFF,C1A8,FFFF,FFFF,FFFF,C1A9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1AA,FFFF,C1AB,FFFF,C1AC,FFFF,C1AD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1AE,FFFF,FFFF,FFFF,C1AF,FFFF,FFFF,FFFF,C1B0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1B1,FFFF,C1B2,FFFF,FFFF,C1B3,C1B4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1B5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1B6,C1B7,FFFF,FFFF,C1B8,FFFF,FFFF,FFFF,C1B9,FFFF,C1BA,FFFF,FFFF,FFFF,FFFF,FFFF,C1BB,FFFF,C1BC,FFFF,C1BD,FFFF,C1BE,C1BF,C1C0,FFFF,FFFF,FFFF,C1C1,FFFF,FFFF,FFFF,C1C2,C1C3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1C4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1C5,FFFF,C1C6,FFFF,C1C7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1C8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1C9,C1CA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'BA41' -X'BAFE:E2A=,C1CB,FFFF,FFFF,FFFF,C1CC,FFFF,FFFF,FFFF,C1CD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1CE,FFFF,C1CF,FFFF,C1D0,FFFF,C1D1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1D2,C1D3,FFFF,FFFF,C1D4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1D5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1D6,C1D7,FFFF,FFFF,C1D8,FFFF,FFFF,FFFF,C1D9,C1DA,C1DB,FFFF,FFFF,FFFF,FFFF,FFFF,C1DC,FFFF,C1DD,FFFF,C1DE,FFFF,C1DF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1E0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1E1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1E2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1E3,C1E4,FFFF,FFFF,C1E5,FFFF,FFFF,FFFF,C1E6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1E7,FFFF,C1E8,FFFF,C1E9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'BB41' -X'BBFE:E2A=,C1EA,FFFF,FFFF,FFFF,C1EB,FFFF,FFFF,FFFF,C1EC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1ED,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1EE,C1EF,FFFF,FFFF,C1F0,FFFF,FFFF,FFFF,C1F1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1F2,FFFF,C1F3,FFFF,C1F4,FFFF,C1F5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C1F6,C1F7,FFFF,FFFF,C1F8,FFFF,FFFF,C1F9,C1FA,FFFF,C1FB,FFFF,FFFF,FFFF,FFFF,FFFF,C1FC,FFFF,C1FD,FFFF,C1FE,FFFF,C2A1,C2A2,FFFF,FFFF,C2A3,C2A4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'BC41' -X'BCFE:E2A=,A4B9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2A5,C2A6,FFFF,FFFF,C2A7,FFFF,C2A8,FFFF,C2A9,FFFF,FFFF,C2AA,FFFF,FFFF,FFFF,FFFF,C2AB,FFFF,C2AC,FFFF,C2AD,C2AE,C2AF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2B0,C2B1,FFFF,FFFF,C2B2,FFFF,FFFF,FFFF,C2B3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2B4,FFFF,C2B5,FFFF,C2B6,C2B7,C2B8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2B9,FFFF,FFFF,FFFF,C2BA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2BB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2BC,C2BD,FFFF,FFFF,C2BE,FFFF,FFFF,FFFF,C2BF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2C0,FFFF,C2C1,FFFF,C2C2,C2C3,C2C4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'BD41' -X'BDFE:E2A=,C2C5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2C6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2C7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2C8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2C9,C2CA,FFFF,FFFF,C2CB,FFFF,FFFF,FFFF,C2CC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2CD,FFFF,C2CE,FFFF,C2CF,FFFF,C2D0,FFFF,C2D1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2D2,C2D3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2D4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2D5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2D6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2D7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'BE41' -X'BEFE:E2A=,C2D8,FFFF,FFFF,FFFF,C2D9,FFFF,FFFF,FFFF,C2DA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2DB,FFFF,C2DC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2DD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2DE,C2DF,FFFF,FFFF,C2E0,FFFF,FFFF,FFFF,C2E1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2E2,FFFF,C2E3,FFFF,FFFF,FFFF,C2E4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2E5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2E6,C2E7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2E8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'BF41' -X'BFFE:E2A=,C2E9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2EA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2EB,FFFF,FFFF,FFFF,C2EC,FFFF,C2ED,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2EE,C2EF,FFFF,FFFF,C2F0,FFFF,FFFF,FFFF,C2F1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2F2,FFFF,C2F3,FFFF,FFFF,FFFF,C2F4,C2F5,FFFF,FFFF,FFFF,FFFF,C2F6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'C041' -X'C0FE:E2A=,A4BA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2F7,C2F8,FFFF,FFFF,C2F9,FFFF,C2FA,FFFF,C2FB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C2FC,FFFF,C2FD,FFFF,C2FE,C3A1,C3A2,C3A3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3A4,C3A5,FFFF,FFFF,C3A6,FFFF,FFFF,FFFF,C3A7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3A8,FFFF,C3A9,FFFF,C3AA,C3AB,C3AC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3AD,FFFF,FFFF,FFFF,C3AE,FFFF,C3AF,FFFF,C3B0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3B1,FFFF,FFFF,FFFF,FFFF,FFFF,C3B2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3B3,C3B4,FFFF,FFFF,C3B5,FFFF,FFFF,FFFF,C3B6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3B7,FFFF,C3B8,FFFF,C3B9,C3BA,C3BB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'C141' -X'C1FE:E2A=,C3BC,C3BD,FFFF,FFFF,C3BE,FFFF,FFFF,FFFF,C3BF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3C0,FFFF,C3C1,FFFF,C3C2,FFFF,C3C3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3C4,FFFF,FFFF,FFFF,C3C5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3C6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3C7,FFFF,FFFF,FFFF,C3C8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3C9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3CA,C3CB,FFFF,FFFF,C3CC,FFFF,FFFF,FFFF,C3CD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3CE,FFFF,C3CF,FFFF,C3D0,FFFF,C3D1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3D2,FFFF,FFFF,FFFF,C3D3,FFFF,FFFF,FFFF,C3D4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3D5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'C241' -X'C2FE:E2A=,C3D6,FFFF,FFFF,FFFF,C3D7,FFFF,FFFF,FFFF,C3D8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3D9,FFFF,C3DA,FFFF,C3DB,FFFF,C3DC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3DD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3DE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3DF,C3E0,FFFF,FFFF,C3E1,FFFF,FFFF,FFFF,C3E2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3E3,FFFF,C3E4,FFFF,C3E5,FFFF,C3E6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3E7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3E8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3E9,FFFF,FFFF,FFFF,C3EA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3EB,FFFF,FFFF,FFFF,C3EC,FFFF,FFFF,FFFF,C3ED,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3EE,FFFF,C3EF,FFFF,C3F0,FFFF,C3F1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'C341' -X'C3FE:E2A=,C3F2,FFFF,FFFF,FFFF,C3F3,FFFF,FFFF,FFFF,C3F4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3F5,FFFF,FFFF,FFFF,FFFF,FFFF,C3F6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3F7,C3F8,FFFF,FFFF,C3F9,FFFF,FFFF,FFFF,C3FA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C3FB,FFFF,C3FC,FFFF,C3FD,FFFF,C3FE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4A1,C4A2,FFFF,FFFF,C4A3,FFFF,FFFF,C4A4,C4A5,C4A6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4A7,FFFF,C4A8,FFFF,C4A9,FFFF,C4AA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'C441' -X'C4FE:E2A=,A4BB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4AB,C4AC,FFFF,FFFF,C4AD,FFFF,FFFF,FFFF,C4AE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4AF,FFFF,C4B0,FFFF,C4B1,FFFF,C4B2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4B3,C4B4,FFFF,FFFF,C4B5,FFFF,FFFF,FFFF,C4B6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4B7,FFFF,C4B8,FFFF,C4B9,C4BA,C4BB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4BC,C4BD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4BE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4BF,C4C0,FFFF,FFFF,C4C1,FFFF,FFFF,C4C2,C4C3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4C4,FFFF,C4C5,FFFF,C4C6,C4C7,C4C8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'C541' -X'C5FE:E2A=,C4C9,C4CA,FFFF,FFFF,C4CB,FFFF,FFFF,FFFF,C4CC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4CD,FFFF,C4CE,FFFF,C4CF,FFFF,C4D0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4D1,FFFF,FFFF,FFFF,C4D2,FFFF,FFFF,FFFF,C4D3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4D4,FFFF,C4D5,FFFF,C4D6,C4D7,C4D8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4D9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4DA,C4DB,FFFF,FFFF,C4DC,FFFF,FFFF,FFFF,C4DD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4DE,FFFF,C4DF,FFFF,C4E0,FFFF,C4E1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4E2,C4E3,FFFF,FFFF,C4E4,FFFF,FFFF,FFFF,C4E5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4E6,FFFF,FFFF,FFFF,FFFF,FFFF,C4E7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4E8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4E9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'C641' -X'C6FE:E2A=,C4EA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4EB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4EC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4ED,C4EE,FFFF,FFFF,C4EF,FFFF,FFFF,FFFF,C4F0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4F1,FFFF,C4F2,FFFF,C4F3,FFFF,C4F4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4F5,FFFF,FFFF,FFFF,C4F6,FFFF,FFFF,FFFF,C4F7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4F8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4F9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4FA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C4FB,C4FC,FFFF,FFFF,C4FD,FFFF,FFFF,FFFF,C4FE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5A1,FFFF,C5A2,FFFF,C5A3,FFFF,C5A4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'C741' -X'C7FE:E2A=,C5A5,FFFF,FFFF,FFFF,C5A6,FFFF,FFFF,FFFF,C5A7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5A8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5A9,C5AA,FFFF,FFFF,C5AB,FFFF,FFFF,FFFF,C5AC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5AD,FFFF,C5AE,FFFF,FFFF,FFFF,C5AF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5B0,C5B1,FFFF,FFFF,C5B2,FFFF,FFFF,FFFF,C5B3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5B4,FFFF,C5B5,FFFF,C5B6,FFFF,C5B7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'C841' -X'C8FE:E2A=,A4BC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5B8,C5B9,FFFF,FFFF,C5BA,FFFF,FFFF,FFFF,C5BB,C5BC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5BD,FFFF,C5BE,FFFF,C5BF,C5C0,C5C1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5C2,C5C3,FFFF,FFFF,C5C4,FFFF,FFFF,FFFF,C5C5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5C6,FFFF,C5C7,FFFF,C5C8,C5C9,C5CA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5CB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5CC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5CD,C5CE,FFFF,FFFF,C5CF,FFFF,FFFF,FFFF,C5D0,FFFF,C5D1,FFFF,FFFF,FFFF,FFFF,FFFF,C5D2,FFFF,C5D3,FFFF,C5D4,C5D5,C5D6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'C941' -X'C9FE:E2A=,C5D7,C5D8,FFFF,FFFF,C5D9,FFFF,FFFF,FFFF,C5DA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5DB,FFFF,C5DC,FFFF,C5DD,FFFF,C5DE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5DF,FFFF,FFFF,FFFF,C5E0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5E1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5E2,FFFF,FFFF,FFFF,C5E3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5E4,C5E5,FFFF,FFFF,C5E6,FFFF,FFFF,FFFF,C5E7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5E8,FFFF,C5E9,FFFF,C5EA,FFFF,C5EB,FFFF,FFFF,FFFF,FFFF,C5EC,FFFF,FFFF,FFFF,FFFF,C5ED,FFFF,FFFF,FFFF,C5EE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5EF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'CA41' -X'CAFE:E2A=,C5F0,FFFF,FFFF,FFFF,C5F1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5F2,FFFF,C5F3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5F4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5F5,C5F6,FFFF,FFFF,C5F7,FFFF,FFFF,FFFF,C5F8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5F9,FFFF,C5FA,FFFF,C5FB,FFFF,C5FC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5FD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C5FE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6A1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6A2,C6A3,FFFF,FFFF,C6A4,FFFF,FFFF,FFFF,C6A5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6A6,FFFF,C6A7,FFFF,FFFF,FFFF,C6A8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'CB41' -X'CBFE:E2A=,C6A9,FFFF,FFFF,FFFF,C6AA,FFFF,FFFF,FFFF,C6AB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6AC,FFFF,FFFF,FFFF,FFFF,FFFF,C6AD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6AE,C6AF,FFFF,FFFF,C6B0,FFFF,FFFF,C6B1,C6B2,FFFF,C6B3,FFFF,FFFF,FFFF,FFFF,FFFF,C6B4,FFFF,C6B5,FFFF,C6B6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6B7,FFFF,FFFF,FFFF,C6B8,FFFF,FFFF,FFFF,C6B9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6BA,FFFF,C6BB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6BC,C6BD,FFFF,FFFF,C6BE,FFFF,FFFF,FFFF,C6BF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6C0,FFFF,C6C1,FFFF,C6C2,FFFF,C6C3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'CC41' -X'CCFE:E2A=,A4BD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6C4,C6C5,C6C6,FFFF,C6C7,FFFF,FFFF,FFFF,C6C8,FFFF,C6C9,FFFF,FFFF,FFFF,FFFF,FFFF,C6CA,FFFF,C6CB,FFFF,C6CC,C6CD,C6CE,FFFF,FFFF,FFFF,C6CF,FFFF,FFFF,FFFF,FFFF,FFFF,C6D0,C6D1,FFFF,FFFF,C6D2,FFFF,FFFF,FFFF,C6D3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6D4,FFFF,C6D5,FFFF,C6D6,C6D7,C6D8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6D9,C6DA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6DB,C6DC,FFFF,FFFF,C6DD,FFFF,FFFF,FFFF,C6DE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6DF,FFFF,C6E0,FFFF,C6E1,C6E2,C6E3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'CD41' -X'CDFE:E2A=,C6E4,C6E5,FFFF,FFFF,C6E6,FFFF,FFFF,FFFF,C6E7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6E8,FFFF,C6E9,FFFF,C6EA,FFFF,C6EB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6EC,FFFF,FFFF,FFFF,C6ED,FFFF,FFFF,FFFF,C6EE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6EF,FFFF,C6F0,FFFF,FFFF,C6F1,C6F2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6F3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6F4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6F5,FFFF,C6F6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6F7,C6F8,FFFF,FFFF,C6F9,FFFF,FFFF,FFFF,C6FA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C6FB,FFFF,C6FC,FFFF,C6FD,FFFF,C6FE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7A1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7A2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'CE41' -X'CEFE:E2A=,C7A3,FFFF,FFFF,FFFF,C7A4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7A5,FFFF,FFFF,FFFF,C7A6,FFFF,FFFF,FFFF,C7A7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7A8,FFFF,C7A9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7AA,C7AB,FFFF,FFFF,C7AC,FFFF,FFFF,C7AD,C7AE,FFFF,C7AF,FFFF,FFFF,FFFF,FFFF,FFFF,C7B0,FFFF,C7B1,FFFF,C7B2,FFFF,C7B3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7B4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7B5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7B6,FFFF,FFFF,FFFF,C7B7,FFFF,FFFF,FFFF,C7B8,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7B9,FFFF,FFFF,FFFF,C7BA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'CF41' -X'CFFE:E2A=,C7BB,FFFF,FFFF,FFFF,C7BC,FFFF,FFFF,FFFF,C7BD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7BE,FFFF,FFFF,FFFF,C7BF,FFFF,C7C0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7C1,FFFF,FFFF,FFFF,C7C2,FFFF,FFFF,FFFF,C7C3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7C4,FFFF,C7C5,FFFF,C7C6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7C7,C7C8,FFFF,FFFF,C7C9,FFFF,FFFF,FFFF,C7CA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7CB,FFFF,C7CC,FFFF,C7CD,FFFF,C7CE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'D041' -X'D0FE:E2A=,A4BE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7CF,C7D0,FFFF,FFFF,C7D1,FFFF,FFFF,FFFF,C7D2,FFFF,FFFF,FFFF,FFFF,C7D3,FFFF,FFFF,C7D4,FFFF,C7D5,FFFF,C7D6,FFFF,C7D7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7D8,C7D9,FFFF,FFFF,C7DA,FFFF,FFFF,FFFF,C7DB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7DC,FFFF,C7DD,FFFF,C7DE,C7DF,C7E0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7E1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7E2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7E3,C7E4,FFFF,FFFF,C7E5,FFFF,FFFF,FFFF,C7E6,FFFF,C7E7,FFFF,FFFF,FFFF,FFFF,FFFF,C7E8,FFFF,C7E9,FFFF,C7EA,FFFF,C7EB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'D141' -X'D1FE:E2A=,C7EC,C7ED,FFFF,FFFF,C7EE,FFFF,FFFF,FFFF,C7EF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7F0,FFFF,C7F1,FFFF,C7F2,FFFF,C7F3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7F4,C7F5,FFFF,FFFF,C7F6,FFFF,FFFF,FFFF,C7F7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7F8,FFFF,C7F9,FFFF,C7FA,C7FB,C7FC,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C7FD,FFFF,FFFF,FFFF,C7FE,FFFF,FFFF,FFFF,C8A1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8A2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8A3,C8A4,FFFF,FFFF,C8A5,FFFF,FFFF,FFFF,C8A6,FFFF,FFFF,FFFF,FFFF,C8A7,FFFF,FFFF,C8A8,FFFF,C8A9,FFFF,C8AA,FFFF,C8AB,FFFF,FFFF,FFFF,C8AC,FFFF,FFFF,FFFF,FFFF,FFFF,C8AD,C8AE,FFFF,FFFF,C8AF,FFFF,FFFF,FFFF,C8B0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8B1,FFFF,C8B2,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8B3,C8B4,FFFF,FFFF,C8B5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8B6,FFFF,C8B7,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'D241' -X'D2FE:E2A=,C8B8,C8B9,FFFF,FFFF,C8BA,FFFF,FFFF,FFFF,C8BB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8BC,FFFF,C8BD,FFFF,C8BE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8BF,FFFF,FFFF,FFFF,C8C0,FFFF,FFFF,FFFF,C8C1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8C2,FFFF,C8C3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8C4,C8C5,FFFF,FFFF,C8C6,FFFF,FFFF,FFFF,C8C7,FFFF,FFFF,FFFF,FFFF,C8C8,FFFF,FFFF,C8C9,FFFF,FFFF,FFFF,C8CA,FFFF,C8CB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8CC,FFFF,FFFF,FFFF,C8CD,FFFF,FFFF,FFFF,C8CE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8CF,FFFF,FFFF,FFFF,FFFF,FFFF,C8D0,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8D1,C8D2,FFFF,FFFF,C8D3,FFFF,FFFF,FFFF,C8D4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8D5,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8D6,C8D7,FFFF,FFFF,C8D8,FFFF,FFFF,FFFF,C8D9,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8DA,FFFF,C8DB,FFFF,C8DC,FFFF,C8DD,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'D341' -X'D3FE:E2A=,C8DE,C8DF,FFFF,FFFF,C8E0,FFFF,FFFF,FFFF,C8E1,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8E2,FFFF,FFFF,FFFF,C8E3,FFFF,C8E4,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8E5,C8E6,FFFF,FFFF,C8E7,FFFF,C8E8,C8E9,C8EA,C8EB,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8EC,FFFF,C8ED,FFFF,C8EE,FFFF,C8EF,FFFF,FFFF,FFFF,C8F0,FFFF,FFFF,FFFF,FFFF,FFFF,C8F1,FFFF,FFFF,FFFF,C8F2,FFFF,FFFF,FFFF,C8F3,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8F4,FFFF,C8F5,FFFF,FFFF,FFFF,C8F6,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8F7,C8F8,FFFF,FFFF,C8F9,FFFF,FFFF,FFFF,C8FA,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,C8FB,FFFF,C8FC,FFFF,C8FD,FFFF,C8FE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'D441' -X'D4FE:E2A=,C9A1,C9A2,C9A3,C9A4,C9A5,C9A6,C9A7,C9A8,C9A9,C9AA,C9AB,C9AC,C9AD,C9AE,C9AF,C9B0,C9B1,C9B2,C9B3,C9B4,C9B5,C9B6,C9B7,C9B8,C9B9,C9BA,C9BB,C9BC,C9BD,C9BE,C9BF,C9C0,C9C1,C9C2,C9C3,C9C4,C9C5,C9C6,C9C7,C9C8,C9C9,C9CA,C9CB,C9CC,C9CD,C9CE,C9CF,C9D0,C9D1,C9D2,C9D3,C9D4,C9D5,C9D6,C9D7,C9D8,C9D9,C9DA,C9DB,C9DC,C9DD,C9DE,C9DF,C9E0,C9E1,C9E2,C9E3,C9E4,C9E5,C9E6,C9E7,C9E8,C9E9,C9EA,C9EB,C9EC,C9ED,C9EE,C9EF,C9F0,C9F1,C9F2,C9F3,C9F4,C9F5,C9F6,C9F7,C9F8,C9F9,C9FA,C9FB,C9FC,C9FD,C9FE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, +*X'D541' -X'D5FE:E2A=,FEA1,FEA2,FEA3,FEA4,FEA5,FEA6,FEA7,FEA8,FEA9,FEAA,FEAB,FEAC,FEAD,FEAE,FEAF,FEB0,FEB1,FEB2,FEB3,FEB4,FEB5,FEB6,FEB7,FEB8,FEB9,FEBA,FEBB,FEBC,FEBD,FEBE,FEBF,FEC0,FEC1,FEC2,FEC3,FEC4,FEC5,FEC6,FEC7,FEC8,FEC9,FECA,FECB,FECC,FECD,FECE,FECF,FED0,FED1,FED2,FED3,FED4,FED5,FED6,FED7,FED8,FED9,FEDA,FEDB,FEDC,FEDD,FEDE,FEDF,FEE0,FEE1,FEE2,FEE3,FEE4,FEE5,FEE6,FEE7,FEE8,FEE9,FEEA,FEEB,FEEC,FEED,FEEE,FEEF,FEF0,FEF1,FEF2,FEF3,FEF4,FEF5,FEF6,FEF7,FEF8,FEF9,FEFA,FEFB,FEFC,FEFD,FEFE,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF,FFFF, \ No newline at end of file diff --git a/src/main/resources/excel-layout-load-format.kakao.properties b/src/main/resources/excel-layout-load-format.kakao.properties new file mode 100644 index 0000000..7d24b44 --- /dev/null +++ b/src/main/resources/excel-layout-load-format.kakao.properties @@ -0,0 +1,64 @@ +##excel sheet\uba85 kakao +COL_REGEXP_LAYOUT_DESC=(AS\uba85|\uac70\ub798\uba85|\uc2dc\uc2a4\ud15c\uc778\ud130\ud398\uc774\uc2a4\uba85|\uc778\ud130\ud398\uc774\uc2a4\uba85) +########################################## +## COL \uc740 0 \ubd80\ud130 \uc2dc\uc791\ud568 +#0.\uc601\ubb38\uba85(level2) - \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc74c +#1.level2(\uae30\ub2a5\uadf8\ub8f9) - \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc74c +#2.\uc2dc\uc2a4\ud15c\uc778\ud130\ud398\uc774\uc2a4\ucf54\ub4dc - \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc74c +#3.\uc2dc\uc2a4\ud15c\uc778\ud130\ud398\uc774\uc2a4\uba85 +COL_LAYOUT_DESC=3 +#4.\uc77c\ub828\ubc88\ud638 +COL_REGEXP_NO=\uc77c\ub828\ubc88\ud638 +COL_NO=4 +#5.\ud56d\ubaa9\uba85(\ud55c\uae00) +COL_REGEXP_DESC=\ud56d\ubaa9(\uba85)?\\(\ud55c\uae00\\) +COL_DESC=5 +#6.\ud56d\ubaa9\uc815\uc758 - \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc74c +#7.DEPTH +COL_REGEXP_DPTH=DEPTH +COL_DPTH=7 +#8.\ud56d\ubaa9\ud3b8\uc9c4\uad6c\ubd84\ucf54\ub4dc(GROUP/FIELD/ARRAY) +COL_REGEXP_NODE=(\ud56d\ubaa9\ud3b8\uc9d1\ucf54\ub4dc|\ud56d\ubaa9\ud3b8\uc9d1\uad6c\ubd84\ucf54\ub4dc) +COL_NODE=8 +#9.\ubc30\uc5f4\ucd5c\ub300\uac2f\uc218 +COL_REGEXP_OCC_TYPE=\ubc30\uc5f4\ucd5c\ub300\uac2f\uc218 +COL_OCC_TYPE=9 +#10.\ubc18\ubcf5\ud69f\uc218\ucc38\uc870\uc815\ubcf4 +COL_REGEXP_OCC_REF=\ubc18\ubcf5\ud69f\uc218\ucc38\uc870\uc815\ubcf4 +COL_OCC_REF=10 +#11.\ud14c\uc774\ud130\ud0c0\uc785(String/Long/BigDecimal) +COL_REGEXP_TYPE=\ub370\uc774\ud130\ud0c0\uc785 +COL_TYPE=11 +#12.\ub370\uc774\ud130\uae38\uc774 +COL_REGEXP_LEN=\ub370\uc774\ud130\uae38\uc774 +COL_LEN=12 +#13.\uc18c\uc218\uc810\uae38\uc774 +COL_REGEXP_DEC_POINT_LEN=\uc18c\uc22b\uc810\uae38\uc774 +COL_DEC_POINT_LEN=13 + +#14.\ud56d\ubaa9\uba85(\uc601\ubb38) +COL_REGEXP_NAME=\ud56d\ubaa9\uba85\\(\uc601\ubb38\\) +COL_NAME=14 +########################################## +#15~18 \ub808\uc774\uc544\uc6c3\uccb4\ud06c\ud56d\ubaa9 \ub9e8\uc544\ub798 \uceec\ub7fc\ubc30\uc774\ud2cb \ucc38\uc870 +COL_BASE=15 +COL_REGEXP_START_FLAG=(EAI|FEP|MCI).* +COL_REGEXP_MATCH_FLAG=(EAI|FEP|MCI)\\([A-Z0-9]+\\) +#\uceec\ub7fcBASE\ub97c \ubc14\uafb8\ub294 \uae30\uc900\uc774 \ub418\ub294\uac12 +#excel sheet\uac00 2\uac00\uc9c0 \uacbd\uc6b0 \ucc98\ub9ac \ub54c\ubb38\uc5d0 +#if(!sheet.getCellString(0, COL_CODE).equals(COL_REGEXP_CODE)){ +# columnBase=COL_CHANGE_BASE; +# } +COL_REGEXP_CODE=\ucf54\ub4dc\ubcc0\ud658 +COL_CODE=18 +##\uce74\uce74\uc624\ub294 \ucf54\ub4dc\ubcc0\ud658 \uceec\ub7fc\uc774 \uc5c6\uc5b4\uc11c 15\ub85c \uc138\ud305 +COL_CHANGE_BASE=15 +########################################## +#19.\ube44\uace0 (FML\uc5d0\uc11c\ub9cc \uc0ac\uc6a9\ud568) +COL_REGEXP_NOTE=\ube44\uace0 +COL_NOTE=19 +#20.default\uac12(\ub808\uc774\uc544\uc6c3\uccb4\ud06c\ud56d\ubaa9\uc5d0\uc11c D \ub85c \uc14b\ud305\ub418\uc5b4\uc788\uc744\ub54c default \uc124\uc815) +COL_DEFAULT=23 +########################################## +#sheet +SHEET_NAME=\uc778\ud130\ud398\uc774\uc2a4\uc124\uacc4\uc11c \ No newline at end of file diff --git a/src/main/resources/excel-layout-load-format.org.properties b/src/main/resources/excel-layout-load-format.org.properties new file mode 100644 index 0000000..746aa4a --- /dev/null +++ b/src/main/resources/excel-layout-load-format.org.properties @@ -0,0 +1,63 @@ +##excel sheet\uba85 --org +COL_REGEXP_LAYOUT_DESC=(AS\uba85|\uac70\ub798\uba85|\uc2dc\uc2a4\ud15c\uc778\ud130\ud398\uc774\uc2a4\uba85) +########################################## +## COL \uc740 0 \ubd80\ud130 \uc2dc\uc791\ud568 +#0.\uc601\ubb38\uba85(level2) - \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc74c +#1.level2(\uae30\ub2a5\uadf8\ub8f9) - \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc74c +#2.\uc2dc\uc2a4\ud15c\uc778\ud130\ud398\uc774\uc2a4\ucf54\ub4dc - \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc74c +#3.\uc2dc\uc2a4\ud15c\uc778\ud130\ud398\uc774\uc2a4\uba85 +COL_LAYOUT_DESC=3 +#4.\uc77c\ub828\ubc88\ud638 +COL_REGEXP_NO=\uc77c\ub828\ubc88\ud638 +COL_NO=4 +#5.\ud56d\ubaa9\uba85(\ud55c\uae00) +COL_REGEXP_DESC=\uac70\ub798(\uc785|\ucd9c)\ub825\ud56d\ubaa9(\uba85)?\\(\ud55c\uae00\\) +COL_DESC=5 +#6.\ud56d\ubaa9\uc815\uc758 - \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc74c +#7.DEPTH +COL_REGEXP_DPTH=DEPTH +COL_DPTH=7 +#8.\ud56d\ubaa9\ud3b8\uc9c4\uad6c\ubd84\ucf54\ub4dc(GROUP/FIELD/ARRAY) +COL_REGEXP_NODE=(\ud56d\ubaa9\ud3b8\uc9d1\ucf54\ub4dc|\ud56d\ubaa9\ud3b8\uc9d1\uad6c\ubd84\ucf54\ub4dc) +COL_NODE=8 +#9.\ubc30\uc5f4\ucd5c\ub300\uac2f\uc218 +COL_REGEXP_OCC_TYPE=\ubc30\uc5f4\ucd5c\ub300\uac2f\uc218 +COL_OCC_TYPE=9 +#10.\ubc18\ubcf5\ud69f\uc218\ucc38\uc870\uc815\ubcf4 +COL_REGEXP_OCC_REF=\ubc18\ubcf5\ud69f\uc218\ucc38\uc870\uc815\ubcf4 +COL_OCC_REF=10 +#15.\ud14c\uc774\ud130\ud0c0\uc785(String/Long/BigDecimal) +COL_REGEXP_TYPE=\ub370\uc774\ud130\ud0c0\uc785 +COL_TYPE=15 +#16.\ub370\uc774\ud130\uae38\uc774 +COL_REGEXP_LEN=\ub370\uc774\ud130\uae38\uc774 +COL_LEN=16 +#17.\uc18c\uc218\uc810\uae38\uc774 +COL_REGEXP_DEC_POINT_LEN=\uc18c\uc22b\uc810\uae38\uc774 +COL_DEC_POINT_LEN=17 +#\ucf54\ub4dc\ubcc0\ud658 ??? +COL_REGEXP_CODE=\ucf54\ub4dc\ubcc0\ud658 +#21.\ud56d\ubaa9\uba85(\uc601\ubb38) +COL_REGEXP_NAME=\uac70\ub798(\uc785|\ucd9c)\ub825\ud56d\ubaa9\uba85\\(\uc601\ubb38\\) +COL_NAME=21 +########################################## +#24~18 \ub808\uc774\uc544\uc6c3\uccb4\ud06c\ud56d\ubaa9 \ub9e8\uc544\ub798 \uceec\ub7fc\ubc30\uc774\ud2cb \ucc38\uc870 +COL_BASE=24 +COL_REGEXP_START_FLAG=(EAI).* +COL_REGEXP_MATCH_FLAG=(EAI)\\([A-Z0-9]+\\) +#\uceec\ub7fcBASE\ub97c \ubc14\uafb8\ub294 \uae30\uc900\uc774 \ub418\ub294\uac12 +#excel sheet\uac00 2\uac00\uc9c0 \uacbd\uc6b0 \ucc98\ub9ac \ub54c\ubb38\uc5d0 +#if(!sheet.getCellString(0, COL_CODE).equals(COL_REGEXP_CODE)){ +# columnBase = COL_CHANGE_BASE; +# } +COL_CODE=18 +#COL_CHANGE_BASE=20 +########################################## +#32.\ube44\uace0 (FML\uc5d0\uc11c\ub9cc \uc0ac\uc6a9\ud568) +COL_REGEXP_NOTE=\ube44\uace0 +COL_NOTE=32 +#20.default\uac12(\ub808\uc774\uc544\uc6c3\uccb4\ud06c\ud56d\ubaa9\uc5d0\uc11c D \ub85c \uc14b\ud305\ub418\uc5b4\uc788\uc744\ub54c default \uc124\uc815) +COL_DEFAULT=23 +########################################## +#sheet +SHEET_NAME=\uc2dc\uc2a4\ud15c\uc778\ud130\ud398\uc774\uc2a4\uc1a1\uc218\uc2e0\ud56d\ubaa9\uc124\uacc4\uc11c \ No newline at end of file diff --git a/src/main/resources/excel-layout-load-format.properties b/src/main/resources/excel-layout-load-format.properties new file mode 100644 index 0000000..746aa4a --- /dev/null +++ b/src/main/resources/excel-layout-load-format.properties @@ -0,0 +1,63 @@ +##excel sheet\uba85 --org +COL_REGEXP_LAYOUT_DESC=(AS\uba85|\uac70\ub798\uba85|\uc2dc\uc2a4\ud15c\uc778\ud130\ud398\uc774\uc2a4\uba85) +########################################## +## COL \uc740 0 \ubd80\ud130 \uc2dc\uc791\ud568 +#0.\uc601\ubb38\uba85(level2) - \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc74c +#1.level2(\uae30\ub2a5\uadf8\ub8f9) - \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc74c +#2.\uc2dc\uc2a4\ud15c\uc778\ud130\ud398\uc774\uc2a4\ucf54\ub4dc - \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc74c +#3.\uc2dc\uc2a4\ud15c\uc778\ud130\ud398\uc774\uc2a4\uba85 +COL_LAYOUT_DESC=3 +#4.\uc77c\ub828\ubc88\ud638 +COL_REGEXP_NO=\uc77c\ub828\ubc88\ud638 +COL_NO=4 +#5.\ud56d\ubaa9\uba85(\ud55c\uae00) +COL_REGEXP_DESC=\uac70\ub798(\uc785|\ucd9c)\ub825\ud56d\ubaa9(\uba85)?\\(\ud55c\uae00\\) +COL_DESC=5 +#6.\ud56d\ubaa9\uc815\uc758 - \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc74c +#7.DEPTH +COL_REGEXP_DPTH=DEPTH +COL_DPTH=7 +#8.\ud56d\ubaa9\ud3b8\uc9c4\uad6c\ubd84\ucf54\ub4dc(GROUP/FIELD/ARRAY) +COL_REGEXP_NODE=(\ud56d\ubaa9\ud3b8\uc9d1\ucf54\ub4dc|\ud56d\ubaa9\ud3b8\uc9d1\uad6c\ubd84\ucf54\ub4dc) +COL_NODE=8 +#9.\ubc30\uc5f4\ucd5c\ub300\uac2f\uc218 +COL_REGEXP_OCC_TYPE=\ubc30\uc5f4\ucd5c\ub300\uac2f\uc218 +COL_OCC_TYPE=9 +#10.\ubc18\ubcf5\ud69f\uc218\ucc38\uc870\uc815\ubcf4 +COL_REGEXP_OCC_REF=\ubc18\ubcf5\ud69f\uc218\ucc38\uc870\uc815\ubcf4 +COL_OCC_REF=10 +#15.\ud14c\uc774\ud130\ud0c0\uc785(String/Long/BigDecimal) +COL_REGEXP_TYPE=\ub370\uc774\ud130\ud0c0\uc785 +COL_TYPE=15 +#16.\ub370\uc774\ud130\uae38\uc774 +COL_REGEXP_LEN=\ub370\uc774\ud130\uae38\uc774 +COL_LEN=16 +#17.\uc18c\uc218\uc810\uae38\uc774 +COL_REGEXP_DEC_POINT_LEN=\uc18c\uc22b\uc810\uae38\uc774 +COL_DEC_POINT_LEN=17 +#\ucf54\ub4dc\ubcc0\ud658 ??? +COL_REGEXP_CODE=\ucf54\ub4dc\ubcc0\ud658 +#21.\ud56d\ubaa9\uba85(\uc601\ubb38) +COL_REGEXP_NAME=\uac70\ub798(\uc785|\ucd9c)\ub825\ud56d\ubaa9\uba85\\(\uc601\ubb38\\) +COL_NAME=21 +########################################## +#24~18 \ub808\uc774\uc544\uc6c3\uccb4\ud06c\ud56d\ubaa9 \ub9e8\uc544\ub798 \uceec\ub7fc\ubc30\uc774\ud2cb \ucc38\uc870 +COL_BASE=24 +COL_REGEXP_START_FLAG=(EAI).* +COL_REGEXP_MATCH_FLAG=(EAI)\\([A-Z0-9]+\\) +#\uceec\ub7fcBASE\ub97c \ubc14\uafb8\ub294 \uae30\uc900\uc774 \ub418\ub294\uac12 +#excel sheet\uac00 2\uac00\uc9c0 \uacbd\uc6b0 \ucc98\ub9ac \ub54c\ubb38\uc5d0 +#if(!sheet.getCellString(0, COL_CODE).equals(COL_REGEXP_CODE)){ +# columnBase = COL_CHANGE_BASE; +# } +COL_CODE=18 +#COL_CHANGE_BASE=20 +########################################## +#32.\ube44\uace0 (FML\uc5d0\uc11c\ub9cc \uc0ac\uc6a9\ud568) +COL_REGEXP_NOTE=\ube44\uace0 +COL_NOTE=32 +#20.default\uac12(\ub808\uc774\uc544\uc6c3\uccb4\ud06c\ud56d\ubaa9\uc5d0\uc11c D \ub85c \uc14b\ud305\ub418\uc5b4\uc788\uc744\ub54c default \uc124\uc815) +COL_DEFAULT=23 +########################################## +#sheet +SHEET_NAME=\uc2dc\uc2a4\ud15c\uc778\ud130\ud398\uc774\uc2a4\uc1a1\uc218\uc2e0\ud56d\ubaa9\uc124\uacc4\uc11c \ No newline at end of file diff --git a/src/test/java/com/eactive/eai/transformer/AllTests.java b/src/test/java/com/eactive/eai/transformer/AllTests.java new file mode 100644 index 0000000..baadb3f --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/AllTests.java @@ -0,0 +1,69 @@ +package com.eactive.eai.transformer; + +import java.io.PrintWriter; + +import org.junit.platform.engine.DiscoverySelector; +import org.junit.platform.engine.discovery.DiscoverySelectors; +import org.junit.platform.launcher.Launcher; +import org.junit.platform.launcher.LauncherDiscoveryRequest; +import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder; +import org.junit.platform.launcher.core.LauncherFactory; +import org.junit.platform.launcher.listeners.SummaryGeneratingListener; +import org.junit.platform.launcher.listeners.TestExecutionSummary; + +import com.eactive.eai.common.util.Logger; + +class AllTests { + protected static Logger logger = Logger.getLogger("transformer"); + + public static void setSystemPropertyIfNull(String key, String value) { + if (System.getProperties().contains(key) == false) { + System.setProperty(key, value); + } + } + + public static void setParams() { + System.setProperty("module", "TEST_EXCEL"); + System.setProperty("eai.tableowner", "EAI"); + System.setProperty("prefix", "local.eai.mariadb"); + } + + public static void main(String[] args) { + /** + * set module + */ + setParams(); + System.setProperty("transformer.rule.dir", "D:\\TransformRule"); + System.setProperty("transformer.string.trimend", "true"); + System.setProperty("transformer.validation", "false"); + System.setProperty("transformer.decimalpoint.add", "false"); + + System.setProperty(SystemKeys.TRANSFROMER_LAYOUT_CACHE_INIT_ONSTARTUP, "true"); + + DiscoverySelector[] discoverySelectors = new DiscoverySelector[] { + DiscoverySelectors.selectClass(TransformXmlVarGridTest.class) +// , DiscoverySelectors.selectClass(TransformXmlTest.class) +// , DiscoverySelectors.selectClass(TransformJsonMultiGridTest.class) +// , DiscoverySelectors.selectClass(TransformJsonMixedGridTest.class) +// , DiscoverySelectors.selectClass(TransformAggTest.class) +// , DiscoverySelectors.selectClass(TransformJsonDoubleGridTest.class) +// , DiscoverySelectors.selectClass(TransformGvAttrTest.class) +// , DiscoverySelectors.selectClass(TransformMessageLoadTest.class) + }; + LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder.request().selectors(discoverySelectors) + .build(); + + Launcher launcher = LauncherFactory.create(); + SummaryGeneratingListener listener = new SummaryGeneratingListener(); + + launcher.registerTestExecutionListeners(listener); + launcher.execute(request); + TestExecutionSummary summary = listener.getSummary(); + summary.getTestsFailedCount(); + + try (PrintWriter out = new PrintWriter(System.out)) { + summary.printTo(out); + } + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/ArrayErrorLayoutTest.java b/src/test/java/com/eactive/eai/transformer/ArrayErrorLayoutTest.java new file mode 100644 index 0000000..1a11809 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/ArrayErrorLayoutTest.java @@ -0,0 +1,110 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class ArrayErrorLayoutTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public ArrayErrorLayoutTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(ArrayErrorLayoutTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testVfield() throws Exception { + System.out.println("testVfield =============================================================="); + Message target = null; + byte[] data = null; + byte[] result = null; + target = MessageFactory.getFactory().getMessage("EAI_TST003_REQ1"); + //System.out.println("before="+target); + //data = "KBO0002AAAA1AAAA2BBBB1BBBB20010ABCDEFGHIJ0005543210003AAAA1AAAA2BBBB1BBBB2CCCC1CCCC2".getBytes();//정상데이터 + //data = "KBO0003AAAA1AAAA2BBBB1BBBB2010ABCDEF00150005500050003A0003AAAA2BBBB1BBBB2CCCC1CCCC2".getBytes();//오류데이터 + + + //data = "KBO0000000000000003AAAA1AAAA2BBBB1BBBB2CCCC1CCCC2".getBytes();//정상데이터 + data = "KBO0000000000000005AAAA1AAAA2BBBB1BBBB2CCCC1CCCC2".getBytes();//정상데이터 + System.out.println(new String(data)); + target.setData(data); + System.out.println(target); + //result =(byte[])target.getData(); + //System.out.println("result=["+result.length+"][" + new String(result)+"]"); + //System.out.println("reqMsgP1="+target.getString("EAI_TST003_REQ1.InData.reqMsgP1")); + //System.out.println("reqMsgP2="+target.getString("EAI_TST003_REQ1.InData.reqMsgP2")); + + } + public void atestTransformXmlToFlat() throws Exception { + System.out.println("testTransformXmlToFlat =============================================================="); + Message source = MessageFactory.getFactory().getMessage("EAI_TST004_REQ2"); + Message target = MessageFactory.getFactory().getMessage("EAI_TST004_REQ1"); + + String reqXML = "" + + "" // + + "KBO" + + "" + + "AAAA1" + + "BBBB1" + + "" + + "" + + "AAAA2" + + "BBBB2" + + "" + + "0010" + + "ABCDEFGHIJ" + + "0005" + + "54321" + + "" + + "AAAA1" + + "BBBB1" + + "" + + "" + + "AAAA2" + + "BBBB2" + + "" + + "" + + "AAAA3" + + "BBBB3" + + "" + + "" + + ""; + + source.setData(reqXML); + Transformer transformer = engine.getTransformer(); + System.out.println("before="+target); + transformer.transform("TRANSFORM_EAI_TST004_REQ", target, new Message[] { source }); + System.out.println("result=[" + new String((byte[])target.getData())+"]"); + System.out.println("after="+target); + + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/ConcatFunction.java b/src/test/java/com/eactive/eai/transformer/ConcatFunction.java new file mode 100644 index 0000000..9663b3a --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/ConcatFunction.java @@ -0,0 +1,24 @@ +package com.eactive.eai.transformer; + +import java.util.Stack; + +import org.nfunk.jep.ParseException; +import org.nfunk.jep.function.PostfixMathCommand; + +public class ConcatFunction extends PostfixMathCommand { + + public ConcatFunction() { + numberOfParameters = 2; + } + + public void run(Stack inStack) throws ParseException { + checkStack(inStack); + + String param2 = (String)inStack.pop(); + String param1 = (String)inStack.pop(); + + String value = param1 + param2; + + inStack.push(value); + } +} diff --git a/src/test/java/com/eactive/eai/transformer/DelimiterLayoutTest.java b/src/test/java/com/eactive/eai/transformer/DelimiterLayoutTest.java new file mode 100644 index 0000000..64bb040 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/DelimiterLayoutTest.java @@ -0,0 +1,200 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class DelimiterLayoutTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public DelimiterLayoutTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(DelimiterLayoutTest.class); + } + + public void setUp() throws Exception { + // + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + public void atestLayoutTest() throws Exception { + byte[] b = {0x09}; + String Delimiter = new String(b); + System.out.println("layout Test =============================================================="); + + Message source = MessageFactory.getFactory().getMessage("TST_T311TR0107_CBSS"); + StringBuilder sb = new StringBuilder(); + sb.append(Delimiter); + sb.append("12345678901234567890").append(Delimiter); + sb.append("012").append(Delimiter); + sb.append("1234567890123456").append(Delimiter); + sb.append("19720407").append(Delimiter); + sb.append("james").append(Delimiter); + sb.append("userci-adfaadddccccc1234567890userci-adfaadddccccc1234567890userci-adfaadddccccc1234567890sbdjuuuuuu").append(Delimiter); + sb.append("test@eactive.co.kr").append(Delimiter); + sb.append("scope123").append(Delimiter); + sb.append("Y").append(Delimiter); + sb.append("Y").append(Delimiter); + sb.append("1").append(Delimiter); + + String data =sb.toString(); + source.setData(data); + System.out.println(source); + + System.out.println("["+source.getData()+"]"); + + } + public void atestTransformerTest() throws Exception { + byte[] b = {0x09}; + String Delimiter = new String(b); + System.out.println("transformer Test Delimiter=> JSON =============================================================="); + + Message source = MessageFactory.getFactory().getMessage("TST_T311TR0107_CBSS"); + + StringBuilder sb = new StringBuilder(); + sb.append(Delimiter); + sb.append("12345678901234567890").append(Delimiter); + sb.append("012").append(Delimiter); + sb.append("1234567890123456").append(Delimiter); + sb.append("19720407").append(Delimiter); + sb.append("james").append(Delimiter); + sb.append("userci-adfaadddccccc1234567890userci-adfaadddccccc1234567890userci-adfaadddccccc1234567890sbdjuuuuuu").append(Delimiter); + sb.append("test@eactive.co.kr").append(Delimiter); + sb.append("scope123").append(Delimiter); + sb.append("Y").append(Delimiter); + sb.append("Y").append(Delimiter); + sb.append("1").append(Delimiter); + + String data = sb.toString(); + source.setData(data); + System.out.println(source); + System.out.println("["+new String((byte[])source.getData())+"]"); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_TST_T311TR0107S2_REQ", new Message[] { source }); + + + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + } + public void atestTransformer2Test() throws Exception { + System.out.println("transformer Test JSON=> Delimiter============================================================="); + + Message source = MessageFactory.getFactory().getMessage("COP_T311TR0107_ORGS"); + + String data ="{\"COP_T311TR0107_ORGS\":{\"EAI_BODY\":{\"user_ci\":\"userci-adfaadddccccc1234567890userci-adfaadddccccc1234567890userci-adfaadddccccc1234567890sbdjuuuuuu\",\"agmt_data_type\":\"1\",\"wd_agmt_yn\":\"Y\",\"user_email\":\"test@eactive.co.kr\",\"info_prvd_agmt_yn\":\"Y\",\"user_info\":\"19720407\",\"user_name\":\"james\",\"scope\":\"scope123\",\"bank_code_std\":\"012\",\"bank_tran_id\":\"12345678901234567890\",\"register_account_num\":\"1234567890123456\"}}}"; + + source.setData(data); + System.out.println(source); + + System.out.println("["+source.getData()+"]"); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_TST_T311TR0107S2_RES", new Message[] { source }); + + + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + } + public void testTransformerUJSONToDelimiterTest() throws Exception { + System.out.println("transformer Test UJSON=> DELIMITER =============================================================="); + + Message source = MessageFactory.getFactory().getMessage("EAI_TST0200100U_REQ1"); + + String str =""; + str = str + " {\"EAI_TST0200100U_REQ1\": "; + str = str + " {\"trancode1\":\"0200\" "; + str = str + " , \"trancode2\":\"100\" "; + str = str + " , \"tracekey1\":\"trac1\" "; + str = str + " , \"tracekey2\":\"trac2\" "; + str = str + " , \"bizkey1\":\"bizk1\" "; + str = str + " , \"bizkey2\":\"bizk2\" "; + str = str + " , \"grid1Count\":\"2\" "; + str = str + " , \"grid1\":[ "; + str = str + " {\"data1\" : \"a001\",\"data2\":\"a002\"} "; + str = str + " ,{\"data1\" : \"b001\",\"data2\":\"b002\"} "; + str = str + " ] "; + str = str + " , \"add1\":\"add\" "; + str = str + " } "; + str = str + " } "; + + + source.setData(str); + System.out.println(source); + System.out.println("["+source.getData()+"]"); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_TST0200100DTST_REQ", new Message[] { source }); + + + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + + } + public void testTransformerDelimiterToUJSONTest() throws Exception { + byte[] b = {0x09}; + String Delimiter = new String(b); + System.out.println("transformer Test UJSON=> DELIMITER =============================================================="); + + Message source = MessageFactory.getFactory().getMessage("EAI_TST0200100D_REQ1"); + + StringBuilder sb = new StringBuilder(); + sb.append(Delimiter); + sb.append("0200").append(Delimiter); + sb.append("100").append(Delimiter); + sb.append("trac1").append(Delimiter); + sb.append("trac2").append(Delimiter); + sb.append("bizk1").append(Delimiter); + sb.append("bizk2").append(Delimiter); + sb.append("2").append(Delimiter); + sb.append("a001").append(Delimiter); + sb.append("a002").append(Delimiter).append("\n"); + sb.append("b001").append(Delimiter); + sb.append("b002").append(Delimiter).append("\n"); + sb.append("add11").append(Delimiter); + + + source.setData(sb.toString()); + //source.setData(sb.toString().getBytes()); + System.out.println(source); + System.out.println("["+new String((byte[])source.getData())+"]"); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_TST0200100UTST_REQ", new Message[] { source }); + + + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/FunctionErrorTest.java b/src/test/java/com/eactive/eai/transformer/FunctionErrorTest.java new file mode 100644 index 0000000..9cb737b --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/FunctionErrorTest.java @@ -0,0 +1,144 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.util.IConv; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class FunctionErrorTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public FunctionErrorTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(FunctionErrorTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testStandardError() throws Exception { + System.out.println("Test If =============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + Message source = MessageFactory.getFactory().getMessage("EAI_XML_ERR"); + + String data = ""; + source.setData(data); + + System.out.println(source); + System.out.println("["+ source.getData() +"]"); + + // + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_XMLTOUJN_ERR", new Message[] { source }); + + System.out.println(target); + + System.out.println("["+ target.getData() +"]"); + + Message target2 = transformer.transform("TRANSFORM_EAI_UJNTOEBC_ERR", new Message[] { target }); + + System.out.println("[" + IConv.ebcdicToASCII((byte[])target2.getData()) +"]"); + + +// Message source1 = MessageFactory.getFactory().getMessage("EAI_ASCII_ERR"); +// System.out.println(source1); +// System.out.println("["+ new String((byte[])source1.getData()) +"]"); +// +// Message source2 = MessageFactory.getFactory().getMessage("EAI_UJSON_ERR"); +// System.out.println(source2); +// System.out.println("["+ source2.getData() +"]"); + +} + +// public void testIf() throws Exception { +// System.out.println("Test If =============================================================="); +// // ---------------------------------------------------------------------- +// // source message 생성 +// // ---------------------------------------------------------------------- +// String data = ""; +// data = "0000001230"; +// +// Message source = MessageFactory.getFactory().getMessage("EAI_TSTFUNCTION_REQ"); +// +// source.setData(IConv.asciiToEBCDIC(data)); +// System.out.println(source); +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_EAI_TSTFUNCTION_ERR", new Message[] { source }); +// +// System.out.println(target); +// +// System.out.println("["+ target.getData() +"]"); +// } + + +// public void testUjsonToEbcdic() throws Exception { +// System.out.println("testUjsonToEbcdic =============================================================="); +// // ---------------------------------------------------------------------- +// // source message 생성 +// // ---------------------------------------------------------------------- +// String data = ""; +// data = "{\"EAI_TSTFUNCTION_ERR\":{\"group\":{\"data1\":1.1}}}"; +// +// System.out.println(data); +// Message source = MessageFactory.getFactory().getMessage("EAI_TSTFUNCTION_ERR"); +// +// source.setData(data); +// System.out.println(source); +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_EAI_TSTFUNCTION_RES", new Message[] { source }); +// +// System.out.println(target); +// +// System.out.println("["+ target.getData() +"]"); +// } + +// public void testPcb() throws Exception { +// System.out.println("testPcb =============================================================="); +// // ---------------------------------------------------------------------- +// // source message 생성 +// // ---------------------------------------------------------------------- +// String data = ""; +//// data = "{\"PCB_EEF200502_REQ1\":{\"InData\":{\"ARRAY\":[{\"금융회사코드\":\"\",\"일자\":\"\",\"OTP상태코드\":\"\",\"처리시간\":\"\"}],\"주민번호\":\"\",\"개별전문길이\":\"000\",\"요구기관코드\":\"01004\",\"전문종별코드\":\"0200\",\"전문전송일자\":\"20200102\",\"요청시작위치\":\"001\",\"TRCODE\":\"TTASKOTP\",\"전문전송시간\":\"092800\",\"응답코드\":\"0000\",\"OTP서버응답코드\":\"0000\",\"OTP상태코드\":\"\",\"ENDFLAG\":\"EF\",\"요구시스템\":\"EBK\",\"예비\":\"\",\"OTP일련번호\":\"1001818052\",\"예비정보필드\":\"\",\"FIELD_LENGTH\":\"0000000790\",\"서비스코드\":\"OTP503\",\"서버별거래일련번호\":\"00\",\"사용자식별코드\":\"\",\"송수신코드\":\"1\",\"센터예비필드\":\"\",\"사용자암호\":\"\",\"거래구분코드\":\"200502\",\"벤더코드\":\"004\",\"사용자ID2\":\"\",\"거래일련번호\":\"00000015\",\"조회시작일\":\"00110000\",\"요구년월일시\":\"20200102000000\",\"외부시스템구분코드\":\"OTP\",\"응답년월시\":\"20200102000000\",\"사용자ID1\":\"WAPUSER\",\"조회종료일\":\"20200102\",\"응답코드1\":\"000\",\"기관예비필드\":\"\",\"전체건수\":\"000\",\"전문일련번호\":\"00000015\",\"미통지존재여부\":\"0\",\"세션정보\":\"000\",\"기준일자\":\"20200102\",\"응답기관코드\":\"00999\",\"매체사용건수\":\"1\",\"전송년월일\":\"20200102000000\",\"업무코드\":\"WBS\",\"업무별거래일련번호\":\"000000\",\"ARRAY?\":1:1,\"매체코드2\":\"\",\"매체코드1\":\"WBS\",\"거래유형코드\":\"000\",\"인터넷뱅킹로그인ID\":\"WAPUSER\",\"테스트구분\":\"T\",\"트랜젝션코드\":\"OTPSGN\"}}}"; +// data = "{\"PCB_EEF200502_REQ1\":{\"InData\":{\"ARRAY수\":1}}}"; +// +// System.out.println(data); +// Message source = MessageFactory.getFactory().getMessage("PCB_EEF200502_REQ1"); +// +// source.setData(data); +// System.out.println(source); +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_PCB_EEF200502PCB_REQ", new Message[] { source }); +// +// System.out.println(target); +// +// System.out.println("["+ target.getData() +"]"); +// } +} diff --git a/src/test/java/com/eactive/eai/transformer/FunctionTest.java b/src/test/java/com/eactive/eai/transformer/FunctionTest.java new file mode 100644 index 0000000..816f4d8 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/FunctionTest.java @@ -0,0 +1,80 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class FunctionTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public FunctionTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(FunctionTest.class); + } + + public void setUp() throws Exception { + // + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + /* +INSERT INTO TSEAITR07 (LOUTNAME, LOUTPTRNNAME, LOUTDESC, LASTAMNDHMS, EAIBZWKDSTCD, UAPPLNAME, SYSINTFACNAME, CREATEBY, UPDATEBY) VALUES ('FUNCTION_IF', 'BYTES', 'FUNCTION IF �׽�Ʈ', '2016080304100100', 'TST', null, null, 'admin', 'admin'); +INSERT INTO TSEAITR08 (LOUTNAME, LOUTITEMNAME, LOUTITEMSERNO, LOUTITEMIDNAME, PARNTLOUTITEMIDNAME, LOUTITEMDESC, LOUTITEMNODEPTRNIDNAME, LOUTITEMPTRNIDNAME, LOUTITEMPATHNAME, LOUTITEMLENCNT, LOUTITEMREFINFO, LOUTITEMREFINFO2, LOUTITEMOCCURPTRNDSTCD, LOUTITEMMAXOCCURNOITM, LOUTITEMMINOCCURNOITM, LOUTITEMBASCVAL, LOUTITEMMSKYN, LOUTDPTCNT, DECPTLENCNT, LOUTITEMREFPTRNIDNAME, LOUTITEMMASKLENGTH) VALUES ('FUNCTION_IF', 'FUNCTION_IF', 0, 1000, 0, 'FUNCTION IF �׽�Ʈ', 2201, 2100, ' ', 0, ' ', ' ', ' ', 0, 0, ' ', ' ', 1, 0, ' ', null); +INSERT INTO TSEAITR08 (LOUTNAME, LOUTITEMNAME, LOUTITEMSERNO, LOUTITEMIDNAME, PARNTLOUTITEMIDNAME, LOUTITEMDESC, LOUTITEMNODEPTRNIDNAME, LOUTITEMPTRNIDNAME, LOUTITEMPATHNAME, LOUTITEMLENCNT, LOUTITEMREFINFO, LOUTITEMREFINFO2, LOUTITEMOCCURPTRNDSTCD, LOUTITEMMAXOCCURNOITM, LOUTITEMMINOCCURNOITM, LOUTITEMBASCVAL, LOUTITEMMSKYN, LOUTDPTCNT, DECPTLENCNT, LOUTITEMREFPTRNIDNAME, LOUTITEMMASKLENGTH) VALUES ('FUNCTION_IF', 'DATA1', 1, 1001, 1000, 'DATA1', 2203, 2113, ' ', 5, ' ', ' ', ' ', 1, 1, ' ', ' ', 3, 0, 'String', null); +INSERT INTO TSEAITR01 (CNVSNNAME, CNVSNDESC, LASTAMNDHMS, CREATEBY, UPDATEBY) VALUES ('TRANSFORM_FUNCTION_IF_REQ', null, '20160803154737 ', 'admin', 'admin'); +INSERT INTO TSEAITR02 (CNVSNNAME, LOUTNAME, SOURCRSULTDSTCD) VALUES ('TRANSFORM_FUNCTION_IF_REQ', 'FUNCTION_IF', 'TGT_LAYOUT'); +INSERT INTO TSEAITR02 (CNVSNNAME, LOUTNAME, SOURCRSULTDSTCD) VALUES ('TRANSFORM_FUNCTION_IF_REQ', 'FUNCTION_IF', 'SRC_LAYOUT'); +INSERT INTO TSEAITR03 (CNVSNNAME, CNVSNRSULTITEMPATHNAME, CNVSNCMDNAME, CNVSNITEMBASCVAL, CNVSNITEMSERNO) VALUES ('TRANSFORM_FUNCTION_IF_REQ', 'FUNCTION_IF.DATA1', 'if(tostring(FUNCTION_IF.DATA1)=="12345","00000","XXXXX")', null, 999); + + */ + public void testIf() throws Exception { + System.out.println("Test If =============================================================="); + // logger.debug("Transform08900001Test | testTransform()"); + + // ---------------------------------------------------------------------- + // source message + // ---------------------------------------------------------------------- + String data = ""; + data = "12345"; + + + Message source = MessageFactory.getFactory().getMessage("FUNCTION_IF"); + + source.setData(data.getBytes()); + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_FUNCTION_IF_REQ", new Message[] { source }); + + + + System.out.println("["+new String((byte[])target.getData())+"]"); + + + + + + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/InstructionTest.java b/src/test/java/com/eactive/eai/transformer/InstructionTest.java new file mode 100644 index 0000000..ad951b9 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/InstructionTest.java @@ -0,0 +1,52 @@ +package com.eactive.eai.transformer; + +import java.util.regex.Pattern; + +public class InstructionTest { + + static Pattern simpleInstructionPattern = Pattern.compile("[ㄱ-ㅎ가-힣a-zA-Z0-9_\\-\\.\\[\\]]+"); +// static Pattern simpleInstructionPattern = Pattern.compile("[\\(]+\\)"); + public static void main(String[] args) { + + + String inst1 = "BFE_KFK124F440_REQ1.InData.CMS코드번호1"; + + String inst2 = "ascii2ebcdic(BFE_KFK124F440_REQ1.InData.CMS코드번호1)"; + + String inst3 = "trim(ascii2ebcdic(BFE_KFK124F440_REQ1.InData.CMS코드번호1))"; + + String functionName = null; + + testInstruction(inst1); + testInstruction(inst2); + testInstruction(inst3); + functionName = getFunction(inst1); + System.out.println("functionName = " + functionName); + functionName = getFunction(inst2); + System.out.println("functionName = " + functionName); + functionName = getFunction(inst3); + System.out.println("functionName = " + functionName); + } + public static void testInstruction(String instruction) { + if (simpleInstructionPattern.matcher(instruction).matches()) { + System.out.println("simple="+instruction); + + } else { + System.out.println("function="+instruction); + + } + } + + public static String getFunction(String instruction) { + String functionName = null; + int sPos = instruction.indexOf("("); + int sLastPos = instruction.lastIndexOf("("); + int ePos = instruction.indexOf(")"); + + if(sPos > -1 && ePos > -1 && sPos == sLastPos) { + functionName = instruction.substring(sPos+1, ePos-1); + } +// System.out.println("functionName = " + functionName); + return functionName; + } +} diff --git a/src/test/java/com/eactive/eai/transformer/Layout2DepthUpRefTest.java b/src/test/java/com/eactive/eai/transformer/Layout2DepthUpRefTest.java new file mode 100644 index 0000000..52013a1 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/Layout2DepthUpRefTest.java @@ -0,0 +1,90 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class Layout2DepthUpRefTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public Layout2DepthUpRefTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(Layout2DepthUpRefTest.class); + } + + public void setUp() throws Exception { + + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testReq() throws Exception { + System.out.println("Req =============================================================="); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + //정상 + String data ="1 000000000000000000000000000000000000000000000000000000000000000000000000000000 "; + //오류 + //String data ="1 000000000000000100000000000000000000000000000000000000000000000000000000000000 "; + + Message source = MessageFactory.getFactory().getMessage("EAI_TST2DEPTHREF_REQ1"); + source.setData(data.getBytes()); + System.out.println("source="+source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_BFG_KAB0400141BFG_RES", new Message[] { source }); +// +// System.out.println(target.toString()); +// System.out.println(target.getData()); + + } + public void testMapping() throws Exception { + System.out.println("Mapping =============================================================="); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + + Message source = MessageFactory.getFactory().getMessage("EAI_TST2DEPTHREF_REQ1"); + source.setObject("EAI_TST2DEPTHREF_REQ1.tranInfoMatr1.dataBook1[0].dsticA1", "AAA".getBytes()); + source.setObject("EAI_TST2DEPTHREF_REQ1.tranInfoMatr1.dataBook1[1].dsticA1", "BBB".getBytes()); + source.setObject("EAI_TST2DEPTHREF_REQ1.tranInfoMatr1.dataBook1[2].dsticA1", "CCC".getBytes()); + + source.setObject("EAI_TST2DEPTHREF_REQ1.fdrtMgtInfo1.dataBook3[0].revocDte1", "111".getBytes()); + source.setObject("EAI_TST2DEPTHREF_REQ1.fdrtMgtInfo1.dataBook3[1].revocDte1", "222".getBytes()); + System.out.println("source="+source); + + + + } + + +} diff --git a/src/test/java/com/eactive/eai/transformer/Layout2Test.java b/src/test/java/com/eactive/eai/transformer/Layout2Test.java new file mode 100644 index 0000000..4b09464 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/Layout2Test.java @@ -0,0 +1,60 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class Layout2Test extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public Layout2Test(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(Layout2Test.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + public void testFindItemTest() throws Exception { + System.out.println("JSON int Test =============================================================="); + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- +// String data ="{\"EAI_EITTCBK00000001_REQ2\":{\"tracekey1\":\"00000\",\"grid1Count\":1,\"trancode1\":\"0200\",\"trancode2\":\"800\",\"grid1\":[{\"data2\":\"data2\",\"data1\":\"data1\"}],\"tracekey2\":\"{{index}}\",\"bizkey1\":\"bizkey1\",\"add1\":\"add1\",\"bizkey2\":\"bizkey2\"}} "; + String data ="{\"EAI_EITTCBK00000001_REQ2\":{\"tracekey1\":\"00000\",\"grid1Count\":1,\"trancode1\":\"0200\",\"trancode2\":\"800\",\"grid1\":[{\"data2\":{\"abc\":\"data2\"},\"data1\":\"data1\"}],\"tracekey2\":\"{{index}}\",\"bizkey1\":\"bizkey1\",\"add1\":\"add1\",\"bizkey2\":\"bizkey2\"}} "; + + Message source = MessageFactory.getFactory().getMessage("EAI_EITTCBK0000000X_REQ2"); + System.out.println("data=\n" +data); + source.setData(data); + System.out.println(source); + System.out.println(source.getData()); + + + + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/LayoutBigDecimalTest.java b/src/test/java/com/eactive/eai/transformer/LayoutBigDecimalTest.java new file mode 100644 index 0000000..234f6a5 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/LayoutBigDecimalTest.java @@ -0,0 +1,56 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class LayoutBigDecimalTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public LayoutBigDecimalTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(LayoutBigDecimalTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + public void testFindItemTest() throws Exception { + System.out.println("find Item Test =============================================================="); + String data ="{\"AIH_TIAS00020745_RES\":{\"PRCS_DVSN_CD\":\"1\",\"CSNO\":\"114750076\",\"ERNN\":\"005310377\",\"CUST_NM\":\"dojpNhadlZpYtVtL0uYbi+==\",\"LNNO\":\"21000000001\",\"LOAN_YMD\":\"20211013\",\"LOAN_AMT\":30000000,\"LOAN_RAMT\":30000000,\"NORM_INTR_RT\":5.0000000,\"NORM_IRRT\":5.0000000,\"ARRR_INTR_RT\":11.0000000,\"ARRR_IRRT\":11.0000000,\"APRV_BRN_NM_S40\":\"이천우체국\",\"APRV_BRN_CD\":\"100636\",\"PYMT_DD\":\"25\",\"LAST_RPAY_YMD\":\"20210925\",\"LAST_IRCL_YMD\":\"20210925\",\"LOAN_KIND_CD\":\"05\",\"RPAY_METH_CD\":\"01\",\"RPAY_DVSN_CD\":\"03\",\"LOAN_USAG_DVSN_CD\":\"02\",\"INSU_GDS_CD\":\"L300005\",\"LOAN_CTSTA_CD\":\"21\",\"BFCH_LOAN_TRM_VAL_I3\":3,\"AFCH_LOAN_TRM_VAL_I3\":4,\"BFCH_MTRY_YMD\":\"20241012\",\"AFCH_MTRY_YMD\":\"20251012\",\"WRC_NM\":\"이천설성우편취급국\",\"WRC_ADDR_REGN_NM\":\"탕판수 안충창 나눈물 창나하마 393\",\"WRC_DTL_EADR\":\"85OmeVZR8L0eZOP5FgoAlTksNYPBXS7YDQt3sNXprzY=\",\"BF_LOAN_ELDP_SRNG_ID\":20210601000000000053,\"LOAN_PSBL_YN\":\"Y\",\"BASS_RINT\":1.00000,\"LOAN_LIMT_AMT\":30000000,\"KCB_CRDT_EVTM_SCR\":900.00000,\"REPT_LIST_ROWCNT\":1,\"REPT_LIST_DATAGRID\":[{\"SLIP_CMMP1_S110\":\"\",\"RMK_CN\":\"\",\"BFCH_ADDR1_S150\":\"\",\"AFCH_ADDR1_S150\":\"\",\"BFCH_ADDR2_S150\":\"\",\"AFCH_ADDR2_S150\":\"\",\"BFCH_CUST_NM_S60\":\"dojpNhadlZpYtVtL0uYbi+==\",\"AFCH_CUST_NM_S60\":\"dojpNhadlZpYtVtL0uYbi+==\",\"BFCH_ERNN\":\"005310377\",\"AFCH_ERNN\":\"005310377\",\"BFCH_LOAN_KIND_CD_S2\":\"05\",\"AFCH_LOAN_KIND_CD_S2\":\"05\",\"BFCH_LOAN_AMT_B13\":30000000,\"AFCH_LOAN_AMT_B13\":30000000,\"BFCH_LOAN_YMD_S8\":\"20211013\",\"AFCH_LOAN_YMD_S8\":\"20211013\",\"BFCH_LOAN_TRM_VAL_I3\":3,\"AFCH_LOAN_TRM_VAL_I3\":4,\"BFCH_RPAY_METH_CD_S2\":\"01\",\"AFCH_RPAY_METH_CD_S2\":\"01\",\"BFCH_PYIN_NM_S100\":\"이자 월납 후취\",\"AFCH_PYIN_NM_S100\":\"이자 월납 후취\",\"LOAN_KIND_CD\":\"05\",\"LOAN_RAMT\":30000000,\"LOAN_INTR_ARRR_YN\":\"N\",\"ARRR_DAYS\":0,\"ISSU_YMD\":\"20211015\",\"POFC_CD\":\"012435\",\"POFC_NM\":\"서울광진우체국\"}]}}"; +// data ="{\"AIH_TIAS00020745_RES\":{\"PRCS_DVSN_CD\":\"1\",\"CSNO\":\"114750076\",\"ERNN\":\"005310377\",\"CUST_NM\":\"dojpNhadlZpYtVtL0uYbi+==\",\"LNNO\":\"21000000001\",\"LOAN_YMD\":\"20211013\",\"LOAN_AMT\":30000000,\"LOAN_RAMT\":30000000,\"NORM_INTR_RT\":5.0000000,\"NORM_IRRT\":5.0000000,\"ARRR_INTR_RT\":11.0000000,\"ARRR_IRRT\":11.0000000,\"APRV_BRN_NM_S40\":\"이천우체국\",\"APRV_BRN_CD\":\"100636\",\"PYMT_DD\":\"25\",\"LAST_RPAY_YMD\":\"20210925\",\"LAST_IRCL_YMD\":\"20210925\",\"LOAN_KIND_CD\":\"05\",\"RPAY_METH_CD\":\"01\",\"RPAY_DVSN_CD\":\"03\",\"LOAN_USAG_DVSN_CD\":\"02\",\"INSU_GDS_CD\":\"L300005\",\"LOAN_CTSTA_CD\":\"21\",\"BFCH_LOAN_TRM_VAL_I3\":3,\"AFCH_LOAN_TRM_VAL_I3\":4,\"BFCH_MTRY_YMD\":\"20241012\",\"AFCH_MTRY_YMD\":\"20251012\",\"WRC_NM\":\"이천설성우편취급국\",\"WRC_ADDR_REGN_NM\":\"탕판수 안충창 나눈물 창나하마 393\",\"WRC_DTL_EADR\":\"85OmeVZR8L0eZOP5FgoAlTksNYPBXS7YDQt3sNXprzY=\",\"BF_LOAN_ELDP_SRNG_ID\":0,\"LOAN_PSBL_YN\":\"Y\",\"BASS_RINT\":1.00000,\"LOAN_LIMT_AMT\":30000000,\"KCB_CRDT_EVTM_SCR\":900.00000,\"REPT_LIST_ROWCNT\":1,\"REPT_LIST_DATAGRID\":[{\"SLIP_CMMP1_S110\":\"\",\"RMK_CN\":\"\",\"BFCH_ADDR1_S150\":\"\",\"AFCH_ADDR1_S150\":\"\",\"BFCH_ADDR2_S150\":\"\",\"AFCH_ADDR2_S150\":\"\",\"BFCH_CUST_NM_S60\":\"dojpNhadlZpYtVtL0uYbi+==\",\"AFCH_CUST_NM_S60\":\"dojpNhadlZpYtVtL0uYbi+==\",\"BFCH_ERNN\":\"005310377\",\"AFCH_ERNN\":\"005310377\",\"BFCH_LOAN_KIND_CD_S2\":\"05\",\"AFCH_LOAN_KIND_CD_S2\":\"05\",\"BFCH_LOAN_AMT_B13\":30000000,\"AFCH_LOAN_AMT_B13\":30000000,\"BFCH_LOAN_YMD_S8\":\"20211013\",\"AFCH_LOAN_YMD_S8\":\"20211013\",\"BFCH_LOAN_TRM_VAL_I3\":3,\"AFCH_LOAN_TRM_VAL_I3\":4,\"BFCH_RPAY_METH_CD_S2\":\"01\",\"AFCH_RPAY_METH_CD_S2\":\"01\",\"BFCH_PYIN_NM_S100\":\"이자 월납 후취\",\"AFCH_PYIN_NM_S100\":\"이자 월납 후취\",\"LOAN_KIND_CD\":\"05\",\"LOAN_RAMT\":30000000,\"LOAN_INTR_ARRR_YN\":\"N\",\"ARRR_DAYS\":0,\"ISSU_YMD\":\"20211015\",\"POFC_CD\":\"012435\",\"POFC_NM\":\"서울광진우체국\"}]}}"; + + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("AIH_TIAS00020745_RES"); + source.setData(data); + System.out.println(source); + + + + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/LayoutDevFEPTest.java b/src/test/java/com/eactive/eai/transformer/LayoutDevFEPTest.java new file mode 100644 index 0000000..e1a8ba1 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/LayoutDevFEPTest.java @@ -0,0 +1,59 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class LayoutDevFEPTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public LayoutDevFEPTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(LayoutDevFEPTest.class); + } + + public void setUp() throws Exception { + // + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + public void test2Fep() throws Exception { + // + System.out.println("JSON int Test =============================================================="); + //---------------------------------------------------------------------- + // source message + //---------------------------------------------------------------------- + String data ="{\"ADH_IDAS00020212_REQ\":{ \"TRNS_ID_S9\": \"\", \"SYS_ID_S3\": \"BAS\", \"TLGR_LEN_S5\": \"04133\", \"DATA_DVSN_S1\": \"T\", \"INSC_ID_S3\": \"971\", \"BANK_DVSN_S2\": \"01\", \"BANK_ID_S3\": \"071\", \"TLGR_BYKD_CD_S4\": \"0200\", \"DLNG_DVSN_CD_S6\": \"Y53100\", \"SDRV_S1\": \"1\", \"STAT_CD_S3\": \"000\", \"RSPNS_CD_S3\": \"\", \"TLGR_TRSM_YMD_S8\": \"20211020\", \"TLGR_TRSM_HR_S6\": \"134457\", \"BANK_TLGR_NO_S8\": \"00000002\", \"INSC_TLGR_NO_S8\": \"\", \"DLNG_OCRN_YMD_S8\": \"20211020\", \"FULL_TLGR_CNT_S2\": \"01\", \"NOW_TLGR_SEQ_NO_S2\": \"01\", \"PRCR_TMNL_NO_S15\": \"\", \"SYNC_ASYN_PRCS_DVSN_S1\": \"A\", \"BRAN_NO_S4\": \"0015\", \"BANK_ADD_DEF_S25\": \"\", \"INSC_ADD_DEF_S30\": \"\", \"JOB_DVSN_CD_S2\": \"01\", \"RSDN_NO_S13\": \"1111111111111\", \"CUST_NM_S60\": \"111111111111\", \"ISTM_MAMT_S15\": \"000000000000000\", \"ODIN_LBRR_CNT_S5\": \"00000\", \"OPTN_DATAGRID\": [ { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" } ]}}"; + + Message source = MessageFactory.getFactory().getMessage("ADH_IDAS00020212_REQ"); + System.out.println("data=\n" +data); + source.setData(data); + System.out.println(source); + System.out.println(source.getData()); + + } + + +} diff --git a/src/test/java/com/eactive/eai/transformer/LayoutDevTest.java b/src/test/java/com/eactive/eai/transformer/LayoutDevTest.java new file mode 100644 index 0000000..cda5f58 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/LayoutDevTest.java @@ -0,0 +1,107 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class LayoutDevTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public LayoutDevTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(LayoutDevTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + public void atest1Mcc() throws Exception { + //기억 안남 + System.out.println("JSON int Test =============================================================="); + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- +// String data ="{\"EAI_EITTCBK00000001_REQ2\":{\"tracekey1\":\"00000\",\"grid1Count\":1,\"trancode1\":\"0200\",\"trancode2\":\"800\",\"grid1\":[{\"data2\":\"data2\",\"data1\":\"data1\"}],\"tracekey2\":\"{{index}}\",\"bizkey1\":\"bizkey1\",\"add1\":\"add1\",\"bizkey2\":\"bizkey2\"}} "; + String data ="{\"ADE_TDAS00020543_RES\":{\"REG_DVSN_S1\":\"1\",\"OGDP_YM\":\"202001\",\"INQ_PAGENO\":1,\"INQ_PAGEPERCNT\":0,\"INQ_PAGEDVSN\":\"\",\"GRID_ROWCNT\":2,\"GRID_DATAGRID\":[{\"CTRT_CURY_CD\":\"EUR\",\"MM_SDR_PRC\":1.245880,\"YR_SDR_PRC\":1.227600},{\"CTRT_CURY_CD\":\"USD\",\"MM_SDR_PRC\":1.376950,\"YR_SDR_PRC\":1.422000}]}} "; + + Message source = MessageFactory.getFactory().getMessage("ADE_TDAS00020543_RES"); + System.out.println("data=\n" +data); + source.setData(data); + System.out.println(source); + System.out.println(source.getData()); + + } + public void atest2Fep() throws Exception { + System.out.println("JSON int Test =============================================================="); + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data ="{\"ADH_IDAS00020212_REQ\":{ \"TRNS_ID_S9\": \"\", \"SYS_ID_S3\": \"BAS\", \"TLGR_LEN_S5\": \"04133\", \"DATA_DVSN_S1\": \"T\", \"INSC_ID_S3\": \"971\", \"BANK_DVSN_S2\": \"01\", \"BANK_ID_S3\": \"071\", \"TLGR_BYKD_CD_S4\": \"0200\", \"DLNG_DVSN_CD_S6\": \"Y53100\", \"SDRV_S1\": \"1\", \"STAT_CD_S3\": \"000\", \"RSPNS_CD_S3\": \"\", \"TLGR_TRSM_YMD_S8\": \"20211020\", \"TLGR_TRSM_HR_S6\": \"134457\", \"BANK_TLGR_NO_S8\": \"00000002\", \"INSC_TLGR_NO_S8\": \"\", \"DLNG_OCRN_YMD_S8\": \"20211020\", \"FULL_TLGR_CNT_S2\": \"01\", \"NOW_TLGR_SEQ_NO_S2\": \"01\", \"PRCR_TMNL_NO_S15\": \"\", \"SYNC_ASYN_PRCS_DVSN_S1\": \"A\", \"BRAN_NO_S4\": \"0015\", \"BANK_ADD_DEF_S25\": \"\", \"INSC_ADD_DEF_S30\": \"\", \"JOB_DVSN_CD_S2\": \"01\", \"RSDN_NO_S13\": \"1111111111111\", \"CUST_NM_S60\": \"111111111111\", \"ISTM_MAMT_S15\": \"000000000000000\", \"ODIN_LBRR_CNT_S5\": \"00000\", \"OPTN_DATAGRID\": [ { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" }, { \"OPTN_KEY_S20\": \"12345678901234567890\", \"OPTN_VAL_S20\": \"12345678901234567890\" } ]}}"; + + Message source = MessageFactory.getFactory().getMessage("ADH_IDAS00020212_REQ"); + System.out.println("data=\n" +data); + source.setData(data); + System.out.println(source); + System.out.println(source.getData()); + + } + public void atest3Mcc() throws Exception { + //Group 여러개중에 1개만 셋팅. 오류내용 : 셋팅오류 발생 + System.out.println("JSON int Test =============================================================="); + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data ="{\"CEH_SATM00020213_REQ\":{ \"INPTCOMN_DATAGROUP\":{\"DEPS_ACCT_EPWD\":\"\",\"GIVE_AMT\":\"230000\",\"CHEK_ROWCNT\":1,\"CHEK_DATAGRID\":[{\"CHEK_NKND_CD\":\"13\",\"PBLCN_NOSH_I3\":2,\"CHEK_BGNG_NO\":\"00000002\",\"CHEK_AMT\":\"200000\"}],\"DLNG_EXCN_NO\":\"\",\"TRSF_DLNG_AMT\":0,\"BKCK_GIVE_AMT_B15\":\"200000\"}}}"; +// String data ="{\"CEH_SATM00020213_REQ\":{ \"INPTCOMN_DATAGROUP\":{\"DEPS_ACCT_EPWD\":\"\",\"GIVE_AMT\":\"230000\",\"CHEK_ROWCNT\":1,\"CHEK_DATAGRID\":[{\"CHEK_NKND_CD\":\"13\",\"PBLCN_NOSH_I3\":2,\"CHEK_BGNG_NO\":\"00000002\",\"CHEK_AMT\":\"200000\"}],\"DLNG_EXCN_NO\":\"\",\"TRSF_DLNG_AMT\":0,\"BKCK_GIVE_AMT_B15\":\"200000\"},\"INPT588402_DATAGROUP\" : {\"ZPAY_DLNG_DVSN_CD\":\"1\"},}}"; + + Message source = MessageFactory.getFactory().getMessage("CEH_SATM00020213_REQ"); + System.out.println("data=\n" +data); + source.setData(data); + System.out.println(source); + System.out.println(source.getData()); + + } + public void test4Mcc() throws Exception { + //마지막에 배열의 {} 일경우. 오류내용 : INQ_DATAGRID 없어졌음. + System.out.println("JSON int Test =============================================================="); + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data ="{\"ATK_TDAS00021995_RES\":{\"CUST_NM_S60\":\"SLQMbGtGCvwjW2scw\\/GYeU==\",\"INQ_PAGEDVSN\":\"N\",\"INQ_PAGENO\":1,\"INQ_PAGEPERCNT\":40,\"INQ_DATACNT\":23,\"INQ_ROWCNT\":23,\"INQ_DATAGRID\":[{\"OTPT_PRCS_CLUS_NM1_S100\":\"[고객정보]\"},{\"OTPT_PRCS_CLUS_NM1_S100\":\"이용자ID\",\"OTPT_PRCS_CN1_S100\":\"WANG1234\"},{\"OTPT_PRCS_CLUS_NM1_S100\":\"고객명\",\"OTPT_PRCS_CN1_S100\":\"SLQMbGtGCvwjW2scw\\/GYeU==\",\"OTPT_PRCS_CLUS_NM2_S100\":\"고객구분\",\"OTPT_PRCS_CN2_S100\":\"01 : 개인내국인\"},{\"OTPT_PRCS_CLUS_NM1_S100\":\"고객번호\",\"OTPT_PRCS_CN1_S100\":\"110258666\",\"OTPT_PRCS_CLUS_NM2_S100\":\"실명번호\",\"OTPT_PRCS_CN2_S100\":\"qHqB0iYFmqe2NtD5hWnlpU==\"},{\"OTPT_PRCS_CLUS_NM1_S100\":\"이메일\",\"OTPT_PRCS_CN1_S100\":\"DhM3qI\\/hlkL8q3TfndJfqE==@99\",\"OTPT_PRCS_CLUS_NM2_S100\":\"장애여부\",\"OTPT_PRCS_CN2_S100\":\"0:없음\"},{\"OTPT_PRCS_CLUS_NM1_S100\":\"전화번호\",\"OTPT_PRCS_CN1_S100\":\"031-ZVcNygHgzfCV591oa90X9+==-rOEoOF6Z2W8\\/WrtnMpbQzU==\",\"OTPT_PRCS_CLUS_NM2_S100\":\"휴대폰번호\",\"OTPT_PRCS_CN2_S100\":\"010-eiR3PXgFZGcDTJYxd8MMv+==-rOEoOF6Z2W8\\/WrtnMpbQzU==\"},{\"OTPT_PRCS_CLUS_NM1_S100\":\" \",\"OTPT_PRCS_CN1_S100\":\" \",\"OTPT_PRCS_CLUS_NM2_S100\":\" \",\"OTPT_PRCS_CN2_S100\":\" \"},{\"OTPT_PRCS_CLUS_NM1_S100\":\"[약정내용]\"},{\"OTPT_PRCS_CLUS_NM1_S100\":\"채널구분\",\"OTPT_PRCS_CN1_S100\":\"23\",\"OTPT_PRCS_CLUS_NM2_S100\":\"약정상태\",\"OTPT_PRCS_CN2_S100\":\"3 : 인증서미등록\"},{\"OTPT_PRCS_CLUS_NM1_S100\":\"1일이체한도\",\"OTPT_PRCS_CN1_S100\":\"100,000,000\",\"OTPT_PRCS_CLUS_NM2_S100\":\"1회이체한도\",\"OTPT_PRCS_CN2_S100\":\"100,000,000\"},{\"OTPT_PRCS_CLUS_NM1_S100\":\"입금계좌지정서비스약정여부\",\"OTPT_PRCS_CN1_S100\":\" 미약정\",\"OTPT_PRCS_CLUS_NM2_S100\":\"이체한도승인고객\",\"OTPT_PRCS_CN2_S100\":\" 미승인\"},{\"OTPT_PRCS_CLUS_NM1_S100\":\"출금계좌등록 및 계좌해지방법\"},{\"OTPT_PRCS_CLUS_NM1_S100\":\"최종로그인일자\",\"OTPT_PRCS_CN1_S100\":\"2021-12-07\",\"OTPT_PRCS_CLUS_NM2_S100\":\"최종로그인시각\",\"OTPT_PRCS_CN2_S100\":\"09:50:07\"},{\"OTPT_PRCS_CLUS_NM1_S100\":\"일시정지사유\",\"OTPT_PRCS_CLUS_NM2_S100\":\"최종이체일자\",\"OTPT_PRCS_CN2_S100\":\"2021-12-07\"},{\"OTPT_PRCS_CLUS_NM1_S100\":\" \",\"OTPT_PRCS_CN1_S100\":\" \",\"OTPT_PRCS_CLUS_NM2_S100\":\" \",\"OTPT_PRCS_CN2_S100\":\" \"},{\"OTPT_PRCS_CLUS_NM1_S100\":\"[보안매체정보]\"},{\"OTPT_PRCS_CLUS_NM1_S100\":\"보안매체종류\",\"OTPT_PRCS_CN1_S100\":\"\",\"OTPT_PRCS_CLUS_NM2_S100\":\"보안매체상태\",\"OTPT_PRCS_CN2_S100\":\"0 : 정상\"},{\"OTPT_PRCS_CLUS_NM1_S100\":\"보안매체일련번호\",\"OTPT_PRCS_CN1_S100\":\"901003256\",\"OTPT_PRCS_CLUS_NM2_S100\":\"OTP업체명\",\"OTPT_PRCS_CN2_S100\":\"019 : null\"},{\"OTPT_PRCS_CLUS_NM1_S100\":\" \",\"OTPT_PRCS_CN1_S100\":\" \",\"OTPT_PRCS_CLUS_NM2_S100\":\" \",\"OTPT_PRCS_CN2_S100\":\" \"},{\"OTPT_PRCS_CLUS_NM1_S100\":\"[최초약정정보]\",\"OTPT_PRCS_CN1_S100\":\" \",\"OTPT_PRCS_CLUS_NM2_S100\":\" \",\"OTPT_PRCS_CN2_S100\":\" \"},{\"OTPT_PRCS_CLUS_NM1_S100\":\" \",\"OTPT_PRCS_CN1_S100\":\" \",\"OTPT_PRCS_CLUS_NM2_S100\":\" \",\"OTPT_PRCS_CN2_S100\":\" \"},{},{\"OTPT_PRCS_CLUS_NM1_S100\":\"이용PC사전등록여부\"}]}}"; + + Message source = MessageFactory.getFactory().getMessage("ATK_TDAS00021995_RES"); + System.out.println("data=\n" +data); + source.setData(data); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_ATK_MUTMDAS00021394S1_RES", new Message[] { source }); + System.out.println(target.toString()); + + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/LayoutGISUTest.java b/src/test/java/com/eactive/eai/transformer/LayoutGISUTest.java new file mode 100644 index 0000000..19cfe37 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/LayoutGISUTest.java @@ -0,0 +1,55 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class LayoutGISUTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public LayoutGISUTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(LayoutGISUTest.class); + } + + public void setUp() throws Exception { + AllTests.setParams(); + // + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + public void testFindItemTest() throws Exception { + System.out.println("find Item Test =============================================================="); + Message source = MessageFactory.getFactory().getMessage("ADC_TDAS00020504_RES"); + String data ="{\"ADC_TDAS00020504_RES\":{\"FND_SEAC_PRCS_DVSN_CD\":\"01\",\"FND_SEAC_DVSN_CD\":\"01\",\"REIV_YMD\":\"20210902\",\"NTRM_SEAC_YMD\":\"20220901\",\"BFTX_DTPF_AMT\":1234.000,\"SELL_DTPF_AMT\":1234.000,\"USEL_DTPF_AMT\":0.000,\"TOTL_STNG_QTY\":0.00000,\"SELL_QTY\":0.00000,\"USEL_QTY\":0.00000,\"SEAC_CRTR_PRIC\":1211.38167025173000,\"SEAC_STDS_CRTR_PRIC\":1019.91577183205000,\"NRSD_SEAC_STDS_CRTR_PRIC\":1019.91577183205000,\"DBDN_CRTR_PRIC\":1211.29205988,\"DBDN_STDS_CRTR_PRIC\":1019.91577183,\"NRSD_DBDN_STDS_CRTR_PRIC\":1019.91577183,\"DTPF_RT\":0.00896103717300,\"TAXT_DSBT_RT\":0.00000000020500,\"NRSD_TAXT_DSBT_RT\":0.00000000020500,\"REIV_CRTR_PRIC\":0.00000000000000,\"REIV_STDS_CRTR_PRIC\":0.00000000000000,\"NRSD_REIV_STDS_CRTR_PRIC\":0.00000000}}"; + source.setData(data); + System.out.println(source); + System.out.println(source.getData()); + + + + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/LayoutJSONAllTest.java b/src/test/java/com/eactive/eai/transformer/LayoutJSONAllTest.java new file mode 100644 index 0000000..2c9ff9b --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/LayoutJSONAllTest.java @@ -0,0 +1,997 @@ +package com.eactive.eai.transformer; + +import java.util.Iterator; + +import org.json.simple.JSONObject; +import org.json.simple.JSONValue; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +public class LayoutJSONAllTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + public static void setSystemPropertyIfNull(String key, String value) { + if (System.getProperties().contains(key) == false) { + System.setProperty(key, value); + } + } + + public LayoutJSONAllTest(String name) { + super(name); + } + + public static Test suite() { + setSystemPropertyIfNull("module", "TEST_DB"); + setSystemPropertyIfNull("eai.tableowner", "IIAPKG"); + setSystemPropertyIfNull("prefix", "local.mcc.oracle"); + /* + * the dynamic way + */ + return new TestSuite(LayoutJSONAllTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + public void atestUJSON2Bytes() throws Exception { + System.out.println("JSON int Test =============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + data = "{ \"TST_UJSONGRID1DEPTH_REQ\": { \"GRID_ROWCNT\": 2, \"GRID_DATAGRID\": [ { \"CTRT_CURY_CD\": \"abcd\", \"MM_SDR_PRC\": 1.1, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"2abcd\", \"MM_SDR_PRC\": 2.1, \"YR_SDR_PRC\": 2 } ] }} "; + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID1DEPTH_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTH_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + data = "{ \"TST_UJSONGRID1DEPTHWITHOUTREF_REQ\": { \"GRID_DATAGRID\": [ { \"CTRT_CURY_CD\": \"abcd\", \"MM_SDR_PRC\": 1.1, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"2abcd\", \"MM_SDR_PRC\": 2.1, \"YR_SDR_PRC\": 2 } ] }} "; + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID1DEPTHWITHOUTREF_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTHWITHOUTREF_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + data = "{ \"TST_UJSONGRID1DEPTHMAXCOUNT_REQ\": { \"GRID_ROWCNT\": 2, \"GRID_DATAGRID\": [ { \"CTRT_CURY_CD\": \"abcd\", \"MM_SDR_PRC\": 1.1, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"2abcd\", \"MM_SDR_PRC\": 2.1, \"YR_SDR_PRC\": 2 } ] }} "; + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID1DEPTHMAXCOUNT_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTHMAXCOUNT_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + data = "{ \"TST_UJSONGRIDMULTI_REQ\": { \"GRID_ROWCNT\": 2, \"GRID_DATAGRID\": [ { \"CTRT_CURY_CD\": \"abcd\", \"MM_SDR_PRC\": 1.1, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"2abcd\", \"MM_SDR_PRC\": 2.1, \"YR_SDR_PRC\": 2 } ], \"GRID_ROWCNT1\": 2, \"GRID_DATAGRID1\": [ { \"CTRT_CURY_CD\": \"abcd\", \"MM_SDR_PRC\": 1.1, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"2abcd\", \"MM_SDR_PRC\": 2.1, \"YR_SDR_PRC\": 2 } ] }}"; + source = MessageFactory.getFactory().getMessage("TST_UJSONGRIDMULTI_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRIDMULTI_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + data ="{ \"TST_UJSONGRID2DEPTH_REQ\": { \"GRID_ROWCNT\": 2, \"GRID_DATAGRID\": [ { \"CTRT_CURY_CD\": \"abcd\", \"MM_SDR_PRC\": 1.1, \"YR_SDR_PRC\": 1, \"GRID_ROWCNT1\": 3, \"GRID_DATAGRID1\": [ { \"CTRT_CURY_CD\": \"abcd\", \"MM_SDR_PRC\": 1.1, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"2abcd\", \"MM_SDR_PRC\": 2.1, \"YR_SDR_PRC\": 2 }, { \"CTRT_CURY_CD\": \"2abcd\", \"MM_SDR_PRC\": 3.1, \"YR_SDR_PRC\": 3 } ] }, { \"CTRT_CURY_CD\": \"2abcd\", \"MM_SDR_PRC\": 2.1, \"YR_SDR_PRC\": 2, \"GRID_ROWCNT1\": 2, \"GRID_DATAGRID1\": [ { \"CTRT_CURY_CD\": \"abcd\", \"MM_SDR_PRC\": 1.1, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"2abcd\", \"MM_SDR_PRC\": 2.1, \"YR_SDR_PRC\": 2 } ] } ] }}"; + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID2DEPTH_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID2DEPTH_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + data ="{ \"TST_UJSONGRID2DEPTHWITHOUTREF_REQ\": { \"GRID_ROWCNT\": 2, \"GRID_DATAGRID\": [ { \"CTRT_CURY_CD\": \"abcd\", \"MM_SDR_PRC\": 1.1, \"YR_SDR_PRC\": 1, \"GRID_DATAGRID1\": [ { \"CTRT_CURY_CD\": \"abcd\", \"MM_SDR_PRC\": 1.1, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"2abcd\", \"MM_SDR_PRC\": 2.1, \"YR_SDR_PRC\": 2 }, { \"CTRT_CURY_CD\": \"2abcd\", \"MM_SDR_PRC\": 3.1, \"YR_SDR_PRC\": 3 } ] }, { \"CTRT_CURY_CD\": \"2abcd\", \"MM_SDR_PRC\": 2.1, \"YR_SDR_PRC\": 2, \"GRID_DATAGRID1\": [ { \"CTRT_CURY_CD\": \"abcd\", \"MM_SDR_PRC\": 1.1, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"2abcd\", \"MM_SDR_PRC\": 2.1, \"YR_SDR_PRC\": 2 } ] } ] }}"; + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID2DEPTHWITHOUTREF_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID2DEPTHWITHOUTREF_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + data ="{ \"TST_UJSONARRAY_REQ\": { \"CTRT_CURY_CD\": [\"abcd\", \"abcd1\"] }}"; + source = MessageFactory.getFactory().getMessage("TST_UJSONARRAY_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4ARRAY_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + data ="{ \"TST_UJSONGROUP_REQ\": { \"GRID_ROWCNT\": 99, \"GRID_DATAGRID\": { \"CTRT_CURY_CD\": \"abcd\", \"MM_SDR_PRC\": 1.1, \"YR_SDR_PRC\": 1 }}}"; + source = MessageFactory.getFactory().getMessage("TST_UJSONGROUP_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GROUP_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + + } + public void atestBYTES2JSON() throws Exception { + System.out.println("BYTES int Test =============================================================="); + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + data ="000002abc000001100000000000000100Tab000002100000000000000200"; + source = MessageFactory.getFactory().getMessage("TST_BYTESGRID1DEPTH_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTH_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + data ="000002abc000001100000000000000100Tab000002100000000000000200"; + source = MessageFactory.getFactory().getMessage("TST_BYTESGRID1DEPTH_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTHWITHOUTREF_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + data ="000002abc000001100000000000000100Tab000002100000000000000200"; + source = MessageFactory.getFactory().getMessage("TST_BYTESGRID1DEPTHMAXCOUNT_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTHMAXCOUNT_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + data ="000002abc000001100000000000000100Tab000002100000000000000200000002abc000001100000000000000100Tab000002100000000000000200"; + source = MessageFactory.getFactory().getMessage("TST_BYTESGRIDMULTI_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRIDMULTI_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + data ="000002abc000001100000000000000100000003abc0000011000000000000002002ab0000021000000000000003002ab0000031000000000000004002ab000002100000000000000500000002abc0000011000000000000006002ab000002100000000000000700"; + source = MessageFactory.getFactory().getMessage("TST_BYTESGRID2DEPTH_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID2DEPTH_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + data ="000002abc000001100000000000000100000003abc0000011000000000000002002ab0000021000000000000003002ab0000031000000000000004002ab000002100000000000000500000002abc0000011000000000000006002ab000002100000000000000700"; + source = MessageFactory.getFactory().getMessage("TST_BYTESGRID2DEPTH_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID2DEPTHWITHOUTREF_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + data ="00002abcd abcd1"; + System.out.println(data); + source = MessageFactory.getFactory().getMessage("TST_BYTESARRAY_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4ARRAY_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + data ="000099abc000011100000000011100000"; + source = MessageFactory.getFactory().getMessage("TST_BYTESGROUP_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GROUP_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + + } + + + public void testGRID1DEPTH_BYTES2UJSON() throws Exception { + System.out.println("testGRID1DEPTH_BYTES2UJSON Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + //BYTES => UJSON + data = "000002abc0000011000000000000000012ab000002100000000000000002"; + source = MessageFactory.getFactory().getMessage("TST_BYTESGRID1DEPTH_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTH_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + //UJSON => BYTES + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID1DEPTH_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTH_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //결과체크 + assertEquals(data, new String((byte[])target.getData())); + System.out.println("testGRID1DEPTH_BYTES2UJSON Test start=============================================================="); + } + public void testGRID1DEPTH_UJSON2BYTES() throws Exception { + System.out.println("testGRID1DEPTH_UJSON2BYTES Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + //UJSON => BYTES +// data = "{ \"TST_UJSONGRID1DEPTH_REQ\": { \"GRID_ROWCNT\": 2, \"GRID_DATAGRID\": [ { \"CTRT_CURY_CD\": \"abc\", \"MM_SDR_PRC\": 1.100000, \"YR_SDR_PRC\": 100 }, { \"CTRT_CURY_CD\": \"2ab\", \"MM_SDR_PRC\": 2.100000, \"YR_SDR_PRC\": 2 } ] }} "; + data = "{ \"TST_UJSONGRID1DEPTH_REQ\": { \"GRID_DATAGRID\": [ { \"CTRT_CURY_CD\": \"abc\", \"MM_SDR_PRC\": 1.100000, \"YR_SDR_PRC\": 100 }, { \"CTRT_CURY_CD\": \"2ab\", \"MM_SDR_PRC\": 2.100000, \"YR_SDR_PRC\": 2 } ] , \"GRID_ROWCNT\": 2 }} "; + try{ + data = ((JSONObject)JSONValue.parse(data)).toJSONString(); + }catch(Exception e){ + } + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID1DEPTH_REQ"); + source.setData(data); + System.out.println(source); + String jsonSource = (String)source.getData(); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTH_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + + //BYTES => UJSON + source = MessageFactory.getFactory().getMessage("TST_BYTESGRID1DEPTH_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTH_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + //결과체크 + assertEquals(jsonSource, (String)target.getData()); + + System.out.println("testGRID1DEPTH_UJSON2BYTES Test end=============================================================="); + + } + public void testGRID1DEPTHWITHOUTREF_BYTES2UJSON() throws Exception { + System.out.println("testGRID1DEPTHWITHOUTREF_BYTES2UJSON Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + //BYTES => UJSON + data = "000002abc0000011000000000000000012ab000002100000000000000002"; + source = MessageFactory.getFactory().getMessage("TST_BYTESGRID1DEPTH_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTHWITHOUTREF_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + //UJSON => BYTES + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID1DEPTHWITHOUTREF_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTHWITHOUTREF_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //결과체크 + assertEquals(data, new String((byte[])target.getData())); + + System.out.println("testGRID1DEPTHWITHOUTREF_BYTES2UJSON Test end=============================================================="); + + } + public void testGRID1DEPTHWITHOUTREF_UJSON2BYTES() throws Exception { + System.out.println("testGRID1DEPTHWITHOUTREF_UJSON2BYTES Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + data = "{ \"TST_UJSONGRID1DEPTHWITHOUTREF_REQ\": { \"GRID_DATAGRID\": [ { \"CTRT_CURY_CD\": \"abc\", \"MM_SDR_PRC\": 1.100000, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"2ab\", \"MM_SDR_PRC\": 2.100000, \"YR_SDR_PRC\": 2 } ] }} "; + try{ + data = ((JSONObject)JSONValue.parse(data)).toJSONString(); + }catch(Exception e){ + } + //UJSON => BYTES + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID1DEPTHWITHOUTREF_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTHWITHOUTREF_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //BYTES => UJSON + source = MessageFactory.getFactory().getMessage("TST_BYTESGRID1DEPTH_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTHWITHOUTREF_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + //결과체크 + assertEquals(data, (String)target.getData()); + + System.out.println("testGRID1DEPTHWITHOUTREF_UJSON2BYTES Test end=============================================================="); + + } + public void testGRID1DEPTHMAXCOUNT_BYTES2UJSON() throws Exception { + System.out.println("testGRID1DEPTHMAXCOUNT_BYTES2UJSON Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + //BYTES => UJSON + data = "000002abc0000011000000000000000012ab000002100000000000000002"; + source = MessageFactory.getFactory().getMessage("TST_BYTESGRID1DEPTHMAXCOUNT_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTHMAXCOUNT_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + //UJSON => BYTES + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID1DEPTHMAXCOUNT_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTHMAXCOUNT_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //결과체크 + assertEquals(data, new String((byte[])target.getData())); + + System.out.println("testGRID1DEPTHMAXCOUNT_BYTES2UJSON Test end=============================================================="); + + } + public void testGRID1DEPTHMAXCOUNT_UJSON2BYTES() throws Exception { + System.out.println("testGRID1DEPTHMAXCOUNT_UJSON2BYTES Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + //UJSON => BYTES + data = "{ \"TST_UJSONGRID1DEPTHMAXCOUNT_REQ\": { \"GRID_ROWCNT\": 2, \"GRID_DATAGRID\": [ { \"CTRT_CURY_CD\": \"abc\", \"MM_SDR_PRC\": 1.100000, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"2ab\", \"MM_SDR_PRC\": 2.100000, \"YR_SDR_PRC\": 2 } ] }} "; + try{ + data = ((JSONObject)JSONValue.parse(data)).toJSONString(); + }catch(Exception e){ + } + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID1DEPTHMAXCOUNT_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTHMAXCOUNT_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //BYTES => UJSON + source = MessageFactory.getFactory().getMessage("TST_BYTESGRID1DEPTHMAXCOUNT_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTHMAXCOUNT_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + //결과체크 + assertEquals(data, (String)target.getData()); + + System.out.println("testGRID1DEPTHMAXCOUNT_UJSON2BYTES Test end=============================================================="); + + } + public void testGRIDMULTI_BYTES2UJSON() throws Exception { + System.out.println("testGRIDMULTI_BYTES2UJSON Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + //BYTES => UJSON + data ="000002abc0000011000000000000000012ab000002100000000000000002000002abc0000021000000000000000012ab000002100000000000000002"; + source = MessageFactory.getFactory().getMessage("TST_BYTESGRIDMULTI_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRIDMULTI_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + //UJSON => BYTES + source = MessageFactory.getFactory().getMessage("TST_UJSONGRIDMULTI_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRIDMULTI_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //결과체크 + assertEquals(data, new String((byte[])target.getData())); + + System.out.println("testGRIDMULTI_BYTES2UJSON Test end=============================================================="); + + } + public void testGRIDMULTI_UJSON2BYTES() throws Exception { + System.out.println("testGRIDMULTI_UJSON2BYTES Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + //UJSON => BYTES + data = "{ \"TST_UJSONGRIDMULTI_REQ\": { \"GRID_ROWCNT\": 2, \"GRID_DATAGRID\": [ { \"CTRT_CURY_CD\": \"abc\", \"MM_SDR_PRC\": 1.100000, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"2ab\", \"MM_SDR_PRC\": 2.100000, \"YR_SDR_PRC\": 2 } ], \"GRID_ROWCNT1\": 2, \"GRID_DATAGRID1\": [ { \"CTRT_CURY_CD\": \"abc\", \"MM_SDR_PRC\": 1.100000, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"2ab\", \"MM_SDR_PRC\": 2.100000, \"YR_SDR_PRC\": 2 } ] }}"; + try{ + data = ((JSONObject)JSONValue.parse(data)).toJSONString(); + }catch(Exception e){ + } + source = MessageFactory.getFactory().getMessage("TST_UJSONGRIDMULTI_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRIDMULTI_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //BYTES => UJSON + source = MessageFactory.getFactory().getMessage("TST_BYTESGRIDMULTI_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRIDMULTI_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + //결과체크 + assertEquals(data, (String)target.getData()); + + System.out.println("testGRIDMULTI_UJSON2BYTES Test end=============================================================="); + + } + public void testGRID1DEPTHFIXCOUNT_UJSON2BYTES() throws Exception { + System.out.println("testGRID1DEPTHFIXCOUNT_UJSON2BYTES Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + //UJSON => BYTES + data = "{ \"TST_UJSONGRID1DEPTHFIXCOUNT_REQ\": { \"GRID_ROWCNT\": 2, \"GRID_DATAGRID\": [ { \"CTRT_CURY_CD\": \"abcd\", \"MM_SDR_PRC\": 1.1, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"2abcd\", \"MM_SDR_PRC\": 2.1, \"YR_SDR_PRC\": 2 } ,{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{} ] }} "; + try{ + data = ((JSONObject)JSONValue.parse(data)).toJSONString(); + }catch(Exception e){ + } + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID1DEPTHFIXCOUNT_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTHFIXCOUNT_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //BYTES => UJSON + source = MessageFactory.getFactory().getMessage("TST_BYTESGRID1DEPTHFIXCOUNT_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID1DEPTHFIXCOUNT_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + //결과체크 + //assertEquals(data, (String)target.getData()); + + System.out.println("testGRID1DEPTHFIXCOUNT_UJSON2BYTES Test end=============================================================="); + + } + public void testGRID2DEPTH_BYTES2UJSON() throws Exception { + System.out.println("testGRID2DEPTH_BYTES2UJSON Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + //BYTES => UJSON + data ="000002abc000001100000000000000100000003abc0000021000000000000002002ab0000031000000000000003002ab0000041000000000000004002ab000005100000000000000500000002abc0000061000000000000006002ab000007100000000000000700"; + source = MessageFactory.getFactory().getMessage("TST_BYTESGRID2DEPTH_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID2DEPTH_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + //UJSON => BYTES + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID2DEPTH_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID2DEPTH_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //결과체크 + assertEquals(data, new String((byte[])target.getData())); + + System.out.println("testGRID2DEPTH_BYTES2UJSON Test end=============================================================="); + + } + public void testGRID2DEPTH_UJSON2BYTES() throws Exception { + System.out.println("testGRID2DEPTH_UJSON2BYTES Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + //UJSON => BYTES + data ="{ \"TST_UJSONGRID2DEPTH_REQ\": { \"GRID_ROWCNT\": 2, \"GRID_DATAGRID\": [ { \"CTRT_CURY_CD\": \"abc\", \"MM_SDR_PRC\": 1.100000, \"YR_SDR_PRC\": 1, \"GRID_ROWCNT1\": 3, \"GRID_DATAGRID1\": [ { \"CTRT_CURY_CD\": \"abc\", \"MM_SDR_PRC\": 1.100000, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"2ab\", \"MM_SDR_PRC\": 2.100000, \"YR_SDR_PRC\": 2 }, { \"CTRT_CURY_CD\": \"bcd\", \"MM_SDR_PRC\": 3.100000, \"YR_SDR_PRC\": 3 } ] }, { \"CTRT_CURY_CD\": \"2cd\", \"MM_SDR_PRC\": 2.000001, \"YR_SDR_PRC\": 2, \"GRID_ROWCNT1\": 2, \"GRID_DATAGRID1\": [ { \"CTRT_CURY_CD\": \"acd\", \"MM_SDR_PRC\": 1.100000, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"bcd\", \"MM_SDR_PRC\": 2.100000, \"YR_SDR_PRC\": 2 } ] } ] }}"; + try{ + data = ((JSONObject)JSONValue.parse(data)).toJSONString(); + }catch(Exception e){ + } + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID2DEPTH_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID2DEPTH_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //BYTES => UJSON + source = MessageFactory.getFactory().getMessage("TST_BYTESGRID2DEPTH_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID2DEPTH_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + //결과체크 + assertEquals(data, (String)target.getData()); + + System.out.println("testGRID2DEPTH_UJSON2BYTES Test end=============================================================="); + + } + public void testGRID2DEPTHWITHOUTREF_BYTES2UJSON() throws Exception { + System.out.println("testGRID2DEPTHWITHOUTREF_BYTES2UJSON Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + //BYTES => UJSON + data ="000002abc000001100000000000000100000003abc0000011000000000000002002ab0000021000000000000003002ab0000031000000000000004002ab000002100000000000000500000002abc0000011000000000000006002ab000002100000000000000700"; + source = MessageFactory.getFactory().getMessage("TST_BYTESGRID2DEPTH_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID2DEPTHWITHOUTREF_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + //UJSON => BYTES + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID2DEPTHWITHOUTREF_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID2DEPTHWITHOUTREF_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //결과체크 + assertEquals(data, new String((byte[])target.getData())); + + System.out.println("testGRID2DEPTHWITHOUTREF_BYTES2UJSON Test end=============================================================="); + + } + public void testGRID2DEPTHWITHOUTREF_UJSON2BYTES() throws Exception { + System.out.println("testGRID2DEPTHWITHOUTREF_UJSON2BYTES Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + //UJSON => BYTES + data ="{ \"TST_UJSONGRID2DEPTHWITHOUTREF_REQ\": { \"GRID_DATAGRID\": [ { \"CTRT_CURY_CD\": \"bcd\", \"MM_SDR_PRC\": 1.100000, \"YR_SDR_PRC\": 1, \"GRID_DATAGRID1\": [ { \"CTRT_CURY_CD\": \"223\", \"MM_SDR_PRC\": 1.100000, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"444\", \"MM_SDR_PRC\": 2.100000, \"YR_SDR_PRC\": 2 }, { \"CTRT_CURY_CD\": \"bcd\", \"MM_SDR_PRC\": 3.100000, \"YR_SDR_PRC\": 3 } ] }, { \"CTRT_CURY_CD\": \"123\", \"MM_SDR_PRC\": 2.100000, \"YR_SDR_PRC\": 2, \"GRID_DATAGRID1\": [ { \"CTRT_CURY_CD\": \"bcd\", \"MM_SDR_PRC\": 1.100000, \"YR_SDR_PRC\": 1 }, { \"CTRT_CURY_CD\": \"222\", \"MM_SDR_PRC\": 2.100000, \"YR_SDR_PRC\": 2 } ] } ] }}"; + try{ + data = ((JSONObject)JSONValue.parse(data)).toJSONString(); + }catch(Exception e){ + } + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID2DEPTHWITHOUTREF_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID2DEPTHWITHOUTREF_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //BYTES => UJSON + source = MessageFactory.getFactory().getMessage("TST_BYTESGRID2DEPTH_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GRID2DEPTHWITHOUTREF_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + //결과체크 다시 체크해야됨 + assertEquals(data, (String)target.getData()); + + System.out.println("testGRID2DEPTHWITHOUTREF_UJSON2BYTES Test end=============================================================="); + + } + public void testARRAY_BYTES2UJSON() throws Exception { + System.out.println("testARRAY_BYTES2UJSON Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + //BYTES => UJSON + data ="00002abcd abcd1"; + System.out.println(data); + source = MessageFactory.getFactory().getMessage("TST_BYTESARRAY_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4ARRAY_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + //UJSON => BYTES + source = MessageFactory.getFactory().getMessage("TST_UJSONARRAY_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4ARRAY_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //결과체크 + assertEquals(data, new String((byte[])target.getData())); + + System.out.println("testARRAY_BYTES2UJSON Test end=============================================================="); + + } + public void testARRAY_UJSON2BYTES() throws Exception { + System.out.println("testARRAY_UJSON2BYTES Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + //UJSON => BYTES + data ="{ \"TST_UJSONARRAY_REQ\": { \"CTRT_CURY_CD\": [\"abcd1\", \"abcd2\"] }}"; + try{ + data = ((JSONObject)JSONValue.parse(data)).toJSONString(); + }catch(Exception e){ + } + source = MessageFactory.getFactory().getMessage("TST_UJSONARRAY_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4ARRAY_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //BYTES => UJSON + System.out.println(data); + source = MessageFactory.getFactory().getMessage("TST_BYTESARRAY_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4ARRAY_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + + //결과체크 + assertEquals(data, (String)target.getData()); + + System.out.println("testARRAY_UJSON2BYTES Test end=============================================================="); + + } + public void testGROUP_BYTES2UJSON() throws Exception { + System.out.println("testGROUP_BYTES2UJSON Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + //BYTES => UJSON + data ="000099abc000011100000000011100000"; + source = MessageFactory.getFactory().getMessage("TST_BYTESGROUP_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GROUP_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + source = MessageFactory.getFactory().getMessage("TST_UJSONGROUP_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GROUP_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //결과체크 + assertEquals(data, new String((byte[])target.getData())); + + System.out.println("testGROUP_BYTES2UJSON Test end=============================================================="); + + } + public void testGROUP_UJSON2BYTES() throws Exception { + System.out.println("testGROUP_UJSON2BYTES Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + //UJSON => BYTES + data ="{ \"TST_UJSONGROUP_REQ\": { \"GRID_ROWCNT\": 99, \"GRID_DATAGRID\": { \"CTRT_CURY_CD\": \"abc\", \"MM_SDR_PRC\": 1.100000, \"YR_SDR_PRC\": 1 }}}"; + try{ + data = ((JSONObject)JSONValue.parse(data)).toJSONString(); + }catch(Exception e){ + } + source = MessageFactory.getFactory().getMessage("TST_UJSONGROUP_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GROUP_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //BYTES => UJSON + source = MessageFactory.getFactory().getMessage("TST_BYTESGROUP_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2BYTES4GROUP_RES", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + //결과체크 + assertEquals(data, (String)target.getData()); + + System.out.println("testGROUP_UJSON2BYTES Test end=============================================================="); + + } + public void test1DEPTH_VBYTES2UJSON() throws Exception { + System.out.println("test1DEPTH_VBYTES2UJSON Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + //BYTES => UJSON + data ="0010ABCDEFGHIJ0011A0123456789"; + source = MessageFactory.getFactory().getMessage("TST_VFIELD_REQ"); + source.setData(data.getBytes()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_VFIELD2UJSON_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + source = MessageFactory.getFactory().getMessage("TST_UJSONVFIELD_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2VFIELD_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //결과체크 + assertEquals(data, new String((byte[])target.getData())); + + System.out.println("test1DEPTH_VBYTES2UJSON Test end=============================================================="); + + } + public void test1DEPTH_UJSON2VBYTES() throws Exception { + System.out.println("test1DEPTH_UJSON2VBYTES Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + //UJSON => BYTES + data = "{\"TST_UJSONVFIELD_REQ\" : { \"reqCount1\":\"0010\",\"reqMsgP1\":\"ABCDEFGHIJ\",\"reqCount2\":\"0011\",\"reqMsgP2\":\"A1234567890\"}}"; + try{ + data = ((JSONObject)JSONValue.parse(data)).toJSONString(); + }catch(Exception e){ + } + source = MessageFactory.getFactory().getMessage("TST_UJSONVFIELD_REQ"); + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2VFIELD_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+new String((byte[])target.getData())+"]"); + + //BYTES => UJSON + source = MessageFactory.getFactory().getMessage("TST_VFIELD_REQ"); + source.setData(target.getData()); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_VFIELD2UJSON_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+target.getData()+"]"); + + + //결과체크 + assertEquals(data, (String)target.getData()); + + System.out.println("test1DEPTH_UJSON2VBYTES Test end=============================================================="); + + } + public void testMASS_UJSON2UJSON() throws Exception { + System.out.println("testMASS_UJSON2UJSON Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + //UJSON => UJSON mass 오류 + data = "{\"TST_UJSONGRID1DEPTH_REQ\" : { \"GRID_DATAGRID\" : [] }}"; + try{ + data = ((JSONObject)JSONValue.parse(data)).toJSONString(); + }catch(Exception e){ + } + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID1DEPTH_REQ"); + + //mass 처리 시작 + for (Iterator iter = source.fullIterator(); iter.hasNext(); ) { + Item x = (Item) iter.next(); + if (x.getOccRef() !=null && x.getOccRef().trim().length() > 0 ){ + x.setOccRef(""); + } + } + //mass 처리 종료 + + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2UJSON4GRID1DEPTH_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+(String)target.getData()+"]"); + + + data = "{\"TST_UJSONGRID1DEPTH_REQ\" : { }}"; + try{ + data = ((JSONObject)JSONValue.parse(data)).toJSONString(); + }catch(Exception e){ + } + source = MessageFactory.getFactory().getMessage("TST_UJSONGRID1DEPTH_REQ"); + + //mass 처리 시작 + for (Iterator iter = source.fullIterator(); iter.hasNext(); ) { + Item x = (Item) iter.next(); + if (x.getOccRef() !=null && x.getOccRef().trim().length() > 0 ){ + x.setOccRef(""); + } + } + //mass 처리 종료 + + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_TST_UJSON2UJSON4GRID1DEPTH_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+(String)target.getData()+"]"); + + +// //BYTES => UJSON +// source = MessageFactory.getFactory().getMessage("TST_VFIELD_REQ"); +// source.setData(target.getData()); +// System.out.println(source); +// target = transformer.transform("TRANSFORM_TST_VFIELD2UJSON_REQ", new Message[] { source }); +// System.out.println(target); +// System.out.println("["+target.getData()+"]"); +// +// +// //결과체크 +// assertEquals(data, (String)target.getData()); + + System.out.println("testMASS_UJSON2UJSON Test end=============================================================="); + + } + public void testnotMASS_UJSON2UJSON() throws Exception { + System.out.println("testnotMASS_UJSON2UJSON Test start=============================================================="); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + Message source = null; + Message target = null; + Transformer transformer = engine.getTransformer(); + + //UJSON => UJSON mass 오류 + data = "{\"ATF_SUTM00024526_REQ\" : { }}"; + try{ + data = ((JSONObject)JSONValue.parse(data)).toJSONString(); + }catch(Exception e){ + } + source = MessageFactory.getFactory().getMessage("ATF_SUTM00024526_REQ"); + + source.setData(data); + System.out.println(source); + target = transformer.transform("TRANSFORM_ATF_MUTMDAS00022509S1_REQ", new Message[] { source }); + System.out.println(target); + System.out.println("["+(String)target.getData()+"]"); + +// //BYTES => UJSON +// source = MessageFactory.getFactory().getMessage("TST_VFIELD_REQ"); +// source.setData(target.getData()); +// System.out.println(source); +// target = transformer.transform("TRANSFORM_TST_VFIELD2UJSON_REQ", new Message[] { source }); +// System.out.println(target); +// System.out.println("["+target.getData()+"]"); +// +// +// //결과체크 +// assertEquals(data, (String)target.getData()); + + System.out.println("testnotMASS_UJSON2UJSON Test end=============================================================="); + + } +} diff --git a/src/test/java/com/eactive/eai/transformer/LayoutJsonTest.java b/src/test/java/com/eactive/eai/transformer/LayoutJsonTest.java new file mode 100644 index 0000000..4fbddca --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/LayoutJsonTest.java @@ -0,0 +1,78 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class LayoutJsonTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public LayoutJsonTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(LayoutJsonTest.class); + } + + public void setUp() throws Exception { + // ��ȯ �ʱ�ȭ + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + public void testFindItemTest() throws Exception { + System.out.println("JSON int Test =============================================================="); + //---------------------------------------------------------------------- + // source message ���� + //---------------------------------------------------------------------- + // ���� +// String data ="{\"BFE_KFK124F440_REQ1\":{\"InData\":{\"�Ƿ��μ���\":\"1\",\"��ݰ��¹�ȣ\":\"1\",\"��ݰ��¸޸��Է¿���\":0,\"��Ÿ������\":\"\",\"�Աݰ��¹�ȣ\":\"1\",\"����\":\"\",\"��ݰ��¸޸�\":\"\",\"�۱����Է¼����θ�\":\"\",\"�����¿���\":\"\",\"CMS�ڵ�3\":\"\",\"CMS�ڵ�2\":\"\",\"CMS�ڵ�1\":\"\",\"��ü�ݾ�\":\"1\",\"��й�ȣ\":\"1\"}}}"; + // ���� parseInt +// String data ="{\"BFE_KFK124F440_REQ1\":{\"InData\":{\"�Ƿ��μ���\":\"1\",\"��ݰ��¹�ȣ\":\"1\",\"��ݰ��¸޸��Է¿���\":\"\",\"��Ÿ������\":\"\",\"�Աݰ��¹�ȣ\":\"1\",\"����\":\"\",\"��ݰ��¸޸�\":\"\",\"�۱����Է¼����θ�\":\"\",\"�����¿���\":\"\",\"CMS�ڵ�3\":\"\",\"CMS�ڵ�2\":\"\",\"CMS�ڵ�1\":\"\",\"��ü�ݾ�\":\"1\",\"��й�ȣ\":\"1\"}}}"; + + // null ���� +// String data ="{\"BFE_KFK124F440_REQ1\":{\"InData\":{\"�Ƿ��μ���\":\"1\",\"��ݰ��¹�ȣ\":\"1\",\"��ݰ��¸޸��Է¿���\":null,\"��Ÿ������\":\"\",\"�Աݰ��¹�ȣ\":\"1\",\"����\":\"\",\"��ݰ��¸޸�\":\"\",\"�۱����Է¼����θ�\":\"\",\"�����¿���\":\"\",\"CMS�ڵ�3\":\"\",\"CMS�ڵ�2\":\"\",\"CMS�ڵ�1\":\"\",\"��ü�ݾ�\":\"1\",\"��й�ȣ\":\"1\"}}}"; + + // ������ ���� ���� +// String data ="{\"BFE_KFK124F440_REQ1\":{\"InData\":{\"�Ƿ��μ���\":\"1\",\"��ݰ��¹�ȣ\":\"1\",\"��ݰ��¸޸��Է¿���\":\"1\",\"��Ÿ������\":\"\",\"�Աݰ��¹�ȣ\":\"1\",\"����\":\"\",\"��ݰ��¸޸�\":\"\",\"�۱����Է¼����θ�\":\"\",\"�����¿���\":\"\",\"CMS�ڵ�3\":\"\",\"CMS�ڵ�2\":\"\",\"CMS�ڵ�1\":\"\",\"��ü�ݾ�\":\"1\",\"��й�ȣ\":\"1\"}}}"; + + // �׸��� ���� ��� : ��ü�ݾ� ���� + String data ="{\"BFE_KFK124F440_REQ1\":{\"InData\":{\"�Ƿ��μ���\":\"1\",\"��ݰ��¹�ȣ\":\"1\",\"��ݰ��¸޸��Է¿���\":\"1\",\"��Ÿ������\":\"\",\"�Աݰ��¹�ȣ\":\"1\",\"����\":\"\",\"��ݰ��¸޸�\":\"\",\"�۱����Է¼����θ�\":\"\",\"�����¿���\":\"\",\"CMS�ڵ�3\":\"\",\"CMS�ڵ�2\":\"\",\"CMS�ڵ�1\":\"\",\"��й�ȣ\":\"1\"}}}"; + + Message source = MessageFactory.getFactory().getMessage("BFE_KFK124F440_REQ1"); + System.out.println("data=\n" +data); + source.setData(data); + System.out.println(source); + System.out.println(source.getData()); + //---------------------------------------------------------------------- + // ��ȯ ��� 1 + //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_BFE_KFK124F440BFE_REQ", new Message[] { source }); + +// System.out.println(target); +// System.out.println(target.toString()); + + + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/LayoutNewJsonTest.java b/src/test/java/com/eactive/eai/transformer/LayoutNewJsonTest.java new file mode 100644 index 0000000..39b1d69 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/LayoutNewJsonTest.java @@ -0,0 +1,392 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class LayoutNewJsonTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + String comdata = ""; + + + public LayoutNewJsonTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(LayoutNewJsonTest.class); + } + /** + * EAI_UJSON2DEPTHEXT_REQ1 + * abc + * grid1 + * long1 10,0 + * data2 + * grid2 + * data3 + * big4 15,5 + * abcd + * grid3 + * long1 10,0 + * data2 + * grid4 + * data5 + * big6 15,0 + */ + public void setUp() throws Exception { + AllTests.setParams(); + // ��ȯ �ʱ�ȭ + engine = TransformEngine.getInstance(); + + comdata += "{ "+"\n"; + comdata += " \"EAI_UJSON2DEPTHEXT_REQ1\":{ "+"\n"; + comdata += " \"abc\":\"cba \", "+"\n"; + comdata += " \"grid1\":[ "+"\n"; + comdata += " { "+"\n"; + comdata += " \"long1\":1, "+"\n"; + comdata += " \"data2\":\" \", "+"\n"; + comdata += " \"grid2\":[ "+"\n"; + comdata += " { "+"\n"; + //comdata += " \"data3\":\"12345\", "+"\n"; + comdata += " \"big4\":14.00000 "+"\n"; + comdata += " }, "+"\n"; + comdata += " { "+"\n"; + comdata += " \"data3\":\"13 \", "+"\n"; + comdata += " \"big4\":14.00001 "+"\n"; + comdata += " } "+"\n"; + comdata += " ] "+"\n"; + comdata += " }, "+"\n"; + comdata += " { "+"\n"; + comdata += " \"long1\":10000, "+"\n"; + comdata += " \"data2\":\" \", "+"\n"; + comdata += " \"grid2\":[ "+"\n"; + comdata += " { "+"\n"; + comdata += " \"data3\":\"23 \", "+"\n"; + comdata += " \"big4\":24.00000 "+"\n"; + comdata += " } "+"\n"; + comdata += " ] "+"\n"; + comdata += " }, "+"\n"; + comdata += " { "+"\n"; + comdata += " \"long1\":1000000000, "+"\n"; + comdata += " \"data2\":\" \", "+"\n"; + comdata += " \"grid2\":[ "+"\n"; + comdata += " { "+"\n"; + comdata += " \"data3\":\"31\", "+"\n"; + comdata += " \"big4\":1.1 "+"\n"; + comdata += " }, "+"\n"; + comdata += " { "+"\n"; + comdata += " \"data3\":\"32\", "+"\n"; + comdata += " \"big4\":1234567890.1 "+"\n"; + comdata += " }, "+"\n"; + comdata += " { "+"\n"; + comdata += " \"data3\":\"33\", "+"\n"; + comdata += " \"big4\":1.12345 "+"\n"; + comdata += " }, "+"\n"; + comdata += " { "+"\n"; + comdata += " \"data3\":\"34\", "+"\n"; + comdata += " \"big4\":1234567890.00034 "+"\n"; + comdata += " } "+"\n"; + comdata += " ] "+"\n"; + comdata += " } "+"\n"; + comdata += " ], "+"\n"; + comdata += " \"abcd\":\"123\", "+"\n"; + comdata += " \"grid3\":[ "+"\n"; + comdata += " { "+"\n"; + comdata += " \"long1\":1, "+"\n"; + comdata += " \"data2\":\" 1\", "+"\n"; + comdata += " \"grid4\":[ "+"\n"; + comdata += " { "+"\n"; + comdata += " \"data5\":\"00023\", "+"\n"; + comdata += " \"big6\":1 "+"\n"; + comdata += " }, "+"\n"; + comdata += " { "+"\n"; + comdata += " \"data5\":\" \", "+"\n"; + comdata += " \"big6\":100000 "+"\n"; + comdata += " }, "+"\n"; + comdata += " { "+"\n"; + comdata += " \"data5\":\"00035\", "+"\n"; + comdata += " \"big6\":900000003600011 "+"\n"; + comdata += " } "+"\n"; + comdata += " ] "+"\n"; + comdata += " }, "+"\n"; + comdata += " { "+"\n"; + comdata += " \"long1\":1000000000, "+"\n"; + comdata += " \"data2\":\" \", "+"\n"; + comdata += " \"grid4\":[ "+"\n"; + comdata += " { "+"\n"; + comdata += " \"data5\":\"00061\", "+"\n"; + comdata += " \"big6\":0 "+"\n"; + comdata += " }, "+"\n"; + comdata += " { "+"\n"; + comdata += " \"data5\":\"00062\", "+"\n"; + comdata += " \"big6\":123456 "+"\n"; + comdata += " }, "+"\n"; + comdata += " { "+"\n"; + comdata += " \"data5\":\"00063\", "+"\n"; + comdata += " \"big6\":900000003600011 "+"\n"; + comdata += " } "+"\n"; + comdata += " ] "+"\n"; + comdata += " } "+"\n"; + comdata += " ] "+"\n"; + comdata += " } "+"\n"; + comdata += "} "+"\n"; + + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + /** + * + * EAI_UJSON2DEPTH_REQ1 + * abc + * grid1 + * long1 + * data2 + * grid2 + * data3 + * big4 + * @throws Exception + */ + public void atestUJSON2DEPTH() throws Exception { + System.out.println("testUJSON2DEPTH =============================================================="); + //logger.debug("Transform08900001Test | testTransform()"); + + //---------------------------------------------------------------------- + // source message ���� + //---------------------------------------------------------------------- + String data =""; +// data = "{ \"EAI_UJSON2DEPTH_REQ1\": {" +// + " \"abc\": \"cba\", " +// + " \"grid1\": [ " +// + " { \"data1\": \"1row\" , \"grid2\" : [ {\"data3\" : \"13\"},{\"data4\" : \"14\"} ] } " +// + " ,{ \"data1\": \"2row\" , \"grid2\" : [{ \"data3\" : \"23\"} ] } " +// + " ] " +// + " } " +// + "}"; + data +="{ "+"\n"; + data +=" \"EAI_UJSON2DEPTH_REQ1\":{ "+"\n"; + data +=" \"abc\":\"cba\", "+"\n"; + data +=" \"grid1\":[ "+"\n"; + data +=" { "+"\n"; + data +=" \"long1\":1, "+"\n"; + data +=" \"grid2\":[ "+"\n"; + data +=" { "+"\n"; + data +=" \"data3\":\"13\", "+"\n"; + data +=" \"big4\":1.10000 "+"\n"; + data +=" }, "+"\n"; + data +=" { "+"\n"; + data +=" \"data3\":\"13\", "+"\n"; + data +=" \"big4\":2.10000 "+"\n"; + data +=" } "+"\n"; + data +=" ] "+"\n"; + data +=" }, "+"\n"; + data +=" { "+"\n"; + data +=" \"long1\":100000, "+"\n"; + data +=" \"grid2\":[ "+"\n"; + data +=" { "+"\n"; + data +=" \"data3\":\"23\", "+"\n"; + data +=" \"big4\":22222.22222 "+"\n"; + data +=" } "+"\n"; + data +=" ] "+"\n"; + data +=" }, "+"\n"; + data +=" { "+"\n"; + data +=" \"long1\":1000000000, "+"\n"; + data +=" \"grid2\":[ "+"\n"; + data +=" { "+"\n"; + data +=" \"data3\":\"33\" "+"\n"; + data +=" }, "+"\n"; + data +=" { "+"\n"; + data +=" \"big4\":3333333333.33333 "+"\n"; + data +=" }, "+"\n"; + data +=" { "+"\n"; + data +=" \"data3\":\"35\", "+"\n"; + data +=" \"big4\":3333333333.55555 "+"\n"; + data +=" } "+"\n"; + data +=" ] "+"\n"; + data +=" } "+"\n"; + data +=" ] "+"\n"; + data +=" } "+"\n"; + data +="} "+"\n"; + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("EAI_UJSON2DEPTH_REQ1"); + source.setData(data.getBytes()); + + System.out.println("source="+source); + System.out.println("beauti=\n" + ((String) source.getData())); + } + /** + * EAI_UJSON2DEPTHEXT_REQ1 + * abc + * grid1 + * long1 + * data2 + * grid2 + * data3 + * big4 + * abcd + * grid3 + * long1 + * data2 + * grid4 + * data5 + * big6 + * @throws Exception + */ + public void atestUJSON2DEPTHEXT() throws Exception { + System.out.println("testUJSON2DEPTHEXT =============================================================="); + //logger.debug("Transform08900001Test | testTransform()"); + //---------------------------------------------------------------------- + // source message ���� + //---------------------------------------------------------------------- + String data =""; + data = comdata; + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("EAI_UJSON2DEPTHEXT_REQ1"); + source.setData(data.getBytes()); + + System.out.println("source="+source); + System.out.println("beauti=\n" + ((String) source.getData())); + + + } + public void testJSON2JSON() throws Exception { + System.out.println("testJSON2JSON =============================================================="); + //logger.debug("Transform08900001Test | testTransform()"); + + String data =""; + data = comdata; + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("EAI_UJSON2DEPTHEXT_REQ1"); + source.setData(data.getBytes()); + System.out.println(source.toString()); + System.out.println("beauti=\n" + ((String) source.getData())); + + + Transformer transformer = engine.getTransformer(); + + Message target = transformer.transform("TRANSFORM_EAI_NEWJSON2NEWJSON_REQ", new Message[] { source }); + System.out.println(target.toString()); + System.out.println("beauti=\n" + ((String) target.getData())); + + } + public void atestJSON2FLAT() throws Exception { + System.out.println("testJSON2FLAT =============================================================="); + //logger.debug("Transform08900001Test | testTransform()"); + + String data = comdata; + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("EAI_UJSON2DEPTHEXT_REQ1"); + source.setData(data.getBytes()); + System.out.println(source.toString()); + System.out.println("beauti=\n" + ((String) source.getData())); + + Transformer transformer = engine.getTransformer(); + + Message target = transformer.transform("TRANSFORM_EAI_NEWJSON2FLAT_REQ", new Message[] { source }); + System.out.println(target.toString()); + System.out.println("["+new String((byte[])target.getData())+"]"); + + } + + public void atestFLAT2JSON() throws Exception { + System.out.println("testFLAT2JSON =============================================================="); + //logger.debug("Transform08900001Test | testTransform()"); + + String data =""; + data = "cba 000030000000001 000021234500000000140000013 0000000014000010000010000 0000123 0000000024000001000000000 0000333 000000000000000 00000000000003435 000000000000036123000020000000001 00001000230000000000000241000000000 0000300033000000000000000 00000000000003400035900000003600011"; + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("EAI_FLAT2DEPTHEXT_REQ1"); + source.setData(data.getBytes()); + System.out.println(source.toString()); + System.out.println("["+new String((byte[])source.getData())+"]"); + + + Transformer transformer = engine.getTransformer(); + System.out.println("engine--------------------------------------------------"); + + Message target = transformer.transform("TRANSFORM_EAI_FLAT2NEWJSON_REQ", new Message[] { source }); + System.out.println(target.toString()); + System.out.println("beauti=\n" + ((String) target.getData())); + + } + + public void atestFLAT2JSONTYPE() throws Exception { + System.out.println("testFLAT2JSONTYPE =============================================================="); + //logger.debug("Transform08900001Test | testTransform()"); + + String data =""; + data = "cba 000030000000001 000021234500000000140000013 0000000014000010000010000 0000123 0000000024000001000000000 0000333 000000000000000 00000000000003435 000000000000036123000020000000001 00001000230000000000000241000000000 0000300033000000000000000 00000000000003400035900000003600011"; + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("EAI_FLATTYPE_REQ1"); + source.setData(data.getBytes()); + System.out.println(source.toString()); + System.out.println("["+new String((byte[])source.getData())+"]"); + + +// Transformer transformer = engine.getTransformer(); +// System.out.println("engine--------------------------------------------------"); +// +// Message target = transformer.transform("TRANSFORM_EAI_FLAT2UJSONTYPE_REQ", new Message[] { source }); +// System.out.println(target.toString()); +// System.out.println(target.getData()); + + } + public void atestJSON2FLATTYPE() throws Exception { + System.out.println("testJSON2FLATTYPE =============================================================="); + //logger.debug("Transform08900001Test | testTransform()"); + + String data =""; + data = "{ \"EAI_UJSONTYPE_REQ1\" : { "; + data+= " \"STRING_VALUE\" : \"AAAA\" "; + data+= " , \"STRING_NULL_VALUE\" : null "; + data+= " , \"INT_VALUE\" : 12345 "; + data+= " , \"INT_NULL_VALUE\" : null "; +// data+= " , \"INT_SPACE_VALUE\" : \" \" "; + data+= " , \"LONG_VALUE\" : 1234567890 "; + data+= " , \"LONG_NULL_VALUE\" : null "; +// data+= " , \"LONG_SPACE_VALUE\" : \" \" "; + data+= " , \"BIG_VALUE\" : 1234567890.12345 "; + data+= " , \"BIG_NULL_VALUE\" : null "; +// data+= " , \"BIG_SPACE_VALUE\" : \" \" "; + data+= " , \"BIG15_VALUE\" : 123456789012345 "; + data+= " , \"BIG15_NULL_VALUE\" : null "; +// data+= " , \"BIG15_SPACE_VALUE\" : \" \" "; + data+= " , \"HANGLE\" : \"�ѱ�\" "; + data+= " , \"ENG\" : \"ABCDEF\" "; + data+= "}}"; + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("EAI_UJSONTYPE_REQ1"); + source.setData(data.getBytes("UTF-8")); + System.out.println(source.toString()); + //System.out.println("["+new String((byte[])source.getData())+"]"); + + +// Transformer transformer = engine.getTransformer(); +// System.out.println("engine--------------------------------------------------"); +// +// Message target = transformer.transform("TRANSFORM_EAI_UJSON2FLATTYPE_REQ", new Message[] { source }); +// System.out.println(target.toString()); +// System.out.println(target.getData()); + + } + + +} diff --git a/src/test/java/com/eactive/eai/transformer/LayoutRef00Test.java b/src/test/java/com/eactive/eai/transformer/LayoutRef00Test.java new file mode 100644 index 0000000..039f445 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/LayoutRef00Test.java @@ -0,0 +1,53 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class LayoutRef00Test extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public LayoutRef00Test(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(LayoutRef00Test.class); + } + + public void setUp() throws Exception { + // + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + public void test1() throws Exception { + System.out.println("find Item Test =============================================================="); + byte[] data = "0229IGN0040210301005000C34120060509341500400071296807200509341572000000000E1006541908 00000100 0000000 00000000000000000000000000000000000000 00000000 0000 000".getBytes(); + Message source = MessageFactory.getFactory().getMessage("BFE_EEH0200301005_RES1"); + System.out.println(source); + source.setData(data); + System.out.println(source); + + + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/LayoutRefTest.java b/src/test/java/com/eactive/eai/transformer/LayoutRefTest.java new file mode 100644 index 0000000..38fa36d --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/LayoutRefTest.java @@ -0,0 +1,226 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.function.util.CodeConversion; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.util.IConv; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class LayoutRefTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public LayoutRefTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(LayoutRefTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void atestCase1Test() throws Exception { + //참조정보 무시함 + + //String data ="LLZZHDR001112222333455520190918130066601123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234FFFFFFFFFFFFSPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARE########"; + String data ="LLZZHDR001112222333455520190918130066602123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234FFFFFFFFFFFFSPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARESPARE########"; + System.out.println("KFM_EBE98009022_RES1 - 패턴 없음, min 1, max 1, 참조정보 존재 "); + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("KFM_EBE98009022_RES1"); + source.setData(IConv.asciiToEBCDIC(data)); + System.out.println(source.toString()); + } + + public void atestCase2Test() throws Exception { + //참조정보는 최대 건수를 넘을수 없음 +// String data ="LLZZHDR1122233334445666777777777777888001AAAAAAA000000000000"; + String data ="LLZZHDR1122233334445666777777777777888"; + data += "040"; + data += "1AAAAAABBBBBBBAAAAAAABBBBBBBAAAAAAABBBBBBBAAAAAAABBBBBBBAAAAAAABBBBBBB"; + data += "2AAAAAABBBBBBBAAAAAAABBBBBBBAAAAAAABBBBBBBAAAAAAABBBBBBBAAAAAAABBBBBBB"; + data += "3AAAAAABBBBBBBAAAAAAABBBBBBBAAAAAAABBBBBBBAAAAAAABBBBBBBAAAAAAABBBBBBB"; + data += "4AAAAAABBBBBBBAAAAAAABBBBBBBAAAAAAABBBBBBBAAAAAAABBBBBBBAAAAAAABBBBBBB"; + data += "000000000000"; + + System.out.println("KFM_EBE98109042_REQ1 - 패턴 30, min 0, max 30, 참조정보 존재 "); + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("KFM_EBE98109042_REQ1"); + source.setData(data.getBytes()); + System.out.println(source.toString()); + +// data ="LLZZHDR1122233334445666777777777777888002AAAAAAABBBBBBB000000000000"; +// System.out.println(data); +// source = MessageFactory.getFactory().getMessage("KFM_EBE98009022_RES1"); +// source.setData(data.getBytes()); +// System.out.println(source.toString()); + } + + public void atestCase3Test() throws Exception { + //String data ="00000000001111111111223420190918566620191231ABCDEABCDEABCDEABCDEABCDEABCDE000000000000000111111111111111"; + String data =""; + + System.out.println("KGE_KGE0400440_REQ2 - 패턴 0, min 0, max 0, 참조정보 없음 "); + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("KGE_KGE0400440_REQ2"); + source.setData(IConv.asciiToEBCDIC(data)); + System.out.println(source.toString()); + } + + public void atestCase4Test() throws Exception { + String data ="00000000001111111111ABCDEABCDEABCDEABCDEABCDEABCDE2019091820191231000000000000000111111111111111"; + System.out.println("KGE_KGE0400440_RES1 - 패턴 0, min 1, max 1, 참조정보 없음 "); + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("KGE_KGE0400440_RES1"); + source.setData(IConv.asciiToEBCDIC(data)); + System.out.println(source.toString()); + } + + public void atestCase5Test() throws Exception { + String data ="00001112222222222222222222222222222222222222019091812000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1234567890123456789012345678901234567890123456781112345678901234567890123456789012345678901234567800001234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901111000000000000000000022BBBBBBBBBBBBBBBBBBBBBBB"; + System.out.println("KFI_ECE0100000_REQ1 - BYTES 레이아웃 인데 2201(String) 으로 표시 됨 "); + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("KFI_ECE0100000_REQ1"); + source.setData(data.getBytes()); + System.out.println(source.toString()); + } + + public void atestCase6Test() throws Exception { + String data ="0011122222222333333444444445555500001000016661000000000200000000030000000004000000000"; + System.out.println("KJI_KJI040ZB41_RES1 -grid인데 2113 byte로 되어 있음 "); + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("KJI_KJI040ZB41_RES1"); + source.setData(IConv.asciiToEBCDIC(data)); + System.out.println(source.toString()); + + data ="00111222222223333334444444455555000020000266610000000002000000000300000000040000000007771000000000200000000030000000004000000000"; + System.out.println(data); + source = MessageFactory.getFactory().getMessage("KJI_KJI040ZB41_RES1"); + source.setData(IConv.asciiToEBCDIC(data)); + System.out.println(source.toString()); + } + + public void atestCase7Test() throws Exception { + String data ="" + + "" + + "0000" + + "11111" + + "2" + + "3" + + "20190918" + + "1234" + + "20190918" + + "123456789012345678901234567890123456" + + "7777777" + + "0" + + "0" + + "1000000" + + "1" + + "1234567890123" + + "과목명" + + "00001" + + "1234567890123" + + "통합계정과목명2" + + "00001" + + "1" + + "12345678901234567890" + + "1000000" + +"" + +""; + + System.out.println("KYB_KYB2010_REQ1 - fieldType 이 flot이면 2106(FLOT) 인데 2118 인 BIGDECIMAL 로 되어 있음"); + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("KYB_KYB2010_REQ1"); + source.setData(data); + System.out.println(source.toString()); + } + + public void atestCase8Test() throws Exception { + String data ="" + + "" + +"" + +""; + System.out.println("PAH_KAA0499641_RES2 - XML 레이아웃 타입이면 fieldType이 BYTEARRAY 로 설정되면 2113(BYTEARRAY)인데 2101(String) "); + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("PAH_KAA0499641_RES2"); + source.setData(data); + System.out.println(source.toString()); + } + + public void atestTemp() throws Exception { + System.out.println("-----------------------------------------------"); + //String data ="{\"BFE_KFK120BF43_REQ1\":{\"InData\":{\"업무팀조회구분\":\"\",\"수신계좌수\":0,\"업무팀첫번째조회여부\":\"\",\"국내펀드포함총예금잔액\":0,\"첫번째조회여부\":\"1\",\"다음조회키영역\":{\"다음조회키4\":0,\"다음조회키3\":\"\",\"다음조회키2\":\"\",\"다음조회키1\":\"\"},\"국내펀드계좌수\":0,\"부ID고객식별자\":\"\",\"총예금잔액\":0,\"부ID고객관리번호\":\"\",\"총자동대출잔액\":0}}}"; + //String data ="{\"BFE_KFK120BF43_REQ1\":{\"InData\":{\"업무팀조회구분\":\"\",\"수신계좌수\":\"0\",\"업무팀첫번째조회여부\":\"\",\"국내펀드포함총예금잔액\":\"0\",\"첫번째조회여부\":\"1\",\"다음조회키영역\":{\"다음조회키4\":\"\", \"다음조회키3\":\"\", \"다음조회키2\":\"\", \"다음조회키1\":\"\"},\"국내펀드계좌수\":\"0\",\"부ID고객식별자\":\"\",\"총예금잔액\":\"0\",\"부ID고객관리번호\":\"\",\"총자동대출잔액\":\"0\"}}}"; + String data ="{\"BFE_KFK120BF43_REQ1\":{\"InData\":{\"다음조회키영역\":{\"다음조회키4\":\"\", \"다음조회키3\":\"\", \"다음조회키2\":\"\", \"다음조회키1\":\"\"}}}}"; + + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("BFE_KFK120BF43_REQ1"); + source.setData(data); + System.out.println(source.toString()); + } + + + public void testEbcdicDefaultValue() throws Exception { + String data ="B"; + + + Message source = MessageFactory.getFactory().getMessage("EAA_EAA0501251_RES1"); + System.out.println("Init default value"); + System.out.println(source.toString()); + System.out.println("Set value"); + source.setData(CodeConversion.ascToSE(data.getBytes())); + System.out.println("After set value"); + System.out.println(source.toString()); + } +} diff --git a/src/test/java/com/eactive/eai/transformer/LayoutTest.java b/src/test/java/com/eactive/eai/transformer/LayoutTest.java new file mode 100644 index 0000000..17f12db --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/LayoutTest.java @@ -0,0 +1,91 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class LayoutTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public LayoutTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(LayoutTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + public void testFindItemTest() throws Exception { + System.out.println("find Item Test =============================================================="); + Message target = MessageFactory.getFactory().getMessage("EAI_TST00000090_RES"); + System.out.println(target); + //byte[] bzwkData ; + //bzwkData = (byte[]) target.getData(); + //System.out.println("["+new String(bzwkData)+"]"); + +/* + HashMap values = new HashMap(); + values.put("HEDR_S9","TEST "); + values.put("STD_SRVC_ID","ABCD"); + + + for (Iterator iter = target.iterator(); iter.hasNext();) { + Item item = (Item) iter.next(); + if (item.getIndex() == -1) { + continue; + } + switch (item.getNodeTypeId()) { + case Item.NODE_FIELD: + System.out.println(item.getItemPath()); + break; + } + } + + + + + byte[] bzwkData = new byte[0]; + if (target != null){ + for(String key : values.keySet()){ + try{ + String path ="TST_TST009999_CBSS."+key; + String value = values.get(key); + if (value != null){ + target.setString(path, value); + } + }catch(Exception e){} + } + bzwkData = (byte[]) target.getData(); + } + System.out.println("["+new String(bzwkData)+"]"); + +*/ + + + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/LayoutVFieldTest.java b/src/test/java/com/eactive/eai/transformer/LayoutVFieldTest.java new file mode 100644 index 0000000..512189b --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/LayoutVFieldTest.java @@ -0,0 +1,225 @@ +package com.eactive.eai.transformer; + +import org.apache.commons.lang3.StringUtils; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class LayoutVFieldTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public LayoutVFieldTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(LayoutVFieldTest.class); + } + + public void setUp() throws Exception { + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + public void atestVfield() throws Exception { + System.out.println("testVfield =============================================================="); + Message target = null; + byte[] data = null; + byte[] result = null; + target = MessageFactory.getFactory().getMessage("EAI_TST003_REQ1"); + System.out.println("set data before="+target); + data = "KBO0002AAAA1AAAA2BBBB1BBBB20010ABCDEFGHIJ0005543210003AAAA1AAAA2BBBB1BBBB2CCCC1CCCC2".getBytes(); + System.out.println(new String(data)); + target.setData(data); + System.out.println("set data after="+target); +// result =(byte[])target.getData(); +// System.out.println("result=["+result.length+"][" + new String(result)+"]"); + + + + } + public void atestXml() throws Exception { + System.out.println("testXml =============================================================="); + Message target = null; + + String reqXML = "" + + "" // + + "KBO" + + "" + + "AAAA1" + + "BBBB1" + + "" + + "" + + "AAAA2" + + "BBBB2" + + "" + + "0010" + + "ABCDEFGHIJ" + + "0005" + + "54321" + + "" + + "AAAA1" + + "BBBB1" + + "" + + "" + + "AAAA2" + + "BBBB2" + + "" + + "" + + "AAAA3" + + "BBBB3" + + "" + + "" + + ""; + + target = MessageFactory.getFactory().getMessage("EAI_TST003_REQ2"); + System.out.println("before="+target); + target.setData(reqXML); + //System.out.println("reqMsgP1="+target.getString("EAI_TST003_REQ2.InData.reqMsgP1")); + System.out.println("after="+target); + System.out.println("result=" + (String)target.getData()); + + } + public void atestTransformXmlToFlat() throws Exception { + System.out.println("testTransformXmlToFlat =============================================================="); + Message source = MessageFactory.getFactory().getMessage("EAI_TST003_REQ2"); + Message target = MessageFactory.getFactory().getMessage("EAI_TST003_REQ1"); + + String reqXML = "" + + "" // + + "KBO" + + "" + + "AAAA1" + + "BBBB1" + + "" + + "" + + "AAAA2" + + "BBBB2" + + "" + + "0010" + + "ABCDEFGHIJ" + + "0005" + + "54321" + + "" + + "AAAA1" + + "BBBB1" + + "" + + "" + + "AAAA2" + + "BBBB2" + + "" + + "" + + "AAAA3" + + "BBBB3" + + "" + + "" + + ""; + System.out.println(reqXML); + source.setData(reqXML); + System.out.println(source); + Transformer transformer = engine.getTransformer(); + transformer.transform("TRANSFORM_EAI_TST003_REQ", target, new Message[] { source }); + System.out.println(target); + System.out.println(new String((byte[])target.getData())); + + } + public void atestTransformFlatToXml() throws Exception { + System.out.println("testTransformFlatToXml =============================================================="); + Message source = MessageFactory.getFactory().getMessage("EAI_TST003_REQ1"); + Message target = MessageFactory.getFactory().getMessage("EAI_TST003_REQ2"); + + byte[] data = "KBO0002AAAA1AAAA2BBBB1BBBB20010ABCDEFGHIJ0005543210003AAAA1AAAA2BBBB1BBBB2CCCC1CCCC2".getBytes(); + + source.setData(data); + Transformer transformer = engine.getTransformer(); + transformer.transform("TRANSFORM_EAI_TST003_RES", target, new Message[] { source }); + System.out.println(target); + System.out.println("result=" + (String)target.getData()); + } + public void atestTransformFlatToJson() throws Exception { + System.out.println("testTransformFlatToJson =============================================================="); + Message source = MessageFactory.getFactory().getMessage("SAD_BFF71K44RR_REQ1"); + Message target = MessageFactory.getFactory().getMessage("BFF_BFF71K44RR_REQ2"); + + byte[] data = "0000006144SUkqACYPAAApkSRdF0R8joui6OIj5HyOi6LouiOjiLouiPl0XRHRdF0XRdE6LouiOi6Lo4v/////////////////////////////////KYCwn//////////////////////ncBDeT5JWSrIFk+RmRJlWDz8GUn//////////////////////////4RzneEEVeHOnwwuRmHna5bhF8L////////////////////////////44QXjwi+Ed+P8Qwjv////////////////////////////8IIqwhmLkhmmXLPeGFnBcuRo8oFzUKezPyRj///////////////////////////////4ZCXCCI1hHmekPDPeEF+EeZ7DPYfCPM9kPofj2F/////////////////////////////////nYfDL/H8Lklcf4X8c9UML///////////////////////////////+EGdJnGf57OE//8+kI8/////////////////////////////////nY/4Z1c3//hnL/4f/+Eezte/////////////////////////////////4YWGdWEGRaBhB/hnGcMKEXIIMIMMi9DCL4QQZ2u/IwJ///////////////////////////////iIiIiIiIiIiIiIiIxj//////////////////////4///////////////////////////////////////////////////////////////////iIiIiIiIiIiIiIiIiIiIiI/ABABA//////gAgAj/////+ACACP/////4AIAI///LISASwUQg//8hls4t//////////gAgAgsioGWWcWDL///////////////5XGmW8z+Vxmmn8IO/9r//+ZBZ+Vm/hEGjLhBnZAK/+/1IkGn/6/T///f//6/1//8fwyHciuRRwTX8yJckL8RESpi/wmED/O1C/6/SZ2MIjDf+t/qn/9Y0//gAgAgLIqBlmSoRmKZhnJIFO6xlOMrIyDGZKoZf60/X//bdf+/XX/vWiKO///yPKtvr/+nSb//3+ld///0m9f//hJh/f//Sb6/+pHLwkw/T/6H6TD7X+ZAgaXgkwytAyf9fSDD7/15GwXYPT/tfCb0RX/2C7p+r/smBeEDj3/H2mgr/+mWVI7NWU9Tf9p2mkGEGk3/ERH1b/+lf8yWg2vSYf9P0m/9+k3//CTf/9J//6v/K4EL8IP//aa//tNf8gYyVC+0P/CFktBZH/pp///gAgAgLIqBllcCFKQFolYFh34zJVDL+1/8X/8g40v+I////////+/9pr4j////////////////////wAQAQCyKgZZZxYMv///////////8f/tR//+ACACA//////gAgAj/////+ACACP/////y3E42yhEPL8AEAEAtxIy5mYGPdnZRfzsbkzsIFlvoDHr52MDPT/XIxp/5GHOwwf8lwLp/3/1TRFo7/6/6BB5bjBf//gqe18dfcmNf/yQf/+C/Xp8Nar//tr/a/TkDAYr+ah66ewv/II/RJw9rYP+uk8kJk59vmAa/wrB0//Tzz0E3rwv8lpwVg8mAa/7VegQfWg//6eQyu0Rv8f2CBr6w/PgY/pp2qT+n+IsIdf9kcIuJrBfhr+Pwg7X7/oO0PkmP9EWbj+wvPA0IIP/H0zYNEIP/+0H/////9VDC//EWO1W+1F2vagAgAi3K8jWdlJnYgGIi0Mf/////gAgAgP/5XSgO4Wn/aj///ABABP/////4AIAI/////+W4uZGiLQNnLetFCXLKpHwAQAQt9CPkbGdDKCLKFDKsyQf/vtf/6v11/8f9/4fp/4d6/9dB/7vT/JfrwRCDg7/14SbT8hR8EnhJhp+K09IN3/T2nT/oijvhB0++EmHsIGgRCOHwwqV8Rp+LtP0/GnyyiQNdNct04GKa7oNewwQ6hhD8dx/13Jy2RbIs0Tny3FRehoU+W4wDF/9cfH/6//+SA2fC+ZhMhlHF8Q/9//1tXd2oiIwAQAT/////+ACACP/lcyA7jhB0/4YUf//8AEAE//////gAgAj/////+ACACJb6BsOAweMsoKGw4DBm6apnYEKamQxSJCEHHQU+DBMCmsZrFOjtNProNNBpqEGqDTCaa//CDBQmEGoTsJhBoMF/166ar6drvXetNU21S0wmg+vluXHI68l3k/s/vRJIpL8n9Ep8rhjkaf/SbJzVsX66vbrND//0/TuuqvX///9/1Sqm0m///6+vomPpL/v////6Wv/tpf/kF5///y4uv7DCXyGD/fv+lXoNKtvivv//054ESS4tT4J9q19///09e6T/V/r///qvIl/+NB//kWr/9JILhNr+6fyNP9f97pfCemvdEsf///1FJL3UbwyKPSf//6/pIQfdPgwnp///6+lDf/Fdv//v76X69VX//7/126q1///IZ8IEbIr2qCq1V0krX5AjyDDNR3baW6SkmelV/193/YripBipRrGZhiP//+67VNJNf/emtr2tra3+IiGmg14YWGgwgwsRGwthU7VMJpqoiIiIiIj8AEAE//////gAgAj/yulgdxKdP31H///gAgAg//////gAgAj/////8t6gYOjIbOjLKNAudGdDJBwAQAQt9QzlAyQRORZQMCCgZDIoPp2p3UiComERVEFRK0S+QiIhLaandSJeJQiozs1ynyoRML/nZw5QDk4cJkCDkuycORoOSApDDk5dtqdoClAcgYc6BycKRIOfDnQKE/2ktqummqpr76aaapqmmnrbpB6DUINbQaDUJ62knahU1TT8jL3VEWNIjisjjycUR3RHFEsfIoi2kiOGiUUSxyWURw0R3kraI4a9O6ptE60G9JtaDdN02lfVvpO0G1bSGm0g006Tr7Dawg3VNrCDeLpN0HoOZl/UJsW4TpJB4Qi8Jv/FL6T663TpX/2xW7/VWvuvkh9V6617r1/8mPfb/0utbXpbr9a+FSr//V6X/S3S6f+7X/r8mPS/7S7Xar7S//0TfkF6KH/IQ/k3q6Wv+w0uQYordfYa5gvzBBL0vf1ug/SX61+9tfr/SbSwn+mkl///h/5mF9coCnwTf2K/b61PB2KiH5wEiGThPS/9/e6Wg/S6X29r1/6tq/u/0vS6ft+lr6XDv4ZcRPpVCfqmg/1uH/5HWL/NZ+v/4f9jT5HWO/S1kvf8j+36X00/9a2vSzWLXuiNw/tb6aRG4e/vVkMfpf0Rjv2/Sx9LBx1DIo9Agf9EY/1FAgem/GnDv/9J9f///69/T2G+lv/+3ekvXv/0JEL1iD/H7/p/S2//39CD8jo6d//9P/p/RGeErvSr//u+H0m0r/b7/2//6vbdJL/1fp0v1q3ele03td6Vpf9P6VpNpMPtJfa/q7ankraRrO1NZq2klr6Vpdqlfauk3nElaRTn14V2kg0rCXaWfYSsJGcsNfV1YbaSm3YVtK0rVBhW1f0+7FRsexWhTGhx7vW7GhDjjjio2PhoNBpppqmtraaoMLaaDTCYVKGE001ChLEREWqadrpqmmhERENbTTTVO8NBhBhYaoMIMIMIMJ2EGgwgwgwgwgwgwqiItCHERERERERGoiPwAQAQ//////gAgAj/yulAdwtP+1H///wAQAT///+W5XS3E7OgY+E/osMOW9V6Tf+EH/rf9//1/tf9pfwxUAEAEC3qjrHIhgx/Zpr2Fp/Hv//NlNf9ohW0Ffngaf5Gj/jv9mB+axMfkMGMhf4RKgcfQIG/0/0m///X7aX2RbV9io5qC2hj//ABABD/////+ACACP/////4AIAI//////gAgAj/////+ACACP/////4AIAI//////gAgAj/////+ACACP/////4AIAI//////gAgAj/////+ACACP/////4AIAI//////gAgAj/////+ACACP/////4AIAI//////gAgAj////+V0sDuJTp+1agAgAg////+WyluWySA3oOWyFg1QiB4aTcLCdELVggg8AEAEAtkoCFIDkaAvCQeS00CDa9JtLoIG0uk2C9BNpdJsJdK/lsLYbTYJdJ0ukwwS6ITiD2g4RFddNimP8kO6hJeIopwXaS9BNgl9AgbSX02F+gQY15JWkQfGl9UCDa+0giETh1y1iZkbIlRdIJtL50FyKP1CCD/VO08pz0kE2vJsB5UouiRHaeLKUAYMzM3hB51Bf0+kF/QYQg1O0Saad6eh/6Spf01/9PkCB/6qVALpctxQDHv/+v/6SkQGe04TPhozMMvyNkawe//keev/UECiQbtwP9R1v5Hp/oN5GL76UIguKv/nA2YX//68Jm6NfWGg4tYav////VPT0lTklNy3KIoyXPOiJHVcnn/sF7+/vWSeyBgmnpprpp1ZEj3/4+6/0+kthqH/95qFkQC1//cMF/wg/SwyGYMtwAQAQtxczRkYRIMkGaGdRDQITBmtn2YMuZZRYZ0I8Gc2FNgQcGaiLmbBCgQuIRQZqMwZwynM2GcjCKwf/6CD/6///kh4JMH6+GQb6K/X+n/3/I+2wq/0m+kF0QwY36/eiKO/+OPeg1oQfhJvQ/DB/v9+CB5MS//5IWh8JvXsjAdeEUPTT9Knr//kY2l6fr2DrhCJCafv7//6H4IGuvBteneaAYtf/a/IYGGQIdbTXrmYHgo+unr/ybyyhQ/1ZqliPXp909Yr/r9exEMLr14ybvw1X9/HtDX68tyhmbSb3a///I0MiAy/9/aq3kYYv3///XkTD/wk35CBs4/3yGGV/7X+m/C/6taTmoNn+Gv4Sf1/yyiQaQ+yKeYDT2va/0/319+P7Xj/aa/wyhzkeuF+1/LcaBpEc8DRJ68R/76x/oPQf/vcPD//7/8fx/7XC9///44xjXX///aDTX/6fER/9OL/9of/iP/////IwD//hP/6/06/6/bkzLX42OACACLYJSImREAXPAyGYKPvdfeoXw8iiSr5KDEZm4V7ngZf+n/69rj4/+fyWf9C/6+TIIIftfp8fp+eBl9669h4Ltdt0sfEV8Na6+Nrj/1H/wAQAQ//////gAgAj/////+ACACP/////4AIAI//////gAgAj/////+ACACP/////4AIAI//////gAgAj/////+ACACP/////4AIAI/////+ACACARAP4ABAABAAAAAgAAAAABAwABAAAAwAYAAAEBAwABAAAA9AgAAAIBAwABAAAAAQAAAAMBAwABAAAABAAAAAYBAwABAAAAAAAAABEBBAA+AAAA+A8AABIBAwABAAAAAQAAABUBAwABAAAAAQAAABYBAwABAAAAJQAAABcBBAA+AAAA8BAAABoBBQABAAAA6BEAABsBBQABAAAA8BEAABwBAwABAAAAAQAAAB0BAgAHAAAA+BEAACgBAwABAAAAAgAAACkBAwACAAAAAQABAAAAAAAIAAAAUgIAAFoCAABiAgAAagIAAIQCAAD0AgAAwwMAAP0DAAAXBAAAHwQAACcEAAA3BAAAFAUAACkFAAA4BQAAQAUAAFcFAAD8BQAABAYAABUGAAAdBgAAJQYAAJIHAACaBwAAqgcAALIHAADKBwAAoQoAAKkKAAC4CgAA3goAACcLAAAvCwAANwsAAD8LAABHCwAATwsAAFcLAABfCwAAZwsAAG8LAAB3CwAAfwsAAIcLAACPCwAAlwsAAJ8LAACvCwAAzwsAAAoNAACFDgAA1g4AAN4OAADmDgAA7g4AAPYOAAD+DgAABg8AAA4PAAAWDwAAHg8AAEoCAAAIAAAACAAAAAgAAAAaAAAAcAAAAM8AAAA6AAAAGgAAAAgAAAAIAAAAEAAAAN0AAAAVAAAADwAAAAgAAAAXAAAApQAAAAgAAAARAAAACAAAAAgAAABtAQAACAAAABAAAAAIAAAAGAAAANcCAAAIAAAADwAAACYAAABJAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAEAAAACAAAAA7AQAAewEAAFEAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAAAACAGQAAIAAAAIAYAAAgAFBhZ2UgMQA=20200313154000".getBytes(); + + source.setData(data); + Transformer transformer = engine.getTransformer(); + transformer.transform("TRANSFORM_SAD_BFF71K44RRSAD_REQ", target, new Message[] { source }); + System.out.println(target); + System.out.println("result=" + (String)target.getData()); + } + public void atestTransformFlatToXml2() throws Exception { + System.out.println("testTransformFlatToXml =============================================================="); + Message source = MessageFactory.getFactory().getMessage("KMB_EMC0210501100R01_RES1"); + byte[] data = "0243HDRIDV0040210501110C000011202004091625400006957 004IDV000695702018204271559512�̼��� 201604091801081298510000000000049840T002075 08700 ".getBytes(); + source.setData(data); + System.out.println(source); + System.out.println("-----------------------------------------------------------------"); + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_KMB_EMC0210501100KMB_RES", new Message[] { source }); + System.out.println(target); + System.out.println("result=" + (String)target.getData()); + } + public void testTransformVFlatToJson() throws Exception { + System.out.println("testTransformFlatToJson =============================================================="); + Message source = MessageFactory.getFactory().getMessage("TST_VFIELD_REQ"); + Message target = MessageFactory.getFactory().getMessage("TST_UJSONVFIELD_REQ"); + + byte[] data = "0010ABCDEFGHIJ0011A0123456789".getBytes(); + + source.setData(data); + System.out.println(source); + Transformer transformer = engine.getTransformer(); + transformer.transform("TRANSFORM_TST_VFIELD2UJSON_REQ", target, new Message[] { source }); + System.out.println(target); + System.out.println("result=" + (String)target.getData()); + } + public void testTransformUJsonToVField() throws Exception { + System.out.println("testTransformFlatToJson =============================================================="); + Message source = MessageFactory.getFactory().getMessage("TST_UJSONVFIELD_REQ"); + Message target = MessageFactory.getFactory().getMessage("TST_VFIELD_REQ"); + + String data = "{\"TST_UJSONVFIELD_REQ\" : { \"reqCount1\":\"0010\",\"reqMsgP1\":\"ABCDEFGHIJ\",\"reqCount2\":\"0011\",\"reqMsgP2\":\"A1234567890\"}}"; + + source.setData(data); + System.out.println(source); + Transformer transformer = engine.getTransformer(); + transformer.transform("TRANSFORM_TST_UJSON2VFIELD_REQ", target, new Message[] { source }); + System.out.println(target); + System.out.println("result=" + new String((byte[])target.getData())); + } + public void testTransformVFlatToJson2() throws Exception { + System.out.println("testTransformFlatToJson =============================================================="); + Message source = MessageFactory.getFactory().getMessage("XYZ_OTST0000000X_REQ"); + String d = StringUtils.leftPad("", 159); + d = d + "00010ABCDEFGHIJ"; + byte[] data = d.getBytes(); + + source.setData(data); + System.out.println(source); + } + + + +} diff --git a/src/test/java/com/eactive/eai/transformer/ParserTest.java b/src/test/java/com/eactive/eai/transformer/ParserTest.java new file mode 100644 index 0000000..d2639b0 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/ParserTest.java @@ -0,0 +1,35 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.transformer.engine.Parser; + +public class ParserTest { + + private static void testConcat(String word1, String word2) throws Exception { + String exp = null; +// word1 + " " + word2 = Hello999999 JEXL999999 631ms +// exp = "word1 + \" \" + word2"; +// concat(word1, word2) = JEXL999999Hello999999 524ms + exp = "concat(word1, word2)"; + Parser parser = new Parser(); + parser.getJep().addFunction("concat", new ConcatFunction()); + parser.parse(exp); + Object result = null; + long t = System.currentTimeMillis(); + for(int i=0; i< 1000000; i++) { + parser.addVariable("word1", word1+i); + parser.addVariable("word2", word2+i); + result = parser.getValueAsObject(); + } + System.out.println(String.format("%s = %s", exp,result) + " " + (System.currentTimeMillis() - t) + "ms"); + + } + + public static void main(String[] args) { + try { + testConcat("Hello", "JEXL"); + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformAddPointTest.java b/src/test/java/com/eactive/eai/transformer/TransformAddPointTest.java new file mode 100644 index 0000000..e56978a --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformAddPointTest.java @@ -0,0 +1,69 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.util.IConv; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformAddPointTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformAddPointTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformAddPointTest.class); + } + + public void setUp() throws Exception { + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testEbcdicToUJson() throws Exception { + System.out.println("Ebcdic TO Json =============================================================="); + //logger.debug("Transform08900001Test | testTransform()"); + + String data =""; + data = "100000007000000000000001957520400000000000000279600000000000010000001072800000000000000000000000000000100000007000000000000000000000000000000000000028000000000000000224784120000000000000000000000000000003211100056980000000398897920000010728000000000000000000000000000 0000000000000000000000"; + byte[] d = IConv.asciiToEBCDIC(data); + System.out.println(new String(d)); + Message source = MessageFactory.getFactory().getMessage("KFK_KFK128B040_RES1"); + source.setData(d); + + System.out.println("source="+source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_BFE_KFK128B040BFE_RES", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println(target.getData()); + + } + + + + + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformAggTest.java b/src/test/java/com/eactive/eai/transformer/TransformAggTest.java new file mode 100644 index 0000000..dc37751 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformAggTest.java @@ -0,0 +1,119 @@ +package com.eactive.eai.transformer; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformAggTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + private static boolean RUN_TRANSFORM = true; + + public TransformAggTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformAggTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public static String inputStreamToString(InputStream inputStream) throws IOException { + ByteArrayOutputStream result = new ByteArrayOutputStream(); + byte[] buffer = new byte[4096]; + int length; + while ((length = inputStream.read(buffer)) != -1) { + result.write(buffer, 0, length); + } + return result.toString("UTF-8"); + } + + public void testTransformXMLtoFlat() throws Exception { + System.out.println("\n\n<<================================== testTransformXMLtoFlat ==================================>> \n"); + + String reqXML = ""; + try (InputStream is = TransformAggTest.class + .getResourceAsStream("com/eactive/eai/transformer/TransformAggTest.xml")) { + reqXML = inputStreamToString(is); + } + + System.out.println(String.format("\nSOURCE XML Size : %,d K (%,d)", reqXML.length() / 1024, reqXML.length()) ); + MessageFactory mf = MessageFactory.getFactory(); + + long c = System.currentTimeMillis(); + long t = 0; + long init = c; + + Message source = null; + +// source = mf.getMessage("PAK_MDS0002427_P02R"); +// t = System.currentTimeMillis(); +// System.out.println("getMessage source EXECUTE0 TIME(ms) : " + (t -c)); +// c = t; +// init = c; + + source = mf.getMessage("PAK_MDS0002427_P02R"); + t = System.currentTimeMillis(); + System.out.println("getMessage source EXECUTE0 TIME(ms) : " + (t -c)); + c = t; + + Message target = mf.getMessage("APM_CBSER0001910_CBSR"); + + t = System.currentTimeMillis(); + System.out.println("getMessage target EXECUTE1 TIME(ms) : " + (t -c)); + c = t; + source.setData(reqXML); + t = System.currentTimeMillis(); + System.out.println("setData source EXECUTE2 TIME(ms) : " + (t -c)); + c = t; + +// System.out.println("\nSOURCE : \n" + source); +// System.out.println("TARGET : \n" + target); +// System.out.println(target.toLogString()); + +// System.out.println("\nTransform Start : \n"); + + Transformer transformer = engine.getTransformer(); + transformer.transform("TRANSFORM_APM_CBSER0001909S1_RES", target, new Message[] { source }); + t = System.currentTimeMillis(); + System.out.println("transform EXECUTE3 TIME(ms) : " + (t -c)); + c = t; +// System.out.println("\nSOURCE : \n" + source); +// System.out.println("TRANSFORM : \n" + TransformManager.getManager().getTransform("TRANSFORM_APM_CBSER0001909S1_RES")); +// System.out.println("TARGET : \n" + target); + byte[] result = (byte[])target.getData(); + String res = new String(result); +// System.out.println("target bytes ["+res+"]"); + t = System.currentTimeMillis(); + System.out.println("getData source EXECUTE2 TIME(ms) : " + (t -c)); + c = t; + System.out.println(String.format("TOTAL EXECUTE TIME(ms) : %,d", (c - init)) ); + } +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformBigSizeTest.java b/src/test/java/com/eactive/eai/transformer/TransformBigSizeTest.java new file mode 100644 index 0000000..f247038 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformBigSizeTest.java @@ -0,0 +1,127 @@ +package com.eactive.eai.transformer; + +import org.apache.commons.lang3.time.StopWatch; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.util.IConv; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformBigSizeTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformBigSizeTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformBigSizeTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + + + public void testEbcdic2AscTransform() throws Exception { + System.out.println("=============================================================="); + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + //String data = "JIE$00002257820190806KC093082FW30120190806085651000006007R199991231001010DAE701JI8BKC0U1M1 KC0KJI04R5040 GCB03254M00KIATEST000040000B56521802 D01000KC093082FW301201908060856510000060051879308 07010001KOR2FWMT000929900000000000001100012019080608565218100000 00 00 100000000 00 0199990121000020190806085652803183 N0000000 0GCB0325401 0B5652180000 ETD04R5040ETD 1264KJI04R5040V0JICOUT0002KJI99COUT02 KJI99COUT03 거래 일시 :2019.08.06 08:56:52 거래 코드 : KJI04R5040 단말/거래번호:2FW - 006 거래 부점 : 9308 - 정보개발부_카드 사용자 정보 :MT00092 - 강준성 정보 보안 :D -정보제공 제한사항 없음 001 001국민 정보개발부 1588-9523 강준성 +000000000000000+000000000000000+000000000000000+000000000000000+000000000000000+000000000000000 000000000000000000 ?KJI04R5040V9JI4R500001KJI04R50000 0070000071133340000000000000000000000000000000000020190806KC093082FW30120190806085651000006002 0210 GCA0856529144GCAAPPLPGM GCB032540120190806085652000KJI04R5040JI8BKJIAJI4R50 20190806085652N00000001 000 00 GCB0325401 20190806 201908060000200051MMK000151550000000000008000000000007000000000000000000000000000000000000000000000104MM미얀마 0차트 KYAT 082103000008000USD000000100000000012153000000010000012036000012270000011940400012365600012298800840US미국 0달러 DOLLAR 082103012118000GBP000000121520000014768300000012152014620700014915900014474500015062100014945500826GB영국 0파운드 POUND 082103014727600DEM000000000000000000000000000000000000000000000000000000000000000000000000000000280DE독일 0마르크 MARK 082103000000000CAD000000132080000009201200000007571009109200009293200009018100009384300009311600124CA캐나다 0달러 DOLLAR 082103009174000FRF000000000000000000000000000000000000000000000000000000000000000000000000000000250FR프랑스 0프랑 FRANC 082103000000000ITL000000000000000000000000000000000000000000000000000000000000000000000000000000380IT이탈리아 1리라 LIRA 082103000000000CHF000000097170000012506900000010291012381900012631900012258100012755700012656900756CH스위스 0프랑 FRANC 082103012467700HKD000000784410000001549300000001275001533900001564700001518500001580100001567800344HK홍콩 0달러 DOLLAR 082103001544800SEK000000957960000001268600000001044001256000001281200001236900001300300001283800752SE스웨덴 0크로네 KRONA 082103001264800AUD000000067640000008220300000006764008138100008302500008056800008383800008318900036AU호주 0달러 DOLLAR 082103008200300DKK000000664310000001829400000001505001811200001847600001783700001875100001851300208DK덴마크 0크로네 KRONE 082103001823600BEF000000000000000000000000000000000000000000000000000000000000000000000000000000056BE벨기에 0프랑 FRANC 082103000000000ATS000000000000000000000000000000000000000000000000000000000000000000000000000000040AT오스트리아 0실링 SCHILLING 082103000000000NOK000000891670000001362900000001121001349300001376500001328900001396900001379200578NO노르웨이 0크로네 KRONE 082103001358900NLG000000000000000000000000000000000000000000000000000000000000000000000000000000528NL네덜란드 0길더 GUILDER 082103000000000JPY000010568000000011499800000009463011388300011611300011298600011701000011637700392JP일본 1엔 YEN 082103011468300SAR000000375120000003239800000002666003207500003272100003013100003401700003278600682SA사우디아라비아 0리얄 RIYAL 082103003230400KWD000000030410000039963800000032884039564200040363400036766700042361600040443300414KW쿠웨이트 0디나르 DINAR 082103039842200AED000000367310000003308600000002722003275600003341600003077000003474000003348300784AE아랍에미레이트 0디르함 DIRHAM 082103003299100BHD000000037690000032244600000026532031922200032567000029665100034179200032631500048BH바레인 0디나르 DINAR 082103032143200SGD000000138530000008772800000007219008685100008860500008597400008948200008878000702SG싱가폴 0달러 DOLLAR 082103008747900MYR000000417850000002908500000002393002879500002937500002675900003083000002943400458MY말레이시아 0링깃 RINGGIT 082103002900100ESP000000000000000000000000000000000000000000000000000000000000000000000000000000724ES스페인 1페세타 PESETA 082103000000000FIM000000000000000000000000000000000000000000000000000000000000000000000000000000246FI핀란드 0마르카/페니 MARKKA 082103000000000NZD000000065660000007979700000006566007900000008059400007821000008138400008075400554NZ뉴질랜드 0달러 DOLLAR 082103007961500CNY000000712520000001705600000001403001688600001722600001620400001807900001807900156CN중국 0위안 YUAN 082103001715200THB000003083000000000394200000000324000390300000398100000366700000417600000398900764TH태국 0바트 BAHT 082103000393100IDR001425500000000000085300000000070000084500000086100000076000000092100000086300360ID인도네시아 1루피아 RUPIAH 082103000085000EUR000000112340000013652700000011234013516200013789200013382400013923000013816500978EU유럽연합 0유로 EURO 082103013610900BDT000008443000000000143900000000118000143900000143900000132400000155400000143900050BD방글라데시 0타카 TAKA 082103000143500PHP000005178000000000234700000000193000232400000237000000218300000258100000234700608PH필리핀 0페소 PESO 082103000232000INR000007049500000000172400000000142000170700000174100000156900000187900000172400356IN인도 0루피 RUPEE 082103000171100VND002326900000000000052200000000043000052200000052200000046000000058400000052200704VN베트남 1동 DONG 082103000052100RUB000006575610000000184800000000152000183000000186600000162700000199500000184800643RU러시아 0루블 RUBLE 082103000184300ZAR000001495600000000812600000000669000812600000812600000747600000877600000812600710ZA남아프리카공화국 0랜드 RAND 082103000809900HUF000029105000000000041800000000034000041800000041800000038500000045100000041800348HU헝가리 0포린트 FORINT 082103000041600PLN000000384730000003158800000002599003127300003190300002937700003411500003158800985PL폴란드 0즐로티 ZLOTY 082103003149900PKR000016025000000000075800000000062000075800000075800000069800000081800000075800586PK파키스탄 0루피 RUPEE 082103000075600EGP000001656000000000733900000000604000733900000733900000682600000792600000733900818EG이집트 0파운드 POUND 082103000731800MXN000001969250000000617100000000508000617100000617100000567800000666400000617100484MX멕시코 0루에보페소 NOUVEAO PESO 082103000614900BRL000000397460000003057700000002516003057700003057700002813100003302300003057700986BR브라질 0리얄 REAL 082103003048900BND000000138530000008772800000007219008772800008772800008246500009123700008772800096BN브루나이 0달러 DOLLAR 082103008747900TWD000003162300000000384300000000316000384300000384300000357400000415000000384300901TW대만 0달러 DOLLAR 082103000381800ILS000000348830000003483900000002867003483900003483900003205200003762600003483900376IL이스라엘 0세켈 SHEKEL 082103003473900JOD000000070900000017141000000014104017141000017141000015769800017826600017141000400JO요르단 0디나르 DINAR 082103017091700KZT000038667500000000031400000000026000031100000031700000027700000035100000031400398KZ카자흐스탄 0텡게 TENGE 082103000031300TRY000000558950000002174300000001789002152600002196000002000400002348200002174300949TR터키 0리라 LIRA 082103002168700CZK000002297100000000529100000000435000523900000534300000481500000566100000529100203CZ체코 0코루나 KORUNA 082103000527400MNT000266750000000000004600000000004000004600000004600000004600000004600000004600496MN몽골 0터그럭 TUGRIK 082103000004500QAR000000364070000003338100000002747003338100003338100003338100003338100003338100634QA카타르 0리얄 RIAL 082103003328400 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 ZZ"; + String data = "KJI04R5040V9JI4R500001KJI04R50000 0070000071133340000000000000000000000000000000000020190806KC093082FW30120190806085651000006002 0210 GCA0856529144GCAAPPLPGM GCB032540120190806085652000KJI04R5040JI8BKJIAJI4R50 20190806085652N00000001 000 00 GCB0325401 20190806 201908060000200051MMK000151550000000000008000000000007000000000000000000000000000000000000000000000104MM미얀마 0차트 KYAT 082103000008000USD000000100000000012153000000010000012036000012270000011940400012365600012298800840US미국 0달러 DOLLAR 082103012118000GBP000000121520000014768300000012152014620700014915900014474500015062100014945500826GB영국 0파운드 POUND 082103014727600DEM000000000000000000000000000000000000000000000000000000000000000000000000000000280DE독일 0마르크 MARK 082103000000000CAD000000132080000009201200000007571009109200009293200009018100009384300009311600124CA캐나다 0달러 DOLLAR 082103009174000FRF000000000000000000000000000000000000000000000000000000000000000000000000000000250FR프랑스 0프랑 FRANC 082103000000000ITL000000000000000000000000000000000000000000000000000000000000000000000000000000380IT이탈리아 1리라 LIRA 082103000000000CHF000000097170000012506900000010291012381900012631900012258100012755700012656900756CH스위스 0프랑 FRANC 082103012467700HKD000000784410000001549300000001275001533900001564700001518500001580100001567800344HK홍콩 0달러 DOLLAR 082103001544800SEK000000957960000001268600000001044001256000001281200001236900001300300001283800752SE스웨덴 0크로네 KRONA 082103001264800AUD000000067640000008220300000006764008138100008302500008056800008383800008318900036AU호주 0달러 DOLLAR 082103008200300DKK000000664310000001829400000001505001811200001847600001783700001875100001851300208DK덴마크 0크로네 KRONE 082103001823600BEF000000000000000000000000000000000000000000000000000000000000000000000000000000056BE벨기에 0프랑 FRANC 082103000000000ATS000000000000000000000000000000000000000000000000000000000000000000000000000000040AT오스트리아 0실링 SCHILLING 082103000000000NOK000000891670000001362900000001121001349300001376500001328900001396900001379200578NO노르웨이 0크로네 KRONE 082103001358900NLG000000000000000000000000000000000000000000000000000000000000000000000000000000528NL네덜란드 0길더 GUILDER 082103000000000JPY000010568000000011499800000009463011388300011611300011298600011701000011637700392JP일본 1엔 YEN 082103011468300SAR000000375120000003239800000002666003207500003272100003013100003401700003278600682SA사우디아라비아 0리얄 RIYAL 082103003230400KWD000000030410000039963800000032884039564200040363400036766700042361600040443300414KW쿠웨이트 0디나르 DINAR 082103039842200AED000000367310000003308600000002722003275600003341600003077000003474000003348300784AE아랍에미레이트 0디르함 DIRHAM 082103003299100BHD000000037690000032244600000026532031922200032567000029665100034179200032631500048BH바레인 0디나르 DINAR 082103032143200SGD000000138530000008772800000007219008685100008860500008597400008948200008878000702SG싱가폴 0달러 DOLLAR 082103008747900MYR000000417850000002908500000002393002879500002937500002675900003083000002943400458MY말레이시아 0링깃 RINGGIT 082103002900100ESP000000000000000000000000000000000000000000000000000000000000000000000000000000724ES스페인 1페세타 PESETA 082103000000000FIM000000000000000000000000000000000000000000000000000000000000000000000000000000246FI핀란드 0마르카/페니 MARKKA 082103000000000NZD000000065660000007979700000006566007900000008059400007821000008138400008075400554NZ뉴질랜드 0달러 DOLLAR 082103007961500CNY000000712520000001705600000001403001688600001722600001620400001807900001807900156CN중국 0위안 YUAN 082103001715200THB000003083000000000394200000000324000390300000398100000366700000417600000398900764TH태국 0바트 BAHT 082103000393100IDR001425500000000000085300000000070000084500000086100000076000000092100000086300360ID인도네시아 1루피아 RUPIAH 082103000085000EUR000000112340000013652700000011234013516200013789200013382400013923000013816500978EU유럽연합 0유로 EURO 082103013610900BDT000008443000000000143900000000118000143900000143900000132400000155400000143900050BD방글라데시 0타카 TAKA 082103000143500PHP000005178000000000234700000000193000232400000237000000218300000258100000234700608PH필리핀 0페소 PESO 082103000232000INR000007049500000000172400000000142000170700000174100000156900000187900000172400356IN인도 0루피 RUPEE 082103000171100VND002326900000000000052200000000043000052200000052200000046000000058400000052200704VN베트남 1동 DONG 082103000052100RUB000006575610000000184800000000152000183000000186600000162700000199500000184800643RU러시아 0루블 RUBLE 082103000184300ZAR000001495600000000812600000000669000812600000812600000747600000877600000812600710ZA남아프리카공화국 0랜드 RAND 082103000809900HUF000029105000000000041800000000034000041800000041800000038500000045100000041800348HU헝가리 0포린트 FORINT 082103000041600PLN000000384730000003158800000002599003127300003190300002937700003411500003158800985PL폴란드 0즐로티 ZLOTY 082103003149900PKR000016025000000000075800000000062000075800000075800000069800000081800000075800586PK파키스탄 0루피 RUPEE 082103000075600EGP000001656000000000733900000000604000733900000733900000682600000792600000733900818EG이집트 0파운드 POUND 082103000731800MXN000001969250000000617100000000508000617100000617100000567800000666400000617100484MX멕시코 0루에보페소 NOUVEAO PESO 082103000614900BRL000000397460000003057700000002516003057700003057700002813100003302300003057700986BR브라질 0리얄 REAL 082103003048900BND000000138530000008772800000007219008772800008772800008246500009123700008772800096BN브루나이 0달러 DOLLAR 082103008747900TWD000003162300000000384300000000316000384300000384300000357400000415000000384300901TW대만 0달러 DOLLAR 082103000381800ILS000000348830000003483900000002867003483900003483900003205200003762600003483900376IL이스라엘 0세켈 SHEKEL 082103003473900JOD000000070900000017141000000014104017141000017141000015769800017826600017141000400JO요르단 0디나르 DINAR 082103017091700KZT000038667500000000031400000000026000031100000031700000027700000035100000031400398KZ카자흐스탄 0텡게 TENGE 082103000031300TRY000000558950000002174300000001789002152600002196000002000400002348200002174300949TR터키 0리라 LIRA 082103002168700CZK000002297100000000529100000000435000523900000534300000481500000566100000529100203CZ체코 0코루나 KORUNA 082103000527400MNT000266750000000000004600000000004000004600000004600000004600000004600000004600496MN몽골 0터그럭 TUGRIK 082103000004500QAR000000364070000003338100000002747003338100003338100003338100003338100003338100634QA카타르 0리얄 RIAL 082103003328400 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 "; + byte[] ebcdic = IConv.asciiToEBCDIC(data); + byte[] data2 = new byte[20612]; + System.arraycopy(ebcdic, 0, data2, 0, 20612); + //System.out.println("string.length="+data.getBytes().length); + //System.out.println("ebcdic.length="+ebcdic.length); + + Message source = MessageFactory.getFactory().getMessage("KJI_ETD04R5040ETD_RES1"); + source.setData(data2); + //System.out.println(source); + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_KJI_ETD04R5040ETD_RES", new Message[] { source }); + System.out.println("[" + new String((byte[]) target.getData()) + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + + } + public void testEbcdic2AscTransform2() throws Exception { + System.out.println("=============================================================="); + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + //String data = "JIE$00002257820190806KC093082FW30120190806085651000006007R199991231001010DAE701JI8BKC0U1M1 KC0KJI04R5040 GCB03254M00KIATEST000040000B56521802 D01000KC093082FW301201908060856510000060051879308 07010001KOR2FWMT000929900000000000001100012019080608565218100000 00 00 100000000 00 0199990121000020190806085652803183 N0000000 0GCB0325401 0B5652180000 ETD04R5040ETD 1264KJI04R5040V0JICOUT0002KJI99COUT02 KJI99COUT03 거래 일시 :2019.08.06 08:56:52 거래 코드 : KJI04R5040 단말/거래번호:2FW - 006 거래 부점 : 9308 - 정보개발부_카드 사용자 정보 :MT00092 - 강준성 정보 보안 :D -정보제공 제한사항 없음 001 001국민 정보개발부 1588-9523 강준성 +000000000000000+000000000000000+000000000000000+000000000000000+000000000000000+000000000000000 000000000000000000 ?KJI04R5040V9JI4R500001KJI04R50000 0070000071133340000000000000000000000000000000000020190806KC093082FW30120190806085651000006002 0210 GCA0856529144GCAAPPLPGM GCB032540120190806085652000KJI04R5040JI8BKJIAJI4R50 20190806085652N00000001 000 00 GCB0325401 20190806 201908060000200051MMK000151550000000000008000000000007000000000000000000000000000000000000000000000104MM미얀마 0차트 KYAT 082103000008000USD000000100000000012153000000010000012036000012270000011940400012365600012298800840US미국 0달러 DOLLAR 082103012118000GBP000000121520000014768300000012152014620700014915900014474500015062100014945500826GB영국 0파운드 POUND 082103014727600DEM000000000000000000000000000000000000000000000000000000000000000000000000000000280DE독일 0마르크 MARK 082103000000000CAD000000132080000009201200000007571009109200009293200009018100009384300009311600124CA캐나다 0달러 DOLLAR 082103009174000FRF000000000000000000000000000000000000000000000000000000000000000000000000000000250FR프랑스 0프랑 FRANC 082103000000000ITL000000000000000000000000000000000000000000000000000000000000000000000000000000380IT이탈리아 1리라 LIRA 082103000000000CHF000000097170000012506900000010291012381900012631900012258100012755700012656900756CH스위스 0프랑 FRANC 082103012467700HKD000000784410000001549300000001275001533900001564700001518500001580100001567800344HK홍콩 0달러 DOLLAR 082103001544800SEK000000957960000001268600000001044001256000001281200001236900001300300001283800752SE스웨덴 0크로네 KRONA 082103001264800AUD000000067640000008220300000006764008138100008302500008056800008383800008318900036AU호주 0달러 DOLLAR 082103008200300DKK000000664310000001829400000001505001811200001847600001783700001875100001851300208DK덴마크 0크로네 KRONE 082103001823600BEF000000000000000000000000000000000000000000000000000000000000000000000000000000056BE벨기에 0프랑 FRANC 082103000000000ATS000000000000000000000000000000000000000000000000000000000000000000000000000000040AT오스트리아 0실링 SCHILLING 082103000000000NOK000000891670000001362900000001121001349300001376500001328900001396900001379200578NO노르웨이 0크로네 KRONE 082103001358900NLG000000000000000000000000000000000000000000000000000000000000000000000000000000528NL네덜란드 0길더 GUILDER 082103000000000JPY000010568000000011499800000009463011388300011611300011298600011701000011637700392JP일본 1엔 YEN 082103011468300SAR000000375120000003239800000002666003207500003272100003013100003401700003278600682SA사우디아라비아 0리얄 RIYAL 082103003230400KWD000000030410000039963800000032884039564200040363400036766700042361600040443300414KW쿠웨이트 0디나르 DINAR 082103039842200AED000000367310000003308600000002722003275600003341600003077000003474000003348300784AE아랍에미레이트 0디르함 DIRHAM 082103003299100BHD000000037690000032244600000026532031922200032567000029665100034179200032631500048BH바레인 0디나르 DINAR 082103032143200SGD000000138530000008772800000007219008685100008860500008597400008948200008878000702SG싱가폴 0달러 DOLLAR 082103008747900MYR000000417850000002908500000002393002879500002937500002675900003083000002943400458MY말레이시아 0링깃 RINGGIT 082103002900100ESP000000000000000000000000000000000000000000000000000000000000000000000000000000724ES스페인 1페세타 PESETA 082103000000000FIM000000000000000000000000000000000000000000000000000000000000000000000000000000246FI핀란드 0마르카/페니 MARKKA 082103000000000NZD000000065660000007979700000006566007900000008059400007821000008138400008075400554NZ뉴질랜드 0달러 DOLLAR 082103007961500CNY000000712520000001705600000001403001688600001722600001620400001807900001807900156CN중국 0위안 YUAN 082103001715200THB000003083000000000394200000000324000390300000398100000366700000417600000398900764TH태국 0바트 BAHT 082103000393100IDR001425500000000000085300000000070000084500000086100000076000000092100000086300360ID인도네시아 1루피아 RUPIAH 082103000085000EUR000000112340000013652700000011234013516200013789200013382400013923000013816500978EU유럽연합 0유로 EURO 082103013610900BDT000008443000000000143900000000118000143900000143900000132400000155400000143900050BD방글라데시 0타카 TAKA 082103000143500PHP000005178000000000234700000000193000232400000237000000218300000258100000234700608PH필리핀 0페소 PESO 082103000232000INR000007049500000000172400000000142000170700000174100000156900000187900000172400356IN인도 0루피 RUPEE 082103000171100VND002326900000000000052200000000043000052200000052200000046000000058400000052200704VN베트남 1동 DONG 082103000052100RUB000006575610000000184800000000152000183000000186600000162700000199500000184800643RU러시아 0루블 RUBLE 082103000184300ZAR000001495600000000812600000000669000812600000812600000747600000877600000812600710ZA남아프리카공화국 0랜드 RAND 082103000809900HUF000029105000000000041800000000034000041800000041800000038500000045100000041800348HU헝가리 0포린트 FORINT 082103000041600PLN000000384730000003158800000002599003127300003190300002937700003411500003158800985PL폴란드 0즐로티 ZLOTY 082103003149900PKR000016025000000000075800000000062000075800000075800000069800000081800000075800586PK파키스탄 0루피 RUPEE 082103000075600EGP000001656000000000733900000000604000733900000733900000682600000792600000733900818EG이집트 0파운드 POUND 082103000731800MXN000001969250000000617100000000508000617100000617100000567800000666400000617100484MX멕시코 0루에보페소 NOUVEAO PESO 082103000614900BRL000000397460000003057700000002516003057700003057700002813100003302300003057700986BR브라질 0리얄 REAL 082103003048900BND000000138530000008772800000007219008772800008772800008246500009123700008772800096BN브루나이 0달러 DOLLAR 082103008747900TWD000003162300000000384300000000316000384300000384300000357400000415000000384300901TW대만 0달러 DOLLAR 082103000381800ILS000000348830000003483900000002867003483900003483900003205200003762600003483900376IL이스라엘 0세켈 SHEKEL 082103003473900JOD000000070900000017141000000014104017141000017141000015769800017826600017141000400JO요르단 0디나르 DINAR 082103017091700KZT000038667500000000031400000000026000031100000031700000027700000035100000031400398KZ카자흐스탄 0텡게 TENGE 082103000031300TRY000000558950000002174300000001789002152600002196000002000400002348200002174300949TR터키 0리라 LIRA 082103002168700CZK000002297100000000529100000000435000523900000534300000481500000566100000529100203CZ체코 0코루나 KORUNA 082103000527400MNT000266750000000000004600000000004000004600000004600000004600000004600000004600496MN몽골 0터그럭 TUGRIK 082103000004500QAR000000364070000003338100000002747003338100003338100003338100003338100003338100634QA카타르 0리얄 RIAL 082103003328400 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 ZZ"; + String data = "ABC04R5040V9JI4R500001KJI04R50000 0070000071133340000000000000000000000000000000000020190806KC093082FW30120190806085651000006002 0210 GCA0856529144GCAAPPLPGM GCB032540120190806085652000KJI04R5040JI8BKJIAJI4R50 20190806085652N00000001 000 00 GCB0325401 20190806 201908060000200051MMK000151550000000000008000000000007000000000000000000000000000000000000000000000104MM미얀마 0차트 KYAT 082103000008000USD000000100000000012153000000010000012036000012270000011940400012365600012298800840US미국 0달러 DOLLAR 082103012118000GBP000000121520000014768300000012152014620700014915900014474500015062100014945500826GB영국 0파운드 POUND 082103014727600DEM000000000000000000000000000000000000000000000000000000000000000000000000000000280DE독일 0마르크 MARK 082103000000000CAD000000132080000009201200000007571009109200009293200009018100009384300009311600124CA캐나다 0달러 DOLLAR 082103009174000FRF000000000000000000000000000000000000000000000000000000000000000000000000000000250FR프랑스 0프랑 FRANC 082103000000000ITL000000000000000000000000000000000000000000000000000000000000000000000000000000380IT이탈리아 1리라 LIRA 082103000000000CHF000000097170000012506900000010291012381900012631900012258100012755700012656900756CH스위스 0프랑 FRANC 082103012467700HKD000000784410000001549300000001275001533900001564700001518500001580100001567800344HK홍콩 0달러 DOLLAR 082103001544800SEK000000957960000001268600000001044001256000001281200001236900001300300001283800752SE스웨덴 0크로네 KRONA 082103001264800AUD000000067640000008220300000006764008138100008302500008056800008383800008318900036AU호주 0달러 DOLLAR 082103008200300DKK000000664310000001829400000001505001811200001847600001783700001875100001851300208DK덴마크 0크로네 KRONE 082103001823600BEF000000000000000000000000000000000000000000000000000000000000000000000000000000056BE벨기에 0프랑 FRANC 082103000000000ATS000000000000000000000000000000000000000000000000000000000000000000000000000000040AT오스트리아 0실링 SCHILLING 082103000000000NOK000000891670000001362900000001121001349300001376500001328900001396900001379200578NO노르웨이 0크로네 KRONE 082103001358900NLG000000000000000000000000000000000000000000000000000000000000000000000000000000528NL네덜란드 0길더 GUILDER 082103000000000JPY000010568000000011499800000009463011388300011611300011298600011701000011637700392JP일본 1엔 YEN 082103011468300SAR000000375120000003239800000002666003207500003272100003013100003401700003278600682SA사우디아라비아 0리얄 RIYAL 082103003230400KWD000000030410000039963800000032884039564200040363400036766700042361600040443300414KW쿠웨이트 0디나르 DINAR 082103039842200AED000000367310000003308600000002722003275600003341600003077000003474000003348300784AE아랍에미레이트 0디르함 DIRHAM 082103003299100BHD000000037690000032244600000026532031922200032567000029665100034179200032631500048BH바레인 0디나르 DINAR 082103032143200SGD000000138530000008772800000007219008685100008860500008597400008948200008878000702SG싱가폴 0달러 DOLLAR 082103008747900MYR000000417850000002908500000002393002879500002937500002675900003083000002943400458MY말레이시아 0링깃 RINGGIT 082103002900100ESP000000000000000000000000000000000000000000000000000000000000000000000000000000724ES스페인 1페세타 PESETA 082103000000000FIM000000000000000000000000000000000000000000000000000000000000000000000000000000246FI핀란드 0마르카/페니 MARKKA 082103000000000NZD000000065660000007979700000006566007900000008059400007821000008138400008075400554NZ뉴질랜드 0달러 DOLLAR 082103007961500CNY000000712520000001705600000001403001688600001722600001620400001807900001807900156CN중국 0위안 YUAN 082103001715200THB000003083000000000394200000000324000390300000398100000366700000417600000398900764TH태국 0바트 BAHT 082103000393100IDR001425500000000000085300000000070000084500000086100000076000000092100000086300360ID인도네시아 1루피아 RUPIAH 082103000085000EUR000000112340000013652700000011234013516200013789200013382400013923000013816500978EU유럽연합 0유로 EURO 082103013610900BDT000008443000000000143900000000118000143900000143900000132400000155400000143900050BD방글라데시 0타카 TAKA 082103000143500PHP000005178000000000234700000000193000232400000237000000218300000258100000234700608PH필리핀 0페소 PESO 082103000232000INR000007049500000000172400000000142000170700000174100000156900000187900000172400356IN인도 0루피 RUPEE 082103000171100VND002326900000000000052200000000043000052200000052200000046000000058400000052200704VN베트남 1동 DONG 082103000052100RUB000006575610000000184800000000152000183000000186600000162700000199500000184800643RU러시아 0루블 RUBLE 082103000184300ZAR000001495600000000812600000000669000812600000812600000747600000877600000812600710ZA남아프리카공화국 0랜드 RAND 082103000809900HUF000029105000000000041800000000034000041800000041800000038500000045100000041800348HU헝가리 0포린트 FORINT 082103000041600PLN000000384730000003158800000002599003127300003190300002937700003411500003158800985PL폴란드 0즐로티 ZLOTY 082103003149900PKR000016025000000000075800000000062000075800000075800000069800000081800000075800586PK파키스탄 0루피 RUPEE 082103000075600EGP000001656000000000733900000000604000733900000733900000682600000792600000733900818EG이집트 0파운드 POUND 082103000731800MXN000001969250000000617100000000508000617100000617100000567800000666400000617100484MX멕시코 0루에보페소 NOUVEAO PESO 082103000614900BRL000000397460000003057700000002516003057700003057700002813100003302300003057700986BR브라질 0리얄 REAL 082103003048900BND000000138530000008772800000007219008772800008772800008246500009123700008772800096BN브루나이 0달러 DOLLAR 082103008747900TWD000003162300000000384300000000316000384300000384300000357400000415000000384300901TW대만 0달러 DOLLAR 082103000381800ILS000000348830000003483900000002867003483900003483900003205200003762600003483900376IL이스라엘 0세켈 SHEKEL 082103003473900JOD000000070900000017141000000014104017141000017141000015769800017826600017141000400JO요르단 0디나르 DINAR 082103017091700KZT000038667500000000031400000000026000031100000031700000027700000035100000031400398KZ카자흐스탄 0텡게 TENGE 082103000031300TRY000000558950000002174300000001789002152600002196000002000400002348200002174300949TR터키 0리라 LIRA 082103002168700CZK000002297100000000529100000000435000523900000534300000481500000566100000529100203CZ체코 0코루나 KORUNA 082103000527400MNT000266750000000000004600000000004000004600000004600000004600000004600000004600496MN몽골 0터그럭 TUGRIK 082103000004500QAR000000364070000003338100000002747003338100003338100003338100003338100003338100634QA카타르 0리얄 RIAL 082103003328400 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2"; + byte[] ebcdic = IConv.asciiToEBCDIC(data); + byte[] data2 = new byte[20612]; + System.arraycopy(ebcdic, 0, data2, 0, 20612); + //System.out.println("string.length="+data.getBytes().length); + //System.out.println("ebcdic.length="+ebcdic.length); + + Message source = MessageFactory.getFactory().getMessage("KJI_ETD04R5040ETD_RES1"); + source.setData(data2); + //System.out.println(source); + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_KJI_ETD04R5040ETD_RES", new Message[] { source }); + System.out.println("[" + new String((byte[]) target.getData()) + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } +// public void testEbcdic2AscTransform2() throws Exception { +// System.out.println("=============================================================="); +// +// // ---------------------------------------------------------------------- +// // source message 생성 +// // ---------------------------------------------------------------------- +// //String data = "JIE$00002257820190806KC093082FW30120190806085651000006007R199991231001010DAE701JI8BKC0U1M1 KC0KJI04R5040 GCB03254M00KIATEST000040000B56521802 D01000KC093082FW301201908060856510000060051879308 07010001KOR2FWMT000929900000000000001100012019080608565218100000 00 00 100000000 00 0199990121000020190806085652803183 N0000000 0GCB0325401 0B5652180000 ETD04R5040ETD 1264KJI04R5040V0JICOUT0002KJI99COUT02 KJI99COUT03 거래 일시 :2019.08.06 08:56:52 거래 코드 : KJI04R5040 단말/거래번호:2FW - 006 거래 부점 : 9308 - 정보개발부_카드 사용자 정보 :MT00092 - 강준성 정보 보안 :D -정보제공 제한사항 없음 001 001국민 정보개발부 1588-9523 강준성 +000000000000000+000000000000000+000000000000000+000000000000000+000000000000000+000000000000000 000000000000000000 ?KJI04R5040V9JI4R500001KJI04R50000 0070000071133340000000000000000000000000000000000020190806KC093082FW30120190806085651000006002 0210 GCA0856529144GCAAPPLPGM GCB032540120190806085652000KJI04R5040JI8BKJIAJI4R50 20190806085652N00000001 000 00 GCB0325401 20190806 201908060000200051MMK000151550000000000008000000000007000000000000000000000000000000000000000000000104MM미얀마 0차트 KYAT 082103000008000USD000000100000000012153000000010000012036000012270000011940400012365600012298800840US미국 0달러 DOLLAR 082103012118000GBP000000121520000014768300000012152014620700014915900014474500015062100014945500826GB영국 0파운드 POUND 082103014727600DEM000000000000000000000000000000000000000000000000000000000000000000000000000000280DE독일 0마르크 MARK 082103000000000CAD000000132080000009201200000007571009109200009293200009018100009384300009311600124CA캐나다 0달러 DOLLAR 082103009174000FRF000000000000000000000000000000000000000000000000000000000000000000000000000000250FR프랑스 0프랑 FRANC 082103000000000ITL000000000000000000000000000000000000000000000000000000000000000000000000000000380IT이탈리아 1리라 LIRA 082103000000000CHF000000097170000012506900000010291012381900012631900012258100012755700012656900756CH스위스 0프랑 FRANC 082103012467700HKD000000784410000001549300000001275001533900001564700001518500001580100001567800344HK홍콩 0달러 DOLLAR 082103001544800SEK000000957960000001268600000001044001256000001281200001236900001300300001283800752SE스웨덴 0크로네 KRONA 082103001264800AUD000000067640000008220300000006764008138100008302500008056800008383800008318900036AU호주 0달러 DOLLAR 082103008200300DKK000000664310000001829400000001505001811200001847600001783700001875100001851300208DK덴마크 0크로네 KRONE 082103001823600BEF000000000000000000000000000000000000000000000000000000000000000000000000000000056BE벨기에 0프랑 FRANC 082103000000000ATS000000000000000000000000000000000000000000000000000000000000000000000000000000040AT오스트리아 0실링 SCHILLING 082103000000000NOK000000891670000001362900000001121001349300001376500001328900001396900001379200578NO노르웨이 0크로네 KRONE 082103001358900NLG000000000000000000000000000000000000000000000000000000000000000000000000000000528NL네덜란드 0길더 GUILDER 082103000000000JPY000010568000000011499800000009463011388300011611300011298600011701000011637700392JP일본 1엔 YEN 082103011468300SAR000000375120000003239800000002666003207500003272100003013100003401700003278600682SA사우디아라비아 0리얄 RIYAL 082103003230400KWD000000030410000039963800000032884039564200040363400036766700042361600040443300414KW쿠웨이트 0디나르 DINAR 082103039842200AED000000367310000003308600000002722003275600003341600003077000003474000003348300784AE아랍에미레이트 0디르함 DIRHAM 082103003299100BHD000000037690000032244600000026532031922200032567000029665100034179200032631500048BH바레인 0디나르 DINAR 082103032143200SGD000000138530000008772800000007219008685100008860500008597400008948200008878000702SG싱가폴 0달러 DOLLAR 082103008747900MYR000000417850000002908500000002393002879500002937500002675900003083000002943400458MY말레이시아 0링깃 RINGGIT 082103002900100ESP000000000000000000000000000000000000000000000000000000000000000000000000000000724ES스페인 1페세타 PESETA 082103000000000FIM000000000000000000000000000000000000000000000000000000000000000000000000000000246FI핀란드 0마르카/페니 MARKKA 082103000000000NZD000000065660000007979700000006566007900000008059400007821000008138400008075400554NZ뉴질랜드 0달러 DOLLAR 082103007961500CNY000000712520000001705600000001403001688600001722600001620400001807900001807900156CN중국 0위안 YUAN 082103001715200THB000003083000000000394200000000324000390300000398100000366700000417600000398900764TH태국 0바트 BAHT 082103000393100IDR001425500000000000085300000000070000084500000086100000076000000092100000086300360ID인도네시아 1루피아 RUPIAH 082103000085000EUR000000112340000013652700000011234013516200013789200013382400013923000013816500978EU유럽연합 0유로 EURO 082103013610900BDT000008443000000000143900000000118000143900000143900000132400000155400000143900050BD방글라데시 0타카 TAKA 082103000143500PHP000005178000000000234700000000193000232400000237000000218300000258100000234700608PH필리핀 0페소 PESO 082103000232000INR000007049500000000172400000000142000170700000174100000156900000187900000172400356IN인도 0루피 RUPEE 082103000171100VND002326900000000000052200000000043000052200000052200000046000000058400000052200704VN베트남 1동 DONG 082103000052100RUB000006575610000000184800000000152000183000000186600000162700000199500000184800643RU러시아 0루블 RUBLE 082103000184300ZAR000001495600000000812600000000669000812600000812600000747600000877600000812600710ZA남아프리카공화국 0랜드 RAND 082103000809900HUF000029105000000000041800000000034000041800000041800000038500000045100000041800348HU헝가리 0포린트 FORINT 082103000041600PLN000000384730000003158800000002599003127300003190300002937700003411500003158800985PL폴란드 0즐로티 ZLOTY 082103003149900PKR000016025000000000075800000000062000075800000075800000069800000081800000075800586PK파키스탄 0루피 RUPEE 082103000075600EGP000001656000000000733900000000604000733900000733900000682600000792600000733900818EG이집트 0파운드 POUND 082103000731800MXN000001969250000000617100000000508000617100000617100000567800000666400000617100484MX멕시코 0루에보페소 NOUVEAO PESO 082103000614900BRL000000397460000003057700000002516003057700003057700002813100003302300003057700986BR브라질 0리얄 REAL 082103003048900BND000000138530000008772800000007219008772800008772800008246500009123700008772800096BN브루나이 0달러 DOLLAR 082103008747900TWD000003162300000000384300000000316000384300000384300000357400000415000000384300901TW대만 0달러 DOLLAR 082103000381800ILS000000348830000003483900000002867003483900003483900003205200003762600003483900376IL이스라엘 0세켈 SHEKEL 082103003473900JOD000000070900000017141000000014104017141000017141000015769800017826600017141000400JO요르단 0디나르 DINAR 082103017091700KZT000038667500000000031400000000026000031100000031700000027700000035100000031400398KZ카자흐스탄 0텡게 TENGE 082103000031300TRY000000558950000002174300000001789002152600002196000002000400002348200002174300949TR터키 0리라 LIRA 082103002168700CZK000002297100000000529100000000435000523900000534300000481500000566100000529100203CZ체코 0코루나 KORUNA 082103000527400MNT000266750000000000004600000000004000004600000004600000004600000004600000004600496MN몽골 0터그럭 TUGRIK 082103000004500QAR000000364070000003338100000002747003338100003338100003338100003338100003338100634QA카타르 0리얄 RIAL 082103003328400 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 ZZ"; +// String data = "ABC04R5040V9JI4R500001KJI04R50000 0070000071133340000000000000000000000000000000000020190806KC093082FW30120190806085651000006002 0210 GCA0856529144GCAAPPLPGM GCB032540120190806085652000KJI04R5040JI8BKJIAJI4R50 20190806085652N00000001 000 00 GCB0325401 20190806 201908060000200051MMK000151550000000000008000000000007000000000000000000000000000000000000000000000104MM미얀마 0차트 KYAT 082103000008000USD000000100000000012153000000010000012036000012270000011940400012365600012298800840US미국 0달러 DOLLAR 082103012118000GBP000000121520000014768300000012152014620700014915900014474500015062100014945500826GB영국 0파운드 POUND 082103014727600DEM000000000000000000000000000000000000000000000000000000000000000000000000000000280DE독일 0마르크 MARK 082103000000000CAD000000132080000009201200000007571009109200009293200009018100009384300009311600124CA캐나다 0달러 DOLLAR 082103009174000FRF000000000000000000000000000000000000000000000000000000000000000000000000000000250FR프랑스 0프랑 FRANC 082103000000000ITL000000000000000000000000000000000000000000000000000000000000000000000000000000380IT이탈리아 1리라 LIRA 082103000000000CHF000000097170000012506900000010291012381900012631900012258100012755700012656900756CH스위스 0프랑 FRANC 082103012467700HKD000000784410000001549300000001275001533900001564700001518500001580100001567800344HK홍콩 0달러 DOLLAR 082103001544800SEK000000957960000001268600000001044001256000001281200001236900001300300001283800752SE스웨덴 0크로네 KRONA 082103001264800AUD000000067640000008220300000006764008138100008302500008056800008383800008318900036AU호주 0달러 DOLLAR 082103008200300DKK000000664310000001829400000001505001811200001847600001783700001875100001851300208DK덴마크 0크로네 KRONE 082103001823600BEF000000000000000000000000000000000000000000000000000000000000000000000000000000056BE벨기에 0프랑 FRANC 082103000000000ATS000000000000000000000000000000000000000000000000000000000000000000000000000000040AT오스트리아 0실링 SCHILLING 082103000000000NOK000000891670000001362900000001121001349300001376500001328900001396900001379200578NO노르웨이 0크로네 KRONE 082103001358900NLG000000000000000000000000000000000000000000000000000000000000000000000000000000528NL네덜란드 0길더 GUILDER 082103000000000JPY000010568000000011499800000009463011388300011611300011298600011701000011637700392JP일본 1엔 YEN 082103011468300SAR000000375120000003239800000002666003207500003272100003013100003401700003278600682SA사우디아라비아 0리얄 RIYAL 082103003230400KWD000000030410000039963800000032884039564200040363400036766700042361600040443300414KW쿠웨이트 0디나르 DINAR 082103039842200AED000000367310000003308600000002722003275600003341600003077000003474000003348300784AE아랍에미레이트 0디르함 DIRHAM 082103003299100BHD000000037690000032244600000026532031922200032567000029665100034179200032631500048BH바레인 0디나르 DINAR 082103032143200SGD000000138530000008772800000007219008685100008860500008597400008948200008878000702SG싱가폴 0달러 DOLLAR 082103008747900MYR000000417850000002908500000002393002879500002937500002675900003083000002943400458MY말레이시아 0링깃 RINGGIT 082103002900100ESP000000000000000000000000000000000000000000000000000000000000000000000000000000724ES스페인 1페세타 PESETA 082103000000000FIM000000000000000000000000000000000000000000000000000000000000000000000000000000246FI핀란드 0마르카/페니 MARKKA 082103000000000NZD000000065660000007979700000006566007900000008059400007821000008138400008075400554NZ뉴질랜드 0달러 DOLLAR 082103007961500CNY000000712520000001705600000001403001688600001722600001620400001807900001807900156CN중국 0위안 YUAN 082103001715200THB000003083000000000394200000000324000390300000398100000366700000417600000398900764TH태국 0바트 BAHT 082103000393100IDR001425500000000000085300000000070000084500000086100000076000000092100000086300360ID인도네시아 1루피아 RUPIAH 082103000085000EUR000000112340000013652700000011234013516200013789200013382400013923000013816500978EU유럽연합 0유로 EURO 082103013610900BDT000008443000000000143900000000118000143900000143900000132400000155400000143900050BD방글라데시 0타카 TAKA 082103000143500PHP000005178000000000234700000000193000232400000237000000218300000258100000234700608PH필리핀 0페소 PESO 082103000232000INR000007049500000000172400000000142000170700000174100000156900000187900000172400356IN인도 0루피 RUPEE 082103000171100VND002326900000000000052200000000043000052200000052200000046000000058400000052200704VN베트남 1동 DONG 082103000052100RUB000006575610000000184800000000152000183000000186600000162700000199500000184800643RU러시아 0루블 RUBLE 082103000184300ZAR000001495600000000812600000000669000812600000812600000747600000877600000812600710ZA남아프리카공화국 0랜드 RAND 082103000809900HUF000029105000000000041800000000034000041800000041800000038500000045100000041800348HU헝가리 0포린트 FORINT 082103000041600PLN000000384730000003158800000002599003127300003190300002937700003411500003158800985PL폴란드 0즐로티 ZLOTY 082103003149900PKR000016025000000000075800000000062000075800000075800000069800000081800000075800586PK파키스탄 0루피 RUPEE 082103000075600EGP000001656000000000733900000000604000733900000733900000682600000792600000733900818EG이집트 0파운드 POUND 082103000731800MXN000001969250000000617100000000508000617100000617100000567800000666400000617100484MX멕시코 0루에보페소 NOUVEAO PESO 082103000614900BRL000000397460000003057700000002516003057700003057700002813100003302300003057700986BR브라질 0리얄 REAL 082103003048900BND000000138530000008772800000007219008772800008772800008246500009123700008772800096BN브루나이 0달러 DOLLAR 082103008747900TWD000003162300000000384300000000316000384300000384300000357400000415000000384300901TW대만 0달러 DOLLAR 082103000381800ILS000000348830000003483900000002867003483900003483900003205200003762600003483900376IL이스라엘 0세켈 SHEKEL 082103003473900JOD000000070900000017141000000014104017141000017141000015769800017826600017141000400JO요르단 0디나르 DINAR 082103017091700KZT000038667500000000031400000000026000031100000031700000027700000035100000031400398KZ카자흐스탄 0텡게 TENGE 082103000031300TRY000000558950000002174300000001789002152600002196000002000400002348200002174300949TR터키 0리라 LIRA 082103002168700CZK000002297100000000529100000000435000523900000534300000481500000566100000529100203CZ체코 0코루나 KORUNA 082103000527400MNT000266750000000000004600000000004000004600000004600000004600000004600000004600496MN몽골 0터그럭 TUGRIK 082103000004500QAR000000364070000003338100000002747003338100003338100003338100003338100003338100634QA카타르 0리얄 RIAL 082103003328400 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000 000000000 000000000000000000000000000000000000000000000000000000000000000000000000000000@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2"; +// byte[] ebcdic = IConv.asciiToEBCDIC(data); +// byte[] data2 = new byte[20612]; +// System.arraycopy(ebcdic, 0, data2, 0, 20612); +// //System.out.println("string.length="+data.getBytes().length); +// //System.out.println("ebcdic.length="+ebcdic.length); +// +// StopWatch stopWatch = new StopWatch(); +// stopWatch.start(); +// Message source = MessageFactory.getFactory().getMessage("KJI_ETD04R5040ETD_RES1"); +// +// source.setData(data2); +// //System.out.println(source); +// +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_KJI_ETD04R5040ETD_RES", new Message[] { source }); +// +// System.out.println("[" + new String((byte[]) target.getData()) + "]"); +// stopWatch.stop(); +// System.out.println(" elapsed : " + stopWatch.toString()); +// } + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformBizTest.java b/src/test/java/com/eactive/eai/transformer/TransformBizTest.java new file mode 100644 index 0000000..cab1546 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformBizTest.java @@ -0,0 +1,109 @@ +//package com.eactive.eai.transformer; +// +//import org.json.simple.JSONObject; +//import org.json.simple.JSONValue; +// +//import com.eactive.eai.common.util.Logger; +//import com.eactive.eai.transformer.engine.TransformEngine; +//import com.eactive.eai.transformer.engine.Transformer; +//import com.eactive.eai.transformer.message.Message; +//import com.eactive.eai.transformer.message.MessageFactory; +//import com.eactive.eai.transformer.message.UJSONMessage; +// +//import junit.framework.Test; +//import junit.framework.TestCase; +//import junit.framework.TestSuite; +// +// +//public class TransformBizTest extends TestCase { +// protected static Logger logger = Logger.getLogger("transformer"); +// +// TransformEngine engine = null; +// +// +// public TransformBizTest(String name) { +// super(name); +// } +// +// public static Test suite() { +// /* +// * the dynamic way +// */ +// return new TestSuite(TransformBizTest.class); +// } +// +// public void setUp() throws Exception { +// // 변환 초기화 +// engine = TransformEngine.getInstance(); +// +// if (!engine.isStarted()) { +// engine.start(); +// } +// } +// +// public void tearDown() throws Exception { +// // +// } +// +// public void testJsonToFlatTransform() throws Exception { +// System.out.println("Json TO Flat =============================================================="); +// //logger.debug("Transform08900001Test | testTransform()"); +// +// //---------------------------------------------------------------------- +// // source message 생성 +// //---------------------------------------------------------------------- +// String data =""; +// data = +// "{\"InData\":{\"telInfoCnt\":1,\"telInfoArray\":[{\"billAcntNo\":\"552005724628\",\"aceNo\":\"300105266377\",\"prodNo\":\"01035603973\",\"entrNo\":\"500204205165\"}]}}" ; +//// "{\"InData\":{\"telInfoCnt\":\"01\",\"telInfoArray\":[{\"billAcntNo\":\"552005724628\",\"aceNo\":\"300105266377\",\"prodNo\":\"01035603973\",\"entrNo\":\"500204205165\"}]}}" ; +// +//// data = "{\"BFB_KGP04L0144_REQ1\":"+ +//// "{\"InData\":{\"telInfoCnt\":1,\"telInfoArray\":[{\"billAcntNo\":\"552005724628\",\"aceNo\":\"300105266377\",\"prodNo\":\"01035603973\",\"entrNo\":\"500204205165\"}]}}" +//// + "}"; +//// +// Message source = MessageFactory.getFactory().getMessage("BFB_KGP04L0144_REQ1"); +// +// String rootItemName = ((UJSONMessage)source).getLayout().getRootItem().getName(); +// +// JSONObject value = (JSONObject)JSONValue.parse(data); +// JSONObject root = new JSONObject(); +// root.put(rootItemName, value); +// data = root.toJSONString(); +// System.out.println("data="+data); +// source.setData(data.getBytes()); +// System.out.println("source="+source); +// +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_BFB_KGP04L0144BFB_REQ", new Message[] { source }); +// +// System.out.println(target.toString()); +//// +//} +// +//public void atestFlatToJsonTransform() throws Exception { +// System.out.println("Flat TO Json =============================================================="); +// //---------------------------------------------------------------------- +// // source message 생성 +// //---------------------------------------------------------------------- +// String data ="00 0000100023"; +// Message source = MessageFactory.getFactory().getMessage("TST_CCMMCI0023RS1JBB_REQ2"); +// source.setData(data.getBytes()); +//// System.out.println(source); +// +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_TST_CCMMCI9999S1_RES", new Message[] { source }); +// +// +//// System.out.println(target); +// System.out.println(target.toString()); +// System.out.println("testFlatToJsonTransform >> [["+target.getData()+"]]"); +// +// } +// +// } diff --git a/src/test/java/com/eactive/eai/transformer/TransformCharConvertionTest.java b/src/test/java/com/eactive/eai/transformer/TransformCharConvertionTest.java new file mode 100644 index 0000000..5d88c94 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformCharConvertionTest.java @@ -0,0 +1,95 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformCharConvertionTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformCharConvertionTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformCharConvertionTest.class); + } + + public void setUp() throws Exception { + + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testEuckrToUtf8() throws Exception { + System.out.println("EUC-KR TO UTF-8 =============================================================="); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data =""; + data = "한글 ABCD1234 HANGLE "; + Message source = MessageFactory.getFactory().getMessage("EAI_ASC_REQ1"); + source.setData(data.getBytes()); + + System.out.println("source="+source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_EUCKR2UTF8_REQ", new Message[] { source }); + + System.out.println("target ="+target); + System.out.println("target new String(data) ="+new String((byte[])target.getData())); + + + + } + public void testUtf8ToEuckr() throws Exception { + System.out.println("UTF-8 TO EUC-KR =============================================================="); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + byte[] data = "한글 ABCD1234 HANGLE ".getBytes("utf-8"); + Message source = MessageFactory.getFactory().getMessage("EAI_ASC_REQ1"); + source.setData(data); + + System.out.println("source="+source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_UTF82EUCKR_REQ", new Message[] { source }); + + System.out.println("target ="+target); + System.out.println("target new String(data) ="+new String((byte[])target.getData())); + + } + + + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformCommonErrorTest.java b/src/test/java/com/eactive/eai/transformer/TransformCommonErrorTest.java new file mode 100644 index 0000000..e797f1b --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformCommonErrorTest.java @@ -0,0 +1,259 @@ +package com.eactive.eai.transformer; + +import org.apache.commons.lang3.time.StopWatch; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.util.IConv; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformCommonErrorTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformCommonErrorTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformCommonErrorTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + + public void atestXmlErr() throws Exception { + System.out.println("XML =============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + Message source = MessageFactory.getFactory().getMessage("EAI_XML_ERR"); + source.setData(data); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_XMLTOUJN_ERR", new Message[] { source }); // TRANSFORM_EAI_XMLTOUJN_ERR + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + +// transformer = engine.getTransformer(); +// target = transformer.transform("TRANSFORM_EAI_XMLTOEBC_ERR", new Message[] { source }); +// System.out.println(target.toString()); +// System.out.println("[" + target.getData() + "]"); +// +// transformer = engine.getTransformer(); +// target = transformer.transform("TRANSFORM_EAI_XMLTOASC_ERR", new Message[] { source }); +// System.out.println(target.toString()); +// System.out.println("[" + target.getData() + "]"); + + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void atestEbcdicErr() throws Exception { + System.out.println("EBCDIC =============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- +// String data = "000000001111111133333333444444AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA010000000011111111333333334444447777777777010000000011111111333333334444445555555566666601BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"; + + // 반복참조회수에러 -> 고정그리드로 변경 후 정상 + String data = "B0900038UKFK0032IFK0024 000509 00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000KFK124F61002B0900038UKFK0032PFKA4F6 000422 +00000B0900038UKFK0032IFK0024 000509 +00000 000000 +00000 000000 +0000000 "; + +// String data = "B0900038UKFK0032IFK0024 000509 10 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000KFK124F61004B0900038UKFK0032PFKA4F6 000422 +00000B0900038UKFK0032IFK0024 000509 +00000 000000 +00000 000000 +0000010 "; +// StopWatch stopWatch = new StopWatch(); +// stopWatch.start(); + Message source = MessageFactory.getFactory().getMessage("EAI_EBCDIC_ERR"); +// source.setBytes("KAE_KAE0403140_RES1.OutData.outBook.grid[0].groupCoCd", "111".getBytes()); + source.setData(IConv.asciiToEBCDIC(data)); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_EBCTOUJN_ERR", new Message[] { source }); + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + + transformer = engine.getTransformer(); + target = transformer.transform("TRANSFORM_EAI_EBCTOXML_ERR", new Message[] { source }); + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + + transformer = engine.getTransformer(); + target = transformer.transform("TRANSFORM_EAI_EBCTOASC_ERR", new Message[] { source }); + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + +// stopWatch.stop(); +// System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void testUjsonErr() throws Exception { + System.out.println("UJSON =============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = "{\"EAI_UJSON_ERR\":{\"ErrData\":{\"ErrmsgHighlightErrNoitm\":\"00\",\"HighlightErrInfo\":[{\"ErrmsgTelgmItemName\":\"1 \"},{\"ErrmsgTelgmItemName\":\"2 \"},{\"ErrmsgTelgmItemName\":\" \"},{\"ErrmsgTelgmItemName\":\" \"},{\"ErrmsgTelgmItemName\":\" \"},{\"ErrmsgTelgmItemName\":\" \"},{\"ErrmsgTelgmItemName\":\" \"},{\"ErrmsgTelgmItemName\":\" \"},{\"ErrmsgTelgmItemName\":\" \"},{\"ErrmsgTelgmItemName\":\" \"}],\"MultiErrInfo\":[{\"ErrmsgErrcd\":\"1 \",\"ErrmsgErrSituNo\":\"000000\",\"ErrmsgErrPgmName\":\" \",\"ErrmsgTreatCd\":\" \"},{\"ErrmsgErrcd\":\" \",\"ErrmsgErrSituNo\":\"000000\",\"ErrmsgErrPgmName\":\" \",\"ErrmsgTreatCd\":\" \"},{\"ErrmsgErrcd\":\" \",\"ErrmsgErrSituNo\":\"000000\",\"ErrmsgErrPgmName\":\" \",\"ErrmsgTreatCd\":\" \"},{\"ErrmsgErrcd\":\" \",\"ErrmsgErrSituNo\":\"000000\",\"ErrmsgErrPgmName\":\" \",\"ErrmsgTreatCd\":\" \"},{\"ErrmsgErrcd\":\" \",\"ErrmsgErrSituNo\":\"000000\",\"ErrmsgErrPgmName\":\" \",\"ErrmsgTreatCd\":\" \"},{\"ErrmsgErrcd\":\" \",\"ErrmsgErrSituNo\":\"000000\",\"ErrmsgErrPgmName\":\" \",\"ErrmsgTreatCd\":\" \"},{\"ErrmsgErrcd\":\" \",\"ErrmsgErrSituNo\":\"000000\",\"ErrmsgErrPgmName\":\" \",\"ErrmsgTreatCd\":\" \"},{\"ErrmsgErrcd\":\" \",\"ErrmsgErrSituNo\":\"000000\",\"ErrmsgErrPgmName\":\" \",\"ErrmsgTreatCd\":\" \"},{\"ErrmsgErrcd\":\" \",\"ErrmsgErrSituNo\":\"000000\",\"ErrmsgErrPgmName\":\" \",\"ErrmsgTreatCd\":\" \"},{\"ErrmsgErrcd\":\" \",\"ErrmsgErrSituNo\":\"000000\",\"ErrmsgErrPgmName\":\" \",\"ErrmsgTreatCd\":\" \"}],\"ErrmsgErrcd\":\"B0900038\",\"ErrmsgOutptCstzMsgCtnt\":\" \",\"ErrmsgErrSituNo\":\"000509\",\"ErrmsgStpErrInfo\":[{\"ErrmsgStpErrSituNo\":\"000422\",\"ErrmsgStpTreatCd\":\"UKFK0032\",\"ErrmsgStpErrcd\":\"B0900038\",\"ErrmsgStpErrPgmName\":\"PFKA4F6 \",\"ErrmsgStpErrSqlCd\":\"+00000\",\"ErrmsgStpErrTblName\":\" \"},{\"ErrmsgStpErrSituNo\":\"000509\",\"ErrmsgStpTreatCd\":\"UKFK0032\",\"ErrmsgStpErrcd\":\"B0900038\",\"ErrmsgStpErrPgmName\":\"IFK0024 \",\"ErrmsgStpErrSqlCd\":\"+00000\",\"ErrmsgStpErrTblName\":\" \"},{\"ErrmsgStpErrSituNo\":\"000000\",\"ErrmsgStpTreatCd\":\" \",\"ErrmsgStpErrcd\":\" \",\"ErrmsgStpErrPgmName\":\" \",\"ErrmsgStpErrSqlCd\":\"+00000\",\"ErrmsgStpErrTblName\":\" \"},{\"ErrmsgStpErrSituNo\":\"000000\",\"ErrmsgStpTreatCd\":\" \",\"ErrmsgStpErrcd\":\" \",\"ErrmsgStpErrPgmName\":\" \",\"ErrmsgStpErrSqlCd\":\"+00000\",\"ErrmsgStpErrTblName\":\" \"}],\"ErrmsgMulErrNoitm\":\"00\",\"ErrmsgStpErrTranCd\":\"KFK124F610\",\"ErrmsgStpErrNoitm\":\"02\",\"ErrmsgErrPgmName\":\"IFK0024 \",\"ErrmsgTreatCd\":\"UKFK0032\"}}}"; + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + Message source = MessageFactory.getFactory().getMessage("EAI_UJSON_ERR"); + source.setData(data); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_UJNTOXML_ERR", new Message[] { source }); + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + +// transformer = engine.getTransformer(); +// target = transformer.transform("TRANSFORM_EAI_UJNTOASC_ERR", new Message[] { source }); +// System.out.println(target.toString()); +// System.out.println("[" + target.getData() + "]"); + +// transformer = engine.getTransformer(); +// target = transformer.transform("TRANSFORM_EAI_UJNTOEBC_ERR", new Message[] { source }); +// System.out.println(target.toString()); +// System.out.println("[" + target.getData() + "]"); + + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void atestAscErr() throws Exception { + System.out.println("ASCII =============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = "B0900038UKFK0032IFK0024 000509 00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000KFK124F61002B0900038UKFK0032PFKA4F6 000422 +00000B0900038UKFK0032IFK0024 000509 +00000 000000 +00000 000000 +0000000 "; +// StopWatch stopWatch = new StopWatch(); +// stopWatch.start(); + Message source = MessageFactory.getFactory().getMessage("EAI_ASCII_ERR"); + source.setData(data.getBytes()); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_ASCTOEBC_ERR", new Message[] { source }); + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + + transformer = engine.getTransformer(); + target = transformer.transform("TRANSFORM_EAI_ASCTOXML_ERR", new Message[] { source }); + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + + transformer = engine.getTransformer(); + target = transformer.transform("TRANSFORM_EAI_ASCTOUJN_ERR", new Message[] { source }); + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + +// stopWatch.stop(); +// System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void atestbcdicToAsc() throws Exception { + System.out.println("=============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = "B0900038UKFK0032IFK0024 000509 00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000KFK124F61002B0900038UKFK0032PFKA4F6 000422 +00000B0900038UKFK0032IFK0024 000509 +00000 000000 +00000 000000 +0000000 "; + + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + Message source = MessageFactory.getFactory().getMessage("EAI_EBCDIC_ERR"); +// source.setBytes("KAE_KAE0403140_RES1.OutData.outBook.grid[0].groupCoCd", "111".getBytes()); + source.setData(IConv.asciiToEBCDIC(data)); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_EBCTOASC_ERR", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + new String((byte[]) target.getData()) + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void atestEbcdicToXml() throws Exception { + System.out.println("=============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = "B0900038UKFK0032IFK0024 000509 00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000KFK124F61002B0900038UKFK0032PFKA4F6 000422 +00000B0900038UKFK0032IFK0024 000509 +00000 000000 +00000 000000 +0000000 "; + + System.out.println(data.getBytes().length); + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + Message source = MessageFactory.getFactory().getMessage("EAI_EBCDIC_ERR"); +// source.setBytes("KAE_KAE0403140_RES1.OutData.outBook.grid[0].groupCoCd", "111".getBytes()); + source.setData(IConv.asciiToEBCDIC(data)); + //System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_EBCTOXML_ERR", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void atestEbcdicToXmlErr() throws Exception { + System.out.println("=============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- +// String data = "000000001111111133333333444444AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA010000000011111111333333334444447777777777010000000011111111333333334444445555555566666601BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB"; + String data = "B0900038UKFK0032IFK0024 000509 00 000000 000000 000000 000000 000000 000000 000000 000000 000000 000000KFK124F61002B0900038UKFK0032PFKA4F6 000422 +00000B0900038UKFK0032IFK0024 000509 +00000 000000 +00000 000000 +0000000 "; + data = data.substring(0,620); + System.out.println(data.getBytes().length); + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + Message source = MessageFactory.getFactory().getMessage("EAI_TSTEBCDIC_ERR"); +// source.setBytes("KAE_KAE0403140_RES1.OutData.outBook.grid[0].groupCoCd", "111".getBytes()); + source.setData(IConv.asciiToEBCDIC(data)); + //System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_TST0100543KGN_ERR", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformDefaultTest.java b/src/test/java/com/eactive/eai/transformer/TransformDefaultTest.java new file mode 100644 index 0000000..bc1d0ae --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformDefaultTest.java @@ -0,0 +1,102 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.function.util.CodeConversion; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformDefaultTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformDefaultTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformDefaultTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + + public void atestASCFlat() throws Exception { + Message source = MessageFactory.getFactory().getMessage("EAI_TSTASC_REQ1"); + System.out.println(source); + } + public void atestEBCDICFlat() throws Exception { + Message source = MessageFactory.getFactory().getMessage("EAI_TSTEBCDIC_REQ1"); + System.out.println(source); + } + + public void testAsc2Ebcdic() throws Exception { + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data ="0000000002abcdefghij1234567890abcdefghijAbcdefghij2234567890Abcdefghij"; + + Message source = MessageFactory.getFactory().getMessage("EAI_TSTASC_REQ1"); + source.setData(data.getBytes()); + System.out.println(source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_TSTASC2EBCDIC_REQ", new Message[] { source }); + + +// System.out.println(target); + System.out.println(target.toString()); + System.out.println("testFlatToJsonTransform >> [["+new String((byte[])target.getData())+"]]"); + + } + public void testEbcdic2Asc() throws Exception { + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data ="0000000002abcdefghij1234567890abcdefghijAbcdefghij2234567890Abcdefghij"; + byte[] temp = CodeConversion.ascToSE(data.getBytes()); + Message source = MessageFactory.getFactory().getMessage("EAI_TSTEBCDIC_REQ1"); + source.setData(temp); + System.out.println(source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_TSTEBCDIC2ASC_REQ", new Message[] { source }); + + +// System.out.println(target); + System.out.println(target.toString()); + System.out.println("testFlatToJsonTransform >> [["+new String((byte[])target.getData())+"]]"); + + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformErrorTest.java b/src/test/java/com/eactive/eai/transformer/TransformErrorTest.java new file mode 100644 index 0000000..076fac8 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformErrorTest.java @@ -0,0 +1,135 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformErrorTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformErrorTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformErrorTest.class); + } + + public void setUp() throws Exception { + String module = System.getProperty("moudle"); + if (module == null){ + System.setProperty("moudle","TEST_DB"); + } + String tableowner = System.getProperty("eai.tableowner"); + if (tableowner == null){ + System.setProperty("eai.tableowner","INST2"); + } + String profix = System.getProperty("prefix"); + if (profix == null){ + System.setProperty("prefix","local.eai.db2"); + } + + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + +// public void atestXmlToUJson() throws Exception { +// System.out.println("Xml TO UJson =============================================================="); +// //logger.debug("Transform08900001Test | testTransform()"); +// +// //---------------------------------------------------------------------- +// // source message 생성 +// //---------------------------------------------------------------------- +// String data =""; +// data = ""; +// +// +// Message source = MessageFactory.getFactory().getMessage("KGN_KGA0100513_REQ1"); +// source.setData(""+data+""); +// +// System.out.println("source="+source); +// +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_KGN_KGA0100513KGN_REQ", new Message[] { source }); +// +// System.out.println(target); +// System.out.println("getData="+target.getData()); +// +// } +// +// public void testXmlToUJson() throws Exception { +// System.out.println("Xml TO UJson =============================================================="); +// //logger.debug("Transform08900001Test | testTransform()"); +// +// //---------------------------------------------------------------------- +// // source message 생성 +// //---------------------------------------------------------------------- +// String data =""; +// data = ""; +// +// +// Message source = MessageFactory.getFactory().getMessage("KGN_KGA0100513_REQ1"); +// source.setData(""+data+""); +// +// System.out.println("source="+source); +// +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_KGN_KGA0100513KGN_REQ", new Message[] { source }); +// +// System.out.println(target); +// System.out.println("getData="+target.getData()); +// +// } + + public void testFlatToUJson() throws Exception { + System.out.println("Flat TO UJson =============================================================="); + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data =""; + data = "KB0S0012313153506840000001011112222 김은수 018009999 [KB태블릿브랜치] 김은수님, 정상적으로 로그인되었습니다. 0 00281648458"; + + Message source = MessageFactory.getFactory().getMessage("CCA_BNC71901R1CCAS01_REQ3"); +// source.setData(data.getBytes()); + + System.out.println("source="+source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_CCA_BNC71901R1CCA_REQ", new Message[] { source }); + + System.out.println(target); + System.out.println("getData="+target.getData()); + + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformExcelLoadConfiguration.java b/src/test/java/com/eactive/eai/transformer/TransformExcelLoadConfiguration.java new file mode 100644 index 0000000..338fddd --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformExcelLoadConfiguration.java @@ -0,0 +1,89 @@ +package com.eactive.eai.transformer; + +import static org.mockito.BDDMockito.given; + +import org.junit.jupiter.api.BeforeEach; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; + +import com.eactive.eai.common.lifecycle.LifecycleException; +import com.eactive.eai.common.util.ApplicationContextProvider; +import com.eactive.eai.transformer.dao.excel.FunctionExcelDao; +import com.eactive.eai.transformer.dao.excel.LayoutExcelDao; +import com.eactive.eai.transformer.dao.excel.LayoutTypeExcelDao; +import com.eactive.eai.transformer.dao.excel.TransformExcelDao; +import com.eactive.eai.transformer.dao.jdbc.FunctionJdbcDao; +import com.eactive.eai.transformer.dao.jdbc.LayoutJdbcDao; +import com.eactive.eai.transformer.dao.jdbc.LayoutTypeJdbcDao; +import com.eactive.eai.transformer.dao.jdbc.TransformJdbcDao; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.function.FunctionManager; +import com.eactive.eai.transformer.function.loader.FunctionLoader; +import com.eactive.eai.transformer.function.mapper.FunctionMapper; +import com.eactive.eai.transformer.layout.LayoutManager; +import com.eactive.eai.transformer.layout.LayoutTypeManager; +import com.eactive.eai.transformer.layout.loader.LayoutLoaderImpl; +import com.eactive.eai.transformer.layout.loader.LayoutTypeLoaderImpl; +import com.eactive.eai.transformer.layout.mapper.LayoutItemMapper; +import com.eactive.eai.transformer.layout.mapper.LayoutMapper; +import com.eactive.eai.transformer.layout.mapper.LayoutTypeMapper; +import com.eactive.eai.transformer.transform.TransformManager; +import com.eactive.eai.transformer.transform.loader.TransformLoader; +import com.eactive.eai.transformer.transform.mapper.TransformEntityMapper; + +@SpringBootTest(classes = { ApplicationContextProvider.class, LayoutTypeManager.class, LayoutManager.class, + FunctionManager.class, TransformManager.class, LayoutTypeExcelDao.class, LayoutExcelDao.class, + FunctionExcelDao.class, TransformExcelDao.class, TransformEngine.class }) +@MockBean(classes = { LayoutMapper.class, LayoutItemMapper.class, LayoutTypeMapper.class, FunctionMapper.class, + TransformEntityMapper.class, LayoutLoaderImpl.class, LayoutTypeLoaderImpl.class, FunctionLoader.class, + TransformLoader.class, LayoutTypeJdbcDao.class, LayoutJdbcDao.class }) +public class TransformExcelLoadConfiguration { + + @Autowired + LayoutTypeExcelDao layoutTypeExcelDao; + + @MockBean + LayoutTypeJdbcDao layoutTypeJdbcDao; + + @Autowired + LayoutExcelDao layoutExcelDao; + + @MockBean + LayoutJdbcDao layoutJdbcDao; + + @Autowired + FunctionExcelDao functionExcelDao; + + @MockBean + FunctionJdbcDao functionJdbcDao; + + @Autowired + TransformExcelDao transformExcelDao; + + @MockBean + TransformJdbcDao transformJdbcDao; + + @Autowired + TransformEngine engine; + + @BeforeEach + public void before() throws LifecycleException { + + // given layout type + given(layoutTypeJdbcDao.load()).will(d -> layoutTypeExcelDao.load()); + + // given layout + given(layoutJdbcDao.load()).will(d -> layoutExcelDao.load()); + + // given function + given(functionJdbcDao.load()).will(d -> functionExcelDao.load()); + + // given transform + given(transformJdbcDao.load()).will(d -> transformExcelDao.load()); + + // given engine start + engine.start(); + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformExtendTest.java b/src/test/java/com/eactive/eai/transformer/TransformExtendTest.java new file mode 100644 index 0000000..5c81c27 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformExtendTest.java @@ -0,0 +1,65 @@ +package com.eactive.eai.transformer; + +import org.apache.commons.lang3.time.StopWatch; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.util.IConv; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformExtendTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformExtendTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformExtendTest.class); + } + + public void setUp() throws Exception { + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testTransformExtended() throws Exception { + System.out.println("\n\n<<================================== testTransform EBCDIC to XML ==================================>> \n"); + String data = "KMA01THKJIBR01 202009070000002KPPRTS012KB09840201807309999123120020116 029IT서비스개발부 IT서비IT Service Development Department 07320 서울 영등포구 여의대로 24 전국경제인연합회회관 30층 24, Yeoui-daero, Yeongdeungpo-gu, Seoul, Korea 01 02-2073-4119 1588-9999 02) 2073-6470 555 2018168693여의도 19840 1706200201 000000308500 9020020919 403301 153809101040485482 315169001022886149 20200907144457920378282960402012062220170626012IT서비스믜 kbg125340@kbfg.com "; + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + Message source = MessageFactory.getFactory().getMessage("KJI_KJI06DA860_REQ1"); + source.setData(IConv.asciiToEBCDIC(data)); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_KJI_KJI06DA860KJI_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformFieldOccrTest.java b/src/test/java/com/eactive/eai/transformer/TransformFieldOccrTest.java new file mode 100644 index 0000000..768eff2 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformFieldOccrTest.java @@ -0,0 +1,67 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformFieldOccrTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformFieldOccrTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformFieldOccrTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testFlatGenerate() throws Exception { + System.out.println("Flat =============================================================="); + //---------------------------------------------------------------------- + // source message 타행환공동망통신망전문 + //---------------------------------------------------------------------- + String data ="LLZZTCP00KBB11112221000201909051040IBK030A234567123456712345671234567123456712345671234567123456712345671234567B234567123456712345671234567123456712345671234567123456712345671234567C234567123456712345671234567123456712345671234567123456712345671234567BBBBBBBBBBBB"; + Message source = MessageFactory.getFactory().getMessage("KFM_EBE98109042_REQ1"); + source.setData(data.getBytes()); + System.out.println(source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_KFM_EBE9810904EBE_REQ", new Message[] { source }); + + System.out.println(target); + System.out.println(target.toString()); + System.out.println("testFlatToJsonTransform >> [["+target.getData()+"]]"); + + } + + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformFlatTest.java b/src/test/java/com/eactive/eai/transformer/TransformFlatTest.java new file mode 100644 index 0000000..2af8030 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformFlatTest.java @@ -0,0 +1,56 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformFlatTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformFlatTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformFlatTest.class); + } + + public void setUp() throws Exception { + AllTests.setParams(); + // + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testFlatGenerate() throws Exception { + System.out.println("Flat =============================================================="); + //---------------------------------------------------------------------- + // source message + //---------------------------------------------------------------------- + String data ="TTL..3ROW11ROW122GRD11GRD12GRD21GRD22ROW21ROW221GRD31GRD32ROW31ROW323GRD41GRD42GRD51GRD52GRD61GRD62"; + Message source = MessageFactory.getFactory().getMessage("EAI_UJSON2DEPTH3_REQ1"); + source.setData(data.getBytes()); + System.out.println(source); + } + + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformFullBytesTest.java b/src/test/java/com/eactive/eai/transformer/TransformFullBytesTest.java new file mode 100644 index 0000000..1edb8cf --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformFullBytesTest.java @@ -0,0 +1,116 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformFullBytesTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformFullBytesTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformFullBytesTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + + public void testFlatToUJsonTransform() throws Exception { + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + //String data ="0200 12000 D "; + String data ="1234567890ABCDEFGHIJ한글"; + Message source = MessageFactory.getFactory().getMessage("EAI_TSTFULL_REQ1"); + source.setData(data.getBytes()); + System.out.println(source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_TSTFULL2UJSON_REQ", new Message[] { source }); + + +// System.out.println(target); + System.out.println(target.toString()); + System.out.println("testFlatToJsonTransform >> [["+target.getData()+"]]"); + + } + public void atestFlatToFlatTransform() throws Exception { + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data ="0000000002abcdefghij1234567890abcdefghijAbcdefghij2234567890Abcdefghij"; + Message source = MessageFactory.getFactory().getMessage("EAI_TSTASC_REQ1"); + source.setData(data.getBytes()); + System.out.println(source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_TSTASC2FULL_REQ", new Message[] { source }); + + +// System.out.println(target); + System.out.println(target.toString()); + System.out.println("testFlatToFlatTransform >> [["+new String((byte[])target.getData())+"]]"); + + } + public void atestUJonToFlatTransform() throws Exception { + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data ="{\"EAI_TSTUJSON_REQ1\":{\"GROUP\":{\"HANGLE\":\"\",\"TEXT\":\"1234567890ABCDEFGHIJ한글\",\"BASE\":\"\"}}}"; + + Message source = MessageFactory.getFactory().getMessage("EAI_TSTUJSON_REQ1"); + source.setData(data.getBytes("UTF-8")); + System.out.println(source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_TSTUJSON2FULL_REQ", new Message[] { source }); + + +// System.out.println(target); + System.out.println(target.toString()); + System.out.println("testFlatToJsonTransform >> [["+new String((byte[])target.getData())+"]]"); + + } + + + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformGvAttrTest.java b/src/test/java/com/eactive/eai/transformer/TransformGvAttrTest.java new file mode 100644 index 0000000..3a619f0 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformGvAttrTest.java @@ -0,0 +1,122 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.transform.TransformManager; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformGvAttrTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformGvAttrTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformGvAttrTest.class); + } + + public void setUp() throws Exception { + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testTransformXMLtoFLAT() throws Exception { + long t = System.currentTimeMillis(); + printLog("\n\n<<================================== testTransformXMLtoFLAT ==================================>> \n"); + Message source = MessageFactory.getFactory().getMessage("GVATTR_REQ1"); + Message target = MessageFactory.getFactory().getMessage("GVATTR_REQ2"); + + String transformName = "TRANSFORM_GVATTR_REQ"; + // xmlns=\"urn:iso:std:iso:20022:tech:xsd:pain.001.001.05\" + + String reqXML = "" + +"" + +"" + +"REQDATA0" + +"REQDATA1" + +"" + +"" + ; + + printLog("\nSOURCE XML STR : " + reqXML); + int iter = 1; + for(int i=0; i> \n"); + Message source = MessageFactory.getFactory().getMessage("GVATTR_REQ2"); + Message target = MessageFactory.getFactory().getMessage("GVATTR_REQ1"); + + String transformName = "TRANSFORM_GVATTR_RES"; + // xmlns=\"urn:iso:std:iso:20022:tech:xsd:pain.001.001.05\" + + String reqFLAT = "02REQDATA2 CD00000011PW00000012NO00000013REQDATA3 CD00000021PW00000022NO00000023" + + ; + + printLog("\nSOURCE FLAT STR : " + reqFLAT); + int iter = 1; + for(int i=0; i 400 + String data = "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"; + + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + Message source = MessageFactory.getFactory().getMessage("EAI_ASCTERCOMM_REQ1"); + source.setData(data.getBytes()); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_AETERCOMM_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void atestATMCOMM() throws Exception { + System.out.println("=============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + // 300 -> 400 + String data = "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"; + + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + Message source = MessageFactory.getFactory().getMessage("EAI_ASCATMCOMM_REQ1"); + source.setData(data.getBytes()); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_AEATMCOMM_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void atestINBCOMM() throws Exception { + System.out.println("=============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + // 400 -> 400 + String data = "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"; + + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + Message source = MessageFactory.getFactory().getMessage("EAI_ASCINBCOMM_REQ1"); + source.setData(data.getBytes()); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_AEINBCOMM_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void atestIVRCOMM() throws Exception { + System.out.println("=============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + // 150 -> 400 + String data = "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"; + + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + Message source = MessageFactory.getFactory().getMessage("EAI_ASCIVRCOMM_REQ1"); + source.setData(data.getBytes()); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_AEIVRCOMM_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + + public void atestTERCOMM07() throws Exception { + System.out.println("=============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + // 320 -> 400 + String data = "12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"; + + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + Message source = MessageFactory.getFactory().getMessage("EAI_EBCTERCOMM_REQ1"); + source.setData(IConv.asciiToEBCDIC(data)); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_EATERCOMM_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void atestATMCOMM07() throws Exception { + System.out.println("=============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + // 400 -> 300 + String data = "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"; + + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + Message source = MessageFactory.getFactory().getMessage("EAI_EBCATMCOMM_REQ1"); + source.setData(IConv.asciiToEBCDIC(data)); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_EAATMCOMM_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void testEbcdicDefault() throws Exception { + System.out.println("=============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + // 400 -> 300 + String data = ""; + + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + Message source = MessageFactory.getFactory().getMessage("KEC_KEC0109019_RES1"); //EAI_EBCINBCOMM_REQ1 + System.out.println(source); + +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_EAI_EAATMCOMM_REQ", new Message[] { source }); +// +// System.out.println(target.toString()); +// System.out.println("[" + target.getData() + "]"); +// stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformJson3Test.java b/src/test/java/com/eactive/eai/transformer/TransformJson3Test.java new file mode 100644 index 0000000..601fc15 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformJson3Test.java @@ -0,0 +1,200 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.util.IConv; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformJson3Test extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformJson3Test(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformJson3Test.class); + } + + public void setUp() throws Exception { + + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void atestXmlToJson() throws Exception { + System.out.println("Xml TO Json =============================================================="); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data =""; + data = "한글ABCD1234한글"; + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("EAI_TSTXML_REQ1"); + source.setData(data); + + System.out.println("source="+source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_TSTXML2JSON_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println(target.getData()); + + } + public void atestAscToJson() throws Exception { + System.out.println("Asc TO Json =============================================================="); + //logger.debug("Transform08900001Test | testTransform()"); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data =""; + data = "한글 ABCD1234 한글 "; + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("EAI_TSTASC_REQ1"); + source.setData(data.getBytes()); + + System.out.println("source="+source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_TSTASC2JSON_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println(target.getData()); + + } + public void testEbcdicToJson() throws Exception { + System.out.println("Ebcdic TO Json =============================================================="); + //logger.debug("Transform08900001Test | testTransform()"); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data =""; + data = "HANGLE ABCD1234 HANGLE "; + byte[] d = IConv.asciiToEBCDIC(data); + System.out.println(new String(d)); + Message source = MessageFactory.getFactory().getMessage("EAI_TSTEBCDIC_REQ1"); + source.setData(d); + + System.out.println("source="+source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_TSTEBCDIC2JSON_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println(target.getData()); + + } + + + public void atestJsonToXml() throws Exception { + System.out.println("Json TO Xml =============================================================="); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data =""; + data = "{\"EAI_TSTJSON_REQ1\": {\"GROUP\": {\"HANGLE\":\"한글\",\"TEXT\":\"ABCD1234\" ,\"BASE\":\"한글\" }}}"; + + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("EAI_TSTJSON_REQ1"); + + source.setData(data); + + System.out.println(source.toString()); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_TSTJSON2XML_REQ", new Message[] { source }); + System.out.println(target.toString()); + System.out.println(target.getData()); + + } + public void testJsonToAsc() throws Exception { + System.out.println("Json TO Asc =============================================================="); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data =""; + data = "{\"EAI_TSTJSON_REQ1\": {\"GROUP\": [{\"HANGLE\":\"한글\",\"TEXT\":\"ABCD1234\" ,\"BASE\":\"한글\" },{\"HANGLE\":\"한글\",\"TEXT\":\"ABCD1234\" ,\"BASE\":\"한글\" }]}}"; + + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("EAI_TSTJSON_REQ1"); + + source.setData(data); + + System.out.println(source.toString()); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_TSTJSON2ASC_REQ", new Message[] { source }); + System.out.println(target.toString()); + System.out.println(new String((byte[])target.getData())); + + } + public void atestJsonToEbcdic() throws Exception { + System.out.println("Json TO Ebcdic =============================================================="); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data =""; + data = "{\"EAI_TSTJSON_REQ1\": {\"GROUP\": {\"HANGLE\":\"한글\",\"TEXT\":\"ABCD1234\" ,\"BASE\":\"한글\" }}}"; + + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("EAI_TSTJSON_REQ1"); + + source.setData(data); + + System.out.println(source.toString()); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_TSTJSON2EBCDIC_REQ", new Message[] { source }); + System.out.println(target.toString()); + System.out.println(new String((byte[])target.getData())); + + } + + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformJson4Test.java b/src/test/java/com/eactive/eai/transformer/TransformJson4Test.java new file mode 100644 index 0000000..e4a9cd9 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformJson4Test.java @@ -0,0 +1,204 @@ +package com.eactive.eai.transformer; + +import java.util.Iterator; + +import org.json.simple.JSONObject; +import org.json.simple.JSONValue; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.transform.Transform; +import com.eactive.eai.transformer.transform.TransformManager; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformJson4Test extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformJson4Test(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformJson4Test.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + +// public void testJsonToFlatTransform() throws Exception { +// //logger.debug("Transform08900001Test | testTransform()"); +// +// //---------------------------------------------------------------------- +// // source message 생성 +// //---------------------------------------------------------------------- +// String data ="{\"EAI\":{\"INDIVIDUAL\":{\"addr\":\"\",\"deptNm\":\"D\",\"deptCd\":\"12000\",\"email\":\"\",\"telNo\":\"\"},\"COMMON\":{\"empNo\":\"0200\"}}}"; +// +// Message source = MessageFactory.getFactory().getMessage("TST_JSN0400KEDS2_REQ1"); +// source.setData(data.getBytes()); +// System.out.println(source); +// +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_TST_JSN0400KEDS2_REQ", new Message[] { source }); +// +//// System.out.println(target); +// System.out.println(target.toString()); +// +// } + + + + public void testUJsonToXmlTransform() throws Exception { + System.out.println("Json TO Xml =============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + data = "{\"ACCT_ROWCNT\":2\r\n,\"ACCT_DATAGRID\":[\r\n" + + "{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000000\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000001\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000002\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000003\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000004\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000005\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000006\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000007\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000008\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000009\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000010\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + "]" + + "}"; + + + + Message source = MessageFactory.getFactory().getMessage("XYZ_SITT00000107_REQ"); + System.out.println("source===="+source); + + String rootItemName = source.getLayout().getRootItem().getName(); + JSONObject value = (JSONObject) JSONValue.parse(data); + JSONObject root = new JSONObject(); + root.put(rootItemName, value); + data = root.toJSONString(); + + //참조정보 제거 + for (Iterator iter = source.fullIterator(); iter.hasNext(); ) { + Item x = (Item) iter.next(); + if (x.getOccRef() !=null && x.getOccRef().trim().length() > 0 ){ + x.setOccRef(""); + System.out.println("remove occRef=>"+x.getItemPath()); + } + } + +// Item item =source.getItem("XYZ_SITT00000107_REQ[-1].ACCT_DATAGRID[-1]",false); +// System.out.println(item.getItemPath()+"=>"+item); +// System.out.println("--------"+item.getOccRef());; +// item.setOccRef(""); +// System.out.println("--------"+item.getOccRef());; +// System.out.println(item.getItemPath()+"=>"+item); + + + + source.setData(data.getBytes("UTF-8")); + System.out.println(source.getData()); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + + + Transform transform = TransformManager.getManager().getTransform("TRANSFORM_XYZ_MITTCBK00000012S1_REQ"); + + Message targetMessage =MessageFactory.getFactory().getMessage(transform.getTargetLayout().getName()); + //참조정보제거 + for (Iterator iter = targetMessage.fullIterator(); iter.hasNext(); ) { + Item x = (Item) iter.next(); + if (x.getOccRef() !=null && x.getOccRef().trim().length() > 0 ){ + x.setOccRef(""); + System.out.println("remove occRef=>"+x.getItemPath()); + } + } + +// Message target = transformer.transform("TRANSFORM_XYZ_MITTCBK00000012S1_REQ", new Message[] { source }); + Message target = transformer.transform("TRANSFORM_XYZ_MITTCBK00000012S1_REQ",targetMessage, new Message[] { source },null).getResultMessage(); + + System.out.println("["+target.getData()+"]"); + System.out.println("dddddddddddddd"+target); + +// Item item = target; +// ArrayList alist = getItemInfo(item, 0 ,false ); + + + } + public void atestUJsonToXmlTransform1() throws Exception { + System.out.println("Json TO Xml =============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + data = "{\"ACCT_ROWCNT\":2\r\n,\"ACCT_DATAGRID\":[\r\n" + + "{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000000\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000001\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000002\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000003\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000004\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000005\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000006\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000007\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000008\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000009\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000010\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + "]" + + "}"; + data = "{\"ACCT_DATAGRID\":[\r\n" + + "{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000000\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000001\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000002\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000003\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000004\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000005\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000006\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000007\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000008\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000009\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + ",{\"ACCT_RAMT\":1000000,\"ACNO\":\"00000000000010\",\"ACCT_DESC\":\"테스트계좌입니다\"}\r\n" + + "]" + + "}"; + + + Object result = TransformService.transform("", true, "TRANSFORM_XYZ_MITTCBK00000012S1_REQ", new Object[]{data}, true); + + System.out.println(new String((byte[])result,"UTF-8")); + + + + } + + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformJsonApiTest.java b/src/test/java/com/eactive/eai/transformer/TransformJsonApiTest.java new file mode 100644 index 0000000..9c05af9 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformJsonApiTest.java @@ -0,0 +1,70 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformJsonApiTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformJsonApiTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformJsonApiTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testFlatToJsonTransform() throws Exception { + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data ="T991587760U100001138 "; + Message source = MessageFactory.getFactory().getMessage("CAR_EDLKO1201200_REQ1"); + source.setData(data.getBytes()); + System.out.println(source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_CAR_EDLKO1201200CAR_REQ", new Message[] { source }); + + +// System.out.println(target); + System.out.println(target.toString()); + System.out.println("testFlatToJsonTransform >> [["+target.getData()+"]]"); + + } + + + + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformJsonDoubleGridTest.java b/src/test/java/com/eactive/eai/transformer/TransformJsonDoubleGridTest.java new file mode 100644 index 0000000..4421359 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformJsonDoubleGridTest.java @@ -0,0 +1,313 @@ +package com.eactive.eai.transformer; + +import org.json.simple.JSONObject; +import org.json.simple.JSONValue; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.JSONMessage; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformJsonDoubleGridTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + private static boolean RUN_TRANSFORM = true; + + public TransformJsonDoubleGridTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformJsonDoubleGridTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testFlatToJsonTransform() throws Exception { + System.out.println("Flat TO Json double grid =============================================================="); + String encoding = System.getProperty("file.encoding"); + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data ="0302한글000000111111111133333333334444444444015555555555666666666603555555555566666666665555555555666666666655555555556666666666" + +"1234500000"; + + Message source = MessageFactory.getFactory().getMessage("FLAT_DGRID_REQ1"); + System.out.println("org : " + source); + + System.out.println("\n\n>> SET-DATA file.encoding - " + encoding); + + source.setData(data.getBytes("ms949")); + System.out.println("set :" + source); + + if(RUN_TRANSFORM) { + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_DGRIDTEST_RES", new Message[] { source }); + + +// System.out.println(target); + System.out.println(target.toString()); + System.out.println("testFlatToJsonTransform >> ["+target.getData()+"]"); + } + } + + public void atestJsonToFlatSingleTransform() throws Exception { + System.out.println("Json TO Flat Single Grid =============================================================="); + logger.debug("TransformJsonDoubleGridTest | testJsonToFlatSingleTransform()"); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + + data = "{\"HDR1\":\"HDR0000001\", \"HDR2\":\"HDR0000002\"" + + ", \"GINDEX1\":\"2\"" + +",\"GRID1\":[" + +" {\"FLD11\":\"FVAL1\"}," + +" {\"FLD11\":\"FVAL2\"}]" + +",\"ARRAY1\":[\"A1\",\"A2\"]" + +"}"; + +// data = "{}"; + + Message source = MessageFactory.getFactory().getMessage("JSON_SGRID_REQ1"); + + String rootItemName = ((JSONMessage) source).getLayout().getRootItem().getName(); + + System.out.println(source); + + System.out.println("Source text Data : " + data); + + JSONObject value = (JSONObject) JSONValue.parse(data); + JSONObject root = new JSONObject(); + root.put(rootItemName, value); + data = root.toJSONString(); + + System.out.println(data); + source.setData(data.getBytes()); + + System.out.println(source); + System.out.println(source.getData()); + if(RUN_TRANSFORM) { + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_SGRIDTEST_REQ", new Message[] { source }); + + System.out.println(target); + + System.out.println("target bytes ["+new String((byte[])target.getData())+"]"); + + transformer = engine.getTransformer(); + target = transformer.transform("TRANSFORM_SGRIDTEST_REQ", new Message[] { source }); + + System.out.println(target); + + System.out.println("target bytes ["+new String((byte[])target.getData())+"]"); + } + } + + public void atestJsonToFlatTransform() throws Exception { + System.out.println("Json TO Flat Double Grid =============================================================="); + logger.debug("TransformJsonDoubleGridTest | testJsonToFlatTransform()"); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; +// 2, 1 - OK +// data = " {\"GINDEX1\":\"2\"," +// +"\"GRID1\":[" +// +" {\"GINDEX2\":\"2\",\"GRID2\":" +// +" [{\"FLD21\":\"0000000000\",\"FLD22\":\"1111111111\"}," +// +" {\"FLD21\":\"3333333333\",\"FLD22\":\"4444444444\"}]}," +// +" {\"GINDEX2\":\"1\",\"GRID2\":" +// +" [{\"FLD21\":\"5555555555\",\"FLD22\":\"6666666666\"}]}" +// +"]}"; + + // 2, 1, 1, 3 - OK +// data = " {\"GINDEX1\":\"4\"," +// +"\"GRID1\":[" +// +" {\"GINDEX2\":\"2\",\"GRID2\":" +// +" [{\"FLD21\":\"0000000000\",\"FLD22\":\"1111111111\"}," +// +" {\"FLD21\":\"3333333333\",\"FLD22\":\"4444444444\"}]}," +// +" {\"GINDEX2\":\"1\",\"GRID2\":[" +// +" {\"FLD21\":\"5555555555\",\"FLD22\":\"6666666666\"}]}," +// +" {\"GINDEX2\":\"1\",\"GRID2\":[" +// +" {\"FLD21\":\"5555555555\",\"FLD22\":\"6666666666\"}]}," +// +" {\"GINDEX2\":\"3\",\"GRID2\":[" +// +" {\"FLD21\":\"3100000000\",\"FLD22\":\"3200000000\"}," +// +" {\"FLD21\":\"4100000000\",\"FLD22\":\"4200000000\"}," +// +" {\"FLD21\":\"5100000000\",\"FLD22\":\"5200000000\"}]}" +// +"]}"; + // 2, 3, 1, 1 - OK + data = + "{" + +"\"GROUP1\":{" + +"\"GINDEX1\":\"5\"," + +"\"GRID1\":[" + +" {\"GINDEX2\":\"2\",\"GRID2\":" + +" [{\"FLD21\":\"0000000000\",\"FLD22\":\"1111111111\"}," + +" {\"FLD21\":\"3333333333\",\"FLD22\":\"4444444444\"}]" + +"}" + +" ,{\"GINDEX2\":\"3\",\"GRID2\":[" + +" {\"FLD21\":\"3100000000\",\"FLD22\":\"3200000000\"}," + +" {\"FLD21\":\"4100000000\",\"FLD22\":\"4200000000\"}," + +" {\"FLD21\":\"5100000000\",\"FLD22\":\"5200000000\"}]" + +"}" + +",{\"GINDEX2\":\"1\",\"GRID2\":[" + +" {\"FLD21\":\"5255555555\",\"FLD22\":\"6266666666\"}]}," + +" {\"GINDEX2\":\"1\",\"GRID2\":[" + +" {\"FLD21\":\"5355555555\",\"FLD22\":\"6366666666\"}]}," + +" {\"GINDEX2\":\"1\",\"GRID2\":[" + +" {\"FLD21\":\"5555555555\",\"FLD22\":\"6566666666\"}]}" + +"]" + +" }" + +"}"; + + // 3, 1, 2 - OK +// data = " {\"GINDEX1\":\"3\"," +// +"\"GRID1\":[" +// +" {\"GINDEX2\":\"3\",\"GRID2\":" +// +" [{\"FLD21\":\"0000000000\",\"FLD22\":\"1111111111\"}," +// +" {\"FLD21\":\"4100000000\",\"FLD22\":\"4200000000\"}," +// +" {\"FLD21\":\"3333333333\",\"FLD22\":\"4444444444\"}]}," +// +" {\"GINDEX2\":\"1\",\"GRID2\":[" +// +" {\"FLD21\":\"5555555555\",\"FLD22\":\"6666666666\"}]}," +// +" {\"GINDEX2\":\"2\",\"GRID2\":[" +// +" {\"FLD21\":\"3100000000\",\"FLD22\":\"3200000000\"}," +// +" {\"FLD21\":\"5100000000\",\"FLD22\":\"5200000000\"}]}" +// +"]}"; + + // 1,2,3 - 1, 2, 3 OK +// data = " {\"GINDEX1\":\"3\"," +// +"\"GRID1\":[" +// +" {\"GINDEX2\":\"1\",\"GRID2\":[" +// +" {\"FLD21\":\"5555555555\",\"FLD22\":\"6666666666\"}]}," +// +" {\"GINDEX2\":\"2\",\"GRID2\":" +// +" [{\"FLD21\":\"0000000000\",\"FLD22\":\"1111111111\"}," +// +" {\"FLD21\":\"3333333333\",\"FLD22\":\"4444444444\"}]}," +// +" {\"GINDEX2\":\"3\",\"GRID2\":[" +// +" {\"FLD21\":\"3100000000\",\"FLD22\":\"3200000000\"}," +// +" {\"FLD21\":\"4100000000\",\"FLD22\":\"4200000000\"}," +// +" {\"FLD21\":\"5100000000\",\"FLD22\":\"5200000000\"}]}" +// +"]}"; + + +// 1. 2 OK +// data = " {\"GINDEX1\":\"2\"," +// +"\"GRID1\":[" +// +" {\"GINDEX2\":\"1\",\"GRID2\":" +// +" [{\"FLD21\":\"0000000000\",\"FLD22\":\"1111111111\"}]}," +// +" {\"GINDEX2\":\"2\",\"GRID2\":" +// +" [{\"FLD21\":\"3333333333\",\"FLD22\":\"4444444444\"},{\"FLD21\":\"5555555555\",\"FLD22\":\"6666666666\"}]}" +// +"]}"; + +// data = "{}"; + + Message source = MessageFactory.getFactory().getMessage("JSON_DGRID_REQ1"); + + String rootItemName = ((JSONMessage) source).getLayout().getRootItem().getName(); + + System.out.println(source); + + JSONObject value = (JSONObject) JSONValue.parse(data); + JSONObject root = new JSONObject(); + root.put(rootItemName, value); + data = root.toJSONString(); + + System.out.println(data); + source.setData(data.getBytes()); + + System.out.println(source); + System.out.println(source.getData()); + if(RUN_TRANSFORM) { + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_DGRIDTEST_REQ", new Message[] { source }); + + System.out.println(target); + + System.out.println("target bytes ["+new String((byte[])target.getData())+"]"); + + transformer = engine.getTransformer(); + target = transformer.transform("TRANSFORM_DGRIDATEST_REQ", new Message[] { source }); + + System.out.println(target); + + System.out.println("target bytes ["+new String((byte[])target.getData())+"]"); + } + } + + + public void atestXmlToFlatTransform() throws Exception { + System.out.println("XML TO Flat Double Grid =============================================================="); + logger.debug("TransformJsonDoubleGridTest | testXmlToFlatTransform()"); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; +// ERROR + data = "" + +"3" + +"" + +"2" + +"00000000001111111111" + +"33333333334444444444" + +"" + +"" + +"1" + +"215555555566666666666" + +"" + +"" + +"3" + +"315555555566666666666" + +"325555555566666666666" + +"335555555566666666666" + +"" + +""; + + Message source = MessageFactory.getFactory().getMessage("XML_DGRID_REQ1"); + + System.out.println(source); + + System.out.println(data); + source.setData(data); + + System.out.println(source); + System.out.println(source.getData()); + + if(RUN_TRANSFORM) { + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_XDGRIDTEST_REQ", new Message[] { source }); + + System.out.println(target); + + System.out.println("target bytes ["+new String((byte[])target.getData())+"]"); + } + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformJsonEmptyTest.java b/src/test/java/com/eactive/eai/transformer/TransformJsonEmptyTest.java new file mode 100644 index 0000000..1339c36 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformJsonEmptyTest.java @@ -0,0 +1,94 @@ +//package com.eactive.eai.transformer; +// +//import org.json.simple.JSONObject; +//import org.json.simple.JSONValue; +// +//import com.eactive.eai.common.util.Logger; +//import com.eactive.eai.transformer.engine.TransformEngine; +//import com.eactive.eai.transformer.engine.Transformer; +//import com.eactive.eai.transformer.message.Message; +//import com.eactive.eai.transformer.message.MessageFactory; +//import com.ext.eai.common.stdmessage.parser.STDMessageParserJSN; +// +//import junit.framework.Test; +//import junit.framework.TestCase; +//import junit.framework.TestSuite; +// +// +//public class TransformJsonEmptyTest extends TestCase { +// protected static Logger logger = Logger.getLogger("transformer"); +// +// TransformEngine engine = null; +// +// +// public TransformJsonEmptyTest(String name) { +// super(name); +// } +// +// public static Test suite() { +// /* +// * the dynamic way +// */ +// return new TestSuite(TransformJsonEmptyTest.class); +// } +// +// public void setUp() throws Exception { +// +// // 변환 초기화 +// engine = TransformEngine.getInstance(); +// +// if (!engine.isStarted()) { +// engine.start(); +// } +// } +// +// public void tearDown() throws Exception { +// // +// } +// +// public void testJsonEmptyToXml() throws Exception { +// System.out.println("Json TO Xml =============================================================="); +// +// //---------------------------------------------------------------------- +// // source message 생성 +// //---------------------------------------------------------------------- +// String jsonStandard = null; +// // empty +// jsonStandard = "{\"Header\":{\"StndCicsTrncd\":\" \",\"StndIntnlStndTelgmLen\":1304,\"StndTranBaseYmd\":\"20200312\",\"StndGuIdNo\":\"KB0FIAWSD010520200312141031000898012\",\"StndTelgmDmndDstcd\":\"S\",\"StndTelgmFmatDstcd\":\"0\",\"StndTelgmValdYmd\":\"99991231\",\"StndTelgmVsnno\":\"200\",\"StndGnrzToutCrtcNmvl\":999,\"StndSysidName\":\" \",\"StndOgtranRChnlDstcd\":\" \",\"StndPrcssTCicsTrncd\":\" \",\"StndTranPGroupCoCd\":\"KB0\",\"StndHdrSpareArea\":\" \"},\"Common\":{\"TranInfo\":{\"StndGroupCoCd\":\"KB0\",\"StndTelgmRecvTranCd\":\"PDC72984S1 \",\"StndPrcssRtdTranCd\":\" BFG \",\"StndScrenNo\":\"00000000000\",\"StndOsidInstiCd\":\" \",\"StndTranSerno\":\"K00500000898\",\"StndInoPartlDstcd\":\"1\",\"StndCmpxTranDmndDstcd\":\"0\",\"StndSysOperEvirnDstcd\":\"D\",\"StndItsmMoniTagetYn\":\"1\",\"StndTranPtrnDstcd\":\"1\",\"StndRbndTranYn\":\"0\",\"StndTermlWaitRqstYn\":\"0\",\"StndOgtranRstrYn\":\" \",\"StndOgtranGuIdNo\":\" \"},\"ChnlInfo\":{\"StndBnkCd\":\"004\",\"StndTranBrncd\":\"0749\",\"StndFeePrcssBrncd\":\"000 \",\"StndRelayChnlDstcd\":\"02\",\"StndChnlDstcd\":\"03\",\"StndChnlDBzwkDstcd\":\"40\",\"StndMdiaDstcd\":\"01\",\"StndLangDstcd\":\"KOR\",\"StndTrmno\":\"TS2\",\"StndUserEmpid\":\"C900016\",\"StndTermlOprtrno\":\"01\",\"StndTermlSpvsrNo\":\"00\",\"StndN1StSpvsrBrncd\":\"0000\",\"StndN2NdSpvsrBrncd\":\"0000\",\"StndN2NdSpvsrTrmno\":\"000\"},\"InMsgInfo\":{\"StndInptMsgPtrnDstcd\":\"11\",\"StndInptMsgCtnnYn\":\"0\",\"StndInptMsgSerno\":0,\"StndInptMsgWritYms\":\"20200312141031928000\"},\"AthorInfo\":{\"StndAthorFnshDstcd\":\"0\",\"StndSpvsrAthorDstcd\":\"0\",\"StndN1StSpvsrEmpid\":\" \",\"StndN2NdSpvsrEmpid\":\" \",\"StndSpvsrAResnNoitm\":0,\"StndSpvsrAthorResnCd_1\":\"\",\"StndSpvsrAthorResnCd_2\":\"\",\"StndSpvsrAthorResnCd_3\":\"\",\"StndSpvsrAthorResnCd_4\":\"\",\"StndSpvsrAthorResnCd_5\":\"\",\"StndSpvsrAthorResnCd_6\":\"\",\"StndSpvsrAthorResnCd_7\":\"\",\"StndSpvsrAthorResnCd_8\":\"\",\"StndSpvsrAthorResnCd_9\":\"\",\"StndSpvsrAthorResnCd_10\":\"\"},\"EntrBnkBzwkCmn\":{\"StndClsngAfYn\":\"0\",\"StndLsdtTranYn\":\"0\",\"StndIdtrek\":\" \",\"StndBzoprDdDstcd\":\" \",\"StndSodBbrnPtrnDstcd\":\"0 \",\"StndSodUserPtrnDstcd\":\"0 \",\"StndInotAbilYn\":\"0\",\"StndNoRtaUserYn\":\"0\",\"StndTranDscnDmndYn\":\"0\",\"StndCallgPgmName\":\" \",\"StndRecvLuName\":\"52:17902\",\"StndCnclDstcd\":\"0\",\"StndCnclPtrnDstcd\":\"0\",\"StndTranCcResnDstcd\":\"00\",\"StndTranCcResnCtnt\":\" \",\"StndOgtranYms\":\" \",\"StndCnclRstrInfoCtnt\":\" \",\"StndDscnTranDstcd\":\"0\",\"StndIdiviDataEdtYn\":\"1\",\"StndOpbrnCd\":\"0099\",\"StndCncutIScopAddr\":\"0099\"},\"OutMsgInfo\":{\"StndOutptDPtrnDstcd\":\"00\",\"StndOutptMsgPtrnDstcd\":\"00\",\"StndOutptMsgCtnnYn\":\" \",\"StndOutptMsgSerno\":0,\"StndOutptMsgWritYms\":\" \",\"StndUserPaNotacrdYn\":\" \"},\"ErrInfo\":{\"StndErrcd\":\" \",\"StndTreatCd\":\" \",\"StndCncutDscnRqstYn\":\" \"},\"SpareArea\":{\"StndFworkCiScopAddr\":\" \",\"StndIntfacSendTranCd\":\"BFG71E04R3 \",\"StndCnclEcludYn\":\" \",\"StndTrsmtRqstId\":\"I0100022\",\"StndCnclAbilYn\":\" \",\"StndOutptMdiaEdtNo\":\" \",\"StndAtmCshRetunDstcd\":\" \",\"StndSendEaiSvcName\":\" \",\"StndLuSndrcvTypDstcd\":\" \",\"StndDteCAllowTranYn\":\" \",\"StndIpAddr\":\" \",\"StndChcmnLen\":200,\"StndComSpareArea\":\" \",\"StndTestCasId\":\"KKKKKKK\",\"StndInptMdiaPartlLen\":400}},\"ChannelCommon\":{\"ChcmnIdnfiInfoDstcd\":\"1\",\"ChcmnIdnfiInfo\":\"d3AbQkuc3FyER9yLcALcDx8 \",\"ChcmnMberDstcd\":\"2\",\"ChcmnMberId\":\" \",\"ChcmnOsVsndcd\":\"3\",\"ChcmnBrsr\":\"1\",\"ChcmnAppKndVsn\":\"5.0| \",\"ChcmnLginInfo\":\" \",\"ChcmnCertnKnd\":\" \",\"ChcmnScurtyMdiaDstcd\":\" \",\"ChcmnElctrSignKnd\":\" \",\"ChcmnDpmsgTelno\":\" \",\"ChcmnParntScrenNo\":\" \",\"ChcmnCallgWayDstcd\":\" \",\"ChcmnCallgPtrnDstcd\":\" \",\"ChcmnScrenCallgHms\":\" \",\"ChcmnDgtlFxdfUseYn\":\" \",\"ChcmnIdcdScnYn\":\" \",\"ChcmnBioCertnYn\":\" \",\"ChcmnCnterDstcd\":\" \",\"ChcmnCnselGroupDstcd\":\" \",\"ChcmnCnselPartDstcd\":\" \",\"ChcmnMakingTranDstcd\":\" \",\"ChcmnTbltTranDstcd\":\" \",\"ChcmnTbltDmndTranYn\":\" \",\"ChcmnSpareArea\":\" \"},\"Individual\":{\"InDataCommon\":\" \",\"InData\":{}}}"; +// +// // no tag +//// jsonStandard = "{\"Header\":{\"StndCicsTrncd\":\" \",\"StndIntnlStndTelgmLen\":1304,\"StndTranBaseYmd\":\"20200312\",\"StndGuIdNo\":\"KB0FIAWSD010520200312141031000898012\",\"StndTelgmDmndDstcd\":\"S\",\"StndTelgmFmatDstcd\":\"0\",\"StndTelgmValdYmd\":\"99991231\",\"StndTelgmVsnno\":\"200\",\"StndGnrzToutCrtcNmvl\":999,\"StndSysidName\":\" \",\"StndOgtranRChnlDstcd\":\" \",\"StndPrcssTCicsTrncd\":\" \",\"StndTranPGroupCoCd\":\"KB0\",\"StndHdrSpareArea\":\" \"},\"Common\":{\"TranInfo\":{\"StndGroupCoCd\":\"KB0\",\"StndTelgmRecvTranCd\":\"PDC72984S1 \",\"StndPrcssRtdTranCd\":\" BFG \",\"StndScrenNo\":\"00000000000\",\"StndOsidInstiCd\":\" \",\"StndTranSerno\":\"K00500000898\",\"StndInoPartlDstcd\":\"1\",\"StndCmpxTranDmndDstcd\":\"0\",\"StndSysOperEvirnDstcd\":\"D\",\"StndItsmMoniTagetYn\":\"1\",\"StndTranPtrnDstcd\":\"1\",\"StndRbndTranYn\":\"0\",\"StndTermlWaitRqstYn\":\"0\",\"StndOgtranRstrYn\":\" \",\"StndOgtranGuIdNo\":\" \"},\"ChnlInfo\":{\"StndBnkCd\":\"004\",\"StndTranBrncd\":\"0749\",\"StndFeePrcssBrncd\":\"000 \",\"StndRelayChnlDstcd\":\"02\",\"StndChnlDstcd\":\"03\",\"StndChnlDBzwkDstcd\":\"40\",\"StndMdiaDstcd\":\"01\",\"StndLangDstcd\":\"KOR\",\"StndTrmno\":\"TS2\",\"StndUserEmpid\":\"C900016\",\"StndTermlOprtrno\":\"01\",\"StndTermlSpvsrNo\":\"00\",\"StndN1StSpvsrBrncd\":\"0000\",\"StndN2NdSpvsrBrncd\":\"0000\",\"StndN2NdSpvsrTrmno\":\"000\"},\"InMsgInfo\":{\"StndInptMsgPtrnDstcd\":\"11\",\"StndInptMsgCtnnYn\":\"0\",\"StndInptMsgSerno\":0,\"StndInptMsgWritYms\":\"20200312141031928000\"},\"AthorInfo\":{\"StndAthorFnshDstcd\":\"0\",\"StndSpvsrAthorDstcd\":\"0\",\"StndN1StSpvsrEmpid\":\" \",\"StndN2NdSpvsrEmpid\":\" \",\"StndSpvsrAResnNoitm\":0,\"StndSpvsrAthorResnCd_1\":\"\",\"StndSpvsrAthorResnCd_2\":\"\",\"StndSpvsrAthorResnCd_3\":\"\",\"StndSpvsrAthorResnCd_4\":\"\",\"StndSpvsrAthorResnCd_5\":\"\",\"StndSpvsrAthorResnCd_6\":\"\",\"StndSpvsrAthorResnCd_7\":\"\",\"StndSpvsrAthorResnCd_8\":\"\",\"StndSpvsrAthorResnCd_9\":\"\",\"StndSpvsrAthorResnCd_10\":\"\"},\"EntrBnkBzwkCmn\":{\"StndClsngAfYn\":\"0\",\"StndLsdtTranYn\":\"0\",\"StndIdtrek\":\" \",\"StndBzoprDdDstcd\":\" \",\"StndSodBbrnPtrnDstcd\":\"0 \",\"StndSodUserPtrnDstcd\":\"0 \",\"StndInotAbilYn\":\"0\",\"StndNoRtaUserYn\":\"0\",\"StndTranDscnDmndYn\":\"0\",\"StndCallgPgmName\":\" \",\"StndRecvLuName\":\"52:17902\",\"StndCnclDstcd\":\"0\",\"StndCnclPtrnDstcd\":\"0\",\"StndTranCcResnDstcd\":\"00\",\"StndTranCcResnCtnt\":\" \",\"StndOgtranYms\":\" \",\"StndCnclRstrInfoCtnt\":\" \",\"StndDscnTranDstcd\":\"0\",\"StndIdiviDataEdtYn\":\"1\",\"StndOpbrnCd\":\"0099\",\"StndCncutIScopAddr\":\"0099\"},\"OutMsgInfo\":{\"StndOutptDPtrnDstcd\":\"00\",\"StndOutptMsgPtrnDstcd\":\"00\",\"StndOutptMsgCtnnYn\":\" \",\"StndOutptMsgSerno\":0,\"StndOutptMsgWritYms\":\" \",\"StndUserPaNotacrdYn\":\" \"},\"ErrInfo\":{\"StndErrcd\":\" \",\"StndTreatCd\":\" \",\"StndCncutDscnRqstYn\":\" \"},\"SpareArea\":{\"StndFworkCiScopAddr\":\" \",\"StndIntfacSendTranCd\":\"BFG71E04R3 \",\"StndCnclEcludYn\":\" \",\"StndTrsmtRqstId\":\"I0100022\",\"StndCnclAbilYn\":\" \",\"StndOutptMdiaEdtNo\":\" \",\"StndAtmCshRetunDstcd\":\" \",\"StndSendEaiSvcName\":\" \",\"StndLuSndrcvTypDstcd\":\" \",\"StndDteCAllowTranYn\":\" \",\"StndIpAddr\":\" \",\"StndChcmnLen\":200,\"StndComSpareArea\":\" \",\"StndTestCasId\":\"KKKKKKK\",\"StndInptMdiaPartlLen\":400}},\"ChannelCommon\":{\"ChcmnIdnfiInfoDstcd\":\"1\",\"ChcmnIdnfiInfo\":\"d3AbQkuc3FyER9yLcALcDx8 \",\"ChcmnMberDstcd\":\"2\",\"ChcmnMberId\":\" \",\"ChcmnOsVsndcd\":\"3\",\"ChcmnBrsr\":\"1\",\"ChcmnAppKndVsn\":\"5.0| \",\"ChcmnLginInfo\":\" \",\"ChcmnCertnKnd\":\" \",\"ChcmnScurtyMdiaDstcd\":\" \",\"ChcmnElctrSignKnd\":\" \",\"ChcmnDpmsgTelno\":\" \",\"ChcmnParntScrenNo\":\" \",\"ChcmnCallgWayDstcd\":\" \",\"ChcmnCallgPtrnDstcd\":\" \",\"ChcmnScrenCallgHms\":\" \",\"ChcmnDgtlFxdfUseYn\":\" \",\"ChcmnIdcdScnYn\":\" \",\"ChcmnBioCertnYn\":\" \",\"ChcmnCnterDstcd\":\" \",\"ChcmnCnselGroupDstcd\":\" \",\"ChcmnCnselPartDstcd\":\" \",\"ChcmnMakingTranDstcd\":\" \",\"ChcmnTbltTranDstcd\":\" \",\"ChcmnTbltDmndTranYn\":\" \",\"ChcmnSpareArea\":\" \"},\"Individual\":{\"InDataCommon\":\" \"}}"; +//// +// // exist inData +// jsonStandard = "{\"Header\":{\"StndCicsTrncd\":\" \",\"StndIntnlStndTelgmLen\":1304,\"StndTranBaseYmd\":\"20200312\",\"StndGuIdNo\":\"KB0FIAWSD010520200312141031000898012\",\"StndTelgmDmndDstcd\":\"S\",\"StndTelgmFmatDstcd\":\"0\",\"StndTelgmValdYmd\":\"99991231\",\"StndTelgmVsnno\":\"200\",\"StndGnrzToutCrtcNmvl\":999,\"StndSysidName\":\" \",\"StndOgtranRChnlDstcd\":\" \",\"StndPrcssTCicsTrncd\":\" \",\"StndTranPGroupCoCd\":\"KB0\",\"StndHdrSpareArea\":\" \"},\"Common\":{\"TranInfo\":{\"StndGroupCoCd\":\"KB0\",\"StndTelgmRecvTranCd\":\"PDC72984S1 \",\"StndPrcssRtdTranCd\":\" BFG \",\"StndScrenNo\":\"00000000000\",\"StndOsidInstiCd\":\" \",\"StndTranSerno\":\"K00500000898\",\"StndInoPartlDstcd\":\"1\",\"StndCmpxTranDmndDstcd\":\"0\",\"StndSysOperEvirnDstcd\":\"D\",\"StndItsmMoniTagetYn\":\"1\",\"StndTranPtrnDstcd\":\"1\",\"StndRbndTranYn\":\"0\",\"StndTermlWaitRqstYn\":\"0\",\"StndOgtranRstrYn\":\" \",\"StndOgtranGuIdNo\":\" \"},\"ChnlInfo\":{\"StndBnkCd\":\"004\",\"StndTranBrncd\":\"0749\",\"StndFeePrcssBrncd\":\"000 \",\"StndRelayChnlDstcd\":\"02\",\"StndChnlDstcd\":\"03\",\"StndChnlDBzwkDstcd\":\"40\",\"StndMdiaDstcd\":\"01\",\"StndLangDstcd\":\"KOR\",\"StndTrmno\":\"TS2\",\"StndUserEmpid\":\"C900016\",\"StndTermlOprtrno\":\"01\",\"StndTermlSpvsrNo\":\"00\",\"StndN1StSpvsrBrncd\":\"0000\",\"StndN2NdSpvsrBrncd\":\"0000\",\"StndN2NdSpvsrTrmno\":\"000\"},\"InMsgInfo\":{\"StndInptMsgPtrnDstcd\":\"11\",\"StndInptMsgCtnnYn\":\"0\",\"StndInptMsgSerno\":0,\"StndInptMsgWritYms\":\"20200312141031928000\"},\"AthorInfo\":{\"StndAthorFnshDstcd\":\"0\",\"StndSpvsrAthorDstcd\":\"0\",\"StndN1StSpvsrEmpid\":\" \",\"StndN2NdSpvsrEmpid\":\" \",\"StndSpvsrAResnNoitm\":0,\"StndSpvsrAthorResnCd_1\":\"\",\"StndSpvsrAthorResnCd_2\":\"\",\"StndSpvsrAthorResnCd_3\":\"\",\"StndSpvsrAthorResnCd_4\":\"\",\"StndSpvsrAthorResnCd_5\":\"\",\"StndSpvsrAthorResnCd_6\":\"\",\"StndSpvsrAthorResnCd_7\":\"\",\"StndSpvsrAthorResnCd_8\":\"\",\"StndSpvsrAthorResnCd_9\":\"\",\"StndSpvsrAthorResnCd_10\":\"\"},\"EntrBnkBzwkCmn\":{\"StndClsngAfYn\":\"0\",\"StndLsdtTranYn\":\"0\",\"StndIdtrek\":\" \",\"StndBzoprDdDstcd\":\" \",\"StndSodBbrnPtrnDstcd\":\"0 \",\"StndSodUserPtrnDstcd\":\"0 \",\"StndInotAbilYn\":\"0\",\"StndNoRtaUserYn\":\"0\",\"StndTranDscnDmndYn\":\"0\",\"StndCallgPgmName\":\" \",\"StndRecvLuName\":\"52:17902\",\"StndCnclDstcd\":\"0\",\"StndCnclPtrnDstcd\":\"0\",\"StndTranCcResnDstcd\":\"00\",\"StndTranCcResnCtnt\":\" \",\"StndOgtranYms\":\" \",\"StndCnclRstrInfoCtnt\":\" \",\"StndDscnTranDstcd\":\"0\",\"StndIdiviDataEdtYn\":\"1\",\"StndOpbrnCd\":\"0099\",\"StndCncutIScopAddr\":\"0099\"},\"OutMsgInfo\":{\"StndOutptDPtrnDstcd\":\"00\",\"StndOutptMsgPtrnDstcd\":\"00\",\"StndOutptMsgCtnnYn\":\" \",\"StndOutptMsgSerno\":0,\"StndOutptMsgWritYms\":\" \",\"StndUserPaNotacrdYn\":\" \"},\"ErrInfo\":{\"StndErrcd\":\" \",\"StndTreatCd\":\" \",\"StndCncutDscnRqstYn\":\" \"},\"SpareArea\":{\"StndFworkCiScopAddr\":\" \",\"StndIntfacSendTranCd\":\"BFG71E04R3 \",\"StndCnclEcludYn\":\" \",\"StndTrsmtRqstId\":\"I0100022\",\"StndCnclAbilYn\":\" \",\"StndOutptMdiaEdtNo\":\" \",\"StndAtmCshRetunDstcd\":\" \",\"StndSendEaiSvcName\":\" \",\"StndLuSndrcvTypDstcd\":\" \",\"StndDteCAllowTranYn\":\" \",\"StndIpAddr\":\" \",\"StndChcmnLen\":200,\"StndComSpareArea\":\" \",\"StndTestCasId\":\"KKKKKKK\",\"StndInptMdiaPartlLen\":400}},\"ChannelCommon\":{\"ChcmnIdnfiInfoDstcd\":\"1\",\"ChcmnIdnfiInfo\":\"d3AbQkuc3FyER9yLcALcDx8 \",\"ChcmnMberDstcd\":\"2\",\"ChcmnMberId\":\" \",\"ChcmnOsVsndcd\":\"3\",\"ChcmnBrsr\":\"1\",\"ChcmnAppKndVsn\":\"5.0| \",\"ChcmnLginInfo\":\" \",\"ChcmnCertnKnd\":\" \",\"ChcmnScurtyMdiaDstcd\":\" \",\"ChcmnElctrSignKnd\":\" \",\"ChcmnDpmsgTelno\":\" \",\"ChcmnParntScrenNo\":\" \",\"ChcmnCallgWayDstcd\":\" \",\"ChcmnCallgPtrnDstcd\":\" \",\"ChcmnScrenCallgHms\":\" \",\"ChcmnDgtlFxdfUseYn\":\" \",\"ChcmnIdcdScnYn\":\" \",\"ChcmnBioCertnYn\":\" \",\"ChcmnCnterDstcd\":\" \",\"ChcmnCnselGroupDstcd\":\" \",\"ChcmnCnselPartDstcd\":\" \",\"ChcmnMakingTranDstcd\":\" \",\"ChcmnTbltTranDstcd\":\" \",\"ChcmnTbltDmndTranYn\":\" \",\"ChcmnSpareArea\":\" \"},\"Individual\":{\"InDataCommon\":\" \",{\"InData\":{\"첨부파일번호\":\"20190130151838525940\"}} }}"; +// +// STDMessageParserJSN parser = new STDMessageParserJSN(); +// +// String bizData = new String(parser.getDataValue(jsonStandard, true)); +// +// System.out.println("bizData=" + bizData); +// +// String rootItemName = "BFG_PDC72985S1_REQ1"; +// +// JSONObject value = (JSONObject)JSONValue.parse(bizData); +// JSONObject root = new JSONObject(); +// root.put(rootItemName, value); +// String jsonString = root.toJSONString(); +// +// System.out.println("jsonString=" + jsonString); +// Message source = MessageFactory.getFactory().getMessage(rootItemName); +// +// source.setData(jsonString); +// +// System.out.println(source.toString()); +// +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_BFG_PDC72985S1BFG_REQ", new Message[] { source }); +// System.out.println(target.toString()); +// System.out.println(target.getData()); +// +// } +//} diff --git a/src/test/java/com/eactive/eai/transformer/TransformJsonHangulTest.java b/src/test/java/com/eactive/eai/transformer/TransformJsonHangulTest.java new file mode 100644 index 0000000..a1d6997 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformJsonHangulTest.java @@ -0,0 +1,73 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +public class TransformJsonHangulTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformJsonHangulTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformJsonHangulTest.class); + } + + public void setUp() throws Exception { + + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + + public void testJsonToEbcdic() throws Exception { + System.out.println("Json TO Ebcdic =============================================================="); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data =""; + data = "{\"BFE_KFK124F440_REQ1\" : {\"InData\":{\"의뢰인성명\":\"홍길동\",\"출금계좌번호\":\"11111\",\"입금계좌번호\":\"33333\",\"스타샷거래구분코드\":null,\"적요\":\"\",\"출금내역메모입력여부\":null,\"송금인입력수취인명\":\"\",\"CMS코드번호3\":null,\"CMS코드번호1\":null,\"CMS코드번호2\":null,\"본인입금계좌여부\":null,\"이체금액\":\"44444\",\"비밀번호\":\"2222\",\"출금내역메모\":null}}}"; + + + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("BFE_KFK124F440_REQ1"); + + source.setData(data); + + System.out.println(source.toString()); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_BFE_KFK124F440BFE_REQ", new Message[] { source }); + System.out.println(target.toString()); + System.out.println(new String((byte[])target.getData())); + + } + + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformJsonMixedGridTest.java b/src/test/java/com/eactive/eai/transformer/TransformJsonMixedGridTest.java new file mode 100644 index 0000000..00f4b6b --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformJsonMixedGridTest.java @@ -0,0 +1,148 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformJsonMixedGridTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + private static boolean RUN_TRANSFORM = true; + + public TransformJsonMixedGridTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformJsonMixedGridTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testJsonGridTransform() throws Exception { + System.out.println("testJsonGridTransform =============================================================="); + logger.debug("TransformJsonDoubleGridTest | testJsonGrid3Transform()"); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + data = "{ " + + " \"head\": { " + + " \"contentType\": [ " + + " \"application/json;charset=UTF-8\" " + + " ] " + + " }, " + + " \"common\": { " + + " \"serviceID\": \"USER-5100\", " + + " \"languageCode\": \"en\", " + + " \"authToken\": \"\" " + + " }, " + + " \"data\": { " + + " \"clientListCnt\": 2, " + + " \"clientList\": [ " + + " { " + + " \"userName\": \"CHOU Srey Mao\", " + + " \"phoneNumber\": \"0967225506\", " + + " \"customerNo\": \"0009504\", " + + " \"dateOfBirth\": \"19820305\", " + + " \"detailAddress\": \"#01 phsa phnom den takeo\", " + + " \"idNumber\": \"030767098\", " + + " \"loanListCnt\": 4, " + + " \"loanList\": [ " + + " { " + + " \"loanProductCode\": \"2020202018221\", " + + " \"loanBalance\": \"20000.00\", " + + " \"lastTransactionDate\": \"20220203\" " + + " }, " + + " { " + + " \"loanProductCode\": \"2020101018221\", " + + " \"loanBalance\": \"0.00\", " + + " \"lastTransactionDate\": \"20220203\" " + + " }, " + + " { " + + " \"loanProductCode\": \"2020505018221\", " + + " \"loanBalance\": \"10000.00\", " + + " \"lastTransactionDate\": \"20220203\" " + + " }, " + + " { " + + " \"loanProductCode\": \"2020101018221\", " + + " \"loanBalance\": \"10000.00\", " + + " \"lastTransactionDate\": \"20220203\" " + + " } " + + " ] " + + " }, " + + " { " + + " \"userName\": \"CHOU Sreyol\", " + + " \"phoneNumber\": \"0880000000\", " + + " \"customerNo\": \"0009505\", " + + " \"dateOfBirth\": \"19850502\", " + + " \"detailAddress\": \"#01a tarong bati takeo cambodia\", " + + " \"idNumber\": \"030766897\", " + + " \"loanListCnt\": 1, " + + " \"loanList\": [ " + + " { " + + " \"loanProductCode\": \"2020101018221\", " + + " \"loanBalance\": \"0.00\", " + + " \"lastTransactionDate\": \"20220203\" " + + " } " + + " ] " + + " } " + + " ] " + + " }, " + + " \"statusCode\": \"200\", " + + " \"statusName\": \"OK\", " + + " \"message\": \"Success\", " + + " \"success\": \"true\" " + + "}"; + + Message source = MessageFactory.getFactory().getMessage("JSON_MIXED_REQ1"); + +// String rootItemName = ((JSONMessage) source).getLayout().getRootItem().getName(); + + System.out.println(source); + +// JSONObject value = (JSONObject) JSONValue.parse(data); +// JSONObject root = new JSONObject(); +// root.put(rootItemName, value); +// data = root.toJSONString(); + + System.out.println(data); + source.setData(data); + + System.out.println(source); + System.out.println(source.getData()); + if(RUN_TRANSFORM) { + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_JSONMIXEDTEST_REQ", new Message[] { source }); + + System.out.println(target); + + System.out.println("target bytes ["+target.getData()+"]"); + } + } + + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformJsonMultiGridTest.java b/src/test/java/com/eactive/eai/transformer/TransformJsonMultiGridTest.java new file mode 100644 index 0000000..4aa1032 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformJsonMultiGridTest.java @@ -0,0 +1,153 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.JSONMessage; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformJsonMultiGridTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + private static boolean RUN_TRANSFORM = true; + + public TransformJsonMultiGridTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformJsonMultiGridTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testFlatToJsonTransform() throws Exception { + long cTime = System.currentTimeMillis(); + System.out.println("Flat TO Json double grid =============================================================="); + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data ="030200000000 1111111111333333333344444444440150555555556066666666035155555555616666666652555555556266666666535555555563666666660002001234"; + Message source = MessageFactory.getFactory().getMessage("FLAT_DGRID_REQ1"); + System.out.println("org : " + source); + + System.out.println("\n\n>> SET-DATA"); + + source.setData(data.getBytes()); + System.out.println("set :" + source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_DGRIDTEST_RES", new Message[] { source }); + + +// System.out.println(target); + System.out.println(target.toString()); + System.out.println("JSON >> ["+target.getData()+"]"); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer2 = engine.getTransformer(); + Message target2 = transformer.transform("TRANSFORM_DGRIDTEST_REQ", new Message[] {target }); + + +// System.out.println(target2); + System.out.println(target2.toString()); + System.out.println("FLAT >> ["+new String( (byte[])(target2.getData() ) )+"]"); + + System.out.println("Tramsform run time (ms): " + (System.currentTimeMillis() - cTime)); + + } + + public void atestJsonToJsonTransform() throws Exception { + System.out.println("Json TO Json Multi Grid =============================================================="); + logger.debug("TransformJsonMultiGridTest | testJsonToJsonTransform()"); + long cTime = System.currentTimeMillis(); + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + + data = "{" + + " \"transactionUuid\": \"bf48a92e-a412-4995-b693-82a2cfd445d1\"," + + " \"originator\": {" + + " \"originatorPersons\": [" + + " {" + + " \"naturalPerson\": {" + + " \"name\": {" + + " \"nameIdentifier\": [" + + " {" + + " \"primaryIdentifier\": \"Smith\"" + + " }" + + " ]" + + " }," + + " \"customerIdentification\": \"1002390\"" + + " }" + + " }" + + " ]," + + " \"accountNumber\": [" + + " \"10023909\"" + + " ]" + + " }" + + " ,\"errorGroup\": {" + + " \"testField\": " + + " \"errorCode\"" + + " }" + + "}"; + + +// data = "{}"; + + Message source = MessageFactory.getFactory().getMessage("JSON_MGRID_REQ1"); + + String rootItemName = ((JSONMessage) source).getLayout().getRootItem().getName(); + + System.out.println(source); + + System.out.println("Source text Data : " + data); + +// JSONObject value = (JSONObject) JSONValue.parse(data); +// JSONObject root = new JSONObject(); +// root.put(rootItemName, value); +// data = root.toJSONString(); + + System.out.println(data); + source.setData(data.getBytes()); + + System.out.println(source); + System.out.println(source.getData()); + if(RUN_TRANSFORM) { + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_MGRIDTEST_REQ", new Message[] { source }); + + System.out.println(target); + + System.out.println(target.getData()); + } + System.out.println("Tramsform run time (ms): " + (System.currentTimeMillis() - cTime)); + } + } diff --git a/src/test/java/com/eactive/eai/transformer/TransformJsonPassTest.java b/src/test/java/com/eactive/eai/transformer/TransformJsonPassTest.java new file mode 100644 index 0000000..3d0fd61 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformJsonPassTest.java @@ -0,0 +1,189 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformJsonPassTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformJsonPassTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformJsonPassTest.class); + } + + public void setUp() throws Exception { + AllTests.setParams(); + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testNotSetNumber() throws Exception { + System.out.println("NotSetNumber =============================================================="); + //logger.debug("Transform08900001Test | testTransform()"); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data =""; +// data = "{ \"EAI_UJSON2DEPTH_REQ1\": {" +// + " \"abc\": \"cba\", " +// + " \"grid1\": [ " +// + " { \"data1\": \"1row\" , \"grid2\" : [ {\"data3\" : \"13\"},{\"data4\" : \"14\"} ] } " +// + " ,{ \"data1\": \"2row\" , \"grid2\" : [{ \"data3\" : \"23\"} ] } " +// + " ] " +// + " } " +// + "}"; + data = "{ \"EAI_UJSON2DEPTH_REQ1\": {" + + " \"abc\": \"cba\", " + + " \"grid1\": [ " + + " { \"data1\": \"1row\" , \"grid2\" : [ {\"data3\" : \"13\", \"data4\" : \"14\"},{ \"data3\" : \"13\", \"data4\" : \"14\"} ] } " + + " ,{ \"data1\": \"2row\" , \"grid2\" : [{ \"data3\" : \"23\", \"data4\" : \"24\"} ] } " + + " ,{ \"data1\": \"2row\" , \"grid2\" : [{ \"data3\" : \"33\" },{ \"data4\" : \"34\"},{ \"data3\" : \"35\", \"data4\" : \"36\"} ] } " + + " ] " + + " } " + + "}"; +// data = "{ \"EAI_UJSON2DEPTH2_REQ1\": {" +// + " \"abc\": \"cba\", " +// + " \"grid1\": [ " +// + " { \"data1\": \"1row\", \"grid_length\": 2, \"grid2\" : [ {\"data3\" : \"13\", \"data4\" : \"14\"},{ \"data3\" : \"13\", \"data4\" : \"14\"} ] } " +// + " ,{ \"data1\": \"2row\", \"grid_length\": 1, \"grid2\" : [{ \"data3\" : \"23\", \"data4\" : \"24\"} ] } " +// + " ] " +// + " } " +// + "}"; + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("EAI_UJSON2DEPTH_REQ1"); +// Message source = MessageFactory.getFactory().getMessage("EAI_UJSON2DEPTH2_REQ1"); + source.setData(data.getBytes()); + + System.out.println("source="+source); + System.out.println("getData="+source.getData()); + + +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_EAI_TSTASC2JSON_REQ", new Message[] { source }); +// +// System.out.println(target.toString()); +// System.out.println(target.getData()); +// + } + public void testNotSetNumber2() throws Exception { + System.out.println("NotSetNumber =============================================================="); + //logger.debug("Transform08900001Test | testTransform()"); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data =""; + data = "{ \"EAI_UJSON2DEPTHEXT_REQ1\": {" + + " \"abc\": \"cba\", " + + " \"grid1\": [ " + + " { \"data1\": \"1row\" , \"grid2\" : [ {\"data3\" : \"13\", \"data4\" : \"14\"},{ \"data3\" : \"13\", \"data4\" : \"14\"} ] } " + + " ,{ \"data1\": \"2row\" , \"grid2\" : [{ \"data3\" : \"23\", \"data4\" : \"24\"} ] } " + + " ,{ \"data1\": \"2row\" , \"grid2\" : [{ \"data3\" : \"33\" },{ \"data4\" : \"34\"},{ \"data3\" : \"35\", \"data4\" : \"36\"} ] } " + + " ] " + + " \"grid9\": [ " + + " { \"data1\": \"1row\" , \"grid2\" : [ {\"data3\" : \"13000\", \"data4\" : \"14000\"},{ \"data3\" : \"13000\", \"data4\" : \"14000\"} ] } " + + " ,{ \"data1\": \"2row\" , \"grid2\" : [{ \"data3\" : \"23000\", \"data4\" : \"24000\"} ] } " + + " ,{ \"data1\": \"2row\" , \"grid2\" : [{ \"data3\" : \"33000\" },{ \"data4\" : \"34000\"},{ \"data3\" : \"35000\", \"data4\" : \"36000\"} ] } " + + " ] " + + " , \"abcd\" : \"123\" " + + " \"grid3\": [ " + //+ " { \"data1\": \"1row\" , \"grid4\" : [ { \"data6\" : \"00014\"},{ \"data5\" : \"00013\"} ] } " + //+ " ," + + "{ \"data1\": \"2row\" , \"grid4\" : [{ \"data5\" : \"00023\", \"data6\" : \"00024\"} ] } " + + " ,{ \"data1\": \"2row\" , \"grid4\" : [{ \"data5\" : \"00033\" },{ \"data6\" : \"00034\"},{ \"data5\" : \"00035\", \"data6\" : \"00036\"} ] } " + + " ] " + + " } " + + "}"; + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("EAI_UJSON2DEPTHEXT_REQ1"); + source.setData(data.getBytes()); + + System.out.println("source="+source); + System.out.println("getData="+source.getData()); + + +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_EAI_TSTASC2JSON_REQ", new Message[] { source }); +// +// System.out.println(target.toString()); +// System.out.println(target.getData()); +// + } + public void testNotSetNumber3() throws Exception { + System.out.println("NotSetNumber =============================================================="); + //logger.debug("Transform08900001Test | testTransform()"); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data =""; + data = "{ \"EAI_UJSON2DEPTHEXT2_REQ1\": {" + + " \"abc\": \"cba\", " + + " \"grid1\": [ " + + " \"1\",\"2\",\"3\" " + + " ] " + + " \"grid9\": [ " + + " { \"data1\": \"1row\" , \"grid2\" : [ {\"data3\" : \"13000\", \"data4\" : \"14000\"},{ \"data3\" : \"13000\", \"data4\" : \"14000\"} ] } " + + " ,{ \"data1\": \"2row\" , \"grid2\" : [{ \"data3\" : \"23000\", \"data4\" : \"24000\"} ] } " + + " ,{ \"data1\": \"2row\" , \"grid2\" : [{ \"data3\" : \"33000\" },{ \"data4\" : \"34000\"},{ \"data3\" : \"35000\", \"data4\" : \"36000\"} ] } " + + " ] " + + " , \"abcd\" : \"123\" " + + " \"grid3\": [ " + //+ " { \"data1\": \"1row\" , \"grid4\" : [ { \"data6\" : \"00014\"},{ \"data5\" : \"00013\"} ] } " + //+ " ," + + "{ \"data1\": \"2row\" , \"grid4\" : [ ] } " + + " ,{ \"data1\": \"2row\" , \"grid4\" : [{ \"data5\" : \"00033\" },{ \"data6\" : \"00034\"},{ \"data5\" : \"00035\", \"data6\" : \"00036\"} ] } " + + " ] " + + " } " + + "}"; + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("EAI_UJSON2DEPTHEXT2_REQ1"); + source.setData(data.getBytes()); + + System.out.println("source="+source); + System.out.println("getData="+source.getData()); + + +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_EAI_TSTASC2JSON_REQ", new Message[] { source }); +// +// System.out.println(target.toString()); +// System.out.println(target.getData()); +// + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformJsonTest.java b/src/test/java/com/eactive/eai/transformer/TransformJsonTest.java new file mode 100644 index 0000000..519c69f --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformJsonTest.java @@ -0,0 +1,333 @@ +package com.eactive.eai.transformer; + +import java.util.ArrayList; +import java.util.List; + +import org.json.simple.JSONObject; +import org.json.simple.JSONValue; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.function.util.CodeConversion; +import com.eactive.eai.transformer.layout.Item; +import com.eactive.eai.transformer.message.JSONMessage; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformJsonTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformJsonTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformJsonTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + +// public void testJsonToFlatTransform() throws Exception { +// //logger.debug("Transform08900001Test | testTransform()"); +// +// //---------------------------------------------------------------------- +// // source message 생성 +// //---------------------------------------------------------------------- +// String data ="{\"EAI\":{\"INDIVIDUAL\":{\"addr\":\"\",\"deptNm\":\"D\",\"deptCd\":\"12000\",\"email\":\"\",\"telNo\":\"\"},\"COMMON\":{\"empNo\":\"0200\"}}}"; +// +// Message source = MessageFactory.getFactory().getMessage("TST_JSN0400KEDS2_REQ1"); +// source.setData(data.getBytes()); +// System.out.println(source); +// +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_TST_JSN0400KEDS2_REQ", new Message[] { source }); +// +//// System.out.println(target); +// System.out.println(target.toString()); +// +// } + +// public void testFlatToJsonTransform() throws Exception { +// +// //---------------------------------------------------------------------- +// // source message 생성 +// //---------------------------------------------------------------------- +// String data ="0200 12000 D "; +// Message source = MessageFactory.getFactory().getMessage("TST_JSN0400KEDS2_RES1"); +// source.setData(data.getBytes()); +// System.out.println(source); +// +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_TST_JSN0400KEDS2_RES", new Message[] { source }); +// +// +//// System.out.println(target); +// System.out.println(target.toString()); +// System.out.println("testFlatToJsonTransform >> [["+target.getData()+"]]"); +// +// } + + +// public void testJsonToFlatTransform2() throws Exception { +// System.out.println("Json TO Flat =============================================================="); +// //logger.debug("Transform08900001Test | testTransform()"); +// +// //---------------------------------------------------------------------- +// // source message 생성 +// //---------------------------------------------------------------------- +// String data =""; +// data = "{\"TST_CCMMCI0023RS1JBB_REQ1\":{\"INDIVIDUAL\":{\"user_div_cd\":\"00\",\"ogz_cd\":\"\",\"user_no\":\"\",\"page_no\":\"00001\",\"user_nm\":\"\",\"page_row_size\":\"00023\"}}}"; +// +// data = "{\"user_div_cd\":\"00\",\"ogz_cd\":\"\",\"user_no\":\"\",\"page_no\":\"00001\",\"user_nm\":\"\",\"page_row_size\":\"00023\"}"; +// +// Message source = MessageFactory.getFactory().getMessage("TST_CCMMCI0023RS1JBB_REQ1"); +// +// String rootItemName = ((JSONMessage)source).getLayout().getRootItem().getName(); +// +// JSONObject value = (JSONObject)JSONValue.parse(data); +// JSONObject root = new JSONObject(); +// root.put(rootItemName, value); +// data = root.toJSONString(); +// +// +// source.setData(data.getBytes()); +//// System.out.println("source="+source); +// +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_TST_CCMMCI0023RS1_REQ", new Message[] { source }); +// +// System.out.println(target.toString()); +//// +// } +// public void testFlatToJsonTransform2() throws Exception { +// System.out.println("Flat TO Json =============================================================="); +// //---------------------------------------------------------------------- +// // source message 생성 +// //---------------------------------------------------------------------- +// String data ="00 0000100023"; +// Message source = MessageFactory.getFactory().getMessage("TST_CCMMCI0023RS1JBB_REQ2"); +// source.setData(data.getBytes()); +//// System.out.println(source); +// +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_TST_CCMMCI9999S1_RES", new Message[] { source }); +// +// +//// System.out.println(target); +// System.out.println(target.toString()); +// System.out.println("testFlatToJsonTransform >> [["+target.getData()+"]]"); +// +// } + + + public void atestJsonToFlatTransform2() throws Exception { + System.out.println("Json TO Flat =============================================================="); + // logger.debug("Transform08900001Test | testTransform()"); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + data = "{\"ApprovalCancelKB\":{\"Common\":{\"Sender\":\"Sender\",\"TransactionSEQNO\":\"TransactionSEQNO\", \"Receiver\":\"100\"}}}"; + + + Message source = MessageFactory.getFactory().getMessage("LEN_BBSD115_TSTS"); + + //LEN_BBSD115_BYTS + + + + String rootItemName = ((JSONMessage) source).getLayout().getRootItem().getName(); + + JSONObject value = (JSONObject) JSONValue.parse(data); + JSONObject root = new JSONObject(); + root.put(rootItemName, value); + data = root.toJSONString(); + System.out.println(data); + source.setData(data.getBytes()); + System.out.println(source.getData()); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_LEN_BBSD115S1_ERR", new Message[] { source }); + + System.out.println("["+new String((byte[])target.getData())+"]"); + + } + + public void atestUJsonToUJsonTransform2() throws Exception { + System.out.println("Json TO Json =============================================================="); + // logger.debug("Transform08900001Test | testTransform()"); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + data = "{\"OutChnlTxCd\":\"BFB72P90S7\",\"OutForms\":[],\"OutData\":{\"총라인수\":10,\"장바구니_그리드\":[{\"고객식별자\":\"1098428265\",\"고객관리번호\":\"00000\",\"장바구니일련번호\":\"\",\"담기일자\":\"20190208110141\",\"상품분류체계코드\":\"CN00000000\",\"상품분류상세코드\":\"KF00003600\",\"상품코드\":\"\",\"상품명\":\"KB 브라질 증권 자투자신탁(주식)-C\",\"등록채널명\":\"고객(비대면장바구니)\",\"등록부점코드\":\"\",\"등록부점명\":\"인터넷뱅킹\",\"등록직원번호\":\"\",\"등록직원명\":\"고객\"},{\"고객식별자\":\"1098428265\",\"고객관리번호\":\"00000\",\"장바구니일련번호\":\"\",\"담기일자\":\"20190208110131\",\"상품분류체계코드\":\"CN00000000\",\"상품분류상세코드\":\"KF00003500\",\"상품코드\":\"\",\"상품명\":\"KB 브라질 증권 자투자신탁(주식)-A\",\"등록채널명\":\"고객(비대면장바구니)\",\"등록부점코드\":\"\",\"등록부점명\":\"인터넷뱅킹\",\"등록직원번호\":\"\",\"등록직원명\":\"고객\"},{\"고객식별자\":\"1098428265\",\"고객관리번호\":\"00000\",\"장바구니일련번호\":\"\",\"담기일자\":\"20190207135711\",\"상품분류체계코드\":\"CN00000000\",\"상품분류상세코드\":\"KF00169600\",\"상품코드\":\"\",\"상품명\":\"KB 브라질 증권 자투자신탁(주식)-AE\",\"등록채널명\":\"고객(비대면장바구니)\",\"등록부점코드\":\"\",\"등록부점명\":\"인터넷뱅킹\",\"등록직원번호\":\"\",\"등록직원명\":\"고객\"},{\"고객식별자\":\"1098428265\",\"고객관리번호\":\"00000\",\"장바구니일련번호\":\"\",\"담기일자\":\"20190129174634\",\"상품분류체계코드\":\"CN00000000\",\"상품분류상세코드\":\"KF00114800\",\"상품코드\":\"\",\"상품명\":\"한화 글로벌 멀티인컴 증권자투자신탁(주식혼합-재간접형)C-E\",\"등록채널명\":\"고객(비대면장바구니)\",\"등록부점코드\":\"\",\"등록부점명\":\"인터넷뱅킹\",\"등록직원번호\":\"\",\"등록직원명\":\"고객\"},{\"고객식별자\":\"1098428265\",\"고객관리번호\":\"00000\",\"장바구니일련번호\":\"\",\"담기일자\":\"20190129174256\",\"상품분류체계코드\":\"CN00000000\",\"상품분류상세코드\":\"KF00131100\",\"상품코드\":\"\",\"상품명\":\"KB 가치배당 40 증권 자투자신탁(채권혼합)-Ce\",\"등록채널명\":\"고객(비대면장바구니)\",\"등록부점코드\":\"\",\"등록부점명\":\"인터넷뱅킹\",\"등록직원번호\":\"\",\"등록직원명\":\"고객\"},{\"고객식별자\":\"1098428265\",\"고객관리번호\":\"00000\",\"장바구니일련번호\":\"\",\"담기일자\":\"20190129173619\",\"상품분류체계코드\":\"CN00000000\",\"상품분류상세코드\":\"KF00100500\",\"상품코드\":\"\",\"상품명\":\"미래에셋 월지급식 글로벌 다이나믹 플러스 증권자투자신탁 1호(채권) AE\",\"등록채널명\":\"고객(비대면장바구니)\",\"등록부점코드\":\"\",\"등록부점명\":\"인터넷뱅킹\",\"등록직원번호\":\"\",\"등록직원명\":\"고객\"},{\"고객식별자\":\"1098428265\",\"고객관리번호\":\"00000\",\"장바구니일련번호\":\"\",\"담기일자\":\"20190129173330\",\"상품분류체계코드\":\"CN00000000\",\"상품분류상세코드\":\"KF00111600\",\"상품코드\":\"\",\"상품명\":\"슈로더 월지급 아시안 에셋 인컴 증권투자신탁(주식혼합-재간접형) C-e\",\"등록채널명\":\"고객(비대면장바구니)\",\"등록부점코드\":\"\",\"등록부점명\":\"인터넷뱅킹\",\"등록직원번호\":\"\",\"등록직원명\":\"고객\"},{\"고객식별자\":\"1098428265\",\"고객관리번호\":\"00000\",\"장바구니일련번호\":\"\",\"담기일자\":\"20190129171841\",\"상품분류체계코드\":\"CN00000000\",\"상품분류상세코드\":\"KF00038800\",\"상품코드\":\"\",\"상품명\":\"KB스타 개인용 MMF P-101호(국공채)A-EU\",\"등록채널명\":\"고객(비대면장바구니)\",\"등록부점코드\":\"\",\"등록부점명\":\"인터넷뱅킹\",\"등록직원번호\":\"\",\"등록직원명\":\"고객\"},{\"고객식별자\":\"1098428265\",\"고객관리번호\":\"00000\",\"장바구니일련번호\":\"\",\"담기일자\":\"20190129171614\",\"상품분류체계코드\":\"CN00000000\",\"상품분류상세코드\":\"KF00038600\",\"상품코드\":\"\",\"상품명\":\"KB스타 미국S&P500인덱스 증권자투자신탁(주식-파생형)A-EU\",\"등록채널명\":\"고객(비대면장바구니)\",\"등록부점코드\":\"\",\"등록부점명\":\"인터넷뱅킹\",\"등록직원번호\":\"\",\"등록직원명\":\"고객\"},{\"고객식별자\":\"1098428265\",\"고객관리번호\":\"00000\",\"장바구니일련번호\":\"\",\"담기일자\":\"20190129170422\",\"상품분류체계코드\":\"CN00000000\",\"상품분류상세코드\":\"KF00201400\",\"상품코드\":\"\",\"상품명\":\"KB PIMCO 글로벌 인컴 셀렉션 증권투자신탁(채권-재간접형)(H) AE\",\"등록채널명\":\"고객(비대면장바구니)\",\"등록부점코드\":\"\",\"등록부점명\":\"인터넷뱅킹\",\"등록직원번호\":\"\",\"등록직원명\":\"고객\"}]}}"; + Message source = MessageFactory.getFactory().getMessage("BFB_BFB72P90S7_RES1"); + //LEN_BBSD115_BYTS + String rootItemName = ((JSONMessage) source).getLayout().getRootItem().getName(); + JSONObject value = (JSONObject) JSONValue.parse(data); + JSONObject root = new JSONObject(); + root.put(rootItemName, value); + data = root.toJSONString(); + System.out.println(data); + System.out.println(source); + source.setData(data.getBytes("UTF-8")); + System.out.println(source.getData()); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_BNE_BFB72P90S7BNE_RES", new Message[] { source }); + System.out.println("["+new String((byte[])target.getData())+"]"); + + } + + public void testUJsonToXmlTransform() throws Exception { + System.out.println("Json TO Xml =============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = ""; + data = "{\"InData\":{\"변경전상호명\":\"\",\"일반공모시작년월일\":\"\",\"기산년월일\":\"20200101\",\"일반공모종료년월일\":\"\",\"보증여부\":\"0\",\"통화코드\":\"KRW\",\"보증기관명\":\"\",\"우리사주배정비율\":0,\"신주인수권증서발행여부\":\"0\",\"교부년월일\":\"20200703\",\"발행사유\":\"2103\",\"사채발행년월일\":\"\",\"우리사주배정주식\":0,\"만기년월일\":\"\",\"시스템최종사용자번호\":\"\",\"구주청약시작년월일\":\"\",\"주간사\":\"국민은행\",\"발행총액\":0,\"교체주권종류구분내용\":\"1000000000000000000000000000000000000000\",\"전환대리인명\":\"\",\"거래사유\":\"\",\"기준년월일\":\"20200331\",\"단주확정방법\":\"9\",\"신주인수권증서\":\"\",\"확정배정비율수2\":100,\"차등배정여부\":\"0\",\"예정비율\":0,\"전환청구종료년월일\":\"\",\"전환청구시작년월일\":\"\",\"청구횟수\":0,\"단주대금가\":60000,\"사채원리금지급대행은행코드\":\"\",\"주금납입년월일\":\"20200703\",\"장기보유세금감면여부\":\"0\",\"주권구분\":\"01\",\"기등록사채여부\":\"0\",\"상장년월일\":\"20200704\",\"전환가격\":0,\"발행이율\":0,\"주?납입금융기관코드\":\"\",\"전환후주식수\":0,\"위탁회사번호\":\"04692\",\"구주청약종료년월일\":\"\",\"신권당일유통년월일\":\"\",\"구주권제출시작년월일\":\"\",\"발행가\":0,\"권면금액\":0,\"시스템최종처리일시\":\"\",\"무배정여부\":\"0\",\"발행회차\":7,\"문서접수년월일\":\"20200703\",\"통지서발송비대상\":\"0\",\"변경후영문상호명\":\"\",\"변경후상호명\":\"\",\"사채명\":\"\",\"주권종류\":\"01\",\"잔여금액\":0,\"명의개서정지시작년월일\":\"20200401\",\"단주대금년월일\":\"20200703\",\"명의개서정지종료년월일\":\"20200402\",\"전환주식수\":0,\"전환환율\":0,\"문서번호\":\"증권대행부\",\"예정가\":0,\"기준환율\":0,\"사채통화코드\":\"KRW\",\"확정가\":0,\"피발행회차\":\"0\",\"우리사주배정비율수2\":100,\"전환전주식수\":0,\"구주권제출종료년월일\":\"\",\"과세비율\":0,\"확정비율\":0,\"차등배정비율수1\":0,\"차등배정비율수2\":100,\"용지신청년월일\":\"99991231\",\"피회사번호\":\"00000\",\"발행년월일\":\"20200703\",\"액면가\":5000,\"사채발행회차\":0,\"납입장소\":\"국민은행 여의도본점\",\"회사명\":\"=한=NF매제상하\",\"전환회차\":0,\"주권유통종료년월일\":\"\",\"예정배정비율수2\":100,\"기준환율등록년월일\":\"\",\"사용자구분\":\"\",\"주권유통시작년월일\":\"\",\"변경후액면가\":0,\"우리청약시작년월일\":\"\",\"거래구분\":\"0\",\"구회사명\":\"\",\"발행주수\":100,\"증자방법\":\"00\",\"우리청약종료년월일\":\"\",\"변경전액면가\":0,\"주관회사명\":\"\",\"기타내용1\":\"\",\"신종사채해외여부\":\"0\",\"청약장소\":\"한국투자증권본지점\"}}"; + Message source = MessageFactory.getFactory().getMessage("BFG_KGB0690761_REQ1"); + //LEN_BBSD115_BYTS + String rootItemName = ((JSONMessage) source).getLayout().getRootItem().getName(); + JSONObject value = (JSONObject) JSONValue.parse(data); + JSONObject root = new JSONObject(); + root.put(rootItemName, value); + data = root.toJSONString(); + System.out.println(data); + System.out.println(source); + source.setData(data.getBytes("UTF-8")); + System.out.println(source.getData()); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_BFG_KGB0690761BFG_REQ", new Message[] { source }); + + System.out.println("["+target.getData()+"]"); + System.out.println(target); + + Item item = target; + ArrayList alist = getItemInfo(item, 0 ,false ); + + } + + public ArrayList getItemInfo(Item sitem, int path, boolean isEbcdic) { + ArrayList alist = new ArrayList(); + String field_delimiter = "^FLD^"; + + StringBuffer sb = new StringBuffer(); + if (sitem.getNodeTypeId() == Item.NODE_MESSAGE + || sitem.getNodeTypeId() == Item.NODE_GROUP) { + sb.append(sitem.getName()); + sb.append(field_delimiter); + sb.append(sitem.getDescription()); + sb.append(field_delimiter); + + Object obj = sitem.getValue(); + String value = ""; + System.out.println(sitem.getName() + "-> " + obj); + if (obj == null) { + value = " "; + } else if (obj instanceof String) { + value = new String(((String) obj).getBytes()); + } else if (obj instanceof byte[]) { + if(isEbcdic) { + value = new String(CodeConversion.meToAsc2((byte[]) obj)); + } + else { + value = new String((byte[]) obj); + } + + } else { + value = ""; + } + + sb.append(value); + + sb.append(field_delimiter); + sb.append(" "); + + alist.add(sb.toString()); + + List list = sitem.getChildList(); + path++; + for (int i = 0; i < list.size(); i++) { + //System.out.println("LOOP ["+path+"]["+i+"]["+ ((Item)list.get(i)).getName() +"]"); + if (!((Item) list.get(i)).toString("", false).equals("")) { + ArrayList slist = getItemInfo((Item) list.get(i), path , isEbcdic); + for (int j = 0; j < slist.size(); j++) { + alist.add((String) slist.get(j)); + } + } + } + } else { + sb.append(sitem.getName()); + sb.append(field_delimiter); + sb.append(sitem.getDescription()); + sb.append(field_delimiter); + Object obj = sitem.getValue(); + + System.out.println(sitem.getName() + "-> " + obj); + + String value = ""; + if (obj == null) { + value = "NULL"; + } else if (obj instanceof String) { + value = new String(((String) obj).getBytes()); + } else if (obj instanceof byte[]) { +// if(isEbcdic) { +// value = new String(CodeConversion.meToAsc2((byte[]) obj)); +// } +// else { + value = new String((byte[]) obj); +// } + } else { + value = ""; + } + + sb.append(value); + + sb.append(field_delimiter); + sb.append("" + sitem.getLength()); + + alist.add(sb.toString()); + } + return alist; + } +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformJsonTest2.java b/src/test/java/com/eactive/eai/transformer/TransformJsonTest2.java new file mode 100644 index 0000000..2cb03fb --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformJsonTest2.java @@ -0,0 +1,105 @@ +package com.eactive.eai.transformer; + +import org.json.simple.JSONObject; +import org.json.simple.JSONValue; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.JSONMessage; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformJsonTest2 extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformJsonTest2(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformJsonTest2.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testJsonToFlatTransform2() throws Exception { + System.out.println("Json TO Flat =============================================================="); + //logger.debug("Transform08900001Test | testTransform()"); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data =""; + data = "{\"USER_ID\":\"12345678\",\"USER_PSWD\":\"PASSWORD\"}"; + + + Message source = MessageFactory.getFactory().getMessage("TST_EUIMCI00000_REQ1"); + + String rootItemName = ((JSONMessage)source).getLayout().getRootItem().getName(); + + JSONObject value = (JSONObject)JSONValue.parse(data); + JSONObject root = new JSONObject(); + root.put(rootItemName, value); + data = root.toJSONString(); + + System.out.println("before="+source); + source.setData(data.getBytes()); + System.out.println("source="+source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_TST_EUIMCI00000S2_REQ", new Message[] { source }); + + System.out.println(target.toString()); + + } +// public void testFlatToJsonTransform2() throws Exception { +// System.out.println("Flat TO Json =============================================================="); +// //---------------------------------------------------------------------- +// // source message 생성 +// //---------------------------------------------------------------------- +// String data ="00 0000100023"; +// Message source = MessageFactory.getFactory().getMessage("TST_CCMMCI0023RS1JBB_REQ2"); +// source.setData(data.getBytes()); +//// System.out.println(source); +// +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_TST_CCMMCI9999S1_RES", new Message[] { source }); +// +// +//// System.out.println(target); +// System.out.println(target.toString()); +// System.out.println("testFlatToJsonTransform >> [["+target.getData()+"]]"); +// +// } + + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformJsonToFlat.java b/src/test/java/com/eactive/eai/transformer/TransformJsonToFlat.java new file mode 100644 index 0000000..40e6d09 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformJsonToFlat.java @@ -0,0 +1,81 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformJsonToFlat extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformJsonToFlat(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformJsonToFlat.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + + public void testJsonToFlatTransform() throws Exception { + System.out.println("Json TO Flat =============================================================="); + //logger.debug("Transform08900001Test | testTransform()"); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data =""; + data = "{\"XYZ_IDAS00000557_REQ\":{\"SYS_ID_S3\": \"\", \"TLGR_BYKD_CD_S4\": \"0200\", \"DLNG_DVSN_CD_S6\": \"100000\", \"SDRV_DVSN_S1\": \"S\", \"STAT_CD_S3\": \"\", \"RSPNS_CD_S3\": \"000\", \"TLGR_TRSM_YMD_S8\": \"\", \"TLGR_TRSM_HR_S6\": \"\", \"TLGR_CHAS_NO_S8\": \"\", \"DLNG_OCRN_YMD_S8\": \"\", \"CUST_NM\": \"테스트\", \"CSNO\": \"12345\"}}"; + data = "{\"XYZ_IDAS00000557_REQ\":{ \"TLGR_BYKD_CD_S4\": \"0200\", \"DLNG_DVSN_CD_S6\": \"100000\", \"SDRV_DVSN_S1\": \"S\", \"STAT_CD_S3\": \"\", \"RSPNS_CD_S3\": \"000\", \"TLGR_TRSM_YMD_S8\": \"\", \"TLGR_TRSM_HR_S6\": \"\", \"TLGR_CHAS_NO_S8\": \"\", \"DLNG_OCRN_YMD_S8\": \"\", \"CUST_NM\": \"테스트\", \"CSNO\": \"12345\"}}"; + + + Message source = MessageFactory.getFactory().getMessage("XYZ_IDAS00000557_REQ"); + Message target1 = MessageFactory.getFactory().getMessage("XYZ_OTST00000005_REQ"); + System.out.println(target1); +// String rootItemName = ((UJSONMessage)source).getLayout().getRootItem().getName(); +// JSONObject value = (JSONObject)JSONValue.parse(data); +// JSONObject root = new JSONObject(); +// root.put(rootItemName, value); +// data = root.toJSONString(); + + System.out.println("before="+source); + source.setData(data); + System.out.println("source="+source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_XYZ_FDASFEP00000634S2_REQ", new Message[] { source }); + + System.out.println(target.toString()); + + } + + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformJsonToJson.java b/src/test/java/com/eactive/eai/transformer/TransformJsonToJson.java new file mode 100644 index 0000000..bc9f5fe --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformJsonToJson.java @@ -0,0 +1,157 @@ +//package com.eactive.eai.transformer; +// +//import com.eactive.eai.common.util.Logger; +//import com.eactive.eai.transformer.engine.TransformEngine; +//import com.eactive.eai.transformer.engine.Transformer; +//import com.eactive.eai.transformer.message.Message; +//import com.eactive.eai.transformer.message.MessageFactory; +//import com.eactive.eai.transformer.message.UJSONMessage; +//import com.eactive.eai.transformer.message.XMLMessage; +// +//import junit.framework.Test; +//import junit.framework.TestCase; +//import junit.framework.TestSuite; +// +// +//public class TransformJsonToJson extends TestCase { +// protected static Logger logger = Logger.getLogger("transformer"); +// +// TransformEngine engine = null; +// +// +// public TransformJsonToJson(String name) { +// super(name); +// } +// +// public static Test suite() { +// /* +// * the dynamic way +// */ +// return new TestSuite(TransformJsonToJson.class); +// } +// +// public void setUp() throws Exception { +// // 변환 초기화 +// engine = TransformEngine.getInstance(); +// +// if (!engine.isStarted()) { +// engine.start(); +// } +// } +// +// public void tearDown() throws Exception { +// // +// } +// +// public void atestXmlToJsonTransform() throws Exception { +// System.out.println("Json TO XML =============================================================="); +// //logger.debug("Transform08900001Test | testTransform()"); +// +// //---------------------------------------------------------------------- +// // source message 생성 +// //---------------------------------------------------------------------- +// String data =""; +// data = +// //"{\"KGI_BNC71900R0_REQ1\":" +// "" +// +"{\"InData\":{\"custMgtNo\":\"99999\",\"custNm\":\"사용자\",\"resvYn\":\"0\",\"msgCtnt\":\"19.12.26(목)~20.01.10(금)까지 제로페이Biz 앱사용이 불가하오니 참고바랍니다.\",\"sendBrncd\":\"0197\",\"templType\":\"T\",\"custCphnNo\":\"01042672324 \",\"resvYmd\":\"20200506\",\"rsultRetunYn\":\"0\",\"rplyTelno\":\"0220733452\",\"afPrcssPgmName\":\"\",\"msgCretnCd\":\"KGI101\",\"resvTtm\":\"135106\",\"bzwkRceptIdnfiID\":\"\",\"sendEmpid\":\"C900043\",\"groupCoCd\":\"KB0\",\"custIdnfr\":\"9999999999\"}}" +// + ""; +//// +"}"; +// +// +// Message source = MessageFactory.getFactory().getMessage("KGI_BNC71900R0_REQ1"); +// +// String rootItemName = ((XMLMessage)source).getLayout().getRootItem().getName(); +// +//// JSONObject value = (JSONObject)JSONValue.parse(data); +//// JSONObject root = new JSONObject(); +//// root.put(rootItemName, value); +//// data = root.toJSONString(); +// +// System.out.println("before="+source); +// source.setData(data); +// System.out.println("source="+source); +// +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_KGI_BNC71900R0KGI_REQ", new Message[] { source }); +// +// System.out.println(target.toString()); +// +// } +// +// public void atestJsonToJsonTransform() throws Exception { +// System.out.println("Json TO XML =============================================================="); +// //logger.debug("Transform08900001Test | testTransform()"); +// +// //---------------------------------------------------------------------- +// // source message 생성 +// //---------------------------------------------------------------------- +// String data =""; +// data = "{\"KGN_KGN04I0141_RES1\":" +// +"{\"OutChnlTxCd\":\"KGN04I0141\",\"OutForms\":[],\"OutData\":{\"univDstcd\":\"044\",\"univName\":\"배재대학교\",\"univRspblPsnID\":\"TEST0044\",\"univTtnfRspblPsnDstcd\":\"1\",\"rspblPsnName\":\"허유\",\"rspblPsnPwdOW\":\"BD9369CECC1F1B9A8328CD79AF65438E70292D3D\",\"rspblDvsnName\":\"윤일만\",\"rspblPsnTelno\":\"042-520-6070\",\"rspblPsnCphnNo\":\"010-3171-2524\",\"pwdMstkInptNotms\":0,\"pwdModfiYn\":\"1\",\"bzwkAthCtnt\":\"SRP\",\"delDstic\":\"\",\"ttnfAprvalAthDstic\":\"\",\"useAbilIPCtnt\":\"\",\"iPValdnYn\":\"0\",\"useAbilMadrCtnt\":\"\",\"madrValdnYn\":\"0\",\"aray\":[{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"J\",\"studtDsticSumnDstcd\":\"전체\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"090J\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"100\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"P\",\"studtDsticSumnDstcd\":\"전체\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"113S\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"S\",\"studtDsticSumnDstcd\":\"전체\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"113S\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"X\",\"studtDsticSumnDstcd\":\"전체\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"101X\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"Y\",\"studtDsticSumnDstcd\":\"전체\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"097J\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"Z\",\"studtDsticSumnDstcd\":\"전체\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"088S\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"20\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"J\",\"studtDsticSumnDstcd\":\"분납\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"090J\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"100\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"S\",\"studtDsticSumnDstcd\":\"수시\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"113S\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"X\",\"studtDsticSumnDstcd\":\"일반\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"101X\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"Y\",\"studtDsticSumnDstcd\":\"일반\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"097J\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"Z\",\"studtDsticSumnDstcd\":\"생활관\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"088S\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"20\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"J\",\"studtDsticSumnDstcd\":\"계절제\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"090J\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"100\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"S\",\"studtDsticSumnDstcd\":\"정시\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"113S\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"X\",\"studtDsticSumnDstcd\":\"특수\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"101X\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"Y\",\"studtDsticSumnDstcd\":\"특수\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"097J\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"J\",\"studtDsticSumnDstcd\":\"기숙사\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"090J\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"100\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"S\",\"studtDsticSumnDstcd\":\"수시예치금\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"113S\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"X\",\"studtDsticSumnDstcd\":\"전문\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"101X\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"Y\",\"studtDsticSumnDstcd\":\"전문\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"097J\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"S\",\"studtDsticSumnDstcd\":\"정시예치금\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"113S\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"X\",\"studtDsticSumnDstcd\":\"기숙사\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"101X\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"Y\",\"studtDsticSumnDstcd\":\"기숙사\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"097J\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"S\",\"studtDsticSumnDstcd\":\"기숙사\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"113S\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"X\",\"studtDsticSumnDstcd\":\"예치금\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"101X\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"},{\"univDstcd\":\"044\",\"regiStudtDstcd\":\"X\",\"studtDsticSumnDstcd\":\"특별\",\"crculmSumnDstcd\":null,\"thorDataFmatCtnt\":\"101X\",\"hdrEonot\":\"0\",\"trailEonot\":\"0\",\"maxSendSizeCnt\":\"10\",\"thorBkdataFmatDstcd\":\"F\",\"fldDstdlNo\":\"\"}]}}" +// +"}"; +// +// +// Message source = MessageFactory.getFactory().getMessage("KGN_KGN04I0141_RES1"); +// +// String rootItemName = ((UJSONMessage)source).getLayout().getRootItem().getName(); +// +//// JSONObject value = (JSONObject)JSONValue.parse(data); +//// JSONObject root = new JSONObject(); +//// root.put(rootItemName, value); +//// data = root.toJSONString(); +// +// System.out.println("before="+source); +// source.setData(data); +// System.out.println("source="+source); +// +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_BFG_KGN04I0141BFG_RES", new Message[] { source }); +// +// System.out.println(target.toString()); +// +// } +// +// public void testJsonToJson2Transform() throws Exception { +// System.out.println("Json TO XML =============================================================="); +// //logger.debug("Transform08900001Test | testTransform()"); +// +// //---------------------------------------------------------------------- +// // source message 생성 +// //---------------------------------------------------------------------- +// String data =""; +// data = "{\"RBF_RBF040GA40_RES1\":" +// +"{\"OutChnlTxCd\":\"RBF040GA40\",\"OutForms\":[],\"OutData\":{\"bzwkCmnDvsn\":{\"operGroupCd\":\"KH1\",\"brnCd\":\"9800\",\"mainPrcssYn\":\"\",\"acctgInptBookRepsntYn\":\"\",\"bzwkGroupCd\":\"\",\"outptSpareItem1\":\"20200506091532713000\",\"outptSpareItem2\":\"20200506091532723\"},\"outItem\":{\"totalLineCnt\":\"2\",\"dataGrid\":[{\"brifAcnoKnd\":\"1\",\"brifCncycd\":\"USD\",\"brifAcnCnt\":2,\"brifTotalBal\":306.19,\"brifTotalLnBal\":0,\"natnlCd\":\"KH\"},{\"brifAcnoKnd\":\"1\",\"brifCncycd\":\"KHR\",\"brifAcnCnt\":1,\"brifTotalBal\":80338.00,\"brifTotalLnBal\":0,\"natnlCd\":\"KH\"}],\"totalLineCnt2\":\"3\",\"dataGrid2\":[{\"acnoKnd\":\"1\",\"ovsesCustOcntryName\":\"YOUNG INNER(CAMBODIA)CO.,LTD.\",\"brncoPrdctCd\":\"110100100001\",\"brncoPrdctPtrnCd\":\"01\",\"brncoPrdctSbjctCd\":\"001\",\"wwwBnkgJoinAbilYn\":\"0\",\"ovsesRcptDstcd\":\"01\",\"prdctName\":\"보통예금\",\"acnoAls\":\"보통예금\",\"acno\":\"980041010005\",\"cncycd\":\"USD\",\"bal\":305.00,\"newYmd\":\"20120305\",\"expirYmd\":\"\",\"cracAgreAmt\":0,\"agreIrt\":0,\"agreYmd\":\"\",\"agreExpirYmd\":\"\",\"cnpr\":0,\"ctrcTrmCnt\":0,\"ctrcUnitDstcd\":\"\",\"autoExtenTrm\":0,\"totalExtenCnt\":0,\"ctrcTrm\":0,\"indpCtrcUnitDstcd\":\"\",\"lnAmt\":0,\"lnBal\":0,\"lnExeYMS\":\"\",\"lnExpirYmd\":\"\",\"lastTranYmd\":\"\",\"limtAplyStartYmd\":\"\",\"limtAplyExpirYmd\":\"\",\"ovsesIrtDstcd\":\"FIXED\",\"acnStus\":\"\",\"transferOrderYn\":\"Y\",\"custIdnfr\":\"G160007845\",\"custMgtNo\":\"00000\",\"acctNatnlCd\":\"KH\"},{\"acnoKnd\":\"1\",\"ovsesCustOcntryName\":\"YOUNG INNER(CAMBODIA)CO.,LTD.\",\"brncoPrdctCd\":\"110100200001\",\"brncoPrdctPtrnCd\":\"01\",\"brncoPrdctSbjctCd\":\"002\",\"wwwBnkgJoinAbilYn\":\"0\",\"ovsesRcptDstcd\":\"01\",\"prdctName\":\"저축예금\",\"acnoAls\":\"저축예금\",\"acno\":\"980011010407\",\"cncycd\":\"USD\",\"bal\":1.19,\"newYmd\":\"20120305\",\"expirYmd\":\"\",\"cracAgreAmt\":0,\"agreIrt\":0,\"agreYmd\":\"\",\"agreExpirYmd\":\"\",\"cnpr\":0,\"ctrcTrmCnt\":0,\"ctrcUnitDstcd\":\"\",\"autoExtenTrm\":0,\"totalExtenCnt\":0,\"ctrcTrm\":0,\"indpCtrcUnitDstcd\":\"\",\"lnAmt\":0,\"lnBal\":0,\"lnExeYMS\":\"\",\"lnExpirYmd\":\"\",\"lastTranYmd\":\"\",\"limtAplyStartYmd\":\"\",\"limtAplyExpirYmd\":\"\",\"ovsesIrtDstcd\":\"FIXED\",\"acnStus\":\"\",\"transferOrderYn\":\"Y\",\"custIdnfr\":\"G160007845\",\"custMgtNo\":\"00000\",\"acctNatnlCd\":\"KH\"},{\"acnoKnd\":\"1\",\"ovsesCustOcntryName\":\"YOUNG INNER(CAMBODIA)CO.,LTD.\",\"brncoPrdctCd\":\"110100200001\",\"brncoPrdctPtrnCd\":\"01\",\"brncoPrdctSbjctCd\":\"002\",\"wwwBnkgJoinAbilYn\":\"0\",\"ovsesRcptDstcd\":\"01\",\"prdctName\":\"저축예금\",\"acnoAls\":\"저축예금\",\"acno\":\"980012050065\",\"cncycd\":\"KHR\",\"bal\":80338.00,\"newYmd\":\"20190801\",\"expirYmd\":\"\",\"cracAgreAmt\":0,\"agreIrt\":0,\"agreYmd\":\"\",\"agreExpirYmd\":\"\",\"cnpr\":0,\"ctrcTrmCnt\":0,\"ctrcUnitDstcd\":\"\",\"autoExtenTrm\":0,\"totalExtenCnt\":0,\"ctrcTrm\":0,\"indpCtrcUnitDstcd\":\"\",\"lnAmt\":0,\"lnBal\":0,\"lnExeYMS\":\"\",\"lnExpirYmd\":\"\",\"lastTranYmd\":\"\",\"limtAplyStartYmd\":\"\",\"limtAplyExpirYmd\":\"\",\"ovsesIrtDstcd\":\"FIXED\",\"acnStus\":\"\",\"transferOrderYn\":\"Y\",\"custIdnfr\":\"G160007845\",\"custMgtNo\":\"00000\",\"acctNatnlCd\":\"KH\"}]}}}" +// +"}"; +// +// +// Message source = MessageFactory.getFactory().getMessage("RBF_RBF040GA40_RES1"); +// +// String rootItemName = ((UJSONMessage)source).getLayout().getRootItem().getName(); +// +//// JSONObject value = (JSONObject)JSONValue.parse(data); +//// JSONObject root = new JSONObject(); +//// root.put(rootItemName, value); +//// data = root.toJSONString(); +// +// System.out.println("before="+source); +// source.setData(data); +// System.out.println("source="+source); +// +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_BFC_RBF040GA40BFC_RES", new Message[] { source }); +// +// System.out.println(target.toString()); +// +// } +// +//} diff --git a/src/test/java/com/eactive/eai/transformer/TransformJsonToXml.java b/src/test/java/com/eactive/eai/transformer/TransformJsonToXml.java new file mode 100644 index 0000000..c235fed --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformJsonToXml.java @@ -0,0 +1,102 @@ +//package com.eactive.eai.transformer; +// +//import com.eactive.eai.common.util.Logger; +//import com.eactive.eai.transformer.engine.TransformEngine; +//import com.eactive.eai.transformer.engine.Transformer; +//import com.eactive.eai.transformer.message.Message; +//import com.eactive.eai.transformer.message.MessageFactory; +//import com.eactive.eai.transformer.message.UJSONMessage; +// +//import junit.framework.Test; +//import junit.framework.TestCase; +//import junit.framework.TestSuite; +// +// +//public class TransformJsonToXml extends TestCase { +// protected static Logger logger = Logger.getLogger("transformer"); +// +// TransformEngine engine = null; +// +// +// public TransformJsonToXml(String name) { +// super(name); +// } +// +// public static Test suite() { +// /* +// * the dynamic way +// */ +// return new TestSuite(TransformJsonToXml.class); +// } +// +// public void setUp() throws Exception { +// // 변환 초기화 +// engine = TransformEngine.getInstance(); +// +// if (!engine.isStarted()) { +// engine.start(); +// } +// } +// +// public void tearDown() throws Exception { +// // +// } +// +// +// public void testJsonToXmlTransform() throws Exception { +// System.out.println("Json TO XML =============================================================="); +// //logger.debug("Transform08900001Test | testTransform()"); +// +// //---------------------------------------------------------------------- +// // source message 생성 +// //---------------------------------------------------------------------- +// String data =""; +// data = "{\"BND_KJO71B09R0_REQ1\":{\"InData\":{\"grid1\":[{\"aprval1stAthorScrenCtnt\":\"BND72330000\",\"mblRetunAbilYn\":\"0\",\"aprvalDmndBrncd\":null,\"n2ndAprvalEmpid\":null,\"aprvalLineIdnfiNo\":\"3020000009\",\"mblAprvalComtYn\":\"1\",\"aprval2ndAthorScrenLinkCtnt2\":null,\"mblAprvalIdiviAtchCtnt\":\"#P# 등록자 : 허병회#\\/P##P# 민원인명 : 재테스#\\/P##P# 접수번호 : 20-000009#\\/P##P# 피해보상신청금액 : 11,223#\\/P##P# 피해보상유형 : 부점자체처리(상담오류)#\\/P##P# 합의서작성여부 : 작성#\\/P##P# 민원요지#\\/P##D#111111#\\/D#\",\"aprval2ndAthorScrenLinkCtnt3\":null,\"aprval2ndAthorScrenLinkCtnt4\":null,\"aprval2ndAthorScrenLinkCtnt5\":null,\"aprval2ndAthorScrenCtnt\":null,\"aprvalDmndScrenName\":\"소비자피해보상 등록 및 처리\",\"aprval2ndAthorRoleCtnt\":null,\"aprval2ndAthorScrenLinkCtnt1\":null,\"aprvalDmndEmpid\":\"3825432\",\"aprval1stAthorScrenName\":\"소비자 피해보상 소비자보호담당자\\/부점장 승인\",\"aprvalDmndEmpHanglFname\":null,\"aprvalDmndScrenCtnt\":\"BND72320000\",\"aprvalDmndBrnHanglName\":null,\"aprval1stAthorRoleCtnt\":\"17101\",\"mblCallgTranCdCtnt\":\"BND73330U1\",\"mblAprvalCmnAtchCtnt\":\"20000009\",\"aprval1stAthorRoleName\":null,\"aprvalLineFixYn\":\"0\",\"mblAprvalAthorURL\":null,\"aprval2ndAthorScrenName\":null,\"aprval2ndAthorRoleName\":null,\"brncdInquryDstcd\":\"1\",\"n1stAprvalEmpid\":null,\"aprval1stAthorScrenLinkCtnt1\":null,\"aprval1stAthorScrenLinkCtnt3\":null,\"mblAprvalTagetYn\":\"1\",\"aprval1stAthorScrenLinkCtnt2\":null,\"uapplCd\":\"BND\",\"aprval1stAthorScrenLinkCtnt5\":null,\"aprval1stAthorScrenLinkCtnt4\":null}]}}}"; +// +// +// Message source = MessageFactory.getFactory().getMessage("BND_KJO71B09R0_REQ1"); +// +// String rootItemName = ((UJSONMessage)source).getLayout().getRootItem().getName(); +// +//// JSONObject value = (JSONObject)JSONValue.parse(data); +//// JSONObject root = new JSONObject(); +//// root.put(rootItemName, value); +//// data = root.toJSONString(); +// +// System.out.println("before="+source); +// source.setData(data); +// System.out.println("source="+source); +// +// //---------------------------------------------------------------------- +// // 변환 방식 1 +// //---------------------------------------------------------------------- +// Transformer transformer = engine.getTransformer(); +// Message target = transformer.transform("TRANSFORM_BND_KJO71B09R0BND_REQ", new Message[] { source }); +// +// System.out.println(target.toString()); +// +// } +//// public void testFlatToJsonTransform2() throws Exception { +//// System.out.println("Flat TO Json =============================================================="); +//// //---------------------------------------------------------------------- +//// // source message 생성 +//// //---------------------------------------------------------------------- +//// String data ="00 0000100023"; +//// Message source = MessageFactory.getFactory().getMessage("TST_CCMMCI0023RS1JBB_REQ2"); +//// source.setData(data.getBytes()); +////// System.out.println(source); +//// +//// //---------------------------------------------------------------------- +//// // 변환 방식 1 +//// //---------------------------------------------------------------------- +//// Transformer transformer = engine.getTransformer(); +//// Message target = transformer.transform("TRANSFORM_TST_CCMMCI9999S1_RES", new Message[] { source }); +//// +//// +////// System.out.println(target); +//// System.out.println(target.toString()); +//// System.out.println("testFlatToJsonTransform >> [["+target.getData()+"]]"); +//// +////} +// +//} diff --git a/src/test/java/com/eactive/eai/transformer/TransformKEC047244ABFES01Test.java b/src/test/java/com/eactive/eai/transformer/TransformKEC047244ABFES01Test.java new file mode 100644 index 0000000..fc57850 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformKEC047244ABFES01Test.java @@ -0,0 +1,86 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformKEC047244ABFES01Test extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformKEC047244ABFES01Test(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformKEC047244ABFES01Test.class); + } + + public void setUp() throws Exception { + + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testXmlToUJson() throws Exception { + System.out.println("Xml TO Json =============================================================="); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data =""; + //data = "한글ABCD1234한글"; + data ="" + +" " + +" " + +" " + +" " + +" " + +" " + +" " + +" " + +" " + +" " + +" " + +"" + ; + + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("KEC_KEC047244A_RES1"); + source.setData(data); + + System.out.println("source="+source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_BFE_KEC047244ABFE_RES", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println(target.getData()); + + } + + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformKGN06S1361KGAS01Test.java b/src/test/java/com/eactive/eai/transformer/TransformKGN06S1361KGAS01Test.java new file mode 100644 index 0000000..70f89e7 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformKGN06S1361KGAS01Test.java @@ -0,0 +1,72 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.util.IConv; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformKGN06S1361KGAS01Test extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformKGN06S1361KGAS01Test(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformKGN06S1361KGAS01Test.class); + } + + public void setUp() throws Exception { + + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testEbcdicToUJson() throws Exception { + System.out.println("Ebcdic TO Ujson =============================================================="); + + //---------------------------------------------------------------------- + // source message 생성 + //---------------------------------------------------------------------- + String data ="0739KIOSK410020002020041491805000000000028310890001N000000013620200414000000003918020120880 2020J020004향단삼 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000026000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026000 000000000000000 0 004095733000000000"; + + System.out.println(data); + Message source = MessageFactory.getFactory().getMessage("KGA_CGK06S1361_REQ1"); + source.setData(IConv.asciiToEBCDIC(data)); + + System.out.println("source="+source); + + //---------------------------------------------------------------------- + // 변환 방식 1 + //---------------------------------------------------------------------- + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_KGA_KGN06S1361KGA_REQ", new Message[] { source }); + + System.out.println(target); + //System.out.println(target.getData()); + + } + + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformMediaTest.java b/src/test/java/com/eactive/eai/transformer/TransformMediaTest.java new file mode 100644 index 0000000..7ff7096 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformMediaTest.java @@ -0,0 +1,277 @@ +package com.eactive.eai.transformer; + +import org.apache.commons.lang3.time.StopWatch; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.util.IConv; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformMediaTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformMediaTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformMediaTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + + public void atestS01() throws Exception { + System.out.println("EAI_ASCTERCOMM_REQ1 =============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + Message source = MessageFactory.getFactory().getMessage("EAI_ASCTERCOMM_REQ1"); + source.setData(data.getBytes()); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_AETERCOMM_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void atestS02() throws Exception { + System.out.println("EAI_ASCATMCOMM_REQ1 =============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + Message source = MessageFactory.getFactory().getMessage("EAI_ASCATMCOMM_REQ1"); + source.setData(data.getBytes()); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_AEATMCOMM_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void atestS03() throws Exception { + System.out.println("EAI_ASCINBCOMM_REQ1 =============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + Message source = MessageFactory.getFactory().getMessage("EAI_ASCINBCOMM_REQ1"); + source.setData(data.getBytes()); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_AEINBCOMM_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void atestS03A6() throws Exception { + System.out.println("EAI_ASCINBCOMM_REQ1 =============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + Message source = MessageFactory.getFactory().getMessage("EAI_ASCINOCOMM_REQ1"); + source.setData(data.getBytes()); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_AEINOCOMM_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void atestS04() throws Exception { + System.out.println("EAI_ASCIVRCOMM_REQ1 =============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = "1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + Message source = MessageFactory.getFactory().getMessage("EAI_ASCIVRCOMM_REQ1"); + source.setData(data.getBytes()); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_AEIVRCOMM_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + + public void atestS0107() throws Exception { + System.out.println("=============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + Message source = MessageFactory.getFactory().getMessage("EAI_EBCTERISCCOMM_REQ1"); + source.setData(IConv.asciiToEBCDIC(data)); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_EATERISCCOMM_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void atestS0207() throws Exception { + System.out.println("=============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + Message source = MessageFactory.getFactory().getMessage("EAI_EBCATMISCCOMM_REQ1"); + source.setData(IConv.asciiToEBCDIC(data)); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_EAATMISCCOMM_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void testS0307() throws Exception { + System.out.println("=============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + Message source = MessageFactory.getFactory().getMessage("EAI_EBCINBISCCOMM_REQ1"); + source.setData(IConv.asciiToEBCDIC(data)); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_EAINBISCCOMM_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void testS03A607() throws Exception { + System.out.println("=============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + Message source = MessageFactory.getFactory().getMessage("EAI_EBCINOISCCOMM_REQ1"); + source.setData(IConv.asciiToEBCDIC(data)); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_EAINOISCCOMM_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + public void atestS0407() throws Exception { + System.out.println("=============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111122222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222223333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333"; + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + + Message source = MessageFactory.getFactory().getMessage("EAI_EBCIVRISCCOMM_REQ1"); + source.setData(IConv.asciiToEBCDIC(data)); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_EAI_EAIVRISCCOMM_REQ", new Message[] { source }); + + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformMessageLoadTest.java b/src/test/java/com/eactive/eai/transformer/TransformMessageLoadTest.java new file mode 100644 index 0000000..bcda24c --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformMessageLoadTest.java @@ -0,0 +1,44 @@ +package com.eactive.eai.transformer; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +class TransformMessageLoadTest extends TransformExcelLoadConfiguration { + + protected static Logger logger = Logger.getLogger("transformer"); + + @BeforeAll + public static void props() { + if (System.getProperty("transformer.rule.dir") == null) { + System.setProperty("transformer.rule.dir", "src/test/resources/com/eactive/eai/transformer"); + } + } + + @Test + void testLoadLayout() throws Exception { + long t = System.currentTimeMillis(); + + System.out.println( + "\n\n<<================================ TransformMessageLoadTest : testLoadLayout ================================>> \n"); + try { + Message source = MessageFactory.getFactory().getMessage("BASICTEST101_REQ"); + System.out.println("\nSOURCE : \n" + source); + + // @formatter:off + String flatData = "00000000BASICTST110134567890ABCDEF"; + // @formatter:on + + // when + source.setData(flatData); + System.out.println("\nSOURCE : \n" + source); + System.out.println("$$ Transform Time (ms):" + (System.currentTimeMillis() - t)); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformOddBanking.java b/src/test/java/com/eactive/eai/transformer/TransformOddBanking.java new file mode 100644 index 0000000..f61a221 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformOddBanking.java @@ -0,0 +1,89 @@ +package com.eactive.eai.transformer; + +import org.apache.commons.lang3.time.StopWatch; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformOddBanking extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformOddBanking(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformOddBanking.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testAscToUjsonOdd() throws Exception { + System.out.println("ODD ASCII =============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = "0229IGN0040210301005000C34120060509341500400071296807200509341572000000000E1006541908 00000100 0000000 00000000000000000000000000000000000000 00000000 0000 000"; + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + Message source = MessageFactory.getFactory().getMessage("BFE_EEH0200301005_RES1"); + source.setData(data.getBytes()); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_BFE_EEH0200301005BFE_RES", new Message[] { source }); + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + + public void testAscToUjsonCommon() throws Exception { + System.out.println("COMMON ASCII =============================================================="); + + // ---------------------------------------------------------------------- + // source message 생성 + // ---------------------------------------------------------------------- + String data = "0229IGN0040210301005000C34120060509341500400071296807200509341572000000000E1006541908 00000101 0000000 00000000000000000000000000000000000000 00000000 0000 000"; + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + Message source = MessageFactory.getFactory().getMessage("BFE_EEH0200301005_RES1"); + source.setData(data.getBytes()); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_BFE_EEH0200301005BFE_RES", new Message[] { source }); + System.out.println(target.toString()); + System.out.println("[" + target.getData() + "]"); + + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + } diff --git a/src/test/java/com/eactive/eai/transformer/TransformTest3.java b/src/test/java/com/eactive/eai/transformer/TransformTest3.java new file mode 100644 index 0000000..57f460e --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformTest3.java @@ -0,0 +1,70 @@ +package com.eactive.eai.transformer; + +import org.apache.commons.lang3.time.StopWatch; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformTest3 extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformTest3(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformTest3.class); + } + + public void setUp() throws Exception { + // + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + + + public void testJsonToFlatTransform2() throws Exception { + System.out.println("=============================================================="); + + // ---------------------------------------------------------------------- + // source message + // ---------------------------------------------------------------------- + String data = ""; + + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + Message source = MessageFactory.getFactory().getMessage("KAE_KAE0403140_RES1"); + source.setBytes("KAE_KAE0403140_RES1.OutData.outBook.grid[0].groupCoCd", "111".getBytes()); + System.out.println(source); + + Transformer transformer = engine.getTransformer(); + Message target = transformer.transform("TRANSFORM_KCR_KAE0403140KCR_RES", new Message[] { source }); + + System.out.println("[" + new String((byte[]) target.getData()) + "]"); + stopWatch.stop(); + System.out.println(" elapsed : " + stopWatch.toString()); + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformXmlTest.java b/src/test/java/com/eactive/eai/transformer/TransformXmlTest.java new file mode 100644 index 0000000..24440cb --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformXmlTest.java @@ -0,0 +1,121 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.transform.TransformManager; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class TransformXmlTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public TransformXmlTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(TransformXmlTest.class); + } + + public void setUp() throws Exception { + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void testTransformXMLtoJSON() throws Exception { + long t = System.currentTimeMillis(); + printLog("\n\n<<================================== testTransformXMLtoJSON ==================================>> \n"); + Message source = MessageFactory.getFactory().getMessage("CRS72001S0_REQ1"); + Message target = MessageFactory.getFactory().getMessage("CRS72001S0_REQ2"); + + // xmlns=\"urn:iso:std:iso:20022:tech:xsd:pain.001.001.05\" + + String reqXML = "" + +"" + +"" + +"" // + +"30000" + +"test1" + +"test2" + +"test3" + +"100" + +"200" + +"300" + +"true" +// +"" + +"" + +"" + ; + + printLog("\nSOURCE XML STR : " + reqXML); + int iter = 1; + for(int i=0; i> \n"); + Message source = MessageFactory.getFactory().getMessage("CRS72001S0_REQ2"); + Message target = MessageFactory.getFactory().getMessage("CRS72001S0_REQ1"); + + String reqJson = "{\"CRS72001S0_REQ2\":{\"Document\":{\"NullValue\":null, \"BoolValue\":false,\"AddInfo\":[\"test1\",\"test2\",\"test3\"],\"Price\":[400,500,600],\"Amt\":{\"Ccy\":\"KHR\",\"InstdAmt\":\"30000\"},\"InData\":{\"CuniqnoType\":\"7\",\"Cuniqno\":\"1101110783351\"}}}}"; + reqJson = "{\"Document\":{\"NullValue\":null, \"BoolValue\":false,\"AddInfo\":[\"test1\",\"test2\",\"test3\"],\"Price\":[400,500,600],\"Amt\":{\"Ccy\":\"KHR\",\"InstdAmt\":\"30000\"},\"InData\":{\"CuniqnoType\":\"7\",\"Cuniqno\":\"1101110783351\"}}}"; + reqJson = "{\"Document\":{\"BoolValue\":false,\"AddInfo\":[\"test1\",\"test2\",\"test3\"],\"Price\":[400,500,600],\"Amt\":{\"Ccy\":\"KHR\",\"InstdAmt\":\"30000\"},\"InData\":{\"CuniqnoType\":\"7\",\"Cuniqno\":\"1101110783351\"}}}"; + printLog(reqJson); + source.setData(reqJson); + + printLog("\nSOURCE : \n" + source); + printLog(source.toLogString()); + printLog("TARGET : \n" + target); + + printLog("\nTransform Start : \n"); + + Transformer transformer = engine.getTransformer(); + transformer.transform("TRANSFORM_CRS72001S0_RES", target, new Message[] { source }); + + printLog("\nSOURCE : \n" + source); + printLog(source.toLogString()); + printLog("TRANSFORM : \n" + TransformManager.getManager().getTransform("TRANSFORM_CRS72001S0_RES")); + printLog("TARGET : \n" + target); + printLog(target.toLogString()); + } + + public static void printLog(String message) { + System.out.println(message); + } +} diff --git a/src/test/java/com/eactive/eai/transformer/TransformXmlVarGridTest.java b/src/test/java/com/eactive/eai/transformer/TransformXmlVarGridTest.java new file mode 100644 index 0000000..45d1269 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/TransformXmlVarGridTest.java @@ -0,0 +1,81 @@ +package com.eactive.eai.transformer; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformResult; +import com.eactive.eai.transformer.engine.Transformer; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; +import com.eactive.eai.transformer.transform.TransformManager; + +class TransformXmlVarGridTest extends TransformExcelLoadConfiguration { + + protected static Logger logger = Logger.getLogger("transformer"); + + @BeforeAll + public static void props() { + if (System.getProperty("transformer.rule.dir") == null) { + System.setProperty("transformer.rule.dir", "src/test/resources/com/eactive/eai/transformer"); + } + } + + @Test + void testTransformXMLtoFLAT() throws Exception { + long t = System.currentTimeMillis(); + + System.out.println( + "\n\n<<================================ testTransformXMLtoFLAT ================================>> \n"); + + Message source = MessageFactory.getFactory().getMessage("XML_VARGRID_REQ1"); + Message target = MessageFactory.getFactory().getMessage("FLAT_VARGRID_REQ1"); + + System.out.println("\nSOURCE : \n" + source); + + // @formatter:off + String value1 = "grid1val1"; + String reqXML = "" + + "" + + "" + + "" + value1 + "" + + "12" + + "13" + + "" + + "" + + "grid2val1" + + "" + + "endVal" + + "" + ; + // @formatter:on + + // when + System.out.println("\nSOURCE XML STR : " + reqXML); + int iter = 1; + TransformResult transformResult = null; + for (int i = 0; i < iter; i++) { + source.setData(reqXML); + System.out.println("\nSOURCE : \n" + source); + System.out.println("source.toLogString:\n" + source.toLogString()); + System.out.println("TARGET : \n" + target); + + System.out.println("\nTransform Start : \n"); + + Transformer transformer = engine.getTransformer(); + transformResult = transformer.transform("TRANSFORM_VARGRID_REQ", target, new Message[] { source }); + + assertThat(transformResult).isNotNull().extracting(TransformResult::hasWarning).isEqualTo(false); + assertThat(target.toLogString()).contains(value1); + + System.out.println("\nSOURCE : \n" + source); + System.out.println("TRANSFORM : \n" + TransformManager.getManager().getTransform("TRANSFORM_VARGRID_REQ")); + System.out.println("TARGET : \n" + target); + System.out.println("toLogString:\n" + target.toLogString()); + } + System.out.println("$$ Transform iter=" + iter + ", Time (ms):" + (System.currentTimeMillis() - t)); + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/VBYTESLayoutTest.java b/src/test/java/com/eactive/eai/transformer/VBYTESLayoutTest.java new file mode 100644 index 0000000..1dca093 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/VBYTESLayoutTest.java @@ -0,0 +1,64 @@ +package com.eactive.eai.transformer; + +import com.eactive.eai.common.util.Logger; +import com.eactive.eai.transformer.engine.TransformEngine; +import com.eactive.eai.transformer.message.Message; +import com.eactive.eai.transformer.message.MessageFactory; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + + +public class VBYTESLayoutTest extends TestCase { + protected static Logger logger = Logger.getLogger("transformer"); + + TransformEngine engine = null; + + + public VBYTESLayoutTest(String name) { + super(name); + } + + public static Test suite() { + /* + * the dynamic way + */ + return new TestSuite(VBYTESLayoutTest.class); + } + + public void setUp() throws Exception { + // 변환 초기화 + engine = TransformEngine.getInstance(); + + if (!engine.isStarted()) { + engine.start(); + } + } + + public void tearDown() throws Exception { + // + } + + public void atestVbytes1() throws Exception { + System.out.println("Vbytes 정상=============================================================="); + Message source = MessageFactory.getFactory().getMessage("EAI_TST0200101_REQ1"); + + byte[] data = "code002tracetracebiz01biz0200003123443211234432112344321".getBytes(); + + source.setData(data); + System.out.println(source); + } + public void testVbytes2() throws Exception { + System.out.println("Vbytes 가변그리드=============================================================="); + Message source = MessageFactory.getFactory().getMessage("EAI_TST0200101_REQ1"); + + byte[] data = "code002tracetracebiz01biz0200003".getBytes(); + + source.setData(data); + System.out.println(source); + } + + + +} diff --git a/src/test/java/com/eactive/eai/transformer/dao/excel/ExcelLoaderTest.java b/src/test/java/com/eactive/eai/transformer/dao/excel/ExcelLoaderTest.java new file mode 100644 index 0000000..ac2bd32 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/dao/excel/ExcelLoaderTest.java @@ -0,0 +1,81 @@ +package com.eactive.eai.transformer.dao.excel; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.transaction.annotation.Transactional; + +import com.eactive.eai.transformer.dao.jdbc.FunctionJdbcDao; +import com.eactive.eai.transformer.function.FunctionManager; +import com.eactive.eai.transformer.function.jpa.TransformJPATestConfiguration; +import com.eactive.eai.transformer.layout.LayoutManager; +import com.eactive.eai.transformer.layout.LayoutTypeManager; + +@DataJpaTest +@Transactional(readOnly = false) +@ContextConfiguration(classes = { TransformJPATestConfiguration.class }) + +class ExcelLoaderTest { + + @BeforeAll + public static void setup() { + System.setProperty("module", "EXCEL_LOADER"); + } + + @Autowired + FunctionExcelDao functionExcelDao; + + @Autowired + FunctionJdbcDao functionJdbcDao; + + @Autowired + FunctionManager functionManager; + + @Autowired + LayoutTypeExcelDao layoutTypeExcelDao; + + @Autowired + LayoutTypeManager layoutTypeManager; + + @Autowired + LayoutExcelDao layoutExcelDao; + + @Autowired + Layout2ExcelDao layout2ExcelDao; + + @Autowired + TransformExcelDao transformExcelDao; + + @Autowired + LayoutManager layoutManager; + + @Configuration + class Config { + + } + + @Test + void testLoad() throws Exception { + // function + functionExcelDao.save(functionExcelDao.load()); + functionExcelDao.save(functionExcelDao.load()); + functionManager.reload(); + + // layout type + layoutTypeExcelDao.save(layoutTypeExcelDao.load()); + layoutTypeExcelDao.save(layoutTypeExcelDao.load()); + layoutTypeManager.reload(); + + layoutExcelDao.save(layoutExcelDao.load()); + layoutExcelDao.save(layoutExcelDao.load()); + layoutManager.reload(); + + transformExcelDao.save(transformExcelDao.load()); + ; + + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/function/FunctionManagerTest.java b/src/test/java/com/eactive/eai/transformer/function/FunctionManagerTest.java new file mode 100644 index 0000000..3ed064e --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/function/FunctionManagerTest.java @@ -0,0 +1,30 @@ +package com.eactive.eai.transformer.function; + +import static org.junit.Assert.assertTrue; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.jdbc.Sql; + +import com.eactive.eai.common.lifecycle.LifecycleException; +import com.eactive.eai.transformer.function.jpa.TransformJPATestConfiguration; + +@DataJpaTest +@ContextConfiguration(classes = { TransformJPATestConfiguration.class }) +@Sql("/com/eactive/eai/transformer/init_function.sql") +class FunctionManagerTest { + + @Autowired + FunctionManager functionManager; + + @Test + void testLoad() throws LifecycleException { + // when + functionManager.start(); + // then + assertTrue(functionManager.isStarted()); + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/function/jpa/TransformJPATestConfiguration.java b/src/test/java/com/eactive/eai/transformer/function/jpa/TransformJPATestConfiguration.java new file mode 100644 index 0000000..0c88132 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/function/jpa/TransformJPATestConfiguration.java @@ -0,0 +1,33 @@ +package com.eactive.eai.transformer.function.jpa; + +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.test.context.TestPropertySource; + +import com.eactive.eai.common.util.ApplicationContextProvider; +import com.eactive.eai.data.jpa.BaseRepositoryImpl; +import com.eactive.eai.data.mapper.QualifiedMappers; +import com.eactive.eai.data.mapper.QualifiedMappersImpl; + +@Configuration +@ComponentScan(basePackages = { "com.eactive.eai.transformer", "com.eactive.eai.common.property" }) +@EntityScan({ "com.eactive.eai.data.entity.onl.property", "com.eactive.eai.data.entity.onl.transformer" }) +@EnableJpaRepositories(basePackages = { "com.eactive.eai.transformer", + "com.eactive.eai.common.property" }, repositoryBaseClass = BaseRepositoryImpl.class) +@TestPropertySource(properties = { "spring.main.allow-bean-definition-overriding=true" }) +public class TransformJPATestConfiguration { + + @Bean + ApplicationContextProvider applicationContextProvider() { + return new ApplicationContextProvider(); + } + + @Bean + QualifiedMappers qualifiedMappers() { + return new QualifiedMappersImpl(); + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/layout/LayoutManagerTest.java b/src/test/java/com/eactive/eai/transformer/layout/LayoutManagerTest.java new file mode 100644 index 0000000..c86fc4a --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/layout/LayoutManagerTest.java @@ -0,0 +1,34 @@ +package com.eactive.eai.transformer.layout; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.jdbc.Sql; + +import com.eactive.eai.common.lifecycle.LifecycleException; +import com.eactive.eai.transformer.dao.jdbc.LayoutJdbcDao; +import com.eactive.eai.transformer.function.jpa.TransformJPATestConfiguration; + +@DataJpaTest +@ContextConfiguration(classes = { TransformJPATestConfiguration.class }) +@Sql({ "/com/eactive/eai/transformer/init_tseaitr06.sql", "/com/eactive/eai/transformer/init_tseaitr07.sql", + "/com/eactive/eai/transformer/init_tseaitr08.sql" }) +class LayoutManagerTest { + + @Autowired + LayoutManager layoutManager; + + @Autowired + LayoutJdbcDao layoutJdbcDao; + + @Autowired + LayoutTypeManager layoutTypeManager; + + @Test + void testStart() throws LifecycleException { + layoutTypeManager.start(); + layoutManager.start(); + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/layout/loader/LayoutRepositoryTest.java b/src/test/java/com/eactive/eai/transformer/layout/loader/LayoutRepositoryTest.java new file mode 100644 index 0000000..df8ab00 --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/layout/loader/LayoutRepositoryTest.java @@ -0,0 +1,33 @@ +package com.eactive.eai.transformer.layout.loader; + +import static org.junit.Assert.assertNotNull; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.transaction.annotation.Transactional; + +import com.eactive.eai.data.entity.onl.transformer.layout.LayoutEntity; +import com.eactive.eai.transformer.function.jpa.TransformJPATestConfiguration; + +@DataJpaTest +@Transactional(readOnly = false) +@ContextConfiguration(classes = { TransformJPATestConfiguration.class}) +@Sql({ "/com/eactive/eai/transformer/init_tseaitr06.sql", "/com/eactive/eai/transformer/init_tseaitr07.sql", +"/com/eactive/eai/transformer/init_tseaitr08.sql" }) +class LayoutRepositoryTest { + + @Autowired + LayoutLoaderRepository layoutLoaderRepository; + + @Test + void testFindById() { + LayoutEntity layoutEntity = layoutLoaderRepository.getReferenceById("TST_TTST00000002_RES"); + layoutEntity = layoutEntity.getLayoutItemEntities().stream().findAny().get().getLayoutEntity(); + assertNotNull(layoutEntity); + System.out.println(layoutEntity); + } + +} diff --git a/src/test/java/com/eactive/eai/transformer/transform/TransformManagerTest.java b/src/test/java/com/eactive/eai/transformer/transform/TransformManagerTest.java new file mode 100644 index 0000000..c8f575d --- /dev/null +++ b/src/test/java/com/eactive/eai/transformer/transform/TransformManagerTest.java @@ -0,0 +1,59 @@ +package com.eactive.eai.transformer.transform; + +import org.junit.Assert; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.jdbc.Sql; + +import com.eactive.eai.common.lifecycle.LifecycleException; +import com.eactive.eai.transformer.function.jpa.TransformJPATestConfiguration; +import com.eactive.eai.transformer.layout.LayoutManager; +import com.eactive.eai.transformer.layout.LayoutTypeManager; + +@DataJpaTest +@ContextConfiguration(classes = { TransformJPATestConfiguration.class }) +@Sql({ "/com/eactive/eai/transformer/init_tseaitr06.sql", "/com/eactive/eai/transformer/init_tseaitr07.sql", + "/com/eactive/eai/transformer/init_tseaitr08.sql", "/com/eactive/eai/transformer/init_tseaitr01.sql", + "/com/eactive/eai/transformer/init_tseaitr02.sql", "/com/eactive/eai/transformer/init_tseaitr03.sql" }) +class TransformManagerTest { + + @Autowired + TransformManager transformManager; + + @Autowired + LayoutManager layoutManager; + + @Autowired + LayoutTypeManager layoutTypeManager; + + @Test + void testReload() throws LifecycleException { + // given + layoutTypeManager.start(); + layoutManager.start(); + // when + transformManager.reload(); + + // then + Assert.assertTrue(transformManager.getAllTransformName().length > 0); + for (String transformName : transformManager.getAllTransformName()) { + System.out.println("===================================================================================="); + System.out.println(transformName); + Transform transform = transformManager.getTransform(transformName); + System.out.print("Source Layouts : "); + transform.getSourceLayouts().forEachRemaining(System.out::print); + System.out.println(); + + System.out.println("Target Layout : " + transform.getTargetLayout()); + + transform.getTransformItemList().forEach(System.out::println); + System.out.println("===================================================================================="); + + // then + Assert.assertTrue(transformManager.getTransform(transformName).getTransformItemList().size() > 0); + } + } + +} diff --git a/src/test/resources/com/eactive/eai/transformer/TransformAggTest.xml b/src/test/resources/com/eactive/eai/transformer/TransformAggTest.xml new file mode 100644 index 0000000..70132e7 --- /dev/null +++ b/src/test/resources/com/eactive/eai/transformer/TransformAggTest.xml @@ -0,0 +1,1378 @@ + + + + + 5tdTw39Sd7oMhJxnE7aIzkey5jTpO2Qu0sf483PfiJw= + + 20221226200119356010390 + 20221226200120231651948 + P000001000000018 + MDS0002427 + 8012311111111 + 8012311111111 + 34ed3acdb0d862eb824050a6bbe2b5e1b91c12e9ffe0a903ec349910f13ec4ea + + 00 + 1 + 2 + 박파다명왕 + 8MIBM001 + 비대면대출신청 + 200 + 100_정상 처리되었습니다. + +
+ + + 기관ID + MDS0002427 + 2021101815100162034200000 + Y + + +
+ + + <개인자산확인_소득_여신> + <입금계좌확인정보_통장사본> + <계좌여부> + <은행명>카카오뱅크 + <예금주명>홍길동 + <계좌번호>1333000000000 + <입출금가능여부>입금가능 + + + <소득금액증명> + <발급항목> + <접수정보> + <민원접수번호>200000411300 + <민원접수일시>20220902160210 + <민원접수청서>서초 + <과세기간시작년월>201801 + <과세기간종료년월>202112 + + <발급정보> + <발급번호>T102-422-3885-000 + <발급일자>2022년 9월 2일 + <발급세무서> + <발급세무서명>서초세무서 + + <담당정보> + <부서명>민원봉사실 + <성명 /> + <전화번호>000-0000-0000 + <세적부서명>소득세과 + <세적성명>너수돌 + <세적전화번호>02-334-2234 + + + <민원인정보> + <성명>서조심 + <민원인주민등록번호>800000-2000000 + <도로명주소>서울특별시 서초구 청계산로9길 7-67, 000동 000호(신원동, 서초하시조노7시노) + <법정동주소>서울특별시 서초구 신원동 768 서초하시조노7시노 000동 000호 + + <부가정보> + <모범납세자여부>N + <모범납세자내용 /> + <세무대리인내용 /> + + <증명내용> + <출력정보> + <과세년도>2021 + <자료유형>C 연말정산 + + <소득증명> + <과세년도>2019 + <종합소득세> + <총결정세액>0 + <수입금액> + <이자>0 + <배당>0 + <사업>0 + <근로>10000000 + <연금>0 + <기타>0 + <합계>10000000 + <분리과세>0 + + <소득금액> + <이자>0 + <배당>0 + <사업>0 + <근로>4500000 + <연금>0 + <기타>0 + <합계>4500000 + <분리과세>0 + + + + <연말정산> + <귀속년도>2021 + <구분>근로소득 + <상호명>(먹)말먹범대 + <정산사업자등록번호>211-00-00000 + <지급받은총액>50000000 + <정산소득금액>37750000 + <총결정세액>3476591 + <비고>(연말정산) + + <연말정산> + <귀속년도>2021 + <구분 /> + <상호명 /> + <정산사업자등록번호>합계 + <지급받은총액>50000000 + <정산소득금액>37750000 + <총결정세액>3476591 + <비고 /> + + <연말정산> + <귀속년도>2021 + <구분>사업소득 + <상호명 /> + <정산사업자등록번호 /> + <지급받은총액 /> + <정산소득금액 /> + <총결정세액 /> + <비고 /> + + <연말정산> + <귀속년도>2021 + <구분 /> + <상호명 /> + <정산사업자등록번호>합계 + <지급받은총액 /> + <정산소득금액 /> + <총결정세액 /> + <비고 /> + + <연말정산> + <귀속년도>2021 + <구분>연금소득 + <상호명>말장황심정자 생자구광 + <정산사업자등록번호>117-81-70998 + <지급받은총액>3990000 + <정산소득금액>294000 + <총결정세액>0 + <비고 /> + + <연말정산> + <귀속년도>2021 + <구분 /> + <상호명 /> + <정산사업자등록번호>합계 + <지급받은총액>3990000 + <정산소득금액>294000 + <총결정세액>0 + <비고 /> + + <연말정산> + <귀속년도>2021 + <구분>종교인소득 + <상호명 /> + <정산사업자등록번호 /> + <지급받은총액 /> + <정산소득금액 /> + <총결정세액 /> + <비고 /> + + <연말정산> + <귀속년도>2021 + <구분 /> + <상호명 /> + <정산사업자등록번호>합계 + <지급받은총액 /> + <정산소득금액 /> + <총결정세액 /> + <비고 /> + + <연말정산> + <귀속년도>2020 + <구분>근로소득 + <상호명>상다해눈 노단산광 + <정산사업자등록번호>211-87-72328 + <지급받은총액>61000000 + <정산소득금액>48200000 + <총결정세액>4302500 + <비고>(연말정산) + + <연말정산> + <귀속년도>2020 + <구분 /> + <상호명 /> + <정산사업자등록번호>합계 + <지급받은총액>61000000 + <정산소득금액>48200000 + <총결정세액>4302500 + <비고 /> + + <연말정산> + <귀속년도>2020 + <구분>사업소득 + <상호명 /> + <정산사업자등록번호 /> + <지급받은총액 /> + <정산소득금액 /> + <총결정세액 /> + <비고 /> + + <연말정산> + <귀속년도>2020 + <구분 /> + <상호명 /> + <정산사업자등록번호>합계 + <지급받은총액 /> + <정산소득금액 /> + <총결정세액 /> + <비고 /> + + <연말정산> + <귀속년도>2020 + <구분>연금소득 + <상호명 /> + <정산사업자등록번호 /> + <지급받은총액 /> + <정산소득금액 /> + <총결정세액 /> + <비고 /> + + <연말정산> + <귀속년도>2020 + <구분 /> + <상호명 /> + <정산사업자등록번호>합계 + <지급받은총액 /> + <정산소득금액 /> + <총결정세액 /> + <비고 /> + + <연말정산> + <귀속년도>2020 + <구분>종교인소득 + <상호명 /> + <정산사업자등록번호 /> + <지급받은총액 /> + <정산소득금액 /> + <총결정세액 /> + <비고 /> + + <연말정산> + <귀속년도>2020 + <구분 /> + <상호명 /> + <정산사업자등록번호>합계 + <지급받은총액 /> + <정산소득금액 /> + <총결정세액 /> + <비고 /> + + <연말정산> + <귀속년도>2018 + <구분>근로소득 + <상호명>상다해눈 노단산광 + <정산사업자등록번호>211-87-72328 + <지급받은총액>60000000 + <정산소득금액>47250000 + <총결정세액>5122500 + <비고>(연말정산) + + <연말정산> + <귀속년도>2018 + <구분 /> + <상호명 /> + <정산사업자등록번호>합계 + <지급받은총액>60000000 + <정산소득금액>47250000 + <총결정세액>5122500 + <비고 /> + + <연말정산> + <귀속년도>2018 + <구분>사업소득 + <상호명>상다해눈 노단산광 + <정산사업자등록번호>211-87-72328 + <지급받은총액>20000000 + <정산소득금액>4480000 + <총결정세액>108800 + <비고 /> + + <연말정산> + <귀속년도>2018 + <구분 /> + <상호명 /> + <정산사업자등록번호>합계 + <지급받은총액>20000000 + <정산소득금액>4480000 + <총결정세액>108800 + <비고 /> + + <연말정산> + <귀속년도>2018 + <구분>연금소득 + <상호명 /> + <정산사업자등록번호 /> + <지급받은총액 /> + <정산소득금액 /> + <총결정세액 /> + <비고 /> + + <연말정산> + <귀속년도>2018 + <구분 /> + <상호명 /> + <정산사업자등록번호>합계 + <지급받은총액 /> + <정산소득금액 /> + <총결정세액 /> + <비고 /> + + <연말정산> + <귀속년도>2018 + <구분>종교인소득 + <상호명>마용금미항해광코형 선탕만대 + <정산사업자등록번호>101-86-81784 + <지급받은총액>0 + <정산소득금액>0 + <총결정세액>0 + <비고 /> + + <연말정산> + <귀속년도>2018 + <구분 /> + <상호명 /> + <정산사업자등록번호>합계 + <지급받은총액>0 + <정산소득금액>0 + <총결정세액>0 + <비고 /> + + + + + <표준재무제표증명_개인> + <신청정보> + <과세기간시작년월>201801 + <과세기간종료년월>201812 + + <발급정보> + <발급번호>T000-000-0000-000 + <발급일자>2022년 1월 24일 + <발급세무서코드>214 + <발급세무서>서초세무서 + + <민원인정보> + <민원인성명>홍철수 + <민원인주민등록번호>611111-1111111 + <상호>신용상사 + <사업자등록번호>200-00-00000 + <업태>부동산업 및 임대업 + <종목>비주거용 건물 임대업(점포, 자기땅) + + <증명내용표지정보> + <주소>서울특별시 마포구 마포대로00길 10-00 + <사업연도>2018년 귀속분 + <신고구분>정기신고 + <신고일>2019-06-12 + <첨부서류>표준대차대조표표준손익계산서 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>01 + <계정과목>Ⅰ.유동자산 + <금액>600,000,000 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>02 + <계정과목>1.당좌자산 + <금액>53,813,196 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>03 + <계정과목>(1)현금 및 현금성자산 + <금액>1,948,975 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>04 + <계정과목>(2)단기금융상품 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>05 + <계정과목>(3)단기투자증권 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>06 + <계정과목>(4)단기대여금 + <금액>3,000,000 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>07 + <계정과목>①관계회사 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>08 + <계정과목>②임원 및 종업원 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>09 + <계정과목>③기타 + <금액>3,000,000 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>10 + <계정과목>(5)매출채권 + <금액>79,652,963 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>11 + <계정과목>(6)선급금 + <금액>63,681,953 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>12 + <계정과목>(7)미수금 + <금액>65,000 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>13 + <계정과목>①공사미수금 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>14 + <계정과목>②분양미수금 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>15 + <계정과목>③기타 + <금액>65,000 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>16 + <계정과목>(8)선급비용 + <금액>964,305 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>17 + <계정과목>(9)기타 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>18 + <계정과목>2.재고자산 + <금액>869,745,537 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>19 + <계정과목>(1)상품 + <금액>869,745,537 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>20 + <계정과목>(2)제품 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>21 + <계정과목>(3)반제품 및 재공품 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>22 + <계정과목>(4)원재료 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>23 + <계정과목>(5)부재료 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>24 + <계정과목>(6)미착상품(미착재료) + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>25 + <계정과목>(7)건설용지 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>26 + <계정과목>(8)완성건물 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>27 + <계정과목>(9)미성공사 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>28 + <계정과목>(10)기타 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>29 + <계정과목>Ⅱ.비유동자산 + <금액>668,831,433 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>30 + <계정과목>1.투자자산 + <금액>2,619,195 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>31 + <계정과목>(1)장기금융상품 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>32 + <계정과목>(2)장기투자증권 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>33 + <계정과목>(3)장기대여금 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>34 + <계정과목>①관계회사 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>35 + <계정과목>②임원 및 종업원 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>36 + <계정과목>③기타 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>37 + <계정과목>(4)기타 + <금액>2,619,195 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>38 + <계정과목>2.유형자산 + <금액>36,212,238 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>39 + <계정과목>(1)토지 + <금액>53,677,073 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>40 + <계정과목>(2)건물 + <금액>1,399,144 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>41 + <계정과목>(3)구축물 (시설장치 포함) + <금액>6,291,667 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>42 + <계정과목>(4)기계장치 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>43 + <계정과목>(5)선박 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>44 + <계정과목>(6)건설용 장비 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>45 + <계정과목>(7)차량운반구 + <금액>3,476,840 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>46 + <계정과목>(8)공구 및 기구 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>47 + <계정과목>(9)비품 + <금액>327,418 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>48 + <계정과목>(10)건설 중인 자산 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>49 + <계정과목>(11)기타 + <금액>1,040,096 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>50 + <계정과목>3.무형자산 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>51 + <계정과목>(1)영업권 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>52 + <계정과목>(2)산업재산권 (특허권, 상표권 등) + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>53 + <계정과목>(3)개발비 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>54 + <계정과목>(4)기타 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>55 + <계정과목>4.기타 비유동자산 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>56 + <계정과목>(1)장기매출채권 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>57 + <계정과목>(2)장기선급금 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>58 + <계정과목>(3)장기미수금 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>59 + <계정과목>(4)임차보증금 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>60 + <계정과목>(5)기타보증금 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>61 + <계정과목>(6)기타 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인1> + <계정과목코드>62 + <계정과목>자산총계(Ⅰ+Ⅱ) + <금액>292,390,166 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>63 + <계정과목>Ⅰ.유동부채 + <금액>600,000,000 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>64 + <계정과목>1.단기차입금 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>65 + <계정과목>2.매입채무 + <금액>564,682,330 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>66 + <계정과목>3.선수금 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>67 + <계정과목>4.미지급금 + <금액>6,281,276 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>68 + <계정과목>5.예수금 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>69 + <계정과목>6.미지급비용 + <금액>2,439,083 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>70 + <계정과목>7.유동성장기부채 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>71 + <계정과목>8.유동성충당부채 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>72 + <계정과목>9.기타 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>73 + <계정과목>Ⅱ.비유동부채 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>74 + <계정과목>1.장기차입금 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>75 + <계정과목>①관계회사 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>76 + <계정과목>②임원 및 종업원 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>77 + <계정과목>③기타 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>78 + <계정과목>2.장기매입채무 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>79 + <계정과목>3.장기선수금 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>80 + <계정과목>4.장기미지급금 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>81 + <계정과목>5.임대보증금 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>82 + <계정과목>6.기타보증금 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>83 + <계정과목>7.퇴직급여충당부채 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>84 + <계정과목>8.기타충당부채 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>85 + <계정과목>9.제준비금 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>86 + <계정과목>10.기타 + <금액>0 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>87 + <계정과목>부채총계(Ⅰ+Ⅱ) + <금액>683,402,689 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>88 + <계정과목>Ⅲ.자본금 + <금액>797,845,741 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>89 + <계정과목>Ⅳ.당기순이익 + <금액>-88,858,264 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>90 + <계정과목>자본총계(Ⅲ+Ⅳ) + <금액>608,987,477 + + <증명내용표준대차대조표표준대차대조표개인개인2> + <계정과목코드>91 + <계정과목>부채및자본총계(Ⅰ+Ⅱ+Ⅲ+Ⅳ) + <금액>92,390,166 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>01 + <계정과목>Ⅰ.매출액 + <금액>578,489,831 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>02 + <계정과목>1.상품매출 + <금액>578,489,831 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>03 + <계정과목>2.제품매출 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>04 + <계정과목>3.공사수입 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>05 + <계정과목>4.분양수입 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>06 + <계정과목>5.임대수입 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>07 + <계정과목>6.서비스수입 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>08 + <계정과목>7.기타 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>09 + <계정과목>Ⅱ.매출원가 + <금액>121,481,513 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>10 + <계정과목>1.상품매출원가(①+②-③-④) + <금액>121,481,513 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>11 + <계정과목>①기초재고액 + <금액>225,110,391 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>12 + <계정과목>②당기매입액 + <금액>813,465,200 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>13 + <계정과목>③기말재고액 + <금액>869,745,537 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>14 + <계정과목>④타계정대체액 + <금액>7,348,541 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>15 + <계정과목>2.제조.공사.분양.기타원가 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>16 + <계정과목>①기초재고액 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>17 + <계정과목>②당기총원가 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>18 + <계정과목>③기말재고액 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>19 + <계정과목>④타계정대체액 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>20 + <계정과목>Ⅲ.매출총이익(Ⅰ-Ⅱ) + <금액>457,008,318 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>21 + <계정과목>Ⅳ.판매비및관리비 + <금액>610,960,550 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>22 + <계정과목>1.급여와임금.제수당 + <금액>2,940,862 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>23 + <계정과목>2.일용급여 + <금액>2,450,960 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>24 + <계정과목>3.퇴직급여(충당부채 전입.환입액포함) + <금액>9,524,194 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>25 + <계정과목>4.복리후생비 + <금액>9,558,144 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>26 + <계정과목>5.여비교통비 + <금액>6,645,374 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>27 + <계정과목>6.임차료 + <금액>1,866,080 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>28 + <계정과목>7.통신비 + <금액>1,087,366 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>29 + <계정과목>8.전력비 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>30 + <계정과목>9.가스.수도비 + <금액>1,035,374 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>31 + <계정과목>10.유류비 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>32 + <계정과목>11.보험료 + <금액>-3,936,980 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>33 + <계정과목>12.리스료 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>34 + <계정과목>13.세금과공과 + <금액>7,976,680 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>35 + <계정과목>14.감가상각비 + <금액>6,032,400 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>36 + <계정과목>15.무형자산상각비 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>37 + <계정과목>16.수선비 + <금액>48,872 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>38 + <계정과목>17.건물관리비 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>39 + <계정과목>18.접대비(①+②) + <금액>9,295,996 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>40 + <계정과목>①해외접대비 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>41 + <계정과목>②국내접대비 + <금액>9,295,996 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>42 + <계정과목>19.광고선전비 + <금액>7,250,876 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>43 + <계정과목>20.도서인쇄비 + <금액>107,580 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>44 + <계정과목>21.운반비 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>45 + <계정과목>22.차량유지비 + <금액>119,070 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>46 + <계정과목>23.교육훈련비 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>47 + <계정과목>24.지급수수료 + <금액>91,115,607 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>48 + <계정과목>25.판매수수료 + <금액>90,431,832 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>49 + <계정과목>26.대손상각비(충당금 전입.환입액포함) + <금액>55,877 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>50 + <계정과목>27.경상개발비 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>51 + <계정과목>28.소모품비 + <금액>5,126,434 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>52 + <계정과목>29.의약품비 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>53 + <계정과목>30.의약소모품비 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>54 + <계정과목>31.경영위탁수수료 (프랜차이즈 수수료 포함) + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>55 + <계정과목>32.외주용역비 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>56 + <계정과목>33.인적용역비 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>57 + <계정과목>34.기타 소계(①+②+③+④) + <금액>3,527,952 + + <증명내용표준손익계산서표준손익계산서개인개인1> + <계정과목코드>58 + <계정과목>①기타1 + <금액>3,527,952 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>59 + <계정과목>②기타2 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>60 + <계정과목>③기타3 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>61 + <계정과목>④기타4 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>62 + <계정과목>Ⅴ.영업손익(Ⅲ-Ⅳ) + <금액>-53,952,232 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>63 + <계정과목>Ⅵ.영업외수익 + <금액>9,497,271 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>64 + <계정과목>1.이자수익 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>65 + <계정과목>2.배당수익 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>66 + <계정과목>3.외환차익 + <금액>6,208,079 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>67 + <계정과목>4.외화환산이익 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>68 + <계정과목>5.단기투자자산 처분이익 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>69 + <계정과목>6.투자자산 처분이익 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>70 + <계정과목>7.유.무형자산 처분이익 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>71 + <계정과목>8.판매장려금 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>72 + <계정과목>9.국고보조금 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>73 + <계정과목>10.보험차익 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>74 + <계정과목>11.충당금.준비금 환입액 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>75 + <계정과목>12.전기오류수정이익 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>76 + <계정과목>13.기타 소계(①+②+③+④) + <금액>3,289,192 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>77 + <계정과목>①기타1 + <금액>3,289,192 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>78 + <계정과목>②기타2 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>79 + <계정과목>③기타3 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>80 + <계정과목>④기타4 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>81 + <계정과목>Ⅶ.영업외비용 + <금액>4,403,303 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>82 + <계정과목>1.이자비용 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>83 + <계정과목>2.외환차손 + <금액>176,390 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>84 + <계정과목>3.외화환산손실 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>85 + <계정과목>4.기타 대손상각비(충당금전입액 포함) + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>86 + <계정과목>5.기부금 + <금액>100,000 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>87 + <계정과목>6.단기투자자산 처분손실 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>88 + <계정과목>7.투자자산 처분손실 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>89 + <계정과목>8.유.무형자산 처분손실 + <금액>5,046,124 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>90 + <계정과목>9.재고자산 감모손실 + <금액>8,878,490 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>91 + <계정과목>10.재해손실 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>92 + <계정과목>11.충당금.준비금 전입액 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>93 + <계정과목>12.전기오류수정손실 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>94 + <계정과목>13.기타 소계(①+②+③+④) + <금액>202,299 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>95 + <계정과목>①기타1 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>96 + <계정과목>②기타2 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>97 + <계정과목>③기타3 + <금액>0 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>98 + <계정과목>④기타4 + <금액>202,299 + + <증명내용표준손익계산서표준손익계산서개인개인2> + <계정과목코드>99 + <계정과목>Ⅷ.당기순손익(Ⅴ+Ⅵ-Ⅶ) + <금액>-8,858,264 + + <증명내용표준원가명세서제조원가명세서좌> + <계정과목코드 /> + <계정과목 /> + <금액 /> + + <증명내용표준원가명세서공사원가명세서좌> + <계정과목코드 /> + <계정과목 /> + <금액 /> + + <증명내용표준원가명세서분양원가명세서좌> + <계정과목코드 /> + <계정과목 /> + <금액 /> + + <증명내용표준원가명세서기타원가명세서좌> + <계정과목코드 /> + <계정과목 /> + <금액 /> + + <증명내용표준원가명세서제조원가명세서우> + <계정과목코드 /> + <계정과목 /> + <금액 /> + + <증명내용표준원가명세서공사원가명세서우> + <계정과목코드 /> + <계정과목 /> + <금액 /> + + <증명내용표준원가명세서분양원가명세서우> + <계정과목코드 /> + <계정과목 /> + <금액 /> + + <증명내용표준원가명세서기타원가명세서우> + <계정과목코드 /> + <계정과목 /> + <금액 /> + + + + <비고> + <원장처리결과 /> + + + +
+
\ No newline at end of file diff --git a/src/test/resources/com/eactive/eai/transformer/function/function.xls b/src/test/resources/com/eactive/eai/transformer/function/function.xls new file mode 100644 index 0000000..939eee7 Binary files /dev/null and b/src/test/resources/com/eactive/eai/transformer/function/function.xls differ diff --git a/src/test/resources/com/eactive/eai/transformer/init_function.sql b/src/test/resources/com/eactive/eai/transformer/init_function.sql new file mode 100644 index 0000000..9bfec18 --- /dev/null +++ b/src/test/resources/com/eactive/eai/transformer/init_function.sql @@ -0,0 +1,167 @@ +INSERT INTO tseaitr04 (cnvsnfuntnname,cnvsnfuntndesc,cnvsnfuntnretunptrnidname,cnvsnfuntnclsname,cnvsnfuntnptrnidname) VALUES + ('-','minus',2112,' ',2301), + ('*','multiply',2112,' ',2301), + ('/','divide',2112,' ',2301), + ('%','나머지',2112,' ',2301), + ('^','승',2112,' ',2301), + ('+','plus',2112,' ',2301), + ('abs','절대값',2112,' ',2301), + ('addpoint','point(.) 추가',2113,'com.eactive.eai.transformer.function.convert.ADDPOINT',2303), + ('ascii2ebcdic','ascii to ebcdic',2113,'com.eact tseaieai.transformer.function.convert.ASCII2EBCDIC',2303), + ('ascii2ebcdic9','ascii to ebcdic (9 mode)',2113,'com.eactive.eai.transformer.function.convert.ASCII2EBCDIC9',2303), + ('ascii2ebcdicm','ascii to ebcdic (mixed mode)',2113,'com.eactive.eai.transformer.function.convert.ASCII2EBCDICM',2303), + ('ascii2ebcdicnososi','전체가 전각 ascii 를 SO-SI없는 ebcdic으로 변환',2113,'com.eactive.eai.transformer.function.convert.ASCII2EBCDICNOSOSI',2303), + ('ascii2ebcdicnososicds','전체가 SO-SI없는 전각 ascii를 ebcdic으로 변환전체공백확인',2113,'com.eactive.eai.transformer.function.convert.ASCII2EBCDICNOSOSICDS',2303), + ('ascii2ebcdicnososix','ASCII를 SO-SI없는 ebcdic으로 변환',2113,'com.eactive.eai.transformer.function.convert.ASCII2EBCDICNOSOSIX',2303), + ('ascii2ebcdicx','ascii to ebcdic (X mode)',2113,'com.eactive.eai.transformer.function.convert.ASCII2EBCDICX',2303), + ('asciih2ebcdich','ascii to ebcdic HEXA 변환',2113,'com.eactive.eai.transformer.function.convert.ASCIIH2EBCDICH',2303), + ('base64decode','Base 64 복호화',2113,'com.eactive.eai.transformer.function.crypto.Base64Decode',2303), + ('base64encode','Base 64 암호화',2113,'com.eactive.eai.transformer.function.crypto.Base64Encode',2303), + ('bytestodouble','Bytes to Double binary 8 bytes',2105,'com.eactive.eai.transformer.function.generic.BytesToDouble',2302), + ('bytestointeger','bytes to integer binary 4bytes',2102,'com.eactive.eai.transformer.function.generic.BytesToInteger',2302), + ('bytestoshort','Bytes to short binary 2 bytes',2102,'com.eactive.eai.transformer.function.generic.BytesToShort',2302), + ('doubletobytes','Double to bytes',2113,'com.eactive.eai.transformer.function.generic.DoubleToBytes',2302), + ('ebcdic2ascii','ebsdic to ascii',2113,'com.eactive.eai.transformer.function.convert.EBCDIC2ASCII',2303), + ('ebcdic2asciiex','ebcdic to 확장형 ascii',2113,'com.eactive.eai.transformer.function.convert.EBCDIC2ASCIIEX',2303), + ('ebcdic2asciim','ebcdic to ascii (mixed mode)',2113,'com.eactive.eai.transformer.function.convert.EBCDIC2ASCIIM',2303), + ('ebcdic2asciimex','ebsdic to 확장형 ascii (mixed mode)',2113,'com.eactive.eai.transformer.function.convert.EBCDIC2ASCIIMEX',2303), + ('ebcdic2asciinososi','전체가 SO-SI없는 전각 ebcdic을 ascii로 변환',2113,'com.eactive.eai.transformer.function.convert.EBCDIC2ASCIINOSOSI',2303), + ('ebcdic2asciinososicds','전체가 SO-SI없는 전각 ebcdic을 ascii로 변환전체공백확인',2113,'com.eactive.eai.transformer.function.convert.EBCDIC2ASCIINOSOSICDS',2303), + ('ebcdic2asciinososicdsex','전체가 SO-SI없는 전각 ebcdic을 확장형 ascii로 변환전체공백확인',2113,'com.eactive.eai.transformer.function.convert.EBCDIC2ASCIINOSOSICDSEX',2303), + ('ebcdic2asciinososiex','전체가 SO-SI없는 전각 ebcdic을 확장형 ascii로 변환',2113,'com.eactive.eai.transformer.function.convert.EBCDIC2ASCIINOSOSI',2303), + ('ebcdic2asciinososispacepad','전체가 SO-SI없는 전각 ebcdic을 ascii로 변환A1A1 -> 2020 추가',2113,'com.eactive.eai.transformer.function.convert.EBCDIC2ASCIINOSOSISPACEPAD',2303), + ('ebcdic2asciinososispacepadex','전체가 SO-SI없는 전각 ebcdic을 확장형 ascii로 변환A1A1 -> 2020 추가',2113,'com.eactive.eai.transformer.function.convert.EBCDIC2ASCIINOSOSISPACEPADEX',2303), + ('ebcdic2asciiwithsosi','ebcdic을 ascii로 변환시 SO-SI를 유지',2113,'com.eactive.eai.transformer.function.convert.EBCDIC2ASCIIWITHSOSI',2303), + ('ebcdic2asciiwithsosiex','ebcdic을 확장형 ascii로 변환시 SO-SI를 유지',2113,'com.eactive.eai.transformer.function.convert.EBCDIC2ASCIIWITHSOSIEX',2303), + ('ebcdich2asciih','ebcdic to ascii HEXA 변환',2113,'com.eactive.eai.transformer.function.convert.EBCDICH2ASCIIH',2303), + ('ebcdich2asciiss','ebcdic to ascii 변환시 첫바이트가 F2면 SI에 공백두개 추가',2113,'com.eactive.eai.transformer.function.convert.EBCDIC2ASCIISS',2303), + ('ebcdich2asciissex','ebcdic to 확장형 ascii 변환시 첫바이트가 F2면 SI에 공백두개 추가',2113,'com.eactive.eai.transformer.function.convert.EBCDIC2ASCIISSEX',2303), + ('ebcdicspacepad','길이만큼의 EBCDIC Space로 채운다',2113,'com.eactive.eai.transformer.function.convert.EBCDICSPACEPAD',2303), + ('ebcdiczeropad','길이만큼의 EBCDIC Zero로 채운다',2113,'com.eactive.eai.transformer.function.convert.EBCDICZEROPAD',2303), + ('euckr2utf8','EUC-KR 을 UTF-8로변환 ',2113,'com.eactive.eai.transformer.function.convert.EUCKR2UTF8',2303), + ('exp','^ 와 같음',2112,' ',2301), + ('if','조건문',2112,' ',2301), + ('integertobytes','Integer binary to bytes',2113,'com.eactive.eai.transformer.function.generic.IntegerToBytes',2302), + ('leftpad','leftpad',2101,'com.eactive.eai.transformer.function.generic.LeftPad',2302), + ('length','Length 함수',2102,'com.eactive.eai.transformer.function.generic.Length',2302), + ('ln','natural log 함수',2112,' ',2301), + ('log','log 함수',2112,' ',2301), + ('ltrim','Left Trim 함수',2101,'com.eactive.eai.transformer.function.generic.LeftTrim',2302), + ('mod','% 와 같음',2112,' ',2301), + ('null2space','0x00을 0x20으로 치환',2113,'com.eactive.eai.transformer.function.convert.Null2Space',2303), + ('removepoint','부호가 없는 숫자 point(.) 삭제',2113,'com.eactive.eai.transformer.function.convert.REMOVEPOINT',2303), + ('removepoints','부호가 포함된 숫자 point(.) 삭제',2113,'com.eactive.eai.transformer.function.convert.REMOVEPOINTS',2303), + ('rightpad','rightpad',2101,'com.eactive.eai.transformer.function.generic.RightPad',2302), + ('rtrim','Right Trim 함수',2101,'com.eactive.eai.transformer.function.generic.RightTrim',2302), + ('samsungpaydecode','삼성페이 RSA 복호화',2113,'com.eactive.eai.transformer.function.crypto.SamsungPayRSADecode',2303), + ('samsungpaynshcdecode','삼성페이 NSHC 복호화',2113,'com.eactive.eai.transformer.function.crypto.SamsungPayNSHCDecode',2303), + ('scpdecode','비밀번호 복호화',2113,'com.eactive.eai.transformer.function.crypto.SCPDecode',2303), + ('scpencode','비밀번호 암호화',2113,'com.eactive.eai.transformer.function.crypto.SCPEncode',2303), + ('shorttobytes','short binary to bytes',2113,'com.eactive.eai.transformer.function.generic.ShortToBytes',2302), + ('sqrt','근',2112,' ',2301), + ('substring','Substring 함수',2101,'com.eactive.eai.transformer.function.generic.Substring',2302), + ('sum','+ 와 같음',2112,' ',2301), + ('tobytes','ToBytes 함수',2113,'com.eactive.eai.transformer.function.generic.ToBytes',2302), + ('todouble','ToDouble 함수',2105,'com.eactive.eai.transformer.function.generic.ToDouble',2302), + ('tointeger','ToInteger 함수',2102,'com.eactive.eai.transformer.function.generic.ToInteger',2302), + ('tostring','ToString 함수',2101,'com.eactive.eai.transformer.function.generic.ToString',2302), + ('trim','Trim 함수',2101,'com.eactive.eai.transformer.function.generic.Trim',2302), + ('utf82euckr','Base 64 암호화',2113,'com.eactive.eai.transformer.function.convert.UTF82EUCKR',2303), + ('xdbdecrypt','xDB 복호화',2101,'com.eactive.eai.transformer.function.crypto.XdbDecrypt',2303), + ('xdbencrypt','xDB 암호화',2101,'com.eactive.eai.transformer.function.crypto.XdbEncrypt',2303); +INSERT INTO tseaitr05 (cnvsnfuntnname,cnvsnfuntnparmname,cnvsnfuntnparmdesc,cnvsnfuntnparmptrnidname,cnvsnfuntnparmserno) VALUES + ('-','Parameter 1','숫자',2112,1), + ('-','Parameter 2','숫자',2112,2), + ('*','Parameter 1','숫자',2112,1), + ('*','Parameter 2','숫자',2112,2), + ('/','Parameter 1','숫자',2112,1), + ('/','Parameter 2','숫자',2112,2), + ('%','Parameter 1','숫자',2112,1), + ('%','Parameter 2','숫자',2112,2), + ('^','Parameter 1','숫자',2112,1), + ('^','Parameter 2','숫자',2112,2), + ('+','Parameter 1','숫자',2112,1), + ('+','Parameter 2','숫자',2112,2), + ('abs','value','숫자',2112,1), + ('addpoint','p1','값',2113,1), + ('addpoint','p2','정수size',2102,2), + ('addpoint','p3','소수size',2102,3), + ('ascii2ebcdic','asciiBytes','BYTE ARRAY',2113,1), + ('ascii2ebcdic9','Parameter 1','BYTE ARRAY',2113,1), + ('ascii2ebcdic9','Parameter 2','숫자',2112,2), + ('ascii2ebcdicm','Parameter 1','BYTE ARRAY',2113,1), + ('ascii2ebcdicm','Parameter 2','숫자',2112,2), + ('ascii2ebcdicnososi','asciiBytes','BYTE ARRAY',2113,1), + ('ascii2ebcdicnososicds','asciiBytes','BYTE ARRAY',2113,1), + ('ascii2ebcdicnososix','Parameter 1','BYTE ARRAY',2113,1), + ('ascii2ebcdicnososix','Parameter 2','숫자',2112,2), + ('ascii2ebcdicx','Parameter 1','BYTE ARRAY',2113,1), + ('ascii2ebcdicx','Parameter 2','숫자',2112,2), + ('asciih2ebcdich','asciiBytes','BYTE ARRAY',2113,1), + ('base64decode','p1','값',2113,1), + ('base64encode','p1','값',2113,1), + ('bytestodouble','value','모든 유형의 값',2116,1), + ('bytestointeger','value','모든 유형의 값',2116,1), + ('bytestoshort','value','모든 유형의 값',2116,1), + ('doubletobytes','value','모든 유형의 값',2116,1), + ('ebcdic2ascii','ebcdicBytes','BYTE ARRAY',2113,1), + ('ebcdic2asciiex','ebcdicBytes','BYTE ARRAY',2113,1), + ('ebcdic2asciim','ebcdicBytes','BYTE ARRAY',2113,1), + ('ebcdic2asciimex','ebcdicBytes','BYTE ARRAY',2113,1), + ('ebcdic2asciinososi','ebcdicBytes','BYTE ARRAY',2113,1), + ('ebcdic2asciinososicds','ebcdicBytes','BYTE ARRAY',2113,1), + ('ebcdic2asciinososicdsex','ebcdicBytes','BYTE ARRAY',2113,1), + ('ebcdic2asciinososiex','ebcdicBytes','BYTE ARRAY',2113,1), + ('ebcdic2asciinososispacepad','ebcdicBytes','BYTE ARRAY',2113,1), + ('ebcdic2asciinososispacepadex','ebcdicBytes','BYTE ARRAY',2113,1), + ('ebcdic2asciiwithsosi','ebcdicBytes','BYTE ARRAY',2113,1), + ('ebcdic2asciiwithsosiex','ebcdicBytes','BYTE ARRAY',2113,1), + ('ebcdich2asciih','ebcdicBytes','BYTE ARRAY',2113,1), + ('ebcdich2asciiss','ebcdicBytes','BYTE ARRAY',2113,1), + ('ebcdich2asciissex','ebcdicBytes','BYTE ARRAY',2113,1), + ('ebcdicspacepad','integer','length',2113,1), + ('ebcdiczeropad','integer','length',2113,1), + ('euckr2utf8','p1','값',2113,1), + ('exp','value','숫자',2112,1), + ('if','Parameter 1','true, false',2117,1), + ('if','Parameter 2','모든 유형의 값',2116,2), + ('if','Parameter 3','모든 유형의 값',2116,3), + ('integertobytes','value','모든 유형의 값',2116,1), + ('leftpad','Parameter 1','source',2113,1), + ('leftpad','Parameter 2','length',2112,2), + ('leftpad','Parameter 3','padding',2101,3), + ('length','value','문자',2101,1), + ('ln','value','숫자',2112,1), + ('log','value','숫자',2112,1), + ('ltrim','value','모든 유형의 값',2116,1), + ('mod','Parameter 1','숫자',2112,1), + ('null2space','value','BYTE ARRAY',2113,1), + ('removepoint','p1','값',2113,1), + ('removepoint','p2','정수size',2102,2), + ('removepoint','p3','소수size',2102,3), + ('removepoints','p1','값',2113,1), + ('removepoints','p2','정수size',2102,2), + ('removepoints','p3','소수size',2102,3), + ('rightpad','Parameter 1','source',2113,1), + ('rightpad','Parameter 2','length',2112,2), + ('rightpad','Parameter 3','padding',2101,3), + ('rtrim','value','모든 유형의 값',2116,1), + ('samsungpaydecode','bytes','BYTE ARRAY',2113,1), + ('samsungpaynshcdecode','Parameter1','복호화대상 데이터',2113,1), + ('samsungpaynshcdecode','Parameter2','키값',2113,2), + ('scpdecode','bytes','BYTE ARRAY',2113,1), + ('scpencode','bytes','BYTE ARRAY',2113,1), + ('shorttobytes','value','모든 유형의 값',2116,1), + ('sqrt','Parameter 2','숫자',2112,1), + ('substring','Parameter 1','숫자',2112,1), + ('substring','Parameter 2?','숫자',2112,2), + ('sum','Parameter 1','숫자',2112,1), + ('sum','Parameter 2','숫자',2112,2), + ('tobytes','value','모든 유형의 값',2116,1), + ('todouble','value','문자',2101,1), + ('tointeger','value','문자',2101,1), + ('tostring','value','모든 유형의 값',2116,1), + ('trim','value','모든 유형의 값',2116,1), + ('utf82euckr','p1','값',2113,1), + ('xdbdecrypt','text','문자',2101,1), + ('xdbencrypt','text','문자',2101,1); diff --git a/src/test/resources/com/eactive/eai/transformer/init_tseaitr01.sql b/src/test/resources/com/eactive/eai/transformer/init_tseaitr01.sql new file mode 100644 index 0000000..706424d --- /dev/null +++ b/src/test/resources/com/eactive/eai/transformer/init_tseaitr01.sql @@ -0,0 +1,5 @@ +INSERT INTO tseaitr01 (cnvsnname,cnvsndesc,lastamndhms,eaisevrdstcd,modfimgtstusdstcd,useyn,verinfo,author) VALUES + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','BASIC_TEST_001','20220810165406 ','E',' ','1','00000',NULL), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','BASIC_TEST_001','20220810165406 ','E',' ','1','00000',NULL), + ('TRANSFORM_TST_BASICTEST002_RES','BASIC_TEST_002','20230522163339 ','E',' ','1','0',NULL), + ('TRANSFORM_TST_BASICTEST002_REQ','BASIC_TEST_002','20230522163528 ','E',' ','1','0',NULL); diff --git a/src/test/resources/com/eactive/eai/transformer/init_tseaitr02.sql b/src/test/resources/com/eactive/eai/transformer/init_tseaitr02.sql new file mode 100644 index 0000000..aa7b947 --- /dev/null +++ b/src/test/resources/com/eactive/eai/transformer/init_tseaitr02.sql @@ -0,0 +1,9 @@ +INSERT INTO tseaitr02 (cnvsnname,loutname,sourcrsultdstcd) VALUES + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_STST00000002_REQ','SRC_LAYOUT'), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ','TGT_LAYOUT'), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES','TGT_LAYOUT'), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_TTST00000002_RES','SRC_LAYOUT'), + ('TRANSFORM_TST_BASICTEST002_RES','TST_TTST10000003_RES','SRC_LAYOUT'), + ('TRANSFORM_TST_BASICTEST002_RES','TST_STST10000003_RES','TGT_LAYOUT'), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_STST10000003_REQ','SRC_LAYOUT'), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_TTST10000003_REQ','TGT_LAYOUT'); diff --git a/src/test/resources/com/eactive/eai/transformer/init_tseaitr03.sql b/src/test/resources/com/eactive/eai/transformer/init_tseaitr03.sql new file mode 100644 index 0000000..0964068 --- /dev/null +++ b/src/test/resources/com/eactive/eai/transformer/init_tseaitr03.sql @@ -0,0 +1,1253 @@ +INSERT INTO tseaitr03 (cnvsnname,cnvsnrsultitempathname,cnvsncmdname,cnvsnitembascval,cnvsnitemserno) VALUES + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_TOTAL_LENGTH','TST_TTST00000002_RES.D1_TOTAL_LENGTH','',1), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_INTERFACE_ID','TST_TTST00000002_RES.D1_INTERFACE_ID','',2), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0001','TST_TTST00000002_RES.D1_FLD_0001','',3), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0002','TST_TTST00000002_RES.D1_FLD_0002','',4), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0003','TST_TTST00000002_RES.D1_FLD_0003','',5), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0004','TST_TTST00000002_RES.D1_FLD_0004','',6), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0005','TST_TTST00000002_RES.D1_FLD_0005','',7), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0006','TST_TTST00000002_RES.D1_FLD_0006','',8), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0007','TST_TTST00000002_RES.D1_FLD_0007','',9), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0008','TST_TTST00000002_RES.D1_FLD_0008','',10), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0009','TST_TTST00000002_RES.D1_FLD_0009','',11), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0010','TST_TTST00000002_RES.D1_FLD_0010','',12), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0011','TST_TTST00000002_RES.D1_FLD_0011','',13), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0012','TST_TTST00000002_RES.D1_FLD_0012','',14), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0013','TST_TTST00000002_RES.D1_FLD_0013','',15), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0014','TST_TTST00000002_RES.D1_FLD_0014','',16), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0015','TST_TTST00000002_RES.D1_FLD_0015','',17), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0016','TST_TTST00000002_RES.D1_FLD_0016','',18), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0017','TST_TTST00000002_RES.D1_FLD_0017','',19), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0018','TST_TTST00000002_RES.D1_FLD_0018','',20), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0019','TST_TTST00000002_RES.D1_FLD_0019','',21), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0020','TST_TTST00000002_RES.D1_FLD_0020','',22), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0021','TST_TTST00000002_RES.D1_FLD_0021','',23), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0022','TST_TTST00000002_RES.D1_FLD_0022','',24), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0023','TST_TTST00000002_RES.D1_FLD_0023','',25), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0024','TST_TTST00000002_RES.D1_FLD_0024','',26), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0025','TST_TTST00000002_RES.D1_FLD_0025','',27), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0026','TST_TTST00000002_RES.D1_FLD_0026','',28), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0027','TST_TTST00000002_RES.D1_FLD_0027','',29), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0028','TST_TTST00000002_RES.D1_FLD_0028','',30), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0029','TST_TTST00000002_RES.D1_FLD_0029','',31), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0030','TST_TTST00000002_RES.D1_FLD_0030','',32), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0031','TST_TTST00000002_RES.D1_FLD_0031','',33), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0032','TST_TTST00000002_RES.D1_FLD_0032','',34), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0033','TST_TTST00000002_RES.D1_FLD_0033','',35), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0034','TST_TTST00000002_RES.D1_FLD_0034','',36), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0035','TST_TTST00000002_RES.D1_FLD_0035','',37), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0036','TST_TTST00000002_RES.D1_FLD_0036','',38), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0037','TST_TTST00000002_RES.D1_FLD_0037','',39), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0038','TST_TTST00000002_RES.D1_FLD_0038','',40), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0039','TST_TTST00000002_RES.D1_FLD_0039','',41), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0040','TST_TTST00000002_RES.D1_FLD_0040','',42), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0041','TST_TTST00000002_RES.D1_FLD_0041','',43), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0042','TST_TTST00000002_RES.D1_FLD_0042','',44), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0043','TST_TTST00000002_RES.D1_FLD_0043','',45), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0044','TST_TTST00000002_RES.D1_FLD_0044','',46), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0045','TST_TTST00000002_RES.D1_FLD_0045','',47), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0046','TST_TTST00000002_RES.D1_FLD_0046','',48), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0047','TST_TTST00000002_RES.D1_FLD_0047','',49), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0048','TST_TTST00000002_RES.D1_FLD_0048','',50), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0049','TST_TTST00000002_RES.D1_FLD_0049','',51), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0050','TST_TTST00000002_RES.D1_FLD_0050','',52), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0051','TST_TTST00000002_RES.D1_FLD_0051','',53), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0052','TST_TTST00000002_RES.D1_FLD_0052','',54), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0053','TST_TTST00000002_RES.D1_FLD_0053','',55), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0054','TST_TTST00000002_RES.D1_FLD_0054','',56), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0055','TST_TTST00000002_RES.D1_FLD_0055','',57), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0056','TST_TTST00000002_RES.D1_FLD_0056','',58), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0057','TST_TTST00000002_RES.D1_FLD_0057','',59), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0058','TST_TTST00000002_RES.D1_FLD_0058','',60), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0059','TST_TTST00000002_RES.D1_FLD_0059','',61), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0060','TST_TTST00000002_RES.D1_FLD_0060','',62), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0061','TST_TTST00000002_RES.D1_FLD_0061','',63), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0062','TST_TTST00000002_RES.D1_FLD_0062','',64), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0063','TST_TTST00000002_RES.D1_FLD_0063','',65), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0064','TST_TTST00000002_RES.D1_FLD_0064','',66), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0065','TST_TTST00000002_RES.D1_FLD_0065','',67), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0066','TST_TTST00000002_RES.D1_FLD_0066','',68), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0067','TST_TTST00000002_RES.D1_FLD_0067','',69), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0068','TST_TTST00000002_RES.D1_FLD_0068','',70), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0069','TST_TTST00000002_RES.D1_FLD_0069','',71), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0070','TST_TTST00000002_RES.D1_FLD_0070','',72), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0071','TST_TTST00000002_RES.D1_FLD_0071','',73), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0072','TST_TTST00000002_RES.D1_FLD_0072','',74), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0073','TST_TTST00000002_RES.D1_FLD_0073','',75), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0074','TST_TTST00000002_RES.D1_FLD_0074','',76), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0075','TST_TTST00000002_RES.D1_FLD_0075','',77), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0076','TST_TTST00000002_RES.D1_FLD_0076','',78), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0077','TST_TTST00000002_RES.D1_FLD_0077','',79), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0078','TST_TTST00000002_RES.D1_FLD_0078','',80), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0079','TST_TTST00000002_RES.D1_FLD_0079','',81), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0080','TST_TTST00000002_RES.D1_FLD_0080','',82), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0081','TST_TTST00000002_RES.D1_FLD_0081','',83), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0082','TST_TTST00000002_RES.D1_FLD_0082','',84), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0083','TST_TTST00000002_RES.D1_FLD_0083','',85), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0084','TST_TTST00000002_RES.D1_FLD_0084','',86), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0085','TST_TTST00000002_RES.D1_FLD_0085','',87), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0086','TST_TTST00000002_RES.D1_FLD_0086','',88), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0087','TST_TTST00000002_RES.D1_FLD_0087','',89), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0088','TST_TTST00000002_RES.D1_FLD_0088','',90), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0089','TST_TTST00000002_RES.D1_FLD_0089','',91), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0090','TST_TTST00000002_RES.D1_FLD_0090','',92), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0091','TST_TTST00000002_RES.D1_FLD_0091','',93), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0092','TST_TTST00000002_RES.D1_FLD_0092','',94), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0093','TST_TTST00000002_RES.D1_FLD_0093','',95), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0094','TST_TTST00000002_RES.D1_FLD_0094','',96), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0095','TST_TTST00000002_RES.D1_FLD_0095','',97), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0096','TST_TTST00000002_RES.D1_FLD_0096','',98), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0097','TST_TTST00000002_RES.D1_FLD_0097','',99), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0098','TST_TTST00000002_RES.D1_FLD_0098','',100); +INSERT INTO tseaitr03 (cnvsnname,cnvsnrsultitempathname,cnvsncmdname,cnvsnitembascval,cnvsnitemserno) VALUES + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0099','TST_TTST00000002_RES.D1_FLD_0099','',101), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0100','TST_TTST00000002_RES.D1_FLD_0100','',102), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2_LENGTH','TST_TTST00000002_RES.D1_GRD_D2_LENGTH','',103), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0001','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0001','',104), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0002','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0002','',105), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0003','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0003','',106), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0004','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0004','',107), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0005','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0005','',108), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0006','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0006','',109), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0007','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0007','',110), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0008','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0008','',111), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0009','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0009','',112), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0010','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0010','',113), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0011','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0011','',114), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0012','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0012','',115), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0013','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0013','',116), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0014','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0014','',117), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0015','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0015','',118), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0016','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0016','',119), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0017','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0017','',120), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0018','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0018','',121), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0019','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0019','',122), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0020','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0020','',123), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0021','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0021','',124), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0022','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0022','',125), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0023','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0023','',126), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0024','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0024','',127), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0025','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0025','',128), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0026','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0026','',129), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0027','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0027','',130), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0028','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0028','',131), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0029','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0029','',132), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0030','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0030','',133), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0031','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0031','',134), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0032','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0032','',135), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0033','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0033','',136), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0034','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0034','',137), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0035','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0035','',138), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0036','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0036','',139), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0037','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0037','',140), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0038','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0038','',141), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0039','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0039','',142), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0040','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0040','',143), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0041','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0041','',144), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0042','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0042','',145), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0043','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0043','',146), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0044','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0044','',147), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0045','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0045','',148), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0046','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0046','',149), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0047','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0047','',150), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0048','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0048','',151), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0049','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0049','',152), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0050','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0050','',153), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0051','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0051','',154), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0052','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0052','',155), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0053','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0053','',156), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0054','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0054','',157), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0055','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0055','',158), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0056','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0056','',159), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0057','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0057','',160), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0058','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0058','',161), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0059','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0059','',162), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0060','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0060','',163), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0061','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0061','',164), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0062','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0062','',165), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0063','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0063','',166), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0064','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0064','',167), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0065','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0065','',168), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0066','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0066','',169), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0067','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0067','',170), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0068','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0068','',171), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0069','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0069','',172), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0070','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0070','',173), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0071','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0071','',174), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0072','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0072','',175), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0073','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0073','',176), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0074','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0074','',177), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0075','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0075','',178), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0076','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0076','',179), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0077','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0077','',180), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0078','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0078','',181), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0079','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0079','',182), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0080','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0080','',183), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0081','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0081','',184), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0082','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0082','',185), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0083','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0083','',186), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0084','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0084','',187), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0085','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0085','',188), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0086','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0086','',189), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0087','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0087','',190), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0088','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0088','',191), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0089','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0089','',192), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0090','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0090','',193), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0091','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0091','',194), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0092','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0092','',195), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0093','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0093','',196), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0094','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0094','',197), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0095','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0095','',198), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0096','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0096','',199), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0097','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0097','',200); +INSERT INTO tseaitr03 (cnvsnname,cnvsnrsultitempathname,cnvsncmdname,cnvsnitembascval,cnvsnitemserno) VALUES + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0098','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0098','',201), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0099','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0099','',202), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0100','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0100','',203), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0101','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0101','',204), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0102','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0102','',205), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0103','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0103','',206), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0104','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0104','',207), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0105','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0105','',208), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0106','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0106','',209), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0107','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0107','',210), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0108','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0108','',211), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0109','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0109','',212), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0110','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0110','',213), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0111','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0111','',214), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0112','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0112','',215), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0113','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0113','',216), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0114','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0114','',217), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0115','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0115','',218), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0116','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0116','',219), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0117','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0117','',220), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0118','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0118','',221), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0119','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0119','',222), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0120','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0120','',223), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0121','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0121','',224), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0122','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0122','',225), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0123','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0123','',226), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0124','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0124','',227), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0125','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0125','',228), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0126','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0126','',229), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0127','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0127','',230), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0128','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0128','',231), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0129','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0129','',232), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0130','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0130','',233), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0131','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0131','',234), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0132','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0132','',235), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0133','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0133','',236), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0134','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0134','',237), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0135','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0135','',238), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0136','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0136','',239), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0137','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0137','',240), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0138','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0138','',241), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0139','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0139','',242), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3_LENGTH','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3_LENGTH','',243), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0001','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0001','',244), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0002','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0002','',245), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0003','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0003','',246), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0004','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0004','',247), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0005','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0005','',248), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0006','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0006','',249), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0007','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0007','',250), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0008','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0008','',251), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0009','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0009','',252), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0010','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0010','',253), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0011','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0011','',254), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0012','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0012','',255), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0013','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0013','',256), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0014','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0014','',257), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0015','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0015','',258), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0016','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0016','',259), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0017','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0017','',260), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0018','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0018','',261), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0019','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0019','',262), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0020','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0020','',263), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0021','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0021','',264), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0022','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0022','',265), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0023','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0023','',266), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0024','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0024','',267), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0025','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0025','',268), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0026','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0026','',269), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0027','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0027','',270), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0028','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0028','',271), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0029','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0029','',272), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0030','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0030','',273), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0031','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0031','',274), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0032','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0032','',275), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0033','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0033','',276), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0034','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0034','',277), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0035','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0035','',278), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0036','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0036','',279), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0037','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0037','',280), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0038','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0038','',281), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0039','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0039','',282), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0040','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0040','',283), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0041','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0041','',284), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0042','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0042','',285), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0043','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0043','',286), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0044','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0044','',287), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0045','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0045','',288), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0046','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0046','',289), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0047','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0047','',290), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0048','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0048','',291), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0049','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0049','',292), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0050','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0050','',293), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0051','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0051','',294), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0052','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0052','',295), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0053','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0053','',296), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0054','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0054','',297), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0055','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0055','',298), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0056','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0056','',299), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0057','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0057','',300); +INSERT INTO tseaitr03 (cnvsnname,cnvsnrsultitempathname,cnvsncmdname,cnvsnitembascval,cnvsnitemserno) VALUES + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0058','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0058','',301), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0059','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0059','',302), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0060','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0060','',303), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0061','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0061','',304), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0062','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0062','',305), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0063','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0063','',306), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0064','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0064','',307), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0065','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0065','',308), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0066','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0066','',309), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0067','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0067','',310), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0068','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0068','',311), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0069','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0069','',312), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0070','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0070','',313), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0071','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0071','',314), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0072','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0072','',315), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0073','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0073','',316), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0074','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0074','',317), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0075','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0075','',318), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0076','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0076','',319), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0077','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0077','',320), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0078','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0078','',321), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0079','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0079','',322), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0080','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0080','',323), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0081','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0081','',324), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0082','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0082','',325), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0083','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0083','',326), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0084','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0084','',327), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0085','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0085','',328), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0086','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0086','',329), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0087','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0087','',330), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0088','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0088','',331), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0089','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0089','',332), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0090','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0090','',333), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0091','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0091','',334), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0092','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0092','',335), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0093','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0093','',336), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0094','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0094','',337), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0095','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0095','',338), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0096','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0096','',339), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0097','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0097','',340), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0098','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0098','',341), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0099','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0099','',342), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4_LENGTH','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4_LENGTH','',343), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0001','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0001','',344), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0002','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0002','',345), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0003','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0003','',346), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0004','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0004','',347), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0005','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0005','',348), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0006','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0006','',349), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0007','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0007','',350), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0008','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0008','',351), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0009','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0009','',352), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0010','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0010','',353), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0011','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0011','',354), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0012','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0012','',355), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0013','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0013','',356), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0014','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0014','',357), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0015','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0015','',358), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0016','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0016','',359), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0017','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0017','',360), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0018','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0018','',361), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0019','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0019','',362), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0020','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0020','',363), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0021','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0021','',364), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0022','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0022','',365), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0023','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0023','',366), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0024','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0024','',367), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0025','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0025','',368), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0026','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0026','',369), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0027','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0027','',370), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0028','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0028','',371), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0029','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0029','',372), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0030','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0030','',373), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0031','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0031','',374), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0032','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0032','',375), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0033','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0033','',376), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0034','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0034','',377), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0035','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0035','',378), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0036','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0036','',379), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0037','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0037','',380), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0038','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0038','',381), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0039','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0039','',382), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0040','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0040','',383), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0041','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0041','',384), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0042','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0042','',385), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0043','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0043','',386), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0044','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0044','',387), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0045','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0045','',388), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0046','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0046','',389), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0047','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0047','',390), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0048','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0048','',391), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0049','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0049','',392), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0050','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0050','',393), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0051','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0051','',394), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0052','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0052','',395), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0053','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0053','',396), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0054','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0054','',397), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0055','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0055','',398), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0056','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0056','',399), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0057','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0057','',400); +INSERT INTO tseaitr03 (cnvsnname,cnvsnrsultitempathname,cnvsncmdname,cnvsnitembascval,cnvsnitemserno) VALUES + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0058','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0058','',401), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0059','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0059','',402), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0060','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0060','',403), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0061','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0061','',404), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0062','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0062','',405), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0063','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0063','',406), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0064','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0064','',407), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0065','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0065','',408), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0066','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0066','',409), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0067','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0067','',410), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0068','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0068','',411), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0069','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0069','',412), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0070','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0070','',413), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0071','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0071','',414), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0072','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0072','',415), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0073','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0073','',416), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0074','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0074','',417), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0075','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0075','',418), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0076','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0076','',419), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0077','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0077','',420), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0078','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0078','',421), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0079','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0079','',422), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0080','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0080','',423), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0081','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0081','',424), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0082','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0082','',425), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0083','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0083','',426), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0084','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0084','',427), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0085','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0085','',428), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0086','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0086','',429), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0087','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0087','',430), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0088','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0088','',431), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0089','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0089','',432), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0090','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0090','',433), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0091','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0091','',434), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0092','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0092','',435), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0093','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0093','',436), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0094','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0094','',437), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0095','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0095','',438), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0096','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0096','',439), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0097','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0097','',440), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0098','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0098','',441), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0099','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0099','',442), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0100','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0100','',443), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0101','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0101','',444), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0102','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0102','',445), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0103','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0103','',446), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0104','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0104','',447), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0105','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0105','',448), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0106','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0106','',449), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0107','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0107','',450), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0108','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0108','',451), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0109','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0109','',452), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0110','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0110','',453), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0111','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0111','',454), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0112','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0112','',455), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0113','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0113','',456), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0114','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0114','',457), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0115','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0115','',458), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0116','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0116','',459), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0117','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0117','',460), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0118','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0118','',461), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0119','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0119','',462), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0120','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0120','',463), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0121','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0121','',464), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0122','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0122','',465), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0123','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0123','',466), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0124','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0124','',467), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0125','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0125','',468), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0126','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0126','',469), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0127','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0127','',470), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0128','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0128','',471), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0129','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0129','',472), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0130','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0130','',473), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0131','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0131','',474), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0132','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0132','',475), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0133','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0133','',476), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0134','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0134','',477), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0135','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0135','',478), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0136','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0136','',479), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0137','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0137','',480), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0138','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0138','',481), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0139','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0139','',482), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0140','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0140','',483), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0141','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0141','',484), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0142','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0142','',485), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0143','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0143','',486), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0144','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0144','',487), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0145','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0145','',488), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0146','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0146','',489), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0147','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0147','',490), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0148','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0148','',491), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0149','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0149','',492), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0150','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0150','',493), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0100','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0100','',494), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0101','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0101','',495), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0102','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0102','',496), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0103','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0103','',497), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0104','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0104','',498), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0105','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0105','',499), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0106','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0106','',500); +INSERT INTO tseaitr03 (cnvsnname,cnvsnrsultitempathname,cnvsncmdname,cnvsnitembascval,cnvsnitemserno) VALUES + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0107','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0107','',501), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0108','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0108','',502), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0109','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0109','',503), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0110','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0110','',504), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0111','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0111','',505), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0112','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0112','',506), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0113','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0113','',507), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0114','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0114','',508), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0115','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0115','',509), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0116','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0116','',510), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0117','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0117','',511), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0118','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0118','',512), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0119','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0119','',513), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0120','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0120','',514), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0121','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0121','',515), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0122','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0122','',516), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0123','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0123','',517), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0124','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0124','',518), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0125','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0125','',519), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0126','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0126','',520), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0127','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0127','',521), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0128','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0128','',522), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0129','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0129','',523), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0130','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0130','',524), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0131','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0131','',525), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0132','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0132','',526), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0133','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0133','',527), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0134','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0134','',528), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0135','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0135','',529), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0136','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0136','',530), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0137','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0137','',531), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0138','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0138','',532), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0139','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0139','',533), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0140','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0140','',534), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0141','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0141','',535), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0142','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0142','',536), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0143','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0143','',537), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0144','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0144','',538), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0145','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0145','',539), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0146','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0146','',540), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0147','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0147','',541), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0148','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0148','',542), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0149','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0149','',543), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0150','TST_TTST00000002_RES.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0150','',544), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0140','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0140','',545), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0141','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0141','',546), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0142','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0142','',547), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0143','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0143','',548), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0144','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0144','',549), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0145','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0145','',550), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0146','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0146','',551), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0147','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0147','',552), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0148','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0148','',553), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0149','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0149','',554), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_GRD_D2[*].D2_FLD_0150','TST_TTST00000002_RES.D1_GRD_D2[*].D2_FLD_0150','',555), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0101','TST_TTST00000002_RES.D1_FLD_0101','',556), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0102','TST_TTST00000002_RES.D1_FLD_0102','',557), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0103','TST_TTST00000002_RES.D1_FLD_0103','',558), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0104','TST_TTST00000002_RES.D1_FLD_0104','',559), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0105','TST_TTST00000002_RES.D1_FLD_0105','',560), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0106','TST_TTST00000002_RES.D1_FLD_0106','',561), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0107','TST_TTST00000002_RES.D1_FLD_0107','',562), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0108','TST_TTST00000002_RES.D1_FLD_0108','',563), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0109','TST_TTST00000002_RES.D1_FLD_0109','',564), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0110','TST_TTST00000002_RES.D1_FLD_0110','',565), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0111','TST_TTST00000002_RES.D1_FLD_0111','',566), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0112','TST_TTST00000002_RES.D1_FLD_0112','',567), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0113','TST_TTST00000002_RES.D1_FLD_0113','',568), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0114','TST_TTST00000002_RES.D1_FLD_0114','',569), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0115','TST_TTST00000002_RES.D1_FLD_0115','',570), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0116','TST_TTST00000002_RES.D1_FLD_0116','',571), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0117','TST_TTST00000002_RES.D1_FLD_0117','',572), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0118','TST_TTST00000002_RES.D1_FLD_0118','',573), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0119','TST_TTST00000002_RES.D1_FLD_0119','',574), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0120','TST_TTST00000002_RES.D1_FLD_0120','',575), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0121','TST_TTST00000002_RES.D1_FLD_0121','',576), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0122','TST_TTST00000002_RES.D1_FLD_0122','',577), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0123','TST_TTST00000002_RES.D1_FLD_0123','',578), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0124','TST_TTST00000002_RES.D1_FLD_0124','',579), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0125','TST_TTST00000002_RES.D1_FLD_0125','',580), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0126','TST_TTST00000002_RES.D1_FLD_0126','',581), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0127','TST_TTST00000002_RES.D1_FLD_0127','',582), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0128','TST_TTST00000002_RES.D1_FLD_0128','',583), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0129','TST_TTST00000002_RES.D1_FLD_0129','',584), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0130','TST_TTST00000002_RES.D1_FLD_0130','',585), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0131','TST_TTST00000002_RES.D1_FLD_0131','',586), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0132','TST_TTST00000002_RES.D1_FLD_0132','',587), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0133','TST_TTST00000002_RES.D1_FLD_0133','',588), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0134','TST_TTST00000002_RES.D1_FLD_0134','',589), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0135','TST_TTST00000002_RES.D1_FLD_0135','',590), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0136','TST_TTST00000002_RES.D1_FLD_0136','',591), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0137','TST_TTST00000002_RES.D1_FLD_0137','',592), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0138','TST_TTST00000002_RES.D1_FLD_0138','',593), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0139','TST_TTST00000002_RES.D1_FLD_0139','',594), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0140','TST_TTST00000002_RES.D1_FLD_0140','',595), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0141','TST_TTST00000002_RES.D1_FLD_0141','',596), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0142','TST_TTST00000002_RES.D1_FLD_0142','',597), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0143','TST_TTST00000002_RES.D1_FLD_0143','',598), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0144','TST_TTST00000002_RES.D1_FLD_0144','',599), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0145','TST_TTST00000002_RES.D1_FLD_0145','',600); +INSERT INTO tseaitr03 (cnvsnname,cnvsnrsultitempathname,cnvsncmdname,cnvsnitembascval,cnvsnitemserno) VALUES + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0146','TST_TTST00000002_RES.D1_FLD_0146','',601), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0147','TST_TTST00000002_RES.D1_FLD_0147','',602), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0148','TST_TTST00000002_RES.D1_FLD_0148','',603), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0149','TST_TTST00000002_RES.D1_FLD_0149','',604), + ('TRANSFORM_TST_ETSTTST00000002S1_RES','TST_STST00000002_RES.D1_FLD_0150','TST_TTST00000002_RES.D1_FLD_0150','',605), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_TOTAL_LENGTH','TST_STST00000002_REQ.D1_TOTAL_LENGTH','',1), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_INTERFACE_ID','TST_STST00000002_REQ.D1_INTERFACE_ID','',2), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0001','TST_STST00000002_REQ.D1_FLD_0001','',3), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0002','TST_STST00000002_REQ.D1_FLD_0002','',4), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0003','TST_STST00000002_REQ.D1_FLD_0003','',5), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0004','TST_STST00000002_REQ.D1_FLD_0004','',6), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0005','TST_STST00000002_REQ.D1_FLD_0005','',7), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0006','TST_STST00000002_REQ.D1_FLD_0006','',8), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0007','TST_STST00000002_REQ.D1_FLD_0007','',9), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0008','TST_STST00000002_REQ.D1_FLD_0008','',10), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0009','TST_STST00000002_REQ.D1_FLD_0009','',11), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0010','TST_STST00000002_REQ.D1_FLD_0010','',12), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0011','TST_STST00000002_REQ.D1_FLD_0011','',13), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0012','TST_STST00000002_REQ.D1_FLD_0012','',14), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0013','TST_STST00000002_REQ.D1_FLD_0013','',15), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0014','TST_STST00000002_REQ.D1_FLD_0014','',16), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0015','TST_STST00000002_REQ.D1_FLD_0015','',17), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0016','TST_STST00000002_REQ.D1_FLD_0016','',18), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0017','TST_STST00000002_REQ.D1_FLD_0017','',19), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0018','TST_STST00000002_REQ.D1_FLD_0018','',20), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0019','TST_STST00000002_REQ.D1_FLD_0019','',21), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0020','TST_STST00000002_REQ.D1_FLD_0020','',22), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0021','TST_STST00000002_REQ.D1_FLD_0021','',23), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0022','TST_STST00000002_REQ.D1_FLD_0022','',24), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0023','TST_STST00000002_REQ.D1_FLD_0023','',25), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0024','TST_STST00000002_REQ.D1_FLD_0024','',26), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0025','TST_STST00000002_REQ.D1_FLD_0025','',27), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0026','TST_STST00000002_REQ.D1_FLD_0026','',28), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0027','TST_STST00000002_REQ.D1_FLD_0027','',29), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0028','TST_STST00000002_REQ.D1_FLD_0028','',30), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0029','TST_STST00000002_REQ.D1_FLD_0029','',31), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0030','TST_STST00000002_REQ.D1_FLD_0030','',32), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0031','TST_STST00000002_REQ.D1_FLD_0031','',33), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0032','TST_STST00000002_REQ.D1_FLD_0032','',34), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0033','TST_STST00000002_REQ.D1_FLD_0033','',35), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0034','TST_STST00000002_REQ.D1_FLD_0034','',36), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0035','TST_STST00000002_REQ.D1_FLD_0035','',37), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0036','TST_STST00000002_REQ.D1_FLD_0036','',38), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0037','TST_STST00000002_REQ.D1_FLD_0037','',39), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0038','TST_STST00000002_REQ.D1_FLD_0038','',40), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0039','TST_STST00000002_REQ.D1_FLD_0039','',41), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0040','TST_STST00000002_REQ.D1_FLD_0040','',42), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0041','TST_STST00000002_REQ.D1_FLD_0041','',43), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0042','TST_STST00000002_REQ.D1_FLD_0042','',44), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0043','TST_STST00000002_REQ.D1_FLD_0043','',45), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0044','TST_STST00000002_REQ.D1_FLD_0044','',46), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0045','TST_STST00000002_REQ.D1_FLD_0045','',47), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0046','TST_STST00000002_REQ.D1_FLD_0046','',48), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0047','TST_STST00000002_REQ.D1_FLD_0047','',49), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0048','TST_STST00000002_REQ.D1_FLD_0048','',50), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0049','TST_STST00000002_REQ.D1_FLD_0049','',51), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0050','TST_STST00000002_REQ.D1_FLD_0050','',52), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0051','TST_STST00000002_REQ.D1_FLD_0051','',53), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0052','TST_STST00000002_REQ.D1_FLD_0052','',54), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0053','TST_STST00000002_REQ.D1_FLD_0053','',55), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0054','TST_STST00000002_REQ.D1_FLD_0054','',56), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0055','TST_STST00000002_REQ.D1_FLD_0055','',57), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0056','TST_STST00000002_REQ.D1_FLD_0056','',58), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0057','TST_STST00000002_REQ.D1_FLD_0057','',59), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0058','TST_STST00000002_REQ.D1_FLD_0058','',60), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0059','TST_STST00000002_REQ.D1_FLD_0059','',61), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0060','TST_STST00000002_REQ.D1_FLD_0060','',62), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0061','TST_STST00000002_REQ.D1_FLD_0061','',63), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0062','TST_STST00000002_REQ.D1_FLD_0062','',64), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0063','TST_STST00000002_REQ.D1_FLD_0063','',65), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0064','TST_STST00000002_REQ.D1_FLD_0064','',66), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0065','TST_STST00000002_REQ.D1_FLD_0065','',67), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0066','TST_STST00000002_REQ.D1_FLD_0066','',68), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0067','TST_STST00000002_REQ.D1_FLD_0067','',69), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0068','TST_STST00000002_REQ.D1_FLD_0068','',70), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0069','TST_STST00000002_REQ.D1_FLD_0069','',71), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0070','TST_STST00000002_REQ.D1_FLD_0070','',72), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0071','TST_STST00000002_REQ.D1_FLD_0071','',73), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0072','TST_STST00000002_REQ.D1_FLD_0072','',74), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0073','TST_STST00000002_REQ.D1_FLD_0073','',75), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0074','TST_STST00000002_REQ.D1_FLD_0074','',76), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0075','TST_STST00000002_REQ.D1_FLD_0075','',77), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0076','TST_STST00000002_REQ.D1_FLD_0076','',78), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0077','TST_STST00000002_REQ.D1_FLD_0077','',79), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0078','TST_STST00000002_REQ.D1_FLD_0078','',80), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0079','TST_STST00000002_REQ.D1_FLD_0079','',81), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0080','TST_STST00000002_REQ.D1_FLD_0080','',82), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0081','TST_STST00000002_REQ.D1_FLD_0081','',83), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0082','TST_STST00000002_REQ.D1_FLD_0082','',84), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0083','TST_STST00000002_REQ.D1_FLD_0083','',85), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0084','TST_STST00000002_REQ.D1_FLD_0084','',86), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0085','TST_STST00000002_REQ.D1_FLD_0085','',87), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0086','TST_STST00000002_REQ.D1_FLD_0086','',88), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0087','TST_STST00000002_REQ.D1_FLD_0087','',89), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0088','TST_STST00000002_REQ.D1_FLD_0088','',90), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0089','TST_STST00000002_REQ.D1_FLD_0089','',91), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0090','TST_STST00000002_REQ.D1_FLD_0090','',92), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0091','TST_STST00000002_REQ.D1_FLD_0091','',93), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0092','TST_STST00000002_REQ.D1_FLD_0092','',94), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0093','TST_STST00000002_REQ.D1_FLD_0093','',95); +INSERT INTO tseaitr03 (cnvsnname,cnvsnrsultitempathname,cnvsncmdname,cnvsnitembascval,cnvsnitemserno) VALUES + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0094','TST_STST00000002_REQ.D1_FLD_0094','',96), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0095','TST_STST00000002_REQ.D1_FLD_0095','',97), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0096','TST_STST00000002_REQ.D1_FLD_0096','',98), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0097','TST_STST00000002_REQ.D1_FLD_0097','',99), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0098','TST_STST00000002_REQ.D1_FLD_0098','',100), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0099','TST_STST00000002_REQ.D1_FLD_0099','',101), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0100','TST_STST00000002_REQ.D1_FLD_0100','',102), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2_LENGTH','TST_STST00000002_REQ.D1_GRD_D2_LENGTH','',103), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0001','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0001','',104), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0002','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0002','',105), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0003','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0003','',106), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0004','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0004','',107), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0005','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0005','',108), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0006','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0006','',109), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0007','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0007','',110), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0008','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0008','',111), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0009','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0009','',112), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0010','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0010','',113), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0011','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0011','',114), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0012','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0012','',115), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0013','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0013','',116), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0014','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0014','',117), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0015','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0015','',118), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0016','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0016','',119), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0017','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0017','',120), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0018','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0018','',121), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0019','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0019','',122), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0020','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0020','',123), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0021','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0021','',124), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0022','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0022','',125), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0023','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0023','',126), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0024','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0024','',127), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0025','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0025','',128), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0026','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0026','',129), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0027','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0027','',130), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0028','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0028','',131), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0029','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0029','',132), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0030','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0030','',133), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0031','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0031','',134), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0032','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0032','',135), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0033','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0033','',136), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0034','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0034','',137), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0035','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0035','',138), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0036','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0036','',139), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0037','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0037','',140), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0038','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0038','',141), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0039','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0039','',142), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0040','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0040','',143), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0041','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0041','',144), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0042','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0042','',145), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0043','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0043','',146), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0044','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0044','',147), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0045','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0045','',148), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0046','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0046','',149), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0047','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0047','',150), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0048','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0048','',151), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0049','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0049','',152), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0050','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0050','',153), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0051','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0051','',154), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0052','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0052','',155), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0053','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0053','',156), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0054','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0054','',157), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0055','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0055','',158), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0056','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0056','',159), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0057','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0057','',160), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0058','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0058','',161), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0059','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0059','',162), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0060','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0060','',163), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0061','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0061','',164), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0062','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0062','',165), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0063','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0063','',166), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0064','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0064','',167), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0065','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0065','',168), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0066','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0066','',169), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0067','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0067','',170), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0068','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0068','',171), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0069','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0069','',172), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0070','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0070','',173), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0071','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0071','',174), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0072','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0072','',175), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0073','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0073','',176), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0074','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0074','',177), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0075','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0075','',178), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0076','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0076','',179), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0077','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0077','',180), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0078','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0078','',181), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0079','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0079','',182), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0080','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0080','',183), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0081','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0081','',184), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0082','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0082','',185), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0083','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0083','',186), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0084','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0084','',187), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0085','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0085','',188), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0086','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0086','',189), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0087','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0087','',190), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0088','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0088','',191), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0089','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0089','',192), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0090','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0090','',193), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0091','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0091','',194), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0092','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0092','',195); +INSERT INTO tseaitr03 (cnvsnname,cnvsnrsultitempathname,cnvsncmdname,cnvsnitembascval,cnvsnitemserno) VALUES + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0093','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0093','',196), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0094','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0094','',197), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0095','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0095','',198), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0096','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0096','',199), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0097','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0097','',200), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0098','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0098','',201), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0099','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0099','',202), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0100','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0100','',203), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0101','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0101','',204), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0102','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0102','',205), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0103','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0103','',206), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0104','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0104','',207), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0105','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0105','',208), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0106','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0106','',209), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0107','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0107','',210), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0108','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0108','',211), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0109','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0109','',212), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0110','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0110','',213), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0111','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0111','',214), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0112','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0112','',215), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0113','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0113','',216), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0114','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0114','',217), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0115','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0115','',218), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0116','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0116','',219), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0117','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0117','',220), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0118','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0118','',221), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0119','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0119','',222), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0120','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0120','',223), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0121','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0121','',224), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0122','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0122','',225), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0123','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0123','',226), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0124','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0124','',227), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0125','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0125','',228), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0126','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0126','',229), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0127','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0127','',230), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0128','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0128','',231), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0129','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0129','',232), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0130','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0130','',233), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0131','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0131','',234), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0132','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0132','',235), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0133','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0133','',236), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0134','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0134','',237), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0135','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0135','',238), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0136','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0136','',239), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0137','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0137','',240), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0138','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0138','',241), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0139','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0139','',242), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3_LENGTH','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3_LENGTH','',243), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0001','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0001','',244), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0002','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0002','',245), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0003','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0003','',246), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0004','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0004','',247), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0005','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0005','',248), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0006','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0006','',249), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0007','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0007','',250), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0008','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0008','',251), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0009','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0009','',252), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0010','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0010','',253), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0011','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0011','',254), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0012','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0012','',255), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0013','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0013','',256), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0014','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0014','',257), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0015','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0015','',258), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0016','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0016','',259), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0017','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0017','',260), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0018','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0018','',261), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0019','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0019','',262), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0020','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0020','',263), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0021','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0021','',264), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0022','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0022','',265), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0023','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0023','',266), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0024','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0024','',267), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0025','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0025','',268), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0026','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0026','',269), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0027','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0027','',270), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0028','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0028','',271), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0029','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0029','',272), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0030','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0030','',273), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0031','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0031','',274), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0032','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0032','',275), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0033','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0033','',276), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0034','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0034','',277), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0035','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0035','',278), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0036','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0036','',279), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0037','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0037','',280), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0038','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0038','',281), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0039','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0039','',282), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0040','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0040','',283), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0041','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0041','',284), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0042','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0042','',285), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0043','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0043','',286), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0044','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0044','',287), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0045','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0045','',288), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0046','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0046','',289), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0047','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0047','',290), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0048','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0048','',291), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0049','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0049','',292), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0050','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0050','',293), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0051','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0051','',294), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0052','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0052','',295); +INSERT INTO tseaitr03 (cnvsnname,cnvsnrsultitempathname,cnvsncmdname,cnvsnitembascval,cnvsnitemserno) VALUES + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0053','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0053','',296), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0054','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0054','',297), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0055','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0055','',298), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0056','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0056','',299), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0057','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0057','',300), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0058','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0058','',301), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0059','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0059','',302), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0060','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0060','',303), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0061','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0061','',304), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0062','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0062','',305), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0063','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0063','',306), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0064','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0064','',307), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0065','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0065','',308), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0066','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0066','',309), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0067','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0067','',310), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0068','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0068','',311), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0069','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0069','',312), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0070','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0070','',313), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0071','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0071','',314), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0072','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0072','',315), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0073','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0073','',316), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0074','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0074','',317), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0075','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0075','',318), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0076','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0076','',319), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0077','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0077','',320), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0078','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0078','',321), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0079','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0079','',322), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0080','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0080','',323), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0081','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0081','',324), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0082','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0082','',325), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0083','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0083','',326), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0084','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0084','',327), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0085','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0085','',328), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0086','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0086','',329), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0087','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0087','',330), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0088','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0088','',331), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0089','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0089','',332), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0090','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0090','',333), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0091','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0091','',334), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0092','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0092','',335), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0093','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0093','',336), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0094','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0094','',337), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0095','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0095','',338), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0096','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0096','',339), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0097','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0097','',340), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0098','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0098','',341), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0099','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0099','',342), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4_LENGTH','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4_LENGTH','',343), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0001','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0001','',344), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0002','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0002','',345), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0003','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0003','',346), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0004','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0004','',347), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0005','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0005','',348), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0006','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0006','',349), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0007','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0007','',350), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0008','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0008','',351), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0009','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0009','',352), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0010','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0010','',353), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0011','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0011','',354), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0012','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0012','',355), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0013','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0013','',356), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0014','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0014','',357), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0015','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0015','',358), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0016','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0016','',359), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0017','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0017','',360), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0018','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0018','',361), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0019','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0019','',362), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0020','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0020','',363), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0021','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0021','',364), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0022','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0022','',365), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0023','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0023','',366), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0024','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0024','',367), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0025','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0025','',368), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0026','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0026','',369), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0027','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0027','',370), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0028','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0028','',371), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0029','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0029','',372), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0030','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0030','',373), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0031','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0031','',374), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0032','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0032','',375), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0033','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0033','',376), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0034','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0034','',377), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0035','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0035','',378), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0036','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0036','',379), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0037','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0037','',380), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0038','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0038','',381), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0039','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0039','',382), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0040','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0040','',383), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0041','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0041','',384), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0042','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0042','',385), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0043','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0043','',386), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0044','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0044','',387), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0045','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0045','',388), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0046','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0046','',389), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0047','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0047','',390), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0048','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0048','',391), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0049','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0049','',392), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0050','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0050','',393), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0051','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0051','',394), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0052','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0052','',395); +INSERT INTO tseaitr03 (cnvsnname,cnvsnrsultitempathname,cnvsncmdname,cnvsnitembascval,cnvsnitemserno) VALUES + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0053','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0053','',396), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0054','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0054','',397), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0055','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0055','',398), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0056','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0056','',399), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0057','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0057','',400), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0058','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0058','',401), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0059','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0059','',402), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0060','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0060','',403), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0061','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0061','',404), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0062','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0062','',405), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0063','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0063','',406), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0064','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0064','',407), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0065','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0065','',408), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0066','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0066','',409), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0067','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0067','',410), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0068','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0068','',411), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0069','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0069','',412), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0070','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0070','',413), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0071','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0071','',414), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0072','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0072','',415), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0073','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0073','',416), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0074','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0074','',417), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0075','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0075','',418), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0076','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0076','',419), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0077','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0077','',420), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0078','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0078','',421), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0079','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0079','',422), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0080','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0080','',423), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0081','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0081','',424), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0082','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0082','',425), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0083','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0083','',426), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0084','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0084','',427), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0085','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0085','',428), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0086','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0086','',429), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0087','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0087','',430), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0088','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0088','',431), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0089','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0089','',432), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0090','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0090','',433), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0091','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0091','',434), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0092','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0092','',435), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0093','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0093','',436), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0094','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0094','',437), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0095','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0095','',438), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0096','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0096','',439), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0097','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0097','',440), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0098','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0098','',441), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0099','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0099','',442), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0100','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0100','',443), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0101','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0101','',444), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0102','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0102','',445), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0103','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0103','',446), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0104','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0104','',447), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0105','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0105','',448), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0106','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0106','',449), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0107','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0107','',450), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0108','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0108','',451), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0109','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0109','',452), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0110','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0110','',453), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0111','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0111','',454), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0112','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0112','',455), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0113','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0113','',456), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0114','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0114','',457), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0115','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0115','',458), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0116','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0116','',459), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0117','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0117','',460), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0118','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0118','',461), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0119','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0119','',462), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0120','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0120','',463), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0121','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0121','',464), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0122','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0122','',465), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0123','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0123','',466), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0124','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0124','',467), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0125','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0125','',468), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0126','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0126','',469), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0127','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0127','',470), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0128','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0128','',471), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0129','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0129','',472), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0130','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0130','',473), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0131','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0131','',474), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0132','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0132','',475), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0133','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0133','',476), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0134','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0134','',477), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0135','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0135','',478), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0136','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0136','',479), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0137','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0137','',480), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0138','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0138','',481), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0139','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0139','',482), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0140','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0140','',483), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0141','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0141','',484), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0142','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0142','',485), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0143','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0143','',486), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0144','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0144','',487), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0145','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0145','',488), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0146','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0146','',489), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0147','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0147','',490), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0148','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0148','',491), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0149','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0149','',492), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0150','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_GRD_D4[*].D4_FLD_0150','',493), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0100','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0100','',494), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0101','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0101','',495); +INSERT INTO tseaitr03 (cnvsnname,cnvsnrsultitempathname,cnvsncmdname,cnvsnitembascval,cnvsnitemserno) VALUES + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0102','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0102','',496), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0103','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0103','',497), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0104','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0104','',498), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0105','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0105','',499), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0106','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0106','',500), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0107','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0107','',501), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0108','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0108','',502), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0109','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0109','',503), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0110','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0110','',504), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0111','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0111','',505), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0112','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0112','',506), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0113','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0113','',507), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0114','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0114','',508), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0115','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0115','',509), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0116','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0116','',510), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0117','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0117','',511), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0118','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0118','',512), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0119','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0119','',513), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0120','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0120','',514), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0121','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0121','',515), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0122','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0122','',516), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0123','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0123','',517), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0124','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0124','',518), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0125','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0125','',519), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0126','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0126','',520), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0127','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0127','',521), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0128','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0128','',522), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0129','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0129','',523), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0130','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0130','',524), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0131','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0131','',525), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0132','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0132','',526), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0133','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0133','',527), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0134','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0134','',528), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0135','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0135','',529), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0136','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0136','',530), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0137','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0137','',531), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0138','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0138','',532), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0139','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0139','',533), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0140','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0140','',534), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0141','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0141','',535), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0142','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0142','',536), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0143','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0143','',537), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0144','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0144','',538), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0145','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0145','',539), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0146','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0146','',540), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0147','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0147','',541), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0148','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0148','',542), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0149','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0149','',543), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0150','TST_STST00000002_REQ.D1_GRD_D2[*].D2_GRD_D3[*].D3_FLD_0150','',544), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0140','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0140','',545), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0141','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0141','',546), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0142','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0142','',547), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0143','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0143','',548), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0144','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0144','',549), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0145','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0145','',550), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0146','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0146','',551), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0147','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0147','',552), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0148','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0148','',553), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0149','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0149','',554), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_GRD_D2[*].D2_FLD_0150','TST_STST00000002_REQ.D1_GRD_D2[*].D2_FLD_0150','',555), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0101','TST_STST00000002_REQ.D1_FLD_0101','',556), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0102','TST_STST00000002_REQ.D1_FLD_0102','',557), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0103','TST_STST00000002_REQ.D1_FLD_0103','',558), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0104','TST_STST00000002_REQ.D1_FLD_0104','',559), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0105','TST_STST00000002_REQ.D1_FLD_0105','',560), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0106','TST_STST00000002_REQ.D1_FLD_0106','',561), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0107','TST_STST00000002_REQ.D1_FLD_0107','',562), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0108','TST_STST00000002_REQ.D1_FLD_0108','',563), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0109','TST_STST00000002_REQ.D1_FLD_0109','',564), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0110','TST_STST00000002_REQ.D1_FLD_0110','',565), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0111','TST_STST00000002_REQ.D1_FLD_0111','',566), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0112','TST_STST00000002_REQ.D1_FLD_0112','',567), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0113','TST_STST00000002_REQ.D1_FLD_0113','',568), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0114','TST_STST00000002_REQ.D1_FLD_0114','',569), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0115','TST_STST00000002_REQ.D1_FLD_0115','',570), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0116','TST_STST00000002_REQ.D1_FLD_0116','',571), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0117','TST_STST00000002_REQ.D1_FLD_0117','',572), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0118','TST_STST00000002_REQ.D1_FLD_0118','',573), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0119','TST_STST00000002_REQ.D1_FLD_0119','',574), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0120','TST_STST00000002_REQ.D1_FLD_0120','',575), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0121','TST_STST00000002_REQ.D1_FLD_0121','',576), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0122','TST_STST00000002_REQ.D1_FLD_0122','',577), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0123','TST_STST00000002_REQ.D1_FLD_0123','',578), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0124','TST_STST00000002_REQ.D1_FLD_0124','',579), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0125','TST_STST00000002_REQ.D1_FLD_0125','',580), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0126','TST_STST00000002_REQ.D1_FLD_0126','',581), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0127','TST_STST00000002_REQ.D1_FLD_0127','',582), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0128','TST_STST00000002_REQ.D1_FLD_0128','',583), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0129','TST_STST00000002_REQ.D1_FLD_0129','',584), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0130','TST_STST00000002_REQ.D1_FLD_0130','',585), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0131','TST_STST00000002_REQ.D1_FLD_0131','',586), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0132','TST_STST00000002_REQ.D1_FLD_0132','',587), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0133','TST_STST00000002_REQ.D1_FLD_0133','',588), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0134','TST_STST00000002_REQ.D1_FLD_0134','',589), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0135','TST_STST00000002_REQ.D1_FLD_0135','',590), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0136','TST_STST00000002_REQ.D1_FLD_0136','',591), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0137','TST_STST00000002_REQ.D1_FLD_0137','',592), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0138','TST_STST00000002_REQ.D1_FLD_0138','',593), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0139','TST_STST00000002_REQ.D1_FLD_0139','',594), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0140','TST_STST00000002_REQ.D1_FLD_0140','',595); +INSERT INTO tseaitr03 (cnvsnname,cnvsnrsultitempathname,cnvsncmdname,cnvsnitembascval,cnvsnitemserno) VALUES + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0141','TST_STST00000002_REQ.D1_FLD_0141','',596), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0142','TST_STST00000002_REQ.D1_FLD_0142','',597), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0143','TST_STST00000002_REQ.D1_FLD_0143','',598), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0144','TST_STST00000002_REQ.D1_FLD_0144','',599), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0145','TST_STST00000002_REQ.D1_FLD_0145','',600), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0146','TST_STST00000002_REQ.D1_FLD_0146','',601), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0147','TST_STST00000002_REQ.D1_FLD_0147','',602), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0148','TST_STST00000002_REQ.D1_FLD_0148','',603), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0149','TST_STST00000002_REQ.D1_FLD_0149','',604), + ('TRANSFORM_TST_ETSTTST00000002S1_REQ','TST_TTST00000002_REQ.D1_FLD_0150','TST_STST00000002_REQ.D1_FLD_0150','',605), + ('TRANSFORM_TST_BASICTEST002_RES','TST_STST10000003_RES.FIELD1','TST_TTST10000003_RES.FIELD1','',1), + ('TRANSFORM_TST_BASICTEST002_RES','TST_STST10000003_RES.FIELD2','TST_TTST10000003_RES.FIELD2','',2), + ('TRANSFORM_TST_BASICTEST002_RES','TST_STST10000003_RES.FIELD3','TST_TTST10000003_RES.FIELD3','',3), + ('TRANSFORM_TST_BASICTEST002_RES','TST_STST10000003_RES.FIELD4','TST_TTST10000003_RES.FIELD4','',4), + ('TRANSFORM_TST_BASICTEST002_RES','TST_STST10000003_RES.DATA_CNT','TST_TTST10000003_RES.DATA_CNT','',5), + ('TRANSFORM_TST_BASICTEST002_RES','TST_STST10000003_RES.DATA_GROUP[*].DATAFIELD1','TST_TTST10000003_RES.DATA_GROUP[*].DATAFIELD1','',7), + ('TRANSFORM_TST_BASICTEST002_RES','TST_STST10000003_RES.DATA_GROUP[*].DATAFIELD2','TST_TTST10000003_RES.DATA_GROUP[*].DATAFIELD2','',8), + ('TRANSFORM_TST_BASICTEST002_RES','TST_STST10000003_RES.DATA_GROUP[*].DATAFIELD3','TST_TTST10000003_RES.DATA_GROUP[*].DATAFIELD3','',9), + ('TRANSFORM_TST_BASICTEST002_RES','TST_STST10000003_RES.DATA_GROUP[*].DATAFIELD4','TST_TTST10000003_RES.DATA_GROUP[*].DATAFIELD4','',10), + ('TRANSFORM_TST_BASICTEST002_RES','TST_STST10000003_RES.DATA_GROUP[*].DATAFIELD5','TST_TTST10000003_RES.DATA_GROUP[*].DATAFIELD5','',11), + ('TRANSFORM_TST_BASICTEST002_RES','TST_STST10000003_RES.DATA_GROUP[*].DATAFIELD6','TST_TTST10000003_RES.DATA_GROUP[*].DATAFIELD6','',12), + ('TRANSFORM_TST_BASICTEST002_RES','TST_STST10000003_RES.DATA_GROUP[*].DATAFIELD7','TST_TTST10000003_RES.DATA_GROUP[*].DATAFIELD7','',13), + ('TRANSFORM_TST_BASICTEST002_RES','TST_STST10000003_RES.DATA_GROUP[*].DATAFIELD8','TST_TTST10000003_RES.DATA_GROUP[*].DATAFIELD8','',14), + ('TRANSFORM_TST_BASICTEST002_RES','TST_STST10000003_RES.DATA_GROUP[*].DATAFIELD9','TST_TTST10000003_RES.DATA_GROUP[*].DATAFIELD9','',15), + ('TRANSFORM_TST_BASICTEST002_RES','TST_STST10000003_RES.DATA_GROUP[*].DATAFIELD0','TST_TTST10000003_RES.DATA_GROUP[*].DATAFIELD0','',16), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_TTST10000003_REQ.FIELD1','TST_STST10000003_REQ.FIELD1','',1), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_TTST10000003_REQ.FIELD2','TST_STST10000003_REQ.FIELD2','',2), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_TTST10000003_REQ.FIELD3','TST_STST10000003_REQ.FIELD3','',3), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_TTST10000003_REQ.FIELD4','TST_STST10000003_REQ.FIELD4','',4), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_TTST10000003_REQ.DATA_CNT','TST_STST10000003_REQ.DATA_CNT','',5), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_TTST10000003_REQ.DATA_GROUP[*].DATAFIELD1','TST_STST10000003_REQ.DATA_GROUP[*].DATAFIELD1','',7), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_TTST10000003_REQ.DATA_GROUP[*].DATAFIELD2','TST_STST10000003_REQ.DATA_GROUP[*].DATAFIELD2','',8), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_TTST10000003_REQ.DATA_GROUP[*].DATAFIELD3','TST_STST10000003_REQ.DATA_GROUP[*].DATAFIELD3','',9), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_TTST10000003_REQ.DATA_GROUP[*].DATAFIELD4','TST_STST10000003_REQ.DATA_GROUP[*].DATAFIELD4','',10), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_TTST10000003_REQ.DATA_GROUP[*].DATAFIELD5','TST_STST10000003_REQ.DATA_GROUP[*].DATAFIELD5','',11), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_TTST10000003_REQ.DATA_GROUP[*].DATAFIELD6','TST_STST10000003_REQ.DATA_GROUP[*].DATAFIELD6','',12), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_TTST10000003_REQ.DATA_GROUP[*].DATAFIELD7','TST_STST10000003_REQ.DATA_GROUP[*].DATAFIELD7','',13), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_TTST10000003_REQ.DATA_GROUP[*].DATAFIELD8','TST_STST10000003_REQ.DATA_GROUP[*].DATAFIELD8','',14), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_TTST10000003_REQ.DATA_GROUP[*].DATAFIELD9','TST_STST10000003_REQ.DATA_GROUP[*].DATAFIELD9','',15), + ('TRANSFORM_TST_BASICTEST002_REQ','TST_TTST10000003_REQ.DATA_GROUP[*].DATAFIELD0','TST_STST10000003_REQ.DATA_GROUP[*].DATAFIELD0','',16); diff --git a/src/test/resources/com/eactive/eai/transformer/init_tseaitr06.sql b/src/test/resources/com/eactive/eai/transformer/init_tseaitr06.sql new file mode 100644 index 0000000..e42f7a3 --- /dev/null +++ b/src/test/resources/com/eactive/eai/transformer/init_tseaitr06.sql @@ -0,0 +1,14 @@ +INSERT INTO tseaitr06 (loutptrnname,loutptrndesc,msgloutcretnclsname) VALUES + ('BYTES','BYTE ASCII 전문 타입','com.eactive.eai.transformer.message.generator.BytesMessageGenerator'), + ('COMBYTES','HEADER만 정의한 BYTE ASCII 전문 타입','com.eactive.eai.transformer.message.generator.CommonBytesMessageGenerator'), + ('COMEBCDIC','HEADER만 정의한 BYTE EBCDIC 전문 타입','com.eactive.eai.transformer.message.generator.CommonEbcdicMessageGenerator'), + ('EBCDIC','BYTE EBCDIC 전문 타입','com.eactive.eai.transformer.message.generator.EbcdicMessageGenerator'), + ('FULLBYTES','BYPASSS용 ASCII 전문 타입','com.eactive.eai.transformer.message.generator.FullBytesMessageGenerator'), + ('JSON','표준 JSON 메시지','com.eactive.eai.transformer.message.generator.JSONMessageGenerator'), + ('MVBYTES','모니터링 파싱용 가변 BYTE ASCII 전문 타입','com.eactive.eai.transformer.message.generator.MonitoringVBytesMessageGenerator'), + ('MVEBCDIC','모니터링 파싱용 가변 BYTE EBCDIC 전문 타입','com.eactive.eai.transformer.message.generator.MonitoringVEbcdicMessageGenerator'), + ('ODDBYTES','인터넷뱅킹 금결원 응답전문 GRID의 건수가 0일 경우에도 실제 GRID는 1건이 설정','com.eactive.eai.transformer.message.generator.OddBytesMessageGenerator'), + ('VBYTES','가변 BYTE ASCII 전문 타입','com.eactive.eai.transformer.message.generator.VariableBytesMessageGenerator'), + ('VEBCDIC','가변 BYTE EBCDIC 전문 타입','com.eactive.eai.transformer.message.generator.VariableEbcdicMessageGenerator'), + ('VFIELD','가변 필드 지원','com.eactive.eai.transformer.message.generator.VariableFieldMessageGenerator'), + ('XML','XML 데이터','com.eactive.eai.transformer.message.generator.XMLMessageGenerator'); diff --git a/src/test/resources/com/eactive/eai/transformer/init_tseaitr07.sql b/src/test/resources/com/eactive/eai/transformer/init_tseaitr07.sql new file mode 100644 index 0000000..7c35d7f --- /dev/null +++ b/src/test/resources/com/eactive/eai/transformer/init_tseaitr07.sql @@ -0,0 +1,10 @@ +INSERT INTO tseaitr07 (loutname,loutptrnname,loutdesc,lastamndhms,eaibzwkdstcd,uapplname,sysintfacname,eaisevrdstcd,modfimgtstusdstcd,useyn,verinfo,author) VALUES + ('STD_HNCPHEADER_REQ','BYTES','하나캐피탈_HEADER','2022081016492819','IIA',' ',' ','E',' ','1','00001','SI210210'), + ('TST_STST00000002_REQ','BYTES','BASIC_TEST_001','2022081016540565','TST',' ',' ','E',' ','1','00002','admin'), + ('TST_STST00000002_RES','BYTES','BASIC_TEST_001','2022081016540567','TST',' ',' ','E',' ','1','00002','admin'), + ('TST_TTST00000002_REQ','JSON','BASIC_TEST_001','2022081016540569','TST',' ',' ','E',' ','1','00002','admin'), + ('TST_TTST00000002_RES','JSON','BASIC_TEST_001','2022081016540570','TST',' ',' ','E',' ','1','00002','admin'), + ('TST_STST10000003_RES','BYTES','BASIC_TEST_001','2023051815523876','TST',' ',' ','E',' ','1','00002','admin'), + ('TST_TTST10000003_REQ','JSON','BASIC_TEST_001','2023051815524814','TST',' ',' ','E',' ','1','00002','admin'), + ('TST_TTST10000003_RES','JSON','BASIC_TEST_001','2023051815525581','TST',' ',' ','E',' ','1','00002','admin'), + ('TST_STST10000003_REQ','BYTES','BASIC_TEST_001','2023052210512676','TST',' ',' ','E',' ','1','00002','admin'); diff --git a/src/test/resources/com/eactive/eai/transformer/init_tseaitr08.sql b/src/test/resources/com/eactive/eai/transformer/init_tseaitr08.sql new file mode 100644 index 0000000..e42e346 --- /dev/null +++ b/src/test/resources/com/eactive/eai/transformer/init_tseaitr08.sql @@ -0,0 +1,2557 @@ +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('STD_HNCPHEADER_REQ','com_code',15,1015,1000,'그룹사 코드',2203,2113,NULL,4,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','conn_tp',18,1018,1000,'요청채널구분',2203,2113,NULL,2,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','dept_cd',17,1017,1000,'부서코드',2203,2113,NULL,7,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','encrypt_yn',7,1007,1000,'전문암호화여부',2203,2113,NULL,2,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','filler',26,1026,1000,'Filler',2203,2113,NULL,125,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','global_id',2,1002,1000,'Global아이디',2203,2113,NULL,29,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','head_code',16,1016,1000,'본부코드',2203,2113,NULL,7,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','http_url',8,1008,1000,'HTTP URL정보',2203,2113,NULL,100,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','Inter_chn',19,1019,1000,'시스템구분',2203,2113,NULL,2,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','ip_addr',13,1013,1000,'IP Address',2203,2113,NULL,47,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','ip_mac',14,1014,1000,'Client MAC Address',2203,2113,NULL,12,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','msg_id',24,1024,1000,'오류코드',2203,2113,NULL,7,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','msg_len',1,1001,1000,'전문길이',2203,2113,NULL,6,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','msg_nm',25,1025,1000,'오류메시지',2203,2113,NULL,250,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','recv_tm',20,1020,1000,'전문수신시간',2203,2113,NULL,17,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','return_gubun',22,1022,1000,'전문응답구분',2203,2113,NULL,1,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','return_value',23,1023,1000,'처리결과',2203,2113,NULL,1,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','scr_dsc',11,1011,1000,'화면명',2203,2113,NULL,100,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','scr_no',10,1010,1000,'화면번호',2203,2113,NULL,30,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','screen_id',9,1009,1000,'화면ID',2203,2113,NULL,13,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','send_tm',21,1021,1000,'전문송신시간',2203,2113,NULL,17,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','service_cmt',4,1004,1000,'거래코드설명',2203,2113,NULL,100,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','service_id',3,1003,1000,'거래코드',2203,2113,NULL,10,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','service_tn',5,1005,1000,'거래구분',2203,2113,NULL,1,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','Session_id',6,1006,1000,'Session아이디',2203,2113,NULL,100,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('STD_HNCPHEADER_REQ','STD_HNCPHEADER_REQ',0,1000,0,'',2201,2100,'',0,'','','',0,0,'',' ',1,0,NULL,0,NULL,NULL), + ('STD_HNCPHEADER_REQ','usr_id',12,1012,1000,'사용자ID',2203,2113,NULL,10,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('TST_STST00000002_REQ','D1_FLD_0001',3,1003,1000,'D1_FLD_0001',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0002',4,1004,1000,'D1_FLD_0002',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0003',5,1005,1000,'D1_FLD_0003',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0004',6,1006,1000,'D1_FLD_0004',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0005',7,1007,1000,'D1_FLD_0005',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0006',8,1008,1000,'D1_FLD_0006',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0007',9,1009,1000,'D1_FLD_0007',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0008',10,1010,1000,'D1_FLD_0008',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0009',11,1011,1000,'D1_FLD_0009',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0010',12,1012,1000,'D1_FLD_0010',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0011',13,1013,1000,'D1_FLD_0011',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0012',14,1014,1000,'D1_FLD_0012',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0013',15,1015,1000,'D1_FLD_0013',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0014',16,1016,1000,'D1_FLD_0014',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0015',17,1017,1000,'D1_FLD_0015',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0016',18,1018,1000,'D1_FLD_0016',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0017',19,1019,1000,'D1_FLD_0017',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0018',20,1020,1000,'D1_FLD_0018',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0019',21,1021,1000,'D1_FLD_0019',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0020',22,1022,1000,'D1_FLD_0020',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0021',23,1023,1000,'D1_FLD_0021',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0022',24,1024,1000,'D1_FLD_0022',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0023',25,1025,1000,'D1_FLD_0023',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0024',26,1026,1000,'D1_FLD_0024',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0025',27,1027,1000,'D1_FLD_0025',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0026',28,1028,1000,'D1_FLD_0026',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0027',29,1029,1000,'D1_FLD_0027',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0028',30,1030,1000,'D1_FLD_0028',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0029',31,1031,1000,'D1_FLD_0029',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0030',32,1032,1000,'D1_FLD_0030',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0031',33,1033,1000,'D1_FLD_0031',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0032',34,1034,1000,'D1_FLD_0032',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0033',35,1035,1000,'D1_FLD_0033',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0034',36,1036,1000,'D1_FLD_0034',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0035',37,1037,1000,'D1_FLD_0035',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0036',38,1038,1000,'D1_FLD_0036',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0037',39,1039,1000,'D1_FLD_0037',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0038',40,1040,1000,'D1_FLD_0038',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0039',41,1041,1000,'D1_FLD_0039',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0040',42,1042,1000,'D1_FLD_0040',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0041',43,1043,1000,'D1_FLD_0041',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0042',44,1044,1000,'D1_FLD_0042',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0043',45,1045,1000,'D1_FLD_0043',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0044',46,1046,1000,'D1_FLD_0044',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0045',47,1047,1000,'D1_FLD_0045',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0046',48,1048,1000,'D1_FLD_0046',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0047',49,1049,1000,'D1_FLD_0047',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0048',50,1050,1000,'D1_FLD_0048',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0049',51,1051,1000,'D1_FLD_0049',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0050',52,1052,1000,'D1_FLD_0050',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0051',53,1053,1000,'D1_FLD_0051',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0052',54,1054,1000,'D1_FLD_0052',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0053',55,1055,1000,'D1_FLD_0053',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0054',56,1056,1000,'D1_FLD_0054',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0055',57,1057,1000,'D1_FLD_0055',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0056',58,1058,1000,'D1_FLD_0056',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0057',59,1059,1000,'D1_FLD_0057',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0058',60,1060,1000,'D1_FLD_0058',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0059',61,1061,1000,'D1_FLD_0059',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0060',62,1062,1000,'D1_FLD_0060',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0061',63,1063,1000,'D1_FLD_0061',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0062',64,1064,1000,'D1_FLD_0062',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0063',65,1065,1000,'D1_FLD_0063',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0064',66,1066,1000,'D1_FLD_0064',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0065',67,1067,1000,'D1_FLD_0065',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0066',68,1068,1000,'D1_FLD_0066',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0067',69,1069,1000,'D1_FLD_0067',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0068',70,1070,1000,'D1_FLD_0068',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0069',71,1071,1000,'D1_FLD_0069',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0070',72,1072,1000,'D1_FLD_0070',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0071',73,1073,1000,'D1_FLD_0071',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0072',74,1074,1000,'D1_FLD_0072',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0073',75,1075,1000,'D1_FLD_0073',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_STST00000002_REQ','D1_FLD_0074',76,1076,1000,'D1_FLD_0074',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0075',77,1077,1000,'D1_FLD_0075',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0076',78,1078,1000,'D1_FLD_0076',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0077',79,1079,1000,'D1_FLD_0077',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0078',80,1080,1000,'D1_FLD_0078',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0079',81,1081,1000,'D1_FLD_0079',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0080',82,1082,1000,'D1_FLD_0080',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0081',83,1083,1000,'D1_FLD_0081',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0082',84,1084,1000,'D1_FLD_0082',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0083',85,1085,1000,'D1_FLD_0083',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0084',86,1086,1000,'D1_FLD_0084',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0085',87,1087,1000,'D1_FLD_0085',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0086',88,1088,1000,'D1_FLD_0086',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0087',89,1089,1000,'D1_FLD_0087',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0088',90,1090,1000,'D1_FLD_0088',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0089',91,1091,1000,'D1_FLD_0089',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0090',92,1092,1000,'D1_FLD_0090',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0091',93,1093,1000,'D1_FLD_0091',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0092',94,1094,1000,'D1_FLD_0092',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0093',95,1095,1000,'D1_FLD_0093',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0094',96,1096,1000,'D1_FLD_0094',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0095',97,1097,1000,'D1_FLD_0095',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0096',98,1098,1000,'D1_FLD_0096',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0097',99,1099,1000,'D1_FLD_0097',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0098',100,1100,1000,'D1_FLD_0098',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0099',101,1101,1000,'D1_FLD_0099',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0100',102,1102,1000,'D1_FLD_0100',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0101',559,1559,1000,'D1_FLD_0101',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0102',560,1560,1000,'D1_FLD_0102',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0103',561,1561,1000,'D1_FLD_0103',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0104',562,1562,1000,'D1_FLD_0104',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0105',563,1563,1000,'D1_FLD_0105',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0106',564,1564,1000,'D1_FLD_0106',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0107',565,1565,1000,'D1_FLD_0107',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0108',566,1566,1000,'D1_FLD_0108',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0109',567,1567,1000,'D1_FLD_0109',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0110',568,1568,1000,'D1_FLD_0110',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0111',569,1569,1000,'D1_FLD_0111',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0112',570,1570,1000,'D1_FLD_0112',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0113',571,1571,1000,'D1_FLD_0113',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0114',572,1572,1000,'D1_FLD_0114',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0115',573,1573,1000,'D1_FLD_0115',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0116',574,1574,1000,'D1_FLD_0116',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0117',575,1575,1000,'D1_FLD_0117',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0118',576,1576,1000,'D1_FLD_0118',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0119',577,1577,1000,'D1_FLD_0119',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0120',578,1578,1000,'D1_FLD_0120',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0121',579,1579,1000,'D1_FLD_0121',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0122',580,1580,1000,'D1_FLD_0122',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0123',581,1581,1000,'D1_FLD_0123',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0124',582,1582,1000,'D1_FLD_0124',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0125',583,1583,1000,'D1_FLD_0125',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0126',584,1584,1000,'D1_FLD_0126',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0127',585,1585,1000,'D1_FLD_0127',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0128',586,1586,1000,'D1_FLD_0128',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0129',587,1587,1000,'D1_FLD_0129',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0130',588,1588,1000,'D1_FLD_0130',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0131',589,1589,1000,'D1_FLD_0131',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0132',590,1590,1000,'D1_FLD_0132',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0133',591,1591,1000,'D1_FLD_0133',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0134',592,1592,1000,'D1_FLD_0134',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0135',593,1593,1000,'D1_FLD_0135',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0136',594,1594,1000,'D1_FLD_0136',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0137',595,1595,1000,'D1_FLD_0137',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0138',596,1596,1000,'D1_FLD_0138',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0139',597,1597,1000,'D1_FLD_0139',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0140',598,1598,1000,'D1_FLD_0140',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0141',599,1599,1000,'D1_FLD_0141',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0142',600,1600,1000,'D1_FLD_0142',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0143',601,1601,1000,'D1_FLD_0143',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0144',602,1602,1000,'D1_FLD_0144',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0145',603,1603,1000,'D1_FLD_0145',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0146',604,1604,1000,'D1_FLD_0146',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0147',605,1605,1000,'D1_FLD_0147',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0148',606,1606,1000,'D1_FLD_0148',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0149',607,1607,1000,'D1_FLD_0149',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_FLD_0150',608,1608,1000,'D1_FLD_0150',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D1_GRD_D2',104,1104,1000,'D1_GRD_D2',2202,2100,'',0,'','D1_GRD_D2_LENGTH','*',-1,0,'',' ',2,0,'',0,'',NULL), + ('TST_STST00000002_REQ','D1_GRD_D2_LENGTH',103,1103,1000,'D1_GRD_D2_LENGTH',2203,2113,'',10,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D1_INTERFACE_ID',2,1002,1000,'D1_INTERFACE_ID',2203,2113,'',10,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D1_TOTAL_LENGTH',1,1001,1000,'D1_TOTAL_LENGTH',2203,2113,'',8,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0001',105,1105,1104,'D2_FLD_0001',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0002',106,1106,1104,'D2_FLD_0002',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0003',107,1107,1104,'D2_FLD_0003',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0004',108,1108,1104,'D2_FLD_0004',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0005',109,1109,1104,'D2_FLD_0005',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0006',110,1110,1104,'D2_FLD_0006',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0007',111,1111,1104,'D2_FLD_0007',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0008',112,1112,1104,'D2_FLD_0008',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0009',113,1113,1104,'D2_FLD_0009',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0010',114,1114,1104,'D2_FLD_0010',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0011',115,1115,1104,'D2_FLD_0011',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0012',116,1116,1104,'D2_FLD_0012',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0013',117,1117,1104,'D2_FLD_0013',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0014',118,1118,1104,'D2_FLD_0014',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0015',119,1119,1104,'D2_FLD_0015',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0016',120,1120,1104,'D2_FLD_0016',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0017',121,1121,1104,'D2_FLD_0017',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0018',122,1122,1104,'D2_FLD_0018',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0019',123,1123,1104,'D2_FLD_0019',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_STST00000002_REQ','D2_FLD_0020',124,1124,1104,'D2_FLD_0020',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0021',125,1125,1104,'D2_FLD_0021',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0022',126,1126,1104,'D2_FLD_0022',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0023',127,1127,1104,'D2_FLD_0023',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0024',128,1128,1104,'D2_FLD_0024',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0025',129,1129,1104,'D2_FLD_0025',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0026',130,1130,1104,'D2_FLD_0026',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0027',131,1131,1104,'D2_FLD_0027',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0028',132,1132,1104,'D2_FLD_0028',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0029',133,1133,1104,'D2_FLD_0029',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0030',134,1134,1104,'D2_FLD_0030',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0031',135,1135,1104,'D2_FLD_0031',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0032',136,1136,1104,'D2_FLD_0032',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0033',137,1137,1104,'D2_FLD_0033',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0034',138,1138,1104,'D2_FLD_0034',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0035',139,1139,1104,'D2_FLD_0035',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0036',140,1140,1104,'D2_FLD_0036',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0037',141,1141,1104,'D2_FLD_0037',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0038',142,1142,1104,'D2_FLD_0038',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0039',143,1143,1104,'D2_FLD_0039',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0040',144,1144,1104,'D2_FLD_0040',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0041',145,1145,1104,'D2_FLD_0041',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0042',146,1146,1104,'D2_FLD_0042',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0043',147,1147,1104,'D2_FLD_0043',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0044',148,1148,1104,'D2_FLD_0044',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0045',149,1149,1104,'D2_FLD_0045',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0046',150,1150,1104,'D2_FLD_0046',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0047',151,1151,1104,'D2_FLD_0047',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0048',152,1152,1104,'D2_FLD_0048',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0049',153,1153,1104,'D2_FLD_0049',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0050',154,1154,1104,'D2_FLD_0050',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0051',155,1155,1104,'D2_FLD_0051',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0052',156,1156,1104,'D2_FLD_0052',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0053',157,1157,1104,'D2_FLD_0053',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0054',158,1158,1104,'D2_FLD_0054',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0055',159,1159,1104,'D2_FLD_0055',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0056',160,1160,1104,'D2_FLD_0056',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0057',161,1161,1104,'D2_FLD_0057',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0058',162,1162,1104,'D2_FLD_0058',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0059',163,1163,1104,'D2_FLD_0059',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0060',164,1164,1104,'D2_FLD_0060',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0061',165,1165,1104,'D2_FLD_0061',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0062',166,1166,1104,'D2_FLD_0062',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0063',167,1167,1104,'D2_FLD_0063',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0064',168,1168,1104,'D2_FLD_0064',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0065',169,1169,1104,'D2_FLD_0065',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0066',170,1170,1104,'D2_FLD_0066',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0067',171,1171,1104,'D2_FLD_0067',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0068',172,1172,1104,'D2_FLD_0068',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0069',173,1173,1104,'D2_FLD_0069',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0070',174,1174,1104,'D2_FLD_0070',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0071',175,1175,1104,'D2_FLD_0071',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0072',176,1176,1104,'D2_FLD_0072',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0073',177,1177,1104,'D2_FLD_0073',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0074',178,1178,1104,'D2_FLD_0074',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0075',179,1179,1104,'D2_FLD_0075',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0076',180,1180,1104,'D2_FLD_0076',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0077',181,1181,1104,'D2_FLD_0077',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0078',182,1182,1104,'D2_FLD_0078',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0079',183,1183,1104,'D2_FLD_0079',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0080',184,1184,1104,'D2_FLD_0080',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0081',185,1185,1104,'D2_FLD_0081',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0082',186,1186,1104,'D2_FLD_0082',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0083',187,1187,1104,'D2_FLD_0083',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0084',188,1188,1104,'D2_FLD_0084',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0085',189,1189,1104,'D2_FLD_0085',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0086',190,1190,1104,'D2_FLD_0086',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0087',191,1191,1104,'D2_FLD_0087',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0088',192,1192,1104,'D2_FLD_0088',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0089',193,1193,1104,'D2_FLD_0089',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0090',194,1194,1104,'D2_FLD_0090',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0091',195,1195,1104,'D2_FLD_0091',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0092',196,1196,1104,'D2_FLD_0092',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0093',197,1197,1104,'D2_FLD_0093',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0094',198,1198,1104,'D2_FLD_0094',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0095',199,1199,1104,'D2_FLD_0095',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0096',200,1200,1104,'D2_FLD_0096',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0097',201,1201,1104,'D2_FLD_0097',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0098',202,1202,1104,'D2_FLD_0098',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0099',203,1203,1104,'D2_FLD_0099',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0100',204,1204,1104,'D2_FLD_0100',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0101',205,1205,1104,'D2_FLD_0101',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0102',206,1206,1104,'D2_FLD_0102',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0103',207,1207,1104,'D2_FLD_0103',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0104',208,1208,1104,'D2_FLD_0104',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0105',209,1209,1104,'D2_FLD_0105',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0106',210,1210,1104,'D2_FLD_0106',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0107',211,1211,1104,'D2_FLD_0107',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0108',212,1212,1104,'D2_FLD_0108',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0109',213,1213,1104,'D2_FLD_0109',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0110',214,1214,1104,'D2_FLD_0110',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0111',215,1215,1104,'D2_FLD_0111',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0112',216,1216,1104,'D2_FLD_0112',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0113',217,1217,1104,'D2_FLD_0113',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0114',218,1218,1104,'D2_FLD_0114',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0115',219,1219,1104,'D2_FLD_0115',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0116',220,1220,1104,'D2_FLD_0116',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0117',221,1221,1104,'D2_FLD_0117',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0118',222,1222,1104,'D2_FLD_0118',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0119',223,1223,1104,'D2_FLD_0119',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_STST00000002_REQ','D2_FLD_0120',224,1224,1104,'D2_FLD_0120',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0121',225,1225,1104,'D2_FLD_0121',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0122',226,1226,1104,'D2_FLD_0122',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0123',227,1227,1104,'D2_FLD_0123',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0124',228,1228,1104,'D2_FLD_0124',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0125',229,1229,1104,'D2_FLD_0125',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0126',230,1230,1104,'D2_FLD_0126',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0127',231,1231,1104,'D2_FLD_0127',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0128',232,1232,1104,'D2_FLD_0128',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0129',233,1233,1104,'D2_FLD_0129',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0130',234,1234,1104,'D2_FLD_0130',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0131',235,1235,1104,'D2_FLD_0131',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0132',236,1236,1104,'D2_FLD_0132',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0133',237,1237,1104,'D2_FLD_0133',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0134',238,1238,1104,'D2_FLD_0134',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0135',239,1239,1104,'D2_FLD_0135',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0136',240,1240,1104,'D2_FLD_0136',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0137',241,1241,1104,'D2_FLD_0137',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0138',242,1242,1104,'D2_FLD_0138',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0139',243,1243,1104,'D2_FLD_0139',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0140',548,1548,1104,'D2_FLD_0140',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0141',549,1549,1104,'D2_FLD_0141',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0142',550,1550,1104,'D2_FLD_0142',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0143',551,1551,1104,'D2_FLD_0143',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0144',552,1552,1104,'D2_FLD_0144',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0145',553,1553,1104,'D2_FLD_0145',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0146',554,1554,1104,'D2_FLD_0146',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0147',555,1555,1104,'D2_FLD_0147',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0148',556,1556,1104,'D2_FLD_0148',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0149',557,1557,1104,'D2_FLD_0149',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_FLD_0150',558,1558,1104,'D2_FLD_0150',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D2_GRD_D3',245,1245,1104,'D2_GRD_D3',2202,2100,'',0,'','D2_GRD_D3_LENGTH','*',-1,0,'',' ',3,0,'',0,'',NULL), + ('TST_STST00000002_REQ','D2_GRD_D3_LENGTH',244,1244,1104,'D2_GRD_D3_LENGTH',2203,2113,'',10,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0001',246,1246,1245,'D3_FLD_0001',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0002',247,1247,1245,'D3_FLD_0002',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0003',248,1248,1245,'D3_FLD_0003',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0004',249,1249,1245,'D3_FLD_0004',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0005',250,1250,1245,'D3_FLD_0005',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0006',251,1251,1245,'D3_FLD_0006',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0007',252,1252,1245,'D3_FLD_0007',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0008',253,1253,1245,'D3_FLD_0008',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0009',254,1254,1245,'D3_FLD_0009',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0010',255,1255,1245,'D3_FLD_0010',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0011',256,1256,1245,'D3_FLD_0011',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0012',257,1257,1245,'D3_FLD_0012',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0013',258,1258,1245,'D3_FLD_0013',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0014',259,1259,1245,'D3_FLD_0014',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0015',260,1260,1245,'D3_FLD_0015',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0016',261,1261,1245,'D3_FLD_0016',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0017',262,1262,1245,'D3_FLD_0017',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0018',263,1263,1245,'D3_FLD_0018',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0019',264,1264,1245,'D3_FLD_0019',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0020',265,1265,1245,'D3_FLD_0020',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0021',266,1266,1245,'D3_FLD_0021',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0022',267,1267,1245,'D3_FLD_0022',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0023',268,1268,1245,'D3_FLD_0023',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0024',269,1269,1245,'D3_FLD_0024',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0025',270,1270,1245,'D3_FLD_0025',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0026',271,1271,1245,'D3_FLD_0026',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0027',272,1272,1245,'D3_FLD_0027',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0028',273,1273,1245,'D3_FLD_0028',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0029',274,1274,1245,'D3_FLD_0029',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0030',275,1275,1245,'D3_FLD_0030',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0031',276,1276,1245,'D3_FLD_0031',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0032',277,1277,1245,'D3_FLD_0032',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0033',278,1278,1245,'D3_FLD_0033',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0034',279,1279,1245,'D3_FLD_0034',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0035',280,1280,1245,'D3_FLD_0035',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0036',281,1281,1245,'D3_FLD_0036',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0037',282,1282,1245,'D3_FLD_0037',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0038',283,1283,1245,'D3_FLD_0038',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0039',284,1284,1245,'D3_FLD_0039',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0040',285,1285,1245,'D3_FLD_0040',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0041',286,1286,1245,'D3_FLD_0041',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0042',287,1287,1245,'D3_FLD_0042',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0043',288,1288,1245,'D3_FLD_0043',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0044',289,1289,1245,'D3_FLD_0044',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0045',290,1290,1245,'D3_FLD_0045',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0046',291,1291,1245,'D3_FLD_0046',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0047',292,1292,1245,'D3_FLD_0047',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0048',293,1293,1245,'D3_FLD_0048',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0049',294,1294,1245,'D3_FLD_0049',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0050',295,1295,1245,'D3_FLD_0050',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0051',296,1296,1245,'D3_FLD_0051',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0052',297,1297,1245,'D3_FLD_0052',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0053',298,1298,1245,'D3_FLD_0053',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0054',299,1299,1245,'D3_FLD_0054',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0055',300,1300,1245,'D3_FLD_0055',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0056',301,1301,1245,'D3_FLD_0056',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0057',302,1302,1245,'D3_FLD_0057',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0058',303,1303,1245,'D3_FLD_0058',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0059',304,1304,1245,'D3_FLD_0059',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0060',305,1305,1245,'D3_FLD_0060',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0061',306,1306,1245,'D3_FLD_0061',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0062',307,1307,1245,'D3_FLD_0062',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0063',308,1308,1245,'D3_FLD_0063',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0064',309,1309,1245,'D3_FLD_0064',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0065',310,1310,1245,'D3_FLD_0065',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0066',311,1311,1245,'D3_FLD_0066',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0067',312,1312,1245,'D3_FLD_0067',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_STST00000002_REQ','D3_FLD_0068',313,1313,1245,'D3_FLD_0068',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0069',314,1314,1245,'D3_FLD_0069',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0070',315,1315,1245,'D3_FLD_0070',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0071',316,1316,1245,'D3_FLD_0071',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0072',317,1317,1245,'D3_FLD_0072',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0073',318,1318,1245,'D3_FLD_0073',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0074',319,1319,1245,'D3_FLD_0074',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0075',320,1320,1245,'D3_FLD_0075',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0076',321,1321,1245,'D3_FLD_0076',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0077',322,1322,1245,'D3_FLD_0077',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0078',323,1323,1245,'D3_FLD_0078',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0079',324,1324,1245,'D3_FLD_0079',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0080',325,1325,1245,'D3_FLD_0080',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0081',326,1326,1245,'D3_FLD_0081',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0082',327,1327,1245,'D3_FLD_0082',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0083',328,1328,1245,'D3_FLD_0083',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0084',329,1329,1245,'D3_FLD_0084',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0085',330,1330,1245,'D3_FLD_0085',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0086',331,1331,1245,'D3_FLD_0086',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0087',332,1332,1245,'D3_FLD_0087',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0088',333,1333,1245,'D3_FLD_0088',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0089',334,1334,1245,'D3_FLD_0089',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0090',335,1335,1245,'D3_FLD_0090',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0091',336,1336,1245,'D3_FLD_0091',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0092',337,1337,1245,'D3_FLD_0092',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0093',338,1338,1245,'D3_FLD_0093',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0094',339,1339,1245,'D3_FLD_0094',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0095',340,1340,1245,'D3_FLD_0095',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0096',341,1341,1245,'D3_FLD_0096',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0097',342,1342,1245,'D3_FLD_0097',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0098',343,1343,1245,'D3_FLD_0098',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0099',344,1344,1245,'D3_FLD_0099',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0100',497,1497,1245,'D3_FLD_0100',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0101',498,1498,1245,'D3_FLD_0101',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0102',499,1499,1245,'D3_FLD_0102',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0103',500,1500,1245,'D3_FLD_0103',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0104',501,1501,1245,'D3_FLD_0104',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0105',502,1502,1245,'D3_FLD_0105',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0106',503,1503,1245,'D3_FLD_0106',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0107',504,1504,1245,'D3_FLD_0107',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0108',505,1505,1245,'D3_FLD_0108',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0109',506,1506,1245,'D3_FLD_0109',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0110',507,1507,1245,'D3_FLD_0110',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0111',508,1508,1245,'D3_FLD_0111',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0112',509,1509,1245,'D3_FLD_0112',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0113',510,1510,1245,'D3_FLD_0113',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0114',511,1511,1245,'D3_FLD_0114',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0115',512,1512,1245,'D3_FLD_0115',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0116',513,1513,1245,'D3_FLD_0116',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0117',514,1514,1245,'D3_FLD_0117',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0118',515,1515,1245,'D3_FLD_0118',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0119',516,1516,1245,'D3_FLD_0119',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0120',517,1517,1245,'D3_FLD_0120',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0121',518,1518,1245,'D3_FLD_0121',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0122',519,1519,1245,'D3_FLD_0122',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0123',520,1520,1245,'D3_FLD_0123',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0124',521,1521,1245,'D3_FLD_0124',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0125',522,1522,1245,'D3_FLD_0125',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0126',523,1523,1245,'D3_FLD_0126',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0127',524,1524,1245,'D3_FLD_0127',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0128',525,1525,1245,'D3_FLD_0128',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0129',526,1526,1245,'D3_FLD_0129',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0130',527,1527,1245,'D3_FLD_0130',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0131',528,1528,1245,'D3_FLD_0131',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0132',529,1529,1245,'D3_FLD_0132',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0133',530,1530,1245,'D3_FLD_0133',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0134',531,1531,1245,'D3_FLD_0134',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0135',532,1532,1245,'D3_FLD_0135',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0136',533,1533,1245,'D3_FLD_0136',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0137',534,1534,1245,'D3_FLD_0137',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0138',535,1535,1245,'D3_FLD_0138',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0139',536,1536,1245,'D3_FLD_0139',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0140',537,1537,1245,'D3_FLD_0140',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0141',538,1538,1245,'D3_FLD_0141',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0142',539,1539,1245,'D3_FLD_0142',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0143',540,1540,1245,'D3_FLD_0143',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0144',541,1541,1245,'D3_FLD_0144',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0145',542,1542,1245,'D3_FLD_0145',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0146',543,1543,1245,'D3_FLD_0146',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0147',544,1544,1245,'D3_FLD_0147',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0148',545,1545,1245,'D3_FLD_0148',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0149',546,1546,1245,'D3_FLD_0149',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_FLD_0150',547,1547,1245,'D3_FLD_0150',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D3_GRD_D4',346,1346,1245,'D3_GRD_D4',2202,2100,'',0,'','D3_GRD_D4_LENGTH','*',-1,0,'',' ',4,0,'',0,'',NULL), + ('TST_STST00000002_REQ','D3_GRD_D4_LENGTH',345,1345,1245,'D3_GRD_D4_LENGTH',2203,2113,'',10,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0001',347,1347,1346,'D4_FLD_0001',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0002',348,1348,1346,'D4_FLD_0002',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0003',349,1349,1346,'D4_FLD_0003',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0004',350,1350,1346,'D4_FLD_0004',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0005',351,1351,1346,'D4_FLD_0005',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0006',352,1352,1346,'D4_FLD_0006',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0007',353,1353,1346,'D4_FLD_0007',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0008',354,1354,1346,'D4_FLD_0008',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0009',355,1355,1346,'D4_FLD_0009',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0010',356,1356,1346,'D4_FLD_0010',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0011',357,1357,1346,'D4_FLD_0011',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0012',358,1358,1346,'D4_FLD_0012',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0013',359,1359,1346,'D4_FLD_0013',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0014',360,1360,1346,'D4_FLD_0014',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0015',361,1361,1346,'D4_FLD_0015',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_STST00000002_REQ','D4_FLD_0016',362,1362,1346,'D4_FLD_0016',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0017',363,1363,1346,'D4_FLD_0017',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0018',364,1364,1346,'D4_FLD_0018',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0019',365,1365,1346,'D4_FLD_0019',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0020',366,1366,1346,'D4_FLD_0020',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0021',367,1367,1346,'D4_FLD_0021',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0022',368,1368,1346,'D4_FLD_0022',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0023',369,1369,1346,'D4_FLD_0023',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0024',370,1370,1346,'D4_FLD_0024',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0025',371,1371,1346,'D4_FLD_0025',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0026',372,1372,1346,'D4_FLD_0026',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0027',373,1373,1346,'D4_FLD_0027',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0028',374,1374,1346,'D4_FLD_0028',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0029',375,1375,1346,'D4_FLD_0029',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0030',376,1376,1346,'D4_FLD_0030',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0031',377,1377,1346,'D4_FLD_0031',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0032',378,1378,1346,'D4_FLD_0032',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0033',379,1379,1346,'D4_FLD_0033',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0034',380,1380,1346,'D4_FLD_0034',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0035',381,1381,1346,'D4_FLD_0035',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0036',382,1382,1346,'D4_FLD_0036',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0037',383,1383,1346,'D4_FLD_0037',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0038',384,1384,1346,'D4_FLD_0038',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0039',385,1385,1346,'D4_FLD_0039',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0040',386,1386,1346,'D4_FLD_0040',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0041',387,1387,1346,'D4_FLD_0041',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0042',388,1388,1346,'D4_FLD_0042',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0043',389,1389,1346,'D4_FLD_0043',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0044',390,1390,1346,'D4_FLD_0044',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0045',391,1391,1346,'D4_FLD_0045',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0046',392,1392,1346,'D4_FLD_0046',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0047',393,1393,1346,'D4_FLD_0047',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0048',394,1394,1346,'D4_FLD_0048',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0049',395,1395,1346,'D4_FLD_0049',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0050',396,1396,1346,'D4_FLD_0050',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0051',397,1397,1346,'D4_FLD_0051',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0052',398,1398,1346,'D4_FLD_0052',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0053',399,1399,1346,'D4_FLD_0053',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0054',400,1400,1346,'D4_FLD_0054',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0055',401,1401,1346,'D4_FLD_0055',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0056',402,1402,1346,'D4_FLD_0056',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0057',403,1403,1346,'D4_FLD_0057',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0058',404,1404,1346,'D4_FLD_0058',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0059',405,1405,1346,'D4_FLD_0059',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0060',406,1406,1346,'D4_FLD_0060',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0061',407,1407,1346,'D4_FLD_0061',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0062',408,1408,1346,'D4_FLD_0062',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0063',409,1409,1346,'D4_FLD_0063',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0064',410,1410,1346,'D4_FLD_0064',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0065',411,1411,1346,'D4_FLD_0065',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0066',412,1412,1346,'D4_FLD_0066',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0067',413,1413,1346,'D4_FLD_0067',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0068',414,1414,1346,'D4_FLD_0068',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0069',415,1415,1346,'D4_FLD_0069',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0070',416,1416,1346,'D4_FLD_0070',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0071',417,1417,1346,'D4_FLD_0071',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0072',418,1418,1346,'D4_FLD_0072',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0073',419,1419,1346,'D4_FLD_0073',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0074',420,1420,1346,'D4_FLD_0074',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0075',421,1421,1346,'D4_FLD_0075',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0076',422,1422,1346,'D4_FLD_0076',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0077',423,1423,1346,'D4_FLD_0077',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0078',424,1424,1346,'D4_FLD_0078',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0079',425,1425,1346,'D4_FLD_0079',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0080',426,1426,1346,'D4_FLD_0080',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0081',427,1427,1346,'D4_FLD_0081',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0082',428,1428,1346,'D4_FLD_0082',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0083',429,1429,1346,'D4_FLD_0083',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0084',430,1430,1346,'D4_FLD_0084',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0085',431,1431,1346,'D4_FLD_0085',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0086',432,1432,1346,'D4_FLD_0086',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0087',433,1433,1346,'D4_FLD_0087',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0088',434,1434,1346,'D4_FLD_0088',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0089',435,1435,1346,'D4_FLD_0089',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0090',436,1436,1346,'D4_FLD_0090',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0091',437,1437,1346,'D4_FLD_0091',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0092',438,1438,1346,'D4_FLD_0092',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0093',439,1439,1346,'D4_FLD_0093',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0094',440,1440,1346,'D4_FLD_0094',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0095',441,1441,1346,'D4_FLD_0095',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0096',442,1442,1346,'D4_FLD_0096',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0097',443,1443,1346,'D4_FLD_0097',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0098',444,1444,1346,'D4_FLD_0098',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0099',445,1445,1346,'D4_FLD_0099',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0100',446,1446,1346,'D4_FLD_0100',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0101',447,1447,1346,'D4_FLD_0101',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0102',448,1448,1346,'D4_FLD_0102',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0103',449,1449,1346,'D4_FLD_0103',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0104',450,1450,1346,'D4_FLD_0104',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0105',451,1451,1346,'D4_FLD_0105',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0106',452,1452,1346,'D4_FLD_0106',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0107',453,1453,1346,'D4_FLD_0107',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0108',454,1454,1346,'D4_FLD_0108',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0109',455,1455,1346,'D4_FLD_0109',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0110',456,1456,1346,'D4_FLD_0110',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0111',457,1457,1346,'D4_FLD_0111',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0112',458,1458,1346,'D4_FLD_0112',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0113',459,1459,1346,'D4_FLD_0113',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0114',460,1460,1346,'D4_FLD_0114',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0115',461,1461,1346,'D4_FLD_0115',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_STST00000002_REQ','D4_FLD_0116',462,1462,1346,'D4_FLD_0116',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0117',463,1463,1346,'D4_FLD_0117',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0118',464,1464,1346,'D4_FLD_0118',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0119',465,1465,1346,'D4_FLD_0119',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0120',466,1466,1346,'D4_FLD_0120',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0121',467,1467,1346,'D4_FLD_0121',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0122',468,1468,1346,'D4_FLD_0122',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0123',469,1469,1346,'D4_FLD_0123',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0124',470,1470,1346,'D4_FLD_0124',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0125',471,1471,1346,'D4_FLD_0125',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0126',472,1472,1346,'D4_FLD_0126',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0127',473,1473,1346,'D4_FLD_0127',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0128',474,1474,1346,'D4_FLD_0128',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0129',475,1475,1346,'D4_FLD_0129',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0130',476,1476,1346,'D4_FLD_0130',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0131',477,1477,1346,'D4_FLD_0131',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0132',478,1478,1346,'D4_FLD_0132',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0133',479,1479,1346,'D4_FLD_0133',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0134',480,1480,1346,'D4_FLD_0134',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0135',481,1481,1346,'D4_FLD_0135',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0136',482,1482,1346,'D4_FLD_0136',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0137',483,1483,1346,'D4_FLD_0137',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0138',484,1484,1346,'D4_FLD_0138',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0139',485,1485,1346,'D4_FLD_0139',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0140',486,1486,1346,'D4_FLD_0140',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0141',487,1487,1346,'D4_FLD_0141',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0142',488,1488,1346,'D4_FLD_0142',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0143',489,1489,1346,'D4_FLD_0143',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0144',490,1490,1346,'D4_FLD_0144',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0145',491,1491,1346,'D4_FLD_0145',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0146',492,1492,1346,'D4_FLD_0146',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0147',493,1493,1346,'D4_FLD_0147',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0148',494,1494,1346,'D4_FLD_0148',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0149',495,1495,1346,'D4_FLD_0149',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','D4_FLD_0150',496,1496,1346,'D4_FLD_0150',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_REQ','TST_STST00000002_REQ',0,1000,0,'BASIC_TEST_001',2201,2100,'',0,'','','',0,0,'',' ',1,0,'',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0001',3,1003,1000,'D1_FLD_0001',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0002',4,1004,1000,'D1_FLD_0002',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0003',5,1005,1000,'D1_FLD_0003',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0004',6,1006,1000,'D1_FLD_0004',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0005',7,1007,1000,'D1_FLD_0005',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0006',8,1008,1000,'D1_FLD_0006',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0007',9,1009,1000,'D1_FLD_0007',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0008',10,1010,1000,'D1_FLD_0008',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0009',11,1011,1000,'D1_FLD_0009',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0010',12,1012,1000,'D1_FLD_0010',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0011',13,1013,1000,'D1_FLD_0011',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0012',14,1014,1000,'D1_FLD_0012',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0013',15,1015,1000,'D1_FLD_0013',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0014',16,1016,1000,'D1_FLD_0014',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0015',17,1017,1000,'D1_FLD_0015',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0016',18,1018,1000,'D1_FLD_0016',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0017',19,1019,1000,'D1_FLD_0017',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0018',20,1020,1000,'D1_FLD_0018',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0019',21,1021,1000,'D1_FLD_0019',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0020',22,1022,1000,'D1_FLD_0020',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0021',23,1023,1000,'D1_FLD_0021',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0022',24,1024,1000,'D1_FLD_0022',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0023',25,1025,1000,'D1_FLD_0023',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0024',26,1026,1000,'D1_FLD_0024',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0025',27,1027,1000,'D1_FLD_0025',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0026',28,1028,1000,'D1_FLD_0026',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0027',29,1029,1000,'D1_FLD_0027',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0028',30,1030,1000,'D1_FLD_0028',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0029',31,1031,1000,'D1_FLD_0029',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0030',32,1032,1000,'D1_FLD_0030',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0031',33,1033,1000,'D1_FLD_0031',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0032',34,1034,1000,'D1_FLD_0032',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0033',35,1035,1000,'D1_FLD_0033',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0034',36,1036,1000,'D1_FLD_0034',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0035',37,1037,1000,'D1_FLD_0035',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0036',38,1038,1000,'D1_FLD_0036',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0037',39,1039,1000,'D1_FLD_0037',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0038',40,1040,1000,'D1_FLD_0038',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0039',41,1041,1000,'D1_FLD_0039',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0040',42,1042,1000,'D1_FLD_0040',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0041',43,1043,1000,'D1_FLD_0041',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0042',44,1044,1000,'D1_FLD_0042',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0043',45,1045,1000,'D1_FLD_0043',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0044',46,1046,1000,'D1_FLD_0044',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0045',47,1047,1000,'D1_FLD_0045',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0046',48,1048,1000,'D1_FLD_0046',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0047',49,1049,1000,'D1_FLD_0047',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0048',50,1050,1000,'D1_FLD_0048',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0049',51,1051,1000,'D1_FLD_0049',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0050',52,1052,1000,'D1_FLD_0050',2203,2113,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0051',53,1053,1000,'D1_FLD_0051',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0052',54,1054,1000,'D1_FLD_0052',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0053',55,1055,1000,'D1_FLD_0053',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0054',56,1056,1000,'D1_FLD_0054',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0055',57,1057,1000,'D1_FLD_0055',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0056',58,1058,1000,'D1_FLD_0056',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0057',59,1059,1000,'D1_FLD_0057',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0058',60,1060,1000,'D1_FLD_0058',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0059',61,1061,1000,'D1_FLD_0059',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0060',62,1062,1000,'D1_FLD_0060',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0061',63,1063,1000,'D1_FLD_0061',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0062',64,1064,1000,'D1_FLD_0062',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0063',65,1065,1000,'D1_FLD_0063',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0064',66,1066,1000,'D1_FLD_0064',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_STST00000002_RES','D1_FLD_0065',67,1067,1000,'D1_FLD_0065',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0066',68,1068,1000,'D1_FLD_0066',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0067',69,1069,1000,'D1_FLD_0067',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0068',70,1070,1000,'D1_FLD_0068',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0069',71,1071,1000,'D1_FLD_0069',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0070',72,1072,1000,'D1_FLD_0070',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0071',73,1073,1000,'D1_FLD_0071',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0072',74,1074,1000,'D1_FLD_0072',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0073',75,1075,1000,'D1_FLD_0073',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0074',76,1076,1000,'D1_FLD_0074',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0075',77,1077,1000,'D1_FLD_0075',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0076',78,1078,1000,'D1_FLD_0076',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0077',79,1079,1000,'D1_FLD_0077',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0078',80,1080,1000,'D1_FLD_0078',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0079',81,1081,1000,'D1_FLD_0079',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0080',82,1082,1000,'D1_FLD_0080',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0081',83,1083,1000,'D1_FLD_0081',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0082',84,1084,1000,'D1_FLD_0082',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0083',85,1085,1000,'D1_FLD_0083',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0084',86,1086,1000,'D1_FLD_0084',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0085',87,1087,1000,'D1_FLD_0085',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0086',88,1088,1000,'D1_FLD_0086',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0087',89,1089,1000,'D1_FLD_0087',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0088',90,1090,1000,'D1_FLD_0088',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0089',91,1091,1000,'D1_FLD_0089',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0090',92,1092,1000,'D1_FLD_0090',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0091',93,1093,1000,'D1_FLD_0091',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0092',94,1094,1000,'D1_FLD_0092',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0093',95,1095,1000,'D1_FLD_0093',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0094',96,1096,1000,'D1_FLD_0094',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0095',97,1097,1000,'D1_FLD_0095',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0096',98,1098,1000,'D1_FLD_0096',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0097',99,1099,1000,'D1_FLD_0097',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0098',100,1100,1000,'D1_FLD_0098',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0099',101,1101,1000,'D1_FLD_0099',2203,2113,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0100',102,1102,1000,'D1_FLD_0100',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0101',559,1559,1000,'D1_FLD_0101',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0102',560,1560,1000,'D1_FLD_0102',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0103',561,1561,1000,'D1_FLD_0103',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0104',562,1562,1000,'D1_FLD_0104',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0105',563,1563,1000,'D1_FLD_0105',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0106',564,1564,1000,'D1_FLD_0106',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0107',565,1565,1000,'D1_FLD_0107',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0108',566,1566,1000,'D1_FLD_0108',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0109',567,1567,1000,'D1_FLD_0109',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0110',568,1568,1000,'D1_FLD_0110',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0111',569,1569,1000,'D1_FLD_0111',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0112',570,1570,1000,'D1_FLD_0112',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0113',571,1571,1000,'D1_FLD_0113',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0114',572,1572,1000,'D1_FLD_0114',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0115',573,1573,1000,'D1_FLD_0115',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0116',574,1574,1000,'D1_FLD_0116',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0117',575,1575,1000,'D1_FLD_0117',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0118',576,1576,1000,'D1_FLD_0118',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0119',577,1577,1000,'D1_FLD_0119',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0120',578,1578,1000,'D1_FLD_0120',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0121',579,1579,1000,'D1_FLD_0121',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0122',580,1580,1000,'D1_FLD_0122',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0123',581,1581,1000,'D1_FLD_0123',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0124',582,1582,1000,'D1_FLD_0124',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0125',583,1583,1000,'D1_FLD_0125',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0126',584,1584,1000,'D1_FLD_0126',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0127',585,1585,1000,'D1_FLD_0127',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0128',586,1586,1000,'D1_FLD_0128',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0129',587,1587,1000,'D1_FLD_0129',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0130',588,1588,1000,'D1_FLD_0130',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0131',589,1589,1000,'D1_FLD_0131',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0132',590,1590,1000,'D1_FLD_0132',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0133',591,1591,1000,'D1_FLD_0133',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0134',592,1592,1000,'D1_FLD_0134',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0135',593,1593,1000,'D1_FLD_0135',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0136',594,1594,1000,'D1_FLD_0136',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0137',595,1595,1000,'D1_FLD_0137',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0138',596,1596,1000,'D1_FLD_0138',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0139',597,1597,1000,'D1_FLD_0139',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0140',598,1598,1000,'D1_FLD_0140',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0141',599,1599,1000,'D1_FLD_0141',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0142',600,1600,1000,'D1_FLD_0142',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0143',601,1601,1000,'D1_FLD_0143',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0144',602,1602,1000,'D1_FLD_0144',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0145',603,1603,1000,'D1_FLD_0145',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0146',604,1604,1000,'D1_FLD_0146',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0147',605,1605,1000,'D1_FLD_0147',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0148',606,1606,1000,'D1_FLD_0148',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0149',607,1607,1000,'D1_FLD_0149',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_FLD_0150',608,1608,1000,'D1_FLD_0150',2203,2113,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D1_GRD_D2',104,1104,1000,'D1_GRD_D2',2202,2100,'',0,'','D1_GRD_D2_LENGTH','*',-1,0,'',' ',2,0,'',0,'',NULL), + ('TST_STST00000002_RES','D1_GRD_D2_LENGTH',103,1103,1000,'D1_GRD_D2_LENGTH',2203,2113,'',10,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D1_INTERFACE_ID',2,1002,1000,'D1_INTERFACE_ID',2203,2113,'',10,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D1_TOTAL_LENGTH',1,1001,1000,'D1_TOTAL_LENGTH',2203,2113,'',8,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0001',105,1105,1104,'D2_FLD_0001',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0002',106,1106,1104,'D2_FLD_0002',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0003',107,1107,1104,'D2_FLD_0003',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0004',108,1108,1104,'D2_FLD_0004',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0005',109,1109,1104,'D2_FLD_0005',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0006',110,1110,1104,'D2_FLD_0006',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0007',111,1111,1104,'D2_FLD_0007',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0008',112,1112,1104,'D2_FLD_0008',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0009',113,1113,1104,'D2_FLD_0009',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0010',114,1114,1104,'D2_FLD_0010',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_STST00000002_RES','D2_FLD_0011',115,1115,1104,'D2_FLD_0011',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0012',116,1116,1104,'D2_FLD_0012',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0013',117,1117,1104,'D2_FLD_0013',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0014',118,1118,1104,'D2_FLD_0014',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0015',119,1119,1104,'D2_FLD_0015',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0016',120,1120,1104,'D2_FLD_0016',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0017',121,1121,1104,'D2_FLD_0017',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0018',122,1122,1104,'D2_FLD_0018',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0019',123,1123,1104,'D2_FLD_0019',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0020',124,1124,1104,'D2_FLD_0020',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0021',125,1125,1104,'D2_FLD_0021',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0022',126,1126,1104,'D2_FLD_0022',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0023',127,1127,1104,'D2_FLD_0023',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0024',128,1128,1104,'D2_FLD_0024',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0025',129,1129,1104,'D2_FLD_0025',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0026',130,1130,1104,'D2_FLD_0026',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0027',131,1131,1104,'D2_FLD_0027',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0028',132,1132,1104,'D2_FLD_0028',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0029',133,1133,1104,'D2_FLD_0029',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0030',134,1134,1104,'D2_FLD_0030',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0031',135,1135,1104,'D2_FLD_0031',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0032',136,1136,1104,'D2_FLD_0032',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0033',137,1137,1104,'D2_FLD_0033',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0034',138,1138,1104,'D2_FLD_0034',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0035',139,1139,1104,'D2_FLD_0035',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0036',140,1140,1104,'D2_FLD_0036',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0037',141,1141,1104,'D2_FLD_0037',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0038',142,1142,1104,'D2_FLD_0038',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0039',143,1143,1104,'D2_FLD_0039',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0040',144,1144,1104,'D2_FLD_0040',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0041',145,1145,1104,'D2_FLD_0041',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0042',146,1146,1104,'D2_FLD_0042',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0043',147,1147,1104,'D2_FLD_0043',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0044',148,1148,1104,'D2_FLD_0044',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0045',149,1149,1104,'D2_FLD_0045',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0046',150,1150,1104,'D2_FLD_0046',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0047',151,1151,1104,'D2_FLD_0047',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0048',152,1152,1104,'D2_FLD_0048',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0049',153,1153,1104,'D2_FLD_0049',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0050',154,1154,1104,'D2_FLD_0050',2203,2113,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0051',155,1155,1104,'D2_FLD_0051',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0052',156,1156,1104,'D2_FLD_0052',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0053',157,1157,1104,'D2_FLD_0053',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0054',158,1158,1104,'D2_FLD_0054',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0055',159,1159,1104,'D2_FLD_0055',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0056',160,1160,1104,'D2_FLD_0056',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0057',161,1161,1104,'D2_FLD_0057',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0058',162,1162,1104,'D2_FLD_0058',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0059',163,1163,1104,'D2_FLD_0059',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0060',164,1164,1104,'D2_FLD_0060',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0061',165,1165,1104,'D2_FLD_0061',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0062',166,1166,1104,'D2_FLD_0062',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0063',167,1167,1104,'D2_FLD_0063',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0064',168,1168,1104,'D2_FLD_0064',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0065',169,1169,1104,'D2_FLD_0065',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0066',170,1170,1104,'D2_FLD_0066',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0067',171,1171,1104,'D2_FLD_0067',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0068',172,1172,1104,'D2_FLD_0068',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0069',173,1173,1104,'D2_FLD_0069',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0070',174,1174,1104,'D2_FLD_0070',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0071',175,1175,1104,'D2_FLD_0071',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0072',176,1176,1104,'D2_FLD_0072',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0073',177,1177,1104,'D2_FLD_0073',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0074',178,1178,1104,'D2_FLD_0074',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0075',179,1179,1104,'D2_FLD_0075',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0076',180,1180,1104,'D2_FLD_0076',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0077',181,1181,1104,'D2_FLD_0077',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0078',182,1182,1104,'D2_FLD_0078',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0079',183,1183,1104,'D2_FLD_0079',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0080',184,1184,1104,'D2_FLD_0080',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0081',185,1185,1104,'D2_FLD_0081',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0082',186,1186,1104,'D2_FLD_0082',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0083',187,1187,1104,'D2_FLD_0083',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0084',188,1188,1104,'D2_FLD_0084',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0085',189,1189,1104,'D2_FLD_0085',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0086',190,1190,1104,'D2_FLD_0086',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0087',191,1191,1104,'D2_FLD_0087',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0088',192,1192,1104,'D2_FLD_0088',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0089',193,1193,1104,'D2_FLD_0089',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0090',194,1194,1104,'D2_FLD_0090',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0091',195,1195,1104,'D2_FLD_0091',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0092',196,1196,1104,'D2_FLD_0092',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0093',197,1197,1104,'D2_FLD_0093',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0094',198,1198,1104,'D2_FLD_0094',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0095',199,1199,1104,'D2_FLD_0095',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0096',200,1200,1104,'D2_FLD_0096',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0097',201,1201,1104,'D2_FLD_0097',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0098',202,1202,1104,'D2_FLD_0098',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0099',203,1203,1104,'D2_FLD_0099',2203,2113,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0100',204,1204,1104,'D2_FLD_0100',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0101',205,1205,1104,'D2_FLD_0101',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0102',206,1206,1104,'D2_FLD_0102',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0103',207,1207,1104,'D2_FLD_0103',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0104',208,1208,1104,'D2_FLD_0104',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0105',209,1209,1104,'D2_FLD_0105',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0106',210,1210,1104,'D2_FLD_0106',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0107',211,1211,1104,'D2_FLD_0107',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0108',212,1212,1104,'D2_FLD_0108',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0109',213,1213,1104,'D2_FLD_0109',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0110',214,1214,1104,'D2_FLD_0110',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_STST00000002_RES','D2_FLD_0111',215,1215,1104,'D2_FLD_0111',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0112',216,1216,1104,'D2_FLD_0112',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0113',217,1217,1104,'D2_FLD_0113',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0114',218,1218,1104,'D2_FLD_0114',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0115',219,1219,1104,'D2_FLD_0115',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0116',220,1220,1104,'D2_FLD_0116',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0117',221,1221,1104,'D2_FLD_0117',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0118',222,1222,1104,'D2_FLD_0118',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0119',223,1223,1104,'D2_FLD_0119',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0120',224,1224,1104,'D2_FLD_0120',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0121',225,1225,1104,'D2_FLD_0121',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0122',226,1226,1104,'D2_FLD_0122',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0123',227,1227,1104,'D2_FLD_0123',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0124',228,1228,1104,'D2_FLD_0124',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0125',229,1229,1104,'D2_FLD_0125',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0126',230,1230,1104,'D2_FLD_0126',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0127',231,1231,1104,'D2_FLD_0127',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0128',232,1232,1104,'D2_FLD_0128',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0129',233,1233,1104,'D2_FLD_0129',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0130',234,1234,1104,'D2_FLD_0130',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0131',235,1235,1104,'D2_FLD_0131',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0132',236,1236,1104,'D2_FLD_0132',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0133',237,1237,1104,'D2_FLD_0133',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0134',238,1238,1104,'D2_FLD_0134',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0135',239,1239,1104,'D2_FLD_0135',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0136',240,1240,1104,'D2_FLD_0136',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0137',241,1241,1104,'D2_FLD_0137',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0138',242,1242,1104,'D2_FLD_0138',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0139',243,1243,1104,'D2_FLD_0139',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0140',548,1548,1104,'D2_FLD_0140',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0141',549,1549,1104,'D2_FLD_0141',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0142',550,1550,1104,'D2_FLD_0142',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0143',551,1551,1104,'D2_FLD_0143',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0144',552,1552,1104,'D2_FLD_0144',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0145',553,1553,1104,'D2_FLD_0145',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0146',554,1554,1104,'D2_FLD_0146',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0147',555,1555,1104,'D2_FLD_0147',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0148',556,1556,1104,'D2_FLD_0148',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0149',557,1557,1104,'D2_FLD_0149',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_FLD_0150',558,1558,1104,'D2_FLD_0150',2203,2113,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D2_GRD_D3',245,1245,1104,'D2_GRD_D3',2202,2100,'',0,'','D2_GRD_D3_LENGTH','*',-1,0,'',' ',3,0,'',0,'',NULL), + ('TST_STST00000002_RES','D2_GRD_D3_LENGTH',244,1244,1104,'D2_GRD_D3_LENGTH',2203,2113,'',10,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0001',246,1246,1245,'D3_FLD_0001',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0002',247,1247,1245,'D3_FLD_0002',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0003',248,1248,1245,'D3_FLD_0003',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0004',249,1249,1245,'D3_FLD_0004',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0005',250,1250,1245,'D3_FLD_0005',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0006',251,1251,1245,'D3_FLD_0006',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0007',252,1252,1245,'D3_FLD_0007',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0008',253,1253,1245,'D3_FLD_0008',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0009',254,1254,1245,'D3_FLD_0009',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0010',255,1255,1245,'D3_FLD_0010',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0011',256,1256,1245,'D3_FLD_0011',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0012',257,1257,1245,'D3_FLD_0012',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0013',258,1258,1245,'D3_FLD_0013',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0014',259,1259,1245,'D3_FLD_0014',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0015',260,1260,1245,'D3_FLD_0015',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0016',261,1261,1245,'D3_FLD_0016',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0017',262,1262,1245,'D3_FLD_0017',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0018',263,1263,1245,'D3_FLD_0018',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0019',264,1264,1245,'D3_FLD_0019',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0020',265,1265,1245,'D3_FLD_0020',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0021',266,1266,1245,'D3_FLD_0021',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0022',267,1267,1245,'D3_FLD_0022',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0023',268,1268,1245,'D3_FLD_0023',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0024',269,1269,1245,'D3_FLD_0024',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0025',270,1270,1245,'D3_FLD_0025',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0026',271,1271,1245,'D3_FLD_0026',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0027',272,1272,1245,'D3_FLD_0027',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0028',273,1273,1245,'D3_FLD_0028',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0029',274,1274,1245,'D3_FLD_0029',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0030',275,1275,1245,'D3_FLD_0030',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0031',276,1276,1245,'D3_FLD_0031',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0032',277,1277,1245,'D3_FLD_0032',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0033',278,1278,1245,'D3_FLD_0033',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0034',279,1279,1245,'D3_FLD_0034',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0035',280,1280,1245,'D3_FLD_0035',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0036',281,1281,1245,'D3_FLD_0036',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0037',282,1282,1245,'D3_FLD_0037',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0038',283,1283,1245,'D3_FLD_0038',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0039',284,1284,1245,'D3_FLD_0039',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0040',285,1285,1245,'D3_FLD_0040',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0041',286,1286,1245,'D3_FLD_0041',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0042',287,1287,1245,'D3_FLD_0042',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0043',288,1288,1245,'D3_FLD_0043',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0044',289,1289,1245,'D3_FLD_0044',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0045',290,1290,1245,'D3_FLD_0045',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0046',291,1291,1245,'D3_FLD_0046',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0047',292,1292,1245,'D3_FLD_0047',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0048',293,1293,1245,'D3_FLD_0048',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0049',294,1294,1245,'D3_FLD_0049',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0050',295,1295,1245,'D3_FLD_0050',2203,2113,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0051',296,1296,1245,'D3_FLD_0051',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0052',297,1297,1245,'D3_FLD_0052',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0053',298,1298,1245,'D3_FLD_0053',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0054',299,1299,1245,'D3_FLD_0054',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0055',300,1300,1245,'D3_FLD_0055',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0056',301,1301,1245,'D3_FLD_0056',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0057',302,1302,1245,'D3_FLD_0057',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0058',303,1303,1245,'D3_FLD_0058',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_STST00000002_RES','D3_FLD_0059',304,1304,1245,'D3_FLD_0059',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0060',305,1305,1245,'D3_FLD_0060',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0061',306,1306,1245,'D3_FLD_0061',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0062',307,1307,1245,'D3_FLD_0062',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0063',308,1308,1245,'D3_FLD_0063',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0064',309,1309,1245,'D3_FLD_0064',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0065',310,1310,1245,'D3_FLD_0065',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0066',311,1311,1245,'D3_FLD_0066',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0067',312,1312,1245,'D3_FLD_0067',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0068',313,1313,1245,'D3_FLD_0068',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0069',314,1314,1245,'D3_FLD_0069',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0070',315,1315,1245,'D3_FLD_0070',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0071',316,1316,1245,'D3_FLD_0071',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0072',317,1317,1245,'D3_FLD_0072',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0073',318,1318,1245,'D3_FLD_0073',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0074',319,1319,1245,'D3_FLD_0074',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0075',320,1320,1245,'D3_FLD_0075',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0076',321,1321,1245,'D3_FLD_0076',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0077',322,1322,1245,'D3_FLD_0077',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0078',323,1323,1245,'D3_FLD_0078',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0079',324,1324,1245,'D3_FLD_0079',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0080',325,1325,1245,'D3_FLD_0080',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0081',326,1326,1245,'D3_FLD_0081',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0082',327,1327,1245,'D3_FLD_0082',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0083',328,1328,1245,'D3_FLD_0083',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0084',329,1329,1245,'D3_FLD_0084',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0085',330,1330,1245,'D3_FLD_0085',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0086',331,1331,1245,'D3_FLD_0086',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0087',332,1332,1245,'D3_FLD_0087',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0088',333,1333,1245,'D3_FLD_0088',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0089',334,1334,1245,'D3_FLD_0089',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0090',335,1335,1245,'D3_FLD_0090',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0091',336,1336,1245,'D3_FLD_0091',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0092',337,1337,1245,'D3_FLD_0092',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0093',338,1338,1245,'D3_FLD_0093',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0094',339,1339,1245,'D3_FLD_0094',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0095',340,1340,1245,'D3_FLD_0095',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0096',341,1341,1245,'D3_FLD_0096',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0097',342,1342,1245,'D3_FLD_0097',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0098',343,1343,1245,'D3_FLD_0098',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0099',344,1344,1245,'D3_FLD_0099',2203,2113,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0100',497,1497,1245,'D3_FLD_0100',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0101',498,1498,1245,'D3_FLD_0101',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0102',499,1499,1245,'D3_FLD_0102',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0103',500,1500,1245,'D3_FLD_0103',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0104',501,1501,1245,'D3_FLD_0104',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0105',502,1502,1245,'D3_FLD_0105',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0106',503,1503,1245,'D3_FLD_0106',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0107',504,1504,1245,'D3_FLD_0107',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0108',505,1505,1245,'D3_FLD_0108',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0109',506,1506,1245,'D3_FLD_0109',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0110',507,1507,1245,'D3_FLD_0110',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0111',508,1508,1245,'D3_FLD_0111',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0112',509,1509,1245,'D3_FLD_0112',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0113',510,1510,1245,'D3_FLD_0113',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0114',511,1511,1245,'D3_FLD_0114',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0115',512,1512,1245,'D3_FLD_0115',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0116',513,1513,1245,'D3_FLD_0116',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0117',514,1514,1245,'D3_FLD_0117',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0118',515,1515,1245,'D3_FLD_0118',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0119',516,1516,1245,'D3_FLD_0119',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0120',517,1517,1245,'D3_FLD_0120',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0121',518,1518,1245,'D3_FLD_0121',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0122',519,1519,1245,'D3_FLD_0122',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0123',520,1520,1245,'D3_FLD_0123',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0124',521,1521,1245,'D3_FLD_0124',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0125',522,1522,1245,'D3_FLD_0125',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0126',523,1523,1245,'D3_FLD_0126',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0127',524,1524,1245,'D3_FLD_0127',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0128',525,1525,1245,'D3_FLD_0128',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0129',526,1526,1245,'D3_FLD_0129',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0130',527,1527,1245,'D3_FLD_0130',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0131',528,1528,1245,'D3_FLD_0131',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0132',529,1529,1245,'D3_FLD_0132',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0133',530,1530,1245,'D3_FLD_0133',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0134',531,1531,1245,'D3_FLD_0134',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0135',532,1532,1245,'D3_FLD_0135',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0136',533,1533,1245,'D3_FLD_0136',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0137',534,1534,1245,'D3_FLD_0137',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0138',535,1535,1245,'D3_FLD_0138',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0139',536,1536,1245,'D3_FLD_0139',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0140',537,1537,1245,'D3_FLD_0140',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0141',538,1538,1245,'D3_FLD_0141',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0142',539,1539,1245,'D3_FLD_0142',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0143',540,1540,1245,'D3_FLD_0143',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0144',541,1541,1245,'D3_FLD_0144',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0145',542,1542,1245,'D3_FLD_0145',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0146',543,1543,1245,'D3_FLD_0146',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0147',544,1544,1245,'D3_FLD_0147',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0148',545,1545,1245,'D3_FLD_0148',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0149',546,1546,1245,'D3_FLD_0149',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_FLD_0150',547,1547,1245,'D3_FLD_0150',2203,2113,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D3_GRD_D4',346,1346,1245,'D3_GRD_D4',2202,2100,'',0,'','D3_GRD_D4_LENGTH','*',-1,0,'',' ',4,0,'',0,'',NULL), + ('TST_STST00000002_RES','D3_GRD_D4_LENGTH',345,1345,1245,'D3_GRD_D4_LENGTH',2203,2113,'',10,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0001',347,1347,1346,'D4_FLD_0001',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0002',348,1348,1346,'D4_FLD_0002',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0003',349,1349,1346,'D4_FLD_0003',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0004',350,1350,1346,'D4_FLD_0004',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0005',351,1351,1346,'D4_FLD_0005',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0006',352,1352,1346,'D4_FLD_0006',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_STST00000002_RES','D4_FLD_0007',353,1353,1346,'D4_FLD_0007',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0008',354,1354,1346,'D4_FLD_0008',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0009',355,1355,1346,'D4_FLD_0009',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0010',356,1356,1346,'D4_FLD_0010',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0011',357,1357,1346,'D4_FLD_0011',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0012',358,1358,1346,'D4_FLD_0012',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0013',359,1359,1346,'D4_FLD_0013',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0014',360,1360,1346,'D4_FLD_0014',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0015',361,1361,1346,'D4_FLD_0015',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0016',362,1362,1346,'D4_FLD_0016',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0017',363,1363,1346,'D4_FLD_0017',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0018',364,1364,1346,'D4_FLD_0018',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0019',365,1365,1346,'D4_FLD_0019',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0020',366,1366,1346,'D4_FLD_0020',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0021',367,1367,1346,'D4_FLD_0021',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0022',368,1368,1346,'D4_FLD_0022',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0023',369,1369,1346,'D4_FLD_0023',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0024',370,1370,1346,'D4_FLD_0024',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0025',371,1371,1346,'D4_FLD_0025',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0026',372,1372,1346,'D4_FLD_0026',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0027',373,1373,1346,'D4_FLD_0027',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0028',374,1374,1346,'D4_FLD_0028',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0029',375,1375,1346,'D4_FLD_0029',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0030',376,1376,1346,'D4_FLD_0030',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0031',377,1377,1346,'D4_FLD_0031',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0032',378,1378,1346,'D4_FLD_0032',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0033',379,1379,1346,'D4_FLD_0033',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0034',380,1380,1346,'D4_FLD_0034',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0035',381,1381,1346,'D4_FLD_0035',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0036',382,1382,1346,'D4_FLD_0036',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0037',383,1383,1346,'D4_FLD_0037',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0038',384,1384,1346,'D4_FLD_0038',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0039',385,1385,1346,'D4_FLD_0039',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0040',386,1386,1346,'D4_FLD_0040',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0041',387,1387,1346,'D4_FLD_0041',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0042',388,1388,1346,'D4_FLD_0042',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0043',389,1389,1346,'D4_FLD_0043',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0044',390,1390,1346,'D4_FLD_0044',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0045',391,1391,1346,'D4_FLD_0045',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0046',392,1392,1346,'D4_FLD_0046',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0047',393,1393,1346,'D4_FLD_0047',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0048',394,1394,1346,'D4_FLD_0048',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0049',395,1395,1346,'D4_FLD_0049',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0050',396,1396,1346,'D4_FLD_0050',2203,2113,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0051',397,1397,1346,'D4_FLD_0051',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0052',398,1398,1346,'D4_FLD_0052',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0053',399,1399,1346,'D4_FLD_0053',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0054',400,1400,1346,'D4_FLD_0054',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0055',401,1401,1346,'D4_FLD_0055',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0056',402,1402,1346,'D4_FLD_0056',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0057',403,1403,1346,'D4_FLD_0057',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0058',404,1404,1346,'D4_FLD_0058',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0059',405,1405,1346,'D4_FLD_0059',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0060',406,1406,1346,'D4_FLD_0060',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0061',407,1407,1346,'D4_FLD_0061',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0062',408,1408,1346,'D4_FLD_0062',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0063',409,1409,1346,'D4_FLD_0063',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0064',410,1410,1346,'D4_FLD_0064',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0065',411,1411,1346,'D4_FLD_0065',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0066',412,1412,1346,'D4_FLD_0066',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0067',413,1413,1346,'D4_FLD_0067',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0068',414,1414,1346,'D4_FLD_0068',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0069',415,1415,1346,'D4_FLD_0069',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0070',416,1416,1346,'D4_FLD_0070',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0071',417,1417,1346,'D4_FLD_0071',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0072',418,1418,1346,'D4_FLD_0072',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0073',419,1419,1346,'D4_FLD_0073',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0074',420,1420,1346,'D4_FLD_0074',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0075',421,1421,1346,'D4_FLD_0075',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0076',422,1422,1346,'D4_FLD_0076',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0077',423,1423,1346,'D4_FLD_0077',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0078',424,1424,1346,'D4_FLD_0078',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0079',425,1425,1346,'D4_FLD_0079',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0080',426,1426,1346,'D4_FLD_0080',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0081',427,1427,1346,'D4_FLD_0081',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0082',428,1428,1346,'D4_FLD_0082',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0083',429,1429,1346,'D4_FLD_0083',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0084',430,1430,1346,'D4_FLD_0084',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0085',431,1431,1346,'D4_FLD_0085',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0086',432,1432,1346,'D4_FLD_0086',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0087',433,1433,1346,'D4_FLD_0087',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0088',434,1434,1346,'D4_FLD_0088',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0089',435,1435,1346,'D4_FLD_0089',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0090',436,1436,1346,'D4_FLD_0090',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0091',437,1437,1346,'D4_FLD_0091',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0092',438,1438,1346,'D4_FLD_0092',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0093',439,1439,1346,'D4_FLD_0093',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0094',440,1440,1346,'D4_FLD_0094',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0095',441,1441,1346,'D4_FLD_0095',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0096',442,1442,1346,'D4_FLD_0096',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0097',443,1443,1346,'D4_FLD_0097',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0098',444,1444,1346,'D4_FLD_0098',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0099',445,1445,1346,'D4_FLD_0099',2203,2113,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0100',446,1446,1346,'D4_FLD_0100',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0101',447,1447,1346,'D4_FLD_0101',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0102',448,1448,1346,'D4_FLD_0102',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0103',449,1449,1346,'D4_FLD_0103',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0104',450,1450,1346,'D4_FLD_0104',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0105',451,1451,1346,'D4_FLD_0105',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0106',452,1452,1346,'D4_FLD_0106',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_STST00000002_RES','D4_FLD_0107',453,1453,1346,'D4_FLD_0107',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0108',454,1454,1346,'D4_FLD_0108',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0109',455,1455,1346,'D4_FLD_0109',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0110',456,1456,1346,'D4_FLD_0110',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0111',457,1457,1346,'D4_FLD_0111',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0112',458,1458,1346,'D4_FLD_0112',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0113',459,1459,1346,'D4_FLD_0113',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0114',460,1460,1346,'D4_FLD_0114',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0115',461,1461,1346,'D4_FLD_0115',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0116',462,1462,1346,'D4_FLD_0116',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0117',463,1463,1346,'D4_FLD_0117',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0118',464,1464,1346,'D4_FLD_0118',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0119',465,1465,1346,'D4_FLD_0119',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0120',466,1466,1346,'D4_FLD_0120',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0121',467,1467,1346,'D4_FLD_0121',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0122',468,1468,1346,'D4_FLD_0122',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0123',469,1469,1346,'D4_FLD_0123',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0124',470,1470,1346,'D4_FLD_0124',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0125',471,1471,1346,'D4_FLD_0125',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0126',472,1472,1346,'D4_FLD_0126',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0127',473,1473,1346,'D4_FLD_0127',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0128',474,1474,1346,'D4_FLD_0128',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0129',475,1475,1346,'D4_FLD_0129',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0130',476,1476,1346,'D4_FLD_0130',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0131',477,1477,1346,'D4_FLD_0131',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0132',478,1478,1346,'D4_FLD_0132',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0133',479,1479,1346,'D4_FLD_0133',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0134',480,1480,1346,'D4_FLD_0134',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0135',481,1481,1346,'D4_FLD_0135',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0136',482,1482,1346,'D4_FLD_0136',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0137',483,1483,1346,'D4_FLD_0137',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0138',484,1484,1346,'D4_FLD_0138',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0139',485,1485,1346,'D4_FLD_0139',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0140',486,1486,1346,'D4_FLD_0140',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0141',487,1487,1346,'D4_FLD_0141',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0142',488,1488,1346,'D4_FLD_0142',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0143',489,1489,1346,'D4_FLD_0143',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0144',490,1490,1346,'D4_FLD_0144',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0145',491,1491,1346,'D4_FLD_0145',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0146',492,1492,1346,'D4_FLD_0146',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0147',493,1493,1346,'D4_FLD_0147',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0148',494,1494,1346,'D4_FLD_0148',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0149',495,1495,1346,'D4_FLD_0149',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','D4_FLD_0150',496,1496,1346,'D4_FLD_0150',2203,2113,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_STST00000002_RES','TST_STST00000002_RES',0,1000,0,'BASIC_TEST_001',2201,2100,'',0,'','','',0,0,'',' ',1,0,'',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0001',3,1003,1000,'D1_FLD_0001',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0002',4,1004,1000,'D1_FLD_0002',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0003',5,1005,1000,'D1_FLD_0003',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0004',6,1006,1000,'D1_FLD_0004',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0005',7,1007,1000,'D1_FLD_0005',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0006',8,1008,1000,'D1_FLD_0006',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0007',9,1009,1000,'D1_FLD_0007',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0008',10,1010,1000,'D1_FLD_0008',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0009',11,1011,1000,'D1_FLD_0009',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0010',12,1012,1000,'D1_FLD_0010',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0011',13,1013,1000,'D1_FLD_0011',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0012',14,1014,1000,'D1_FLD_0012',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0013',15,1015,1000,'D1_FLD_0013',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0014',16,1016,1000,'D1_FLD_0014',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0015',17,1017,1000,'D1_FLD_0015',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0016',18,1018,1000,'D1_FLD_0016',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0017',19,1019,1000,'D1_FLD_0017',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0018',20,1020,1000,'D1_FLD_0018',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0019',21,1021,1000,'D1_FLD_0019',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0020',22,1022,1000,'D1_FLD_0020',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0021',23,1023,1000,'D1_FLD_0021',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0022',24,1024,1000,'D1_FLD_0022',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0023',25,1025,1000,'D1_FLD_0023',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0024',26,1026,1000,'D1_FLD_0024',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0025',27,1027,1000,'D1_FLD_0025',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0026',28,1028,1000,'D1_FLD_0026',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0027',29,1029,1000,'D1_FLD_0027',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0028',30,1030,1000,'D1_FLD_0028',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0029',31,1031,1000,'D1_FLD_0029',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0030',32,1032,1000,'D1_FLD_0030',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0031',33,1033,1000,'D1_FLD_0031',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0032',34,1034,1000,'D1_FLD_0032',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0033',35,1035,1000,'D1_FLD_0033',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0034',36,1036,1000,'D1_FLD_0034',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0035',37,1037,1000,'D1_FLD_0035',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0036',38,1038,1000,'D1_FLD_0036',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0037',39,1039,1000,'D1_FLD_0037',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0038',40,1040,1000,'D1_FLD_0038',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0039',41,1041,1000,'D1_FLD_0039',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0040',42,1042,1000,'D1_FLD_0040',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0041',43,1043,1000,'D1_FLD_0041',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0042',44,1044,1000,'D1_FLD_0042',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0043',45,1045,1000,'D1_FLD_0043',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0044',46,1046,1000,'D1_FLD_0044',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0045',47,1047,1000,'D1_FLD_0045',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0046',48,1048,1000,'D1_FLD_0046',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0047',49,1049,1000,'D1_FLD_0047',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0048',50,1050,1000,'D1_FLD_0048',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0049',51,1051,1000,'D1_FLD_0049',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0050',52,1052,1000,'D1_FLD_0050',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0051',53,1053,1000,'D1_FLD_0051',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0052',54,1054,1000,'D1_FLD_0052',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0053',55,1055,1000,'D1_FLD_0053',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0054',56,1056,1000,'D1_FLD_0054',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0055',57,1057,1000,'D1_FLD_0055',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_TTST00000002_REQ','D1_FLD_0056',58,1058,1000,'D1_FLD_0056',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0057',59,1059,1000,'D1_FLD_0057',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0058',60,1060,1000,'D1_FLD_0058',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0059',61,1061,1000,'D1_FLD_0059',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0060',62,1062,1000,'D1_FLD_0060',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0061',63,1063,1000,'D1_FLD_0061',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0062',64,1064,1000,'D1_FLD_0062',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0063',65,1065,1000,'D1_FLD_0063',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0064',66,1066,1000,'D1_FLD_0064',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0065',67,1067,1000,'D1_FLD_0065',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0066',68,1068,1000,'D1_FLD_0066',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0067',69,1069,1000,'D1_FLD_0067',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0068',70,1070,1000,'D1_FLD_0068',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0069',71,1071,1000,'D1_FLD_0069',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0070',72,1072,1000,'D1_FLD_0070',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0071',73,1073,1000,'D1_FLD_0071',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0072',74,1074,1000,'D1_FLD_0072',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0073',75,1075,1000,'D1_FLD_0073',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0074',76,1076,1000,'D1_FLD_0074',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0075',77,1077,1000,'D1_FLD_0075',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0076',78,1078,1000,'D1_FLD_0076',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0077',79,1079,1000,'D1_FLD_0077',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0078',80,1080,1000,'D1_FLD_0078',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0079',81,1081,1000,'D1_FLD_0079',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0080',82,1082,1000,'D1_FLD_0080',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0081',83,1083,1000,'D1_FLD_0081',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0082',84,1084,1000,'D1_FLD_0082',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0083',85,1085,1000,'D1_FLD_0083',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0084',86,1086,1000,'D1_FLD_0084',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0085',87,1087,1000,'D1_FLD_0085',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0086',88,1088,1000,'D1_FLD_0086',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0087',89,1089,1000,'D1_FLD_0087',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0088',90,1090,1000,'D1_FLD_0088',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0089',91,1091,1000,'D1_FLD_0089',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0090',92,1092,1000,'D1_FLD_0090',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0091',93,1093,1000,'D1_FLD_0091',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0092',94,1094,1000,'D1_FLD_0092',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0093',95,1095,1000,'D1_FLD_0093',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0094',96,1096,1000,'D1_FLD_0094',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0095',97,1097,1000,'D1_FLD_0095',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0096',98,1098,1000,'D1_FLD_0096',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0097',99,1099,1000,'D1_FLD_0097',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0098',100,1100,1000,'D1_FLD_0098',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0099',101,1101,1000,'D1_FLD_0099',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0100',102,1102,1000,'D1_FLD_0100',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0101',559,1559,1000,'D1_FLD_0101',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0102',560,1560,1000,'D1_FLD_0102',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0103',561,1561,1000,'D1_FLD_0103',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0104',562,1562,1000,'D1_FLD_0104',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0105',563,1563,1000,'D1_FLD_0105',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0106',564,1564,1000,'D1_FLD_0106',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0107',565,1565,1000,'D1_FLD_0107',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0108',566,1566,1000,'D1_FLD_0108',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0109',567,1567,1000,'D1_FLD_0109',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0110',568,1568,1000,'D1_FLD_0110',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0111',569,1569,1000,'D1_FLD_0111',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0112',570,1570,1000,'D1_FLD_0112',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0113',571,1571,1000,'D1_FLD_0113',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0114',572,1572,1000,'D1_FLD_0114',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0115',573,1573,1000,'D1_FLD_0115',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0116',574,1574,1000,'D1_FLD_0116',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0117',575,1575,1000,'D1_FLD_0117',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0118',576,1576,1000,'D1_FLD_0118',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0119',577,1577,1000,'D1_FLD_0119',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0120',578,1578,1000,'D1_FLD_0120',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0121',579,1579,1000,'D1_FLD_0121',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0122',580,1580,1000,'D1_FLD_0122',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0123',581,1581,1000,'D1_FLD_0123',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0124',582,1582,1000,'D1_FLD_0124',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0125',583,1583,1000,'D1_FLD_0125',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0126',584,1584,1000,'D1_FLD_0126',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0127',585,1585,1000,'D1_FLD_0127',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0128',586,1586,1000,'D1_FLD_0128',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0129',587,1587,1000,'D1_FLD_0129',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0130',588,1588,1000,'D1_FLD_0130',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0131',589,1589,1000,'D1_FLD_0131',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0132',590,1590,1000,'D1_FLD_0132',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0133',591,1591,1000,'D1_FLD_0133',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0134',592,1592,1000,'D1_FLD_0134',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0135',593,1593,1000,'D1_FLD_0135',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0136',594,1594,1000,'D1_FLD_0136',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0137',595,1595,1000,'D1_FLD_0137',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0138',596,1596,1000,'D1_FLD_0138',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0139',597,1597,1000,'D1_FLD_0139',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0140',598,1598,1000,'D1_FLD_0140',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0141',599,1599,1000,'D1_FLD_0141',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0142',600,1600,1000,'D1_FLD_0142',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0143',601,1601,1000,'D1_FLD_0143',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0144',602,1602,1000,'D1_FLD_0144',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0145',603,1603,1000,'D1_FLD_0145',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0146',604,1604,1000,'D1_FLD_0146',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0147',605,1605,1000,'D1_FLD_0147',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0148',606,1606,1000,'D1_FLD_0148',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0149',607,1607,1000,'D1_FLD_0149',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_FLD_0150',608,1608,1000,'D1_FLD_0150',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D1_GRD_D2',104,1104,1000,'D1_GRD_D2',2202,2100,'',0,'','D1_GRD_D2_LENGTH','*',-1,0,'',' ',2,0,'',0,'',NULL), + ('TST_TTST00000002_REQ','D1_GRD_D2_LENGTH',103,1103,1000,'D1_GRD_D2_LENGTH',2203,2102,'',10,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D1_INTERFACE_ID',2,1002,1000,'D1_INTERFACE_ID',2203,2101,'',10,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D1_TOTAL_LENGTH',1,1001,1000,'D1_TOTAL_LENGTH',2203,2102,'',8,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0001',105,1105,1104,'D2_FLD_0001',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_TTST00000002_REQ','D2_FLD_0002',106,1106,1104,'D2_FLD_0002',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0003',107,1107,1104,'D2_FLD_0003',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0004',108,1108,1104,'D2_FLD_0004',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0005',109,1109,1104,'D2_FLD_0005',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0006',110,1110,1104,'D2_FLD_0006',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0007',111,1111,1104,'D2_FLD_0007',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0008',112,1112,1104,'D2_FLD_0008',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0009',113,1113,1104,'D2_FLD_0009',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0010',114,1114,1104,'D2_FLD_0010',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0011',115,1115,1104,'D2_FLD_0011',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0012',116,1116,1104,'D2_FLD_0012',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0013',117,1117,1104,'D2_FLD_0013',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0014',118,1118,1104,'D2_FLD_0014',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0015',119,1119,1104,'D2_FLD_0015',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0016',120,1120,1104,'D2_FLD_0016',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0017',121,1121,1104,'D2_FLD_0017',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0018',122,1122,1104,'D2_FLD_0018',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0019',123,1123,1104,'D2_FLD_0019',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0020',124,1124,1104,'D2_FLD_0020',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0021',125,1125,1104,'D2_FLD_0021',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0022',126,1126,1104,'D2_FLD_0022',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0023',127,1127,1104,'D2_FLD_0023',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0024',128,1128,1104,'D2_FLD_0024',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0025',129,1129,1104,'D2_FLD_0025',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0026',130,1130,1104,'D2_FLD_0026',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0027',131,1131,1104,'D2_FLD_0027',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0028',132,1132,1104,'D2_FLD_0028',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0029',133,1133,1104,'D2_FLD_0029',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0030',134,1134,1104,'D2_FLD_0030',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0031',135,1135,1104,'D2_FLD_0031',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0032',136,1136,1104,'D2_FLD_0032',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0033',137,1137,1104,'D2_FLD_0033',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0034',138,1138,1104,'D2_FLD_0034',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0035',139,1139,1104,'D2_FLD_0035',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0036',140,1140,1104,'D2_FLD_0036',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0037',141,1141,1104,'D2_FLD_0037',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0038',142,1142,1104,'D2_FLD_0038',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0039',143,1143,1104,'D2_FLD_0039',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0040',144,1144,1104,'D2_FLD_0040',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0041',145,1145,1104,'D2_FLD_0041',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0042',146,1146,1104,'D2_FLD_0042',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0043',147,1147,1104,'D2_FLD_0043',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0044',148,1148,1104,'D2_FLD_0044',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0045',149,1149,1104,'D2_FLD_0045',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0046',150,1150,1104,'D2_FLD_0046',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0047',151,1151,1104,'D2_FLD_0047',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0048',152,1152,1104,'D2_FLD_0048',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0049',153,1153,1104,'D2_FLD_0049',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0050',154,1154,1104,'D2_FLD_0050',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0051',155,1155,1104,'D2_FLD_0051',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0052',156,1156,1104,'D2_FLD_0052',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0053',157,1157,1104,'D2_FLD_0053',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0054',158,1158,1104,'D2_FLD_0054',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0055',159,1159,1104,'D2_FLD_0055',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0056',160,1160,1104,'D2_FLD_0056',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0057',161,1161,1104,'D2_FLD_0057',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0058',162,1162,1104,'D2_FLD_0058',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0059',163,1163,1104,'D2_FLD_0059',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0060',164,1164,1104,'D2_FLD_0060',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0061',165,1165,1104,'D2_FLD_0061',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0062',166,1166,1104,'D2_FLD_0062',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0063',167,1167,1104,'D2_FLD_0063',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0064',168,1168,1104,'D2_FLD_0064',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0065',169,1169,1104,'D2_FLD_0065',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0066',170,1170,1104,'D2_FLD_0066',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0067',171,1171,1104,'D2_FLD_0067',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0068',172,1172,1104,'D2_FLD_0068',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0069',173,1173,1104,'D2_FLD_0069',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0070',174,1174,1104,'D2_FLD_0070',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0071',175,1175,1104,'D2_FLD_0071',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0072',176,1176,1104,'D2_FLD_0072',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0073',177,1177,1104,'D2_FLD_0073',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0074',178,1178,1104,'D2_FLD_0074',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0075',179,1179,1104,'D2_FLD_0075',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0076',180,1180,1104,'D2_FLD_0076',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0077',181,1181,1104,'D2_FLD_0077',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0078',182,1182,1104,'D2_FLD_0078',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0079',183,1183,1104,'D2_FLD_0079',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0080',184,1184,1104,'D2_FLD_0080',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0081',185,1185,1104,'D2_FLD_0081',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0082',186,1186,1104,'D2_FLD_0082',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0083',187,1187,1104,'D2_FLD_0083',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0084',188,1188,1104,'D2_FLD_0084',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0085',189,1189,1104,'D2_FLD_0085',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0086',190,1190,1104,'D2_FLD_0086',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0087',191,1191,1104,'D2_FLD_0087',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0088',192,1192,1104,'D2_FLD_0088',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0089',193,1193,1104,'D2_FLD_0089',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0090',194,1194,1104,'D2_FLD_0090',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0091',195,1195,1104,'D2_FLD_0091',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0092',196,1196,1104,'D2_FLD_0092',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0093',197,1197,1104,'D2_FLD_0093',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0094',198,1198,1104,'D2_FLD_0094',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0095',199,1199,1104,'D2_FLD_0095',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0096',200,1200,1104,'D2_FLD_0096',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0097',201,1201,1104,'D2_FLD_0097',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0098',202,1202,1104,'D2_FLD_0098',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0099',203,1203,1104,'D2_FLD_0099',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0100',204,1204,1104,'D2_FLD_0100',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0101',205,1205,1104,'D2_FLD_0101',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_TTST00000002_REQ','D2_FLD_0102',206,1206,1104,'D2_FLD_0102',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0103',207,1207,1104,'D2_FLD_0103',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0104',208,1208,1104,'D2_FLD_0104',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0105',209,1209,1104,'D2_FLD_0105',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0106',210,1210,1104,'D2_FLD_0106',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0107',211,1211,1104,'D2_FLD_0107',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0108',212,1212,1104,'D2_FLD_0108',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0109',213,1213,1104,'D2_FLD_0109',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0110',214,1214,1104,'D2_FLD_0110',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0111',215,1215,1104,'D2_FLD_0111',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0112',216,1216,1104,'D2_FLD_0112',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0113',217,1217,1104,'D2_FLD_0113',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0114',218,1218,1104,'D2_FLD_0114',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0115',219,1219,1104,'D2_FLD_0115',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0116',220,1220,1104,'D2_FLD_0116',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0117',221,1221,1104,'D2_FLD_0117',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0118',222,1222,1104,'D2_FLD_0118',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0119',223,1223,1104,'D2_FLD_0119',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0120',224,1224,1104,'D2_FLD_0120',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0121',225,1225,1104,'D2_FLD_0121',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0122',226,1226,1104,'D2_FLD_0122',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0123',227,1227,1104,'D2_FLD_0123',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0124',228,1228,1104,'D2_FLD_0124',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0125',229,1229,1104,'D2_FLD_0125',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0126',230,1230,1104,'D2_FLD_0126',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0127',231,1231,1104,'D2_FLD_0127',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0128',232,1232,1104,'D2_FLD_0128',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0129',233,1233,1104,'D2_FLD_0129',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0130',234,1234,1104,'D2_FLD_0130',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0131',235,1235,1104,'D2_FLD_0131',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0132',236,1236,1104,'D2_FLD_0132',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0133',237,1237,1104,'D2_FLD_0133',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0134',238,1238,1104,'D2_FLD_0134',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0135',239,1239,1104,'D2_FLD_0135',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0136',240,1240,1104,'D2_FLD_0136',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0137',241,1241,1104,'D2_FLD_0137',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0138',242,1242,1104,'D2_FLD_0138',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0139',243,1243,1104,'D2_FLD_0139',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0140',548,1548,1104,'D2_FLD_0140',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0141',549,1549,1104,'D2_FLD_0141',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0142',550,1550,1104,'D2_FLD_0142',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0143',551,1551,1104,'D2_FLD_0143',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0144',552,1552,1104,'D2_FLD_0144',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0145',553,1553,1104,'D2_FLD_0145',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0146',554,1554,1104,'D2_FLD_0146',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0147',555,1555,1104,'D2_FLD_0147',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0148',556,1556,1104,'D2_FLD_0148',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0149',557,1557,1104,'D2_FLD_0149',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_FLD_0150',558,1558,1104,'D2_FLD_0150',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D2_GRD_D3',245,1245,1104,'D2_GRD_D3',2202,2100,'',0,'','D2_GRD_D3_LENGTH','*',-1,0,'',' ',3,0,'',0,'',NULL), + ('TST_TTST00000002_REQ','D2_GRD_D3_LENGTH',244,1244,1104,'D2_GRD_D3_LENGTH',2203,2102,'',10,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0001',246,1246,1245,'D3_FLD_0001',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0002',247,1247,1245,'D3_FLD_0002',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0003',248,1248,1245,'D3_FLD_0003',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0004',249,1249,1245,'D3_FLD_0004',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0005',250,1250,1245,'D3_FLD_0005',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0006',251,1251,1245,'D3_FLD_0006',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0007',252,1252,1245,'D3_FLD_0007',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0008',253,1253,1245,'D3_FLD_0008',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0009',254,1254,1245,'D3_FLD_0009',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0010',255,1255,1245,'D3_FLD_0010',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0011',256,1256,1245,'D3_FLD_0011',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0012',257,1257,1245,'D3_FLD_0012',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0013',258,1258,1245,'D3_FLD_0013',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0014',259,1259,1245,'D3_FLD_0014',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0015',260,1260,1245,'D3_FLD_0015',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0016',261,1261,1245,'D3_FLD_0016',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0017',262,1262,1245,'D3_FLD_0017',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0018',263,1263,1245,'D3_FLD_0018',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0019',264,1264,1245,'D3_FLD_0019',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0020',265,1265,1245,'D3_FLD_0020',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0021',266,1266,1245,'D3_FLD_0021',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0022',267,1267,1245,'D3_FLD_0022',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0023',268,1268,1245,'D3_FLD_0023',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0024',269,1269,1245,'D3_FLD_0024',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0025',270,1270,1245,'D3_FLD_0025',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0026',271,1271,1245,'D3_FLD_0026',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0027',272,1272,1245,'D3_FLD_0027',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0028',273,1273,1245,'D3_FLD_0028',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0029',274,1274,1245,'D3_FLD_0029',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0030',275,1275,1245,'D3_FLD_0030',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0031',276,1276,1245,'D3_FLD_0031',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0032',277,1277,1245,'D3_FLD_0032',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0033',278,1278,1245,'D3_FLD_0033',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0034',279,1279,1245,'D3_FLD_0034',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0035',280,1280,1245,'D3_FLD_0035',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0036',281,1281,1245,'D3_FLD_0036',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0037',282,1282,1245,'D3_FLD_0037',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0038',283,1283,1245,'D3_FLD_0038',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0039',284,1284,1245,'D3_FLD_0039',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0040',285,1285,1245,'D3_FLD_0040',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0041',286,1286,1245,'D3_FLD_0041',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0042',287,1287,1245,'D3_FLD_0042',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0043',288,1288,1245,'D3_FLD_0043',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0044',289,1289,1245,'D3_FLD_0044',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0045',290,1290,1245,'D3_FLD_0045',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0046',291,1291,1245,'D3_FLD_0046',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0047',292,1292,1245,'D3_FLD_0047',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0048',293,1293,1245,'D3_FLD_0048',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0049',294,1294,1245,'D3_FLD_0049',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_TTST00000002_REQ','D3_FLD_0050',295,1295,1245,'D3_FLD_0050',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0051',296,1296,1245,'D3_FLD_0051',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0052',297,1297,1245,'D3_FLD_0052',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0053',298,1298,1245,'D3_FLD_0053',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0054',299,1299,1245,'D3_FLD_0054',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0055',300,1300,1245,'D3_FLD_0055',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0056',301,1301,1245,'D3_FLD_0056',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0057',302,1302,1245,'D3_FLD_0057',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0058',303,1303,1245,'D3_FLD_0058',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0059',304,1304,1245,'D3_FLD_0059',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0060',305,1305,1245,'D3_FLD_0060',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0061',306,1306,1245,'D3_FLD_0061',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0062',307,1307,1245,'D3_FLD_0062',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0063',308,1308,1245,'D3_FLD_0063',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0064',309,1309,1245,'D3_FLD_0064',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0065',310,1310,1245,'D3_FLD_0065',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0066',311,1311,1245,'D3_FLD_0066',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0067',312,1312,1245,'D3_FLD_0067',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0068',313,1313,1245,'D3_FLD_0068',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0069',314,1314,1245,'D3_FLD_0069',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0070',315,1315,1245,'D3_FLD_0070',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0071',316,1316,1245,'D3_FLD_0071',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0072',317,1317,1245,'D3_FLD_0072',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0073',318,1318,1245,'D3_FLD_0073',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0074',319,1319,1245,'D3_FLD_0074',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0075',320,1320,1245,'D3_FLD_0075',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0076',321,1321,1245,'D3_FLD_0076',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0077',322,1322,1245,'D3_FLD_0077',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0078',323,1323,1245,'D3_FLD_0078',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0079',324,1324,1245,'D3_FLD_0079',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0080',325,1325,1245,'D3_FLD_0080',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0081',326,1326,1245,'D3_FLD_0081',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0082',327,1327,1245,'D3_FLD_0082',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0083',328,1328,1245,'D3_FLD_0083',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0084',329,1329,1245,'D3_FLD_0084',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0085',330,1330,1245,'D3_FLD_0085',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0086',331,1331,1245,'D3_FLD_0086',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0087',332,1332,1245,'D3_FLD_0087',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0088',333,1333,1245,'D3_FLD_0088',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0089',334,1334,1245,'D3_FLD_0089',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0090',335,1335,1245,'D3_FLD_0090',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0091',336,1336,1245,'D3_FLD_0091',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0092',337,1337,1245,'D3_FLD_0092',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0093',338,1338,1245,'D3_FLD_0093',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0094',339,1339,1245,'D3_FLD_0094',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0095',340,1340,1245,'D3_FLD_0095',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0096',341,1341,1245,'D3_FLD_0096',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0097',342,1342,1245,'D3_FLD_0097',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0098',343,1343,1245,'D3_FLD_0098',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0099',344,1344,1245,'D3_FLD_0099',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0100',497,1497,1245,'D3_FLD_0100',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0101',498,1498,1245,'D3_FLD_0101',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0102',499,1499,1245,'D3_FLD_0102',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0103',500,1500,1245,'D3_FLD_0103',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0104',501,1501,1245,'D3_FLD_0104',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0105',502,1502,1245,'D3_FLD_0105',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0106',503,1503,1245,'D3_FLD_0106',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0107',504,1504,1245,'D3_FLD_0107',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0108',505,1505,1245,'D3_FLD_0108',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0109',506,1506,1245,'D3_FLD_0109',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0110',507,1507,1245,'D3_FLD_0110',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0111',508,1508,1245,'D3_FLD_0111',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0112',509,1509,1245,'D3_FLD_0112',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0113',510,1510,1245,'D3_FLD_0113',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0114',511,1511,1245,'D3_FLD_0114',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0115',512,1512,1245,'D3_FLD_0115',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0116',513,1513,1245,'D3_FLD_0116',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0117',514,1514,1245,'D3_FLD_0117',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0118',515,1515,1245,'D3_FLD_0118',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0119',516,1516,1245,'D3_FLD_0119',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0120',517,1517,1245,'D3_FLD_0120',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0121',518,1518,1245,'D3_FLD_0121',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0122',519,1519,1245,'D3_FLD_0122',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0123',520,1520,1245,'D3_FLD_0123',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0124',521,1521,1245,'D3_FLD_0124',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0125',522,1522,1245,'D3_FLD_0125',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0126',523,1523,1245,'D3_FLD_0126',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0127',524,1524,1245,'D3_FLD_0127',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0128',525,1525,1245,'D3_FLD_0128',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0129',526,1526,1245,'D3_FLD_0129',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0130',527,1527,1245,'D3_FLD_0130',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0131',528,1528,1245,'D3_FLD_0131',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0132',529,1529,1245,'D3_FLD_0132',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0133',530,1530,1245,'D3_FLD_0133',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0134',531,1531,1245,'D3_FLD_0134',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0135',532,1532,1245,'D3_FLD_0135',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0136',533,1533,1245,'D3_FLD_0136',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0137',534,1534,1245,'D3_FLD_0137',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0138',535,1535,1245,'D3_FLD_0138',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0139',536,1536,1245,'D3_FLD_0139',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0140',537,1537,1245,'D3_FLD_0140',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0141',538,1538,1245,'D3_FLD_0141',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0142',539,1539,1245,'D3_FLD_0142',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0143',540,1540,1245,'D3_FLD_0143',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0144',541,1541,1245,'D3_FLD_0144',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0145',542,1542,1245,'D3_FLD_0145',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0146',543,1543,1245,'D3_FLD_0146',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0147',544,1544,1245,'D3_FLD_0147',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0148',545,1545,1245,'D3_FLD_0148',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_FLD_0149',546,1546,1245,'D3_FLD_0149',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_TTST00000002_REQ','D3_FLD_0150',547,1547,1245,'D3_FLD_0150',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D3_GRD_D4',346,1346,1245,'D3_GRD_D4',2202,2100,'',0,'','D3_GRD_D4_LENGTH','*',-1,0,'',' ',4,0,'',0,'',NULL), + ('TST_TTST00000002_REQ','D3_GRD_D4_LENGTH',345,1345,1245,'D3_GRD_D4_LENGTH',2203,2102,'',10,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0001',347,1347,1346,'D4_FLD_0001',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0002',348,1348,1346,'D4_FLD_0002',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0003',349,1349,1346,'D4_FLD_0003',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0004',350,1350,1346,'D4_FLD_0004',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0005',351,1351,1346,'D4_FLD_0005',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0006',352,1352,1346,'D4_FLD_0006',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0007',353,1353,1346,'D4_FLD_0007',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0008',354,1354,1346,'D4_FLD_0008',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0009',355,1355,1346,'D4_FLD_0009',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0010',356,1356,1346,'D4_FLD_0010',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0011',357,1357,1346,'D4_FLD_0011',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0012',358,1358,1346,'D4_FLD_0012',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0013',359,1359,1346,'D4_FLD_0013',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0014',360,1360,1346,'D4_FLD_0014',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0015',361,1361,1346,'D4_FLD_0015',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0016',362,1362,1346,'D4_FLD_0016',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0017',363,1363,1346,'D4_FLD_0017',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0018',364,1364,1346,'D4_FLD_0018',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0019',365,1365,1346,'D4_FLD_0019',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0020',366,1366,1346,'D4_FLD_0020',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0021',367,1367,1346,'D4_FLD_0021',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0022',368,1368,1346,'D4_FLD_0022',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0023',369,1369,1346,'D4_FLD_0023',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0024',370,1370,1346,'D4_FLD_0024',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0025',371,1371,1346,'D4_FLD_0025',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0026',372,1372,1346,'D4_FLD_0026',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0027',373,1373,1346,'D4_FLD_0027',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0028',374,1374,1346,'D4_FLD_0028',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0029',375,1375,1346,'D4_FLD_0029',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0030',376,1376,1346,'D4_FLD_0030',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0031',377,1377,1346,'D4_FLD_0031',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0032',378,1378,1346,'D4_FLD_0032',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0033',379,1379,1346,'D4_FLD_0033',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0034',380,1380,1346,'D4_FLD_0034',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0035',381,1381,1346,'D4_FLD_0035',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0036',382,1382,1346,'D4_FLD_0036',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0037',383,1383,1346,'D4_FLD_0037',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0038',384,1384,1346,'D4_FLD_0038',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0039',385,1385,1346,'D4_FLD_0039',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0040',386,1386,1346,'D4_FLD_0040',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0041',387,1387,1346,'D4_FLD_0041',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0042',388,1388,1346,'D4_FLD_0042',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0043',389,1389,1346,'D4_FLD_0043',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0044',390,1390,1346,'D4_FLD_0044',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0045',391,1391,1346,'D4_FLD_0045',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0046',392,1392,1346,'D4_FLD_0046',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0047',393,1393,1346,'D4_FLD_0047',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0048',394,1394,1346,'D4_FLD_0048',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0049',395,1395,1346,'D4_FLD_0049',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0050',396,1396,1346,'D4_FLD_0050',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0051',397,1397,1346,'D4_FLD_0051',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0052',398,1398,1346,'D4_FLD_0052',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0053',399,1399,1346,'D4_FLD_0053',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0054',400,1400,1346,'D4_FLD_0054',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0055',401,1401,1346,'D4_FLD_0055',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0056',402,1402,1346,'D4_FLD_0056',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0057',403,1403,1346,'D4_FLD_0057',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0058',404,1404,1346,'D4_FLD_0058',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0059',405,1405,1346,'D4_FLD_0059',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0060',406,1406,1346,'D4_FLD_0060',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0061',407,1407,1346,'D4_FLD_0061',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0062',408,1408,1346,'D4_FLD_0062',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0063',409,1409,1346,'D4_FLD_0063',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0064',410,1410,1346,'D4_FLD_0064',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0065',411,1411,1346,'D4_FLD_0065',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0066',412,1412,1346,'D4_FLD_0066',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0067',413,1413,1346,'D4_FLD_0067',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0068',414,1414,1346,'D4_FLD_0068',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0069',415,1415,1346,'D4_FLD_0069',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0070',416,1416,1346,'D4_FLD_0070',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0071',417,1417,1346,'D4_FLD_0071',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0072',418,1418,1346,'D4_FLD_0072',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0073',419,1419,1346,'D4_FLD_0073',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0074',420,1420,1346,'D4_FLD_0074',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0075',421,1421,1346,'D4_FLD_0075',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0076',422,1422,1346,'D4_FLD_0076',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0077',423,1423,1346,'D4_FLD_0077',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0078',424,1424,1346,'D4_FLD_0078',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0079',425,1425,1346,'D4_FLD_0079',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0080',426,1426,1346,'D4_FLD_0080',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0081',427,1427,1346,'D4_FLD_0081',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0082',428,1428,1346,'D4_FLD_0082',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0083',429,1429,1346,'D4_FLD_0083',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0084',430,1430,1346,'D4_FLD_0084',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0085',431,1431,1346,'D4_FLD_0085',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0086',432,1432,1346,'D4_FLD_0086',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0087',433,1433,1346,'D4_FLD_0087',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0088',434,1434,1346,'D4_FLD_0088',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0089',435,1435,1346,'D4_FLD_0089',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0090',436,1436,1346,'D4_FLD_0090',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0091',437,1437,1346,'D4_FLD_0091',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0092',438,1438,1346,'D4_FLD_0092',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0093',439,1439,1346,'D4_FLD_0093',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0094',440,1440,1346,'D4_FLD_0094',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0095',441,1441,1346,'D4_FLD_0095',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0096',442,1442,1346,'D4_FLD_0096',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0097',443,1443,1346,'D4_FLD_0097',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_TTST00000002_REQ','D4_FLD_0098',444,1444,1346,'D4_FLD_0098',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0099',445,1445,1346,'D4_FLD_0099',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0100',446,1446,1346,'D4_FLD_0100',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0101',447,1447,1346,'D4_FLD_0101',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0102',448,1448,1346,'D4_FLD_0102',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0103',449,1449,1346,'D4_FLD_0103',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0104',450,1450,1346,'D4_FLD_0104',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0105',451,1451,1346,'D4_FLD_0105',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0106',452,1452,1346,'D4_FLD_0106',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0107',453,1453,1346,'D4_FLD_0107',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0108',454,1454,1346,'D4_FLD_0108',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0109',455,1455,1346,'D4_FLD_0109',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0110',456,1456,1346,'D4_FLD_0110',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0111',457,1457,1346,'D4_FLD_0111',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0112',458,1458,1346,'D4_FLD_0112',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0113',459,1459,1346,'D4_FLD_0113',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0114',460,1460,1346,'D4_FLD_0114',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0115',461,1461,1346,'D4_FLD_0115',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0116',462,1462,1346,'D4_FLD_0116',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0117',463,1463,1346,'D4_FLD_0117',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0118',464,1464,1346,'D4_FLD_0118',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0119',465,1465,1346,'D4_FLD_0119',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0120',466,1466,1346,'D4_FLD_0120',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0121',467,1467,1346,'D4_FLD_0121',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0122',468,1468,1346,'D4_FLD_0122',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0123',469,1469,1346,'D4_FLD_0123',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0124',470,1470,1346,'D4_FLD_0124',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0125',471,1471,1346,'D4_FLD_0125',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0126',472,1472,1346,'D4_FLD_0126',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0127',473,1473,1346,'D4_FLD_0127',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0128',474,1474,1346,'D4_FLD_0128',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0129',475,1475,1346,'D4_FLD_0129',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0130',476,1476,1346,'D4_FLD_0130',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0131',477,1477,1346,'D4_FLD_0131',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0132',478,1478,1346,'D4_FLD_0132',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0133',479,1479,1346,'D4_FLD_0133',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0134',480,1480,1346,'D4_FLD_0134',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0135',481,1481,1346,'D4_FLD_0135',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0136',482,1482,1346,'D4_FLD_0136',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0137',483,1483,1346,'D4_FLD_0137',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0138',484,1484,1346,'D4_FLD_0138',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0139',485,1485,1346,'D4_FLD_0139',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0140',486,1486,1346,'D4_FLD_0140',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0141',487,1487,1346,'D4_FLD_0141',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0142',488,1488,1346,'D4_FLD_0142',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0143',489,1489,1346,'D4_FLD_0143',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0144',490,1490,1346,'D4_FLD_0144',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0145',491,1491,1346,'D4_FLD_0145',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0146',492,1492,1346,'D4_FLD_0146',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0147',493,1493,1346,'D4_FLD_0147',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0148',494,1494,1346,'D4_FLD_0148',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0149',495,1495,1346,'D4_FLD_0149',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','D4_FLD_0150',496,1496,1346,'D4_FLD_0150',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_REQ','TST_TTST00000002_REQ',0,1000,0,'BASIC_TEST_001',2201,2100,'',0,'','','',0,0,'',' ',1,0,'',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0001',3,1003,1000,'D1_FLD_0001',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0002',4,1004,1000,'D1_FLD_0002',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0003',5,1005,1000,'D1_FLD_0003',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0004',6,1006,1000,'D1_FLD_0004',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0005',7,1007,1000,'D1_FLD_0005',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0006',8,1008,1000,'D1_FLD_0006',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0007',9,1009,1000,'D1_FLD_0007',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0008',10,1010,1000,'D1_FLD_0008',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0009',11,1011,1000,'D1_FLD_0009',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0010',12,1012,1000,'D1_FLD_0010',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0011',13,1013,1000,'D1_FLD_0011',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0012',14,1014,1000,'D1_FLD_0012',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0013',15,1015,1000,'D1_FLD_0013',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0014',16,1016,1000,'D1_FLD_0014',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0015',17,1017,1000,'D1_FLD_0015',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0016',18,1018,1000,'D1_FLD_0016',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0017',19,1019,1000,'D1_FLD_0017',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0018',20,1020,1000,'D1_FLD_0018',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0019',21,1021,1000,'D1_FLD_0019',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0020',22,1022,1000,'D1_FLD_0020',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0021',23,1023,1000,'D1_FLD_0021',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0022',24,1024,1000,'D1_FLD_0022',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0023',25,1025,1000,'D1_FLD_0023',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0024',26,1026,1000,'D1_FLD_0024',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0025',27,1027,1000,'D1_FLD_0025',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0026',28,1028,1000,'D1_FLD_0026',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0027',29,1029,1000,'D1_FLD_0027',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0028',30,1030,1000,'D1_FLD_0028',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0029',31,1031,1000,'D1_FLD_0029',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0030',32,1032,1000,'D1_FLD_0030',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0031',33,1033,1000,'D1_FLD_0031',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0032',34,1034,1000,'D1_FLD_0032',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0033',35,1035,1000,'D1_FLD_0033',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0034',36,1036,1000,'D1_FLD_0034',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0035',37,1037,1000,'D1_FLD_0035',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0036',38,1038,1000,'D1_FLD_0036',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0037',39,1039,1000,'D1_FLD_0037',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0038',40,1040,1000,'D1_FLD_0038',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0039',41,1041,1000,'D1_FLD_0039',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0040',42,1042,1000,'D1_FLD_0040',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0041',43,1043,1000,'D1_FLD_0041',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0042',44,1044,1000,'D1_FLD_0042',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0043',45,1045,1000,'D1_FLD_0043',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0044',46,1046,1000,'D1_FLD_0044',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0045',47,1047,1000,'D1_FLD_0045',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0046',48,1048,1000,'D1_FLD_0046',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_TTST00000002_RES','D1_FLD_0047',49,1049,1000,'D1_FLD_0047',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0048',50,1050,1000,'D1_FLD_0048',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0049',51,1051,1000,'D1_FLD_0049',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0050',52,1052,1000,'D1_FLD_0050',2203,2102,'',20,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0051',53,1053,1000,'D1_FLD_0051',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0052',54,1054,1000,'D1_FLD_0052',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0053',55,1055,1000,'D1_FLD_0053',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0054',56,1056,1000,'D1_FLD_0054',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0055',57,1057,1000,'D1_FLD_0055',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0056',58,1058,1000,'D1_FLD_0056',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0057',59,1059,1000,'D1_FLD_0057',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0058',60,1060,1000,'D1_FLD_0058',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0059',61,1061,1000,'D1_FLD_0059',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0060',62,1062,1000,'D1_FLD_0060',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0061',63,1063,1000,'D1_FLD_0061',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0062',64,1064,1000,'D1_FLD_0062',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0063',65,1065,1000,'D1_FLD_0063',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0064',66,1066,1000,'D1_FLD_0064',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0065',67,1067,1000,'D1_FLD_0065',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0066',68,1068,1000,'D1_FLD_0066',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0067',69,1069,1000,'D1_FLD_0067',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0068',70,1070,1000,'D1_FLD_0068',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0069',71,1071,1000,'D1_FLD_0069',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0070',72,1072,1000,'D1_FLD_0070',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0071',73,1073,1000,'D1_FLD_0071',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0072',74,1074,1000,'D1_FLD_0072',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0073',75,1075,1000,'D1_FLD_0073',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0074',76,1076,1000,'D1_FLD_0074',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0075',77,1077,1000,'D1_FLD_0075',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0076',78,1078,1000,'D1_FLD_0076',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0077',79,1079,1000,'D1_FLD_0077',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0078',80,1080,1000,'D1_FLD_0078',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0079',81,1081,1000,'D1_FLD_0079',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0080',82,1082,1000,'D1_FLD_0080',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0081',83,1083,1000,'D1_FLD_0081',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0082',84,1084,1000,'D1_FLD_0082',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0083',85,1085,1000,'D1_FLD_0083',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0084',86,1086,1000,'D1_FLD_0084',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0085',87,1087,1000,'D1_FLD_0085',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0086',88,1088,1000,'D1_FLD_0086',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0087',89,1089,1000,'D1_FLD_0087',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0088',90,1090,1000,'D1_FLD_0088',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0089',91,1091,1000,'D1_FLD_0089',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0090',92,1092,1000,'D1_FLD_0090',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0091',93,1093,1000,'D1_FLD_0091',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0092',94,1094,1000,'D1_FLD_0092',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0093',95,1095,1000,'D1_FLD_0093',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0094',96,1096,1000,'D1_FLD_0094',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0095',97,1097,1000,'D1_FLD_0095',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0096',98,1098,1000,'D1_FLD_0096',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0097',99,1099,1000,'D1_FLD_0097',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0098',100,1100,1000,'D1_FLD_0098',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0099',101,1101,1000,'D1_FLD_0099',2203,2101,'',20,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0100',102,1102,1000,'D1_FLD_0100',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0101',559,1559,1000,'D1_FLD_0101',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0102',560,1560,1000,'D1_FLD_0102',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0103',561,1561,1000,'D1_FLD_0103',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0104',562,1562,1000,'D1_FLD_0104',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0105',563,1563,1000,'D1_FLD_0105',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0106',564,1564,1000,'D1_FLD_0106',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0107',565,1565,1000,'D1_FLD_0107',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0108',566,1566,1000,'D1_FLD_0108',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0109',567,1567,1000,'D1_FLD_0109',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0110',568,1568,1000,'D1_FLD_0110',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0111',569,1569,1000,'D1_FLD_0111',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0112',570,1570,1000,'D1_FLD_0112',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0113',571,1571,1000,'D1_FLD_0113',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0114',572,1572,1000,'D1_FLD_0114',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0115',573,1573,1000,'D1_FLD_0115',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0116',574,1574,1000,'D1_FLD_0116',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0117',575,1575,1000,'D1_FLD_0117',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0118',576,1576,1000,'D1_FLD_0118',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0119',577,1577,1000,'D1_FLD_0119',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0120',578,1578,1000,'D1_FLD_0120',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0121',579,1579,1000,'D1_FLD_0121',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0122',580,1580,1000,'D1_FLD_0122',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0123',581,1581,1000,'D1_FLD_0123',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0124',582,1582,1000,'D1_FLD_0124',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0125',583,1583,1000,'D1_FLD_0125',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0126',584,1584,1000,'D1_FLD_0126',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0127',585,1585,1000,'D1_FLD_0127',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0128',586,1586,1000,'D1_FLD_0128',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0129',587,1587,1000,'D1_FLD_0129',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0130',588,1588,1000,'D1_FLD_0130',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0131',589,1589,1000,'D1_FLD_0131',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0132',590,1590,1000,'D1_FLD_0132',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0133',591,1591,1000,'D1_FLD_0133',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0134',592,1592,1000,'D1_FLD_0134',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0135',593,1593,1000,'D1_FLD_0135',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0136',594,1594,1000,'D1_FLD_0136',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0137',595,1595,1000,'D1_FLD_0137',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0138',596,1596,1000,'D1_FLD_0138',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0139',597,1597,1000,'D1_FLD_0139',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0140',598,1598,1000,'D1_FLD_0140',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0141',599,1599,1000,'D1_FLD_0141',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0142',600,1600,1000,'D1_FLD_0142',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0143',601,1601,1000,'D1_FLD_0143',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0144',602,1602,1000,'D1_FLD_0144',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0145',603,1603,1000,'D1_FLD_0145',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0146',604,1604,1000,'D1_FLD_0146',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_TTST00000002_RES','D1_FLD_0147',605,1605,1000,'D1_FLD_0147',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0148',606,1606,1000,'D1_FLD_0148',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0149',607,1607,1000,'D1_FLD_0149',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_FLD_0150',608,1608,1000,'D1_FLD_0150',2203,2118,'',15,'','','',1,1,'',' ',2,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D1_GRD_D2',104,1104,1000,'D1_GRD_D2',2202,2100,'',0,'','D1_GRD_D2_LENGTH','*',-1,0,'',' ',2,0,'',0,'',NULL), + ('TST_TTST00000002_RES','D1_GRD_D2_LENGTH',103,1103,1000,'D1_GRD_D2_LENGTH',2203,2102,'',10,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D1_INTERFACE_ID',2,1002,1000,'D1_INTERFACE_ID',2203,2101,'',10,'','','',1,1,'',' ',2,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D1_TOTAL_LENGTH',1,1001,1000,'D1_TOTAL_LENGTH',2203,2102,'',8,'','','',1,1,'',' ',2,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0001',105,1105,1104,'D2_FLD_0001',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0002',106,1106,1104,'D2_FLD_0002',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0003',107,1107,1104,'D2_FLD_0003',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0004',108,1108,1104,'D2_FLD_0004',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0005',109,1109,1104,'D2_FLD_0005',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0006',110,1110,1104,'D2_FLD_0006',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0007',111,1111,1104,'D2_FLD_0007',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0008',112,1112,1104,'D2_FLD_0008',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0009',113,1113,1104,'D2_FLD_0009',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0010',114,1114,1104,'D2_FLD_0010',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0011',115,1115,1104,'D2_FLD_0011',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0012',116,1116,1104,'D2_FLD_0012',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0013',117,1117,1104,'D2_FLD_0013',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0014',118,1118,1104,'D2_FLD_0014',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0015',119,1119,1104,'D2_FLD_0015',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0016',120,1120,1104,'D2_FLD_0016',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0017',121,1121,1104,'D2_FLD_0017',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0018',122,1122,1104,'D2_FLD_0018',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0019',123,1123,1104,'D2_FLD_0019',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0020',124,1124,1104,'D2_FLD_0020',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0021',125,1125,1104,'D2_FLD_0021',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0022',126,1126,1104,'D2_FLD_0022',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0023',127,1127,1104,'D2_FLD_0023',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0024',128,1128,1104,'D2_FLD_0024',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0025',129,1129,1104,'D2_FLD_0025',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0026',130,1130,1104,'D2_FLD_0026',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0027',131,1131,1104,'D2_FLD_0027',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0028',132,1132,1104,'D2_FLD_0028',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0029',133,1133,1104,'D2_FLD_0029',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0030',134,1134,1104,'D2_FLD_0030',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0031',135,1135,1104,'D2_FLD_0031',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0032',136,1136,1104,'D2_FLD_0032',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0033',137,1137,1104,'D2_FLD_0033',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0034',138,1138,1104,'D2_FLD_0034',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0035',139,1139,1104,'D2_FLD_0035',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0036',140,1140,1104,'D2_FLD_0036',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0037',141,1141,1104,'D2_FLD_0037',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0038',142,1142,1104,'D2_FLD_0038',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0039',143,1143,1104,'D2_FLD_0039',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0040',144,1144,1104,'D2_FLD_0040',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0041',145,1145,1104,'D2_FLD_0041',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0042',146,1146,1104,'D2_FLD_0042',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0043',147,1147,1104,'D2_FLD_0043',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0044',148,1148,1104,'D2_FLD_0044',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0045',149,1149,1104,'D2_FLD_0045',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0046',150,1150,1104,'D2_FLD_0046',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0047',151,1151,1104,'D2_FLD_0047',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0048',152,1152,1104,'D2_FLD_0048',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0049',153,1153,1104,'D2_FLD_0049',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0050',154,1154,1104,'D2_FLD_0050',2203,2102,'',20,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0051',155,1155,1104,'D2_FLD_0051',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0052',156,1156,1104,'D2_FLD_0052',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0053',157,1157,1104,'D2_FLD_0053',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0054',158,1158,1104,'D2_FLD_0054',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0055',159,1159,1104,'D2_FLD_0055',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0056',160,1160,1104,'D2_FLD_0056',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0057',161,1161,1104,'D2_FLD_0057',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0058',162,1162,1104,'D2_FLD_0058',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0059',163,1163,1104,'D2_FLD_0059',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0060',164,1164,1104,'D2_FLD_0060',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0061',165,1165,1104,'D2_FLD_0061',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0062',166,1166,1104,'D2_FLD_0062',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0063',167,1167,1104,'D2_FLD_0063',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0064',168,1168,1104,'D2_FLD_0064',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0065',169,1169,1104,'D2_FLD_0065',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0066',170,1170,1104,'D2_FLD_0066',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0067',171,1171,1104,'D2_FLD_0067',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0068',172,1172,1104,'D2_FLD_0068',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0069',173,1173,1104,'D2_FLD_0069',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0070',174,1174,1104,'D2_FLD_0070',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0071',175,1175,1104,'D2_FLD_0071',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0072',176,1176,1104,'D2_FLD_0072',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0073',177,1177,1104,'D2_FLD_0073',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0074',178,1178,1104,'D2_FLD_0074',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0075',179,1179,1104,'D2_FLD_0075',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0076',180,1180,1104,'D2_FLD_0076',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0077',181,1181,1104,'D2_FLD_0077',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0078',182,1182,1104,'D2_FLD_0078',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0079',183,1183,1104,'D2_FLD_0079',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0080',184,1184,1104,'D2_FLD_0080',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0081',185,1185,1104,'D2_FLD_0081',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0082',186,1186,1104,'D2_FLD_0082',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0083',187,1187,1104,'D2_FLD_0083',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0084',188,1188,1104,'D2_FLD_0084',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0085',189,1189,1104,'D2_FLD_0085',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0086',190,1190,1104,'D2_FLD_0086',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0087',191,1191,1104,'D2_FLD_0087',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0088',192,1192,1104,'D2_FLD_0088',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0089',193,1193,1104,'D2_FLD_0089',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0090',194,1194,1104,'D2_FLD_0090',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0091',195,1195,1104,'D2_FLD_0091',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0092',196,1196,1104,'D2_FLD_0092',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_TTST00000002_RES','D2_FLD_0093',197,1197,1104,'D2_FLD_0093',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0094',198,1198,1104,'D2_FLD_0094',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0095',199,1199,1104,'D2_FLD_0095',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0096',200,1200,1104,'D2_FLD_0096',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0097',201,1201,1104,'D2_FLD_0097',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0098',202,1202,1104,'D2_FLD_0098',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0099',203,1203,1104,'D2_FLD_0099',2203,2101,'',20,'','','',1,1,'',' ',3,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0100',204,1204,1104,'D2_FLD_0100',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0101',205,1205,1104,'D2_FLD_0101',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0102',206,1206,1104,'D2_FLD_0102',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0103',207,1207,1104,'D2_FLD_0103',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0104',208,1208,1104,'D2_FLD_0104',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0105',209,1209,1104,'D2_FLD_0105',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0106',210,1210,1104,'D2_FLD_0106',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0107',211,1211,1104,'D2_FLD_0107',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0108',212,1212,1104,'D2_FLD_0108',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0109',213,1213,1104,'D2_FLD_0109',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0110',214,1214,1104,'D2_FLD_0110',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0111',215,1215,1104,'D2_FLD_0111',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0112',216,1216,1104,'D2_FLD_0112',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0113',217,1217,1104,'D2_FLD_0113',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0114',218,1218,1104,'D2_FLD_0114',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0115',219,1219,1104,'D2_FLD_0115',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0116',220,1220,1104,'D2_FLD_0116',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0117',221,1221,1104,'D2_FLD_0117',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0118',222,1222,1104,'D2_FLD_0118',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0119',223,1223,1104,'D2_FLD_0119',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0120',224,1224,1104,'D2_FLD_0120',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0121',225,1225,1104,'D2_FLD_0121',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0122',226,1226,1104,'D2_FLD_0122',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0123',227,1227,1104,'D2_FLD_0123',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0124',228,1228,1104,'D2_FLD_0124',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0125',229,1229,1104,'D2_FLD_0125',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0126',230,1230,1104,'D2_FLD_0126',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0127',231,1231,1104,'D2_FLD_0127',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0128',232,1232,1104,'D2_FLD_0128',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0129',233,1233,1104,'D2_FLD_0129',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0130',234,1234,1104,'D2_FLD_0130',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0131',235,1235,1104,'D2_FLD_0131',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0132',236,1236,1104,'D2_FLD_0132',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0133',237,1237,1104,'D2_FLD_0133',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0134',238,1238,1104,'D2_FLD_0134',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0135',239,1239,1104,'D2_FLD_0135',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0136',240,1240,1104,'D2_FLD_0136',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0137',241,1241,1104,'D2_FLD_0137',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0138',242,1242,1104,'D2_FLD_0138',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0139',243,1243,1104,'D2_FLD_0139',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0140',548,1548,1104,'D2_FLD_0140',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0141',549,1549,1104,'D2_FLD_0141',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0142',550,1550,1104,'D2_FLD_0142',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0143',551,1551,1104,'D2_FLD_0143',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0144',552,1552,1104,'D2_FLD_0144',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0145',553,1553,1104,'D2_FLD_0145',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0146',554,1554,1104,'D2_FLD_0146',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0147',555,1555,1104,'D2_FLD_0147',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0148',556,1556,1104,'D2_FLD_0148',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0149',557,1557,1104,'D2_FLD_0149',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_FLD_0150',558,1558,1104,'D2_FLD_0150',2203,2118,'',15,'','','',1,1,'',' ',3,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D2_GRD_D3',245,1245,1104,'D2_GRD_D3',2202,2100,'',0,'','D2_GRD_D3_LENGTH','*',-1,0,'',' ',3,0,'',0,'',NULL), + ('TST_TTST00000002_RES','D2_GRD_D3_LENGTH',244,1244,1104,'D2_GRD_D3_LENGTH',2203,2102,'',10,'','','',1,1,'',' ',3,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0001',246,1246,1245,'D3_FLD_0001',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0002',247,1247,1245,'D3_FLD_0002',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0003',248,1248,1245,'D3_FLD_0003',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0004',249,1249,1245,'D3_FLD_0004',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0005',250,1250,1245,'D3_FLD_0005',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0006',251,1251,1245,'D3_FLD_0006',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0007',252,1252,1245,'D3_FLD_0007',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0008',253,1253,1245,'D3_FLD_0008',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0009',254,1254,1245,'D3_FLD_0009',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0010',255,1255,1245,'D3_FLD_0010',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0011',256,1256,1245,'D3_FLD_0011',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0012',257,1257,1245,'D3_FLD_0012',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0013',258,1258,1245,'D3_FLD_0013',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0014',259,1259,1245,'D3_FLD_0014',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0015',260,1260,1245,'D3_FLD_0015',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0016',261,1261,1245,'D3_FLD_0016',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0017',262,1262,1245,'D3_FLD_0017',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0018',263,1263,1245,'D3_FLD_0018',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0019',264,1264,1245,'D3_FLD_0019',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0020',265,1265,1245,'D3_FLD_0020',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0021',266,1266,1245,'D3_FLD_0021',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0022',267,1267,1245,'D3_FLD_0022',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0023',268,1268,1245,'D3_FLD_0023',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0024',269,1269,1245,'D3_FLD_0024',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0025',270,1270,1245,'D3_FLD_0025',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0026',271,1271,1245,'D3_FLD_0026',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0027',272,1272,1245,'D3_FLD_0027',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0028',273,1273,1245,'D3_FLD_0028',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0029',274,1274,1245,'D3_FLD_0029',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0030',275,1275,1245,'D3_FLD_0030',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0031',276,1276,1245,'D3_FLD_0031',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0032',277,1277,1245,'D3_FLD_0032',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0033',278,1278,1245,'D3_FLD_0033',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0034',279,1279,1245,'D3_FLD_0034',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0035',280,1280,1245,'D3_FLD_0035',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0036',281,1281,1245,'D3_FLD_0036',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0037',282,1282,1245,'D3_FLD_0037',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0038',283,1283,1245,'D3_FLD_0038',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0039',284,1284,1245,'D3_FLD_0039',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0040',285,1285,1245,'D3_FLD_0040',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_TTST00000002_RES','D3_FLD_0041',286,1286,1245,'D3_FLD_0041',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0042',287,1287,1245,'D3_FLD_0042',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0043',288,1288,1245,'D3_FLD_0043',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0044',289,1289,1245,'D3_FLD_0044',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0045',290,1290,1245,'D3_FLD_0045',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0046',291,1291,1245,'D3_FLD_0046',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0047',292,1292,1245,'D3_FLD_0047',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0048',293,1293,1245,'D3_FLD_0048',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0049',294,1294,1245,'D3_FLD_0049',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0050',295,1295,1245,'D3_FLD_0050',2203,2102,'',20,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0051',296,1296,1245,'D3_FLD_0051',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0052',297,1297,1245,'D3_FLD_0052',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0053',298,1298,1245,'D3_FLD_0053',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0054',299,1299,1245,'D3_FLD_0054',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0055',300,1300,1245,'D3_FLD_0055',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0056',301,1301,1245,'D3_FLD_0056',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0057',302,1302,1245,'D3_FLD_0057',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0058',303,1303,1245,'D3_FLD_0058',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0059',304,1304,1245,'D3_FLD_0059',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0060',305,1305,1245,'D3_FLD_0060',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0061',306,1306,1245,'D3_FLD_0061',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0062',307,1307,1245,'D3_FLD_0062',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0063',308,1308,1245,'D3_FLD_0063',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0064',309,1309,1245,'D3_FLD_0064',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0065',310,1310,1245,'D3_FLD_0065',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0066',311,1311,1245,'D3_FLD_0066',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0067',312,1312,1245,'D3_FLD_0067',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0068',313,1313,1245,'D3_FLD_0068',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0069',314,1314,1245,'D3_FLD_0069',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0070',315,1315,1245,'D3_FLD_0070',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0071',316,1316,1245,'D3_FLD_0071',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0072',317,1317,1245,'D3_FLD_0072',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0073',318,1318,1245,'D3_FLD_0073',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0074',319,1319,1245,'D3_FLD_0074',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0075',320,1320,1245,'D3_FLD_0075',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0076',321,1321,1245,'D3_FLD_0076',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0077',322,1322,1245,'D3_FLD_0077',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0078',323,1323,1245,'D3_FLD_0078',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0079',324,1324,1245,'D3_FLD_0079',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0080',325,1325,1245,'D3_FLD_0080',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0081',326,1326,1245,'D3_FLD_0081',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0082',327,1327,1245,'D3_FLD_0082',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0083',328,1328,1245,'D3_FLD_0083',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0084',329,1329,1245,'D3_FLD_0084',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0085',330,1330,1245,'D3_FLD_0085',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0086',331,1331,1245,'D3_FLD_0086',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0087',332,1332,1245,'D3_FLD_0087',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0088',333,1333,1245,'D3_FLD_0088',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0089',334,1334,1245,'D3_FLD_0089',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0090',335,1335,1245,'D3_FLD_0090',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0091',336,1336,1245,'D3_FLD_0091',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0092',337,1337,1245,'D3_FLD_0092',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0093',338,1338,1245,'D3_FLD_0093',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0094',339,1339,1245,'D3_FLD_0094',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0095',340,1340,1245,'D3_FLD_0095',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0096',341,1341,1245,'D3_FLD_0096',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0097',342,1342,1245,'D3_FLD_0097',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0098',343,1343,1245,'D3_FLD_0098',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0099',344,1344,1245,'D3_FLD_0099',2203,2101,'',20,'','','',1,1,'',' ',4,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0100',497,1497,1245,'D3_FLD_0100',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0101',498,1498,1245,'D3_FLD_0101',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0102',499,1499,1245,'D3_FLD_0102',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0103',500,1500,1245,'D3_FLD_0103',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0104',501,1501,1245,'D3_FLD_0104',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0105',502,1502,1245,'D3_FLD_0105',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0106',503,1503,1245,'D3_FLD_0106',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0107',504,1504,1245,'D3_FLD_0107',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0108',505,1505,1245,'D3_FLD_0108',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0109',506,1506,1245,'D3_FLD_0109',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0110',507,1507,1245,'D3_FLD_0110',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0111',508,1508,1245,'D3_FLD_0111',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0112',509,1509,1245,'D3_FLD_0112',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0113',510,1510,1245,'D3_FLD_0113',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0114',511,1511,1245,'D3_FLD_0114',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0115',512,1512,1245,'D3_FLD_0115',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0116',513,1513,1245,'D3_FLD_0116',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0117',514,1514,1245,'D3_FLD_0117',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0118',515,1515,1245,'D3_FLD_0118',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0119',516,1516,1245,'D3_FLD_0119',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0120',517,1517,1245,'D3_FLD_0120',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0121',518,1518,1245,'D3_FLD_0121',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0122',519,1519,1245,'D3_FLD_0122',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0123',520,1520,1245,'D3_FLD_0123',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0124',521,1521,1245,'D3_FLD_0124',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0125',522,1522,1245,'D3_FLD_0125',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0126',523,1523,1245,'D3_FLD_0126',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0127',524,1524,1245,'D3_FLD_0127',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0128',525,1525,1245,'D3_FLD_0128',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0129',526,1526,1245,'D3_FLD_0129',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0130',527,1527,1245,'D3_FLD_0130',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0131',528,1528,1245,'D3_FLD_0131',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0132',529,1529,1245,'D3_FLD_0132',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0133',530,1530,1245,'D3_FLD_0133',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0134',531,1531,1245,'D3_FLD_0134',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0135',532,1532,1245,'D3_FLD_0135',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0136',533,1533,1245,'D3_FLD_0136',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0137',534,1534,1245,'D3_FLD_0137',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0138',535,1535,1245,'D3_FLD_0138',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0139',536,1536,1245,'D3_FLD_0139',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0140',537,1537,1245,'D3_FLD_0140',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_TTST00000002_RES','D3_FLD_0141',538,1538,1245,'D3_FLD_0141',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0142',539,1539,1245,'D3_FLD_0142',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0143',540,1540,1245,'D3_FLD_0143',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0144',541,1541,1245,'D3_FLD_0144',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0145',542,1542,1245,'D3_FLD_0145',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0146',543,1543,1245,'D3_FLD_0146',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0147',544,1544,1245,'D3_FLD_0147',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0148',545,1545,1245,'D3_FLD_0148',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0149',546,1546,1245,'D3_FLD_0149',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_FLD_0150',547,1547,1245,'D3_FLD_0150',2203,2118,'',15,'','','',1,1,'',' ',4,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D3_GRD_D4',346,1346,1245,'D3_GRD_D4',2202,2100,'',0,'','D3_GRD_D4_LENGTH','*',-1,0,'',' ',4,0,'',0,'',NULL), + ('TST_TTST00000002_RES','D3_GRD_D4_LENGTH',345,1345,1245,'D3_GRD_D4_LENGTH',2203,2102,'',10,'','','',1,1,'',' ',4,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0001',347,1347,1346,'D4_FLD_0001',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0002',348,1348,1346,'D4_FLD_0002',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0003',349,1349,1346,'D4_FLD_0003',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0004',350,1350,1346,'D4_FLD_0004',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0005',351,1351,1346,'D4_FLD_0005',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0006',352,1352,1346,'D4_FLD_0006',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0007',353,1353,1346,'D4_FLD_0007',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0008',354,1354,1346,'D4_FLD_0008',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0009',355,1355,1346,'D4_FLD_0009',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0010',356,1356,1346,'D4_FLD_0010',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0011',357,1357,1346,'D4_FLD_0011',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0012',358,1358,1346,'D4_FLD_0012',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0013',359,1359,1346,'D4_FLD_0013',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0014',360,1360,1346,'D4_FLD_0014',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0015',361,1361,1346,'D4_FLD_0015',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0016',362,1362,1346,'D4_FLD_0016',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0017',363,1363,1346,'D4_FLD_0017',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0018',364,1364,1346,'D4_FLD_0018',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0019',365,1365,1346,'D4_FLD_0019',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0020',366,1366,1346,'D4_FLD_0020',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0021',367,1367,1346,'D4_FLD_0021',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0022',368,1368,1346,'D4_FLD_0022',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0023',369,1369,1346,'D4_FLD_0023',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0024',370,1370,1346,'D4_FLD_0024',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0025',371,1371,1346,'D4_FLD_0025',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0026',372,1372,1346,'D4_FLD_0026',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0027',373,1373,1346,'D4_FLD_0027',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0028',374,1374,1346,'D4_FLD_0028',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0029',375,1375,1346,'D4_FLD_0029',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0030',376,1376,1346,'D4_FLD_0030',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0031',377,1377,1346,'D4_FLD_0031',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0032',378,1378,1346,'D4_FLD_0032',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0033',379,1379,1346,'D4_FLD_0033',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0034',380,1380,1346,'D4_FLD_0034',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0035',381,1381,1346,'D4_FLD_0035',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0036',382,1382,1346,'D4_FLD_0036',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0037',383,1383,1346,'D4_FLD_0037',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0038',384,1384,1346,'D4_FLD_0038',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0039',385,1385,1346,'D4_FLD_0039',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0040',386,1386,1346,'D4_FLD_0040',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0041',387,1387,1346,'D4_FLD_0041',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0042',388,1388,1346,'D4_FLD_0042',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0043',389,1389,1346,'D4_FLD_0043',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0044',390,1390,1346,'D4_FLD_0044',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0045',391,1391,1346,'D4_FLD_0045',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0046',392,1392,1346,'D4_FLD_0046',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0047',393,1393,1346,'D4_FLD_0047',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0048',394,1394,1346,'D4_FLD_0048',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0049',395,1395,1346,'D4_FLD_0049',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0050',396,1396,1346,'D4_FLD_0050',2203,2102,'',20,'','','',1,1,'',' ',5,0,'Int',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0051',397,1397,1346,'D4_FLD_0051',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0052',398,1398,1346,'D4_FLD_0052',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0053',399,1399,1346,'D4_FLD_0053',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0054',400,1400,1346,'D4_FLD_0054',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0055',401,1401,1346,'D4_FLD_0055',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0056',402,1402,1346,'D4_FLD_0056',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0057',403,1403,1346,'D4_FLD_0057',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0058',404,1404,1346,'D4_FLD_0058',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0059',405,1405,1346,'D4_FLD_0059',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0060',406,1406,1346,'D4_FLD_0060',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0061',407,1407,1346,'D4_FLD_0061',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0062',408,1408,1346,'D4_FLD_0062',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0063',409,1409,1346,'D4_FLD_0063',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0064',410,1410,1346,'D4_FLD_0064',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0065',411,1411,1346,'D4_FLD_0065',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0066',412,1412,1346,'D4_FLD_0066',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0067',413,1413,1346,'D4_FLD_0067',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0068',414,1414,1346,'D4_FLD_0068',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0069',415,1415,1346,'D4_FLD_0069',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0070',416,1416,1346,'D4_FLD_0070',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0071',417,1417,1346,'D4_FLD_0071',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0072',418,1418,1346,'D4_FLD_0072',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0073',419,1419,1346,'D4_FLD_0073',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0074',420,1420,1346,'D4_FLD_0074',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0075',421,1421,1346,'D4_FLD_0075',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0076',422,1422,1346,'D4_FLD_0076',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0077',423,1423,1346,'D4_FLD_0077',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0078',424,1424,1346,'D4_FLD_0078',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0079',425,1425,1346,'D4_FLD_0079',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0080',426,1426,1346,'D4_FLD_0080',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0081',427,1427,1346,'D4_FLD_0081',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0082',428,1428,1346,'D4_FLD_0082',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0083',429,1429,1346,'D4_FLD_0083',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0084',430,1430,1346,'D4_FLD_0084',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0085',431,1431,1346,'D4_FLD_0085',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0086',432,1432,1346,'D4_FLD_0086',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0087',433,1433,1346,'D4_FLD_0087',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0088',434,1434,1346,'D4_FLD_0088',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_TTST00000002_RES','D4_FLD_0089',435,1435,1346,'D4_FLD_0089',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0090',436,1436,1346,'D4_FLD_0090',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0091',437,1437,1346,'D4_FLD_0091',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0092',438,1438,1346,'D4_FLD_0092',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0093',439,1439,1346,'D4_FLD_0093',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0094',440,1440,1346,'D4_FLD_0094',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0095',441,1441,1346,'D4_FLD_0095',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0096',442,1442,1346,'D4_FLD_0096',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0097',443,1443,1346,'D4_FLD_0097',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0098',444,1444,1346,'D4_FLD_0098',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0099',445,1445,1346,'D4_FLD_0099',2203,2101,'',20,'','','',1,1,'',' ',5,0,'String',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0100',446,1446,1346,'D4_FLD_0100',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0101',447,1447,1346,'D4_FLD_0101',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0102',448,1448,1346,'D4_FLD_0102',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0103',449,1449,1346,'D4_FLD_0103',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0104',450,1450,1346,'D4_FLD_0104',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0105',451,1451,1346,'D4_FLD_0105',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0106',452,1452,1346,'D4_FLD_0106',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0107',453,1453,1346,'D4_FLD_0107',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0108',454,1454,1346,'D4_FLD_0108',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0109',455,1455,1346,'D4_FLD_0109',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0110',456,1456,1346,'D4_FLD_0110',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0111',457,1457,1346,'D4_FLD_0111',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0112',458,1458,1346,'D4_FLD_0112',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0113',459,1459,1346,'D4_FLD_0113',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0114',460,1460,1346,'D4_FLD_0114',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0115',461,1461,1346,'D4_FLD_0115',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0116',462,1462,1346,'D4_FLD_0116',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0117',463,1463,1346,'D4_FLD_0117',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0118',464,1464,1346,'D4_FLD_0118',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0119',465,1465,1346,'D4_FLD_0119',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0120',466,1466,1346,'D4_FLD_0120',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0121',467,1467,1346,'D4_FLD_0121',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0122',468,1468,1346,'D4_FLD_0122',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0123',469,1469,1346,'D4_FLD_0123',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0124',470,1470,1346,'D4_FLD_0124',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0125',471,1471,1346,'D4_FLD_0125',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0126',472,1472,1346,'D4_FLD_0126',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0127',473,1473,1346,'D4_FLD_0127',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0128',474,1474,1346,'D4_FLD_0128',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0129',475,1475,1346,'D4_FLD_0129',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0130',476,1476,1346,'D4_FLD_0130',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0131',477,1477,1346,'D4_FLD_0131',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0132',478,1478,1346,'D4_FLD_0132',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0133',479,1479,1346,'D4_FLD_0133',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0134',480,1480,1346,'D4_FLD_0134',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0135',481,1481,1346,'D4_FLD_0135',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0136',482,1482,1346,'D4_FLD_0136',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0137',483,1483,1346,'D4_FLD_0137',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0138',484,1484,1346,'D4_FLD_0138',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0139',485,1485,1346,'D4_FLD_0139',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0140',486,1486,1346,'D4_FLD_0140',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0141',487,1487,1346,'D4_FLD_0141',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0142',488,1488,1346,'D4_FLD_0142',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0143',489,1489,1346,'D4_FLD_0143',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0144',490,1490,1346,'D4_FLD_0144',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0145',491,1491,1346,'D4_FLD_0145',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0146',492,1492,1346,'D4_FLD_0146',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0147',493,1493,1346,'D4_FLD_0147',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0148',494,1494,1346,'D4_FLD_0148',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0149',495,1495,1346,'D4_FLD_0149',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','D4_FLD_0150',496,1496,1346,'D4_FLD_0150',2203,2118,'',15,'','','',1,1,'',' ',5,3,'BigDecimal',0,'',NULL), + ('TST_TTST00000002_RES','TST_TTST00000002_RES',0,1000,0,'BASIC_TEST_001',2201,2100,'',0,'','','',0,0,'',' ',1,0,'',0,'',NULL), + ('TST_STST10000003_RES','TST_STST10000003_RES',0,1000,0,'',2201,2100,'',0,'','','',0,0,'',' ',1,0,NULL,NULL,NULL,NULL), + ('TST_STST10000003_RES','FIELD1',1,1001,1000,'FIELD1',2203,2113,NULL,4,NULL,'','',1,1,'','N',2,0,'Integer',0,NULL,NULL), + ('TST_STST10000003_RES','FIELD2',2,1002,1000,'FIELD2',2203,2113,NULL,4,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('TST_STST10000003_RES','FIELD3',3,1003,1000,'FIELD3',2203,2113,NULL,10,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('TST_STST10000003_RES','FIELD4',4,1004,1000,'FIELD4',2203,2113,NULL,72,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('TST_STST10000003_RES','DATA_CNT',5,1005,1000,'DATA_CNT',2203,2113,NULL,10,NULL,'','',1,1,'','N',2,0,'Integer',0,NULL,NULL), + ('TST_STST10000003_RES','DATAFIELD1',7,1007,1006,'DATAFIELD1',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_RES','DATAFIELD2',8,1008,1006,'DATAFIELD2',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_RES','DATAFIELD3',9,1009,1006,'DATAFIELD3',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_RES','DATAFIELD4',10,1010,1006,'DATAFIELD4',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_RES','DATAFIELD5',11,1011,1006,'DATAFIELD5',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_RES','DATAFIELD6',12,1012,1006,'DATAFIELD6',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_RES','DATAFIELD7',13,1013,1006,'DATAFIELD7',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_RES','DATAFIELD8',14,1014,1006,'DATAFIELD8',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_RES','DATAFIELD9',15,1015,1006,'DATAFIELD9',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_RES','DATAFIELD0',16,1016,1006,'DATAFIELD0',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_REQ','TST_TTST10000003_REQ',0,1000,0,'',2201,2100,'',0,'','','',0,0,'',' ',1,0,NULL,NULL,NULL,NULL), + ('TST_TTST10000003_REQ','FIELD1',1,1001,1000,'FIELD1',2203,2102,NULL,4,NULL,'','',1,1,'','N',2,0,'Integer',0,NULL,NULL), + ('TST_TTST10000003_REQ','FIELD2',2,1002,1000,'FIELD2',2203,2101,NULL,4,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('TST_TTST10000003_REQ','FIELD3',3,1003,1000,'FIELD3',2203,2101,NULL,10,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('TST_TTST10000003_REQ','FIELD4',4,1004,1000,'FIELD4',2203,2101,NULL,72,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('TST_TTST10000003_REQ','DATA_CNT',5,1005,1000,'DATA_CNT',2203,2102,NULL,10,NULL,'','',1,1,'','N',2,0,'Integer',0,NULL,NULL), + ('TST_STST10000003_RES','DATA_GROUP',6,1006,1000,'DATA_GROUP',2202,2113,NULL,0,NULL,'DATA_CNT','*',-1,0,'','N',2,0,'',0,NULL,NULL), + ('TST_TTST10000003_REQ','DATAFIELD1',7,1007,1006,'DATAFIELD1',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_REQ','DATAFIELD2',8,1008,1006,'DATAFIELD2',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_REQ','DATAFIELD3',9,1009,1006,'DATAFIELD3',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_REQ','DATAFIELD4',10,1010,1006,'DATAFIELD4',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_REQ','DATAFIELD5',11,1011,1006,'DATAFIELD5',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_REQ','DATAFIELD6',12,1012,1006,'DATAFIELD6',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_REQ','DATAFIELD7',13,1013,1006,'DATAFIELD7',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_REQ','DATAFIELD8',14,1014,1006,'DATAFIELD8',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_REQ','DATAFIELD9',15,1015,1006,'DATAFIELD9',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_REQ','DATAFIELD0',16,1016,1006,'DATAFIELD0',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_RES','TST_TTST10000003_RES',0,1000,0,'',2201,2100,'',0,'','','',0,0,'',' ',1,0,NULL,NULL,NULL,NULL), + ('TST_TTST10000003_RES','FIELD1',1,1001,1000,'FIELD1',2203,2102,NULL,4,NULL,'','',1,1,'','N',2,0,'Integer',0,NULL,NULL), + ('TST_TTST10000003_RES','FIELD2',2,1002,1000,'FIELD2',2203,2101,NULL,4,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('TST_TTST10000003_RES','FIELD3',3,1003,1000,'FIELD3',2203,2101,NULL,10,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL); +INSERT INTO tseaitr08 (loutname,loutitemname,loutitemserno,loutitemidname,parntloutitemidname,loutitemdesc,loutitemnodeptrnidname,loutitemptrnidname,loutitempathname,loutitemlencnt,loutitemrefinfo,loutitemrefinfo2,loutitemoccurptrndstcd,loutitemmaxoccurnoitm,loutitemminoccurnoitm,loutitembascval,loutitemmskyn,loutdptcnt,decptlencnt,loutitemrefptrnidname,loutitemmasklength,multilang,loutitemmaskoffset) VALUES + ('TST_TTST10000003_RES','FIELD4',4,1004,1000,'FIELD4',2203,2101,NULL,72,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('TST_TTST10000003_RES','DATA_CNT',5,1005,1000,'DATA_CNT',2203,2102,NULL,10,NULL,'','',1,1,'','N',2,0,'Integer',0,NULL,NULL), + ('TST_TTST10000003_RES','DATAFIELD1',7,1007,1006,'DATAFIELD1',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_RES','DATAFIELD2',8,1008,1006,'DATAFIELD2',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_RES','DATAFIELD3',9,1009,1006,'DATAFIELD3',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_RES','DATAFIELD4',10,1010,1006,'DATAFIELD4',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_RES','DATAFIELD5',11,1011,1006,'DATAFIELD5',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_RES','DATAFIELD6',12,1012,1006,'DATAFIELD6',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_RES','DATAFIELD7',13,1013,1006,'DATAFIELD7',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_RES','DATAFIELD8',14,1014,1006,'DATAFIELD8',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_RES','DATAFIELD9',15,1015,1006,'DATAFIELD9',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_RES','DATAFIELD0',16,1016,1006,'DATAFIELD0',2203,2101,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_REQ','TST_STST10000003_REQ',0,1000,0,'',2201,2100,'',0,'','','',0,0,'',' ',1,0,NULL,NULL,NULL,NULL), + ('TST_STST10000003_REQ','FIELD1',1,1001,1000,'FIELD1',2203,2113,NULL,4,NULL,'','',1,1,'','N',2,0,'Integer',0,NULL,NULL), + ('TST_STST10000003_REQ','FIELD2',2,1002,1000,'FIELD2',2203,2113,NULL,4,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('TST_STST10000003_REQ','FIELD3',3,1003,1000,'FIELD3',2203,2113,NULL,10,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('TST_STST10000003_REQ','FIELD4',4,1004,1000,'FIELD4',2203,2113,NULL,72,NULL,'','',1,1,'','N',2,0,'String',0,NULL,NULL), + ('TST_STST10000003_REQ','DATA_CNT',5,1005,1000,'DATA_CNT',2203,2113,NULL,10,NULL,'','',1,1,'','N',2,0,'Integer',0,NULL,NULL), + ('TST_STST10000003_REQ','DATAFIELD1',7,1007,1006,'DATAFIELD1',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_REQ','DATAFIELD2',8,1008,1006,'DATAFIELD2',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_REQ','DATAFIELD3',9,1009,1006,'DATAFIELD3',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_REQ','DATAFIELD4',10,1010,1006,'DATAFIELD4',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_REQ','DATAFIELD5',11,1011,1006,'DATAFIELD5',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_REQ','DATAFIELD6',12,1012,1006,'DATAFIELD6',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_REQ','DATAFIELD7',13,1013,1006,'DATAFIELD7',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_REQ','DATAFIELD8',14,1014,1006,'DATAFIELD8',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_REQ','DATAFIELD9',15,1015,1006,'DATAFIELD9',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_STST10000003_REQ','DATAFIELD0',16,1016,1006,'DATAFIELD0',2203,2113,NULL,10,NULL,'','',1,1,'','N',3,0,'String',0,NULL,NULL), + ('TST_TTST10000003_RES','DATA_GROUP',6,1006,1000,'DATA_GROUP',2202,2100,NULL,0,NULL,'DATA_CNT','*',-1,0,'','N',2,0,'',0,NULL,NULL), + ('TST_STST10000003_REQ','DATA_GROUP',6,1006,1000,'DATA_GROUP',2202,2113,NULL,0,NULL,'DATA_CNT','*',-1,0,'','N',2,0,'',0,NULL,NULL), + ('TST_TTST10000003_REQ','DATA_GROUP',6,1006,1000,'DATA_GROUP',2202,2100,NULL,0,NULL,'DATA_CNT','*',-1,0,'','N',2,0,'',0,NULL,NULL); diff --git a/src/test/resources/com/eactive/eai/transformer/layout/FLAT_VARGRID_REQ1.xls b/src/test/resources/com/eactive/eai/transformer/layout/FLAT_VARGRID_REQ1.xls new file mode 100644 index 0000000..658f92e Binary files /dev/null and b/src/test/resources/com/eactive/eai/transformer/layout/FLAT_VARGRID_REQ1.xls differ diff --git a/src/test/resources/com/eactive/eai/transformer/layout/XML_VARGRID_REQ1.xls b/src/test/resources/com/eactive/eai/transformer/layout/XML_VARGRID_REQ1.xls new file mode 100644 index 0000000..20fcc91 Binary files /dev/null and b/src/test/resources/com/eactive/eai/transformer/layout/XML_VARGRID_REQ1.xls differ diff --git a/src/test/resources/com/eactive/eai/transformer/layout_type/layout_type.xls b/src/test/resources/com/eactive/eai/transformer/layout_type/layout_type.xls new file mode 100644 index 0000000..cfe40ae Binary files /dev/null and b/src/test/resources/com/eactive/eai/transformer/layout_type/layout_type.xls differ diff --git a/src/test/resources/com/eactive/eai/transformer/transform/TRANSFORM_VARGRID_REQ.xls b/src/test/resources/com/eactive/eai/transformer/transform/TRANSFORM_VARGRID_REQ.xls new file mode 100644 index 0000000..2a35d78 Binary files /dev/null and b/src/test/resources/com/eactive/eai/transformer/transform/TRANSFORM_VARGRID_REQ.xls differ