OSDN Git Service

* merge from mastergit
authorkonn <konn@1a406e8e-add9-4483-a2c8-d8cac5b7c224>
Sun, 27 Feb 2011 15:36:06 +0000 (15:36 +0000)
committerkonn <konn@1a406e8e-add9-4483-a2c8-d8cac5b7c224>
Sun, 27 Feb 2011 15:36:06 +0000 (15:36 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/modchxj/mod_chxj/branches/RELEASE_0_13_0@4847 1a406e8e-add9-4483-a2c8-d8cac5b7c224

42 files changed:
Makefile.in
aclocal.m4
configure
configure.ac
etc/device_data.xml
etc/emoji.xml
include/chxj_add_device_env.h [changed mode: 0644->0755]
include/chxj_encoding.h
include/chxj_img_conv.h
include/chxj_load_device_data.h [changed mode: 0644->0755]
include/chxj_specified_device.h [changed mode: 0644->0755]
include/config.h
include/mod_chxj.h [changed mode: 0644->0755]
src/Makefile.in
src/chxj_add_device_env.c [changed mode: 0644->0755]
src/chxj_chtml10.c
src/chxj_chtml20.c
src/chxj_chtml30.c
src/chxj_chtml40.c
src/chxj_chtml50.c
src/chxj_cookie.c
src/chxj_encoding.c
src/chxj_hdml.c
src/chxj_img_conv.c
src/chxj_img_conv_format.c
src/chxj_ixhtml10.c [changed mode: 0644->0755]
src/chxj_jhtml.c
src/chxj_jreserved_tag.c
src/chxj_jxhtml.c [changed mode: 0644->0755]
src/chxj_load_device_data.c [changed mode: 0644->0755]
src/chxj_load_emoji_data.c
src/chxj_node_convert.c
src/chxj_serf.c
src/chxj_specified_device.c [changed mode: 0644->0755]
src/chxj_xhtml_mobile_1_0.c [changed mode: 0644->0755]
src/css/config.status
src/css/libtool
src/css/src/Makefile
src/mod_chxj.c [changed mode: 0644->0755]
src/qs_parse_tag.c
support/centos/mod-chxj.spec
test/chxj_ixhtml10/test_chxj_ixhtml10.c

index b9e46ce..ba83526 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.10 from Makefile.am.
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -99,6 +99,7 @@ CYGPATH_W = @CYGPATH_W@
 DDEFS = @DDEFS@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
 ECHO = @ECHO@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -122,6 +123,7 @@ LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
+NMEDIT = @NMEDIT@
 OBJEXT = @OBJEXT@
 OPENSSL_PATH = @OPENSSL_PATH@
 PACKAGE = @PACKAGE@
@@ -135,6 +137,7 @@ PCRE_1_CONFIG = @PCRE_1_CONFIG@
 PCRE_CONFIG = @PCRE_CONFIG@
 QDEFS = @QDEFS@
 RANLIB = @RANLIB@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -337,8 +340,8 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        mkid -fID $$unique
 tags: TAGS
 
@@ -363,8 +366,8 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
          $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
@@ -374,13 +377,12 @@ ctags: CTAGS
 CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
        tags=; \
-       here=`pwd`; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        test -z "$(CTAGS_ARGS)$$tags$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
             $$tags $$unique
@@ -451,6 +453,10 @@ dist-bzip2: distdir
        tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
        $(am__remove_distdir)
 
+dist-lzma: distdir
+       tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma
+       $(am__remove_distdir)
+
 dist-tarZ: distdir
        tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
        $(am__remove_distdir)
@@ -477,6 +483,8 @@ distcheck: dist
          GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
        *.tar.bz2*) \
          bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+       *.tar.lzma*) \
+         unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
        *.tar.Z*) \
          uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
        *.shar.gz*) \
@@ -628,8 +636,8 @@ uninstall-am:
 .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
        all all-am am--refresh check check-am clean clean-generic \
        clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
-       dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \
-       distclean-generic distclean-hdr distclean-libtool \
+       dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \
+       distclean distclean-generic distclean-hdr distclean-libtool \
        distclean-tags distcleancheck distdir distuninstallcheck dvi \
        dvi-am html html-am info info-am install install-am \
        install-data install-data-am install-dvi install-dvi-am \
index 90e91ec..8a015be 100644 (file)
@@ -1,7 +1,7 @@
-# generated automatically by aclocal 1.10 -*- Autoconf -*-
+# generated automatically by aclocal 1.10.1 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006  Free Software Foundation, Inc.
+# 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
-m4_if(m4_PACKAGE_VERSION, [2.61],,
-[m4_fatal([this file was generated for autoconf 2.61.
-You have another version of autoconf.  If you want to use that,
-you should regenerate the build system entirely.], [63])])
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+m4_if(AC_AUTOCONF_VERSION, [2.61],,
+[m4_warning([this file was generated for autoconf 2.61.
+You have another version of autoconf.  It may work, but is not guaranteed to.
+If you have problems, you may need to regenerate the build system entirely.
+To do so, use the procedure documented by the package, typically `autoreconf'.])])
 
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 
-# serial 48 Debian 1.5.22-4 AC_PROG_LIBTOOL
+# serial 52 Debian 1.5.26-4+lenny1 AC_PROG_LIBTOOL
 
 
 # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
@@ -106,7 +109,6 @@ AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
 AC_REQUIRE([AC_OBJEXT])dnl
 AC_REQUIRE([AC_EXEEXT])dnl
 dnl
-
 AC_LIBTOOL_SYS_MAX_CMD_LEN
 AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
 AC_LIBTOOL_OBJDIR
@@ -181,7 +183,7 @@ test -z "$STRIP" && STRIP=:
 test -z "$ac_objext" && ac_objext=o
 
 # Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
 old_postinstall_cmds='chmod 644 $oldlib'
 old_postuninstall_cmds=
 
@@ -208,6 +210,8 @@ file_magic*)
   ;;
 esac
 
+_LT_REQUIRED_DARWIN_CHECKS
+
 AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
 AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
 enable_win32_dll=yes, enable_win32_dll=no)
@@ -268,8 +272,9 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
 # Check for compiler boilerplate output or warnings with
 # the simple compiler test code.
 AC_DEFUN([_LT_COMPILER_BOILERPLATE],
-[ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
 eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_compiler_boilerplate=`cat conftest.err`
 $rm conftest*
@@ -281,13 +286,85 @@ $rm conftest*
 # Check for linker boilerplate output or warnings with
 # the simple link test code.
 AC_DEFUN([_LT_LINKER_BOILERPLATE],
-[ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
 eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_linker_boilerplate=`cat conftest.err`
-$rm conftest*
+$rm -r conftest*
 ])# _LT_LINKER_BOILERPLATE
 
+# _LT_REQUIRED_DARWIN_CHECKS
+# --------------------------
+# Check for some things on darwin
+AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS],[
+  case $host_os in
+    rhapsody* | darwin*)
+    AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+    AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+
+    AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+      [lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+   # By default we will add the -single_module flag. You can override
+   # by either setting the environment variable LT_MULTI_MODULE
+   # non-empty at configure time, or by adding -multi_module to the
+   # link flags.
+   echo "int foo(void){return 1;}" > conftest.c
+   $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+     -dynamiclib ${wl}-single_module conftest.c
+   if test -f libconftest.dylib; then
+     lt_cv_apple_cc_single_mod=yes
+     rm -rf libconftest.dylib*
+   fi
+   rm conftest.c
+      fi])
+    AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+      [lt_cv_ld_exported_symbols_list],
+      [lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+   [lt_cv_ld_exported_symbols_list=yes],
+   [lt_cv_ld_exported_symbols_list=no])
+   LDFLAGS="$save_LDFLAGS"
+    ])
+    case $host_os in
+    rhapsody* | darwin1.[[0123]])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+     _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*)
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+   10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+     _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+   10.[[012]]*)
+     _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+   10.*)
+     _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}"
+    fi
+    if test "$DSYMUTIL" != ":"; then
+      _lt_dsymutil="~$DSYMUTIL \$lib || :"
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+])
 
 # _LT_AC_SYS_LIBPATH_AIX
 # ----------------------
@@ -298,12 +375,20 @@ $rm conftest*
 # If we don't find anything, use the default library path according
 # to the aix ld manual.
 AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
-[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+       /^0/ {
+           s/^0  *\(.*\)$/\1/
+           p
+       }
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 # Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`; fi],[])
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi],[])
 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 ])# _LT_AC_SYS_LIBPATH_AIX
 
@@ -534,13 +619,17 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
     case `/usr/bin/file conftest.o` in
     *32-bit*)
       case $host in
+        x86_64-*kfreebsd*-gnu)
+          LD="${LD-ld} -m elf_i386_fbsd"
+          ;;
         x86_64-*linux*)
           LD="${LD-ld} -m elf_i386"
           ;;
@@ -557,6 +646,9 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
       ;;
     *64-bit*)
       case $host in
+        x86_64-*kfreebsd*-gnu)
+          LD="${LD-ld} -m elf_x86_64_fbsd"
+          ;;
         x86_64-*linux*)
           LD="${LD-ld} -m elf_x86_64"
           ;;
@@ -597,7 +689,11 @@ sparc*-*solaris*)
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
       yes*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)    LD="${LD-ld} -64" ;;
+      *)
+        if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+         LD="${LD-ld} -64"
+       fi
+       ;;
       esac
       ;;
     esac
@@ -628,7 +724,7 @@ AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
 AC_CACHE_CHECK([$1], [$2],
   [$2=no
   ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
    lt_compiler_flag="$3"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
@@ -669,11 +765,12 @@ fi
 # ------------------------------------------------------------
 # Check whether the given compiler option works
 AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
-[AC_CACHE_CHECK([$1], [$2],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
   [$2=no
    save_LDFLAGS="$LDFLAGS"
    LDFLAGS="$LDFLAGS $3"
-   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
      # The linker can only warn and ignore the option if not recognized
      # So say no if there are warnings
@@ -689,7 +786,7 @@ AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
        $2=yes
      fi
    fi
-   $rm conftest*
+   $rm -r conftest*
    LDFLAGS="$save_LDFLAGS"
 ])
 
@@ -787,24 +884,27 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     fi
     ;;
   *)
-    # If test is not a shell built-in, we'll probably end up computing a
-    # maximum length that is only half of the actual maximum length, but
-    # we can't tell.
-    SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-    while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
               = "XX$teststring") >/dev/null 2>&1 &&
-           new_result=`expr "X$teststring" : ".*" 2>&1` &&
-           lt_cv_sys_max_cmd_len=$new_result &&
-           test $i != 17 # 1/2 MB should be enough
-    do
-      i=`expr $i + 1`
-      teststring=$teststring$teststring
-    done
-    teststring=
-    # Add a significant safety factor because C++ compilers can tack on massive
-    # amounts of additional arguments before passing them to the linker.
-    # It appears as though 1/2 is a usable value.
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+             new_result=`expr "X$teststring" : ".*" 2>&1` &&
+             lt_cv_sys_max_cmd_len=$new_result &&
+             test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on massive
+      # amounts of additional arguments before passing them to the linker.
+      # It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
     ;;
   esac
 ])
@@ -957,7 +1057,7 @@ else
     AC_CHECK_FUNC([shl_load],
          [lt_cv_dlopen="shl_load"],
       [AC_CHECK_LIB([dld], [shl_load],
-           [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
+           [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
        [AC_CHECK_FUNC([dlopen],
              [lt_cv_dlopen="dlopen"],
          [AC_CHECK_LIB([dl], [dlopen],
@@ -965,7 +1065,7 @@ else
            [AC_CHECK_LIB([svld], [dlopen],
                  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
              [AC_CHECK_LIB([dld], [dld_link],
-                   [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+                   [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
              ])
            ])
          ])
@@ -1031,7 +1131,8 @@ fi
 # ---------------------------------
 # Check to see if options -c and -o are simultaneously supported by compiler
 AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
-[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
 AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
   [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
   [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
@@ -1039,7 +1140,7 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
    mkdir conftest
    cd conftest
    mkdir out
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
    lt_compiler_flag="-o out/conftest2.$ac_objext"
    # Insert the option either (1) after the last *FLAGS variable, or
@@ -1179,6 +1280,7 @@ else
    darwin*)
        if test -n "$STRIP" ; then
          striplib="$STRIP -x"
+         old_striplib="$STRIP -S"
          AC_MSG_RESULT([yes])
        else
   AC_MSG_RESULT([no])
@@ -1196,7 +1298,8 @@ fi
 # -----------------------------
 # PORTME Fill in your ld.so characteristics
 AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
-[AC_MSG_CHECKING([dynamic linker characteristics])
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
 library_names_spec=
 libname_spec='lib$name'
 soname_spec=
@@ -1210,20 +1313,58 @@ shlibpath_overrides_runpath=unknown
 version_type=none
 dynamic_linker="$host_os ld.so"
 sys_lib_dlsearch_path_spec="/lib /usr/lib"
+m4_if($1,[],[
 if test "$GCC" = yes; then
-  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then
     # if the path contains ";" then we assume it to be the separator
     # otherwise default to the standard path separator (i.e. ":") - it is
     # assumed that no part of a normal pathname contains ";" but that should
     # okay in the real world where ";" in dirpaths is itself problematic.
-    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+    lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'`
   else
-    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+    lt_search_path_spec=`echo "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
   fi
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+  if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+  sys_lib_search_path_spec=`echo $lt_search_path_spec`
 else
   sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
+fi])
 need_lib_prefix=unknown
 hardcode_into_libs=no
 
@@ -1241,7 +1382,7 @@ aix3*)
   soname_spec='${libname}${release}${shared_ext}$major'
   ;;
 
-aix4* | aix5*)
+aix[[4-9]]*)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -1380,12 +1521,8 @@ darwin* | rhapsody*)
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
   shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-  if test "$GCC" = yes; then
-    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-  else
-    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-  fi
+  m4_if([$1], [],[
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) 
   sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
   ;;
 
@@ -1439,7 +1576,7 @@ freebsd* | dragonfly*)
     shlibpath_overrides_runpath=no
     hardcode_into_libs=yes
     ;;
-  freebsd*) # from 4.6 on
+  *) # from 4.6 on, and DragonFly
     shlibpath_overrides_runpath=yes
     hardcode_into_libs=yes
     ;;
@@ -1502,7 +1639,7 @@ hpux9* | hpux10* | hpux11*)
   postinstall_cmds='chmod 555 $lib'
   ;;
 
-interix3*)
+interix[[3-9]]*)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -1573,7 +1710,7 @@ linux* | k*bsd*-gnu)
 
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,   ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[         ]*hwcap[        ]/d;s/[:,       ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
   fi
 
@@ -1679,6 +1816,10 @@ osf3* | osf4* | osf5*)
   sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
   ;;
 
+rdos*)
+  dynamic_linker=no
+  ;;
+
 solaris*)
   version_type=linux
   need_lib_prefix=no
@@ -1774,6 +1915,13 @@ esac
 AC_MSG_RESULT([$dynamic_linker])
 test "$dynamic_linker" = no && can_build_shared=no
 
+AC_CACHE_VAL([lt_cv_sys_lib_search_path_spec],
+[lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"])
+sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+AC_CACHE_VAL([lt_cv_sys_lib_dlsearch_path_spec],
+[lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"])
+sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
 if test "$GCC" = yes; then
   variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
@@ -1784,7 +1932,8 @@ fi
 # _LT_AC_TAGCONFIG
 # ----------------
 AC_DEFUN([_LT_AC_TAGCONFIG],
-[AC_ARG_WITH([tags],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_ARG_WITH([tags],
     [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
         [include additional configurations @<:@automatic@:>@])],
     [tagnames="$withval"])
@@ -2045,7 +2194,7 @@ m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
 
 # AC_PATH_TOOL_PREFIX
 # -------------------
-# find a file program which can recognise shared library
+# find a file program which can recognize shared library
 AC_DEFUN([AC_PATH_TOOL_PREFIX],
 [AC_REQUIRE([AC_PROG_EGREP])dnl
 AC_MSG_CHECKING([for $1])
@@ -2108,7 +2257,7 @@ fi
 
 # AC_PATH_MAGIC
 # -------------
-# find a file program which can recognise a shared library
+# find a file program which can recognize a shared library
 AC_DEFUN([AC_PATH_MAGIC],
 [AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
 if test -z "$lt_cv_path_MAGIC_CMD"; then
@@ -2255,7 +2404,7 @@ esac
 # how to check for library dependencies
 #  -- PORTME fill in with the dynamic library characteristics
 AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
-[AC_CACHE_CHECK([how to recognise dependent libraries],
+[AC_CACHE_CHECK([how to recognize dependent libraries],
 lt_cv_deplibs_check_method,
 [lt_cv_file_magic_cmd='$MAGIC_CMD'
 lt_cv_file_magic_test_file=
@@ -2272,7 +2421,7 @@ lt_cv_deplibs_check_method='unknown'
 # whether `pass_all' will *always* work, you probably want this one.
 
 case $host_os in
-aix4* | aix5*)
+aix[[4-9]]*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -2294,9 +2443,15 @@ cygwin*)
 
 mingw* | pw32*)
   # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump'.
-  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  if ( file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
   ;;
 
 darwin* | rhapsody*)
@@ -2341,7 +2496,7 @@ hpux10.20* | hpux11*)
   esac
   ;;
 
-interix3*)
+interix[[3-9]]*)
   # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
   lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
   ;;
@@ -2391,6 +2546,10 @@ osf3* | osf4* | osf5*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
 solaris*)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -2443,7 +2602,7 @@ AC_DEFUN([AC_PROG_NM],
   lt_cv_path_NM="$NM"
 else
   lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then 
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
     lt_nm_to_check="$lt_nm_to_check nm"
   fi
   for lt_tmp_nm in $lt_nm_to_check; do
@@ -2659,10 +2818,10 @@ objext=o
 _LT_AC_TAGVAR(objext, $1)=$objext
 
 # Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;\n"
+lt_simple_compile_test_code="int some_variable = 0;"
 
 # Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}\n'
+lt_simple_link_test_code='int main(){return(0);}'
 
 _LT_AC_SYS_COMPILER
 
@@ -2698,7 +2857,7 @@ aix3*)
   fi
   ;;
 
-aix4* | aix5*)
+aix[[4-9]]*)
   if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
     test "$enable_shared" = yes && enable_static=no
   fi
@@ -2755,6 +2914,7 @@ _LT_AC_TAGVAR(postdep_objects, $1)=
 _LT_AC_TAGVAR(predeps, $1)=
 _LT_AC_TAGVAR(postdeps, $1)=
 _LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)=
 
 # Source file extension for C++ test sources.
 ac_ext=cpp
@@ -2764,10 +2924,10 @@ objext=o
 _LT_AC_TAGVAR(objext, $1)=$objext
 
 # Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;\n"
+lt_simple_compile_test_code="int some_variable = 0;"
 
 # Code to be used in simple link tests
-lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n'
+lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
 
 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 _LT_AC_SYS_COMPILER
@@ -2864,7 +3024,7 @@ case $host_os in
     # FIXME: insert proper C++ library support
     _LT_AC_TAGVAR(ld_shlibs, $1)=no
     ;;
-  aix4* | aix5*)
+  aix[[4-9]]*)
     if test "$host_cpu" = ia64; then
       # On IA64, the linker does run time linking by default, so we don't
       # have to do anything special.
@@ -2877,7 +3037,7 @@ case $host_os in
       # Test if we are trying to use run time linking or normal
       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
       # need to do runtime linking.
-      case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+      case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
        for ld_flag in $LDFLAGS; do
          case $ld_flag in
          *-brtl*)
@@ -2913,7 +3073,7 @@ case $host_os in
           strings "$collect2name" | grep resolve_lib_name >/dev/null
        then
          # We have reworked collect2
-         _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+         :
        else
          # We have old collect2
          _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
@@ -3023,59 +3183,31 @@ case $host_os in
     fi
   ;;
       darwin* | rhapsody*)
-        case $host_os in
-        rhapsody* | darwin1.[[012]])
-         _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
-         ;;
-       *) # Darwin 1.3 on
-         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-           _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-         else
-           case ${MACOSX_DEPLOYMENT_TARGET} in
-             10.[[012]])
-               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-               ;;
-             10.*)
-               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
-               ;;
-           esac
-         fi
-         ;;
-        esac
       _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
       _LT_AC_TAGVAR(hardcode_direct, $1)=no
       _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
       _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
       _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-
-    if test "$GXX" = yes ; then
-      lt_int_apple_cc_single_mod=no
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+      if test "$GXX" = yes ; then
       output_verbose_link_cmd='echo'
-      if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
-       lt_int_apple_cc_single_mod=yes
+      _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+      _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+      _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+      if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+        _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+        _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
       fi
-      if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-      else
-          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-        fi
-        _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-        # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-          if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-            _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          else
-            _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          fi
-            _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
       else
       case $cc_basename in
         xlc*)
          output_verbose_link_cmd='echo'
-          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
           _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
           # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           ;;
        *)
@@ -3158,9 +3290,7 @@ case $host_os in
       _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
 
       case $host_cpu in
-      hppa*64*|ia64*)
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
-        ;;
+      hppa*64*|ia64*) ;;
       *)
        _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
         ;;
@@ -3228,7 +3358,7 @@ case $host_os in
        ;;
     esac
     ;;
-  interix3*)
+  interix[[3-9]]*)
     _LT_AC_TAGVAR(hardcode_direct, $1)=no
     _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
     _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
@@ -3320,7 +3450,7 @@ case $host_os in
        _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
        _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
        ;;
-      pgCC*)
+      pgCC* | pgcpp*)
         # Portland Group C++ compiler
        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
        _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
@@ -3348,6 +3478,29 @@ case $host_os in
        # dependencies.
        output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
        ;;
+      *)
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)
+         # Sun C++ 5.9
+         _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+         _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+         _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+
+         # Not sure whether something based on
+         # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+         # would be better.
+         output_verbose_link_cmd='echo'
+
+         # Archives containing C++ object files must be created using
+         # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+         # necessary to make sure instantiated templates are included
+         # in the archive.
+         _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+         ;;
+       esac
+       ;;
     esac
     ;;
   lynxos*)
@@ -3386,16 +3539,20 @@ case $host_os in
     _LT_AC_TAGVAR(ld_shlibs, $1)=no
     ;;
   openbsd*)
-    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-    if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
-      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    if test -f /usr/libexec/ld.so; then
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+       _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+       _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      fi
+      output_verbose_link_cmd='echo'
+    else
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
     fi
-    output_verbose_link_cmd='echo'
     ;;
   osf3*)
     case $cc_basename in
@@ -3557,15 +3714,10 @@ case $host_os in
        case $host_os in
          solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
          *)
-           # The C++ compiler is used as linker so we must use $wl
-           # flag to pass the commands to the underlying system
-           # linker. We must also pass each convience library through
-           # to the system linker between allextract/defaultextract.
-           # The C++ compiler will combine linker options so we
-           # cannot just pass the convience library names through
-           # without $wl.
+           # The compiler driver will combine and reorder linker options,
+           # but understands `-z linker_flag'.
            # Supported since Solaris 2.6 (maybe 2.5.1?)
-           _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+           _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
            ;;
        esac
        _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
@@ -3612,6 +3764,12 @@ case $host_os in
          fi
 
          _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+         case $host_os in
+         solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+         *)
+           _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+           ;;
+         esac
        fi
        ;;
     esac
@@ -3727,7 +3885,8 @@ lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
 # compiler output when linking a shared library.
 # Parse the compiler output and extract the necessary
 # objects, libraries and library flags.
-AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
 dnl we can't use the lt_simple_compile_test_code here,
 dnl because it contains code intended for an executable,
 dnl not a library.  It's possible we should let each
@@ -3852,10 +4011,15 @@ fi
 
 $rm -f confest.$objext
 
+_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+  _LT_AC_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_AC_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+
 # PORTME: override above test on systems where it is broken
 ifelse([$1],[CXX],
 [case $host_os in
-interix3*)
+interix[[3-9]]*)
   # Interix 3.5 installs completely hosed .la files for C++, so rather than
   # hack all around it, let's just trust "g++" to DTRT.
   _LT_AC_TAGVAR(predep_objects,$1)=
@@ -3863,19 +4027,51 @@ interix3*)
   _LT_AC_TAGVAR(postdeps,$1)=
   ;;
 
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+    #
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
 solaris*)
   case $cc_basename in
   CC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
     # Adding this requires a known-good setup of shared libraries for
     # Sun compiler versions before 5.6, else PIC objects from an old
     # archive will be linked into the output, leading to subtle bugs.
-    _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
+    if test "$solaris_use_stlport4" != yes; then
+      _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+    fi
     ;;
   esac
   ;;
 esac
 ])
-
 case " $_LT_AC_TAGVAR(postdeps, $1) " in
 *" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
 esac
@@ -3918,10 +4114,17 @@ objext=o
 _LT_AC_TAGVAR(objext, $1)=$objext
 
 # Code to be used in simple compile tests
-lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
 
 # Code to be used in simple link tests
-lt_simple_link_test_code="      program t\n      end\n"
+lt_simple_link_test_code="\
+      program t
+      end
+"
 
 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 _LT_AC_SYS_COMPILER
@@ -3953,7 +4156,7 @@ aix3*)
     postinstall_cmds='$RANLIB $lib'
   fi
   ;;
-aix4* | aix5*)
+aix[[4-9]]*)
   if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
     test "$enable_shared" = yes && enable_static=no
   fi
@@ -4000,10 +4203,10 @@ objext=o
 _LT_AC_TAGVAR(objext, $1)=$objext
 
 # Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}\n"
+lt_simple_compile_test_code="class foo {}"
 
 # Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
 
 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 _LT_AC_SYS_COMPILER
@@ -4056,7 +4259,7 @@ objext=o
 _LT_AC_TAGVAR(objext, $1)=$objext
 
 # Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
 
 # Code to be used in simple link tests
 lt_simple_link_test_code="$lt_simple_compile_test_code"
@@ -4130,6 +4333,7 @@ if test -f "$ltmain"; then
     _LT_AC_TAGVAR(predeps, $1) \
     _LT_AC_TAGVAR(postdeps, $1) \
     _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+    _LT_AC_TAGVAR(compiler_lib_search_dirs, $1) \
     _LT_AC_TAGVAR(archive_cmds, $1) \
     _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
     _LT_AC_TAGVAR(postinstall_cmds, $1) \
@@ -4145,6 +4349,7 @@ if test -f "$ltmain"; then
     _LT_AC_TAGVAR(module_cmds, $1) \
     _LT_AC_TAGVAR(module_expsym_cmds, $1) \
     _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+    _LT_AC_TAGVAR(fix_srcfile_path, $1) \
     _LT_AC_TAGVAR(exclude_expsyms, $1) \
     _LT_AC_TAGVAR(include_expsyms, $1); do
 
@@ -4191,7 +4396,7 @@ ifelse([$1], [],
 # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
 # Free Software Foundation, Inc.
 #
 # This file is part of GNU Libtool:
@@ -4428,6 +4633,10 @@ predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
 # shared library.
 postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
 
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)
+
 # The library search path used internally by the compiler when linking
 # a shared library.
 compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
@@ -4516,7 +4725,7 @@ sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
 
 # Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+fix_srcfile_path=$lt_fix_srcfile_path
 
 # Set to yes if exported symbols are required.
 always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
@@ -4599,6 +4808,7 @@ fi
 # ---------------------------------
 AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
 [AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([LT_AC_PROG_SED])
 AC_REQUIRE([AC_PROG_NM])
 AC_REQUIRE([AC_OBJEXT])
 # Check for command to grab the raw symbol name followed by C symbol from nm.
@@ -4776,7 +4986,7 @@ EOF
     echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
     cat conftest.$ac_ext >&5
   fi
-  rm -f conftest* conftst*
+  rm -rf conftest* conftst*
 
   # Do not use the global_symbol_pipe unless it works.
   if test "$pipe_works" = yes; then
@@ -4825,13 +5035,16 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
       # like `-m68040'.
       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
       ;;
-    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
       # PIC is the default for these OSes.
       ;;
-    mingw* | os2* | pw32*)
+    mingw* | cygwin* | os2* | pw32*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+       [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
       ;;
     darwin* | rhapsody*)
       # PIC is the default on this platform
@@ -4842,7 +5055,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
       # DJGPP does not support shared libraries at all
       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
       ;;
-    interix3*)
+    interix[[3-9]]*)
       # Interix 3.x gcc -fpic/-fPIC options generate broken code.
       # Instead, we relocate shared libraries at runtime.
       ;;
@@ -4868,7 +5081,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
     esac
   else
     case $host_os in
-      aix4* | aix5*)
+      aix[[4-9]]*)
        # All AIX code is PIC.
        if test "$host_cpu" = ia64; then
          # AIX 5 now supports IA64 processor
@@ -4964,7 +5177,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
            _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
            _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
            ;;
-         pgCC*)
+         pgCC* | pgcpp*)
            # Portland Group C++ compiler.
            _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
            _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
@@ -4978,6 +5191,14 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
            _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
            ;;
          *)
+           case `$CC -V 2>&1 | sed 5q` in
+           *Sun\ C*)
+             # Sun C++ 5.9
+             _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+             _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+             _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+             ;;
+           esac
            ;;
        esac
        ;;
@@ -5098,14 +5319,17 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
       ;;
 
-    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
       # PIC is the default for these OSes.
       ;;
 
-    mingw* | pw32* | os2*)
+    mingw* | cygwin* | pw32* | os2*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+      m4_if([$1], [GCJ], [],
+       [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
       ;;
 
     darwin* | rhapsody*)
@@ -5114,7 +5338,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
       ;;
 
-    interix3*)
+    interix[[3-9]]*)
       # Interix 3.x gcc -fpic/-fPIC options generate broken code.
       # Instead, we relocate shared libraries at runtime.
       ;;
@@ -5172,10 +5396,11 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
        esac
        ;;
 
-    mingw* | pw32* | os2*)
+    mingw* | cygwin* | pw32* | os2*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      m4_if([$1], [GCJ], [],
+       [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
       ;;
 
     hpux9* | hpux10* | hpux11*)
@@ -5224,6 +5449,22 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
         # All Alpha code is PIC.
         _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
         ;;
+      *)
+        case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)
+         # Sun C 5.9
+         _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+         _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         ;;
+       *Sun\ F*)
+         # Sun Fortran 8.3 passes all unrecognized flags to the linker
+         _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+         _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+         _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=''
+         ;;
+       esac
+       ;;
       esac
       ;;
 
@@ -5233,6 +5474,10 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       ;;
 
+    rdos*)
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
     solaris*)
       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
@@ -5292,7 +5537,7 @@ AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
 #
 if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
   AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
-    _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+    _LT_AC_TAGVAR(lt_cv_prog_compiler_pic_works, $1),
     [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
     [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
      "" | " "*) ;;
@@ -5316,7 +5561,7 @@ esac
 #
 wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
 AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
-  _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+  _LT_AC_TAGVAR(lt_cv_prog_compiler_static_works, $1),
   $lt_tmp_static_flag,
   [],
   [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
@@ -5327,11 +5572,12 @@ AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
 # ------------------------------------
 # See if the linker supports building shared libraries.
 AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
-[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
 ifelse([$1],[CXX],[
   _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
   case $host_os in
-  aix4* | aix5*)
+  aix[[4-9]]*)
     # If we're using GNU nm, then we don't want the "-C" option.
     # -C means demangle to AIX nm, but means don't demangle with GNU nm
     if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
@@ -5344,7 +5590,7 @@ ifelse([$1],[CXX],[
     _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
   ;;
   cygwin* | mingw*)
-    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
   ;;
   linux* | k*bsd*-gnu)
     _LT_AC_TAGVAR(link_all_deplibs, $1)=no
@@ -5353,6 +5599,7 @@ ifelse([$1],[CXX],[
     _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
   ;;
   esac
+  _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
 ],[
   runpath_var=
   _LT_AC_TAGVAR(allow_undefined_flag, $1)=
@@ -5383,12 +5630,14 @@ ifelse([$1],[CXX],[
   # it will be wrapped by ` (' and `)$', so one must not match beginning or
   # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
   # as well as any symbol that contains `d'.
-  _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+  _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
   # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
   # platforms (ab)use it in PIC code, but their linkers get confused if
   # the symbol is explicitly referenced.  Since portable code cannot
   # rely on this symbol name, it's probably fine to never include it in
   # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
   extract_expsyms_cmds=
   # Just being paranoid about ensuring that cc_basename is set.
   _LT_CC_BASENAME([$compiler])
@@ -5438,7 +5687,7 @@ ifelse([$1],[CXX],[
 
     # See if GNU ld supports shared libraries.
     case $host_os in
-    aix3* | aix4* | aix5*)
+    aix[[3-9]]*)
       # On AIX/PPC, the GNU linker is very broken
       if test "$host_cpu" != ia64; then
        _LT_AC_TAGVAR(ld_shlibs, $1)=no
@@ -5486,7 +5735,7 @@ EOF
       _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
       _LT_AC_TAGVAR(always_export_symbols, $1)=no
       _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
-      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
 
       if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
@@ -5504,7 +5753,7 @@ EOF
       fi
       ;;
 
-    interix3*)
+    interix[[3-9]]*)
       _LT_AC_TAGVAR(hardcode_direct, $1)=no
       _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
@@ -5519,7 +5768,7 @@ EOF
       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    linux* | k*bsd*-gnu)
+    gnu* | linux* | k*bsd*-gnu)
       if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
        tmp_addflag=
        case $cc_basename,$host_cpu in
@@ -5537,13 +5786,22 @@ EOF
        ifc* | ifort*)                  # Intel Fortran compiler
          tmp_addflag=' -nofor_main' ;;
        esac
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)                       # Sun C 5.9
+         _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_sharedflag='-G' ;;
+       *Sun\ F*)                       # Sun Fortran 8.3
+         tmp_sharedflag='-G' ;;
+       *)
+         tmp_sharedflag='-shared' ;;
+       esac
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
 
        if test $supports_anon_versioning = yes; then
          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
   cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
   $echo "local: *; };" >> $output_objdir/$libname.ver~
-         $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+         $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
        fi
        _LT_AC_TAGVAR(link_all_deplibs, $1)=no
       else
@@ -5584,7 +5842,7 @@ EOF
 
     sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
       case `$LD -v 2>&1` in
-        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) 
+        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
        _LT_AC_TAGVAR(ld_shlibs, $1)=no
        cat <<_LT_EOF 1>&2
 
@@ -5649,7 +5907,7 @@ _LT_EOF
       fi
       ;;
 
-    aix4* | aix5*)
+    aix[[4-9]]*)
       if test "$host_cpu" = ia64; then
        # On IA64, the linker does run time linking by default, so we don't
        # have to do anything special.
@@ -5669,7 +5927,7 @@ _LT_EOF
        # Test if we are trying to use run time linking or normal
        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
        # need to do runtime linking.
-       case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+       case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
          for ld_flag in $LDFLAGS; do
          if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
            aix_use_runtimelinking=yes
@@ -5703,7 +5961,7 @@ _LT_EOF
           strings "$collect2name" | grep resolve_lib_name >/dev/null
          then
          # We have reworked collect2
-         _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+         :
          else
          # We have old collect2
          _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
@@ -5796,7 +6054,7 @@ _LT_EOF
       # The linker will automatically build a .lib file if we build a DLL.
       _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
       # FIXME: Should let the user specify the lib program.
-      _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
       _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
       _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
       ;;
@@ -5829,19 +6087,18 @@ _LT_EOF
       _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
     if test "$GCC" = yes ; then
        output_verbose_link_cmd='echo'
-        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-      _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-      _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+        _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+        _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+        _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
     else
       case $cc_basename in
         xlc*)
          output_verbose_link_cmd='echo'
-         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
          _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
           # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           ;;
        *)
@@ -6003,24 +6260,28 @@ _LT_EOF
       ;;
 
     openbsd*)
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-       _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      if test -f /usr/libexec/ld.so; then
+       _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+       _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+       if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+         _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+         _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+       else
+         case $host_os in
+          openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+            _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+            _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+            ;;
+          *)
+            _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+            _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+            ;;
+         esac
+        fi
       else
-       case $host_os in
-        openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
-          _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-          _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
-          ;;
-        *)
-          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-          _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
-          ;;
-       esac
+       _LT_AC_TAGVAR(ld_shlibs, $1)=no
       fi
       ;;
 
@@ -6079,17 +6340,16 @@ _LT_EOF
       case $host_os in
       solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
       *)
-       # The compiler driver will combine linker options so we
-       # cannot just pass the convience library names through
-       # without $wl, iff we do not link with $LD.
-       # Luckily, gcc supports the same syntax we need for Sun Studio.
+       # The compiler driver will combine and reorder linker options,
+       # but understands `-z linker_flag'.  GCC discards it without `$wl',
+       # but is careful enough not to reorder.
        # Supported since Solaris 2.6 (maybe 2.5.1?)
-       case $wlarc in
-       '')
-         _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
-       *)
-         _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
-       esac ;;
+       if test "$GCC" = yes; then
+         _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+       else
+         _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+       fi
+       ;;
       esac
       _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
       ;;
@@ -6146,7 +6406,7 @@ _LT_EOF
       fi
       ;;
 
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*)
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
       _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
       _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
       _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
@@ -6221,7 +6481,7 @@ x|xyes)
       # to ld, don't add -lc before -lgcc.
       AC_MSG_CHECKING([whether -lc should be explicitly linked in])
       $rm conftest*
-      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
       if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
         soname=conftest
@@ -6324,6 +6584,30 @@ AC_DEFUN([LT_AC_PROG_RC],
 [AC_CHECK_TOOL(RC, windres, no)
 ])
 
+
+# Cheap backport of AS_EXECUTABLE_P and required macros
+# from Autoconf 2.59; we should not use $as_executable_p directly.
+
+# _AS_TEST_PREPARE
+# ----------------
+m4_ifndef([_AS_TEST_PREPARE],
+[m4_defun([_AS_TEST_PREPARE],
+[if test -x / >/dev/null 2>&1; then
+  as_executable_p='test -x'
+else
+  as_executable_p='test -f'
+fi
+])])# _AS_TEST_PREPARE
+
+# AS_EXECUTABLE_P
+# ---------------
+# Check whether a file is executable.
+m4_ifndef([AS_EXECUTABLE_P],
+[m4_defun([AS_EXECUTABLE_P],
+[AS_REQUIRE([_AS_TEST_PREPARE])dnl
+$as_executable_p $1[]dnl
+])])# AS_EXECUTABLE_P
+
 # NOTE: This macro has been submitted for inclusion into   #
 #  GNU Autoconf as AC_PROG_SED.  When it is available in   #
 #  a released version of Autoconf we should remove this    #
@@ -6344,12 +6628,13 @@ do
   test -z "$as_dir" && as_dir=.
   for lt_ac_prog in sed gsed; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+      if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then
         lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
       fi
     done
   done
 done
+IFS=$as_save_IFS
 lt_ac_max=0
 lt_ac_count=0
 # Add /usr/xpg4/bin/sed as it is typically found on Solaris
@@ -6382,10 +6667,11 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
 done
 ])
 SED=$lt_cv_path_SED
+AC_SUBST([SED])
 AC_MSG_RESULT([$SED])
 ])
 
-# Copyright (C) 2002, 2003, 2005, 2006  Free Software Foundation, Inc.
+# Copyright (C) 2002, 2003, 2005, 2006, 2007  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -6400,7 +6686,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
 [am__api_version='1.10'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.10], [],
+m4_if([$1], [1.10.1], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -6416,8 +6702,10 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.10])dnl
-_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)])
+[AM_AUTOMAKE_VERSION([1.10.1])dnl
+m4_ifndef([AC_AUTOCONF_VERSION],
+  [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
@@ -6689,7 +6977,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
   # each Makefile.in and add a new line on top of each file to say so.
   # Grep'ing the whole file is not good either: AIX grep has a line
   # limit of 2048, but all sed's we know have understand at least 4000.
-  if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then
+  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
     dirpart=`AS_DIRNAME("$mf")`
   else
     continue
@@ -6749,13 +7037,13 @@ AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
 # Do all the work for Automake.                             -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
-# 2005, 2006 Free Software Foundation, Inc.
+# 2005, 2006, 2008 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 12
+# serial 13
 
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
@@ -6860,16 +7148,17 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJC],
 # our stamp files there.
 AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
 [# Compute $1's index in $config_headers.
+_am_arg=$1
 _am_stamp_count=1
 for _am_header in $config_headers :; do
   case $_am_header in
-    $1 | $1:* )
+    $_am_arg | $_am_arg:* )
       break ;;
     * )
       _am_stamp_count=`expr $_am_stamp_count + 1` ;;
   esac
 done
-echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
 # Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
 #
@@ -7141,7 +7430,7 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
-# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in.
+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
 # This macro is traced by Automake.
 AC_DEFUN([_AM_SUBST_NOTMAKE])
 
index d738ae4..e0e7510 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for mod_chxj 0.13.1-rc.
+# Generated by GNU Autoconf 2.61 for mod_chxj 0.13.0.
 #
 # Report bugs to <konn@users.sourceforge.jp>.
 #
@@ -728,8 +728,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='mod_chxj'
 PACKAGE_TARNAME='mod_chxj'
-PACKAGE_VERSION='0.13.0-rc'
-PACKAGE_STRING='mod_chxj 0.13.0-rc'
+PACKAGE_VERSION='0.13.0'
+PACKAGE_STRING='mod_chxj 0.13.0'
 PACKAGE_BUGREPORT='konn@users.sourceforge.jp'
 
 ac_unique_file="src/mod_chxj.c"
@@ -856,12 +856,15 @@ AMDEPBACKSLASH
 CCDEPMODE
 am__fastdepCC_TRUE
 am__fastdepCC_FALSE
+SED
 GREP
 EGREP
 LN_S
 ECHO
 AR
 RANLIB
+DSYMUTIL
+NMEDIT
 CPP
 CXX
 CXXFLAGS
@@ -1408,7 +1411,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures mod_chxj 0.13.0-rc to adapt to many kinds of systems.
+\`configure' configures mod_chxj 0.13.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1479,7 +1482,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of mod_chxj 0.13.0-rc:";;
+     short | recursive ) echo "Configuration of mod_chxj 0.13.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1597,7 +1600,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-mod_chxj configure 0.13.0-rc
+mod_chxj configure 0.13.0
 generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1611,7 +1614,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by mod_chxj $as_me 0.13.0-rc, which was
+It was created by mod_chxj $as_me 0.13.0, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
@@ -2429,7 +2432,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE=mod_chxj
- VERSION=0.13.0-rc
+ VERSION=0.13.0
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3837,12 +3840,13 @@ do
   test -z "$as_dir" && as_dir=.
   for lt_ac_prog in sed gsed; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+      if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then
         lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
       fi
     done
   done
 done
+IFS=$as_save_IFS
 lt_ac_max=0
 lt_ac_count=0
 # Add /usr/xpg4/bin/sed as it is typically found on Solaris
@@ -3877,6 +3881,7 @@ done
 fi
 
 SED=$lt_cv_path_SED
+
 { echo "$as_me:$LINENO: result: $SED" >&5
 echo "${ECHO_T}$SED" >&6; }
 
@@ -4238,8 +4243,8 @@ else
 echo "${ECHO_T}no, using $LN_S" >&6; }
 fi
 
-{ echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
-echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5
+echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; }
 if test "${lt_cv_deplibs_check_method+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
@@ -4258,7 +4263,7 @@ lt_cv_deplibs_check_method='unknown'
 # whether `pass_all' will *always* work, you probably want this one.
 
 case $host_os in
-aix4* | aix5*)
+aix[4-9]*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -4280,9 +4285,15 @@ cygwin*)
 
 mingw* | pw32*)
   # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump'.
-  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  if ( file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
   ;;
 
 darwin* | rhapsody*)
@@ -4327,7 +4338,7 @@ hpux10.20* | hpux11*)
   esac
   ;;
 
-interix3*)
+interix[3-9]*)
   # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
   lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
   ;;
@@ -4377,6 +4388,10 @@ osf3* | osf4* | osf5*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
 solaris*)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -4464,7 +4479,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 4467 "configure"' > conftest.$ac_ext
+  echo '#line 4482 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -4499,7 +4514,8 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
-x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
@@ -4510,6 +4526,9 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
     case `/usr/bin/file conftest.o` in
     *32-bit*)
       case $host in
+        x86_64-*kfreebsd*-gnu)
+          LD="${LD-ld} -m elf_i386_fbsd"
+          ;;
         x86_64-*linux*)
           LD="${LD-ld} -m elf_i386"
           ;;
@@ -4526,6 +4545,9 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
       ;;
     *64-bit*)
       case $host in
+        x86_64-*kfreebsd*-gnu)
+          LD="${LD-ld} -m elf_x86_64_fbsd"
+          ;;
         x86_64-*linux*)
           LD="${LD-ld} -m elf_x86_64"
           ;;
@@ -4629,7 +4651,11 @@ sparc*-*solaris*)
     *64-bit*)
       case $lt_cv_prog_gnu_ld in
       yes*) LD="${LD-ld} -m elf64_sparc" ;;
-      *)    LD="${LD-ld} -64" ;;
+      *)
+        if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+         LD="${LD-ld} -64"
+       fi
+       ;;
       esac
       ;;
     esac
@@ -6231,7 +6257,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 # Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
-
 # find the maximum length of command line arguments
 { echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
 echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; }
@@ -6318,24 +6343,27 @@ else
     fi
     ;;
   *)
-    # If test is not a shell built-in, we'll probably end up computing a
-    # maximum length that is only half of the actual maximum length, but
-    # we can't tell.
-    SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-    while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
               = "XX$teststring") >/dev/null 2>&1 &&
-           new_result=`expr "X$teststring" : ".*" 2>&1` &&
-           lt_cv_sys_max_cmd_len=$new_result &&
-           test $i != 17 # 1/2 MB should be enough
-    do
-      i=`expr $i + 1`
-      teststring=$teststring$teststring
-    done
-    teststring=
-    # Add a significant safety factor because C++ compilers can tack on massive
-    # amounts of additional arguments before passing them to the linker.
-    # It appears as though 1/2 is a usable value.
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+             new_result=`expr "X$teststring" : ".*" 2>&1` &&
+             lt_cv_sys_max_cmd_len=$new_result &&
+             test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on massive
+      # amounts of additional arguments before passing them to the linker.
+      # It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
     ;;
   esac
 
@@ -6352,6 +6380,7 @@ fi
 
 
 
+
 # Check for command to grab the raw symbol name followed by C symbol from nm.
 { echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
 echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; }
@@ -6542,7 +6571,7 @@ EOF
     echo "$progname: failed program was:" >&5
     cat conftest.$ac_ext >&5
   fi
-  rm -f conftest* conftst*
+  rm -rf conftest* conftst*
 
   # Do not use the global_symbol_pipe unless it works.
   if test "$pipe_works" = yes; then
@@ -6940,7 +6969,7 @@ test -z "$STRIP" && STRIP=:
 test -z "$ac_objext" && ac_objext=o
 
 # Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
 old_postinstall_cmds='chmod 644 $oldlib'
 old_postuninstall_cmds=
 
@@ -7102,6 +7131,318 @@ fi
   ;;
 esac
 
+
+  case $host_os in
+    rhapsody* | darwin*)
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_DSYMUTIL+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$DSYMUTIL"; then
+  ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+  { echo "$as_me:$LINENO: result: $DSYMUTIL" >&5
+echo "${ECHO_T}$DSYMUTIL" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+  ac_ct_DSYMUTIL=$DSYMUTIL
+  # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_DSYMUTIL"; then
+  ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+  { echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5
+echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  if test "x$ac_ct_DSYMUTIL" = x; then
+    DSYMUTIL=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    DSYMUTIL=$ac_ct_DSYMUTIL
+  fi
+else
+  DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+    if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_NMEDIT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$NMEDIT"; then
+  ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+  { echo "$as_me:$LINENO: result: $NMEDIT" >&5
+echo "${ECHO_T}$NMEDIT" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+  ac_ct_NMEDIT=$NMEDIT
+  # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_NMEDIT"; then
+  ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_NMEDIT="nmedit"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+  { echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5
+echo "${ECHO_T}$ac_ct_NMEDIT" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  if test "x$ac_ct_NMEDIT" = x; then
+    NMEDIT=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    NMEDIT=$ac_ct_NMEDIT
+  fi
+else
+  NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+
+    { echo "$as_me:$LINENO: checking for -single_module linker flag" >&5
+echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6; }
+if test "${lt_cv_apple_cc_single_mod+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_apple_cc_single_mod=no
+      if test -z "${LT_MULTI_MODULE}"; then
+   # By default we will add the -single_module flag. You can override
+   # by either setting the environment variable LT_MULTI_MODULE
+   # non-empty at configure time, or by adding -multi_module to the
+   # link flags.
+   echo "int foo(void){return 1;}" > conftest.c
+   $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+     -dynamiclib ${wl}-single_module conftest.c
+   if test -f libconftest.dylib; then
+     lt_cv_apple_cc_single_mod=yes
+     rm -rf libconftest.dylib*
+   fi
+   rm conftest.c
+      fi
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5
+echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6; }
+    { echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5
+echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6; }
+if test "${lt_cv_ld_exported_symbols_list+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_ld_exported_symbols_list=no
+      save_LDFLAGS=$LDFLAGS
+      echo "_main" > conftest.sym
+      LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  lt_cv_ld_exported_symbols_list=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       lt_cv_ld_exported_symbols_list=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5
+echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6; }
+    case $host_os in
+    rhapsody* | darwin1.[0123])
+      _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+    darwin1.*)
+     _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+    darwin*)
+      # if running on 10.5 or later, the deployment target defaults
+      # to the OS version, if on x86, and 10.4, the deployment
+      # target defaults to 10.4. Don't you love it?
+      case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+   10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+     _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+   10.[012]*)
+     _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+   10.*)
+     _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+      esac
+    ;;
+  esac
+    if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+      _lt_dar_single_mod='$single_module'
+    fi
+    if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+      _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+    else
+      _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}"
+    fi
+    if test "$DSYMUTIL" != ":"; then
+      _lt_dsymutil="~$DSYMUTIL \$lib || :"
+    else
+      _lt_dsymutil=
+    fi
+    ;;
+  esac
+
+
 enable_dlopen=no
 enable_win32_dll=no
 
@@ -7140,10 +7481,10 @@ objext=o
 objext=$objext
 
 # Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;\n"
+lt_simple_compile_test_code="int some_variable = 0;"
 
 # Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}\n'
+lt_simple_link_test_code='int main(){return(0);}'
 
 
 # If no C compiler was specified, use CC.
@@ -7158,16 +7499,16 @@ compiler=$CC
 
 # save warnings/boilerplate of simple test code
 ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
 eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_compiler_boilerplate=`cat conftest.err`
 $rm conftest*
 
 ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
 eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_linker_boilerplate=`cat conftest.err`
-$rm conftest*
+$rm -r conftest*
 
 
 
@@ -7184,7 +7525,7 @@ if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
 else
   lt_cv_prog_compiler_rtti_exceptions=no
   ac_outfile=conftest.$ac_objext
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
    lt_compiler_flag="-fno-rtti -fno-exceptions"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
@@ -7195,11 +7536,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7198: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7539: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7202: \$? = $ac_status" >&5
+   echo "$as_me:7543: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -7250,13 +7591,15 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
       lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
       ;;
 
-    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
       # PIC is the default for these OSes.
       ;;
 
-    mingw* | pw32* | os2*)
+    mingw* | cygwin* | pw32* | os2*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
       lt_prog_compiler_pic='-DDLL_EXPORT'
       ;;
 
@@ -7266,7 +7609,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
       lt_prog_compiler_pic='-fno-common'
       ;;
 
-    interix3*)
+    interix[3-9]*)
       # Interix 3.x gcc -fpic/-fPIC options generate broken code.
       # Instead, we relocate shared libraries at runtime.
       ;;
@@ -7324,7 +7667,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
        esac
        ;;
 
-    mingw* | pw32* | os2*)
+    mingw* | cygwin* | pw32* | os2*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
       lt_prog_compiler_pic='-DDLL_EXPORT'
@@ -7376,6 +7719,22 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
         # All Alpha code is PIC.
         lt_prog_compiler_static='-non_shared'
         ;;
+      *)
+        case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)
+         # Sun C 5.9
+         lt_prog_compiler_pic='-KPIC'
+         lt_prog_compiler_static='-Bstatic'
+         lt_prog_compiler_wl='-Wl,'
+         ;;
+       *Sun\ F*)
+         # Sun Fortran 8.3 passes all unrecognized flags to the linker
+         lt_prog_compiler_pic='-KPIC'
+         lt_prog_compiler_static='-Bstatic'
+         lt_prog_compiler_wl=''
+         ;;
+       esac
+       ;;
       esac
       ;;
 
@@ -7385,6 +7744,10 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
       lt_prog_compiler_static='-non_shared'
       ;;
 
+    rdos*)
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
     solaris*)
       lt_prog_compiler_pic='-KPIC'
       lt_prog_compiler_static='-Bstatic'
@@ -7447,12 +7810,12 @@ if test -n "$lt_prog_compiler_pic"; then
 
 { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_pic_works+set}" = set; then
+if test "${lt_cv_prog_compiler_pic_works+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  lt_prog_compiler_pic_works=no
+  lt_cv_prog_compiler_pic_works=no
   ac_outfile=conftest.$ac_objext
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
    lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
@@ -7463,27 +7826,27 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7466: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7829: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7470: \$? = $ac_status" >&5
+   echo "$as_me:7833: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
      $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_prog_compiler_pic_works=yes
+       lt_cv_prog_compiler_pic_works=yes
      fi
    fi
    $rm conftest*
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; }
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6; }
 
-if test x"$lt_prog_compiler_pic_works" = xyes; then
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
     case $lt_prog_compiler_pic in
      "" | " "*) ;;
      *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
@@ -7510,13 +7873,13 @@ esac
 wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
 { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_static_works+set}" = set; then
+if test "${lt_cv_prog_compiler_static_works+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  lt_prog_compiler_static_works=no
+  lt_cv_prog_compiler_static_works=no
    save_LDFLAGS="$LDFLAGS"
    LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
      # The linker can only warn and ignore the option if not recognized
      # So say no if there are warnings
@@ -7526,20 +7889,20 @@ else
        $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
        $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
        if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_prog_compiler_static_works=yes
+         lt_cv_prog_compiler_static_works=yes
        fi
      else
-       lt_prog_compiler_static_works=yes
+       lt_cv_prog_compiler_static_works=yes
      fi
    fi
-   $rm conftest*
+   $rm -r conftest*
    LDFLAGS="$save_LDFLAGS"
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
-echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; }
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6; }
 
-if test x"$lt_prog_compiler_static_works" = xyes; then
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
     :
 else
     lt_prog_compiler_static=
@@ -7556,7 +7919,7 @@ else
    mkdir conftest
    cd conftest
    mkdir out
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
    lt_compiler_flag="-o out/conftest2.$ac_objext"
    # Insert the option either (1) after the last *FLAGS variable, or
@@ -7567,11 +7930,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7570: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7933: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:7574: \$? = $ac_status" >&5
+   echo "$as_me:7937: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -7651,12 +8014,13 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar
   # it will be wrapped by ` (' and `)$', so one must not match beginning or
   # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
   # as well as any symbol that contains `d'.
-  exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+  exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
   # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
   # platforms (ab)use it in PIC code, but their linkers get confused if
   # the symbol is explicitly referenced.  Since portable code cannot
   # rely on this symbol name, it's probably fine to never include it in
   # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
   extract_expsyms_cmds=
   # Just being paranoid about ensuring that cc_basename is set.
   for cc_temp in $compiler""; do
@@ -7715,7 +8079,7 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
 
     # See if GNU ld supports shared libraries.
     case $host_os in
-    aix3* | aix4* | aix5*)
+    aix[3-9]*)
       # On AIX/PPC, the GNU linker is very broken
       if test "$host_cpu" != ia64; then
        ld_shlibs=no
@@ -7763,7 +8127,7 @@ EOF
       allow_undefined_flag=unsupported
       always_export_symbols=no
       enable_shared_with_static_runtimes=yes
-      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
 
       if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
         archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
@@ -7781,7 +8145,7 @@ EOF
       fi
       ;;
 
-    interix3*)
+    interix[3-9]*)
       hardcode_direct=no
       hardcode_shlibpath_var=no
       hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
@@ -7796,7 +8160,7 @@ EOF
       archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    linux* | k*bsd*-gnu)
+    gnu* | linux* | k*bsd*-gnu)
       if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
        tmp_addflag=
        case $cc_basename,$host_cpu in
@@ -7814,13 +8178,22 @@ EOF
        ifc* | ifort*)                  # Intel Fortran compiler
          tmp_addflag=' -nofor_main' ;;
        esac
-       archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)                       # Sun C 5.9
+         whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_sharedflag='-G' ;;
+       *Sun\ F*)                       # Sun Fortran 8.3
+         tmp_sharedflag='-G' ;;
+       *)
+         tmp_sharedflag='-shared' ;;
+       esac
+       archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
 
        if test $supports_anon_versioning = yes; then
          archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
   cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
   $echo "local: *; };" >> $output_objdir/$libname.ver~
-         $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+         $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
        fi
        link_all_deplibs=no
       else
@@ -7926,7 +8299,7 @@ _LT_EOF
       fi
       ;;
 
-    aix4* | aix5*)
+    aix[4-9]*)
       if test "$host_cpu" = ia64; then
        # On IA64, the linker does run time linking by default, so we don't
        # have to do anything special.
@@ -7946,7 +8319,7 @@ _LT_EOF
        # Test if we are trying to use run time linking or normal
        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
        # need to do runtime linking.
-       case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+       case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
          for ld_flag in $LDFLAGS; do
          if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
            aix_use_runtimelinking=yes
@@ -7980,7 +8353,7 @@ _LT_EOF
           strings "$collect2name" | grep resolve_lib_name >/dev/null
          then
          # We have reworked collect2
-         hardcode_direct=yes
+         :
          else
          # We have old collect2
          hardcode_direct=unsupported
@@ -8054,11 +8427,18 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
        } && test -s conftest$ac_exeext &&
        $as_test_x conftest$ac_exeext; then
 
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+       /^0/ {
+           s/^0  *\(.*\)$/\1/
+           p
+       }
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 # Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`; fi
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -8113,11 +8493,18 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
        } && test -s conftest$ac_exeext &&
        $as_test_x conftest$ac_exeext; then
 
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+       /^0/ {
+           s/^0  *\(.*\)$/\1/
+           p
+       }
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 # Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`; fi
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -8171,7 +8558,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       # The linker will automatically build a .lib file if we build a DLL.
       old_archive_From_new_cmds='true'
       # FIXME: Should let the user specify the lib program.
-      old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
       fix_srcfile_path='`cygpath -w "$srcfile"`'
       enable_shared_with_static_runtimes=yes
       ;;
@@ -8204,19 +8591,18 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       link_all_deplibs=yes
     if test "$GCC" = yes ; then
        output_verbose_link_cmd='echo'
-        archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-      module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-      archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-      module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+        module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+        archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+        module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
     else
       case $cc_basename in
         xlc*)
          output_verbose_link_cmd='echo'
-         archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
          module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
           # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-         archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+         archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           ;;
        *)
@@ -8378,24 +8764,28 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       ;;
 
     openbsd*)
-      hardcode_direct=yes
-      hardcode_shlibpath_var=no
-      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-       archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-       hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-       export_dynamic_flag_spec='${wl}-E'
+      if test -f /usr/libexec/ld.so; then
+       hardcode_direct=yes
+       hardcode_shlibpath_var=no
+       if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+         archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+         hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+         export_dynamic_flag_spec='${wl}-E'
+       else
+         case $host_os in
+          openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+            archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+            hardcode_libdir_flag_spec='-R$libdir'
+            ;;
+          *)
+            archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+            hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+            ;;
+         esac
+        fi
       else
-       case $host_os in
-        openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-          archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-          hardcode_libdir_flag_spec='-R$libdir'
-          ;;
-        *)
-          archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-          hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
-          ;;
-       esac
+       ld_shlibs=no
       fi
       ;;
 
@@ -8454,17 +8844,16 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       case $host_os in
       solaris2.[0-5] | solaris2.[0-5].*) ;;
       *)
-       # The compiler driver will combine linker options so we
-       # cannot just pass the convience library names through
-       # without $wl, iff we do not link with $LD.
-       # Luckily, gcc supports the same syntax we need for Sun Studio.
+       # The compiler driver will combine and reorder linker options,
+       # but understands `-z linker_flag'.  GCC discards it without `$wl',
+       # but is careful enough not to reorder.
        # Supported since Solaris 2.6 (maybe 2.5.1?)
-       case $wlarc in
-       '')
-         whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
-       *)
-         whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
-       esac ;;
+       if test "$GCC" = yes; then
+         whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+       else
+         whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+       fi
+       ;;
       esac
       link_all_deplibs=yes
       ;;
@@ -8521,7 +8910,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       fi
       ;;
 
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
       no_undefined_flag='${wl}-z,text'
       archive_cmds_need_lc=no
       hardcode_shlibpath_var=no
@@ -8598,7 +8987,7 @@ x|xyes)
       { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
       $rm conftest*
-      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
       if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
@@ -8656,17 +9045,55 @@ shlibpath_overrides_runpath=unknown
 version_type=none
 dynamic_linker="$host_os ld.so"
 sys_lib_dlsearch_path_spec="/lib /usr/lib"
+
 if test "$GCC" = yes; then
-  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+  case $host_os in
+    darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+    *) lt_awk_arg="/^libraries:/" ;;
+  esac
+  lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then
     # if the path contains ";" then we assume it to be the separator
     # otherwise default to the standard path separator (i.e. ":") - it is
     # assumed that no part of a normal pathname contains ";" but that should
     # okay in the real world where ";" in dirpaths is itself problematic.
-    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+    lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'`
   else
-    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+    lt_search_path_spec=`echo "$lt_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
   fi
+  # Ok, now we have the path, separated by spaces, we can step through it
+  # and add multilib dir if necessary.
+  lt_tmp_lt_search_path_spec=
+  lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+  for lt_sys_path in $lt_search_path_spec; do
+    if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+      lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+    else
+      test -d "$lt_sys_path" && \
+       lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+    fi
+  done
+  lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+  lt_foo="";
+  lt_count=0;
+  for (lt_i = NF; lt_i > 0; lt_i--) {
+    if ($lt_i != "" && $lt_i != ".") {
+      if ($lt_i == "..") {
+        lt_count++;
+      } else {
+        if (lt_count == 0) {
+          lt_foo="/" $lt_i lt_foo;
+        } else {
+          lt_count--;
+        }
+      }
+    }
+  }
+  if (lt_foo != "") { lt_freq[lt_foo]++; }
+  if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+  sys_lib_search_path_spec=`echo $lt_search_path_spec`
 else
   sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
 fi
@@ -8687,7 +9114,7 @@ aix3*)
   soname_spec='${libname}${release}${shared_ext}$major'
   ;;
 
-aix4* | aix5*)
+aix[4-9]*)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -8826,12 +9253,8 @@ darwin* | rhapsody*)
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
   shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-  if test "$GCC" = yes; then
-    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-  else
-    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-  fi
+
+  sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
   sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
   ;;
 
@@ -8885,7 +9308,7 @@ freebsd* | dragonfly*)
     shlibpath_overrides_runpath=no
     hardcode_into_libs=yes
     ;;
-  freebsd*) # from 4.6 on
+  *) # from 4.6 on, and DragonFly
     shlibpath_overrides_runpath=yes
     hardcode_into_libs=yes
     ;;
@@ -8948,7 +9371,7 @@ hpux9* | hpux10* | hpux11*)
   postinstall_cmds='chmod 555 $lib'
   ;;
 
-interix3*)
+interix[3-9]*)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -9019,7 +9442,7 @@ linux* | k*bsd*-gnu)
 
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,       ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[     ]*hwcap[        ]/d;s/[:,       ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
   fi
 
@@ -9125,6 +9548,10 @@ osf3* | osf4* | osf5*)
   sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
   ;;
 
+rdos*)
+  dynamic_linker=no
+  ;;
+
 solaris*)
   version_type=linux
   need_lib_prefix=no
@@ -9221,6 +9648,21 @@ esac
 echo "${ECHO_T}$dynamic_linker" >&6; }
 test "$dynamic_linker" = no && can_build_shared=no
 
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"
+fi
+
+sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"
+fi
+
+sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
 if test "$GCC" = yes; then
   variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
@@ -9278,6 +9720,7 @@ else
    darwin*)
        if test -n "$STRIP" ; then
          striplib="$STRIP -x"
+         old_striplib="$STRIP -S"
          { echo "$as_me:$LINENO: result: yes" >&5
 echo "${ECHO_T}yes" >&6; }
        else
@@ -9539,7 +9982,7 @@ fi
 { echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; }
 if test $ac_cv_lib_dld_shl_load = yes; then
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
 else
   { echo "$as_me:$LINENO: checking for dlopen" >&5
 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; }
@@ -9815,7 +10258,7 @@ fi
 { echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; }
 if test $ac_cv_lib_dld_dld_link = yes; then
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
 fi
 
 
@@ -9864,7 +10307,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 9867 "configure"
+#line 10310 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -9964,7 +10407,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 9967 "configure"
+#line 10410 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -10091,7 +10534,7 @@ aix3*)
   fi
   ;;
 
-aix4* | aix5*)
+aix[4-9]*)
   if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
     test "$enable_shared" = yes && enable_static=no
   fi
@@ -10147,6 +10590,7 @@ if test -f "$ltmain"; then
     predeps \
     postdeps \
     compiler_lib_search_path \
+    compiler_lib_search_dirs \
     archive_cmds \
     archive_expsym_cmds \
     postinstall_cmds \
@@ -10162,6 +10606,7 @@ if test -f "$ltmain"; then
     module_cmds \
     module_expsym_cmds \
     lt_cv_prog_compiler_c_o \
+    fix_srcfile_path \
     exclude_expsyms \
     include_expsyms; do
 
@@ -10206,7 +10651,7 @@ echo "$as_me: creating $ofile" >&6;}
 # Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
 # Free Software Foundation, Inc.
 #
 # This file is part of GNU Libtool:
@@ -10442,6 +10887,10 @@ predeps=$lt_predeps
 # shared library.
 postdeps=$lt_postdeps
 
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
+
 # The library search path used internally by the compiler when linking
 # a shared library.
 compiler_lib_search_path=$lt_compiler_lib_search_path
@@ -10530,7 +10979,7 @@ sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
 
 # Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$fix_srcfile_path"
+fix_srcfile_path=$lt_fix_srcfile_path
 
 # Set to yes if exported symbols are required.
 always_export_symbols=$always_export_symbols
@@ -10690,6 +11139,7 @@ postdep_objects_CXX=
 predeps_CXX=
 postdeps_CXX=
 compiler_lib_search_path_CXX=
+compiler_lib_search_dirs_CXX=
 
 # Source file extension for C++ test sources.
 ac_ext=cpp
@@ -10699,10 +11149,10 @@ objext=o
 objext_CXX=$objext
 
 # Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;\n"
+lt_simple_compile_test_code="int some_variable = 0;"
 
 # Code to be used in simple link tests
-lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
 
 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 
@@ -10718,16 +11168,16 @@ compiler=$CC
 
 # save warnings/boilerplate of simple test code
 ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
 eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_compiler_boilerplate=`cat conftest.err`
 $rm conftest*
 
 ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
 eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_linker_boilerplate=`cat conftest.err`
-$rm conftest*
+$rm -r conftest*
 
 
 # Allow CC to be a program name with arguments.
@@ -10934,7 +11384,7 @@ case $host_os in
     # FIXME: insert proper C++ library support
     ld_shlibs_CXX=no
     ;;
-  aix4* | aix5*)
+  aix[4-9]*)
     if test "$host_cpu" = ia64; then
       # On IA64, the linker does run time linking by default, so we don't
       # have to do anything special.
@@ -10947,7 +11397,7 @@ case $host_os in
       # Test if we are trying to use run time linking or normal
       # AIX style linking. If -brtl is somewhere in LDFLAGS, we
       # need to do runtime linking.
-      case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+      case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
        for ld_flag in $LDFLAGS; do
          case $ld_flag in
          *-brtl*)
@@ -10983,7 +11433,7 @@ case $host_os in
           strings "$collect2name" | grep resolve_lib_name >/dev/null
        then
          # We have reworked collect2
-         hardcode_direct_CXX=yes
+         :
        else
          # We have old collect2
          hardcode_direct_CXX=unsupported
@@ -11057,11 +11507,18 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
        } && test -s conftest$ac_exeext &&
        $as_test_x conftest$ac_exeext; then
 
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+       /^0/ {
+           s/^0  *\(.*\)$/\1/
+           p
+       }
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 # Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`; fi
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -11117,11 +11574,18 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
        } && test -s conftest$ac_exeext &&
        $as_test_x conftest$ac_exeext; then
 
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+       /^0/ {
+           s/^0  *\(.*\)$/\1/
+           p
+       }
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 # Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`; fi
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -11191,59 +11655,31 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
     fi
   ;;
       darwin* | rhapsody*)
-        case $host_os in
-        rhapsody* | darwin1.[012])
-         allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
-         ;;
-       *) # Darwin 1.3 on
-         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-           allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-         else
-           case ${MACOSX_DEPLOYMENT_TARGET} in
-             10.[012])
-               allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-               ;;
-             10.*)
-               allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
-               ;;
-           esac
-         fi
-         ;;
-        esac
       archive_cmds_need_lc_CXX=no
       hardcode_direct_CXX=no
       hardcode_automatic_CXX=yes
       hardcode_shlibpath_var_CXX=unsupported
       whole_archive_flag_spec_CXX=''
       link_all_deplibs_CXX=yes
-
-    if test "$GXX" = yes ; then
-      lt_int_apple_cc_single_mod=no
+      allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
+      if test "$GXX" = yes ; then
       output_verbose_link_cmd='echo'
-      if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
-       lt_int_apple_cc_single_mod=yes
+      archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+      module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+      archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+      module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+      if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+        archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+        archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
       fi
-      if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-       archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-      else
-          archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-        fi
-        module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-        # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-          if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
-            archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          else
-            archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          fi
-            module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
       else
       case $cc_basename in
         xlc*)
          output_verbose_link_cmd='echo'
-          archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+          archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
           module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
           # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-          archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           ;;
        *)
@@ -11326,9 +11762,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       hardcode_libdir_separator_CXX=:
 
       case $host_cpu in
-      hppa*64*|ia64*)
-       hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
-        ;;
+      hppa*64*|ia64*) ;;
       *)
        export_dynamic_flag_spec_CXX='${wl}-E'
         ;;
@@ -11396,7 +11830,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
        ;;
     esac
     ;;
-  interix3*)
+  interix[3-9]*)
     hardcode_direct_CXX=no
     hardcode_shlibpath_var_CXX=no
     hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
@@ -11488,7 +11922,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
        export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
        whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
        ;;
-      pgCC*)
+      pgCC* | pgcpp*)
         # Portland Group C++ compiler
        archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
        archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
@@ -11516,6 +11950,29 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
        # dependencies.
        output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
        ;;
+      *)
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)
+         # Sun C++ 5.9
+         no_undefined_flag_CXX=' -zdefs'
+         archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+         archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+         hardcode_libdir_flag_spec_CXX='-R$libdir'
+         whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+
+         # Not sure whether something based on
+         # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+         # would be better.
+         output_verbose_link_cmd='echo'
+
+         # Archives containing C++ object files must be created using
+         # "CC -xar", where "CC" is the Sun C++ compiler.  This is
+         # necessary to make sure instantiated templates are included
+         # in the archive.
+         old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+         ;;
+       esac
+       ;;
     esac
     ;;
   lynxos*)
@@ -11554,16 +12011,20 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
     ld_shlibs_CXX=no
     ;;
   openbsd*)
-    hardcode_direct_CXX=yes
-    hardcode_shlibpath_var_CXX=no
-    archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
-    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
-    if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
-      export_dynamic_flag_spec_CXX='${wl}-E'
-      whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    if test -f /usr/libexec/ld.so; then
+      hardcode_direct_CXX=yes
+      hardcode_shlibpath_var_CXX=no
+      archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+      hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+       archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+       export_dynamic_flag_spec_CXX='${wl}-E'
+       whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      fi
+      output_verbose_link_cmd='echo'
+    else
+      ld_shlibs_CXX=no
     fi
-    output_verbose_link_cmd='echo'
     ;;
   osf3*)
     case $cc_basename in
@@ -11725,15 +12186,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
        case $host_os in
          solaris2.[0-5] | solaris2.[0-5].*) ;;
          *)
-           # The C++ compiler is used as linker so we must use $wl
-           # flag to pass the commands to the underlying system
-           # linker. We must also pass each convience library through
-           # to the system linker between allextract/defaultextract.
-           # The C++ compiler will combine linker options so we
-           # cannot just pass the convience library names through
-           # without $wl.
+           # The compiler driver will combine and reorder linker options,
+           # but understands `-z linker_flag'.
            # Supported since Solaris 2.6 (maybe 2.5.1?)
-           whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+           whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
            ;;
        esac
        link_all_deplibs_CXX=yes
@@ -11780,6 +12236,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
          fi
 
          hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+         case $host_os in
+         solaris2.[0-5] | solaris2.[0-5].*) ;;
+         *)
+           whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+           ;;
+         esac
        fi
        ;;
     esac
@@ -11867,7 +12329,6 @@ test "$ld_shlibs_CXX" = no && can_build_shared=no
 GCC_CXX="$GXX"
 LD_CXX="$LD"
 
-
 cat > conftest.$ac_ext <<EOF
 class Foo
 {
 
 $rm -f confest.$objext
 
+compiler_lib_search_dirs_CXX=
+if test -n "$compiler_lib_search_path_CXX"; then
+  compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+
 # PORTME: override above test on systems where it is broken
 case $host_os in
-interix3*)
+interix[3-9]*)
   # Interix 3.5 installs completely hosed .la files for C++, so rather than
   # hack all around it, let's just trust "g++" to DTRT.
   predep_objects_CXX=
@@ -11979,19 +12445,51 @@ interix3*)
   postdeps_CXX=
   ;;
 
+linux*)
+  case `$CC -V 2>&1 | sed 5q` in
+  *Sun\ C*)
+    # Sun C++ 5.9
+    #
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+    if test "$solaris_use_stlport4" != yes; then
+      postdeps_CXX='-library=Cstd -library=Crun'
+    fi
+    ;;
+  esac
+  ;;
+
 solaris*)
   case $cc_basename in
   CC*)
+    # The more standards-conforming stlport4 library is
+    # incompatible with the Cstd library. Avoid specifying
+    # it if it's in CXXFLAGS. Ignore libCrun as
+    # -library=stlport4 depends on it.
+    case " $CXX $CXXFLAGS " in
+    *" -library=stlport4 "*)
+      solaris_use_stlport4=yes
+      ;;
+    esac
+
     # Adding this requires a known-good setup of shared libraries for
     # Sun compiler versions before 5.6, else PIC objects from an old
     # archive will be linked into the output, leading to subtle bugs.
-    postdeps_CXX='-lCstd -lCrun'
+    if test "$solaris_use_stlport4" != yes; then
+      postdeps_CXX='-library=Cstd -library=Crun'
+    fi
     ;;
   esac
   ;;
 esac
 
-
 case " $postdeps_CXX " in
 *" -lc "*) archive_cmds_need_lc_CXX=no ;;
 esac
@@ -12022,12 +12520,14 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
       # like `-m68040'.
       lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
       ;;
-    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
       # PIC is the default for these OSes.
       ;;
-    mingw* | os2* | pw32*)
+    mingw* | cygwin* | os2* | pw32*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
       lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
       ;;
     darwin* | rhapsody*)
@@ -12039,7 +12539,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
       # DJGPP does not support shared libraries at all
       lt_prog_compiler_pic_CXX=
       ;;
-    interix3*)
+    interix[3-9]*)
       # Interix 3.x gcc -fpic/-fPIC options generate broken code.
       # Instead, we relocate shared libraries at runtime.
       ;;
@@ -12065,7 +12565,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
     esac
   else
     case $host_os in
-      aix4* | aix5*)
+      aix[4-9]*)
        # All AIX code is PIC.
        if test "$host_cpu" = ia64; then
          # AIX 5 now supports IA64 processor
@@ -12161,7 +12661,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
            lt_prog_compiler_pic_CXX='-KPIC'
            lt_prog_compiler_static_CXX='-static'
            ;;
-         pgCC*)
+         pgCC* | pgcpp*)
            # Portland Group C++ compiler.
            lt_prog_compiler_wl_CXX='-Wl,'
            lt_prog_compiler_pic_CXX='-fpic'
@@ -12175,6 +12675,14 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
            lt_prog_compiler_static_CXX='-non_shared'
            ;;
          *)
+           case `$CC -V 2>&1 | sed 5q` in
+           *Sun\ C*)
+             # Sun C++ 5.9
+             lt_prog_compiler_pic_CXX='-KPIC'
+             lt_prog_compiler_static_CXX='-Bstatic'
+             lt_prog_compiler_wl_CXX='-Qoption ld '
+             ;;
+           esac
            ;;
        esac
        ;;
@@ -12284,12 +12792,12 @@ if test -n "$lt_prog_compiler_pic_CXX"; then
 
 { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  lt_prog_compiler_pic_works_CXX=no
+  lt_cv_prog_compiler_pic_works_CXX=no
   ac_outfile=conftest.$ac_objext
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
    lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
@@ -12300,27 +12808,27 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:12303: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:12811: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:12307: \$? = $ac_status" >&5
+   echo "$as_me:12815: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
      $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_prog_compiler_pic_works_CXX=yes
+       lt_cv_prog_compiler_pic_works_CXX=yes
      fi
    fi
    $rm conftest*
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; }
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_CXX" >&6; }
 
-if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
     case $lt_prog_compiler_pic_CXX in
      "" | " "*) ;;
      *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
@@ -12347,13 +12855,13 @@ esac
 wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
 { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_static_works_CXX+set}" = set; then
+if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  lt_prog_compiler_static_works_CXX=no
+  lt_cv_prog_compiler_static_works_CXX=no
    save_LDFLAGS="$LDFLAGS"
    LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
      # The linker can only warn and ignore the option if not recognized
      # So say no if there are warnings
@@ -12363,20 +12871,20 @@ else
        $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
        $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
        if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_prog_compiler_static_works_CXX=yes
+         lt_cv_prog_compiler_static_works_CXX=yes
        fi
      else
-       lt_prog_compiler_static_works_CXX=yes
+       lt_cv_prog_compiler_static_works_CXX=yes
      fi
    fi
-   $rm conftest*
+   $rm -r conftest*
    LDFLAGS="$save_LDFLAGS"
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5
-echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; }
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_static_works_CXX" >&6; }
 
-if test x"$lt_prog_compiler_static_works_CXX" = xyes; then
+if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
     :
 else
     lt_prog_compiler_static_CXX=
@@ -12393,7 +12901,7 @@ else
    mkdir conftest
    cd conftest
    mkdir out
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
    lt_compiler_flag="-o out/conftest2.$ac_objext"
    # Insert the option either (1) after the last *FLAGS variable, or
@@ -12404,11 +12912,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:12407: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:12915: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:12411: \$? = $ac_status" >&5
+   echo "$as_me:12919: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -12461,7 +12969,7 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar
 
   export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
   case $host_os in
-  aix4* | aix5*)
+  aix[4-9]*)
     # If we're using GNU nm, then we don't want the "-C" option.
     # -C means demangle to AIX nm, but means don't demangle with GNU nm
     if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
@@ -12474,7 +12982,7 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar
     export_symbols_cmds_CXX="$ltdll_cmds"
   ;;
   cygwin* | mingw*)
-    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
   ;;
   linux* | k*bsd*-gnu)
     link_all_deplibs_CXX=no
@@ -12483,6 +12991,7 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar
     export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
   ;;
   esac
+  exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
 
 { echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
 echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
@@ -12508,7 +13017,7 @@ x|xyes)
       { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
       $rm conftest*
-      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
       if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
@@ -12566,20 +13075,7 @@ shlibpath_overrides_runpath=unknown
 version_type=none
 dynamic_linker="$host_os ld.so"
 sys_lib_dlsearch_path_spec="/lib /usr/lib"
-if test "$GCC" = yes; then
-  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
+
 need_lib_prefix=unknown
 hardcode_into_libs=no
 
@@ -12597,7 +13093,7 @@ aix3*)
   soname_spec='${libname}${release}${shared_ext}$major'
   ;;
 
-aix4* | aix5*)
+aix[4-9]*)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -12736,12 +13232,7 @@ darwin* | rhapsody*)
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
   shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-  if test "$GCC" = yes; then
-    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-  else
-    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-  fi
+
   sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
   ;;
 
@@ -12795,7 +13286,7 @@ freebsd* | dragonfly*)
     shlibpath_overrides_runpath=no
     hardcode_into_libs=yes
     ;;
-  freebsd*) # from 4.6 on
+  *) # from 4.6 on, and DragonFly
     shlibpath_overrides_runpath=yes
     hardcode_into_libs=yes
     ;;
@@ -12858,7 +13349,7 @@ hpux9* | hpux10* | hpux11*)
   postinstall_cmds='chmod 555 $lib'
   ;;
 
-interix3*)
+interix[3-9]*)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -12929,7 +13420,7 @@ linux* | k*bsd*-gnu)
 
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,       ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[     ]*hwcap[        ]/d;s/[:,       ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
   fi
 
@@ -13035,6 +13526,10 @@ osf3* | osf4* | osf5*)
   sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
   ;;
 
+rdos*)
+  dynamic_linker=no
+  ;;
+
 solaris*)
   version_type=linux
   need_lib_prefix=no
@@ -13131,6 +13626,21 @@ esac
 echo "${ECHO_T}$dynamic_linker" >&6; }
 test "$dynamic_linker" = no && can_build_shared=no
 
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"
+fi
+
+sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"
+fi
+
+sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
 if test "$GCC" = yes; then
   variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
@@ -13214,6 +13724,7 @@ if test -f "$ltmain"; then
     predeps_CXX \
     postdeps_CXX \
     compiler_lib_search_path_CXX \
+    compiler_lib_search_dirs_CXX \
     archive_cmds_CXX \
     archive_expsym_cmds_CXX \
     postinstall_cmds_CXX \
@@ -13229,6 +13740,7 @@ if test -f "$ltmain"; then
     module_cmds_CXX \
     module_expsym_cmds_CXX \
     lt_cv_prog_compiler_c_o_CXX \
+    fix_srcfile_path_CXX \
     exclude_expsyms_CXX \
     include_expsyms_CXX; do
 
@@ -13461,6 +13973,10 @@ predeps=$lt_predeps_CXX
 # shared library.
 postdeps=$lt_postdeps_CXX
 
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
+
 # The library search path used internally by the compiler when linking
 # a shared library.
 compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
@@ -13549,7 +14065,7 @@ sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
 
 # Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$fix_srcfile_path_CXX"
+fix_srcfile_path=$lt_fix_srcfile_path
 
 # Set to yes if exported symbols are required.
 always_export_symbols=$always_export_symbols_CXX
@@ -13640,10 +14156,17 @@ objext=o
 objext_F77=$objext
 
 # Code to be used in simple compile tests
-lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+lt_simple_compile_test_code="\
+      subroutine t
+      return
+      end
+"
 
 # Code to be used in simple link tests
-lt_simple_link_test_code="      program t\n      end\n"
+lt_simple_link_test_code="\
+      program t
+      end
+"
 
 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 
@@ -13659,16 +14182,16 @@ compiler=$CC
 
 # save warnings/boilerplate of simple test code
 ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
 eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_compiler_boilerplate=`cat conftest.err`
 $rm conftest*
 
 ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
 eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_linker_boilerplate=`cat conftest.err`
-$rm conftest*
+$rm -r conftest*
 
 
 # Allow CC to be a program name with arguments.
@@ -13706,7 +14229,7 @@ aix3*)
     postinstall_cmds='$RANLIB $lib'
   fi
   ;;
-aix4* | aix5*)
+aix[4-9]*)
   if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
     test "$enable_shared" = yes && enable_static=no
   fi
@@ -13752,13 +14275,15 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
       lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
       ;;
 
-    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
       # PIC is the default for these OSes.
       ;;
 
-    mingw* | pw32* | os2*)
+    mingw* | cygwin* | pw32* | os2*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
       lt_prog_compiler_pic_F77='-DDLL_EXPORT'
       ;;
 
@@ -13768,7 +14293,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
       lt_prog_compiler_pic_F77='-fno-common'
       ;;
 
-    interix3*)
+    interix[3-9]*)
       # Interix 3.x gcc -fpic/-fPIC options generate broken code.
       # Instead, we relocate shared libraries at runtime.
       ;;
@@ -13826,7 +14351,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
        esac
        ;;
 
-    mingw* | pw32* | os2*)
+    mingw* | cygwin* | pw32* | os2*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
       lt_prog_compiler_pic_F77='-DDLL_EXPORT'
@@ -13878,6 +14403,22 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
         # All Alpha code is PIC.
         lt_prog_compiler_static_F77='-non_shared'
         ;;
+      *)
+        case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)
+         # Sun C 5.9
+         lt_prog_compiler_pic_F77='-KPIC'
+         lt_prog_compiler_static_F77='-Bstatic'
+         lt_prog_compiler_wl_F77='-Wl,'
+         ;;
+       *Sun\ F*)
+         # Sun Fortran 8.3 passes all unrecognized flags to the linker
+         lt_prog_compiler_pic_F77='-KPIC'
+         lt_prog_compiler_static_F77='-Bstatic'
+         lt_prog_compiler_wl_F77=''
+         ;;
+       esac
+       ;;
       esac
       ;;
 
@@ -13887,6 +14428,10 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
       lt_prog_compiler_static_F77='-non_shared'
       ;;
 
+    rdos*)
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
     solaris*)
       lt_prog_compiler_pic_F77='-KPIC'
       lt_prog_compiler_static_F77='-Bstatic'
@@ -13949,12 +14494,12 @@ if test -n "$lt_prog_compiler_pic_F77"; then
 
 { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  lt_prog_compiler_pic_works_F77=no
+  lt_cv_prog_compiler_pic_works_F77=no
   ac_outfile=conftest.$ac_objext
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
    lt_compiler_flag="$lt_prog_compiler_pic_F77"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
@@ -13965,27 +14510,27 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13968: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14513: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:13972: \$? = $ac_status" >&5
+   echo "$as_me:14517: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
      $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_prog_compiler_pic_works_F77=yes
+       lt_cv_prog_compiler_pic_works_F77=yes
      fi
    fi
    $rm conftest*
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; }
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_F77" >&6; }
 
-if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then
     case $lt_prog_compiler_pic_F77 in
      "" | " "*) ;;
      *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
@@ -14012,13 +14557,13 @@ esac
 wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
 { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_static_works_F77+set}" = set; then
+if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  lt_prog_compiler_static_works_F77=no
+  lt_cv_prog_compiler_static_works_F77=no
    save_LDFLAGS="$LDFLAGS"
    LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
      # The linker can only warn and ignore the option if not recognized
      # So say no if there are warnings
@@ -14028,20 +14573,20 @@ else
        $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
        $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
        if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_prog_compiler_static_works_F77=yes
+         lt_cv_prog_compiler_static_works_F77=yes
        fi
      else
-       lt_prog_compiler_static_works_F77=yes
+       lt_cv_prog_compiler_static_works_F77=yes
      fi
    fi
-   $rm conftest*
+   $rm -r conftest*
    LDFLAGS="$save_LDFLAGS"
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5
-echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; }
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_static_works_F77" >&6; }
 
-if test x"$lt_prog_compiler_static_works_F77" = xyes; then
+if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then
     :
 else
     lt_prog_compiler_static_F77=
@@ -14058,7 +14603,7 @@ else
    mkdir conftest
    cd conftest
    mkdir out
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
    lt_compiler_flag="-o out/conftest2.$ac_objext"
    # Insert the option either (1) after the last *FLAGS variable, or
@@ -14069,11 +14614,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14072: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14617: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:14076: \$? = $ac_status" >&5
+   echo "$as_me:14621: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -14153,12 +14698,13 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar
   # it will be wrapped by ` (' and `)$', so one must not match beginning or
   # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
   # as well as any symbol that contains `d'.
-  exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+  exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
   # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
   # platforms (ab)use it in PIC code, but their linkers get confused if
   # the symbol is explicitly referenced.  Since portable code cannot
   # rely on this symbol name, it's probably fine to never include it in
   # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
   extract_expsyms_cmds=
   # Just being paranoid about ensuring that cc_basename is set.
   for cc_temp in $compiler""; do
@@ -14217,7 +14763,7 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
 
     # See if GNU ld supports shared libraries.
     case $host_os in
-    aix3* | aix4* | aix5*)
+    aix[3-9]*)
       # On AIX/PPC, the GNU linker is very broken
       if test "$host_cpu" != ia64; then
        ld_shlibs_F77=no
@@ -14265,7 +14811,7 @@ EOF
       allow_undefined_flag_F77=unsupported
       always_export_symbols_F77=no
       enable_shared_with_static_runtimes_F77=yes
-      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
 
       if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
         archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
@@ -14283,7 +14829,7 @@ EOF
       fi
       ;;
 
-    interix3*)
+    interix[3-9]*)
       hardcode_direct_F77=no
       hardcode_shlibpath_var_F77=no
       hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
@@ -14298,7 +14844,7 @@ EOF
       archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    linux* | k*bsd*-gnu)
+    gnu* | linux* | k*bsd*-gnu)
       if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
        tmp_addflag=
        case $cc_basename,$host_cpu in
@@ -14316,13 +14862,22 @@ EOF
        ifc* | ifort*)                  # Intel Fortran compiler
          tmp_addflag=' -nofor_main' ;;
        esac
-       archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)                       # Sun C 5.9
+         whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_sharedflag='-G' ;;
+       *Sun\ F*)                       # Sun Fortran 8.3
+         tmp_sharedflag='-G' ;;
+       *)
+         tmp_sharedflag='-shared' ;;
+       esac
+       archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
 
        if test $supports_anon_versioning = yes; then
          archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
   cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
   $echo "local: *; };" >> $output_objdir/$libname.ver~
-         $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+         $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
        fi
        link_all_deplibs_F77=no
       else
@@ -14428,7 +14983,7 @@ _LT_EOF
       fi
       ;;
 
-    aix4* | aix5*)
+    aix[4-9]*)
       if test "$host_cpu" = ia64; then
        # On IA64, the linker does run time linking by default, so we don't
        # have to do anything special.
@@ -14448,7 +15003,7 @@ _LT_EOF
        # Test if we are trying to use run time linking or normal
        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
        # need to do runtime linking.
-       case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+       case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
          for ld_flag in $LDFLAGS; do
          if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
            aix_use_runtimelinking=yes
@@ -14482,7 +15037,7 @@ _LT_EOF
           strings "$collect2name" | grep resolve_lib_name >/dev/null
          then
          # We have reworked collect2
-         hardcode_direct_F77=yes
+         :
          else
          # We have old collect2
          hardcode_direct_F77=unsupported
@@ -14546,11 +15101,18 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
        } && test -s conftest$ac_exeext &&
        $as_test_x conftest$ac_exeext; then
 
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+       /^0/ {
+           s/^0  *\(.*\)$/\1/
+           p
+       }
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 # Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`; fi
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -14595,11 +15157,18 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
        } && test -s conftest$ac_exeext &&
        $as_test_x conftest$ac_exeext; then
 
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+       /^0/ {
+           s/^0  *\(.*\)$/\1/
+           p
+       }
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 # Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`; fi
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -14653,7 +15222,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       # The linker will automatically build a .lib file if we build a DLL.
       old_archive_From_new_cmds_F77='true'
       # FIXME: Should let the user specify the lib program.
-      old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs'
       fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
       enable_shared_with_static_runtimes_F77=yes
       ;;
@@ -14686,19 +15255,18 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       link_all_deplibs_F77=yes
     if test "$GCC" = yes ; then
        output_verbose_link_cmd='echo'
-        archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-      module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-      archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-      module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+        module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+        archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+        module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
     else
       case $cc_basename in
         xlc*)
          output_verbose_link_cmd='echo'
-         archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
          module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
           # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-         archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+         archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           ;;
        *)
@@ -14860,24 +15428,28 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       ;;
 
     openbsd*)
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-       archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-       hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-       export_dynamic_flag_spec_F77='${wl}-E'
+      if test -f /usr/libexec/ld.so; then
+       hardcode_direct_F77=yes
+       hardcode_shlibpath_var_F77=no
+       if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+         archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+         hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+         export_dynamic_flag_spec_F77='${wl}-E'
+       else
+         case $host_os in
+          openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+            archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+            hardcode_libdir_flag_spec_F77='-R$libdir'
+            ;;
+          *)
+            archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+            hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+            ;;
+         esac
+        fi
       else
-       case $host_os in
-        openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-          archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-          hardcode_libdir_flag_spec_F77='-R$libdir'
-          ;;
-        *)
-          archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-          hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-          ;;
-       esac
+       ld_shlibs_F77=no
       fi
       ;;
 
@@ -14936,17 +15508,16 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       case $host_os in
       solaris2.[0-5] | solaris2.[0-5].*) ;;
       *)
-       # The compiler driver will combine linker options so we
-       # cannot just pass the convience library names through
-       # without $wl, iff we do not link with $LD.
-       # Luckily, gcc supports the same syntax we need for Sun Studio.
+       # The compiler driver will combine and reorder linker options,
+       # but understands `-z linker_flag'.  GCC discards it without `$wl',
+       # but is careful enough not to reorder.
        # Supported since Solaris 2.6 (maybe 2.5.1?)
-       case $wlarc in
-       '')
-         whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
-       *)
-         whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
-       esac ;;
+       if test "$GCC" = yes; then
+         whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+       else
+         whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract'
+       fi
+       ;;
       esac
       link_all_deplibs_F77=yes
       ;;
@@ -15003,7 +15574,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       fi
       ;;
 
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
       no_undefined_flag_F77='${wl}-z,text'
       archive_cmds_need_lc_F77=no
       hardcode_shlibpath_var_F77=no
@@ -15080,7 +15651,7 @@ x|xyes)
       { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
       $rm conftest*
-      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
       if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
@@ -15138,20 +15709,7 @@ shlibpath_overrides_runpath=unknown
 version_type=none
 dynamic_linker="$host_os ld.so"
 sys_lib_dlsearch_path_spec="/lib /usr/lib"
-if test "$GCC" = yes; then
-  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
+
 need_lib_prefix=unknown
 hardcode_into_libs=no
 
@@ -15169,7 +15727,7 @@ aix3*)
   soname_spec='${libname}${release}${shared_ext}$major'
   ;;
 
-aix4* | aix5*)
+aix[4-9]*)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -15308,12 +15866,7 @@ darwin* | rhapsody*)
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
   shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-  if test "$GCC" = yes; then
-    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-  else
-    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-  fi
+
   sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
   ;;
 
@@ -15367,7 +15920,7 @@ freebsd* | dragonfly*)
     shlibpath_overrides_runpath=no
     hardcode_into_libs=yes
     ;;
-  freebsd*) # from 4.6 on
+  *) # from 4.6 on, and DragonFly
     shlibpath_overrides_runpath=yes
     hardcode_into_libs=yes
     ;;
@@ -15430,7 +15983,7 @@ hpux9* | hpux10* | hpux11*)
   postinstall_cmds='chmod 555 $lib'
   ;;
 
-interix3*)
+interix[3-9]*)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -15501,7 +16054,7 @@ linux* | k*bsd*-gnu)
 
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,       ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[     ]*hwcap[        ]/d;s/[:,       ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
   fi
 
@@ -15607,6 +16160,10 @@ osf3* | osf4* | osf5*)
   sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
   ;;
 
+rdos*)
+  dynamic_linker=no
+  ;;
+
 solaris*)
   version_type=linux
   need_lib_prefix=no
@@ -15703,6 +16260,21 @@ esac
 echo "${ECHO_T}$dynamic_linker" >&6; }
 test "$dynamic_linker" = no && can_build_shared=no
 
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"
+fi
+
+sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"
+fi
+
+sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
 if test "$GCC" = yes; then
   variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
@@ -15786,6 +16358,7 @@ if test -f "$ltmain"; then
     predeps_F77 \
     postdeps_F77 \
     compiler_lib_search_path_F77 \
+    compiler_lib_search_dirs_F77 \
     archive_cmds_F77 \
     archive_expsym_cmds_F77 \
     postinstall_cmds_F77 \
@@ -15801,6 +16374,7 @@ if test -f "$ltmain"; then
     module_cmds_F77 \
     module_expsym_cmds_F77 \
     lt_cv_prog_compiler_c_o_F77 \
+    fix_srcfile_path_F77 \
     exclude_expsyms_F77 \
     include_expsyms_F77; do
 
@@ -16033,6 +16607,10 @@ predeps=$lt_predeps_F77
 # shared library.
 postdeps=$lt_postdeps_F77
 
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77
+
 # The library search path used internally by the compiler when linking
 # a shared library.
 compiler_lib_search_path=$lt_compiler_lib_search_path_F77
@@ -16121,7 +16699,7 @@ sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
 
 # Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$fix_srcfile_path_F77"
+fix_srcfile_path=$lt_fix_srcfile_path
 
 # Set to yes if exported symbols are required.
 always_export_symbols=$always_export_symbols_F77
@@ -16179,10 +16757,10 @@ objext=o
 objext_GCJ=$objext
 
 # Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}\n"
+lt_simple_compile_test_code="class foo {}"
 
 # Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }'
 
 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 
@@ -16198,16 +16776,16 @@ compiler=$CC
 
 # save warnings/boilerplate of simple test code
 ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
 eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_compiler_boilerplate=`cat conftest.err`
 $rm conftest*
 
 ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
 eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_linker_boilerplate=`cat conftest.err`
-$rm conftest*
+$rm -r conftest*
 
 
 # Allow CC to be a program name with arguments.
@@ -16245,7 +16823,7 @@ if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
 else
   lt_cv_prog_compiler_rtti_exceptions=no
   ac_outfile=conftest.$ac_objext
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
    lt_compiler_flag="-fno-rtti -fno-exceptions"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
@@ -16256,11 +16834,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16259: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16837: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:16263: \$? = $ac_status" >&5
+   echo "$as_me:16841: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -16311,14 +16889,16 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
       lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
       ;;
 
-    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+    beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
       # PIC is the default for these OSes.
       ;;
 
-    mingw* | pw32* | os2*)
+    mingw* | cygwin* | pw32* | os2*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+      # Although the cygwin gcc ignores -fPIC, still need this for old-style
+      # (--disable-auto-import) libraries
+
       ;;
 
     darwin* | rhapsody*)
@@ -16327,7 +16907,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
       lt_prog_compiler_pic_GCJ='-fno-common'
       ;;
 
-    interix3*)
+    interix[3-9]*)
       # Interix 3.x gcc -fpic/-fPIC options generate broken code.
       # Instead, we relocate shared libraries at runtime.
       ;;
@@ -16385,10 +16965,10 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
        esac
        ;;
 
-    mingw* | pw32* | os2*)
+    mingw* | cygwin* | pw32* | os2*)
       # This hack is so that the source file can tell whether it is being
       # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+
       ;;
 
     hpux9* | hpux10* | hpux11*)
@@ -16437,6 +17017,22 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
         # All Alpha code is PIC.
         lt_prog_compiler_static_GCJ='-non_shared'
         ;;
+      *)
+        case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)
+         # Sun C 5.9
+         lt_prog_compiler_pic_GCJ='-KPIC'
+         lt_prog_compiler_static_GCJ='-Bstatic'
+         lt_prog_compiler_wl_GCJ='-Wl,'
+         ;;
+       *Sun\ F*)
+         # Sun Fortran 8.3 passes all unrecognized flags to the linker
+         lt_prog_compiler_pic_GCJ='-KPIC'
+         lt_prog_compiler_static_GCJ='-Bstatic'
+         lt_prog_compiler_wl_GCJ=''
+         ;;
+       esac
+       ;;
       esac
       ;;
 
@@ -16446,6 +17042,10 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
       lt_prog_compiler_static_GCJ='-non_shared'
       ;;
 
+    rdos*)
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
     solaris*)
       lt_prog_compiler_pic_GCJ='-KPIC'
       lt_prog_compiler_static_GCJ='-Bstatic'
@@ -16508,12 +17108,12 @@ if test -n "$lt_prog_compiler_pic_GCJ"; then
 
 { echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  lt_prog_compiler_pic_works_GCJ=no
+  lt_cv_prog_compiler_pic_works_GCJ=no
   ac_outfile=conftest.$ac_objext
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
    lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
    # Insert the option either (1) after the last *FLAGS variable, or
    # (2) before a word containing "conftest.", or (3) at the end.
@@ -16524,27 +17124,27 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16527: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:17127: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:16531: \$? = $ac_status" >&5
+   echo "$as_me:17131: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
      $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
      $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
      if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_prog_compiler_pic_works_GCJ=yes
+       lt_cv_prog_compiler_pic_works_GCJ=yes
      fi
    fi
    $rm conftest*
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; }
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_GCJ" >&6; }
 
-if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then
     case $lt_prog_compiler_pic_GCJ in
      "" | " "*) ;;
      *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
@@ -16571,13 +17171,13 @@ esac
 wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
 { echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then
+if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  lt_prog_compiler_static_works_GCJ=no
+  lt_cv_prog_compiler_static_works_GCJ=no
    save_LDFLAGS="$LDFLAGS"
    LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
-   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   echo "$lt_simple_link_test_code" > conftest.$ac_ext
    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
      # The linker can only warn and ignore the option if not recognized
      # So say no if there are warnings
@@ -16587,20 +17187,20 @@ else
        $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
        $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
        if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_prog_compiler_static_works_GCJ=yes
+         lt_cv_prog_compiler_static_works_GCJ=yes
        fi
      else
-       lt_prog_compiler_static_works_GCJ=yes
+       lt_cv_prog_compiler_static_works_GCJ=yes
      fi
    fi
-   $rm conftest*
+   $rm -r conftest*
    LDFLAGS="$save_LDFLAGS"
 
 fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5
-echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; }
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_static_works_GCJ" >&6; }
 
-if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then
+if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then
     :
 else
     lt_prog_compiler_static_GCJ=
@@ -16617,7 +17217,7 @@ else
    mkdir conftest
    cd conftest
    mkdir out
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
    lt_compiler_flag="-o out/conftest2.$ac_objext"
    # Insert the option either (1) after the last *FLAGS variable, or
@@ -16628,11 +17228,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16631: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:17231: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:16635: \$? = $ac_status" >&5
+   echo "$as_me:17235: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -16712,12 +17312,13 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar
   # it will be wrapped by ` (' and `)$', so one must not match beginning or
   # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
   # as well as any symbol that contains `d'.
-  exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
+  exclude_expsyms_GCJ='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
   # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
   # platforms (ab)use it in PIC code, but their linkers get confused if
   # the symbol is explicitly referenced.  Since portable code cannot
   # rely on this symbol name, it's probably fine to never include it in
   # preloaded symbol tables.
+  # Exclude shared library initialization/finalization symbols.
   extract_expsyms_cmds=
   # Just being paranoid about ensuring that cc_basename is set.
   for cc_temp in $compiler""; do
@@ -16776,7 +17377,7 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
 
     # See if GNU ld supports shared libraries.
     case $host_os in
-    aix3* | aix4* | aix5*)
+    aix[3-9]*)
       # On AIX/PPC, the GNU linker is very broken
       if test "$host_cpu" != ia64; then
        ld_shlibs_GCJ=no
@@ -16824,7 +17425,7 @@ EOF
       allow_undefined_flag_GCJ=unsupported
       always_export_symbols_GCJ=no
       enable_shared_with_static_runtimes_GCJ=yes
-      export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+      export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
 
       if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
         archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
@@ -16842,7 +17443,7 @@ EOF
       fi
       ;;
 
-    interix3*)
+    interix[3-9]*)
       hardcode_direct_GCJ=no
       hardcode_shlibpath_var_GCJ=no
       hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
@@ -16857,7 +17458,7 @@ EOF
       archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    linux* | k*bsd*-gnu)
+    gnu* | linux* | k*bsd*-gnu)
       if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
        tmp_addflag=
        case $cc_basename,$host_cpu in
@@ -16875,13 +17476,22 @@ EOF
        ifc* | ifort*)                  # Intel Fortran compiler
          tmp_addflag=' -nofor_main' ;;
        esac
-       archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+       case `$CC -V 2>&1 | sed 5q` in
+       *Sun\ C*)                       # Sun C 5.9
+         whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+         tmp_sharedflag='-G' ;;
+       *Sun\ F*)                       # Sun Fortran 8.3
+         tmp_sharedflag='-G' ;;
+       *)
+         tmp_sharedflag='-shared' ;;
+       esac
+       archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
 
        if test $supports_anon_versioning = yes; then
          archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
   cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
   $echo "local: *; };" >> $output_objdir/$libname.ver~
-         $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+         $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
        fi
        link_all_deplibs_GCJ=no
       else
@@ -16987,7 +17597,7 @@ _LT_EOF
       fi
       ;;
 
-    aix4* | aix5*)
+    aix[4-9]*)
       if test "$host_cpu" = ia64; then
        # On IA64, the linker does run time linking by default, so we don't
        # have to do anything special.
@@ -17007,7 +17617,7 @@ _LT_EOF
        # Test if we are trying to use run time linking or normal
        # AIX style linking. If -brtl is somewhere in LDFLAGS, we
        # need to do runtime linking.
-       case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+       case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
          for ld_flag in $LDFLAGS; do
          if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
            aix_use_runtimelinking=yes
@@ -17041,7 +17651,7 @@ _LT_EOF
           strings "$collect2name" | grep resolve_lib_name >/dev/null
          then
          # We have reworked collect2
-         hardcode_direct_GCJ=yes
+         :
          else
          # We have old collect2
          hardcode_direct_GCJ=unsupported
@@ -17115,11 +17725,18 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
        } && test -s conftest$ac_exeext &&
        $as_test_x conftest$ac_exeext; then
 
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+       /^0/ {
+           s/^0  *\(.*\)$/\1/
+           p
+       }
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 # Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`; fi
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -17174,11 +17791,18 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
        } && test -s conftest$ac_exeext &&
        $as_test_x conftest$ac_exeext; then
 
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
+lt_aix_libpath_sed='
+    /Import File Strings/,/^$/ {
+       /^0/ {
+           s/^0  *\(.*\)$/\1/
+           p
+       }
+    }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
 # Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`; fi
+if test -z "$aix_libpath"; then
+  aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
@@ -17232,7 +17856,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       # The linker will automatically build a .lib file if we build a DLL.
       old_archive_From_new_cmds_GCJ='true'
       # FIXME: Should let the user specify the lib program.
-      old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs'
       fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
       enable_shared_with_static_runtimes_GCJ=yes
       ;;
@@ -17265,19 +17889,18 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       link_all_deplibs_GCJ=yes
     if test "$GCC" = yes ; then
        output_verbose_link_cmd='echo'
-        archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-      module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-      archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-      module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+        archive_cmds_GCJ="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+        module_cmds_GCJ="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+        archive_expsym_cmds_GCJ="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+        module_expsym_cmds_GCJ="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
     else
       case $cc_basename in
         xlc*)
          output_verbose_link_cmd='echo'
-         archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
          module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
           # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
-         archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+         archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           ;;
        *)
@@ -17439,24 +18062,28 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       ;;
 
     openbsd*)
-      hardcode_direct_GCJ=yes
-      hardcode_shlibpath_var_GCJ=no
-      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-       archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-       archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-       hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
-       export_dynamic_flag_spec_GCJ='${wl}-E'
+      if test -f /usr/libexec/ld.so; then
+       hardcode_direct_GCJ=yes
+       hardcode_shlibpath_var_GCJ=no
+       if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+         archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+         archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+         hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+         export_dynamic_flag_spec_GCJ='${wl}-E'
+       else
+         case $host_os in
+          openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+            archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+            hardcode_libdir_flag_spec_GCJ='-R$libdir'
+            ;;
+          *)
+            archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+            hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+            ;;
+         esac
+        fi
       else
-       case $host_os in
-        openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-          archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-          hardcode_libdir_flag_spec_GCJ='-R$libdir'
-          ;;
-        *)
-          archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-          hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
-          ;;
-       esac
+       ld_shlibs_GCJ=no
       fi
       ;;
 
@@ -17515,17 +18142,16 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       case $host_os in
       solaris2.[0-5] | solaris2.[0-5].*) ;;
       *)
-       # The compiler driver will combine linker options so we
-       # cannot just pass the convience library names through
-       # without $wl, iff we do not link with $LD.
-       # Luckily, gcc supports the same syntax we need for Sun Studio.
+       # The compiler driver will combine and reorder linker options,
+       # but understands `-z linker_flag'.  GCC discards it without `$wl',
+       # but is careful enough not to reorder.
        # Supported since Solaris 2.6 (maybe 2.5.1?)
-       case $wlarc in
-       '')
-         whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
-       *)
-         whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
-       esac ;;
+       if test "$GCC" = yes; then
+         whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+       else
+         whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract'
+       fi
+       ;;
       esac
       link_all_deplibs_GCJ=yes
       ;;
@@ -17582,7 +18208,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       fi
       ;;
 
-    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
       no_undefined_flag_GCJ='${wl}-z,text'
       archive_cmds_need_lc_GCJ=no
       hardcode_shlibpath_var_GCJ=no
@@ -17659,7 +18285,7 @@ x|xyes)
       { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
 echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
       $rm conftest*
-      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+      echo "$lt_simple_compile_test_code" > conftest.$ac_ext
 
       if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
@@ -17717,20 +18343,7 @@ shlibpath_overrides_runpath=unknown
 version_type=none
 dynamic_linker="$host_os ld.so"
 sys_lib_dlsearch_path_spec="/lib /usr/lib"
-if test "$GCC" = yes; then
-  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
+
 need_lib_prefix=unknown
 hardcode_into_libs=no
 
@@ -17748,7 +18361,7 @@ aix3*)
   soname_spec='${libname}${release}${shared_ext}$major'
   ;;
 
-aix4* | aix5*)
+aix[4-9]*)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -17887,12 +18500,7 @@ darwin* | rhapsody*)
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
   shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
-  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-  if test "$GCC" = yes; then
-    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-  else
-    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-  fi
+
   sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
   ;;
 
@@ -17946,7 +18554,7 @@ freebsd* | dragonfly*)
     shlibpath_overrides_runpath=no
     hardcode_into_libs=yes
     ;;
-  freebsd*) # from 4.6 on
+  *) # from 4.6 on, and DragonFly
     shlibpath_overrides_runpath=yes
     hardcode_into_libs=yes
     ;;
@@ -18009,7 +18617,7 @@ hpux9* | hpux10* | hpux11*)
   postinstall_cmds='chmod 555 $lib'
   ;;
 
-interix3*)
+interix[3-9]*)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -18080,7 +18688,7 @@ linux* | k*bsd*-gnu)
 
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,       ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[     ]*hwcap[        ]/d;s/[:,       ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
   fi
 
@@ -18186,6 +18794,10 @@ osf3* | osf4* | osf5*)
   sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
   ;;
 
+rdos*)
+  dynamic_linker=no
+  ;;
+
 solaris*)
   version_type=linux
   need_lib_prefix=no
@@ -18282,6 +18894,21 @@ esac
 echo "${ECHO_T}$dynamic_linker" >&6; }
 test "$dynamic_linker" = no && can_build_shared=no
 
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"
+fi
+
+sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"
+fi
+
+sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
 variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
 if test "$GCC" = yes; then
   variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
@@ -18365,6 +18992,7 @@ if test -f "$ltmain"; then
     predeps_GCJ \
     postdeps_GCJ \
     compiler_lib_search_path_GCJ \
+    compiler_lib_search_dirs_GCJ \
     archive_cmds_GCJ \
     archive_expsym_cmds_GCJ \
     postinstall_cmds_GCJ \
@@ -18380,6 +19008,7 @@ if test -f "$ltmain"; then
     module_cmds_GCJ \
     module_expsym_cmds_GCJ \
     lt_cv_prog_compiler_c_o_GCJ \
+    fix_srcfile_path_GCJ \
     exclude_expsyms_GCJ \
     include_expsyms_GCJ; do
 
@@ -18612,6 +19241,10 @@ predeps=$lt_predeps_GCJ
 # shared library.
 postdeps=$lt_postdeps_GCJ
 
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_GCJ
+
 # The library search path used internally by the compiler when linking
 # a shared library.
 compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
@@ -18700,7 +19333,7 @@ sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
 
 # Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$fix_srcfile_path_GCJ"
+fix_srcfile_path=$lt_fix_srcfile_path
 
 # Set to yes if exported symbols are required.
 always_export_symbols=$always_export_symbols_GCJ
@@ -18757,7 +19390,7 @@ objext=o
 objext_RC=$objext
 
 # Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
 
 # Code to be used in simple link tests
 lt_simple_link_test_code="$lt_simple_compile_test_code"
@@ -18776,16 +19409,16 @@ compiler=$CC
 
 # save warnings/boilerplate of simple test code
 ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
 eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_compiler_boilerplate=`cat conftest.err`
 $rm conftest*
 
 ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
 eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_linker_boilerplate=`cat conftest.err`
-$rm conftest*
+$rm -r conftest*
 
 
 # Allow CC to be a program name with arguments.
@@ -18845,6 +19478,7 @@ if test -f "$ltmain"; then
     predeps_RC \
     postdeps_RC \
     compiler_lib_search_path_RC \
+    compiler_lib_search_dirs_RC \
     archive_cmds_RC \
     archive_expsym_cmds_RC \
     postinstall_cmds_RC \
@@ -18860,6 +19494,7 @@ if test -f "$ltmain"; then
     module_cmds_RC \
     module_expsym_cmds_RC \
     lt_cv_prog_compiler_c_o_RC \
+    fix_srcfile_path_RC \
     exclude_expsyms_RC \
     include_expsyms_RC; do
 
@@ -19092,6 +19727,10 @@ predeps=$lt_predeps_RC
 # shared library.
 postdeps=$lt_postdeps_RC
 
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_RC
+
 # The library search path used internally by the compiler when linking
 # a shared library.
 compiler_lib_search_path=$lt_compiler_lib_search_path_RC
@@ -19180,7 +19819,7 @@ sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
 
 # Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$fix_srcfile_path_RC"
+fix_srcfile_path=$lt_fix_srcfile_path
 
 # Set to yes if exported symbols are required.
 always_export_symbols=$always_export_symbols_RC
@@ -19564,7 +20203,7 @@ echo "$as_me: error: '--with-openssl requires a path to a directory'" >&2;}
     CPPFLAGS="${CPPFLAGS} -I${openssl_prefix}/include"
     LDFLAGS="${LDFLAGS} -L${openssl_prefix}/lib"
     LDFLAGS="${LDFLAGS} -R${openssl_prefix}/lib"
-    OPENSSL_PATH="--with-openssl ${openssl_prefix}"
+    OPENSSL_PATH="--with-openssl=${openssl_prefix}"
   fi
 
 fi
 done
 
 
-for ac_header in ap_regex.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-{ echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
-if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-#ifdef HAVE_APR_H
-# include "apr.h"
-#endif
-#ifdef HAVE_AP_CONFIG_H
-# include "ap_config.h"
-#endif
-
-
-#include <$ac_header>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
-  (eval "$ac_compile") 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && {
-        test -z "$ac_c_werror_flag" ||
-        test ! -s conftest.err
-       } && test -s conftest.$ac_objext; then
-  eval "$as_ac_Header=yes"
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-       eval "$as_ac_Header=no"
-fi
-
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-ac_res=`eval echo '${'$as_ac_Header'}'`
-              { echo "$as_me:$LINENO: result: $ac_res" >&5
-echo "${ECHO_T}$ac_res" >&6; }
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
-  cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
- use_pcre_flag="no"
-else
-  use_pcre_flag="yes"
-fi
-
-done
-
-
 for ac_header in libgen.h
 do
 as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
 
 done
 
+#AC_CHECK_HEADERS([ap_regex.h],
+#  AC_DEFINE([HAVE_AP_REGEX_H], [], [Define to 1 if you have the <ap_regex.h> header file.]),[],
+#[[
+##ifdef HAVE_APR_H
+##include "apr.h"
+##endif
+##ifdef HAVE_AP_CONFIG_H
+##include "ap_config.h"
+##endif
+#]])
+
+for ac_header in ap_regex.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef HAVE_APR_H
+# include "apr.h"
+#endif
+#ifdef HAVE_AP_CONFIG_H
+# include "ap_config.h"
+#endif
+
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+        test -z "$ac_c_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+              { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+ use_pcre_flag="no"
+else
+  use_pcre_flag="yes"
+fi
+
+done
+
 if test "x$use_pcre_flag" = "xyes" ; then
   if test "x$with_pcre_config" = "x" ; then
     # Extract the first word of "pcre-config", so it can be a program name with args.
@@ -21681,6 +22330,8 @@ done
 
 
 
+
+
 ac_config_files="$ac_config_files Makefile src/Makefile support/centos/mod-chxj.spec"
 
 cat >confcache <<\_ACEOF
@@ -22100,7 +22751,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by mod_chxj $as_me 0.13.0-rc, which was
+This file was extended by mod_chxj $as_me 0.13.0, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -22153,7 +22804,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-mod_chxj config.status 0.13.0-rc
+mod_chxj config.status 0.13.0
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -22421,16 +23072,16 @@ AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
 CCDEPMODE!$CCDEPMODE$ac_delim
 am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
 am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
+SED!$SED$ac_delim
 GREP!$GREP$ac_delim
 EGREP!$EGREP$ac_delim
 LN_S!$LN_S$ac_delim
 ECHO!$ECHO$ac_delim
 AR!$AR$ac_delim
 RANLIB!$RANLIB$ac_delim
+DSYMUTIL!$DSYMUTIL$ac_delim
+NMEDIT!$NMEDIT$ac_delim
 CPP!$CPP$ac_delim
-CXX!$CXX$ac_delim
-CXXFLAGS!$CXXFLAGS$ac_delim
-ac_ct_CXX!$ac_ct_CXX$ac_delim
 _ACEOF
 
   if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -22472,6 +23123,9 @@ _ACEOF
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   cat >conf$$subs.sed <<_ACEOF
+CXX!$CXX$ac_delim
+CXXFLAGS!$CXXFLAGS$ac_delim
+ac_ct_CXX!$ac_ct_CXX$ac_delim
 CXXDEPMODE!$CXXDEPMODE$ac_delim
 am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim
 am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim
@@ -22498,7 +23152,7 @@ OPENSSL_PATH!$OPENSSL_PATH$ac_delim
 LTLIBOBJS!$LTLIBOBJS$ac_delim
 _ACEOF
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 24; then
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 27; then
     break
   elif $ac_last_try; then
     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
@@ -22899,21 +23553,22 @@ echo "$as_me: $ac_file is unchanged" >&6;}
   fi
   rm -f "$tmp/out12"
 # Compute $ac_file's index in $config_headers.
+_am_arg=$ac_file
 _am_stamp_count=1
 for _am_header in $config_headers :; do
   case $_am_header in
-    $ac_file | $ac_file:* )
+    $_am_arg | $_am_arg:* )
       break ;;
     * )
       _am_stamp_count=`expr $_am_stamp_count + 1` ;;
   esac
 done
-echo "timestamp for $ac_file" >`$as_dirname -- $ac_file ||
-$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X$ac_file : 'X\(//\)[^/]' \| \
-        X$ac_file : 'X\(//\)$' \| \
-        X$ac_file : 'X\(/\)' \| . 2>/dev/null ||
-echo X$ac_file |
+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" ||
+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+        X"$_am_arg" : 'X\(//\)[^/]' \| \
+        X"$_am_arg" : 'X\(//\)$' \| \
+        X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$_am_arg" |
     sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
            s//\1/
            q
@@ -22950,7 +23605,7 @@ echo "$as_me: executing $ac_file commands" >&6;}
   # each Makefile.in and add a new line on top of each file to say so.
   # Grep'ing the whole file is not good either: AIX grep has a line
   # limit of 2048, but all sed's we know have understand at least 4000.
-  if sed 10q "$mf" | grep '^#.*generated by automake' > /dev/null 2>&1; then
+  if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then
     dirpart=`$as_dirname -- "$mf" ||
 $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
         X"$mf" : 'X\(//\)[^/]' \| \
index 029b383..8e39a3b 100644 (file)
@@ -1,6 +1,6 @@
 #                                               -*- Autoconf -*-
 # Process this file with autoconf to produce a configure script.
-AC_INIT([mod_chxj],[0.13.0-rc],[konn@users.sourceforge.jp])
+AC_INIT([mod_chxj],[0.13.0],[konn@users.sourceforge.jp])
 AC_PREREQ(2.59)
 AC_CONFIG_SRCDIR([src/mod_chxj.c])
 AC_CANONICAL_TARGET
@@ -180,7 +180,7 @@ AC_ARG_WITH(openssl,
     CPPFLAGS="${CPPFLAGS} -I${openssl_prefix}/include"
     LDFLAGS="${LDFLAGS} -L${openssl_prefix}/lib"
     LDFLAGS="${LDFLAGS} -R${openssl_prefix}/lib"
-    OPENSSL_PATH="--with-openssl ${openssl_prefix}"
+    OPENSSL_PATH="--with-openssl=${openssl_prefix}"
   fi
 ])
 
index c75c0e2..f25dd6a 100644 (file)
     </device>
   </user_agent>
 
+  <!-- OSAKANA TARO add start -->
+  <user_agent pattern="^DoCoMo/2.0[ ]+(ISIM)+([^( ]+)(\(.+\))*$">
+  <!--
+  iモードHTMLシミュレータII (ver8.4)
+  -->
+  <!--
+  iHTML5.0/Flash Lite 1.1/Deco-mail1.0
+    DoCoMo/2.0 ISIM0801(c100;TB;W48H32)
+  -->
+      <device>
+      <device_id>ISIM0801</device_id>
+      <device_name>DoCoMo ISIM0801</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type><!-- IHTML5.0 -->
+      <width>240</width>
+      <heigh>320</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>102400</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+  <!--
+  iHTML5.0/Flash Lite 1.1/Adobe Reader LE1.0/Deco-mail1.0
+    DoCoMo/2.0 ISIM0802(c100;TB;W48H32)
+  -->
+    <device>
+      <device_id>ISIM0802</device_id>
+      <device_name>DoCoMo ISIM0802</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type><!-- IHTML5.0 -->
+      <width>240</width>
+      <heigh>320</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>102400</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+  <!--
+  iHTML6.0/Flash Lite 1.1/Adobe Reader LE1.0/Deco-mail2.0/ToruCa1.0
+    DoCoMo/2.0 ISIM0803(c100;TB;W48H32)
+  -->
+    <device>
+      <device_id>ISIM0803</device_id>
+      <device_name>DoCoMo ISIM0803</device_name>
+      <html_spec_type>CHTML_6_0</html_spec_type><!-- IHTML6.0/IXHTML2.0 -->
+      <width>240</width>
+      <heigh>320</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>102400</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+  <!--
+  iHTML7.0/Flash Lite 1.1/Adobe Reader LE2.0/Deco-mail3.0/ToruCa2.0
+    DoCoMo/2.0 ISIM0804(c100;TB;W48H32)
+  -->
+    <device>
+      <device_id>ISIM0804</device_id>
+      <device_name>DoCoMo ISIM0804</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>320</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>102400</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+  <!--
+  iHTML7.1/Flash Lite 3.0/Adobe Reader LE2.0/Deco-mail3.0/ToruCa2.0
+    DoCoMo/2.0 ISIM0805(c100;TB;W48H32)
+  -->
+    <device>
+      <device_id>ISIM0805</device_id>
+      <device_name>DoCoMo ISIM0805</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.1/IXHTML2.1 -->
+      <width>240</width>
+      <heigh>320</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>102400</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+  <!--
+  iHTML7.2/Flash Lite 3.0/Adobe Reader LE2.0/Deco-mail4.0/ToruCa2.0
+    DoCoMo/2.0 ISIM0806(c100;TB;W48H32)
+  -->
+    <device>
+      <device_id>ISIM0806</device_id>
+      <device_name>DoCoMo ISIM0806</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>320</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>102400</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+  <!--
+  iHTML7.2/Flash Lite 3.1/Adobe Reader LE2.0/Deco-mail4.0/ToruCa2.1
+    DoCoMo/2.0 ISIM0807(c100;TB;W48H32)
+  -->
+    <device>
+      <device_id>ISIM0807</device_id>
+      <device_name>DoCoMo ISIM0807</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>320</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>102400</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+
+  <!--
+       QVGA: i-mode Browser2.0/Flash Lite 3.1/Adobe Reader LE2.0/Deco-mail4.0/ToruCa2.1
+    iMode2.0 DoCoMo/2.0 ISIM0808(c500;TB;W24H16)
+  -->
+    <device>
+      <device_id>ISIM0808</device_id>
+      <device_name>DoCoMo ISIM0808</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>480</width>
+      <heigh>640</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>512000</color>
+      <emoji_type></emoji_type>
+      <wp_width>480</wp_width>
+      <wp_heigh>640</wp_heigh>
+      <cache>102400</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+  
+  </user_agent>
+  <!-- OSAKANA TARO add end -->
   <!-- Sale in 2007.6 F904i_H -->
   <user_agent pattern="^DoCoMo/2.0[    ]+(F904i)\(c100;TB;W24H17\)$">
     <!--
       DoCoMo/2.0 F01A(c100;TB;W30H22)
       DoCoMo/2.0 F01A(c100;TB;W30H15)
       DoCoMo/2.0 F01A(c100;TB;W17H12)
+      DoCoMo/2.0 F01A(c100;TB;W17H8)
       DoCoMo/2.0 F01A(c100;TB;W40H29)
       DoCoMo/2.0 F01A(c100;TB;W40H20)
       DoCoMo/2.0 F01A(c100;SD)
       DoCoMo/2.0 F01A(c100;TC;W30H22)
       DoCoMo/2.0 F01A(c100;TC;W30H15)
       DoCoMo/2.0 F01A(c100;TC;W17H12)
+      DoCoMo/2.0 F01A(c100;TC;W17H8)
       DoCoMo/2.0 F01A(c100;TC;W40H29)
       DoCoMo/2.0 F01A(c100;TC;W40H20)
     -->
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <device>
-      <device_id>UNKNOWN_DEVICE</device_id>
-      <device_name>UNKNOWN DoCoMo Device</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>118</width>
-      <heigh>128</heigh>
+       <!-- OSAKANA TARO add start -->
+       <!-- iモード対応HTML7.2(FOMA 906iなど) -->
+    <!--
+               DoCoMo/2.0 P04A(c100;TB;W24H15) (ブラウザからの通信時、ADF取得時)
+               DoCoMo/2.0 P04A(c100;TB;W20H13) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P04A(c100;TB;W30H19) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P04A(c100;TB;W16H10) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P04A(c100;TB;W24H13) (トルカ詳細化時)
+               DoCoMo/2.0 P04A(c100;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 P04A(c100;TJ) (iアプリからの通信時(DoJaプロファイル))  
+       -->
+    <device>
+      <device_id>P04A</device_id>
+      <device_name>DoCoMo P-04A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>350</heigh>
       <gif>true</gif>
-      <jpeg>false</jpeg>
+      <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>4096</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>120</wp_width>
-      <wp_heigh>130</wp_heigh>
-      <cache>100000</cache>
+      <wp_width>240</wp_width>
+      <wp_heigh>427</wp_heigh>
+      <cache>102400</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-  </user_agent>
-
-
-
-  <user_agent pattern="^DoCoMo/1.0/([^   /]+)/c[0-9][0-9]/TB$">
+       
+       <!--
+               DoCoMo/2.0 P05A(c100;TB;W24H15) (ブラウザからの通信時、ADF取得時)
+               DoCoMo/2.0 P05A(c100;TB;W20H13) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P05A(c100;TB;W30H19) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P05A(c100;TB;W16H10) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P05A(c100;TB;W24H13) (トルカ詳細化時)
+               DoCoMo/2.0 P05A(c100;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 P05A(c100;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
     <device>
-      <device_id>F504i</device_id>
-      <device_name>F504i</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>132</width>
-      <heigh>136</heigh>
+      <device_id>P05A</device_id>
+      <device_name>DoCoMo P-05A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>350</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>132</wp_width>
-      <wp_heigh>136</wp_heigh>
-      <cache>10000</cache>
+      <wp_width>240</wp_width>
+      <wp_heigh>427</wp_heigh>
+      <cache>102400</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+       <!--
+               DoCoMo/2.0 P06A(c100;TB;W20H13) (ブラウザからの通信時、ADF取得時)
+               DoCoMo/2.0 P06A(c100;TB;W24H15) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P06A(c100;TB;W30H19) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P06A(c100;TB;W16H10) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P06A(c100;TB;W24H13) (トルカ詳細化時)
+               DoCoMo/2.0 P06A(c100;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 P06A(c100;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
     <device>
-      <device_id>F504iS</device_id>
-      <device_name>F504iS</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>132</width>
-      <heigh>136</heigh>
+      <device_id>P06A</device_id>
+      <device_name>DoCoMo P-06A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>350</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>132</wp_width>
-      <wp_heigh>176</wp_heigh>
-      <cache>10000</cache>
+      <wp_width>240</wp_width>
+      <wp_heigh>427</wp_heigh>
+      <cache>102400</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+       
+       <!--
+               DoCoMo/2.0 P10A(c100;TB;W24H15) (ブラウザからの通信時、ADF取得時)
+               DoCoMo/2.0 P10A(c100;TB;W20H13) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P10A(c100;TB;W30H19) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P10A(c100;TB;W16H10) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P10A(c100;TB;W24H13) (トルカ詳細化時)
+               DoCoMo/2.0 P10A(c100;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 P10A(c100;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
     <device>
-      <device_id>N504i</device_id>
-      <device_name>N504i</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>160</width>
-      <heigh>180</heigh>
+      <device_id>P10A</device_id>
+      <device_name>DoCoMo P-10A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>350</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>160</wp_width>
-      <wp_heigh>200</wp_heigh>
-      <cache>10000</cache>
+      <wp_width>240</wp_width>
+      <wp_heigh>427</wp_heigh>
+      <cache>102400</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <device>
-      <device_id>N504iS</device_id>
-      <device_name>N504iS</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>160</width>
-      <heigh>180</heigh>
+       
+       <!--
+               DoCoMo/2.0 SH04A(c100;TB;W24H16) (ブラウザからの通信時、ADF取得時(縦画面))
+               DoCoMo/2.0 SH04A(c100;TB;W24H12) (ブラウザからの通信時、ADF取得時(横画面))
+               DoCoMo/2.0 SH04A(c100;TB;W20H13) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 SH04A(c100;TB;W20H10) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 SH04A(c100;TB;W30H20) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 SH04A(c100;TB;W30H15) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 SH04A(c100;TB;W16H10) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 SH04A(c100;TB;W16H08) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 SH04A(c100;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 SH04A(c100;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 SH04A(c100;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 SH04A(c100;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+    <device>
+      <device_id>SH04A</device_id>
+      <device_name>DoCoMo SH-04A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>320</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
-
-      <wp_width>160</wp_width>
-      <wp_heigh>198</wp_heigh>
-      <cache>10000</cache>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>102400</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <device>
-      <device_id>SO504i</device_id>
-      <device_name>SO504i</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>120</width>
-      <heigh>112</heigh>
+
+       <!-- iモード対応HTML7.2(FOMA 906iなど) end -->
+       <!-- iモードブラウザ2.0 start -->
+       
+       <!--
+               DoCoMo/2.0 P07A3(c500;TB;W24H15) (ブラウザからの通信時、ADF取得時(縦画面))
+               DoCoMo/2.0 P07A3(c500;TB;W42H08) (ブラウザからの通信時、ADF取得時(横画面))
+               DoCoMo/2.0 P07A3(c500;TB;W20H12) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 P07A3(c500;TB;W35H06) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 P07A3(c500;TB;W30H18) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 P07A3(c500;TB;W53H09) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 P07A3(c500;TB;W16H10) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 P07A3(c500;TB;W28H05) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 P07A3(c500;TB;W24H13) (トルカ詳細化時)
+               DoCoMo/2.0 P07A3(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 P07A3(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 P07A3(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 P07A3(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+    <device>
+      <device_id>P07A</device_id>
+      <device_name>DoCoMo P-07A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>331</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>120</wp_width>
-      <wp_heigh>128</wp_heigh>
-      <cache>10000</cache>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
+       
+       <!--
+               DoCoMo/2.0 P08A3(c500;TB;W24H15) (ブラウザからの通信時、ADF取得時)
+               DoCoMo/2.0 P08A3(c500;TB;W20H12) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P08A3(c500;TB;W30H18) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P08A3(c500;TB;W16H10) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P08A3(c500;TB;W24H13) (トルカ詳細化時)
+               DoCoMo/2.0 P08A3(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 P08A3(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 P08A3(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 P08A3(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
     <device>
-      <device_id>P504i</device_id>
-      <device_name>P504i</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>132</width>
-      <heigh>144</heigh>
+      <device_id>P08A</device_id>
+      <device_name>DoCoMo P-08A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>331</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>132</wp_width>
-      <wp_heigh>144</wp_heigh>
-      <cache>10000</cache>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
+       <!--
+               DoCoMo/2.0 P09A3(c500;TB;W24H15) (ブラウザからの通信時、ADF取得時)
+               DoCoMo/2.0 P09A3(c500;TB;W20H12) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P09A3(c500;TB;W30H18) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P09A3(c500;TB;W16H10) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 P09A3(c500;TB;W24H13) (トルカ詳細化時)
+               DoCoMo/2.0 P09A3(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 P09A3(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 P09A3(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 P09A3(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
     <device>
-      <device_id>P504iS</device_id>
-      <device_name>P504iS</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>132</width>
-      <heigh>144</heigh>
+      <device_id>P09A</device_id>
+      <device_name>DoCoMo P-09A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>331</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>132</wp_width>
-      <wp_heigh>144</wp_heigh>
-      <cache>10000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>SH251i</device_id>
-      <device_name>SH251i</device_name>
-      <html_spec_type>CHTML_3_0</html_spec_type>
-      <width>120</width>
-      <heigh>130</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+
+       <!--
+               DoCoMo/2.0 N06A3(c500;TB;W24H16) (ブラウザからの通信時、ADF取得時(縦画面))
+               DoCoMo/2.0 N06A3(c500;TB;W24H12) (ブラウザからの通信時(横画面))
+               DoCoMo/2.0 N06A3(c500;TB;W20H13) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 N06A3(c500;TB;W20H10) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 N06A3(c500;TB;W30H20) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 N06A3(c500;TB;W30H15) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 N06A3(c500;TB;W16H10) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 N06A3(c500;TB;W16H8) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 N06A3(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 N06A3(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 N06A3(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 N06A3(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>N06A</device_id>
+      <device_name>DoCoMo N-06A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>320</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>132</wp_width>
-      <wp_heigh>160</wp_heigh>
-      <cache>10000</cache>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <device>
-      <device_id>SH251iS</device_id>
-      <device_name>SH251iS</device_name>
-      <html_spec_type>CHTML_3_0</html_spec_type>
-      <width>176</width>
-      <heigh>187</heigh>
+
+       <!--
+               DoCoMo/2.0 N07A3(c500;TB;W24H16) (ブラウザからの通信時、ADF取得時)
+               DoCoMo/2.0 N07A3(c500;TB;W20H13) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N07A3(c500;TB;W30H20) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N07A3(c500;TB;W16H10) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N07A3(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 N07A3(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 N07A3(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 N07A3(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>N07A</device_id>
+      <device_name>DoCoMo N-07A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>320</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>176</wp_width>
-      <wp_heigh>220</wp_heigh>
-      <cache>10000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>D251i</device_id>
-      <device_name>D251i</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>132</width>
-      <heigh>144</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 N08A3(c500;TB;W24H16) (ブラウザからの通信時、ADF取得時)
+               DoCoMo/2.0 N08A3(c500;TB;W20H13) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N08A3(c500;TB;W30H20) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N08A3(c500;TB;W16H10) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N08A3(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 N08A3(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 N08A3(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 N08A3(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>N08A</device_id>
+      <device_name>DoCoMo N-08A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>320</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>132</wp_width>
-      <wp_heigh>160</wp_heigh>
-      <cache>10000</cache>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <device>
-      <device_id>D251iS</device_id>
-      <device_name>D251iS</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>132</width>
-      <heigh>144</heigh>
+
+       <!--
+               DoCoMo/2.0 N09A3(c500;TB;W24H16) (ブラウザからの通信時、ADF取得時)
+               DoCoMo/2.0 N09A3(c500;TB;W20H13) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N09A3(c500;TB;W30H20) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N09A3(c500;TB;W16H10) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N09A3(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 N09A3(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 N09A3(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 N09A3(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>N09A</device_id>
+      <device_name>DoCoMo N-09A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>320</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>132</wp_width>
-      <wp_heigh>160</wp_heigh>
-      <cache>10000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>F251i</device_id>
-      <device_name>F251i</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>132</width>
-      <heigh>140</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+
+       <!--
+               DoCoMo/2.0 F08A3(c500;TB;W24H16) (ブラウザからの通信時、ADF取得時(縦画面))
+               DoCoMo/2.0 F08A3(c500;TB;W24H17) (ブラウザからの通信時(縦全画面))
+               DoCoMo/2.0 F08A3(c500;TB;W42H09) (ブラウザからの通信時(横画面))
+               DoCoMo/2.0 F08A3(c500;TB;W24H10) (ブラウザからの通信時(横マルチ画面))
+               DoCoMo/2.0 F08A3(c500;TB;W20H13) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F08A3(c500;TB;W20H14) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F08A3(c500;TB;W35H08) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F08A3(c500;TB;W20H08) (ブラウザからの通信時(横マルチ画面))1
+               DoCoMo/2.0 F08A3(c500;TB;W30H20) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F08A3(c500;TB;W30H22) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F08A3(c500;TB;W53H12) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F08A3(c500;TB;W30H13) (ブラウザからの通信時(横マルチ画面))1
+               DoCoMo/2.0 F08A3(c500;TB;W16H10) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F08A3(c500;TB;W16H11) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F08A3(c500;TB;W28H06) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F08A3(c500;TB;W16H07) (ブラウザからの通信時(横マルチ画面))1
+               DoCoMo/2.0 F08A3(c500;TB;W12H08) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F08A3(c500;TB;W12H08) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F08A3(c500;TB;W21H04) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F08A3(c500;TB;W12H05) (ブラウザからの通信時(横マルチ画面))1
+               DoCoMo/2.0 F08A3(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 F08A3(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 F08A3(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 F08A3(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>F08A</device_id>
+      <device_name>DoCoMo F-08A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>324</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>132</wp_width>
-      <wp_heigh>156</wp_heigh>
-      <cache>10000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>N251i</device_id>
-      <device_name>N251i</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>132</width>
-      <heigh>140</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+
+       <!--
+               DoCoMo/2.0 F09A3(c500;TB;W24H16) (ブラウザからの通信時、ADF取得時(縦画面))
+               DoCoMo/2.0 F09A3(c500;TB;W24H14) (ブラウザからの通信時(縦画面パッド表示))
+               DoCoMo/2.0 F09A3(c500;TB;W24H20) (ブラウザからの通信時(縦全画面))
+               DoCoMo/2.0 F09A3(c500;TB;W24H18) (ブラウザからの通信時(縦全画面パッド表示))
+               DoCoMo/2.0 F09A3(c500;TB;W48H09) (ブラウザからの通信時(横画面))
+               DoCoMo/2.0 F09A3(c500;TB;W43H09) (ブラウザからの通信時(横画面パッド表示))
+               DoCoMo/2.0 F09A3(c500;TB;W24H10) (ブラウザからの通信時(横マルチ画面))
+               DoCoMo/2.0 F09A3(c500;TB;W24H08) (ブラウザからの通信時(横マルチ画面パッド表示))
+               DoCoMo/2.0 F09A3(c500;TB;W20H13) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F09A3(c500;TB;W20H11) (ブラウザからの通信時(縦画面パッド表示))1
+               DoCoMo/2.0 F09A3(c500;TB;W20H17) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F09A3(c500;TB;W20H15) (ブラウザからの通信時(縦全画面パッド表示))1
+               DoCoMo/2.0 F09A3(c500;TB;W40H08) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F09A3(c500;TB;W36H08) (ブラウザからの通信時(横画面パッド表示))1
+               DoCoMo/2.0 F09A3(c500;TB;W20H08) (ブラウザからの通信時(横マルチ画面))1
+               DoCoMo/2.0 F09A3(c500;TB;W20H07) (ブラウザからの通信時(横マルチ画面パッド表示))1
+               DoCoMo/2.0 F09A3(c500;TB;W30H20) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F09A3(c500;TB;W30H17) (ブラウザからの通信時(縦画面パッド表示))1
+               DoCoMo/2.0 F09A3(c500;TB;W30H25) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F09A3(c500;TB;W30H23) (ブラウザからの通信時(縦全画面パッド表示))1
+               DoCoMo/2.0 F09A3(c500;TB;W60H12) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F09A3(c500;TB;W54H12) (ブラウザからの通信時(横画面パッド表示))1
+               DoCoMo/2.0 F09A3(c500;TB;W30H13) (ブラウザからの通信時(横マルチ画面))1
+               DoCoMo/2.0 F09A3(c500;TB;W30H10) (ブラウザからの通信時(横マルチ画面パッド表示))1
+               DoCoMo/2.0 F09A3(c500;TB;W16H10) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F09A3(c500;TB;W16H09) (ブラウザからの通信時(縦画面パッド表示))1
+               DoCoMo/2.0 F09A3(c500;TB;W16H13) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F09A3(c500;TB;W16H12) (ブラウザからの通信時(縦全画面パッド表示))1
+               DoCoMo/2.0 F09A3(c500;TB;W32H06) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F09A3(c500;TB;W28H06) (ブラウザからの通信時(横画面パッド表示))1
+               DoCoMo/2.0 F09A3(c500;TB;W16H07) (ブラウザからの通信時(横マルチ画面))1
+               DoCoMo/2.0 F09A3(c500;TB;W16H05) (ブラウザからの通信時(横マルチ画面パッド表示))1
+               DoCoMo/2.0 F09A3(c500;TB;W12H08) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F09A3(c500;TB;W12H07) (ブラウザからの通信時(縦画面パッド表示))1
+               DoCoMo/2.0 F09A3(c500;TB;W12H10) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F09A3(c500;TB;W12H09) (ブラウザからの通信時(縦全画面パッド表示))1
+               DoCoMo/2.0 F09A3(c500;TB;W24H04) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F09A3(c500;TB;W21H04) (ブラウザからの通信時(横画面パッド表示))1
+               DoCoMo/2.0 F09A3(c500;TB;W12H05) (ブラウザからの通信時(横マルチ画面))1
+               DoCoMo/2.0 F09A3(c500;TB;W12H04) (ブラウザからの通信時(横マルチ画面パッド表示))1
+               DoCoMo/2.0 F09A3(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 F09A3(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 F09A3(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 F09A3(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>F09A</device_id>
+      <device_name>DoCoMo F-09A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>324</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
-
-      <wp_width>132</wp_width>
-      <wp_heigh>159</wp_heigh>
-      <cache>10000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>N251iS</device_id>
-      <device_name>N251iS</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>132</width>
-      <heigh>140</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>960</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+
+       <!--
+               DoCoMo/2.0 SH05A3(c500;TB;W24H14) (ブラウザからの通信時)
+               DoCoMo/2.0 SH05A3(c500;TB;W20H12) (ブラウザからの通信時)1
+               DoCoMo/2.0 SH05A3(c500;TB;W30H18) (ブラウザからの通信時)1
+               DoCoMo/2.0 SH05A3(c500;TB;W16H09) (ブラウザからの通信時)1
+               DoCoMo/2.0 SH05A3(c500;TB;W24H16) (ADF取得時)
+               DoCoMo/2.0 SH05A3(c500;TB;W20H13) (ADF取得時)1
+               DoCoMo/2.0 SH05A3(c500;TB;W30H20) (ADF取得時)1
+               DoCoMo/2.0 SH05A3(c500;TB;W16H10) (ADF取得時)1
+               DoCoMo/2.0 SH05A3(c500;TB;W24H16) (トルカ詳細化時)
+               DoCoMo/2.0 SH05A3(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 SH05A3(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 SH05A3(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 SH05A3(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>SH05A</device_id>
+      <device_name>DoCoMo SH-05A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>296</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
-
-      <wp_width>132</wp_width>
-      <wp_heigh>158</wp_heigh>
-      <cache>10000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>P251iS</device_id>
-      <device_name>P251iS</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>132</width>
-      <heigh>144</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 SH06A3(c500;TB;W24H14) (ブラウザからの通信時(縦画面))
+               DoCoMo/2.0 SH06A3(c500;TB;W24H10) (ブラウザからの通信時(横画面))
+               DoCoMo/2.0 SH06A3(c500;TB;W20H12) (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 SH06A3(c500;TB;W20H09) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 SH06A3(c500;TB;W30H18) (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 SH06A3(c500;TB;W30H13) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 SH06A3(c500;TB;W16H09) (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 SH06A3(c500;TB;W16H07) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 SH06A3(c500;TB;W24H16) (ADF取得時(縦画面))
+               DoCoMo/2.0 SH06A3(c500;TB;W24H12) (ADF取得時(横画面))
+               DoCoMo/2.0 SH06A3(c500;TB;W20H13) (ADF取得時(縦画面))1
+               DoCoMo/2.0 SH06A3(c500;TB;W20H10) (ADF取得時(横画面))1
+               DoCoMo/2.0 SH06A3(c500;TB;W30H20) (ADF取得時(縦画面))1
+               DoCoMo/2.0 SH06A3(c500;TB;W30H15) (ADF取得時(横画面))1
+               DoCoMo/2.0 SH06A3(c500;TB;W16H10) (ADF取得時(縦画面))1
+               DoCoMo/2.0 SH06A3(c500;TB;W16H08) (ADF取得時(横画面))1
+               DoCoMo/2.0 SH06A3(c500;TB;W24H16) (トルカ詳細化時)
+               DoCoMo/2.0 SH06A3(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 SH06A3(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 SH06A3(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 SH06A3(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>SH06A</device_id>
+      <device_name>DoCoMo SH-06A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>296</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
-
-      <wp_width>132</wp_width>
-      <wp_heigh>176</wp_heigh>
-      <cache>10000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>F671iS</device_id>
-      <device_name>F671iS</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>160</width>
-      <heigh>120</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 SH07A3(c500;TB;W24H14) (ブラウザからの通信時(縦画面))
+               DoCoMo/2.0 SH07A3(c500;TB;W24H10) (ブラウザからの通信時(横画面))
+               DoCoMo/2.0 SH07A3(c500;TB;W20H12) (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 SH07A3(c500;TB;W20H09) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 SH07A3(c500;TB;W30H18) (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 SH07A3(c500;TB;W30H13) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 SH07A3(c500;TB;W16H09) (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 SH07A3(c500;TB;W16H07) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 SH07A3(c500;TB;W24H16) (ADF取得時(縦画面))
+               DoCoMo/2.0 SH07A3(c500;TB;W24H12) (ADF取得時(横画面))
+               DoCoMo/2.0 SH07A3(c500;TB;W20H13) (ADF取得時(縦画面))1
+               DoCoMo/2.0 SH07A3(c500;TB;W20H10) (ADF取得時(横画面))1
+               DoCoMo/2.0 SH07A3(c500;TB;W30H20) (ADF取得時(縦画面))1
+               DoCoMo/2.0 SH07A3(c500;TB;W30H15) (ADF取得時(横画面))1
+               DoCoMo/2.0 SH07A3(c500;TB;W16H10) (ADF取得時(縦画面))1
+               DoCoMo/2.0 SH07A3(c500;TB;W16H08) (ADF取得時(横画面))1
+               DoCoMo/2.0 SH07A3(c500;TB;W24H16) (トルカ詳細化時)
+               DoCoMo/2.0 SH07A3(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 SH07A3(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 SH07A3(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 SH07A3(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>SH07A</device_id>
+      <device_name>DoCoMo SH-07A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>296</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
-
-      <wp_width>160</wp_width>
-      <wp_heigh>120</wp_heigh>
-      <cache>10000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>SO212i</device_id>
-      <device_name>SO212i</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>120</width>
-      <heigh>112</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 SH08A(c500;TB;W24H14) (ブラウザからの通信時)
+               DoCoMo/2.0 SH08A(c500;TB;W20H12) (ブラウザからの通信時)1
+               DoCoMo/2.0 SH08A(c500;TB;W30H18) (ブラウザからの通信時)1
+               DoCoMo/2.0 SH08A(c500;TB;W16H09) (ブラウザからの通信時)1
+               DoCoMo/2.0 SH08A(c500;TB;W24H16) (ADF取得時)
+               DoCoMo/2.0 SH08A(c500;TB;W20H13) (ADF取得時)1
+               DoCoMo/2.0 SH08A(c500;TB;W30H20) (ADF取得時)1
+               DoCoMo/2.0 SH08A(c500;TB;W16H10) (ADF取得時)1
+               DoCoMo/2.0 SH08A(c500;TB;W24H16) (トルカ詳細化時)
+               DoCoMo/2.0 SH08A(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 SH08A(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 SH08A(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 SH08A(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>SH08A</device_id>
+      <device_name>DoCoMo SH-08A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>296</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
-
-      <wp_width>128</wp_width>
-      <wp_heigh>128</wp_heigh>
-      <cache>10000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>F212i</device_id>
-      <device_name>F212i</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>132</width>
-      <heigh>136</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 SH01B(c500;TB;W24H16) (ブラウザからの通信時(縦画面))
+               DoCoMo/2.0 SH01B(c500;TB;W24H10) (ブラウザからの通信時(横画面))
+               DoCoMo/2.0 SH01B(c500;TB;W24H14) (ブラウザからの通信時(縦閉画面))
+               DoCoMo/2.0 SH01B(c500;TB;W20H13) (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 SH01B(c500;TB;W20H09) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 SH01B(c500;TB;W20H12) (ブラウザからの通信時(縦閉画面))1
+               DoCoMo/2.0 SH01B(c500;TB;W30H20) (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 SH01B(c500;TB;W30H13) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 SH01B(c500;TB;W30H18) (ブラウザからの通信時(縦閉画面))1
+               DoCoMo/2.0 SH01B(c500;TB;W16H10) (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 SH01B(c500;TB;W16H07) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 SH01B(c500;TB;W16H09) (ブラウザからの通信時(縦閉画面))1
+               DoCoMo/2.0 SH01B(c500;TB;W40H26) (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 SH01B(c500;TB;W40H18) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 SH01B(c500;TB;W40H24) (ブラウザからの通信時(縦閉画面))1
+               DoCoMo/2.0 SH01B(c500;TB;W24H16) (ADF取得時)
+               DoCoMo/2.0 SH01B(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 SH01B(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 SH01B(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 SH01B(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>SH01B</device_id>
+      <device_name>DoCoMo SH-01B</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>323</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
-
-      <wp_width>132</wp_width>
-      <wp_heigh>156</wp_heigh>
-      <cache>10000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>F661i</device_id>
-      <device_name>F661i</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>132</width>
-      <heigh>136</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 SH02B(c500;TB;W24H16) (ブラウザからの通信時(通常画面))
+               DoCoMo/2.0 SH02B(c500;TB;W24H10) (ブラウザからの通信時(マルチ画面))
+               DoCoMo/2.0 SH02B(c500;TB;W20H13) (ブラウザからの通信時(通常画面))1
+               DoCoMo/2.0 SH02B(c500;TB;W20H09) (ブラウザからの通信時(マルチ画面))1
+               DoCoMo/2.0 SH02B(c500;TB;W30H20) (ブラウザからの通信時(通常画面))1
+               DoCoMo/2.0 SH02B(c500;TB;W30H13) (ブラウザからの通信時(マルチ画面))1
+               DoCoMo/2.0 SH02B(c500;TB;W16H10) (ブラウザからの通信時(通常画面))1
+               DoCoMo/2.0 SH02B(c500;TB;W16H07) (ブラウザからの通信時(マルチ画面))1
+               DoCoMo/2.0 SH02B(c500;TB;W40H26) (ブラウザからの通信時(通常画面))1
+               DoCoMo/2.0 SH02B(c500;TB;W40H18) (ブラウザからの通信時(マルチ画面))1
+               DoCoMo/2.0 SH02B(c500;TB;W24H16) (ADF取得時)
+               DoCoMo/2.0 SH02B(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 SH02B(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 SH02B(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 SH02B(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>SH02B</device_id>
+      <device_name>DoCoMo SH-02B</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>323</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
-
-      <wp_width>132</wp_width>
-      <wp_heigh>156</wp_heigh>
-      <cache>10000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>F672i</device_id>
-      <device_name>F672i</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>160</width>
-      <heigh>120</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 SH03B(c500;TB;W30H18) (ブラウザからの通信時(縦画面))
+               DoCoMo/2.0 SH03B(c500;TB;W30H13) (ブラウザからの通信時(横画面))
+               DoCoMo/2.0 SH03B(c500;TB;W20H12) (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 SH03B(c500;TB;W20H09) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 SH03B(c500;TB;W24H14) (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 SH03B(c500;TB;W24H10) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 SH03B(c500;TB;W40H24) (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 SH03B(c500;TB;W40H18) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 SH03B(c500;TB;W16H09) (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 SH03B(c500;TB;W16H07) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 SH03B(c500;TB;W24H16) (ADF取得時)
+               DoCoMo/2.0 SH03B(c500;TB;W24H16) (トルカ詳細化時)
+               DoCoMo/2.0 SH03B(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 SH03B(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 SH03B(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 SH03B(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>SH03B</device_id>
+      <device_name>DoCoMo SH-03B</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>296</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
-
-      <wp_width>160</wp_width>
-      <wp_heigh>120</wp_heigh>
-      <cache>10000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>SO213i</device_id>
-      <device_name>premini (SO213i)</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>120</width>
-      <heigh>112</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 SH04B(c500;TB;W24H14) (ブラウザからの通信時(通常画面))
+               DoCoMo/2.0 SH04B(c500;TB;W24H10) (ブラウザからの通信時(マルチ画面))
+               DoCoMo/2.0 SH04B(c500;TB;W20H12) (ブラウザからの通信時(通常画面))1
+               DoCoMo/2.0 SH04B(c500;TB;W20H09) (ブラウザからの通信時(マルチ画面))1
+               DoCoMo/2.0 SH04B(c500;TB;W30H18) (ブラウザからの通信時(通常画面))1
+               DoCoMo/2.0 SH04B(c500;TB;W30H13) (ブラウザからの通信時(マルチ画面))1
+               DoCoMo/2.0 SH04B(c500;TB;W16H09) (ブラウザからの通信時(通常画面))1
+               DoCoMo/2.0 SH04B(c500;TB;W16H07) (ブラウザからの通信時(マルチ画面))1
+               DoCoMo/2.0 SH04B(c500;TB;W24H16) (ADF取得時(通常画面))
+               DoCoMo/2.0 SH04B(c500;TB;W24H12) (ADF取得時(マルチ画面))
+               DoCoMo/2.0 SH04B(c500;TB;W20H13) (ADF取得時(通常画面))1
+               DoCoMo/2.0 SH04B(c500;TB;W20H10) (ADF取得時(マルチ画面))1
+               DoCoMo/2.0 SH04B(c500;TB;W30H20) (ADF取得時(通常画面))1
+               DoCoMo/2.0 SH04B(c500;TB;W30H15) (ADF取得時(マルチ画面))1
+               DoCoMo/2.0 SH04B(c500;TB;W16H10) (ADF取得時(通常画面))1
+               DoCoMo/2.0 SH04B(c500;TB;W16H08) (ADF取得時(マルチ画面))1
+               DoCoMo/2.0 SH04B(c500;TB;W24H16) (トルカ詳細化時)
+               DoCoMo/2.0 SH04B(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 SH04B(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 SH04B(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 SH04B(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>SH04B</device_id>
+      <device_name>DoCoMo SH-04B</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>296</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
-
-      <wp_width>128</wp_width>
-      <wp_heigh>128</wp_heigh>
-      <cache>10000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>SO213iS</device_id>
-      <device_name>premini-S (SO213iS)</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>120</width>
-      <heigh>112</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 SH05B(c500;TB;W24H16) (ブラウザからの通信時(通常画面))
+               DoCoMo/2.0 SH05B(c500;TB;W24H10) (ブラウザからの通信時(マルチ画面))
+               DoCoMo/2.0 SH05B(c500;TB;W20H13) (ブラウザからの通信時(通常画面))1
+               DoCoMo/2.0 SH05B(c500;TB;W20H09) (ブラウザからの通信時(マルチ画面))1
+               DoCoMo/2.0 SH05B(c500;TB;W30H20) (ブラウザからの通信時(通常画面))1
+               DoCoMo/2.0 SH05B(c500;TB;W30H13) (ブラウザからの通信時(マルチ画面))1
+               DoCoMo/2.0 SH05B(c500;TB;W16H10) (ブラウザからの通信時(通常画面))1
+               DoCoMo/2.0 SH05B(c500;TB;W16H07) (ブラウザからの通信時(マルチ画面))1
+               DoCoMo/2.0 SH05B(c500;TB;W40H26) (ブラウザからの通信時(通常画面))1
+               DoCoMo/2.0 SH05B(c500;TB;W40H18) (ブラウザからの通信時(マルチ画面))1
+               DoCoMo/2.0 SH05B(c500;TB;W24H16) (ADF取得時)
+               DoCoMo/2.0 SH05B(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 SH05B(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 SH05B(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 SH05B(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>SH05B</device_id>
+      <device_name>DoCoMo SH-05B</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>323</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
-
-      <wp_width>128</wp_width>
-      <wp_heigh>128</wp_heigh>
-      <cache>10000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>N2701</device_id>
-      <device_name>N2701</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>176</width>
-      <heigh>198</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 F01B(c500;TB;W24H16) (ブラウザからの通信時、ADF取得時(縦画面))
+               DoCoMo/2.0 F01B(c500;TB;W24H14) (ブラウザからの通信時(縦画面パッド表示))
+               DoCoMo/2.0 F01B(c500;TB;W24H20) (ブラウザからの通信時(縦全画面))
+               DoCoMo/2.0 F01B(c500;TB;W24H18) (ブラウザからの通信時(縦全画面パッド表示))
+               DoCoMo/2.0 F01B(c500;TB;W48H09) (ブラウザからの通信時(横画面))
+               DoCoMo/2.0 F01B(c500;TB;W43H09) (ブラウザからの通信時(横画面パッド表示))
+               DoCoMo/2.0 F01B(c500;TB;W24H10) (ブラウザからの通信時(縦マルチ画面))
+               DoCoMo/2.0 F01B(c500;TB;W24H08) (ブラウザからの通信時(横マルチ画面パッド表示))
+               DoCoMo/2.0 F01B(c500;TB;W20H13) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F01B(c500;TB;W20H11) (ブラウザからの通信時(縦画面パッド表示))1
+               DoCoMo/2.0 F01B(c500;TB;W20H16) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F01B(c500;TB;W20H15) (ブラウザからの通信時(縦全画面パッド表示))1
+               DoCoMo/2.0 F01B(c500;TB;W40H08) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F01B(c500;TB;W36H08) (ブラウザからの通信時(横画面パッド表示))1
+               DoCoMo/2.0 F01B(c500;TB;W20H08) (ブラウザからの通信時(縦マルチ画面))1
+               DoCoMo/2.0 F01B(c500;TB;W20H07) (ブラウザからの通信時(横マルチ画面パッド表示))1
+               DoCoMo/2.0 F01B(c500;TB;W30H20) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F01B(c500;TB;W30H17) (ブラウザからの通信時(縦画面パッド表示))1
+               DoCoMo/2.0 F01B(c500;TB;W30H25) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F01B(c500;TB;W30H22) (ブラウザからの通信時(縦全画面パッド表示))1
+               DoCoMo/2.0 F01B(c500;TB;W60H12) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F01B(c500;TB;W54H12) (ブラウザからの通信時(横画面パッド表示))1
+               DoCoMo/2.0 F01B(c500;TB;W30H13) (ブラウザからの通信時(縦マルチ画面))1
+               DoCoMo/2.0 F01B(c500;TB;W30H10) (ブラウザからの通信時(横マルチ画面パッド表示))1
+               DoCoMo/2.0 F01B(c500;TB;W16H10) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F01B(c500;TB;W16H09) (ブラウザからの通信時(縦画面パッド表示))1
+               DoCoMo/2.0 F01B(c500;TB;W16H13) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F01B(c500;TB;W16H12) (ブラウザからの通信時(縦全画面パッド表示))1
+               DoCoMo/2.0 F01B(c500;TB;W32H06) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F01B(c500;TB;W28H06) (ブラウザからの通信時(横画面パッド表示))1
+               DoCoMo/2.0 F01B(c500;TB;W16H07) (ブラウザからの通信時(縦マルチ画面))1
+               DoCoMo/2.0 F01B(c500;TB;W16H05) (ブラウザからの通信時(横マルチ画面パッド表示))1
+               DoCoMo/2.0 F01B(c500;TB;W12H08) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F01B(c500;TB;W12H07) (ブラウザからの通信時(縦画面パッド表示))1
+               DoCoMo/2.0 F01B(c500;TB;W12H10) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F01B(c500;TB;W12H09) (ブラウザからの通信時(縦全画面パッド表示))1
+               DoCoMo/2.0 F01B(c500;TB;W24H04) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F01B(c500;TB;W21H04) (ブラウザからの通信時(横画面パッド表示))1
+               DoCoMo/2.0 F01B(c500;TB;W12H05) (ブラウザからの通信時(縦マルチ画面))1
+               DoCoMo/2.0 F01B(c500;TB;W12H04) (ブラウザからの通信時(横マルチ画面パッド表示))1
+               DoCoMo/2.0 F01B(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 F01B(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 F01B(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 F01B(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>F01B</device_id>
+      <device_name>DoCoMo F-01B</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>324</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
+      <color>16777216</color>
       <emoji_type></emoji_type>
-
-      <wp_width>176</wp_width>
-      <wp_heigh>198</wp_heigh>
-      <cache>100000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-
-    <!-- Sale in 2005.10 RADIDEN(SO213iWR) -->
-    <device>
-      <device_id>SO213iWR</device_id>
-      <device_name>SO213iWR</device_name>
-      <html_spec_type>CHTML_4_0</html_spec_type>
-      <width>120</width>
-      <heigh>112</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>960</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 F02B(c500;TB;W24H16) (ブラウザからの通信時、ADF取得時(縦画面))
+               DoCoMo/2.0 F02B(c500;TB;W24H17) (ブラウザからの通信時(縦全画面))
+               DoCoMo/2.0 F02B(c500;TB;W42H09) (ブラウザからの通信時(横画面))
+               DoCoMo/2.0 F02B(c500;TB;W24H10) (ブラウザからの通信時(縦マルチ画面))
+               DoCoMo/2.0 F02B(c500;TB;W20H13) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F02B(c500;TB;W20H14) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F02B(c500;TB;W35H08) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F02B(c500;TB;W20H08) (ブラウザからの通信時(縦マルチ画面))1
+               DoCoMo/2.0 F02B(c500;TB;W30H20) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F02B(c500;TB;W30H22) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F02B(c500;TB;W53H12) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F02B(c500;TB;W30H13) (ブラウザからの通信時(縦マルチ画面))1
+               DoCoMo/2.0 F02B(c500;TB;W16H10) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F02B(c500;TB;W16H11) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F02B(c500;TB;W28H06) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F02B(c500;TB;W16H07) (ブラウザからの通信時(縦マルチ画面))1
+               DoCoMo/2.0 F02B(c500;TB;W12H08) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F02B(c500;TB;W12H08) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F02B(c500;TB;W21H04) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F02B(c500;TB;W12H05) (ブラウザからの通信時(縦マルチ画面))1
+               DoCoMo/2.0 F02B(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 F02B(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 F02B(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 F02B(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>F02B</device_id>
+      <device_name>DoCoMo F-02B</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>324</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
+      <color>16777216</color>
       <emoji_type></emoji_type>
-
-      <wp_width>128</wp_width>
-      <wp_heigh>128</wp_heigh>
-      <cache>10000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-
-  </user_agent>
-
-
-
-  <user_agent pattern="^DoCoMo/1.0/([^   /]+)/c[0-9][0-9]/TB/W[0-9][0-9]H[0-9][0-9]$$">
-    <device>
-      <device_id>P213i</device_id>
-      <device_name>prosolid(P213i)</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>132</width>
-      <heigh>144</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 F03B(c500;TB;W24H16) (ブラウザからの通信時、ADF取得時(縦画面))
+               DoCoMo/2.0 F03B(c500;TB;W24H17) (ブラウザからの通信時(縦全画面))
+               DoCoMo/2.0 F03B(c500;TB;W42H09) (ブラウザからの通信時(横画面))
+               DoCoMo/2.0 F03B(c500;TB;W24H10) (ブラウザからの通信時(縦マルチ画面))
+               DoCoMo/2.0 F03B(c500;TB;W20H13) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F03B(c500;TB;W20H14) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F03B(c500;TB;W35H08) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F03B(c500;TB;W20H08) (ブラウザからの通信時(縦マルチ画面))1
+               DoCoMo/2.0 F03B(c500;TB;W30H20) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F03B(c500;TB;W30H22) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F03B(c500;TB;W53H12) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F03B(c500;TB;W30H13) (ブラウザからの通信時(縦マルチ画面))1
+               DoCoMo/2.0 F03B(c500;TB;W16H10) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F03B(c500;TB;W16H11) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F03B(c500;TB;W28H06) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F03B(c500;TB;W16H07) (ブラウザからの通信時(縦マルチ画面))1
+               DoCoMo/2.0 F03B(c500;TB;W12H08) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 F03B(c500;TB;W12H08) (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F03B(c500;TB;W21H04) (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F03B(c500;TB;W12H05) (ブラウザからの通信時(縦マルチ画面))1
+               DoCoMo/2.0 F03B(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 F03B(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 F03B(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 F03B(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>F03B</device_id>
+      <device_name>DoCoMo F-03B</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>324</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
+      <color>16777216</color>
       <emoji_type></emoji_type>
-
-      <wp_width>132</wp_width>
-      <wp_heigh>176</wp_heigh>
-      <cache>10000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>D505i</device_id>
-      <device_name>D505i</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 F04B(c500;TB;W24H16)  (ブラウザからの通信時、ADF取得時(通常画面))
+               DoCoMo/2.0 F04B(c500;TB;W24H14)  (ブラウザからの通信時(通常画面パッド表示))
+               DoCoMo/2.0 F04B(c500;TB;W24H20)  (ブラウザからの通信時(縦全画面))
+               DoCoMo/2.0 F04B(c500;TB;W24H18)  (ブラウザからの通信時(縦全画面パッド表示))
+               DoCoMo/2.0 F04B(c500;TB;W48H09)  (ブラウザからの通信時(横画面))
+               DoCoMo/2.0 F04B(c500;TB;W43H09)  (ブラウザからの通信時(横画面パッド表示))
+               DoCoMo/2.0 F04B(c500;TB;W24H10)  (ブラウザからの通信時(縦マルチ画面))
+               DoCoMo/2.0 F04B(c500;TB;W24H08)  (ブラウザからの通信時(横マルチ画面パッド表示))
+               DoCoMo/2.0 F04B(c500;TB;W20H13)  (ブラウザからの通信時、ADF取得時(通常画面))1
+               DoCoMo/2.0 F04B(c500;TB;W20H11)  (ブラウザからの通信時(通常画面パッド表示))1
+               DoCoMo/2.0 F04B(c500;TB;W20H16)  (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F04B(c500;TB;W20H15)  (ブラウザからの通信時(縦全画面パッド表示))1
+               DoCoMo/2.0 F04B(c500;TB;W40H08)  (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F04B(c500;TB;W36H08)  (ブラウザからの通信時(横画面パッド表示))1
+               DoCoMo/2.0 F04B(c500;TB;W20H08)  (ブラウザからの通信時(縦マルチ画面))1
+               DoCoMo/2.0 F04B(c500;TB;W20H07)  (ブラウザからの通信時(横マルチ画面パッド表示))1
+               DoCoMo/2.0 F04B(c500;TB;W30H20)  (ブラウザからの通信時、ADF取得時(通常画面))1
+               DoCoMo/2.0 F04B(c500;TB;W30H17)  (ブラウザからの通信時(通常画面パッド表示))1
+               DoCoMo/2.0 F04B(c500;TB;W30H25)  (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F04B(c500;TB;W30H22)  (ブラウザからの通信時(縦全画面パッド表示))1
+               DoCoMo/2.0 F04B(c500;TB;W60H12)  (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F04B(c500;TB;W54H12)  (ブラウザからの通信時(横画面パッド表示))1
+               DoCoMo/2.0 F04B(c500;TB;W30H13)  (ブラウザからの通信時(縦マルチ画面))1
+               DoCoMo/2.0 F04B(c500;TB;W30H10)  (ブラウザからの通信時(横マルチ画面パッド表示))1
+               DoCoMo/2.0 F04B(c500;TB;W16H10)  (ブラウザからの通信時、ADF取得時(通常画面))1
+               DoCoMo/2.0 F04B(c500;TB;W16H09)  (ブラウザからの通信時(通常画面パッド表示))1
+               DoCoMo/2.0 F04B(c500;TB;W16H13)  (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F04B(c500;TB;W16H12)  (ブラウザからの通信時(縦全画面パッド表示))1
+               DoCoMo/2.0 F04B(c500;TB;W32H06)  (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F04B(c500;TB;W28H06)  (ブラウザからの通信時(横画面パッド表示))1
+               DoCoMo/2.0 F04B(c500;TB;W16H07)  (ブラウザからの通信時(縦マルチ画面))1
+               DoCoMo/2.0 F04B(c500;TB;W16H05)  (ブラウザからの通信時(横マルチ画面パッド表示))1
+               DoCoMo/2.0 F04B(c500;TB;W12H08)  (ブラウザからの通信時、ADF取得時(通常画面))1
+               DoCoMo/2.0 F04B(c500;TB;W12H07)  (ブラウザからの通信時(通常画面パッド表示))1
+               DoCoMo/2.0 F04B(c500;TB;W12H10)  (ブラウザからの通信時(縦全画面))1
+               DoCoMo/2.0 F04B(c500;TB;W12H09)  (ブラウザからの通信時(縦全画面パッド表示))1
+               DoCoMo/2.0 F04B(c500;TB;W24H04)  (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 F04B(c500;TB;W21H04)  (ブラウザからの通信時(横画面パッド表示))1
+               DoCoMo/2.0 F04B(c500;TB;W12H05)  (ブラウザからの通信時(縦マルチ画面))1
+               DoCoMo/2.0 F04B(c500;TB;W12H04)  (ブラウザからの通信時(横マルチ画面パッド表示))1
+               DoCoMo/2.0 F04B(c500;SD)  (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 F04B(c500;TD)  (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 F04B(c500;SJ)  (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 F04B(c500;TJ)  (iアプリからの通信時(DoJaプロファイル)) 
+       -->
+       <device>
+      <device_id>F04B</device_id>
+      <device_name>DoCoMo F-04B</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
       <width>240</width>
-      <heigh>270</heigh>
+      <heigh>324</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
-
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>D505iS</device_id>
-      <device_name>D505iS</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
+      <wp_width>480</wp_width>
+      <wp_heigh>960</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 P01B(c500;TB;W24H16) (ブラウザからの通信時、ADF取得時(縦画面))
+               DoCoMo/2.0 P01B(c500;TB;W24H15) (ブラウザからの通信時、ADF取得時(縦画面))
+               DoCoMo/2.0 P01B(c500;TB;W42H08) (ブラウザからの通信時、ADF取得時(横画面))
+               DoCoMo/2.0 P01B(c500;TB;W20H13) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 P01B(c500;TB;W20H12) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 P01B(c500;TB;W35H07) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 P01B(c500;TB;W35H06) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 P01B(c500;TB;W30H20) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 P01B(c500;TB;W30H18) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 P01B(c500;TB;W53H11) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 P01B(c500;TB;W53H09) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 P01B(c500;TB;W16H11) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 P01B(c500;TB;W16H10) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 P01B(c500;TB;W28H05) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 P01B(c500;TB;W24H16) (トルカ詳細化時)
+               DoCoMo/2.0 P01B(c500;TB;W24H13) (トルカ詳細化時)
+               DoCoMo/2.0 P01B(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 P01B(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 P01B(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 P01B(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>P01B</device_id>
+      <device_name>DoCoMo P-01B</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
       <width>240</width>
-      <heigh>270</heigh>
+      <heigh>331</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>SO505i</device_id>
-      <device_name>SO505i</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>256</width>
-      <heigh>240</heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 P02B(c500;TB;W24H16) (ブラウザからの通信時、ADF取得時(縦画面))
+               DoCoMo/2.0 P02B(c500;TB;W42H08) (ブラウザからの通信時、ADF取得時(横画面))
+               DoCoMo/2.0 P02B(c500;TB;W20H13) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 P02B(c500;TB;W35H07) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 P02B(c500;TB;W30H20) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 P02B(c500;TB;W53H11) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 P02B(c500;TB;W16H11) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 P02B(c500;TB;W28H05) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 P02B(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 P02B(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 P02B(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 P02B(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>P02B</device_id>
+      <device_name>DoCoMo P-02B</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
+      <width>240</width>
+      <heigh>331</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>256</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>SO505iS</device_id>
-      <device_name>SO505iS</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 N01B(c500;TB;W24H16) (ブラウザからの通信時、ADF取得時)
+               DoCoMo/2.0 N01B(c500;TB;W20H13) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N01B(c500;TB;W30H20) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N01B(c500;TB;W16H10) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N01B(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 N01B(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 N01B(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 N01B(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>N01B</device_id>
+      <device_name>DoCoMo N-01B</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
       <width>240</width>
-      <heigh>256</heigh>
+      <heigh>320</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>SH505i</device_id>
-      <device_name>SH505i</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 N02B(c500;TB;W24H16) (ブラウザからの通信時、ADF取得時)
+               DoCoMo/2.0 N02B(c500;TB;W20H13) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N02B(c500;TB;W30H20) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N02B(c500;TB;W16H10) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N02B(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 N02B(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 N02B(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 N02B(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>N02B</device_id>
+      <device_name>DoCoMo N-02B</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
       <width>240</width>
-      <heigh>252</heigh>
+      <heigh>320</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>SH505iS</device_id>
-      <device_name>SH505iS</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 N03B(c500;TB;W24H16) (ブラウザからの通信時、ADF取得時)
+               DoCoMo/2.0 N03B(c500;TB;W20H13) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N03B(c500;TB;W30H20) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N03B(c500;TB;W16H10) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N03B(c500;SD) (JAR取得時(Starプロファイル))
+               DoCoMo/2.0 N03B(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 N03B(c500;SJ) (iアプリからの通信時(Starプロファイル))
+               DoCoMo/2.0 N03B(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>N03B</device_id>
+      <device_name>DoCoMo N-03B</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
       <width>240</width>
-      <heigh>252</heigh>
+      <heigh>320</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>N505i</device_id>
-      <device_name>N505i</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+
+       <!-- iモードブラウザ2.0 end -->
+       <!-- iモードブラウザ2.0LE start -->
+       <!--
+               DoCoMo/2.0 P03B(c500;TB;W24H16) (ブラウザからの通信時、ADF取得時(縦画面))
+               DoCoMo/2.0 P03B(c500;TB;W42H08) (ブラウザからの通信時、ADF取得時(横画面))
+               DoCoMo/2.0 P03B(c500;TB;W20H13) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 P03B(c500;TB;W35H07) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 P03B(c500;TB;W30H20) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 P03B(c500;TB;W53H11) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 P03B(c500;TB;W16H11) (ブラウザからの通信時、ADF取得時(縦画面))1
+               DoCoMo/2.0 P03B(c500;TB;W28H05) (ブラウザからの通信時、ADF取得時(横画面))1
+               DoCoMo/2.0 P03B(c500;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 P03B(c500;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>P03B</device_id>
+      <device_name>DoCoMo P-03B</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
       <width>240</width>
-      <heigh>270</heigh>
+      <heigh>331</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
-      <wp_heigh>270</wp_heigh>
-      <cache>20000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>N505iS</device_id>
-      <device_name>N505iS</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
+      <wp_heigh>427</wp_heigh>
+      <cache>512000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               DoCoMo/2.0 L01B(c500;TB;W24H16)  (ブラウザからの通信時(縦画面))
+               DoCoMo/2.0 L01B(c500;TB;W40H10)  (ブラウザからの通信時(横画面))
+               DoCoMo/2.0 L01B(c500;TB;W20H13)  (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 L01B(c500;TB;W33H09)  (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 L01B(c500;TB;W30H20)  (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 L01B(c500;TB;W50H13)  (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 L01B(c500;TB;W16H11)  (ブラウザからの通信時(縦画面))1
+               DoCoMo/2.0 L01B(c500;TB;W26H07)  (ブラウザからの通信時(横画面))1
+               DoCoMo/2.0 L01B(c500;TB;W21H11)  (ADF取得時)
+               DoCoMo/2.0 L01B(c500;TD)  (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 L01B(c500;TJ)  (iアプリからの通信時(DoJaプロファイル))
+       -->
+               <device>
+      <device_id>L01B</device_id>
+      <device_name>DoCoMo L-01B</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.2/IXHTML2.3 -->
       <width>240</width>
-      <heigh>270</heigh>
+      <heigh>330</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>240</wp_width>
-      <wp_heigh>270</wp_heigh>
-      <cache>20000</cache>
+      <wp_width>480</wp_width>
+      <wp_heigh>800</wp_heigh>
+      <cache>512000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <device>
-      <device_id>F505i</device_id>
-      <device_name>F505i</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
+
+       <!-- iモードブラウザ2.0LE end -->
+       
+       <!-- iモード対応HTML6.0(FOMA 902iなど) の追加分 start -->
+       <!--
+               DoCoMo/2.0 L03A(c100;TB;W16H09) (ブラウザからの通信時)
+               DoCoMo/2.0 L03A(c100;TB;W20H11) (ブラウザからの通信時)1
+               DoCoMo/2.0 L03A(c100;TB;W24H14) (ブラウザからの通信時)1
+               DoCoMo/2.0 L03A(c100;TB;W20H11) (ADF取得時)
+               DoCoMo/2.0 L03A(c100;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 L03A(c100;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+         <device>
+      <device_id>L03A</device_id>
+      <device_name>DoCoMo L-03A</device_name>
+      <html_spec_type>CHTML_6_0</html_spec_type><!-- IHTML6.0/IXHTML2.0 -->
       <width>240</width>
-      <heigh>268</heigh>
+      <heigh>280</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
-      <wp_heigh>268</wp_heigh>
-      <cache>20000</cache>
+      <wp_heigh>320</wp_heigh>
+      <cache>102400</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <device>
-      <device_id>F505iGPS</device_id>
-      <device_name>F505iGPS</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
+
+       <!--
+               DoCoMo/2.0 L04A(c100;TB;W24H15) (ブラウザからの通信時、ADF取得時)
+               DoCoMo/2.0 L04A(c100;TB;W20H13) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 L04A(c100;TB;W30H19) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 L04A(c100;TB;W16H10) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 L04A(c100;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 L04A(c100;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+         <device>
+      <device_id>L03A</device_id>
+      <device_name>DoCoMo L-03A</device_name>
+      <html_spec_type>CHTML_6_0</html_spec_type><!-- IHTML6.0/IXHTML2.0 -->
       <width>240</width>
-      <heigh>268</heigh>
+      <heigh>313</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
+      <wp_width>480</wp_width>
+      <wp_heigh>800</wp_heigh>
+      <cache>102400</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>268</wp_heigh>
-      <cache>20000</cache>
+       <!--
+               DoCoMo/2.0 L06A(c100;TB;W24H15) (ブラウザからの通信時、ADF取得時)
+               DoCoMo/2.0 L06A(c100;TB;W20H13) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 L06A(c100;TB;W30H19) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 L06A(c100;TB;W16H10) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 L06A(c100;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 L06A(c100;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>L06A</device_id>
+      <device_name>DoCoMo L-06A</device_name>
+      <html_spec_type>CHTML_6_0</html_spec_type><!-- IHTML6.0/IXHTML2.0 -->
+      <width>240</width>
+      <heigh>313</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+      <wp_width>480</wp_width>
+      <wp_heigh>800</wp_heigh>
+      <cache>102400</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <device>
-      <device_id>P505i</device_id>
-      <device_name>P505i</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
+       <!--
+               DoCoMo/2.0 L02B(c100;TB;W24H16) (ブラウザからの通信時)
+               DoCoMo/2.0 L02B(c100;TB;W20H13) (ブラウザからの通信時)1
+               DoCoMo/2.0 L02B(c100;TB;W30H20) (ブラウザからの通信時)1
+               DoCoMo/2.0 L02B(c100;TB;W16H11) (ブラウザからの通信時)1
+               DoCoMo/2.0 L02B(c100;TB;W21H11) (ADF取得時)1
+               DoCoMo/2.0 L02B(c100;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 L02B(c100;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>L02B</device_id>
+      <device_name>DoCoMo L-02B</device_name>
+      <html_spec_type>CHTML_6_0</html_spec_type><!-- IHTML6.0/IXHTML2.0 -->
       <width>240</width>
-      <heigh>266</heigh>
+      <heigh>330</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
+      <wp_width>480</wp_width>
+      <wp_heigh>800</wp_heigh>
+      <cache>102400</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <device>
-      <device_id>P505iS</device_id>
-      <device_name>P505iS</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
+       <!--
+               DoCoMo/2.0 L03B(c100;TB;W24H16) (ブラウザからの通信時)
+               DoCoMo/2.0 L03B(c100;TB;W20H13) (ブラウザからの通信時)1
+               DoCoMo/2.0 L03B(c100;TB;W30H20) (ブラウザからの通信時)1
+               DoCoMo/2.0 L03B(c100;TB;W16H11) (ブラウザからの通信時)1
+               DoCoMo/2.0 L03B(c100;TB;W21H11) (ADF取得時)
+               DoCoMo/2.0 L03B(c100;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 L03B(c100;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+       <device>
+      <device_id>L03B</device_id>
+      <device_name>DoCoMo L-03B</device_name>
+      <html_spec_type>CHTML_6_0</html_spec_type><!-- IHTML6.0/IXHTML2.0 -->
       <width>240</width>
-      <heigh>266</heigh>
+      <heigh>330</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
+      <wp_width>480</wp_width>
+      <wp_heigh>800</wp_heigh>
+      <cache>102400</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       
+       <!-- iモード対応HTML6.0(FOMA 902iなど) の追加分 end -->
 
+       <!-- iモード対応HTML7.1(FOMA 905iなど) の追加分 start -->
+       <!--
+               DoCoMo/2.0 N05A(c100;TB;W20H13) (ブラウザからの通信時、ADF取得時)
+               DoCoMo/2.0 N05A(c100;TB;W24H16) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N05A(c100;TB;W30H20) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N05A(c100;TB;W16H10) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 N05A(c100;TB;W24H16) (トルカ詳細化時)
+               DoCoMo/2.0 N05A(c100;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 N05A(c100;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->
+    <device>
+      <device_id>N05A</device_id>
+      <device_name>DoCoMo N-05A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.1/IXHTML2.2 -->
+      <width>240</width>
+      <heigh>320</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
+      <wp_heigh>427</wp_heigh>
+      <cache>102400</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+       <!--
+       F-07A(らくらくホン ベーシックII)
+               DoCoMo/2.0 F07A(c100;TB;W20H08) (ブラウザからの通信時)
+               DoCoMo/2.0 F07A(c100;TB;W16H08) (ブラウザからの通信時)1
+       -->
     <device>
-      <device_id>D252i</device_id>
-      <device_name>D252i</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>176</width>
-      <heigh>198</heigh>
+      <device_id>F07A</device_id>
+      <device_name>DoCoMo F-07A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.1/IXHTML2.2 -->
+      <width>240</width>
+      <heigh>256</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>176</wp_width>
-      <wp_heigh>240</wp_heigh>
-      <cache>10000</cache>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>102400</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+       <!--
+       F-10A(らくらくホン6)
+               DoCoMo/2.0 F10A(c100;TB;W20H09) (ブラウザからの通信時、ADF取得時)
+               DoCoMo/2.0 F10A(c100;TB;W16H09) (ブラウザからの通信時、ADF取得時)1
+               DoCoMo/2.0 F10A(c100;TD) (JAR取得時(DoJaプロファイル))
+               DoCoMo/2.0 F10A(c100;TJ) (iアプリからの通信時(DoJaプロファイル))
+       -->     
     <device>
-      <device_id>SH252i</device_id>
-      <device_name>SH252i</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
+      <device_id>F10A</device_id>
+      <device_name>DoCoMo F-10A</device_name>
+      <html_spec_type>CHTML_7_0</html_spec_type><!-- IHTML7.1/IXHTML2.2 -->
       <width>240</width>
-      <heigh>252</heigh>
+      <heigh>330</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>10000</cache>
+      <wp_heigh>400</wp_heigh>
+      <cache>102400</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+       <!-- iモード対応HTML7.1(FOMA 905iなど) の追加分 end -->
+       
+       <!-- OSAKANA TARO add end -->
+       
+       
     <device>
-      <device_id>P252i</device_id>
-      <device_name>P252i</device_name>
+      <device_id>UNKNOWN_DEVICE</device_id>
+      <device_name>UNKNOWN DoCoMo Device</device_name>
       <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>132</width>
-      <heigh>144</heigh>
+      <width>118</width>
+      <heigh>128</heigh>
       <gif>true</gif>
-      <jpeg>true</jpeg>
+      <jpeg>false</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>4096</color>
       <emoji_type></emoji_type>
 
-      <wp_width>132</wp_width>
-      <wp_heigh>176</wp_heigh>
-      <cache>10000</cache>
+      <wp_width>120</wp_width>
+      <wp_heigh>130</wp_heigh>
+      <cache>100000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
+  </user_agent>
+
+
+
+  <user_agent pattern="^DoCoMo/1.0/([^   /]+)/c[0-9][0-9]/TB$">
     <device>
-      <device_id>N252i</device_id>
-      <device_name>N252i</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
+      <device_id>F504i</device_id>
+      <device_name>F504i</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
       <width>132</width>
-      <heigh>140</heigh>
+      <heigh>136</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <emoji_type></emoji_type>
 
       <wp_width>132</wp_width>
-      <wp_heigh>158</wp_heigh>
+      <wp_heigh>136</wp_heigh>
       <cache>10000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>P252iS</device_id>
-      <device_name>P252iS</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
+      <device_id>F504iS</device_id>
+      <device_name>F504iS</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
       <width>132</width>
-      <heigh>144</heigh>
+      <heigh>136</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>D253i</device_id>
-      <device_name>D253i</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>176</width>
-      <heigh>198</heigh>
+      <device_id>N504i</device_id>
+      <device_name>N504i</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>160</width>
+      <heigh>180</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>176</wp_width>
-      <wp_heigh>240</wp_heigh>
+      <wp_width>160</wp_width>
+      <wp_heigh>200</wp_heigh>
       <cache>10000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>N253i</device_id>
-      <device_name>N253i</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
+      <device_id>N504iS</device_id>
+      <device_name>N504iS</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
       <width>160</width>
       <heigh>180</heigh>
       <gif>true</gif>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>P253i</device_id>
-      <device_name>P253i</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>132</width>
-      <heigh>144</heigh>
+      <device_id>SO504i</device_id>
+      <device_name>SO504i</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>120</width>
+      <heigh>112</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>132</wp_width>
-      <wp_heigh>176</wp_heigh>
+      <wp_width>120</wp_width>
+      <wp_heigh>128</wp_heigh>
       <cache>10000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
     <device>
-      <device_id>D253iWM</device_id>
-      <device_name>MusicPORTER(D253iWM)</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>220</width>
+      <device_id>P504i</device_id>
+      <device_name>P504i</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>132</width>
       <heigh>144</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>220</wp_width>
-      <wp_heigh>176</wp_heigh>
+      <wp_width>132</wp_width>
+      <wp_heigh>144</wp_heigh>
       <cache>10000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>P253iS</device_id>
-      <device_name>Lechiffon(P253iS)</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
+      <device_id>P504iS</device_id>
+      <device_name>P504iS</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
       <width>132</width>
       <heigh>144</heigh>
       <gif>true</gif>
       <emoji_type></emoji_type>
 
       <wp_width>132</wp_width>
-      <wp_heigh>176</wp_heigh>
+      <wp_heigh>144</wp_heigh>
       <cache>10000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>D506i</device_id>
-      <device_name>D506i</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>240</width>
-      <heigh>270</heigh>
+      <device_id>SH251i</device_id>
+      <device_name>SH251i</device_name>
+      <html_spec_type>CHTML_3_0</html_spec_type>
+      <width>120</width>
+      <heigh>130</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
+      <wp_width>132</wp_width>
+      <wp_heigh>160</wp_heigh>
+      <cache>10000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>F506i</device_id>
-      <device_name>F506i</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>240</width>
-      <heigh>268</heigh>
+      <device_id>SH251iS</device_id>
+      <device_name>SH251iS</device_name>
+      <html_spec_type>CHTML_3_0</html_spec_type>
+      <width>176</width>
+      <heigh>187</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>268</wp_heigh>
-      <cache>20000</cache>
+      <wp_width>176</wp_width>
+      <wp_heigh>220</wp_heigh>
+      <cache>10000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>N506i</device_id>
-      <device_name>N506i</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>240</width>
-      <heigh>295</heigh>
+      <device_id>D251i</device_id>
+      <device_name>D251i</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>132</width>
+      <heigh>144</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
+      <wp_width>132</wp_width>
+      <wp_heigh>160</wp_heigh>
+      <cache>10000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>P506iC</device_id>
-      <device_name>P506iC</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>240</width>
-      <heigh>266</heigh>
-      <gif>true</gif>
+      <device_id>D251iS</device_id>
+      <device_name>D251iS</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>132</width>
+      <heigh>144</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>132</wp_width>
+      <wp_heigh>160</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>F251i</device_id>
+      <device_name>F251i</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>132</width>
+      <heigh>140</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
+      <wp_width>132</wp_width>
+      <wp_heigh>156</wp_heigh>
+      <cache>10000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>SH506iC</device_id>
-      <device_name>SH506iC</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>240</width>
-      <heigh>252</heigh>
+      <device_id>N251i</device_id>
+      <device_name>N251i</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>132</width>
+      <heigh>140</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
+      <wp_width>132</wp_width>
+      <wp_heigh>159</wp_heigh>
+      <cache>10000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>SO506iC</device_id>
-      <device_name>SO506iC</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>240</width>
-      <heigh>256</heigh>
+      <device_id>N251iS</device_id>
+      <device_name>N251iS</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>132</width>
+      <heigh>140</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
+      <wp_width>132</wp_width>
+      <wp_heigh>158</wp_heigh>
+      <cache>10000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>N506iS</device_id>
-      <device_name>N506iS</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>240</width>
-      <heigh>295</heigh>
+      <device_id>P251iS</device_id>
+      <device_name>P251iS</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>132</width>
+      <heigh>144</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
+      <wp_width>132</wp_width>
+      <wp_heigh>176</wp_heigh>
+      <cache>10000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>N506iS2</device_id>
-      <device_name>N506iSII</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>240</width>
-      <heigh>295</heigh>
+      <device_id>F671iS</device_id>
+      <device_name>F671iS</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>160</width>
+      <heigh>120</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
+      <wp_width>160</wp_width>
+      <wp_heigh>120</wp_heigh>
+      <cache>10000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>SO506i</device_id>
-      <device_name>premini-II SO506i</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>240</width>
-      <heigh>256</heigh>
+      <device_id>SO212i</device_id>
+      <device_name>SO212i</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>120</width>
+      <heigh>112</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
+      <wp_width>128</wp_width>
+      <wp_heigh>128</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>F212i</device_id>
+      <device_name>F212i</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>132</width>
+      <heigh>136</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>132</wp_width>
+      <wp_heigh>156</wp_heigh>
+      <cache>10000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+    <device>
+      <device_id>F661i</device_id>
+      <device_name>F661i</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>132</width>
+      <heigh>136</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
 
-    <!-- Sale 2005.5 mova premini-IIS(SO506iS) -->
+      <wp_width>132</wp_width>
+      <wp_heigh>156</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
     <device>
-      <device_id>SO506iS</device_id>
-      <device_name>premini-IIS SO506iS</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>240</width>
-      <heigh>256</heigh>
+      <device_id>F672i</device_id>
+      <device_name>F672i</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>160</width>
+      <heigh>120</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>false</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
+      <wp_width>160</wp_width>
+      <wp_heigh>120</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>SO213i</device_id>
+      <device_name>premini (SO213i)</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>120</width>
+      <heigh>112</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>128</wp_width>
+      <wp_heigh>128</wp_heigh>
+      <cache>10000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+    <device>
+      <device_id>SO213iS</device_id>
+      <device_name>premini-S (SO213iS)</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>120</width>
+      <heigh>112</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
 
-    <!-- Sale in 2006.3 N506iSII -->
-    <!--
-      DoCoMo/1.0/N506iS2/c20/TB/W20H11
-      DoCoMo/1.0/N506iS2/c20/TB/W16H09
-      DoCoMo/1.0/N506iS2/c20/TB/W30H15
-    -->
+      <wp_width>128</wp_width>
+      <wp_heigh>128</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
     <device>
-      <device_id>N506iS2</device_id>
-      <device_name>N506iSII</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>240</width>
-      <heigh>295</heigh>
+      <device_id>N2701</device_id>
+      <device_name>N2701</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>176</width>
+      <heigh>198</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <emoji_type></emoji_type>
+
+      <wp_width>176</wp_width>
+      <wp_heigh>198</wp_heigh>
+      <cache>100000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+
+    <!-- Sale in 2005.10 RADIDEN(SO213iWR) -->
+    <device>
+      <device_id>SO213iWR</device_id>
+      <device_name>SO213iWR</device_name>
+      <html_spec_type>CHTML_4_0</html_spec_type>
+      <width>120</width>
+      <heigh>112</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
-      <png>false</png>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <emoji_type></emoji_type>
+
+      <wp_width>128</wp_width>
+      <wp_heigh>128</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+
+  </user_agent>
+
+
+
+  <user_agent pattern="^DoCoMo/1.0/([^   /]+)/c[0-9][0-9]/TB/W[0-9][0-9]H[0-9][0-9]$$">
+    <device>
+      <device_id>P213i</device_id>
+      <device_name>prosolid(P213i)</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>132</width>
+      <heigh>144</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <emoji_type></emoji_type>
+
+      <wp_width>132</wp_width>
+      <wp_heigh>176</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>D505i</device_id>
+      <device_name>D505i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>270</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>D505iS</device_id>
+      <device_name>D505iS</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>270</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>SO505i</device_id>
+      <device_name>SO505i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>256</width>
+      <heigh>240</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>256</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>SO505iS</device_id>
+      <device_name>SO505iS</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>256</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>SH505i</device_id>
+      <device_name>SH505i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>252</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>SH505iS</device_id>
+      <device_name>SH505iS</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>252</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>N505i</device_id>
+      <device_name>N505i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>270</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>270</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>N505iS</device_id>
+      <device_name>N505iS</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>270</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>270</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>F505i</device_id>
+      <device_name>F505i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>268</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>268</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>F505iGPS</device_id>
+      <device_name>F505iGPS</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>268</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>268</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>P505i</device_id>
+      <device_name>P505i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>266</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>P505iS</device_id>
+      <device_name>P505iS</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>266</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>D252i</device_id>
+      <device_name>D252i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>176</width>
+      <heigh>198</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>176</wp_width>
+      <wp_heigh>240</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>SH252i</device_id>
+      <device_name>SH252i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>252</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>P252i</device_id>
+      <device_name>P252i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>132</width>
+      <heigh>144</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>132</wp_width>
+      <wp_heigh>176</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>N252i</device_id>
+      <device_name>N252i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>132</width>
+      <heigh>140</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>132</wp_width>
+      <wp_heigh>158</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>P252iS</device_id>
+      <device_name>P252iS</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>132</width>
+      <heigh>144</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>132</wp_width>
+      <wp_heigh>176</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>D253i</device_id>
+      <device_name>D253i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>176</width>
+      <heigh>198</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>176</wp_width>
+      <wp_heigh>240</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>N253i</device_id>
+      <device_name>N253i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>160</width>
+      <heigh>180</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>160</wp_width>
+      <wp_heigh>198</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>P253i</device_id>
+      <device_name>P253i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>132</width>
+      <heigh>144</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>132</wp_width>
+      <wp_heigh>176</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>D253iWM</device_id>
+      <device_name>MusicPORTER(D253iWM)</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>220</width>
+      <heigh>144</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>220</wp_width>
+      <wp_heigh>176</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>P253iS</device_id>
+      <device_name>Lechiffon(P253iS)</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>132</width>
+      <heigh>144</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>132</wp_width>
+      <wp_heigh>176</wp_heigh>
+      <cache>10000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>D506i</device_id>
+      <device_name>D506i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>270</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>F506i</device_id>
+      <device_name>F506i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>268</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>268</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>N506i</device_id>
+      <device_name>N506i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>295</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>P506iC</device_id>
+      <device_name>P506iC</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>266</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>SH506iC</device_id>
+      <device_name>SH506iC</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>252</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>SO506iC</device_id>
+      <device_name>SO506iC</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>256</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>N506iS</device_id>
+      <device_name>N506iS</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>295</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>N506iS2</device_id>
+      <device_name>N506iSII</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>295</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>SO506i</device_id>
+      <device_name>premini-II SO506i</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>256</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+
+    <!-- Sale 2005.5 mova premini-IIS(SO506iS) -->
+    <device>
+      <device_id>SO506iS</device_id>
+      <device_name>premini-IIS SO506iS</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>256</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+
+    <!-- Sale in 2006.3 N506iSII -->
+    <!--
+      DoCoMo/1.0/N506iS2/c20/TB/W20H11
+      DoCoMo/1.0/N506iS2/c20/TB/W16H09
+      DoCoMo/1.0/N506iS2/c20/TB/W30H15
+    -->
+    <device>
+      <device_id>N506iS2</device_id>
+      <device_name>N506iSII</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>295</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+
+    <!-- Sale in 2006.4 P506iCII -->
+    <!--
+      DoCoMo/1.0/P506iC/c20/TB/W20H10
+      DoCoMo/1.0/P506iC/c20/TB/W30H14
+    -->
+    <device>
+      <device_id>P506iCII</device_id>
+      <device_name>P506iCII</device_name>
+      <html_spec_type>CHTML_5_0</html_spec_type>
+      <width>240</width>
+      <heigh>266</heigh>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>false</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>20000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+
+  </user_agent>
+
+  <!--=======================================================================-->
+  <!-- Softbank/Vodafone/J-Phone                                             -->
+  <!--=======================================================================-->
+  <user_agent pattern="^J-PHONE/[^/ ]+/([^/_]+)$">
+    <!-- C2 -->
+    <device>
+      <device_id>J-SH02</device_id>
+      <device_name>J-SH02</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>96</width>
+      <heigh>89</heigh>
+      <gif>false</gif>
+      <jpeg>false</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>96</wp_width>
+      <wp_heigh>84</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-DN02</device_id>
+      <device_name>J-DN02</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>116</width>
+      <heigh>122</heigh>
+      <gif>false</gif>
+      <jpeg>false</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>4</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>94</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-P02</device_id>
+      <device_name>J-P02</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>96</width>
+      <heigh>89</heigh>
+      <gif>false</gif>
+      <jpeg>false</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>4</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>96</wp_width>
+      <wp_heigh>78</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-SA02</device_id>
+      <device_name>J-SA02</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>96</width>
+      <heigh>76</heigh>
+      <gif>false</gif>
+      <jpeg>false</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>96</wp_width>
+      <wp_heigh>80</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-SH03</device_id>
+      <device_name>J-SH03</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>96</width>
+      <heigh>104</heigh>
+      <gif>false</gif>
+      <jpeg>false</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>96</wp_width>
+      <wp_heigh>84</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-T04</device_id>
+      <device_name>J-T04</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>96</width>
+      <heigh>90</heigh>
+      <gif>false</gif>
+      <jpeg>false</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>96</wp_width>
+      <wp_heigh>90</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-P03</device_id>
+      <device_name>J-P03</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>96</width>
+      <heigh>95</heigh>
+      <gif>false</gif>
+      <jpeg>false</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>96</wp_width>
+      <wp_heigh>95</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <!-- C3 -->
+    <device>
+      <device_id>J-K03</device_id>
+      <device_name>J-K03</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>110</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>110</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-K03S</device_id>
+      <device_name>J-K03S</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>110</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>110</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-D03</device_id>
+      <device_name>J-D03</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>117</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>130</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-D03S</device_id>
+      <device_name>J-D03S</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>117</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>130</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-PE03</device_id>
+      <device_name>J-PE03</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>96</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>126</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-PE03S</device_id>
+      <device_name>J-PE03S</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>96</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>126</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-SH04</device_id>
+      <device_name>J-SH04</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>96</width>
+      <heigh>104</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>96</wp_width>
+      <wp_heigh>130</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-SH04S</device_id>
+      <device_name>J-SH04S</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>96</width>
+      <heigh>104</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>96</wp_width>
+      <wp_heigh>130</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-SH04B</device_id>
+      <device_name>J-SH04B</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>96</width>
+      <heigh>104</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>96</wp_width>
+      <wp_heigh>130</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-SH04BS</device_id>
+      <device_name>J-SH04BS</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>96</width>
+      <heigh>104</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>96</wp_width>
+      <wp_heigh>130</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-SH05</device_id>
+      <device_name>J-SH05</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>117</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>160</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-SH05S</device_id>
+      <device_name>J-SH05S</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>117</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>160</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-N03</device_id>
+      <device_name>J-N03</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>126</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>126</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-N03S</device_id>
+      <device_name>J-N03S</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>126</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>126</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-T05</device_id>
+      <device_name>J-T05</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>112</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>128</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-K04</device_id>
+      <device_name>J-K04</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>110</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>110</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-D04</device_id>
+      <device_name>J-D04</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>117</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>130</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-PE03II</device_id>
+      <device_name>J-PE03II</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>96</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>126</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-SH06</device_id>
+      <device_name>J-SH06</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>96</width>
+      <heigh>104</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>96</wp_width>
+      <wp_heigh>130</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-SA03</device_id>
+      <device_name>J-SA03</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>126</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>128</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-DN03</device_id>
+      <device_name>J-DN03</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>130</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>130</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-NM01</device_id>
+      <device_name>J-NM01</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>126</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>128</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-N03II</device_id>
+      <device_name>J-N03II</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>126</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>126</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-D31</device_id>
+      <device_name>J-D31</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>117</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>117</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-SA04</device_id>
+      <device_name>J-SA04</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>130</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>120</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-K05</device_id>
+      <device_name>J-K05</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>110</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>256</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>110</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-NM02</device_id>
+      <device_name>J-NM02</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>130</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>128</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-SA05</device_id>
+      <device_name>J-SA05</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>120</width>
+      <heigh>112</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>120</wp_width>
+      <wp_heigh>112</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-T07</device_id>
+      <device_name>J-T07</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>144</width>
+      <heigh>136</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>144</wp_width>
+      <wp_heigh>176</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-T09</device_id>
+      <device_name>J-T09</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>144</width>
+      <heigh>144</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>144</wp_width>
+      <wp_heigh>176</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>J-SA06</device_id>
+      <device_name>J-SA06</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>132</width>
+      <heigh>144</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>65536</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>132</wp_width>
+      <wp_heigh>176</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>V301T</device_id>
+      <device_name>V301T</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>222</width>
+      <heigh>261</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+    <device>
+      <device_id>V301D</device_id>
+      <device_name>V301D</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>132</width>
+      <heigh>136</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <color>262144</color>
+      <emoji_type></emoji_type>
+
+      <wp_width>132</wp_width>
+      <wp_heigh>153</wp_heigh>
+      <cache>6000</cache>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
+    </device>
+    <device>
+      <device_id>V302T</device_id>
+      <device_name>V302T</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>144</width>
+      <heigh>140</heigh>
+      <gif>false</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
+      <wp_width>144</wp_width>
+      <wp_heigh>176</wp_heigh>
+      <cache>6000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!-- Sale in 2006.4 P506iCII -->
-    <!--
-      DoCoMo/1.0/P506iC/c20/TB/W20H10
-      DoCoMo/1.0/P506iC/c20/TB/W30H14
-    -->
     <device>
-      <device_id>P506iCII</device_id>
-      <device_name>P506iCII</device_name>
-      <html_spec_type>CHTML_5_0</html_spec_type>
-      <width>240</width>
-      <heigh>266</heigh>
-      <gif>true</gif>
+      <device_id>KOTO</device_id>
+      <device_name>KOTO</device_name>
+      <html_spec_type>JHTML</html_spec_type>
+      <width>222</width>
+      <heigh>320</heigh>
+      <gif>false</gif>
       <jpeg>true</jpeg>
-      <png>false</png>
+      <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
-      <cache>20000</cache>
+      <cache>6000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-  </user_agent>
-
-  <!--=======================================================================-->
-  <!-- Softbank/Vodafone/J-Phone                                             -->
-  <!--=======================================================================-->
-  <user_agent pattern="^J-PHONE/[^/ ]+/([^/_]+)$">
-    <!-- C2 -->
     <device>
-      <device_id>J-SH02</device_id>
-      <device_name>J-SH02</device_name>
+      <device_id>V303T</device_id>
+      <device_name>V303T</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>89</heigh>
+      <width>222</width>
+      <heigh>320</heigh>
       <gif>false</gif>
-      <jpeg>false</jpeg>
+      <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>84</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!-- C4 -->
     <device>
-      <device_id>J-DN02</device_id>
-      <device_name>J-DN02</device_name>
+      <device_id>J-SH07</device_id>
+      <device_name>J-SH07</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>116</width>
-      <heigh>122</heigh>
+      <width>120</width>
+      <heigh>117</heigh>
       <gif>false</gif>
-      <jpeg>false</jpeg>
+      <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>4</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>94</wp_heigh>
+      <wp_heigh>160</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-P02</device_id>
-      <device_name>J-P02</device_name>
+      <device_id>J-T06</device_id>
+      <device_name>J-T06</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>89</heigh>
+      <width>120</width>
+      <heigh>126</heigh>
       <gif>false</gif>
-      <jpeg>false</jpeg>
+      <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>4</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>78</wp_heigh>
+      <wp_width>120</wp_width>
+      <wp_heigh>143</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SA02</device_id>
-      <device_name>J-SA02</device_name>
+      <device_id>J-D05</device_id>
+      <device_name>J-D05</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>76</heigh>
+      <width>132</width>
+      <heigh>126</heigh>
       <gif>false</gif>
-      <jpeg>false</jpeg>
+      <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>4096</color>
       <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>80</wp_heigh>
+      <wp_width>140</wp_width>
+      <wp_heigh>132</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH03</device_id>
-      <device_name>J-SH03</device_name>
+      <device_id>J-D06</device_id>
+      <device_name>J-D06</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>104</heigh>
+      <width>132</width>
+      <heigh>126</heigh>
       <gif>false</gif>
-      <jpeg>false</jpeg>
+      <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>4096</color>
       <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>84</wp_heigh>
+      <wp_width>132</wp_width>
+      <wp_heigh>137</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-T04</device_id>
-      <device_name>J-T04</device_name>
+      <device_id>J-N04</device_id>
+      <device_name>J-N04</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>90</heigh>
+      <width>120</width>
+      <heigh>126</heigh>
       <gif>false</gif>
-      <jpeg>false</jpeg>
+      <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>4096</color>
       <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>90</wp_heigh>
+      <wp_width>120</wp_width>
+      <wp_heigh>126</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-P03</device_id>
-      <device_name>J-P03</device_name>
+      <device_id>J-N05</device_id>
+      <device_name>J-N05</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>95</heigh>
+      <width>160</width>
+      <heigh>180</heigh>
       <gif>false</gif>
-      <jpeg>false</jpeg>
+      <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>95</wp_heigh>
+      <wp_width>159</wp_width>
+      <wp_heigh>179</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- C3 -->
     <device>
-      <device_id>J-K03</device_id>
-      <device_name>J-K03</device_name>
+      <device_id>J-SH08</device_id>
+      <device_name>J-SH08</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>110</heigh>
+      <heigh>117</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>110</wp_heigh>
+      <wp_heigh>160</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-K03S</device_id>
-      <device_name>J-K03S</device_name>
+      <device_id>J-SH09</device_id>
+      <device_name>J-SH09</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>110</heigh>
+      <heigh>130</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>110</wp_heigh>
+      <wp_heigh>160</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-D03</device_id>
-      <device_name>J-D03</device_name>
+      <device_id>J-T08</device_id>
+      <device_name>J-T08</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>117</heigh>
+      <width>222</width>
+      <heigh>261</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>130</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-D03S</device_id>
-      <device_name>J-D03S</device_name>
+      <device_id>J-SH10</device_id>
+      <device_name>J-SH010</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>117</heigh>
+      <width>240</width>
+      <heigh>260</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>130</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
-    <device>
-      <device_id>J-PE03</device_id>
-      <device_name>J-PE03</device_name>
+    <device>
+      <device_id>J-D08</device_id>
+      <device_name>J-D08</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>96</heigh>
+      <width>132</width>
+      <heigh>136</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>126</wp_heigh>
+      <wp_width>132</wp_width>
+      <wp_heigh>136</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-PE03S</device_id>
-      <device_name>J-PE03S</device_name>
+      <device_id>J-T10</device_id>
+      <device_name>J-T010</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>96</heigh>
+      <width>222</width>
+      <heigh>261</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>126</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH04</device_id>
-      <device_name>J-SH04</device_name>
+      <device_id>V401SH</device_id>
+      <device_name>V401SH</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>104</heigh>
+      <width>222</width>
+      <heigh>260</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>130</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+  </user_agent>
+  <user_agent pattern="^J-PHONE/[^/ ]+/([^/_]+)_.+$">
+    <!-- C2 -->
     <device>
-      <device_id>J-SH04S</device_id>
-      <device_name>J-SH04S</device_name>
+      <device_id>J-SH02</device_id>
+      <device_name>J-SH02</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>96</width>
-      <heigh>104</heigh>
+      <heigh>89</heigh>
       <gif>false</gif>
-      <jpeg>true</jpeg>
+      <jpeg>false</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
       <emoji_type></emoji_type>
 
       <wp_width>96</wp_width>
-      <wp_heigh>130</wp_heigh>
+      <wp_heigh>84</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH04B</device_id>
-      <device_name>J-SH04B</device_name>
+      <device_id>J-DN02</device_id>
+      <device_name>J-DN02</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>104</heigh>
+      <width>116</width>
+      <heigh>122</heigh>
       <gif>false</gif>
-      <jpeg>true</jpeg>
+      <jpeg>false</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>4</color>
       <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>130</wp_heigh>
+      <wp_width>120</wp_width>
+      <wp_heigh>94</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH04BS</device_id>
-      <device_name>J-SH04BS</device_name>
+      <device_id>J-P02</device_id>
+      <device_name>J-P02</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>96</width>
-      <heigh>104</heigh>
+      <heigh>89</heigh>
       <gif>false</gif>
-      <jpeg>true</jpeg>
+      <jpeg>false</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>4</color>
       <emoji_type></emoji_type>
 
       <wp_width>96</wp_width>
-      <wp_heigh>130</wp_heigh>
+      <wp_heigh>78</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH05</device_id>
-      <device_name>J-SH05</device_name>
+      <device_id>J-SA02</device_id>
+      <device_name>J-SA02</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>117</heigh>
+      <width>96</width>
+      <heigh>76</heigh>
       <gif>false</gif>
-      <jpeg>true</jpeg>
+      <jpeg>false</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>160</wp_heigh>
+      <wp_width>96</wp_width>
+      <wp_heigh>80</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH05S</device_id>
-      <device_name>J-SH05S</device_name>
+      <device_id>J-SH03</device_id>
+      <device_name>J-SH03</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>117</heigh>
+      <width>96</width>
+      <heigh>104</heigh>
       <gif>false</gif>
-      <jpeg>true</jpeg>
+      <jpeg>false</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>160</wp_heigh>
+      <wp_width>96</wp_width>
+      <wp_heigh>84</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-N03</device_id>
-      <device_name>J-N03</device_name>
+      <device_id>J-T04</device_id>
+      <device_name>J-T04</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>126</heigh>
+      <width>96</width>
+      <heigh>90</heigh>
       <gif>false</gif>
-      <jpeg>true</jpeg>
+      <jpeg>false</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
       <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>126</wp_heigh>
+      <wp_width>96</wp_width>
+      <wp_heigh>90</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-N03S</device_id>
-      <device_name>J-N03S</device_name>
+      <device_id>J-P03</device_id>
+      <device_name>J-P03</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>126</heigh>
+      <width>96</width>
+      <heigh>95</heigh>
       <gif>false</gif>
-      <jpeg>true</jpeg>
+      <jpeg>false</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
       <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>126</wp_heigh>
+      <wp_width>96</wp_width>
+      <wp_heigh>95</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-T05</device_id>
-      <device_name>J-T05</device_name>
+      <device_id>J-SA04</device_id>
+      <device_name>J-SA04</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>112</heigh>
+      <heigh>130</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>128</wp_heigh>
+      <wp_heigh>120</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
+    <!-- C3 -->
     <device>
-      <device_id>J-K04</device_id>
-      <device_name>J-K04</device_name>
+      <device_id>J-K03</device_id>
+      <device_name>J-K03</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
       <heigh>110</heigh>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-D04</device_id>
-      <device_name>J-D04</device_name>
+      <device_id>J-K03S</device_id>
+      <device_name>J-K03S</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>117</heigh>
+      <heigh>110</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>130</wp_heigh>
+      <wp_heigh>110</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-PE03II</device_id>
-      <device_name>J-PE03II</device_name>
+      <device_id>J-D03</device_id>
+      <device_name>J-D03</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>96</heigh>
+      <heigh>117</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>126</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
-    </device>
-    <device>
-      <device_id>J-SH06</device_id>
-      <device_name>J-SH06</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>104</heigh>
-      <gif>false</gif>
-      <jpeg>true</jpeg>
-      <png>true</png>
-      <bmp2>false</bmp2>
-      <bmp4>false</bmp4>
-      <color>65536</color>
-      <emoji_type></emoji_type>
-
-      <wp_width>96</wp_width>
       <wp_heigh>130</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SA03</device_id>
-      <device_name>J-SA03</device_name>
+      <device_id>J-D03S</device_id>
+      <device_name>J-D03S</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>126</heigh>
+      <heigh>117</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>128</wp_heigh>
+      <wp_heigh>130</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-DN03</device_id>
-      <device_name>J-DN03</device_name>
+      <device_id>J-PE03</device_id>
+      <device_name>J-PE03</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>130</heigh>
+      <heigh>96</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>130</wp_heigh>
+      <wp_heigh>126</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-NM01</device_id>
-      <device_name>J-NM01</device_name>
+      <device_id>J-PE03S</device_id>
+      <device_name>J-PE03S</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>126</heigh>
+      <heigh>96</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>128</wp_heigh>
+      <wp_heigh>126</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-N03II</device_id>
-      <device_name>J-N03II</device_name>
+      <device_id>J-SH04</device_id>
+      <device_name>J-SH04</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>126</heigh>
+      <width>96</width>
+      <heigh>104</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>126</wp_heigh>
+      <wp_width>96</wp_width>
+      <wp_heigh>130</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-D31</device_id>
-      <device_name>J-D31</device_name>
+      <device_id>J-SH04S</device_id>
+      <device_name>J-SH04S</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>117</heigh>
+      <width>96</width>
+      <heigh>104</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>117</wp_heigh>
+      <wp_width>96</wp_width>
+      <wp_heigh>130</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SA04</device_id>
-      <device_name>J-SA04</device_name>
+      <device_id>J-SH04B</device_id>
+      <device_name>J-SH04B</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>130</heigh>
+      <width>96</width>
+      <heigh>104</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>120</wp_heigh>
+      <wp_width>96</wp_width>
+      <wp_heigh>130</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-K05</device_id>
-      <device_name>J-K05</device_name>
+      <device_id>J-SH04BS</device_id>
+      <device_name>J-SH04BS</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>110</heigh>
+      <width>96</width>
+      <heigh>104</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>110</wp_heigh>
+      <wp_width>96</wp_width>
+      <wp_heigh>130</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-NM02</device_id>
-      <device_name>J-NM02</device_name>
+      <device_id>J-SH05</device_id>
+      <device_name>J-SH05</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>130</heigh>
+      <heigh>117</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>128</wp_heigh>
+      <wp_heigh>160</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SA05</device_id>
-      <device_name>J-SA05</device_name>
+      <device_id>J-SH05S</device_id>
+      <device_name>J-SH05S</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>112</heigh>
+      <heigh>117</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>112</wp_heigh>
+      <wp_heigh>160</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-T07</device_id>
-      <device_name>J-T07</device_name>
+      <device_id>J-N03</device_id>
+      <device_name>J-N03</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>144</width>
-      <heigh>136</heigh>
+      <width>120</width>
+      <heigh>126</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>144</wp_width>
-      <wp_heigh>176</wp_heigh>
+      <wp_width>120</wp_width>
+      <wp_heigh>126</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-T09</device_id>
-      <device_name>J-T09</device_name>
+      <device_id>J-N03S</device_id>
+      <device_name>J-N03S</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>144</width>
-      <heigh>144</heigh>
+      <width>120</width>
+      <heigh>126</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>144</wp_width>
-      <wp_heigh>176</wp_heigh>
+      <wp_width>120</wp_width>
+      <wp_heigh>126</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SA06</device_id>
-      <device_name>J-SA06</device_name>
+      <device_id>J-T05</device_id>
+      <device_name>J-T05</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>132</width>
-      <heigh>144</heigh>
+      <width>120</width>
+      <heigh>112</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>132</wp_width>
-      <wp_heigh>176</wp_heigh>
+      <wp_width>120</wp_width>
+      <wp_heigh>128</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>V301T</device_id>
-      <device_name>V301T</device_name>
+      <device_id>J-K04</device_id>
+      <device_name>J-K04</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>222</width>
-      <heigh>261</heigh>
+      <width>120</width>
+      <heigh>110</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>120</wp_width>
+      <wp_heigh>110</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>V301D</device_id>
-      <device_name>V301D</device_name>
+      <device_id>J-D04</device_id>
+      <device_name>J-D04</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>132</width>
-      <heigh>136</heigh>
+      <width>120</width>
+      <heigh>117</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>132</wp_width>
-      <wp_heigh>153</wp_heigh>
+      <wp_width>120</wp_width>
+      <wp_heigh>130</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>V302T</device_id>
-      <device_name>V302T</device_name>
+      <device_id>J-PE03II</device_id>
+      <device_name>J-PE03II</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>144</width>
-      <heigh>140</heigh>
+      <width>120</width>
+      <heigh>96</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>144</wp_width>
-      <wp_heigh>176</wp_heigh>
+      <wp_width>120</wp_width>
+      <wp_heigh>126</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>KOTO</device_id>
-      <device_name>KOTO</device_name>
+      <device_id>J-SH06</device_id>
+      <device_name>J-SH06</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>222</width>
-      <heigh>320</heigh>
+      <width>96</width>
+      <heigh>104</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>96</wp_width>
+      <wp_heigh>130</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>V303T</device_id>
-      <device_name>V303T</device_name>
+      <device_id>J-SA03</device_id>
+      <device_name>J-SA03</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>222</width>
-      <heigh>320</heigh>
+      <width>120</width>
+      <heigh>126</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>120</wp_width>
+      <wp_heigh>128</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
     </device>
-
-    <!-- C4 -->
     <device>
-      <device_id>J-SH07</device_id>
-      <device_name>J-SH07</device_name>
+      <device_id>J-DN03</device_id>
+      <device_name>J-DN03</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>117</heigh>
+      <heigh>130</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>256</color>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>160</wp_heigh>
+      <wp_heigh>130</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-T06</device_id>
-      <device_name>J-T06</device_name>
+      <device_id>J-NM01</device_id>
+      <device_name>J-NM01</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
       <heigh>126</heigh>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>256</color>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>143</wp_heigh>
+      <wp_heigh>128</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-D05</device_id>
-      <device_name>J-D05</device_name>
+      <device_id>J-N03II</device_id>
+      <device_name>J-N03II</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>132</width>
-      <heigh>126</heigh>
+      <width>118</width>
+      <heigh>124</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>4096</color>
+      <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>140</wp_width>
-      <wp_heigh>132</wp_heigh>
+      <wp_width>118</wp_width>
+      <wp_heigh>124</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-D06</device_id>
-      <device_name>J-D06</device_name>
+      <device_id>J-D31</device_id>
+      <device_name>J-D31</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>132</width>
-      <heigh>126</heigh>
+      <width>120</width>
+      <heigh>117</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>4096</color>
+      <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>132</wp_width>
-      <wp_heigh>137</wp_heigh>
+      <wp_width>120</wp_width>
+      <wp_heigh>117</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-N04</device_id>
-      <device_name>J-N04</device_name>
+      <device_id>J-SA04</device_id>
+      <device_name>J-SA04</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>126</heigh>
+      <heigh>130</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>4096</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>126</wp_heigh>
+      <wp_heigh>120</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-N05</device_id>
-      <device_name>J-N05</device_name>
+      <device_id>J-K05</device_id>
+      <device_name>J-K05</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>160</width>
-      <heigh>180</heigh>
+      <width>120</width>
+      <heigh>110</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>256</color>
       <emoji_type></emoji_type>
 
-      <wp_width>159</wp_width>
-      <wp_heigh>179</wp_heigh>
+      <wp_width>120</wp_width>
+      <wp_heigh>110</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH08</device_id>
-      <device_name>J-SH08</device_name>
+      <device_id>J-NM02</device_id>
+      <device_name>J-NM02</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>117</heigh>
+      <heigh>130</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>160</wp_heigh>
+      <wp_heigh>128</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH09</device_id>
-      <device_name>J-SH09</device_name>
+      <device_id>J-SA05</device_id>
+      <device_name>J-SA05</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>130</heigh>
+      <heigh>112</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>160</wp_heigh>
+      <wp_heigh>112</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
+      <dpi_width>72</dpi_width>
+      <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-T08</device_id>
-      <device_name>J-T08</device_name>
+      <device_id>J-T07</device_id>
+      <device_name>J-T07</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>222</width>
-      <heigh>261</heigh>
+      <width>144</width>
+      <heigh>136</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>144</wp_width>
+      <wp_heigh>176</wp_heigh>
       <cache>6000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH10</device_id>
-      <device_name>J-SH010</device_name>
+      <device_id>J-T09</device_id>
+      <device_name>J-T09</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>240</width>
-      <heigh>260</heigh>
+      <width>144</width>
+      <heigh>144</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>144</wp_width>
+      <wp_heigh>176</wp_heigh>
       <cache>6000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-D08</device_id>
-      <device_name>J-D08</device_name>
+      <device_id>J-SA06</device_id>
+      <device_name>J-SA06</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>132</width>
-      <heigh>136</heigh>
+      <heigh>144</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
       <wp_width>132</wp_width>
-      <wp_heigh>136</wp_heigh>
+      <wp_heigh>176</wp_heigh>
       <cache>6000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-T10</device_id>
-      <device_name>J-T010</device_name>
+      <device_id>V301T</device_id>
+      <device_name>V301T</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>222</width>
       <heigh>261</heigh>
       <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>V401SH</device_id>
-      <device_name>V401SH</device_name>
+      <device_id>V301D</device_id>
+      <device_name>V301D</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>222</width>
-      <heigh>260</heigh>
+      <width>132</width>
+      <heigh>136</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>132</wp_width>
+      <wp_heigh>153</wp_heigh>
       <cache>6000</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-  </user_agent>
-  <user_agent pattern="^J-PHONE/[^/ ]+/([^/_]+)_.+$">
-    <!-- C2 -->
-    <device>
-      <device_id>J-SH02</device_id>
-      <device_name>J-SH02</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>89</heigh>
-      <gif>false</gif>
-      <jpeg>false</jpeg>
-      <png>true</png>
-      <bmp2>false</bmp2>
-      <bmp4>false</bmp4>
-      <color>256</color>
-      <emoji_type></emoji_type>
-
-      <wp_width>96</wp_width>
-      <wp_heigh>84</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
-    </device>
-    <device>
-      <device_id>J-DN02</device_id>
-      <device_name>J-DN02</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>116</width>
-      <heigh>122</heigh>
-      <gif>false</gif>
-      <jpeg>false</jpeg>
-      <png>true</png>
-      <bmp2>false</bmp2>
-      <bmp4>false</bmp4>
-      <color>4</color>
-      <emoji_type></emoji_type>
-
-      <wp_width>120</wp_width>
-      <wp_heigh>94</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
-    </device>
-    <device>
-      <device_id>J-P02</device_id>
-      <device_name>J-P02</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>89</heigh>
-      <gif>false</gif>
-      <jpeg>false</jpeg>
-      <png>true</png>
-      <bmp2>false</bmp2>
-      <bmp4>false</bmp4>
-      <color>4</color>
-      <emoji_type></emoji_type>
-
-      <wp_width>96</wp_width>
-      <wp_heigh>78</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
-    </device>
     <device>
-      <device_id>J-SA02</device_id>
-      <device_name>J-SA02</device_name>
+      <device_id>V302T</device_id>
+      <device_name>V301T</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>76</heigh>
+      <width>144</width>
+      <heigh>140</heigh>
       <gif>false</gif>
-      <jpeg>false</jpeg>
+      <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>80</wp_heigh>
+      <wp_width>144</wp_width>
+      <wp_heigh>176</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH03</device_id>
-      <device_name>J-SH03</device_name>
+      <device_id>KOTO</device_id>
+      <device_name>KOTO</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>104</heigh>
+      <width>222</width>
+      <heigh>320</heigh>
       <gif>false</gif>
-      <jpeg>false</jpeg>
+      <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>84</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-T04</device_id>
-      <device_name>J-T04</device_name>
+      <device_id>V303T</device_id>
+      <device_name>V303T</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>90</heigh>
+      <width>222</width>
+      <heigh>320</heigh>
       <gif>false</gif>
-      <jpeg>false</jpeg>
+      <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>90</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
-    <device>
-      <device_id>J-P03</device_id>
-      <device_name>J-P03</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>95</heigh>
-      <gif>false</gif>
-      <jpeg>false</jpeg>
-      <png>true</png>
-      <bmp2>false</bmp2>
-      <bmp4>false</bmp4>
-      <color>256</color>
-      <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>95</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
-    </device>
+    <!-- C4 -->
     <device>
-      <device_id>J-SA04</device_id>
-      <device_name>J-SA04</device_name>
+      <device_id>J-SH07</device_id>
+      <device_name>J-SH07</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>130</heigh>
+      <heigh>117</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>120</wp_heigh>
+      <wp_heigh>160</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
-    <!-- C3 -->
     <device>
-      <device_id>J-K03</device_id>
-      <device_name>J-K03</device_name>
+      <device_id>J-T06</device_id>
+      <device_name>J-T06</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>110</heigh>
+      <heigh>126</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>110</wp_heigh>
+      <wp_heigh>143</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-K03S</device_id>
-      <device_name>J-K03S</device_name>
+      <device_id>J-D05</device_id>
+      <device_name>J-D05</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>110</heigh>
+      <width>132</width>
+      <heigh>126</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>4096</color>
       <emoji_type></emoji_type>
-
-      <wp_width>120</wp_width>
-      <wp_heigh>110</wp_heigh>
+
+      <wp_width>140</wp_width>
+      <wp_heigh>132</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-D03</device_id>
-      <device_name>J-D03</device_name>
+      <device_id>J-D06</device_id>
+      <device_name>J-D06</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>117</heigh>
+      <width>132</width>
+      <heigh>126</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>4096</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>130</wp_heigh>
+      <wp_width>132</wp_width>
+      <wp_heigh>137</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-D03S</device_id>
-      <device_name>J-D03S</device_name>
+      <device_id>J-N04</device_id>
+      <device_name>J-N04</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>117</heigh>
+      <heigh>126</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>4096</color>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>130</wp_heigh>
+      <wp_heigh>126</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-PE03</device_id>
-      <device_name>J-PE03</device_name>
+      <device_id>J-N05</device_id>
+      <device_name>J-N05</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>96</heigh>
+      <width>160</width>
+      <heigh>180</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>126</wp_heigh>
+      <wp_width>159</wp_width>
+      <wp_heigh>179</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-PE03S</device_id>
-      <device_name>J-PE03S</device_name>
+      <device_id>J-SH08</device_id>
+      <device_name>J-SH08</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>96</heigh>
+      <heigh>117</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>126</wp_heigh>
+      <wp_heigh>160</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH04</device_id>
-      <device_name>J-SH04</device_name>
+      <device_id>J-SH09</device_id>
+      <device_name>J-SH09</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>104</heigh>
+      <width>120</width>
+      <heigh>130</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>130</wp_heigh>
+      <wp_width>120</wp_width>
+      <wp_heigh>160</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH04S</device_id>
-      <device_name>J-SH04S</device_name>
+      <device_id>J-T08</device_id>
+      <device_name>J-T08</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>104</heigh>
+      <width>222</width>
+      <heigh>261</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>130</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH04B</device_id>
-      <device_name>J-SH04B</device_name>
+      <device_id>J-SH10</device_id>
+      <device_name>J-SH010</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>104</heigh>
+      <width>240</width>
+      <heigh>260</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>130</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH04BS</device_id>
-      <device_name>J-SH04BS</device_name>
+      <device_id>J-D08</device_id>
+      <device_name>J-D08</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>104</heigh>
+      <width>132</width>
+      <heigh>136</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>130</wp_heigh>
+      <wp_width>132</wp_width>
+      <wp_heigh>136</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH05</device_id>
-      <device_name>J-SH05</device_name>
+      <device_id>J-T10</device_id>
+      <device_name>J-T010</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>117</heigh>
+      <width>222</width>
+      <heigh>261</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>160</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH05S</device_id>
-      <device_name>J-SH05S</device_name>
+      <device_id>V401SH</device_id>
+      <device_name>V401SH</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>117</heigh>
+      <width>222</width>
+      <heigh>260</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>160</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>6000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
+  </user_agent>
+
+
+  <user_agent pattern="^J-PHONE/[^/ ]+/([^/ _]+?)[/ _].+?$">
+    <!-- P4 -->
     <device>
-      <device_id>J-N03</device_id>
-      <device_name>J-N03</device_name>
+      <device_id>J-SH51</device_id>
+      <device_name>J-SH51</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>126</heigh>
+      <heigh>130</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>126</wp_heigh>
-      <cache>6000</cache>
+      <wp_heigh>130</wp_heigh>
+      <cache>12000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-N03S</device_id>
-      <device_name>J-N03S</device_name>
+      <device_id>J-K51</device_id>
+      <device_name>J-K51</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>126</heigh>
+      <width>128</width>
+      <heigh>128</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>4096</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>126</wp_heigh>
-      <cache>6000</cache>
+      <wp_width>128</wp_width>
+      <wp_heigh>160</wp_heigh>
+      <cache>12000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-T05</device_id>
-      <device_name>J-T05</device_name>
+      <device_id>J-T51</device_id>
+      <device_name>J-T51</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>112</heigh>
+      <width>144</width>
+      <heigh>144</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>128</wp_heigh>
-      <cache>6000</cache>
+      <wp_width>144</wp_width>
+      <wp_heigh>176</wp_heigh>
+      <cache>12000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-K04</device_id>
-      <device_name>J-K04</device_name>
+      <device_id>J-P51</device_id>
+      <device_name>J-P51</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>110</heigh>
+      <heigh>130</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>110</wp_heigh>
-      <cache>6000</cache>
+      <wp_heigh>160</wp_heigh>
+      <cache>12000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-D04</device_id>
-      <device_name>J-D04</device_name>
+      <device_id>J-SA51</device_id>
+      <device_name>J-SA51</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>117</heigh>
+      <width>132</width>
+      <heigh>144</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>130</wp_heigh>
-      <cache>6000</cache>
+      <wp_width>132</wp_width>
+      <wp_heigh>144</wp_heigh>
+      <cache>12000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-PE03II</device_id>
-      <device_name>J-PE03II</device_name>
+      <device_id>J-SH52</device_id>
+      <device_name>J-SH52</device_name>
       <html_spec_type>JHTML</html_spec_type>
       <width>120</width>
-      <heigh>96</heigh>
+      <heigh>130</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
       <wp_width>120</wp_width>
-      <wp_heigh>126</wp_heigh>
-      <cache>6000</cache>
+      <wp_heigh>160</wp_heigh>
+      <cache>12000</cache>
       <dpi_width>72</dpi_width>
       <dpi_heigh>72</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SH06</device_id>
-      <device_name>J-SH06</device_name>
+      <device_id>J-N51</device_id>
+      <device_name>J-N51</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>96</width>
-      <heigh>104</heigh>
+      <width>160</width>
+      <heigh>180</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>96</wp_width>
-      <wp_heigh>130</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>160</wp_width>
+      <wp_heigh>180</wp_heigh>
+      <cache>12000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SA03</device_id>
-      <device_name>J-SA03</device_name>
+      <device_id>V601N</device_id>
+      <device_name>V601N</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>126</heigh>
+      <width>160</width>
+      <heigh>180</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>128</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>160</wp_width>
+      <wp_heigh>180</wp_heigh>
+      <cache>12000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+    <!-- P5 -->
     <device>
-      <device_id>J-DN03</device_id>
-      <device_name>J-DN03</device_name>
+      <device_id>J-SH53</device_id>
+      <device_name>J-SH53</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>130</heigh>
+      <width>240</width>
+      <heigh>260</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>130</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>12000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-NM01</device_id>
-      <device_name>J-NM01</device_name>
+      <device_id>V601SH</device_id>
+      <device_name>V601SH</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>126</heigh>
+      <width>240</width>
+      <heigh>260</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>128</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>12000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+    <!-- W -->
     <device>
-      <device_id>J-N03II</device_id>
-      <device_name>J-N03II</device_name>
+      <device_id>V801SA</device_id>
+      <device_name>V801SA</device_name>
       <html_spec_type>JHTML</html_spec_type>
-      <width>118</width>
-      <heigh>124</heigh>
+      <width>240</width>
+      <heigh>256</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>118</wp_width>
-      <wp_heigh>124</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>200000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+  </user_agent>
+  <user_agent pattern="^Vodafone/[^/ ]+/([^/ _]+?)[/ _].+?$">
     <device>
-      <device_id>J-D31</device_id>
-      <device_name>J-D31</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>117</heigh>
+      <device_id>V702NK</device_id>
+      <device_name>V702NK</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>208</width>
+      <heigh>176</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>117</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>208</wp_width>
+      <wp_heigh>176</wp_heigh>
+      <cache>300000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>J-SA04</device_id>
-      <device_name>J-SA04</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>130</heigh>
+      <device_id>V802SE</device_id>
+      <device_name>V802SE</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>176</width>
+      <heigh>220</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>120</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>176</wp_width>
+      <wp_heigh>208</wp_heigh>
+      <cache>200000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+
     <device>
-      <device_id>J-K05</device_id>
-      <device_name>J-K05</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>110</heigh>
+      <device_id>V802SH</device_id>
+      <device_name>V802SH</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>176</width>
+      <heigh>220</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>256</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>110</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>200000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+
     <device>
-      <device_id>J-NM02</device_id>
-      <device_name>J-NM02</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>130</heigh>
+      <device_id>V802N</device_id>
+      <device_name>V802N</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>176</width>
+      <heigh>220</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>128</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>200000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!-- Sale in 2005.8 902SH-->
+    <!-- 
+      Vodafone/1.0/V902SH/SHJ002[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+    -->
     <device>
-      <device_id>J-SA05</device_id>
-      <device_name>J-SA05</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>112</heigh>
-      <gif>false</gif>
+      <device_id>V902SH</device_id>
+      <device_name>902SH</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>240</width>
+      <heigh>264</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>112</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+    <!-- Sale in 2005.8 902T -->
+    <!-- 
+      Vodafone/1.0/V902T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+    -->
     <device>
-      <device_id>J-T07</device_id>
-      <device_name>J-T07</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>144</width>
-      <heigh>136</heigh>
-      <gif>false</gif>
+      <device_id>V902T</device_id>
+      <device_name>902T</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>240</width>
+      <heigh>261</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>144</wp_width>
-      <wp_heigh>176</wp_heigh>
-      <cache>6000</cache>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+    <!-- Sale in 2005.8 703SH -->
+    <!-- 
+      Vodafone/1.0/V703SH/SHJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+    -->
     <device>
-      <device_id>J-T09</device_id>
-      <device_name>J-T09</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>144</width>
-      <heigh>144</heigh>
-      <gif>false</gif>
+      <device_id>V703SH</device_id>
+      <device_name>703SH</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>240</width>
+      <heigh>264</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>144</wp_width>
-      <wp_heigh>176</wp_heigh>
-      <cache>6000</cache>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <device>
-      <device_id>J-SA06</device_id>
-      <device_name>J-SA06</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>132</width>
-      <heigh>144</heigh>
-      <gif>false</gif>
+    <!-- Sale in 2005.9 802SH -->
+    <!-- 
+      Vodafone/1.0/V802SH/SHJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+    -->
+    <device>
+      <device_id>V802SH</device_id>
+      <device_name>802SH</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>240</width>
+      <heigh>264</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>132</wp_width>
-      <wp_heigh>176</wp_heigh>
-      <cache>6000</cache>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+    <!-- Sale in 2005.9 703SHf -->
+    <!-- 
+      Vodafone/1.0/V703SHf/SHJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+    -->
     <device>
-      <device_id>V301T</device_id>
-      <device_name>V301T</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>222</width>
-      <heigh>261</heigh>
-      <gif>false</gif>
+      <device_id>V703SHf</device_id>
+      <device_name>703SHf</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>240</width>
+      <heigh>264</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
 
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
-      <cache>6000</cache>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+    <!-- Sale in 2005.9 703N -->
+    <!-- 
+      Vodafone/1.0/V703N/NJ001[/Serial] Browser/UP.Browser/7.0.2.1.307 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+    -->
     <device>
-      <device_id>V301D</device_id>
-      <device_name>V301D</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>132</width>
-      <heigh>136</heigh>
-      <gif>false</gif>
+      <device_id>V703N</device_id>
+      <device_name>703N</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>240</width>
+      <heigh>269</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>132</wp_width>
-      <wp_heigh>153</wp_heigh>
-      <cache>6000</cache>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!-- Sale in 2005.10 903T -->
+    <!-- 
+      Vodafone/1.0/V903T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+    -->
     <device>
-      <device_id>V302T</device_id>
-      <device_name>V301T</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>144</width>
-      <heigh>140</heigh>
-      <gif>false</gif>
+      <device_id>V903T</device_id>
+      <device_name>903T</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>240</width>
+      <heigh>261</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>144</wp_width>
-      <wp_heigh>176</wp_heigh>
-      <cache>6000</cache>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!-- Sale in 2006.2 903SH -->
+    <!-- 
+      Vodafone/1.0/V903SH/SHJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+    -->
     <device>
-      <device_id>KOTO</device_id>
-      <device_name>KOTO</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>222</width>
-      <heigh>320</heigh>
-      <gif>false</gif>
+      <device_id>V903SH</device_id>
+      <device_name>903SH</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>240</width>
+      <heigh>264</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
 
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
-      <cache>6000</cache>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!-- Sale in 2006.3 702NKII -->
+    <!-- 
+      Vodafone/1.0/V702NK2/NKJ001[/Serial] Series60/2.6 Nokia6680/4.04.28 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>V303T</device_id>
-      <device_name>V303T</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>222</width>
-      <heigh>320</heigh>
-      <gif>false</gif>
+      <device_id>V702NK2</device_id>
+      <device_name>702NKII</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>176</width>
+      <heigh>173</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>6000</cache>
+      <wp_width>174</wp_width>
+      <wp_heigh>143</wp_heigh>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- C4 -->
+    <!-- Sale in 2006.3 904T -->
+    <!-- 
+      Vodafone/1.0/V904T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+    -->
     <device>
-      <device_id>J-SH07</device_id>
-      <device_name>J-SH07</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>117</heigh>
-      <gif>false</gif>
+      <device_id>V904T</device_id>
+      <device_name>904T</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>240</width>
+      <heigh>261</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>160</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!-- Sale in 2006.5 803T -->
+    <!-- 
+      Vodafone/1.0/V803T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+    -->
     <device>
-      <device_id>J-T06</device_id>
-      <device_name>J-T06</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>126</heigh>
-      <gif>false</gif>
+      <device_id>V803T</device_id>
+      <device_name>803T</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>240</width>
+      <heigh>261</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>143</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!-- Sale in 2006.8 702NK -->
+    <!-- 
+      Vodafone/1.0/V702NK/NKJ001[/Serial] Series60/2.6 Nokia6630/2.39.148 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>J-D05</device_id>
-      <device_name>J-D05</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>132</width>
-      <heigh>126</heigh>
-      <gif>false</gif>
+      <device_id>V702NK</device_id>
+      <device_name>702NK</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>176</width>
+      <heigh>173</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>4096</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>140</wp_width>
-      <wp_heigh>132</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>176</wp_width>
+      <wp_heigh>208</wp_heigh>
+      <cache>307200</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!--
+      Vodafone/1.0/V804SH/SHJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.3.2 Ext-V-Profile/VSCL-2.0.0
+    -->
     <device>
-      <device_id>J-D06</device_id>
-      <device_name>J-D06</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>132</width>
-      <heigh>126</heigh>
-      <gif>false</gif>
+      <device_id>V804SH</device_id>
+      <device_name>804SH</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>240</width>
+      <heigh>264</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>4096</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>132</wp_width>
-      <wp_heigh>137</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!--
+      Vodafone/1.0/V804SS/SSJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>J-N04</device_id>
-      <device_name>J-N04</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>126</heigh>
-      <gif>false</gif>
+      <device_id>V804SS</device_id>
+      <device_name>804SS</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>240</width>
+      <heigh>264</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>4096</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>126</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!--
+      Vodafone/1.0/V904SH/SHJ001[/Serial] Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>J-N05</device_id>
-      <device_name>J-N05</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>160</width>
-      <heigh>180</heigh>
-      <gif>false</gif>
+      <device_id>V904SH</device_id>
+      <device_name>904SH</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>480</width>
+      <heigh>540</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>159</wp_width>
-      <wp_heigh>179</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>640</wp_heigh>
+      <cache>307200</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!--
+      Vodafone/1.0/V905SH/SHJ001[/Serial] Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>J-SH08</device_id>
-      <device_name>J-SH08</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>117</heigh>
-      <gif>false</gif>
+      <device_id>V905SH</device_id>
+      <device_name>905SH</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>240</width>
+      <heigh>350</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>160</wp_heigh>
-      <cache>6000</cache>
+      <wp_width>240</wp_width>
+      <wp_heigh>400</wp_heigh>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!--
+      Vodafone/1.0/V804N/NJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+    -->
     <device>
-      <device_id>J-SH09</device_id>
-      <device_name>J-SH09</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>130</heigh>
-      <gif>false</gif>
+      <device_id>V804N</device_id>
+      <device_name>804N</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>240</width>
+      <heigh>270</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>160</wp_heigh>
-      <cache>6000</cache>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!--
+      Vodafone/1.0/V705SH/SHJ001[/Serial] Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>J-T08</device_id>
-      <device_name>J-T08</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>222</width>
-      <heigh>261</heigh>
-      <gif>false</gif>
+      <device_id>V705SH</device_id>
+      <device_name>705SH</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>240</width>
+      <heigh>270</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
-      <cache>6000</cache>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!--
+      Vodafone/1.0/V705T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+    -->
     <device>
-      <device_id>J-SH10</device_id>
-      <device_name>J-SH010</device_name>
-      <html_spec_type>JHTML</html_spec_type>
+      <device_id>V705T</device_id>
+      <device_name>705T</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
       <width>240</width>
-      <heigh>260</heigh>
-      <gif>false</gif>
+      <heigh>261</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
 
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
-      <cache>6000</cache>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!--
+      Vodafone/1.0/V804NK/NKJ001[/Serial] Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>J-D08</device_id>
-      <device_name>J-D08</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>132</width>
-      <heigh>136</heigh>
-      <gif>false</gif>
+      <device_id>V804NK</device_id>
+      <device_name>804NK</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>240</width>
+      <heigh>276</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>132</wp_width>
-      <wp_heigh>136</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+
+  </user_agent>
+  <user_agent pattern="^MOT-([^/ ]+?)/.+?$">
     <device>
-      <device_id>J-T10</device_id>
-      <device_name>J-T010</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>222</width>
-      <heigh>261</heigh>
+      <device_id>C980</device_id>
+      <device_name>702sMO</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>176</width>
+      <heigh>220</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <cache>300000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
     <device>
-      <device_id>V401SH</device_id>
-      <device_name>V401SH</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>222</width>
-      <heigh>260</heigh>
+      <device_id>V980</device_id>
+      <device_name>702MO</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>176</width>
+      <heigh>220</heigh>
       <gif>false</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>6000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>176</wp_width>
+      <wp_heigh>220</wp_heigh>
+      <cache>300000</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
   </user_agent>
 
-
-  <user_agent pattern="^J-PHONE/[^/ ]+/([^/ _]+?)[/ _].+?$">
-    <!-- P4 -->
+  <user_agent pattern="^SoftBank/[^/ ]+/([^/ _]+?)[/ _].+?$">
+    <!-- Sale in 2006.10 706P -->
+    <!-- 
+      SoftBank/1.0/706P/PJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>J-SH51</device_id>
-      <device_name>J-SH51</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>130</heigh>
-      <gif>false</gif>
+      <device_id>706P</device_id>
+      <device_name>SoftBank 706P</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>236</width>
+      <heigh>258</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>130</wp_heigh>
-      <cache>12000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+    <!-- Sale in 2006.11 910SH -->
+    <!-- 
+      SoftBank/1.0/910SH/SHJ001[/Serial] Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>J-K51</device_id>
-      <device_name>J-K51</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>128</width>
-      <heigh>128</heigh>
-      <gif>false</gif>
+      <device_id>910SH</device_id>
+      <device_name>SoftBank 910SH</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>468</width>
+      <heigh>540</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>4096</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>128</wp_width>
-      <wp_heigh>160</wp_heigh>
-      <cache>12000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>640</wp_heigh>
+      <cache>307200</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!-- Sale in 2006.11 911SH -->
+    <!-- 
+      SoftBank/1.0/911SH/SHJ001[/Serial] Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>J-T51</device_id>
-      <device_name>J-T51</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>144</width>
-      <heigh>144</heigh>
-      <gif>false</gif>
+      <device_id>911SH</device_id>
+      <device_name>SoftBank 911SH</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>234</width>
+      <heigh>350</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>144</wp_width>
-      <wp_heigh>176</wp_heigh>
-      <cache>12000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>400</wp_heigh>
+      <cache>307200</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!-- Sale in 2006.12 706N -->
+    <!-- 
+      SoftBank/1.0/706N/NJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+    -->
     <device>
-      <device_id>J-P51</device_id>
-      <device_name>J-P51</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>130</heigh>
-      <gif>false</gif>
+      <device_id>706N</device_id>
+      <device_name>SoftBank 706N</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>233</width>
+      <heigh>269</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>160</wp_heigh>
-      <cache>12000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+    <!-- Sale in 2006.12 705N -->
+    <!-- 
+      SoftBank/1.0/705N/NJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+    -->
     <device>
-      <device_id>J-SA51</device_id>
-      <device_name>J-SA51</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>132</width>
-      <heigh>144</heigh>
-      <gif>false</gif>
+      <device_id>705N</device_id>
+      <device_name>SoftBank 705N</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>233</width>
+      <heigh>269</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <color>65536</color>
       <emoji_type></emoji_type>
 
-      <wp_width>132</wp_width>
-      <wp_heigh>144</wp_heigh>
-      <cache>12000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!-- Sale in 2007.1 708SC -->
+    <!-- 
+      SoftBank/1.0/708SC/SCJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>J-SH52</device_id>
-      <device_name>J-SH52</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>120</width>
-      <heigh>130</heigh>
-      <gif>false</gif>
+      <device_id>708SC</device_id>
+      <device_name>SoftBank 708SC</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>310</width>
+      <heigh>186</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>120</wp_width>
-      <wp_heigh>160</wp_heigh>
-      <cache>12000</cache>
-      <dpi_width>72</dpi_width>
-      <dpi_heigh>72</dpi_heigh>
+      <wp_width>320</wp_width>
+      <wp_heigh>240</wp_heigh>
+      <cache>307200</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!-- Sale in 2007.4 810P -->
+    <!-- 
+      SoftBank/1.0/810P/PJP10[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>J-N51</device_id>
-      <device_name>J-N51</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>160</width>
-      <heigh>180</heigh>
-      <gif>false</gif>
+      <device_id>810P</device_id>
+      <device_name>SoftBank 810P</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>236</width>
+      <heigh>258</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
 
-      <wp_width>160</wp_width>
-      <wp_heigh>180</wp_heigh>
-      <cache>12000</cache>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+    <!-- Sale in 2007.4 812SH -->
+    <!-- 
+      SoftBank/1.0/812SH/SHJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>V601N</device_id>
-      <device_name>V601N</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>160</width>
-      <heigh>180</heigh>
-      <gif>false</gif>
+      <device_id>812SH</device_id>
+      <device_name>SoftBank 812SH</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>234</width>
+      <heigh>270</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>160</wp_width>
-      <wp_heigh>180</wp_heigh>
-      <cache>12000</cache>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- P5 -->
+    <!-- Sale in 2007.4 813SH -->
+    <!-- 
+      SoftBank/1.0/813SH/SHJ001[/Serial] Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>J-SH53</device_id>
-      <device_name>J-SH53</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>240</width>
-      <heigh>260</heigh>
-      <gif>false</gif>
+      <device_id>813SH</device_id>
+      <device_name>SoftBank 813SH</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>234</width>
+      <heigh>270</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
 
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
-      <cache>12000</cache>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
+    <!-- Sale in 2007.4 813SH for Biz -->
+    <!-- 
+      SoftBank/1.0/813SHe/SHJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>V601SH</device_id>
-      <device_name>V601SH</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>240</width>
-      <heigh>260</heigh>
-      <gif>false</gif>
+      <device_id>813SHe</device_id>
+      <device_name>SoftBank 813SH for Biz</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>234</width>
+      <heigh>270</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
 
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
-      <cache>12000</cache>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- W -->
+    <!-- Sale in 2007.4 912SH -->
+    <!-- 
+      SoftBank/1.0/912SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>V801SA</device_id>
-      <device_name>V801SA</device_name>
-      <html_spec_type>JHTML</html_spec_type>
-      <width>240</width>
-      <heigh>256</heigh>
-      <gif>false</gif>
+      <device_id>912SH</device_id>
+      <device_name>SoftBank 912SH</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>468</width>
+      <heigh>700</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
-      <cache>200000</cache>
+      <wp_width>480</wp_width>
+      <wp_heigh>800</wp_heigh>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-  </user_agent>
-  <user_agent pattern="^Vodafone/[^/ ]+/([^/ _]+?)[/ _].+?$">
+    <!-- Sale in 2007.4 911T -->
+    <!-- 
+      SoftBank/1.0/911T/TJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>V702NK</device_id>
-      <device_name>V702NK</device_name>
+      <device_id>911T</device_id>
+      <device_name>SoftBank 911T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>208</width>
-      <heigh>176</heigh>
-      <gif>false</gif>
+      <width>234</width>
+      <heigh>339</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>208</wp_width>
-      <wp_heigh>176</wp_heigh>
-      <cache>300000</cache>
+      <wp_width>480</wp_width>
+      <wp_heigh>800</wp_heigh>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+    <!-- Sale in 2007.5 812SHs -->
+    <!-- 
+      SoftBank/1.0/812SHs/SHJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>V802SE</device_id>
-      <device_name>V802SE</device_name>
-      <html_spec_type>JXHTML</html_spec_type>
-      <width>176</width>
-      <heigh>220</heigh>
-      <gif>false</gif>
+      <device_id>812Hs</device_id>
+      <device_name>SoftBank 812SHs</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>234</width>
+      <heigh>270</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>176</wp_width>
-      <wp_heigh>208</wp_heigh>
-      <cache>200000</cache>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
+    <!-- Sale in 2007.5 816SH -->
+    <!-- 
+       SoftBank/1.0/816SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>V802SH</device_id>
-      <device_name>V802SH</device_name>
+      <device_id>816SH</device_id>
+      <device_name>SoftBank 816SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>176</width>
-      <heigh>220</heigh>
-      <gif>false</gif>
+      <width>240</width>
+      <heigh>270</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
 
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
-      <cache>200000</cache>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
+    <!-- Sale in 2007.5 815SH -->
+    <!-- 
+      SoftBank/1.0/815SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    -->
     <device>
-      <device_id>V802N</device_id>
-      <device_name>V802N</device_name>
+      <device_id>815SH</device_id>
+      <device_name>SoftBank 815SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>176</width>
-      <heigh>220</heigh>
-      <gif>false</gif>
+      <width>240</width>
+      <heigh>270</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
-      <cache>200000</cache>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2005.8 902SH-->
+    <!-- Sale in 2007.5 814SH -->
     <!-- 
-      Vodafone/1.0/V902SH/SHJ002[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      SoftBank/1.0/814SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V902SH</device_id>
-      <device_name>902SH</device_name>
+      <device_id>814SH</device_id>
+      <device_name>SoftBank 814SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>264</heigh>
+      <width>468</width>
+      <heigh>540</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>640</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- Sale in 2005.8 902T -->
+
+    <!-- Sale in 2007.5 912T -->
     <!-- 
-      Vodafone/1.0/V902T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      SoftBank/1.0/912T/TJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V902T</device_id>
-      <device_name>902T</device_name>
+      <device_id>912T</device_id>
+      <device_name>SoftBank 912T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>261</heigh>
+      <width>234</width>
+      <heigh>339</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <emoji_type></emoji_type>
 
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- Sale in 2005.8 703SH -->
+    <!-- Sale in 2007.5 815T -->
     <!-- 
-      Vodafone/1.0/V703SH/SHJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      SoftBank/1.0/815T/TJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V703SH</device_id>
-      <device_name>703SH</device_name>
+      <device_id>815T</device_id>
+      <device_name>SoftBank 815T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>264</heigh>
+      <width>234</width>
+      <heigh>259</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- Sale in 2005.9 802SH -->
+    <!-- Sale in 2007.5 814T -->
     <!-- 
-      Vodafone/1.0/V802SH/SHJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      SoftBank/1.0/814T/TJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V802SH</device_id>
-      <device_name>802SH</device_name>
+      <device_id>814T</device_id>
+      <device_name>SoftBank 814T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>264</heigh>
+      <width>234</width>
+      <heigh>259</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- Sale in 2005.9 703SHf -->
+
+    <!-- Sale in 2007.6 805SC -->
     <!-- 
-      Vodafone/1.0/V703SHf/SHJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      SoftBank/1.0/805SC/SCJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V703SHf</device_id>
-      <device_name>703SHf</device_name>
+      <device_id>805SC</device_id>
+      <device_name>SoftBank 805SC</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
+      <width>230</width>
       <heigh>264</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- Sale in 2005.9 703N -->
+
+    <!-- Sale in 2007.8 913SH/913SHG -->
     <!-- 
-      Vodafone/1.0/V703N/NJ001[/Serial] Browser/UP.Browser/7.0.2.1.307 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      SoftBank/1.0/913SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V703N</device_id>
-      <device_name>703N</device_name>
+      <device_id>913SH</device_id>
+      <device_name>SoftBank 913SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>269</heigh>
+      <width>234</width>
+      <heigh>350</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <emoji_type></emoji_type>
 
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2005.10 903T -->
+    <!-- Sale in 2007.9 820SH -->
     <!-- 
-      Vodafone/1.0/V903T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      SoftBank/1.0/820SH/SHJ001[ /Serial ] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V903T</device_id>
-      <device_name>903T</device_name>
+      <device_id>820SH</device_id>
+      <device_name>SoftBank 820SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>261</heigh>
+      <width>234</width>
+      <heigh>350</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <emoji_type></emoji_type>
 
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2006.2 903SH -->
+    <!-- Sale in 2007.9 821SH -->
     <!-- 
-      Vodafone/1.0/V903SH/SHJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      SoftBank/1.0/821SH/SHJ001[ /Serial ] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V903SH</device_id>
-      <device_name>903SH</device_name>
+      <device_id>821SH</device_id>
+      <device_name>SoftBank 821SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>264</heigh>
+      <width>234</width>
+      <heigh>350</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <emoji_type></emoji_type>
 
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2006.3 702NKII -->
+    <!-- Sale in 2007.9 820P -->
     <!-- 
-      Vodafone/1.0/V702NK2/NKJ001[/Serial] Series60/2.6 Nokia6680/4.04.28 Profile/MIDP-2.0 Configuration/CLDC-1.1
+      SoftBank/1.0/820P/PJP10[ /Serial ] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V702NK2</device_id>
-      <device_name>702NKII</device_name>
+      <device_id>820P</device_id>
+      <device_name>SoftBank 820P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>176</width>
-      <heigh>173</heigh>
+      <width>234</width>
+      <heigh>342</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
 
-      <wp_width>174</wp_width>
-      <wp_heigh>143</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2006.3 904T -->
+    <!-- Sale in 2007.9 920SH -->
     <!-- 
-      Vodafone/1.0/V904T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      SoftBank/1.0/920SH/SHJ001[ /Serial ] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V904T</device_id>
-      <device_name>904T</device_name>
+      <device_id>920SH</device_id>
+      <device_name>SoftBank 920SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>261</heigh>
+      <width>468</width>
+      <heigh>700</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2006.5 803T -->
+    <!-- Sale in 2007.10 821P -->
     <!-- 
-      Vodafone/1.0/V803T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      SoftBank/1.0/821P/PJP10[ /Serial ] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V803T</device_id>
-      <device_name>803T</device_name>
+      <device_id>821P</device_id>
+      <device_name>SoftBank 821P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
       <width>240</width>
-      <heigh>261</heigh>
+      <heigh>342</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <emoji_type></emoji_type>
 
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2006.8 702NK -->
+    <!-- Sale in 2007.12 705P/705Px -->
     <!-- 
-      Vodafone/1.0/V702NK/NKJ001[/Serial] Series60/2.6 Nokia6630/2.39.148 Profile/MIDP-2.0 Configuration/CLDC-1.1
+      SoftBank/1.0/705P/PJP10[/Serial] Browser/Teleca-Browser/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V702NK</device_id>
-      <device_name>702NK</device_name>
+      <device_id>705P</device_id>
+      <device_name>SoftBank 705P/705Px</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>176</width>
-      <heigh>173</heigh>
+      <width>236</width>
+      <heigh>258</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
 
-      <wp_width>176</wp_width>
-      <wp_heigh>208</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
     <!--
-      Vodafone/1.0/V804SH/SHJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.3.2 Ext-V-Profile/VSCL-2.0.0
+      SoftBank/1.0/910T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
     -->
     <device>
-      <device_id>V804SH</device_id>
-      <device_name>804SH</device_name>
+      <device_id>910T</device_id>
+      <device_name>SoftBank 910T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>264</heigh>
+      <width>234</width>
+      <heigh>259</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
 
       <wp_width>240</wp_width>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
     <!--
-      Vodafone/1.0/V804SS/SSJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+      SoftBank/1.0/810SH/SHJ001[/Serial] Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V804SS</device_id>
-      <device_name>804SS</device_name>
+      <device_id>810SH</device_id>
+      <device_name>SoftBank 810SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>264</heigh>
+      <width>468</width>
+      <heigh>540</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>640</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
     <!--
-      Vodafone/1.0/V904SH/SHJ001[/Serial] Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+      SoftBank/1.0/811SH/SHJ001[/Serial] Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V904SH</device_id>
-      <device_name>904SH</device_name>
+      <device_id>811SH</device_id>
+      <device_name>SoftBank 811SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>480</width>
+      <width>468</width>
       <heigh>540</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
     <!--
-      Vodafone/1.0/V905SH/SHJ001[/Serial] Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+      SoftBank/1.0/705SC/SCJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V905SH</device_id>
-      <device_name>905SH</device_name>
+      <device_id>705SC</device_id>
+      <device_name>SoftBank 705SC</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>350</heigh>
+      <width>230</width>
+      <heigh>264</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
-      <wp_heigh>400</wp_heigh>
+      <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
     <!--
-      Vodafone/1.0/V804N/NJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      SoftBank/1.0/706SC/SCJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V804N</device_id>
-      <device_name>804N</device_name>
+      <device_id>706SC</device_id>
+      <device_name>SoftBank 706SC</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>270</heigh>
+      <width>230</width>
+      <heigh>264</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
     <!--
-      Vodafone/1.0/V705SH/SHJ001[/Serial] Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+      SoftBank/1.0/810T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
     -->
     <device>
-      <device_id>V705SH</device_id>
-      <device_name>705SH</device_name>
+      <device_id>810T</device_id>
+      <device_name>SoftBank 810T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>270</heigh>
+      <width>234</width>
+      <heigh>259</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
     <!--
-      Vodafone/1.0/V705T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      SoftBank/1.0/811T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
     -->
     <device>
-      <device_id>V705T</device_id>
-      <device_name>705T</device_name>
+      <device_id>811T</device_id>
+      <device_name>SoftBank 811T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>261</heigh>
+      <width>234</width>
+      <heigh>259</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
     </device>
 
     <!--
-      Vodafone/1.0/V804NK/NKJ001[/Serial] Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>V804NK</device_id>
-      <device_name>804NK</device_name>
+      <device_id>707SC</device_id>
+      <device_name>SoftBank 707SC</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>276</heigh>
+      <width>230</width>
+      <heigh>264</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-  </user_agent>
-  <user_agent pattern="^MOT-([^/ ]+?)/.+?$">
+    <!--
+    -->
     <device>
-      <device_id>C980</device_id>
-      <device_name>702sMO</device_name>
+      <device_id>709SC</device_id>
+      <device_name>SoftBank 709SC</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>176</width>
-      <heigh>220</heigh>
-      <gif>false</gif>
+      <width>230</width>
+      <heigh>264</heigh>
+      <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
-      <cache>300000</cache>
-      <dpi_width>96</dpi_width>
-      <dpi_heigh>96</dpi_heigh>
-    </device>
-    <device>
-      <device_id>V980</device_id>
-      <device_name>702MO</device_name>
-      <html_spec_type>JXHTML</html_spec_type>
-      <width>176</width>
-      <heigh>220</heigh>
-      <gif>false</gif>
-      <jpeg>true</jpeg>
-      <png>true</png>
-      <bmp2>false</bmp2>
-      <bmp4>false</bmp4>
-      <color>65536</color>
-      <emoji_type></emoji_type>
-
-      <wp_width>176</wp_width>
-      <wp_heigh>220</wp_heigh>
-      <cache>300000</cache>
+      <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-  </user_agent>
-
-  <user_agent pattern="^SoftBank/[^/ ]+/([^/ _]+?)[/ _].+?$">
-    <!-- Sale in 2006.10 706P -->
-    <!-- 
-      SoftBank/1.0/706P/PJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    <!--
+      SoftBank/1.0/705NK/NKJ001[/Serial] Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>706P</device_id>
-      <device_name>SoftBank 706P</device_name>
+      <device_id>705NK</device_id>
+      <device_name>SoftBank 705NK</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>236</width>
-      <heigh>258</heigh>
+      <width>240</width>
+      <heigh>267</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>16777216</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- Sale in 2006.11 910SH -->
-    <!-- 
-      SoftBank/1.0/910SH/SHJ001[/Serial] Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    <!--
+      SoftBank/1.0/812T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
     -->
     <device>
-      <device_id>910SH</device_id>
-      <device_name>SoftBank 910SH</device_name>
+      <device_id>812T</device_id>
+      <device_name>SoftBank 812T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>468</width>
-      <heigh>540</heigh>
+      <width>234</width>
+      <heigh>259</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>480</wp_width>
-      <wp_heigh>640</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!-- Sale in 2006.11 911SH -->
-    <!-- 
-      SoftBank/1.0/911SH/SHJ001[/Serial] Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    <!--
+      SoftBank/1.0/706P/PJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>911SH</device_id>
-      <device_name>SoftBank 911SH</device_name>
+      <device_id>706P</device_id>
+      <device_name>SoftBank 706P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>350</heigh>
+      <width>236</width>
+      <heigh>258</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
-      <wp_heigh>400</wp_heigh>
+      <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!-- Sale in 2006.12 706N -->
-    <!-- 
-      SoftBank/1.0/706N/NJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+    <!--
+      SoftBank/1.0/813T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
     -->
     <device>
-      <device_id>706N</device_id>
-      <device_name>SoftBank 706N</device_name>
+      <device_id>813T</device_id>
+      <device_name>SoftBank 813T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>233</width>
-      <heigh>269</heigh>
+      <width>234</width>
+      <heigh>259</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- Sale in 2006.12 705N -->
+
     <!-- 
-      SoftBank/1.0/705N/NJ001[/Serial] Browser/UP.Browser/7.0.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
     -->
     <device>
-      <device_id>705N</device_id>
-      <device_name>SoftBank 705N</device_name>
+      <device_id>822SH</device_id>
+      <device_name>SoftBank 822SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>233</width>
-      <heigh>269</heigh>
+      <width>234</width>
+      <heigh>350</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>65536</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2007.1 708SC -->
     <!-- 
-      SoftBank/1.0/708SC/SCJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>708SC</device_id>
-      <device_name>SoftBank 708SC</device_name>
+      <device_id>920T</device_id>
+      <device_name>SoftBank 920T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>310</width>
-      <heigh>186</heigh>
+      <width>234</width>
+      <heigh>339</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <color>262144</color>
       <emoji_type></emoji_type>
 
-      <wp_width>320</wp_width>
-      <wp_heigh>240</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>800</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2007.4 810P -->
     <!-- 
-      SoftBank/1.0/810P/PJP10[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>810P</device_id>
-      <device_name>SoftBank 810P</device_name>
+      <device_id>920SC</device_id>
+      <device_name>SoftBank 920SC</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>236</width>
-      <heigh>258</heigh>
+      <width>230</width>
+      <heigh>264</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>16777216</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
 
       <wp_width>240</wp_width>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- Sale in 2007.4 812SH -->
+
     <!-- 
-      SoftBank/1.0/812SH/SHJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>812SH</device_id>
-      <device_name>SoftBank 812SH</device_name>
+      <device_id>822P</device_id>
+      <device_name>SoftBank 822P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>270</heigh>
+      <width>240</width>
+      <heigh>262</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- Sale in 2007.4 813SH -->
     <!-- 
-      SoftBank/1.0/813SH/SHJ001[/Serial] Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>813SH</device_id>
-      <device_name>SoftBank 813SH</device_name>
+      <device_id>DM001SH</device_id>
+      <device_name>SoftBank DM001SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
       <width>234</width>
-      <heigh>270</heigh>
+      <heigh>350</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!-- Sale in 2007.4 813SH for Biz -->
     <!-- 
-      SoftBank/1.0/813SHe/SHJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>813SHe</device_id>
-      <device_name>SoftBank 813SH for Biz</device_name>
+      <device_id>820T</device_id>
+      <device_name>SoftBank 820T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>270</heigh>
+      <width>240</width>
+      <heigh>320</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- Sale in 2007.4 912SH -->
     <!-- 
-      SoftBank/1.0/912SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>912SH</device_id>
-      <device_name>SoftBank 912SH</device_name>
-      <html_spec_type>JXHTML</html_spec_type>
-      <width>468</width>
-      <heigh>700</heigh>
+      <device_id>820SC</device_id>
+      <device_name>SoftBank 820SC</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <width>230</width>
+      <heigh>264</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>480</wp_width>
-      <wp_heigh>800</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- Sale in 2007.4 911T -->
+
     <!-- 
-      SoftBank/1.0/911T/TJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>911T</device_id>
-      <device_name>SoftBank 911T</device_name>
+      <device_id>920P</device_id>
+      <device_name>SoftBank 920P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>339</heigh>
+      <width>471</width>
+      <heigh>700</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>480</wp_width>
-      <wp_heigh>800</wp_heigh>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- Sale in 2007.5 812SHs -->
+
     <!-- 
-      SoftBank/1.0/812SHs/SHJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>812Hs</device_id>
-      <device_name>SoftBank 812SHs</device_name>
+      <device_id>822T</device_id>
+      <device_name>SoftBank 822T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
       <width>234</width>
-      <heigh>270</heigh>
+      <heigh>259</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2007.5 816SH -->
     <!-- 
-       SoftBank/1.0/816SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>816SH</device_id>
-      <device_name>SoftBank 816SH</device_name>
+      <device_id>921SH</device_id>
+      <device_name>SoftBank 921SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>270</heigh>
+      <width>468</width>
+      <heigh>754</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2007.5 815SH -->
     <!-- 
-      SoftBank/1.0/815SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>815SH</device_id>
-      <device_name>SoftBank 815SH</device_name>
+      <device_id>823SH</device_id>
+      <device_name>SoftBank 823SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>270</heigh>
+      <width>234</width>
+      <heigh>350</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2007.5 814SH -->
     <!-- 
-      SoftBank/1.0/814SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>814SH</device_id>
-      <device_name>SoftBank 814SH</device_name>
+      <device_id>821T</device_id>
+      <device_name>SoftBank 821T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>468</width>
-      <heigh>540</heigh>
+      <width>234</width>
+      <heigh>243</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>480</wp_width>
-      <wp_heigh>640</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2007.5 912T -->
     <!-- 
-      SoftBank/1.0/912T/TJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>912T</device_id>
-      <device_name>SoftBank 912T</device_name>
+      <device_id>921T</device_id>
+      <device_name>SoftBank 921T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
       <width>234</width>
       <heigh>339</heigh>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- Sale in 2007.5 815T -->
+
     <!-- 
-      SoftBank/1.0/815T/TJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>815T</device_id>
-      <device_name>SoftBank 815T</device_name>
+      <device_id>922SH</device_id>
+      <device_name>SoftBank 922SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>259</heigh>
+      <width>842</width>
+      <heigh>384</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>854</wp_width>
+      <wp_heigh>480</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!-- Sale in 2007.5 814T -->
-    <!-- 
-      SoftBank/1.0/814T/TJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+
+    <!--
+      SoftBank/1.0/920SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    //-->
     <device>
-      <device_id>814T</device_id>
-      <device_name>SoftBank 814T</device_name>
+      <device_id>920SH</device_id>
+      <device_name>SoftBank 920SH YK</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>259</heigh>
+      <width>468</width>
+      <heigh>454</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2007.6 805SC -->
-    <!-- 
-      SoftBank/1.0/805SC/SCJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    <!--
+      SoftBank/1.0/821SC/SCJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>805SC</device_id>
-      <device_name>SoftBank 805SC</device_name>
+      <device_id>821SC</device_id>
+      <device_name>SoftBank 821SC</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>230</width>
-      <heigh>264</heigh>
+      <width>234</width>
+      <heigh>267</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2007.8 913SH/913SHG -->
-    <!-- 
-      SoftBank/1.0/913SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    <!--
+      SoftBank/1.0/DM002SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>913SH</device_id>
-      <device_name>SoftBank 913SH</device_name>
+      <device_id>DM002SH</device_id>
+      <device_name>SoftBank DM002SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
       <width>234</width>
       <heigh>350</heigh>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
       <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2007.9 820SH -->
-    <!-- 
-      SoftBank/1.0/820SH/SHJ001[ /Serial ] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    <!--
+      823P
+      SoftBank/1.0/823P/PJP10[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>820SH</device_id>
-      <device_name>SoftBank 820SH</device_name>
+      <device_id>823P</device_id>
+      <device_name>SoftBank 823P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
       <width>234</width>
-      <heigh>350</heigh>
+      <heigh>355</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
-      <wp_heigh>400</wp_heigh>
+      <wp_heigh>427</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2007.9 821SH -->
-    <!-- 
-      SoftBank/1.0/821SH/SHJ001[ /Serial ] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    <!--
+      825SH
+      SoftBank/1.0/825SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>821SH</device_id>
-      <device_name>SoftBank 821SH</device_name>
+      <device_id>825SH</device_id>
+      <device_name>SoftBank 825SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
+      <width>240</width>
       <heigh>350</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
       <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2007.9 820P -->
-    <!-- 
-      SoftBank/1.0/820P/PJP10[ /Serial ] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    <!--
+      821N
+      SoftBank/1.0/821N/NJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>820P</device_id>
-      <device_name>SoftBank 820P</device_name>
+      <device_id>821N</device_id>
+      <device_name>SoftBank 821N</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>342</heigh>
+      <width>240</width>
+      <heigh>325</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>16777216</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>240</wp_width>
-      <wp_heigh>400</wp_heigh>
+      <wp_width>242</wp_width>
+      <wp_heigh>431</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2007.9 920SH -->
-    <!-- 
-      SoftBank/1.0/920SH/SHJ001[ /Serial ] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    <!--
+      820N
+      SoftBank/1.0/820N/NJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>920SH</device_id>
-      <device_name>SoftBank 920SH</device_name>
+      <device_id>820N</device_id>
+      <device_name>SoftBank 820N</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>468</width>
-      <heigh>700</heigh>
+      <width>240</width>
+      <heigh>325</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-
-      <wp_width>480</wp_width>
-      <wp_heigh>854</wp_heigh>
+      <wp_width>242</wp_width>
+      <wp_heigh>431</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2007.10 821P -->
-    <!-- 
-      SoftBank/1.0/821P/PJP10[ /Serial ] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    <!--
+      923SH
+      SoftBank/1.0/923SH/SHJ001 Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>821P</device_id>
-      <device_name>SoftBank 821P</device_name>
+      <device_id>923SH</device_id>
+      <device_name>SoftBank 923SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>342</heigh>
+      <width>480</width>
+      <heigh>754</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <color>16777216</color>
       <emoji_type></emoji_type>
-
-      <wp_width>240</wp_width>
-      <wp_heigh>400</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!-- Sale in 2007.12 705P/705Px -->
-    <!-- 
-      SoftBank/1.0/705P/PJP10[/Serial] Browser/Teleca-Browser/3.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
+    <!--
+      824SH
+      SoftBank/1.0/824SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>705P</device_id>
-      <device_name>SoftBank 705P/705Px</device_name>
+      <device_id>824SH</device_id>
+      <device_name>SoftBank 824SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>236</width>
-      <heigh>258</heigh>
+      <width>240</width>
+      <heigh>350</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>16777216</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
     <!--
-      SoftBank/1.0/910T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      824P
+      SoftBank/1.0/824P/PJP10[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>910T</device_id>
-      <device_name>SoftBank 910T</device_name>
+      <device_id>824P</device_id>
+      <device_name>SoftBank 824P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>259</heigh>
+      <width>232</width>
+      <heigh>352</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>16777216</color>
+      <color>262144</color>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>427</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
     <!--
-      SoftBank/1.0/810SH/SHJ001[/Serial] Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+      921P
+      SoftBank/1.0/921P/PJP10[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>810SH</device_id>
-      <device_name>SoftBank 810SH</device_name>
+      <device_id>921P</device_id>
+      <device_name>SoftBank 921P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>468</width>
-      <heigh>540</heigh>
+      <width>471</width>
+      <heigh>700</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <color>262144</color>
       <emoji_type></emoji_type>
       <wp_width>480</wp_width>
-      <wp_heigh>640</wp_heigh>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
     <!--
-      SoftBank/1.0/811SH/SHJ001[/Serial] Browser/VF-NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+      823T
+      SoftBank/1.0/823T/TJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>811SH</device_id>
-      <device_name>SoftBank 811SH</device_name>
+      <device_id>823T</device_id>
+      <device_name>SoftBank 823T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>468</width>
-      <heigh>540</heigh>
+      <width>235</width>
+      <heigh>341</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp4>false</bmp4>
       <color>262144</color>
       <emoji_type></emoji_type>
-      <wp_width>480</wp_width>
-      <wp_heigh>640</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
     <!--
-      SoftBank/1.0/705SC/SCJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+      824T
+      SoftBank/1.0/824T/TJ001[/serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>705SC</device_id>
-      <device_name>SoftBank 705SC</device_name>
+      <device_id>824T</device_id>
+      <device_name>SoftBank 824T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>230</width>
-      <heigh>264</heigh>
+      <width>235</width>
+      <heigh>341</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <color>262144</color>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
     <!--
-      SoftBank/1.0/706SC/SCJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+      830SH
+      SoftBank/1.0/830SH/SHJ001[/serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>706SC</device_id>
-      <device_name>SoftBank 706SC</device_name>
+      <device_id>830SH</device_id>
+      <device_name>SoftBank 830SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>230</width>
-      <heigh>264</heigh>
+      <width>240</width>
+      <heigh>270</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
     <!--
-      SoftBank/1.0/810T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      830SHs
+      SoftBank/1.0/830SHs/SHJ001[/serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>810T</device_id>
-      <device_name>SoftBank 810T</device_name>
+      <device_id>830SHs</device_id>
+      <device_name>SoftBank 830SHs</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>259</heigh>
+      <width>240</width>
+      <heigh>270</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
     <!--
-      SoftBank/1.0/811T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      830P
+      SoftBank/1.0/830P/PJP10[/serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>811T</device_id>
-      <device_name>SoftBank 811T</device_name>
+      <device_id>830P</device_id>
+      <device_name>SoftBank 830P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>259</heigh>
+      <width>240</width>
+      <heigh>375</heigh>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <color>262144</color>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>427</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
     <!--
+      930SH
+      SoftBank/1.0/930SH/SHJ001[/serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>707SC</device_id>
-      <device_name>SoftBank 707SC</device_name>
+      <device_id>930SH</device_id>
+      <device_name>SoftBank 930SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>230</width>
-      <heigh>264</heigh>
+      <color>16777216</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>480</width>
+      <heigh>754</heigh>
       <emoji_type></emoji_type>
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
     <!--
+      830CA
+      SoftBank/1.0/830CA/CAJ001[/serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>709SC</device_id>
-      <device_name>SoftBank 709SC</device_name>
+      <device_id>830CA</device_id>
+      <device_name>SoftBank 830CA</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>230</width>
-      <heigh>264</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>240</width>
+      <heigh>350</heigh>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>427</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
+
     <!--
-      SoftBank/1.0/705NK/NKJ001[/Serial] Profile/MIDP-2.0 Configuration/CLDC-1.1
+      931SH
+      SoftBank/1.0/931SH/SHJ001[/serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>705NK</device_id>
-      <device_name>SoftBank 705NK</device_name>
+      <device_id>931SH</device_id>
+      <device_name>SoftBank 931SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>267</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>480</width>
+      <heigh>824</heigh>
       <emoji_type></emoji_type>
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>1024</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
+
     <!--
-      SoftBank/1.0/812T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      930SC
+      SoftBank/1.0/930SC/SCJ001[/serial] Browser/NetFront/3.4
     -->
     <device>
-      <device_id>812T</device_id>
-      <device_name>SoftBank 812T</device_name>
+      <device_id>930SC</device_id>
+      <device_name>SoftBank 930SC</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>259</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>470</width>
+      <heigh>512</heigh>
       <emoji_type></emoji_type>
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>800</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
+
     <!--
-      SoftBank/1.0/706P/PJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
+      DM003SH
+      SoftBank/1.0/DM003SH/SHJ001[/serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>706P</device_id>
-      <device_name>SoftBank 706P</device_name>
+      <device_id>DM003SH</device_id>
+      <device_name>SoftBank DM003SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>236</width>
-      <heigh>258</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>240</width>
+      <heigh>350</heigh>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+
     <!--
-      SoftBank/1.0/813T/TJ001[/Serial] Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0
+      830T
+      SoftBank/1.0/830T/TJ001[/serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>813T</device_id>
-      <device_name>SoftBank 813T</device_name>
+      <device_id>830T</device_id>
+      <device_name>SoftBank 830T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>259</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>235</width>
+      <heigh>341</heigh>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
+
+
     <!--
+      831T
+      SoftBank/1.0/831T/TJ001[/serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>822SH</device_id>
-      <device_name>SoftBank 822SH</device_name>
+      <device_id>831T</device_id>
+      <device_name>SoftBank 831T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>350</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>235</width>
+      <heigh>341</heigh>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
       <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
+
     <!--
+      930P
+      SoftBank/1.0/930P/PJP10[/serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
     -->
     <device>
-      <device_id>920T</device_id>
-      <device_name>SoftBank 920T</device_name>
+      <device_id>930P</device_id>
+      <device_name>SoftBank 930P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>339</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>471</width>
+      <heigh>700</heigh>
       <emoji_type></emoji_type>
-
       <wp_width>480</wp_width>
-      <wp_heigh>800</wp_heigh>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
-    <!--
-    -->
+       <!-- OSAKANA TARO add start -->
+       <!--
+               831SH
+               SoftBank/1.0/831SH/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/831SH/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/831SH/SHJ001 Widgets/Widgets/1.0 
+               SoftBank/1.0/831SH/SHJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/5.0 (831SH;SoftBank[;Serial]) NetFront/3.5 
+       -->
     <device>
-      <device_id>920SC</device_id>
-      <device_name>SoftBank 920SC</device_name>
+      <device_id>831SH</device_id>
+      <device_name>SoftBank 831SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>230</width>
-      <heigh>264</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>240</width>
+      <heigh>350</heigh>
       <emoji_type></emoji_type>
-
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>400</wp_heigh>
+      <cache>307200</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+
+       <!--
+               932SH
+               SoftBank/1.0/932SH/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/932SH/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/932SH/SHJ001 Widgets/Widgets/1.0 
+               SoftBank/1.0/932SH/SHJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/5.0 (932SH;SoftBank[;Serial]) NetFront/3.5 
+       -->
+    <device>
+      <device_id>932SH</device_id>
+      <device_name>SoftBank 932SH</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <color>262144</color>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <width>480</width>
+      <heigh>754</heigh>
+      <emoji_type></emoji_type>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-    -->
+       <!--
+               830N
+               SoftBank/1.0/830N/NJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/830N/NJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/830N/NJ001 Widgets/WGTClient/1.0 
+               SoftBank/1.0/830N/NJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/4.08 (830N;SoftBank[;Serial]) NetFront/3.4 
+       -->
     <device>
-      <device_id>822P</device_id>
-      <device_name>SoftBank 822P</device_name>
+      <device_id>830N</device_id>
+      <device_name>SoftBank 830N</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>262</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>480</width>
+      <heigh>650</heigh>
       <emoji_type></emoji_type>
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!--
-    -->
-    <device>
-      <device_id>DM001SH</device_id>
-      <device_name>SoftBank DM001SH</device_name>
+       <!--
+               830SH for Biz
+               SoftBank/1.0/830SHe/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/830SHe/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               × 
+               SoftBank/1.0/830SHe/SHJ001[/Serial] Flash/Flash-Lite/2.0 
+               Mozilla/5.0 (830SHe;SoftBank[;Serial]) NetFront/3.4 
+       -->
+       <device>
+      <device_id>830SHe</device_id>
+      <device_name>SoftBank 830SHe</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>350</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>240</width>
+      <heigh>270</heigh>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
-      <wp_heigh>400</wp_heigh>
+      <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!--
-    -->
+       <!--
+               930CA
+               SoftBank/1.0/930CA/CAJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/930CA/CAJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               × 
+               SoftBank/1.0/930CA/CAJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/4.08 (930CA;SoftBank[;Serial]) NetFront/3.4 
+       -->
     <device>
-      <device_id>820T</device_id>
-      <device_name>SoftBank 820T</device_name>
+      <device_id>930CA</device_id>
+      <device_name>SoftBank 930CA</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>320</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>480</width>
+      <heigh>700</heigh>
       <emoji_type></emoji_type>
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-    <!--
-    -->
+       <!--
+               831P
+               SoftBank/1.0/831P/PJP10[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/831P/PJP10[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               × 
+               SoftBank/1.0/831P/PJP10[/Serial] Flash/Flash-Lite/2.0 
+               Mozilla/4.08 (831P;SoftBank[;Serial]) NetFront/3.4 
+       -->
     <device>
-      <device_id>820SC</device_id>
-      <device_name>SoftBank 820SC</device_name>
+      <device_id>831P</device_id>
+      <device_name>SoftBank 831P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>230</width>
-      <heigh>264</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>240</width>
+      <heigh>350</heigh>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>427</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-    -->
+       <!--
+               731SC
+               SoftBank/1.0/731SC/SCJ001[/Serial] Browser/NetFront/3.3 
+               × 
+               × 
+               × 
+               Mozilla/4.08 (731SC;SoftBank[;Serial]) NetFront/3.3 
+       -->
     <device>
-      <device_id>920P</device_id>
-      <device_name>SoftBank 920P</device_name>
+      <device_id>731SC</device_id>
+      <device_name>SoftBank 731SC</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>471</width>
-      <heigh>700</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>230</width>
+      <heigh>264</heigh>
       <emoji_type></emoji_type>
-      <wp_width>480</wp_width>
-      <wp_heigh>854</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-    -->
+       <!--
+               830SH Preminum
+               SoftBank/1.0/830SHp/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/830SHp/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               × 
+               SoftBank/1.0/830SHp/SHJ001[/Serial] Flash/Flash-Lite/2.0 
+               Mozilla/5.0 (830SHp;SoftBank[;Serial]) NetFront/3.4 
+       -->
     <device>
-      <device_id>822T</device_id>
-      <device_name>SoftBank 822T</device_name>
+      <device_id>830SHp</device_id>
+      <device_name>SoftBank 830SHp</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>259</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>240</width>
+      <heigh>270</heigh>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-    -->
-    <device>
-      <device_id>921SH</device_id>
-      <device_name>SoftBank 921SH</device_name>
+       <!--
+               831SH KT→831SHと同じ
+               SoftBank/1.0/831SH/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/831SH/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/831SH/SHJ001 Widgets/Widgets/1.0 
+               SoftBank/1.0/831SH/SHJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/5.0 (831SH;SoftBank[;Serial]) NetFront/3.5 
+       -->
+       <!--
+               831SHs
+               SoftBank/1.0/831SHs/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/831SHs/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/831SHs/SHJ001 Widgets/Widgets/1.0 
+               SoftBank/1.0/831SHs/SHJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/5.0 (831SHs;SoftBank[;Serial]) NetFront/3.5 
+       -->
+    <device>
+      <device_id>831SHs</device_id>
+      <device_name>SoftBank 831SHs</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>468</width>
-      <heigh>754</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>240</width>
+      <heigh>350</heigh>
       <emoji_type></emoji_type>
-      <wp_width>480</wp_width>
-      <wp_heigh>854</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-    -->
+       <!--
+               832P
+               SoftBank/1.0/832P/PJP10[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/832P/PJP10[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               × 
+               SoftBank/1.0/832P/PJP10[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/4.08 (832P;SoftBank[;Serial]) NetFront/3.4 
+       -->
     <device>
-      <device_id>823SH</device_id>
-      <device_name>SoftBank 823SH</device_name>
+      <device_id>832P</device_id>
+      <device_name>SoftBank 832P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>350</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>231</width>
+      <heigh>350</heigh>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
-      <wp_heigh>400</wp_heigh>
+      <wp_heigh>427</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-    -->
+       <!--
+               933SH
+               SoftBank/1.0/933SH/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/933SH/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/933SH/SHJ001 Widgets/Widgets/1.0 
+               SoftBank/1.0/933SH/SHJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/5.0 (933SH;SoftBank[;Serial]) NetFront/3.5 
+       -->
     <device>
-      <device_id>821T</device_id>
-      <device_name>SoftBank 821T</device_name>
+      <device_id>933SH</device_id>
+      <device_name>SoftBank 933SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>243</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>480</width>
+      <heigh>738</heigh>
       <emoji_type></emoji_type>
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-    -->
+       <!--
+               934SH
+               SoftBank/1.0/934SH/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/934SH/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/934SH/SHJ001 Widgets/Widgets/1.0 
+               SoftBank/1.0/934SH/SHJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/5.0 (934SH;SoftBank[;Serial]) NetFront/3.5 
+       -->
     <device>
-      <device_id>921T</device_id>
-      <device_name>SoftBank 921T</device_name>
+      <device_id>934SH</device_id>
+      <device_name>SoftBank 934SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>339</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>480</width>
+      <heigh>754</heigh>
       <emoji_type></emoji_type>
-
-      <wp_width>240</wp_width>
-      <wp_heigh>400</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-    -->
+       <!--
+               930N
+               SoftBank/1.0/930N/NJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/930N/NJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/930N/NJ001 Widgets/WGTClient/1.0 
+               SoftBank/1.0/930N/NJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/4.08 (930N;SoftBank[;Serial]) NetFront/3.4 
+       -->
     <device>
-      <device_id>922SH</device_id>
-      <device_name>SoftBank 922SH</device_name>
+      <device_id>930N</device_id>
+      <device_name>SoftBank 930N</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>842</width>
-      <heigh>384</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>480</width>
+      <heigh>650</heigh>
       <emoji_type></emoji_type>
-      <wp_width>854</wp_width>
-      <wp_heigh>480</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      SoftBank/1.0/920SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    //-->
+       <!--
+               931SC
+               SoftBank/1.0/931SC/SCJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/931SC/SCJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               × 
+               SoftBank/1.0/931SC/SCJ001[/Serial] Flash/Flash-Lite/3.1 
+               Mozilla/4.08 (931SC;SoftBank[;Serial]) NetFront/3.4 
+       -->
     <device>
-      <device_id>920SH</device_id>
-      <device_name>SoftBank 920SH YK</device_name>
+      <device_id>931SC</device_id>
+      <device_name>SoftBank 931SC</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>468</width>
-      <heigh>454</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>471</width>
+      <heigh>512</heigh>
       <emoji_type></emoji_type>
       <wp_width>480</wp_width>
-      <wp_heigh>854</wp_heigh>
+      <wp_heigh>800</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      SoftBank/1.0/821SC/SCJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               832T
+               SoftBank/1.0/832T/TJ001[/Serial] Browser/NetFront/3.3 
+               × 
+               × 
+               SoftBank/1.0/832T/TJ001[/Serial] Flash/Flash-Lite/2.0 
+               × 
+       -->
     <device>
-      <device_id>821SC</device_id>
-      <device_name>SoftBank 821SC</device_name>
+      <device_id>832T</device_id>
+      <device_name>SoftBank 832T</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>267</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>234</width>
+      <heigh>243</heigh>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
       <wp_heigh>320</wp_heigh>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      SoftBank/1.0/DM002SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               931P
+               SoftBank/1.0/931P/PJP10[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/931P/PJP10[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/931P/PJP10 Widgets/Widgets/1.0 
+               SoftBank/1.0/931P/PJP10[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/4.08 (931P;SoftBank[;Serial]) NetFront/3.4 
+       -->
     <device>
-      <device_id>DM002SH</device_id>
-      <device_name>SoftBank DM002SH</device_name>
+      <device_id>931P</device_id>
+      <device_name>SoftBank 931P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>350</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>471</width>
+      <heigh>700</heigh>
       <emoji_type></emoji_type>
-      <wp_width>240</wp_width>
-      <wp_heigh>400</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      823P
-      SoftBank/1.0/823P/PJP10[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               935SH
+               SoftBank/1.0/935SH/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/935SH/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/935SH/SHJ001 Widgets/Widgets/1.0 
+               SoftBank/1.0/935SH/SHJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/5.0 (935SH;SoftBank[;Serial]) NetFront/3.5 
+       -->
     <device>
-      <device_id>823P</device_id>
-      <device_name>SoftBank 823P</device_name>
+      <device_id>935SH</device_id>
+      <device_name>SoftBank 935SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>234</width>
-      <heigh>355</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>480</width>
+      <heigh>754</heigh>
       <emoji_type></emoji_type>
-      <wp_width>240</wp_width>
-      <wp_heigh>427</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      825SH
-      SoftBank/1.0/825SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               832SH
+               SoftBank/1.0/832SH/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/832SH/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/832SH/SHJ001 Widgets/Widgets/1.0 
+               SoftBank/1.0/832SH/SHJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/5.0 (832SH;SoftBank[;Serial]) NetFront/3.5 
+       -->
     <device>
-      <device_id>825SH</device_id>
-      <device_name>SoftBank 825SH</device_name>
+      <device_id>832SH</device_id>
+      <device_name>SoftBank 832SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>350</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>240</width>
+      <heigh>350</heigh>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
       <wp_heigh>400</wp_heigh>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      821N
-      SoftBank/1.0/821N/NJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               936SH
+               SoftBank/1.0/936SH/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/936SH/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/936SH/SHJ001 Widgets/Widgets/1.0 
+               SoftBank/1.0/936SH/SHJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/5.0 (936SH;SoftBank[;Serial]) NetFront/3.5 
+       -->
     <device>
-      <device_id>821N</device_id>
-      <device_name>SoftBank 821N</device_name>
+      <device_id>936SH</device_id>
+      <device_name>SoftBank 936SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>325</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>480</width>
+      <heigh>754</heigh>
       <emoji_type></emoji_type>
-      <wp_width>242</wp_width>
-      <wp_heigh>431</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      820N
-      SoftBank/1.0/820N/NJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               830SC
+               SoftBank/1.0/830SC/SCJ001[/Serial] Browser/NetFront/3.3 
+               × 
+               × 
+               × 
+               Mozilla/4.08 (830SC;SoftBank[;Serial]) NetFront/3.3 
+       -->
     <device>
-      <device_id>820N</device_id>
-      <device_name>SoftBank 820N</device_name>
+      <device_id>830SC</device_id>
+      <device_name>SoftBank 830SC</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>325</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>232</width>
+      <heigh>264</heigh>
       <emoji_type></emoji_type>
-      <wp_width>242</wp_width>
-      <wp_heigh>431</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      923SH
-      SoftBank/1.0/923SH/SHJ001 Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               831N
+               SoftBank/1.0/831N/NJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/831N/NJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               × 
+               SoftBank/1.0/831N/NJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/4.08 (831N;SoftBank[;Serial]) NetFront/3.4 
+       -->
     <device>
-      <device_id>923SH</device_id>
-      <device_name>SoftBank 923SH</device_name>
+      <device_id>831N</device_id>
+      <device_name>SoftBank 831N</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>480</width>
-      <heigh>754</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>16777216</color>
+      <width>240</width>
+      <heigh>325</heigh>
       <emoji_type></emoji_type>
-      <wp_width>480</wp_width>
-      <wp_heigh>854</wp_heigh>
+      <wp_width>240</wp_width>
+      <wp_heigh>427</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      824SH
-      SoftBank/1.0/824SH/SHJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               740SC
+               SoftBank/1.0/740SC/SCJ001[/Serial] Browser/NetFront/3.3 
+               × 
+               × 
+               × 
+               Mozilla/4.08 (740SC;SoftBank[;Serial]) NetFront/3.3 
+       -->
     <device>
-      <device_id>824SH</device_id>
-      <device_name>SoftBank 824SH</device_name>
+      <device_id>740SC</device_id>
+      <device_name>SoftBank 740SC</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>350</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>232</width>
+      <heigh>264</heigh>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
-      <wp_heigh>400</wp_heigh>
+      <wp_heigh>320</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      824P
-      SoftBank/1.0/824P/PJP10[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               832SHs
+               SoftBank/1.0/832SHs/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/832SHs/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/832SHs/SHJ001 Widgets/Widgets/1.0 
+               SoftBank/1.0/832SHs/SHJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/5.0 (832SHs;SoftBank[;Serial]) NetFront/3.5 
+       -->
     <device>
-      <device_id>824P</device_id>
-      <device_name>SoftBank 824P</device_name>
+      <device_id>832SHs</device_id>
+      <device_name>SoftBank 832SHs</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>232</width>
-      <heigh>352</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>240</width>
+      <heigh>350</heigh>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
-      <wp_heigh>427</wp_heigh>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      921P
-      SoftBank/1.0/921P/PJP10[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               940SH
+               SoftBank/1.0/940SH/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/940SH/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/940SH/SHJ001 Widgets/Widgets/1.0 
+               SoftBank/1.0/940SH/SHJ001[/Serial] Flash/Flash-Lite/3.1 
+               Mozilla/5.0 (940SH;SoftBank[;Serial]) NetFront/3.5 
+       -->
     <device>
-      <device_id>921P</device_id>
-      <device_name>SoftBank 921P</device_name>
+      <device_id>940SH</device_id>
+      <device_name>SoftBank 940SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>471</width>
-      <heigh>700</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>480</width>
+      <heigh>738</heigh>
       <emoji_type></emoji_type>
       <wp_width>480</wp_width>
       <wp_heigh>854</wp_heigh>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      823T
-      SoftBank/1.0/823T/TJ001[/Serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               931N
+               SoftBank/1.0/931N/NJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/931N/NJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/931N/NJ001 Widgets/WGTClient/1.0 
+               SoftBank/1.0/931N/NJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/4.08 (931N;SoftBank[;Serial]) NetFront/3.4 
+       -->
     <device>
-      <device_id>823T</device_id>
-      <device_name>SoftBank 823T</device_name>
+      <device_id>931N</device_id>
+      <device_name>SoftBank 931N</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>235</width>
-      <heigh>341</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>480</width>
+      <heigh>640</heigh>
       <emoji_type></emoji_type>
-      <wp_width>240</wp_width>
-      <wp_heigh>400</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      824T
-      SoftBank/1.0/824T/TJ001[/serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               S940SC
+               oftBank/1.0/940SC/SCJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/940SC/SCJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/940SC/SCJ001 Widgets/NetFront/1.0 
+               SoftBank/1.0/940SC/SCJ001[/Serial] Flash/Flash-Lite/3.1 
+               Mozilla/5.0 (940SC;SoftBank[;Serial]) NetFront/3.5 
+       -->
     <device>
-      <device_id>824T</device_id>
-      <device_name>SoftBank 824T</device_name>
+      <device_id>940SC</device_id>
+      <device_name>SoftBank 940SC</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>235</width>
-      <heigh>341</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>480</width>
+      <heigh>512</heigh>
       <emoji_type></emoji_type>
-      <wp_width>240</wp_width>
-      <wp_heigh>400</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>800</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      830SH
-      SoftBank/1.0/830SH/SHJ001[/serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               941SH
+               SoftBank/1.0/941SH/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/941SH/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/941SH/SHJ001 Widgets/Widgets/1.0 
+               SoftBank/1.0/941SH/SHJ001[/Serial] Flash/Flash-Lite/3.1 
+               Mozilla/5.0 (941SH;SoftBank[;Serial]) NetFront/3.5 
+       -->
     <device>
-      <device_id>830SH</device_id>
-      <device_name>SoftBank 830SH</device_name>
+      <device_id>941SH</device_id>
+      <device_name>SoftBank 941SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>270</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>480</width>
+      <heigh>824</heigh>
       <emoji_type></emoji_type>
-      <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>1024</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      830SHs
-      SoftBank/1.0/830SHs/SHJ001[/serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               840P
+               SoftBank/1.0/840P/PJP10[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/840P/PJP10[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               × 
+               SoftBank/1.0/840P/PJP10[/Serial] Flash/Flash-Lite/2.0 
+               Mozilla/4.08 (840P;SoftBank[;Serial]) NetFront/3.4 
+       -->
     <device>
-      <device_id>830SHs</device_id>
-      <device_name>SoftBank 830SHs</device_name>
+      <device_id>840P</device_id>
+      <device_name>SoftBank 840P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>270</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>236</width>
+      <heigh>369</heigh>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
-      <wp_heigh>320</wp_heigh>
+      <wp_heigh>427</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      830P
-      SoftBank/1.0/830P/PJP10[/serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               940N
+               SoftBank/1.0/940N/NJ001[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/940N/NJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/940N/NJ001 Widgets/WGTClient/1.0 
+               SoftBank/1.0/940N/NJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/4.08 (940N;SoftBank[;Serial]) NetFront/3.4 
+       -->
     <device>
-      <device_id>830P</device_id>
-      <device_name>SoftBank 830P</device_name>
+      <device_id>940N</device_id>
+      <device_name>SoftBank 940N</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <width>240</width>
-      <heigh>375</heigh>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <color>262144</color>
+      <width>480</width>
+      <heigh>650</heigh>
       <emoji_type></emoji_type>
-      <wp_width>240</wp_width>
-      <wp_heigh>427</wp_heigh>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      930SH
-      SoftBank/1.0/930SH/SHJ001[/serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               940P
+               SoftBank/1.0/940P/PJP10[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/940P/PJP10[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/940P/PJP10 Widgets/Widgets/1.0 
+               SoftBank/1.0/940P/PJP10[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/4.08 (940P;SoftBank[;Serial]) NetFront/3.4 
+       -->
     <device>
-      <device_id>930SH</device_id>
-      <device_name>SoftBank 930SH</device_name>
+      <device_id>940P</device_id>
+      <device_name>SoftBank 940P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
-      <color>16777216</color>
+      <color>262144</color>
       <gif>true</gif>
       <jpeg>true</jpeg>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <width>480</width>
-      <heigh>754</heigh>
+      <width>471</width>
+      <heigh>700</heigh>
       <emoji_type></emoji_type>
       <wp_width>480</wp_width>
       <wp_heigh>854</wp_heigh>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      830CA
-      SoftBank/1.0/830CA/CAJ001[/serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               840SH
+               SoftBank/1.0/840SH/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/840SH/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               × 
+               SoftBank/1.0/840SH/SHJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/5.0 (840SH;SoftBank[;Serial]) NetFront/3.5 
+       -->
     <device>
-      <device_id>830CA</device_id>
-      <device_name>SoftBank 830CA</device_name>
+      <device_id>840SH</device_id>
+      <device_name>SoftBank 840SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
       <color>262144</color>
       <gif>true</gif>
       <heigh>350</heigh>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
-      <wp_heigh>427</wp_heigh>
+      <wp_heigh>400</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-
-    <!--
-      931SH
-      SoftBank/1.0/931SH/SHJ001[/serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               941P
+               SoftBank/1.0/941P/PJP10[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/941P/PJP10[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/941P/PJP10 Widgets/Widgets/1.0 
+               SoftBank/1.0/941P/PJP10[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/4.08 (941P;SoftBank[;Serial]) NetFront/3.4 
+       -->
     <device>
-      <device_id>931SH</device_id>
-      <device_name>SoftBank 931SH</device_name>
+      <device_id>941P</device_id>
+      <device_name>SoftBank 941P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
       <color>262144</color>
       <gif>true</gif>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <width>480</width>
-      <heigh>824</heigh>
+      <width>471</width>
+      <heigh>700</heigh>
       <emoji_type></emoji_type>
       <wp_width>480</wp_width>
-      <wp_heigh>1024</wp_heigh>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-
-    <!--
-      930SC
-      SoftBank/1.0/930SC/SCJ001[/serial] Browser/NetFront/3.4
-    -->
+       <!--
+               942SH
+               SoftBank/1.0/942SH/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/942SH/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/942SH/SHJ001 Widgets/Widgets/1.0 
+               SoftBank/1.0/942SH/SHJ001[/Serial] Flash/Flash-Lite/3.1 
+               Mozilla/5.0 (942SH;SoftBank[;Serial]) NetFront/3.5 
+       -->
     <device>
-      <device_id>930SC</device_id>
-      <device_name>SoftBank 930SC</device_name>
+      <device_id>942SH</device_id>
+      <device_name>SoftBank 942SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
       <color>262144</color>
       <gif>true</gif>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <width>470</width>
-      <heigh>512</heigh>
+      <width>480</width>
+      <heigh>754</heigh>
       <emoji_type></emoji_type>
       <wp_width>480</wp_width>
-      <wp_heigh>800</wp_heigh>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-
-    <!--
-      DM003SH
-      SoftBank/1.0/DM003SH/SHJ001[/serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               840P for Biz
+               SoftBank/1.0/840Pe/PJP10[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/840Pe/PJP10[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               × 
+               SoftBank/1.0/840Pe/PJP10[/Serial] Flash/Flash-Lite/2.0 
+               Mozilla/4.08 (840Pe;SoftBank[;Serial]) NetFront/3.4 
+       -->
     <device>
-      <device_id>DM003SH</device_id>
-      <device_name>SoftBank DM003SH</device_name>
+      <device_id>840Pe</device_id>
+      <device_name>SoftBank 840Pe</device_name>
       <html_spec_type>JXHTML</html_spec_type>
       <color>262144</color>
       <gif>true</gif>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <width>240</width>
-      <heigh>350</heigh>
+      <width>236</width>
+      <heigh>369</heigh>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
-      <wp_heigh>400</wp_heigh>
+      <wp_heigh>427</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-    <!--
-      830T
-      SoftBank/1.0/830T/TJ001[/serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               841P
+               SoftBank/1.0/841P/PJP10[/Serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/841P/PJP10[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               × 
+               SoftBank/1.0/841P/PJP10[/Serial] Flash/Flash-Lite/2.0 
+               Mozilla/4.08 (841P;SoftBank[;Serial]) NetFront/3.4 
+       -->
     <device>
-      <device_id>830T</device_id>
-      <device_name>SoftBank 830T</device_name>
+      <device_id>841P</device_id>
+      <device_name>SoftBank 941P</device_name>
       <html_spec_type>JXHTML</html_spec_type>
       <color>262144</color>
       <gif>true</gif>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <width>235</width>
-      <heigh>341</heigh>
+      <width>236</width>
+      <heigh>369</heigh>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
-      <wp_heigh>400</wp_heigh>
+      <wp_heigh>427</wp_heigh>
+      <cache>307200</cache>
+      <dpi_width>96</dpi_width>
+      <dpi_heigh>96</dpi_heigh>
+    </device>
+       <!--
+               943SH
+               SoftBank/1.0/943SH/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/943SH/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/943SH/SHJ001 Widgets/Widgets/2.0 
+               SoftBank/1.0/943SH/SHJ001[/Serial] Flash/Flash-Lite/3.1 
+               Mozilla/5.0 (943SH;SoftBank[;Serial]) NetFront/3.5 
+       -->
+    <device>
+      <device_id>943SH</device_id>
+      <device_name>SoftBank 943SH</device_name>
+      <html_spec_type>JXHTML</html_spec_type>
+      <color>262144</color>
+      <gif>true</gif>
+      <jpeg>true</jpeg>
+      <png>true</png>
+      <bmp2>false</bmp2>
+      <bmp4>false</bmp4>
+      <width>480</width>
+      <heigh>754</heigh>
+      <emoji_type></emoji_type>
+      <wp_width>480</wp_width>
+      <wp_heigh>854</wp_heigh>
       <cache>307200</cache>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
 
+       <!--
+               942SH KT → 942SHと同じ
+               SoftBank/1.0/942SH/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/942SH/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/942SH/SHJ001 Widgets/Widgets/1.0 
+               SoftBank/1.0/942SH/SHJ001[/Serial] Flash/Flash-Lite/3.1 
+               Mozilla/5.0 (942SH;SoftBank[;Serial]) NetFront/3.5 
+       -->
 
-
-    <!--
-      831T
-      SoftBank/1.0/831T/TJ001[/serial] Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!-- Disney Mobile -->
+       <!--
+               SoftBank/1.0/DM004SH/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/DM004SH/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/DM004SH/SHJ001 Widgets/Widgets/1.0 
+               SoftBank/1.0/DM004SH/SHJ001[/Serial] Flash/Flash-Lite/3.0 
+               Mozilla/5.0 (DM004SH;SoftBank[;Serial]) NetFront/3.5 
+       -->
     <device>
-      <device_id>831T</device_id>
-      <device_name>SoftBank 831T</device_name>
+      <device_id>DM004SH</device_id>
+      <device_name>SoftBank DM004SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
       <color>262144</color>
       <gif>true</gif>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <width>235</width>
-      <heigh>341</heigh>
+      <width>240</width>
+      <heigh>350</heigh>
       <emoji_type></emoji_type>
       <wp_width>240</wp_width>
       <wp_heigh>400</wp_heigh>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
-
-
-    <!--
-      930P
-      SoftBank/1.0/930P/PJP10[/serial] Browser/NetFront/3.4 Profile/MIDP-2.0 Configuration/CLDC-1.1
-    -->
+       <!--
+               SoftBank/1.0/DM005SH/SHJ001[/Serial] Browser/NetFront/3.5 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/DM005SH/SHJ001[/Serial] Java/Java/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 
+               SoftBank/1.0/DM005SH/SHJ001 Widgets/Widgets/1.0 
+               SoftBank/1.0/DM005SH/SHJ001[/Serial] Flash/Flash-Lite/3.1 
+               Mozilla/5.0 (DM005SH;SoftBank[;Serial]) NetFront/3.5 
+       -->
     <device>
-      <device_id>930P</device_id>
-      <device_name>SoftBank 930P</device_name>
+      <device_id>DM005SH</device_id>
+      <device_name>SoftBank DM005SH</device_name>
       <html_spec_type>JXHTML</html_spec_type>
       <color>262144</color>
       <gif>true</gif>
       <png>true</png>
       <bmp2>false</bmp2>
       <bmp4>false</bmp4>
-      <width>471</width>
-      <heigh>700</heigh>
+      <width>480</width>
+      <heigh>754</heigh>
       <emoji_type></emoji_type>
       <wp_width>480</wp_width>
       <wp_heigh>854</wp_heigh>
       <dpi_width>96</dpi_width>
       <dpi_heigh>96</dpi_heigh>
     </device>
+       <!-- OSAKANA TARO add end -->
 
     <!--
     -->
index 7140dce..b6074a0 100644 (file)
@@ -7,6 +7,7 @@
       <hex1>f8</hex1>
       <hex2>9f</hex2>
       <string>&#63647;</string>
+      <color>#FF0000</color>
       <description>\90°\82ê \90Ô</description>
     </imode>
     <ezweb>
@@ -25,6 +26,7 @@
       <hex1>f8</hex1>
       <hex2>a0</hex2>
       <string>&#63648;</string>
+      <color>#0000FF</color>
       <description>\93Ü\82è \90Â</description>
     </imode>
     <ezweb>
@@ -43,6 +45,7 @@
       <hex1>f8</hex1>
       <hex2>a1</hex2>
       <string>&#63649;</string>
+      <color>#0000FF</color>
       <description>\89\90Â</description>
     </imode>
     <ezweb>
@@ -61,6 +64,7 @@
       <hex1>f8</hex1>
       <hex2>a2</hex2>
       <string>&#63650;</string>
+      <color>#0000FF</color>
       <description>\90á \90Â</description>
     </imode>
     <ezweb>
@@ -79,6 +83,7 @@
       <hex1>f8</hex1>
       <hex2>a3</hex2>
       <string>&#63651;</string>
+      <color>#FF9900</color>
       <description>\97\8b \83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>a4</hex2>
       <string>&#63652;</string>
+      <color>#FF0000</color>
       <description>\91ä\95\97 \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>a5</hex2>
       <string>&#63653;</string>
+      <color>#0000FF</color>
       <description>\96¶ \90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>a6</hex2>
       <string>&#63654;</string>
+      <color>#0000FF</color>
       <description>\8f¬\89\90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>a7</hex2>
       <string>&#63655;</string>
+      <color>#FF0000</color>
       <description>\89²\97r\8dÀ \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>a8</hex2>
       <string>&#63656;</string>
+      <color>#FF9900</color>
       <description>\89²\8b\8d\8dÀ \83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>a9</hex2>
       <string>&#63657;</string>
+      <color>#008000</color>
       <description>\91o\8eq\8dÀ \97Î</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>aa</hex2>
       <string>&#63658;</string>
+      <color>#0000FF</color>
       <description>\8aI\8dÀ \90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>ab</hex2>
       <string>&#63659;</string>
+      <color>#FF0000</color>
       <description>\8e\82\8eq\8dÀ \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>ac</hex2>
       <string>&#63660;</string>
+      <color>#FF9900</color>
       <description>\89³\8f\97\8dÀ \83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>ad</hex2>
       <string>&#63661;</string>
+      <color>#008000</color>
       <description>\93V\94\89\8dÀ \97Î</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>ae</hex2>
       <string>&#63662;</string>
+      <color>#0000FF</color>
       <description>å¶\8dÀ \90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>af</hex2>
       <string>&#63663;</string>
+      <color>#FF0000</color>
       <description>\8eË\8eè\8dÀ \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>b0</hex2>
       <string>&#63664;</string>
+      <color>#FF9900</color>
       <description>\8eR\97r\8dÀ \83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>b1</hex2>
       <string>&#63665;</string>
+      <color>#008000</color>
       <description>\90\85\95r\8dÀ \97Î</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>b2</hex2>
       <string>&#63666;</string>
+      <color>#0000FF</color>
       <description>\8b\9b\8dÀ \90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>b3</hex2>
       <string>&#63667;</string>
+      <color>#800080</color>
       <description>\83X\83|\81[\83\8e\87</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>b4</hex2>
       <string>&#63668;</string>
+      <color>#000000</color>
       <description>\96ì\8b\85 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>b5</hex2>
       <string>&#63669;</string>
+      <color>#0000FF</color>
       <description>\83S\83\8b\83\90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>b6</hex2>
       <string>&#63670;</string>
+      <color>#008000</color>
       <description>\83e\83j\83\97Î</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>b7</hex2>
       <string>&#63671;</string>
+      <color>#000000</color>
       <description>\83T\83b\83J\81\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>b8</hex2>
       <string>&#63672;</string>
+      <color>#0000FF</color>
       <description>\83X\83L\81\90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>b9</hex2>
       <string>&#63673;</string>
+      <color>#FF9900</color>
       <description>\83o\83X\83P\83b\83g\83{\81[\83\8b \83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>ba</hex2>
       <string>&#63674;</string>
+      <color>#000000</color>
       <description>\83\82\81[\83^\81[\83X\83|\81[\83\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>bb</hex2>
       <string>&#63675;</string>
+      <color>#800080</color>
       <description>\83|\83P\83b\83g\83x\83\8b \8e\87</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>bc</hex2>
       <string>&#63676;</string>
+      <color>#008000</color>
       <description>\93d\8eÔ \97Î</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>bd</hex2>
       <string>&#63677;</string>
+      <color>#FF9900</color>
       <description>\92n\89º\93\83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>be</hex2>
       <string>&#63678;</string>
+      <color>#0000FF</color>
       <description>\90V\8a²\90ü \90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>bf</hex2>
       <string>&#63679;</string>
+      <color>#000000</color>
       <description>\8eÔ\81i\83Z\83_\83\93\81\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>c0</hex2>
       <string>&#63680;</string>
+      <color>#008000</color>
       <description>\8eÔ\81i\82q\82u\81\97Î</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>c1</hex2>
       <string>&#63681;</string>
+      <color>#FF0000</color>
       <description>\83o\83\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>c2</hex2>
       <string>&#63682;</string>
+      <color>#0000FF</color>
       <description>\91\90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>c3</hex2>
       <string>&#63683;</string>
+      <color>#0000FF</color>
       <description>\94ò\8ds\8b\90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>c4</hex2>
       <string>&#63684;</string>
+      <color>#FF0000</color>
       <description>\89Æ \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>c5</hex2>
       <string>&#63685;</string>
+      <color>#0000FF</color>
       <description>\83r\83\8b \90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>c6</hex2>
       <string>&#63686;</string>
+      <color>#FF0000</color>
       <description>\97X\95Ö\8bÇ \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>c7</hex2>
       <string>&#63687;</string>
+      <color>#000000</color>
       <description>\95a\89\90Ô\81^\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>c8</hex2>
       <string>&#63688;</string>
+      <color>#800080</color>
       <description>\8bâ\8d\8e\87</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>c9</hex2>
       <string>&#63689;</string>
+      <color>#FF0000</color>
       <description>\82`\82s\82\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>ca</hex2>
       <string>&#63690;</string>
+      <color>#008000</color>
       <description>\83z\83e\83\8b \97Î</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>cb</hex2>
       <string>&#63691;</string>
+      <color>#0000FF</color>
       <description>\83R\83\93\83r\83\90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>cc</hex2>
       <string>&#63692;</string>
+      <color>#800080</color>
       <description>\83K\83\\83\8a\83\93\83X\83^\83\93\83\8e\87</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>cd</hex2>
       <string>&#63693;</string>
+      <color>#0000FF</color>
       <description>\92\93\8eÔ\8fê \90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>ce</hex2>
       <string>&#63694;</string>
+      <color>#000000</color>
       <description>\90M\8d\86 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>cf</hex2>
       <string>&#63695;</string>
+      <color>#000000</color>
       <description>\83g\83C\83\8c \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>d0</hex2>
       <string>&#63696;</string>
+      <color>#000000</color>
       <description>\83\8c\83X\83g\83\89\83\93 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>d1</hex2>
       <string>&#63697;</string>
+      <color>#008000</color>
       <description>\8bi\92\83\93\97Î</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>d2</hex2>
       <string>&#63698;</string>
+      <color>#800080</color>
       <description>\83o\81\8e\87</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>d3</hex2>
       <string>&#63699;</string>
+      <color>#FF9900</color>
       <description>\83r\81[\83\8b \83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>d4</hex2>
       <string>&#63700;</string>
+      <color>#FF9900</color>
       <description>\83t\83@\81[\83X\83g\83t\81[\83\83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>d5</hex2>
       <string>&#63701;</string>
+      <color>#FF0000</color>
       <description>\83u\83e\83B\83b\83\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>d6</hex2>
       <string>&#63702;</string>
+      <color>#0000FF</color>
       <description>\94ü\97e\89\90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>d7</hex2>
       <string>&#63703;</string>
+      <color>#000000</color>
       <description>\83J\83\89\83I\83\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>d8</hex2>
       <string>&#63704;</string>
+      <color>#000000</color>
       <description>\89f\89æ \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>d9</hex2>
       <string>&#63705;</string>
+      <color>#000000</color>
       <description>\89E\8eÎ\82ß\8fã \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>da</hex2>
       <string>&#63706;</string>
+      <color>#FF9900</color>
       <description>\97V\89\80\92\83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>db</hex2>
       <string>&#63707;</string>
+      <color>#0000FF</color>
       <description>\89¹\8a\90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>dc</hex2>
       <string>&#63708;</string>
+      <color>#800080</color>
       <description>\83A\81[\83\8e\87</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>dd</hex2>
       <string>&#63709;</string>
+      <color>#000000</color>
       <description>\89\89\8c\80 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>de</hex2>
       <string>&#63710;</string>
+      <color>#FF0000</color>
       <description>\83C\83x\83\93\83\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>df</hex2>
       <string>&#63711;</string>
+      <color>#FF9900</color>
       <description>\83`\83P\83b\83\83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>e0</hex2>
       <string>&#63712;</string>
+      <color>#000000</color>
       <description>\8bi\89\8c \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>e1</hex2>
       <string>&#63713;</string>
+      <color>#FF0000</color>
       <description>\8bÖ\89\8c \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>e2</hex2>
       <string>&#63714;</string>
+      <color>#000000</color>
       <description>\83J\83\81\83\89 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>e3</hex2>
       <string>&#63715;</string>
+      <color>#FF0000</color>
       <description>\83J\83o\83\93 \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>e4</hex2>
       <string>&#63716;</string>
+      <color>#FF9900</color>
       <description>\96\83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>e5</hex2>
       <string>&#63717;</string>
+      <color>#FF0000</color>
       <description>\83\8a\83{\83\93 \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>e6</hex2>
       <string>&#63718;</string>
+      <color>#FF0000</color>
       <description>\83v\83\8c\83[\83\93\83\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>e7</hex2>
       <string>&#63719;</string>
+      <color>#FF0000</color>
       <description>\83o\81[\83X\83f\81\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>e8</hex2>
       <string>&#63720;</string>
+      <color>#000000</color>
       <description>\93d\98\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>e9</hex2>
       <string>&#63721;</string>
+      <color>#000000</color>
       <description>\8cg\91Ñ\93d\98\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>ea</hex2>
       <string>&#63722;</string>
+      <color>#FF9900</color>
       <description>\83\81\83\82 \83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>eb</hex2>
       <string>&#63723;</string>
+      <color>#0000FF</color>
       <description>\82s\82\90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>ec</hex2>
       <string>&#63724;</string>
+      <color>#000000</color>
       <description>\83Q\81[\83\80 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>ed</hex2>
       <string>&#63725;</string>
+      <color>#0000FF</color>
       <description>\82b\82\90Â</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>ee</hex2>
       <string>&#63726;</string>
+      <color>#FF0000</color>
       <description>\83n\81[\83\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>ef</hex2>
       <string>&#63727;</string>
+      <color>#000000</color>
       <description>\83X\83y\81[\83\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>f0</hex2>
       <string>&#63728;</string>
+      <color>#FF0000</color>
       <description>\83_\83C\83\84 \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>f1</hex2>
       <string>&#63729;</string>
+      <color>#000000</color>
       <description>\83N\83\89\83\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>f2</hex2>
       <string>&#63730;</string>
+      <color>#000000</color>
       <description>\96Ú \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>f3</hex2>
       <string>&#63731;</string>
+      <color>#FF9900</color>
       <description>\8e¨ \83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>f4</hex2>
       <string>&#63732;</string>
+      <color>#FF9900</color>
       <description>\8eè\81i\83O\81[\81\83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>f5</hex2>
       <string>&#63733;</string>
+      <color>#FF9900</color>
       <description>\8eè\81i\83`\83\87\83L\81\83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>f6</hex2>
       <string>&#63734;</string>
+      <color>#FF9900</color>
       <description>\8eè\81i\83p\81[\81\83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>f7</hex2>
       <string>&#63735;</string>
+      <color>#000000</color>
       <description>\89E\8eÎ\82ß\89º \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>f8</hex2>
       <string>&#63736;</string>
+      <color>#000000</color>
       <description>\8d\8eÎ\82ß\8fã \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>f9</hex2>
       <string>&#63737;</string>
+      <color>#FF9900</color>
       <description>\91« \83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>fa</hex2>
       <string>&#63738;</string>
+      <color>#000000</color>
       <description>\82­\82 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>fb</hex2>
       <string>&#63739;</string>
+      <color>#000000</color>
       <description>\8aá\8b¾ \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f8</hex1>
       <hex2>fc</hex2>
       <string>&#63740;</string>
+      <color>#0000FF</color>
       <description>\8eÔ\88Ö\8e\90Â</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>40</hex2>
       <string>&#63808;</string>
+      <color>#000000</color>
       <description>\90V\8c\8e \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>41</hex2>
       <string>&#63809;</string>
+      <color>#000000</color>
       <description>\82â\82â\8c\87\82¯\8c\8e \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>42</hex2>
       <string>&#63810;</string>
+      <color>#000000</color>
       <description>\94¼\8c\8e \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>43</hex2>
       <string>&#63811;</string>
+      <color>#000000</color>
       <description>\8eO\93ú\8c\8e \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>44</hex2>
       <string>&#63812;</string>
+      <color>#000000</color>
       <description>\96\9e\8c\8e \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>45</hex2>
       <string>&#63813;</string>
+      <color>#FF9900</color>
       <description>\8c¢ \83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>46</hex2>
       <string>&#63814;</string>
+      <color>#FF9900</color>
       <description>\94\83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>47</hex2>
       <string>&#63815;</string>
+      <color>#0000FF</color>
       <description>\83\8a\83]\81[\83\90Â</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>48</hex2>
       <string>&#63816;</string>
+      <color>#008000</color>
       <description>\83N\83\8a\83X\83}\83\97Î</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>49</hex2>
       <string>&#63817;</string>
+      <color>#000000</color>
       <description>\8d\8eÎ\82ß\89º \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>72</hex2>
       <string>&#63858;</string>
+      <color>#000000</color>
       <description>phone to \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>73</hex2>
       <string>&#63859;</string>
+      <color>#000000</color>
       <description>mail to \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>74</hex2>
       <string>&#63860;</string>
+      <color>#000000</color>
       <description>fax to \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>75</hex2>
       <string>&#63861;</string>
+      <color>#FF9900</color>
       <description>i\83\82\81[\83\83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>76</hex2>
       <string>&#63862;</string>
+      <color>#FF9900</color>
       <description>i\83\82\81[\83h\81i\98g\95t\82«\81\83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>77</hex2>
       <string>&#63863;</string>
+      <color>#000000</color>
       <description>\83\81\81[\83\8b \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>78</hex2>
       <string>&#63864;</string>
+      <color>#000000</color>
       <description>\83h\83R\83\82\92ñ\8b\9f \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>79</hex2>
       <string>&#63865;</string>
+      <color>#000000</color>
       <description>\83h\83R\83\82\83|\83C\83\93\83\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>7a</hex2>
       <string>&#63866;</string>
+      <color>#FF0000</color>
       <description>\97L\97¿ \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>7b</hex2>
       <string>&#63867;</string>
+      <color>#FF0000</color>
       <description>\96³\97¿ \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>7c</hex2>
       <string>&#63868;</string>
+      <color>#FF0000</color>
       <description>ID \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>7d</hex2>
       <string>&#63869;</string>
+      <color>#FF0000</color>
       <description>\83p\83X\83\8f\81[\83\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>7e</hex2>
       <string>&#63870;</string>
+      <color>#FF0000</color>
       <description>\8e\9f\8d\80\97\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>80</hex2>
       <string>&#63872;</string>
+      <color>#FF0000</color>
       <description>\83N\83\8a\83\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>81</hex2>
       <string>&#63873;</string>
+      <color>#0000FF</color>
       <description>\83T\81[\83`\81i\92²\82×\82é\81\90Â</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>82</hex2>
       <string>&#63874;</string>
+      <color>#FF0000</color>
       <description>\82m\82d\82\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>83</hex2>
       <string>&#63875;</string>
+      <color>#FF0000</color>
       <description>\88Ê\92u\8fî\95ñ \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>84</hex2>
       <string>&#63876;</string>
+      <color>#000000</color>
       <description>\83t\83\8a\81[\83_\83C\83\84\83\8b \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>85</hex2>
       <string>&#63877;</string>
+      <color>#000000</color>
       <description>\83V\83\83\81[\83v\83_\83C\83\84\83\8b \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>86</hex2>
       <string>&#63878;</string>
+      <color>#000000</color>
       <description>\83\82\83o\82\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>87</hex2>
       <string>&#63879;</string>
+      <color>#000000</color>
       <description>1 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>88</hex2>
       <string>&#63880;</string>
+      <color>#000000</color>
       <description>2 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>89</hex2>
       <string>&#63881;</string>
+      <color>#000000</color>
       <description>3 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>8a</hex2>
       <string>&#63882;</string>
+      <color>#000000</color>
       <description>4 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>8b</hex2>
       <string>&#63883;</string>
+      <color>#000000</color>
       <description>5 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>8c</hex2>
       <string>&#63884;</string>
+      <color>#000000</color>
       <description>6 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>8d</hex2>
       <string>&#63885;</string>
+      <color>#000000</color>
       <description>7 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>8e</hex2>
       <string>&#63886;</string>
+      <color>#000000</color>
       <description>8 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>8f</hex2>
       <string>&#63887;</string>
+      <color>#000000</color>
       <description>9 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>90</hex2>
       <string>&#63888;</string>
+      <color>#000000</color>
       <description>0 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>b0</hex2>
       <string>&#63920;</string>
+      <color>#FF0000</color>
       <description>\8c\88\92è \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>91</hex2>
       <string>&#63889;</string>
+      <color>#FF0000</color>
       <description>\8d\95\83n\81[\83\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>92</hex2>
       <string>&#63890;</string>
+      <color>#FF0000</color>
       <description>\97h\82ê\82é\83n\81[\83\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>93</hex2>
       <string>&#63891;</string>
+      <color>#FF0000</color>
       <description>\8e¸\97ö \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>94</hex2>
       <string>&#63892;</string>
+      <color>#FF0000</color>
       <description>\83n\81[\83g\82½\82¿\81i\95¡\90\94\83n\81[\83g\81\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>95</hex2>
       <string>&#63893;</string>
+      <color>#008000</color>
       <description>\82í\81[\82¢\81i\8að\82µ\82¢\8aç\81\8e\87</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>96</hex2>
       <string>&#63894;</string>
+      <color>#FF0000</color>
       <description>\82¿\82Á\81i\93{\82Á\82½\8aç\81\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>97</hex2>
       <string>&#63895;</string>
+      <color>#0000FF</color>
       <description>\82ª\82­\81`\81i\97\8e\92_\82µ\82½\8aç\81\90Â</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>98</hex2>
       <string>&#63896;</string>
+      <color>#008000</color>
       <description>\82à\82¤\82â\82¾\81`\81i\94ß\82µ\82¢\8aç\81\97Î</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>99</hex2>
       <string>&#63897;</string>
+      <color>#0000FF</color>
       <description>\82Ó\82ç\82Ó\82ç \90Â</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>9a</hex2>
       <string>&#63898;</string>
+      <color>#FF0000</color>
       <description>\83O\83b\83h\81i\8fã\8cü\82«\96î\88ó\81\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>9b</hex2>
       <string>&#63899;</string>
+      <color>#FF0000</color>
       <description>\82é\82ñ\82é\82ñ \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>9c</hex2>
       <string>&#63900;</string>
+      <color>#FF0000</color>
       <description>\82¢\82¢\8bC\95ª\81i\89·\90ò\81\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>9d</hex2>
       <string>&#63901;</string>
+      <color>#008000</color>
       <description>\82©\82í\82¢\82¢ \8e\87</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>9e</hex2>
       <string>&#63902;</string>
+      <color>#FF0000</color>
       <description>\83L\83X\83}\81[\83\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>9f</hex2>
       <string>&#63903;</string>
+      <color>#FF9900</color>
       <description>\82Ò\82©\82Ò\82©\81i\90V\82µ\82¢\81\83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>a0</hex2>
       <string>&#63904;</string>
+      <color>#FF9900</color>
       <description>\82Ð\82ç\82ß\82« \83I\83\8c\83\93\83W</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>a1</hex2>
       <string>&#63905;</string>
+      <color>#000000</color>
       <description>\82Þ\82©\82Á\81i\93{\82è\81\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>a2</hex2>
       <string>&#63906;</string>
+      <color>#FF0000</color>
       <description>\83p\83\93\83\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>a3</hex2>
       <string>&#63907;</string>
+      <color>#000000</color>
       <description>\94\9a\92\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>a4</hex2>
       <string>&#63908;</string>
+      <color>#FF0000</color>
       <description>\83\80\81[\83\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>a5</hex2>
       <string>&#63909;</string>
+      <color>#0000FF</color>
       <description>\83o\83b\83h\81i\89º\8cü\82«\96î\88ó\81\90Â</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>a6</hex2>
       <string>&#63910;</string>
+      <color>#0000FF</color>
       <description>\96°\82¢(\90\87\96°) \90Â</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>a7</hex2>
       <string>&#63911;</string>
+      <color>#FF0000</color>
       <description>exclamation \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>a8</hex2>
       <string>&#63912;</string>
-      <description>exclamation&question \8e\87</description>
+      <color>#800080</color>
+      <description>exclamation&amp;question \8e\87</description>
     </imode>
     <ezweb>
       <A>3</A>
       <hex1>f9</hex1>
       <hex2>a9</hex2>
       <string>&#63913;</string>
+      <color>#FF0000</color>
       <description>exclamation\81~2 \90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>aa</hex2>
       <string>&#63914;</string>
+      <color>#FF0000</color>
       <description>\82Ç\82ñ\82Á\81i\8fÕ\8c\82\81\90Ô</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>ab</hex2>
       <string>&#63915;</string>
+      <color>#000000</color>
       <description>\82 \82¹\82 \82¹\81i\94ò\82Ñ\8eU\82é\8a¾\81\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>ac</hex2>
       <string>&#63916;</string>
+      <color>#000000</color>
       <description>\82½\82ç\81[\82Á\81i\8a¾\81\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>ad</hex2>
       <string>&#63917;</string>
+      <color>#000000</color>
       <description>\83_\83b\83V\83\85\81i\91\96\82è\8fo\82·\82³\82Ü\81\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>ae</hex2>
       <string>&#63918;</string>
+      <color>#000000</color>
       <description>\81[\81i\92·\89¹\8bL\8d\86\82P\81\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>af</hex2>
       <string>&#63919;</string>
+      <color>#000000</color>
       <description>\81[\81i\92·\89¹\8bL\8d\86\82Q\81\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>50</hex2>
       <string>&#63824;</string>
+      <color>#000000</color>
       <description>\83J\83`\83\93\83\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>51</hex2>
       <string>&#63825;</string>
+      <color>#000000</color>
       <description>\82Ó\82­\82ë \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>52</hex2>
       <string>&#63826;</string>
+      <color>#000000</color>
       <description>\83y\83\93 \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>55</hex2>
       <string>&#63829;</string>
+      <color>#000000</color>
       <description>\90l\89\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>56</hex2>
       <string>&#63830;</string>
+      <color>#000000</color>
       <description>\82¢\82· \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>57</hex2>
       <string>&#63831;</string>
+      <color>#000000</color>
       <description>\96é \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>5b</hex2>
       <string>&#63835;</string>
+      <color>#000000</color>
       <description>soon \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>5c</hex2>
       <string>&#63836;</string>
+      <color>#000000</color>
       <description>on \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>5d</hex2>
       <string>&#63837;</string>
+      <color>#000000</color>
       <description>end \8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>5e</hex2>
       <string>&#63838;</string>
+      <color>#000000</color>
       <description>\8e\9e\8c\8d\95</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>b1</hex2>
       <string>&#63921;</string>
+      <color>#FF9900</color>
       <description>i\83A\83v\83\8a</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>b2</hex2>
       <string>&#63922;</string>
+      <color>#FF9900</color>
       <description>i\83A\83v\83\8a\81i\98g\95t\82«\81j</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>b3</hex2>
       <string>&#63923;</string>
+      <color>#0000FF</color>
       <description>T\83V\83\83\83c\81i\83{\81[\83_\81[\81j</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>b4</hex2>
       <string>&#63924;</string>
+      <color>#000000</color>
       <description>\82ª\82Ü\8cû\8dà\95z</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>b5</hex2>
       <string>&#63925;</string>
+      <color>#FF0000</color>
       <description>\89»\8fÏ</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>b6</hex2>
       <string>&#63926;</string>
+      <color>#0000FF</color>
       <description>\83W\81[\83\93\83Y</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>b7</hex2>
       <string>&#63927;</string>
+      <color>#0000FF</color>
       <description>\83X\83m\83{</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>b8</hex2>
       <string>&#63928;</string>
+      <color>#FF9900</color>
       <description>\83`\83\83\83y\83\8b</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>b9</hex2>
       <string>&#63929;</string>
+      <color>#800000</color>
       <description>\83h\83A</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>ba</hex2>
       <string>&#63930;</string>
+      <color>#800000</color>
       <description>\83h\83\8b\91Ü</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>bb</hex2>
       <string>&#63931;</string>
+      <color>#000000</color>
       <description>\83p\83\\83R\83\93</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>bc</hex2>
       <string>&#63932;</string>
+      <color>#FF0000</color>
       <description>\83\89\83u\83\8c\83^\81[</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>bd</hex2>
       <string>&#63933;</string>
+      <color>#000000</color>
       <description>\83\8c\83\93\83`</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>be</hex2>
       <string>&#63934;</string>
+      <color>#008000</color>
       <description>\89\94\95M</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>bf</hex2>
       <string>&#63935;</string>
+      <color>#FF9900</color>
       <description>\89¤\8a¥</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>C0</hex2>
       <string>&#63936;</string>
+      <color>#800080</color>
       <description>\8ew\97Ö</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>C1</hex2>
       <string>&#63937;</string>
+      <color>#000000</color>
       <description>\8d»\8e\9e\8cv</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>C2</hex2>
       <string>&#63938;</string>
+      <color>#000000</color>
       <description>\8e©\93]\8eÔ</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>C3</hex2>
       <string>&#63939;</string>
+      <color>#008000</color>
       <description>\93\92\82Ì\82Ý</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>C4</hex2>
       <string>&#63940;</string>
+      <color>#000000</color>
       <description>\98r\8e\9e\8cv</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>C5</hex2>
       <string>&#63941;</string>
+      <color>#008000</color>
       <description>\8dl\82¦\82Ä\82é\8aç</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>C6</hex2>
       <string>&#63942;</string>
+      <color>#800080</color>
       <description>\82Ù\82Á\82Æ\82µ\82½\8aç</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>C7</hex2>
       <string>&#63943;</string>
+      <color>#0000FF</color>
       <description>\97â\82â\8a¾</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>C8</hex2>
       <string>&#63944;</string>
+      <color>#0000FF</color>
       <description>\97â\82â\8a¾2</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>C9</hex2>
       <string>&#63945;</string>
+      <color>#FF0000</color>
       <description>\82Õ\82Á\82­\82Á\82­\82È\8aç</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>CA</hex2>
       <string>&#63946;</string>
+      <color>#800080</color>
       <description>\83{\83P\81[\82Á\82Æ\82µ\82½\8aç</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>CB</hex2>
       <string>&#63947;</string>
+      <color>#FF1493</color>
       <description>\96Ú\82ª\83n\81[\83g</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>CC</hex2>
       <string>&#63948;</string>
+      <color>#FF0000</color>
       <description>\8ew\82ÅOK</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>CD</hex2>
       <string>&#63949;</string>
+      <color>#FF0000</color>
       <description>\82 \82Á\82©\82ñ\82×\81[</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>CE</hex2>
       <string>&#63950;</string>
+      <color>#FF1493</color>
       <description>\83E\83B\83\93\83N</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>CF</hex2>
       <string>&#63951;</string>
+      <color>#FF1493</color>
       <description>\82¤\82ê\82µ\82¢\8aç</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>D0</hex2>
       <string>&#63952;</string>
+      <color>#000080</color>
       <description>\82ª\82Ü\82ñ\8aç</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>D1</hex2>
       <string>&#63953;</string>
+      <color>#FF9900</color>
       <description>\94L2</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>D2</hex2>
       <string>&#63954;</string>
+      <color>#000080</color>
       <description>\8b\83\82«\8aç</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>D3</hex2>
       <string>&#63955;</string>
+      <color>#000080</color>
       <description>\97Ü</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>D4</hex2>
       <string>&#63956;</string>
+      <color>#FF0000</color>
       <description>NG</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>D5</hex2>
       <string>&#63957;</string>
+      <color>#0000FF</color>
       <description>\83N\83\8a\83b\83v</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>D6</hex2>
       <string>&#63958;</string>
+      <color>#000000</color>
       <description>\83R\83s\81[\83\89\83C\83g</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>D7</hex2>
       <string>&#63959;</string>
+      <color>#000000</color>
       <description>\83g\83\8c\81[\83h\83}\81[\83N</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>D8</hex2>
       <string>&#63960;</string>
+      <color>#000000</color>
       <description>\91\96\82é\90l</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>D9</hex2>
       <string>&#63961;</string>
+      <color>#FF0000</color>
       <description>\83}\83\8b\94é</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>DA</hex2>
       <string>&#63962;</string>
+      <color>#008000</color>
       <description>\83\8a\83T\83C\83N\83\8b</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>DB</hex2>
       <string>&#63963;</string>
+      <color>#000000</color>
       <description>\83\8c\83W\83X\83^\81[\83h\83g\83\8c\81[\83h\83}\81[\83N</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>DC</hex2>
       <string>&#63964;</string>
+      <color>#FF9900</color>
       <description>\8aë\8c¯\81E\8cx\8d\90</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>DD</hex2>
       <string>&#63965;</string>
+      <color>#FF0000</color>
       <description>\8bÖ\8e~</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>DE</hex2>
       <string>&#63966;</string>
+      <color>#0000FF</color>
       <description>\8bó\8eº\81E\8bó\90È\81E\8bó\8eÔ</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>DF</hex2>
       <string>&#63967;</string>
+      <color>#FF0000</color>
       <description>\8d\87\8ai\83}\81[\83N</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>E0</hex2>
       <string>&#63968;</string>
+      <color>#FF0000</color>
       <description>\96\9e\8eº\81E\96\9e\90È\81E\96\9e\8eÔ</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>E1</hex2>
       <string>&#63969;</string>
+      <color>#000000</color>
       <description>\96î\88ó\8d\89E</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>E2</hex2>
       <string>&#63970;</string>
+      <color>#000000</color>
       <description>\96î\88ó\8fã\89º</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>E3</hex2>
       <string>&#63971;</string>
+      <color>#008000</color>
       <description>\8aw\8dZ</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>E4</hex2>
       <string>&#63972;</string>
+      <color>#0000FF</color>
       <description>\94g</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>E5</hex2>
       <string>&#63973;</string>
+      <color>#0000FF</color>
       <description>\95x\8em\8eR</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>E6</hex2>
       <string>&#63974;</string>
+      <color>#008000</color>
       <description>\83N\83\8d\81[\83o\81[</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>E7</hex2>
       <string>&#63975;</string>
+      <color>#FF0000</color>
       <description>\82³\82­\82ç\82ñ\82Ú</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>E8</hex2>
       <string>&#63976;</string>
+      <color>#FF0000</color>
       <description>\83`\83\85\81[\83\8a\83b\83v</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>E9</hex2>
       <string>&#63977;</string>
+      <color>#FF9900</color>
       <description>\83o\83i\83i</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>EA</hex2>
       <string>&#63978;</string>
+      <color>#FF0000</color>
       <description>\82è\82ñ\82²</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>EB</hex2>
       <string>&#63979;</string>
+      <color>#008000</color>
       <description>\89è</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>EC</hex2>
       <string>&#63980;</string>
+      <color>#FF0000</color>
       <description>\82à\82Ý\82¶</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>ED</hex2>
       <string>&#63981;</string>
+      <color>#FF1493</color>
       <description>\8d÷</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>EE</hex2>
       <string>&#63982;</string>
+      <color>#000000</color>
       <description>\82¨\82É\82¬\82è</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>EF</hex2>
       <string>&#63983;</string>
+      <color>#FF0000</color>
       <description>\83V\83\87\81[\83g\83P\81[\83L</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>F0</hex2>
       <string>&#63984;</string>
+      <color>#800000</color>
       <description>\82Æ\82Á\82­\82è\81i\82¨\82¿\82å\82±\95t\82«\81j</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>F1</hex2>
       <string>&#63985;</string>
+      <color>#FF9900</color>
       <description>\82Ç\82ñ\82Ô\82è</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>F2</hex2>
       <string>&#63986;</string>
+      <color>#800000</color>
       <description>\83p\83\93</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>F3</hex2>
       <string>&#63987;</string>
+      <color>#800000</color>
       <description>\82©\82½\82Â\82Þ\82è</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>F4</hex2>
       <string>&#63988;</string>
+      <color>#FF9900</color>
       <description>\82Ð\82æ\82±</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>F5</hex2>
       <string>&#63989;</string>
+      <color>#000080</color>
       <description>\83y\83\93\83M\83\93</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>F6</hex2>
       <string>&#63990;</string>
+      <color>#0000FF</color>
       <description>\8b\9b</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>F7</hex2>
       <string>&#63991;</string>
+      <color>#FF9900</color>
       <description>\82¤\82Ü\82¢\81I</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>F8</hex2>
       <string>&#63992;</string>
+      <color>#FF9900</color>
       <description>\83E\83b\83V\83b\83V</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>F9</hex2>
       <string>&#63993;</string>
+      <color>#800000</color>
       <description>\83E\83}</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>FA</hex2>
       <string>&#63994;</string>
+      <color>#FF9900</color>
       <description>\83u\83^</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>FB</hex2>
       <string>&#63995;</string>
+      <color>#800080</color>
       <description>\83\8f\83C\83\93\83O\83\89\83X</description>
     </imode>
     <ezweb>
       <hex1>f9</hex1>
       <hex2>FC</hex2>
       <string>&#63996;</string>
+      <color>#800080</color>
       <description>\82°\82Á\82»\82è</description>
     </imode>
     <ezweb>
old mode 100644 (file)
new mode 100755 (executable)
index 82cae00..acb1bd5
@@ -68,6 +68,8 @@
 
 #define HTTP_X_CHXJ_VERSION  "X-Chxj-Version"
 
+#define HTTP_X_CHXJ_INFO     "X-Chxj-Info"
+
 extern void chxj_add_device_env(request_rec *r, device_table *spec);
 
 #endif
index e6be752..43ef5d2 100644 (file)
@@ -32,7 +32,8 @@ extern char *chxj_encoding(
 extern char *chxj_rencoding(
   request_rec *r, 
   const char *src, 
-  apr_size_t *len);
+  apr_size_t *len,
+  const char *enc);
 
 extern char *chxj_encoding_parameter(
   request_rec *r, 
@@ -50,7 +51,5 @@ chxj_convert_illegal_charactor_sequence(
   char                **obuf,
   apr_size_t          *olen);
 
-
-char *chxj_iconv(request_rec *r, apr_pool_t *pool, const char *src, apr_size_t *len, const char *from, const char *to);
 #endif
 
index f054bf8..c68ae2d 100644 (file)
@@ -24,4 +24,10 @@ extern char* chxj_img_conv(
   device_table*        spec, 
   const char*          s);
 
+extern char*
+chxj_img_rewrite_parameter(
+    request_rec *r,
+    mod_chxj_config *conf,
+    const char *href);
+
 #endif
old mode 100644 (file)
new mode 100755 (executable)
index ca036f5..66811c3
@@ -24,4 +24,9 @@ extern void chxj_load_device_data(
   apr_pool_t*              p, 
   mod_chxj_config*         conf);
 
+extern void chxj_load_device_tsv_data(
+  apr_file_t*              fp,
+  apr_pool_t*              p, 
+  mod_chxj_config*         conf);
+
 #endif
old mode 100644 (file)
new mode 100755 (executable)
index 9d6abd9..246e63e
@@ -44,6 +44,7 @@ typedef struct device_table_t device_table;
 
 struct device_table_t {
   struct device_table_t* next;
+  int                    provider;              /* DOCOMO|AU|SOFTBANK|UNKNOWN */
   const char*            device_id;
   const char*            device_name;
   spec_type              html_spec_type;
@@ -85,6 +86,7 @@ struct device_table_t {
   /*--------------------------------------------------------------------------*/
   int                    color;
   char*                  emoji_type;
+  char*                  output_encoding;  /* Output encoding */
 };
 
 typedef struct device_table_list_t  device_table_list;
@@ -128,4 +130,13 @@ extern device_table* chxj_specified_device(
   request_rec             *r, 
   const char              *user_agent);
 
+extern device_table* chxj_specified_device_from_xml(
+  request_rec             *r,
+  const char              *user_agent);
+
+extern device_table* chxj_specified_device_from_tsv(
+    request_rec           *r,
+    device_table          *spec,
+    const char            *user_agent);
+
 #endif
index 77e6adf..5869793 100644 (file)
 #define PACKAGE_NAME "mod_chxj"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "mod_chxj 0.13.0-rc"
+#define PACKAGE_STRING "mod_chxj 0.13.0"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "mod_chxj"
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "0.13.0-rc"
+#define PACKAGE_VERSION "0.13.0"
 
 /* Define to 1 if you have the ANSI C header files. */
 #define STDC_HEADERS 1
 
 /* Version number of package */
-#define VERSION "0.13.0-rc"
+#define VERSION "0.13.0"
 
 /* Define to empty if `const' does not conform to ANSI C. */
 /* #undef const */
old mode 100644 (file)
new mode 100755 (executable)
index cffce55..f9af7da
@@ -43,6 +43,7 @@
 #include "apr_dso.h"
 #include "apr_general.h"
 #include "apr_pools.h"
+#include "apr_hash.h"
 
 #if defined(AP_NEED_SET_MUTEX_PERMS)
 #  include "unixd.h"
@@ -169,6 +170,7 @@ struct imode_emoji_t {
   char  hex1byte;
   char  hex2byte;
   char* string;
+  char* color;
   char *description;
 };
 
@@ -280,6 +282,9 @@ typedef enum {
   tagMARQUEE,
   tagLINK,
   tagNLMARK,      /* New Line Code */
+  tagOBJECT,
+  tagPARAM,
+  tagCAPTION,
 } tag_type;
 
 typedef struct mod_chxj_config mod_chxj_config;
@@ -335,6 +340,7 @@ struct mod_chxj_config {
   device_table_list     *devices;
   emoji_t               *emoji;
   emoji_t               *emoji_tail;
+  int                   imode_emoji_color;
   char                  *server_side_encoding;
 
   char                  *dir; /* for LOG */
@@ -346,6 +352,8 @@ struct mod_chxj_config {
   cookie_store_type_t   cookie_store_type;
   int                   cookie_lazy_mode;
   char                  *cookie_dbm_type;
+  
+  int                   detect_device_type; /* XML|TSV */
 
 #if defined(USE_MYSQL_COOKIE)
   mysql_t               mysql;
@@ -361,6 +369,13 @@ struct mod_chxj_config {
   chxj_new_line_type_t  new_line_type;
 
   char                  *post_log;              /* post log environment name. */
+  
+  apr_array_header_t    *device_keys;           /* TSV header array */
+  apr_hash_t            *device_hash;           /* TSV device data hash table */
+
+  int                   image_rewrite;
+  char                  *image_rewrite_url;
+  int                   image_rewrite_mode;
 };
 
 #define IS_COOKIE_STORE_DBM(X)      ((X) == COOKIE_STORE_TYPE_DBM)
@@ -452,6 +467,31 @@ module AP_MODULE_DECLARE_DATA chxj_module;
 #define CHXJ_IMG_OFF    (1)
 #define CHXJ_IMG_NONE   (0)
 
+#define CHXJ_IMODE_EMOJI_COLOR_ON   (3)
+#define CHXJ_IMODE_EMOJI_COLOR_AUTO (2)
+#define CHXJ_IMODE_EMOJI_COLOR_OFF  (1)
+#define CHXJ_IMODE_EMOJI_COLOR_NONE (0)
+
+#define CHXJ_ADD_DETECT_DEVICE_TYPE_TSV     (1)
+#define CHXJ_ADD_DETECT_DEVICE_TYPE_NONE    (0)
+
+#define CHXJ_PROVIDER_UNKNOWN  (0)
+#define CHXJ_PROVIDER_DOCOMO   (1)
+#define CHXJ_PROVIDER_AU       (2)
+#define CHXJ_PROVIDER_SOFTBANK (3)
+
+#define CHXJ_IMG_REWRITE_ON     (2)
+#define CHXJ_IMG_REWRITE_OFF    (1)
+#define CHXJ_IMG_REWRITE_NONE   (0)
+
+#define CHXJ_IMG_REWRITE_MODE_ALL  (3)
+#define CHXJ_IMG_REWRITE_MODE_USER (2)
+#define CHXJ_IMG_REWRITE_MODE_TAG  (1)
+#define CHXJ_IMG_REWRITE_MODE_NONE (0)
+
+#define CHXJ_IMG_REWRITE_URL_STRING             "_x-chxj_imgrewrite=on"
+#define CHXJ_IMG_X_HTTP_IMAGE_FILENAME          "X-Chxj-Image-Filename"
+#define CHXJ_IMG_X_HTTP_IMAGE_TYPE              "X-Chxj-Image-Type"
 
 #define DBG(X,args...)  chxj_log_rerror(APLOG_MARK,APLOG_DEBUG,0,(request_rec*)(X),##args)
 #define SDBG(X,Y)       chxj_log_error(APLOG_MARK,APLOG_DEBUG,0,(X),(Y))
@@ -488,8 +528,6 @@ extern char *chxj_node_convert_chxjif_only(
   apr_size_t   *len
 );
 
-extern void chxj_dump_string(request_rec *r, const char *filename, int line, const char *title, const char *str, apr_size_t len);
-
 #define IMAGE_CACHE_LIMIT_FMT_LEN  (20)
 
 
index 389fbb8..4f09601 100644 (file)
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.10 from Makefile.am.
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006  Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
 # This Makefile.in is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
@@ -89,7 +89,7 @@ libmod_chxj_la_OBJECTS = $(am_libmod_chxj_la_OBJECTS)
 libmod_chxj_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libmod_chxj_la_CFLAGS) \
        $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. -I$(top_builddir)/include@am__isrc@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
 COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -132,6 +132,7 @@ CYGPATH_W = @CYGPATH_W@
 DDEFS = @DDEFS@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DSYMUTIL = @DSYMUTIL@
 ECHO = @ECHO@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
@@ -155,6 +156,7 @@ LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAKEINFO = @MAKEINFO@
 MKDIR_P = @MKDIR_P@
+NMEDIT = @NMEDIT@
 OBJEXT = @OBJEXT@
 OPENSSL_PATH = @OPENSSL_PATH@
 PACKAGE = @PACKAGE@
@@ -168,6 +170,7 @@ PCRE_1_CONFIG = @PCRE_1_CONFIG@
 PCRE_CONFIG = @PCRE_CONFIG@
 QDEFS = @QDEFS@
 RANLIB = @RANLIB@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 STRIP = @STRIP@
@@ -320,8 +323,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
        @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
          if test -f $$p; then \
            f=$(am__strip_dir) \
-           echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
-           $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+           echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+           $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
          else :; fi; \
        done
 
@@ -329,8 +332,8 @@ uninstall-libLTLIBRARIES:
        @$(NORMAL_UNINSTALL)
        @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
          p=$(am__strip_dir) \
-         echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
-         $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+         echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+         $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
        done
 
 clean-libLTLIBRARIES:
@@ -751,8 +754,8 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        mkid -fID $$unique
 tags: TAGS
 
@@ -764,8 +767,8 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
          $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
@@ -775,13 +778,12 @@ ctags: CTAGS
 CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
                $(TAGS_FILES) $(LISP)
        tags=; \
-       here=`pwd`; \
        list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
        unique=`for i in $$list; do \
            if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
          done | \
-         $(AWK) '    { files[$$0] = 1; } \
-              END { for (i in files) print i; }'`; \
+         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+             END { if (nonempty) { for (i in files) print i; }; }'`; \
        test -z "$(CTAGS_ARGS)$$tags$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
             $$tags $$unique
old mode 100644 (file)
new mode 100755 (executable)
index 4fa865f..82f8368
@@ -79,6 +79,28 @@ chxj_add_device_env(request_rec *r, device_table *spec)
   apr_table_setn(r->headers_in, HTTP_X_CHXJ_CACHE,    apr_psprintf(r->pool, "%d", spec->cache));
 
   apr_table_setn(r->headers_in, HTTP_X_CHXJ_VERSION,  apr_pstrdup(r->pool, PACKAGE_VERSION));
+  
+  mod_chxj_config*    dconf;
+  dconf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+  if (dconf->detect_device_type == CHXJ_ADD_DETECT_DEVICE_TYPE_TSV ){
+    if (spec->device_id     != NULL &&
+        dconf->device_hash  != NULL){
+      char *key = apr_psprintf(r->pool,"%d.%s",spec->provider,spec->device_id);
+      apr_table_t *ht = apr_hash_get(dconf->device_hash,key,APR_HASH_KEY_STRING);
+  
+      if(ht != NULL){
+        int i;
+        for ( i=0; i< dconf->device_keys->nelts; i++){
+          const char *k = ((const char**)dconf->device_keys->elts)[i];
+          char *val = (char *)apr_table_get(ht,k);
+          if(val != NULL){
+            char *info_key = apr_psprintf(r->pool,"%s-%s",HTTP_X_CHXJ_INFO,k);
+            apr_table_setn(r->headers_in, info_key, val);
+          }
+        }
+      }
+    }
+  }
 
   DBG(r, "REQ[%X] end chxj_add_device_env()", (unsigned int)(apr_size_t)r);
 }
index 6868360..bded37d 100644 (file)
@@ -431,6 +431,21 @@ tag_handler chtml10_handler[] = {
     s_chtml10_newline_mark,
     NULL,
   },
+  /* tagObject */
+  {
+    NULL,
+    NULL,
+  },
+  /* tagParam */
+  {
+    NULL,
+    NULL,
+  },
+  /* tagCAPTION */
+  {
+    NULL,
+    NULL,
+  },
 };
 
 
@@ -2681,12 +2696,14 @@ s_chtml10_start_img_tag(void *pdoc, Node *node)
         value = chxj_encoding_parameter(r, value, 0);
         value = chxj_add_cookie_parameter(r, value, chtml10->cookie);
         value = chxj_add_cookie_no_update_parameter(r, value);
+        value = chxj_img_rewrite_parameter(r,chtml10->conf,value);
         attr_src = value;
 #else
         value = chxj_img_conv(r, spec, value);
         value = chxj_encoding_parameter(r, value, 0);
         value = chxj_add_cookie_parameter(r, value, chtml10->cookie);
         value = chxj_add_cookie_no_update_parameter(r, value);
+        value = chxj_img_rewrite_parameter(r,chtml10->conf,value);
         attr_src = value;
 #endif
       }
index 66394be..d8b8413 100644 (file)
@@ -197,7 +197,7 @@ static char *s_chtml20_end_span_tag      (void *pdoc, Node *node);
 
 static void  s_init_chtml20(chtml20_t *chtml, Doc *doc, request_rec *r, device_table *spec);
 
-static int   s_chtml20_search_emoji(chtml20_t *chtml, char *txt, char **rslt);
+static int   s_chtml20_search_emoji(chtml20_t *chtml, char *txt, char **rslt, Node *node);
 
 static char *s_chtml20_chxjif_tag(void *pdoc, Node *node); 
 static char *s_chtml20_text_tag(void *pdoc, Node *node);
@@ -487,6 +487,21 @@ tag_handler chtml20_handler[] = {
     s_chtml20_newline_mark,
     NULL,
   },
+  /* tagObject */
+  {
+    NULL,
+    NULL,
+  },
+  /* tagParam */
+  {
+    NULL,
+    NULL,
+  },
+  /* tagCAPTION */
+  {
+    NULL,
+    NULL,
+  },
 };
 
 /**
@@ -620,10 +635,11 @@ s_init_chtml20(chtml20_t *chtml20, Doc *doc, request_rec *r, device_table *spec)
  *                      EMOJI is specified. 
  * @param rslt    [o]   The pointer to the pointer that stores the result is 
  *                      specified. 
+ * @param node    [i]   The current node to check whether tag is span/font for CHXJ_IMODE_EMOJI_COLOR_AUTO.
  * @return When corresponding EMOJI exists, it returns it excluding 0. 
  */
 static int
-s_chtml20_search_emoji(chtml20_t *chtml20, char *txt, char **rslt)
+s_chtml20_search_emoji(chtml20_t *chtml20, char *txt, char **rslt, Node *node)
 {
   emoji_t       *ee;
   request_rec   *r;
@@ -655,6 +671,20 @@ s_chtml20_search_emoji(chtml20_t *chtml20, char *txt, char **rslt)
         (*rslt)[0] = ee->imode->hex1byte & 0xff;
         (*rslt)[1] = ee->imode->hex2byte & 0xff;
         (*rslt)[2] = 0;
+        
+        if(chtml20->conf->imode_emoji_color >= CHXJ_IMODE_EMOJI_COLOR_AUTO ){
+          if(ee->imode->color != NULL){
+            if(chtml20->conf->imode_emoji_color == CHXJ_IMODE_EMOJI_COLOR_AUTO && node != NULL ){
+              if(strcasecmp(node->parent->name, "span") == 0 ||
+                 strcasecmp(node->parent->name, "font")  == 0 ){
+                return strlen(ee->imode->string);
+              }
+            }
+            char *tmp = apr_pstrdup(r->pool,*rslt);
+            *rslt = apr_psprintf(r->pool,
+                        "<font color=\"%s\">%s</font>",ee->imode->color,tmp);
+          }
+        }
         return strlen(ee->imode->string);
       }
 
@@ -699,7 +729,7 @@ chxj_chtml20_emoji_only_converter(request_rec *r, device_table *spec, const char
     char *out;
     int   rtn;
 
-    rtn = s_chtml20_search_emoji(chtml20, (char *)&src[ii], &out);
+    rtn = s_chtml20_search_emoji(chtml20, (char *)&src[ii], &out, NULL);
     if (rtn) {
       W_V(out);
       ii+=(rtn - 1);
@@ -2638,12 +2668,14 @@ s_chtml20_start_img_tag(void *pdoc, Node *node)
         value = chxj_encoding_parameter(r, value, 0);
         value = chxj_add_cookie_parameter(r, value, chtml20->cookie);
         value = chxj_add_cookie_no_update_parameter(r, value);
+        value = chxj_img_rewrite_parameter(r,chtml20->conf,value);
         attr_src = value;
 #else
         value = chxj_img_conv(r, spec, value);
         value = chxj_encoding_parameter(r, value, 0);
         value = chxj_add_cookie_parameter(r, value, chtml20->cookie);
         value = chxj_add_cookie_no_update_parameter(r, value);
+        value = chxj_img_rewrite_parameter(r,chtml20->conf,value);
         attr_src = value;
 #endif
       }
@@ -3469,12 +3501,6 @@ s_chtml20_start_h3_tag(void *pdoc, Node *node)
     W_V(attr_align);
     W_L("\"");
   }
-  W_L("<h3");
-  if (attr_align) {
-    W_L(" align=\"");
-    W_V(attr_align);
-    W_L("\"");
-  }
   W_L(">");
 
   return chtml20->out;
@@ -4170,7 +4196,7 @@ s_chtml20_text_tag(void *pdoc, Node *child)
   
   for (ii=0; ii<qs_get_node_size(doc,child); ii++) {
     char *out;
-    int rtn = s_chtml20_search_emoji(chtml20, &textval[ii], &out);
+    int rtn = s_chtml20_search_emoji(chtml20, &textval[ii], &out, child);
     if (rtn != 0) {
       tdst = qs_out_apr_pstrcat(r, tdst, out, &tdst_len);
       ii+=(rtn - 1);
index b657f19..816c5ec 100644 (file)
@@ -200,7 +200,7 @@ static char *s_chtml30_end_span_tag       (void *pdoc, Node *node);
 
 static void  s_init_chtml30(chtml30_t *chtml, Doc *doc, request_rec *r, device_table *spec);
 
-static int   s_chtml30_search_emoji(chtml30_t *chtml, char *txt, char **rslt);
+static int   s_chtml30_search_emoji(chtml30_t *chtml, char *txt, char **rslt, Node *node);
 static css_prop_list_t *s_chtml30_push_and_get_now_style(void *pdoc, Node *node, const char *style_attr_value);
 static css_prop_list_t *s_chtml30_nopush_and_get_now_style(void *pdoc, Node *node, const char *style_attr_value);
 
@@ -486,6 +486,21 @@ tag_handler chtml30_handler[] = {
     s_chtml30_newline_mark,
     NULL,
   },
+  /* tagObject */
+  {
+    NULL,
+    NULL,
+  },
+  /* tagParam */
+  {
+    NULL,
+    NULL,
+  },
+  /* tagCAPTION */
+  {
+    NULL,
+    NULL,
+  },
 };
 
 
@@ -622,10 +637,11 @@ s_init_chtml30(chtml30_t *chtml30, Doc *doc, request_rec *r, device_table *spec)
  *                      EMOJI is specified. 
  * @param rslt    [o]   The pointer to the pointer that stores the result is 
  *                      specified. 
+ * @param node    [i]   The current node to check whether tag is span/font for CHXJ_IMODE_EMOJI_COLOR_AUTO
  * @return When corresponding EMOJI exists, it returns it excluding 0. 
  */
 static int
-s_chtml30_search_emoji(chtml30_t *chtml30, char *txt, char **rslt)
+s_chtml30_search_emoji(chtml30_t *chtml30, char *txt, char **rslt, Node *node)
 {
   emoji_t       *ee;
   request_rec   *r;
@@ -658,6 +674,22 @@ s_chtml30_search_emoji(chtml30_t *chtml30, char *txt, char **rslt)
         (*rslt)[0] = ee->imode->hex1byte & 0xff;
         (*rslt)[1] = ee->imode->hex2byte & 0xff;
         (*rslt)[2] = 0;
+        
+        if(chtml30->conf->imode_emoji_color >= CHXJ_IMODE_EMOJI_COLOR_AUTO ){
+          if(ee->imode->color != NULL){
+            if(chtml30->conf->imode_emoji_color == CHXJ_IMODE_EMOJI_COLOR_AUTO && node != NULL ){
+              if(strcasecmp(node->parent->name, "span") == 0 ||
+                 strcasecmp(node->parent->name, "font")  == 0 ){
+                return strlen(ee->imode->string);
+              }
+            }
+            char *tmp = apr_pstrdup(r->pool,*rslt);
+            *rslt = apr_psprintf(r->pool,
+                        "<font color=\"%s\">%s</font>",ee->imode->color,tmp);
+          }
+        }
+        return strlen(ee->imode->string);
+        
         return strlen(ee->imode->string);
       }
 
@@ -703,7 +735,7 @@ chxj_chtml30_emoji_only_converter(request_rec *r, device_table *spec, const char
     char *out;
     int   rtn;
 
-    rtn = s_chtml30_search_emoji(chtml30, (char *)&src[ii], &out);
+    rtn = s_chtml30_search_emoji(chtml30, (char *)&src[ii], &out, NULL);
     if (rtn) {
       W_V(out);
       ii+=(rtn - 1);
@@ -2258,12 +2290,14 @@ s_chtml30_start_img_tag(void *pdoc, Node *node)
       value = chxj_encoding_parameter(r, value, 0);
       value = chxj_add_cookie_parameter(r, value, chtml30->cookie);
       value = chxj_add_cookie_no_update_parameter(r, value);
+      value = chxj_img_rewrite_parameter(r,chtml30->conf,value);
       attr_src = value;
 #else
       value = chxj_img_conv(r,spec,value);
       value = chxj_encoding_parameter(r, value, 0);
       value = chxj_add_cookie_parameter(r, value, chtml30->cookie);
       value = chxj_add_cookie_no_update_parameter(r, value);
+      value = chxj_img_rewrite_parameter(r,chtml30->conf,value);
       attr_src = value;
 #endif
       }
@@ -3227,18 +3261,6 @@ s_chtml30_start_li_tag(void *pdoc, Node *node)
     W_V(attr_value);
     W_L("\"");
   }
-
-  W_L("<li");
-  if (attr_type) {
-    W_L(" type=\"");
-    W_V(attr_type);
-    W_L("\"");
-  }
-  if (attr_value) {
-    W_L(" value=\"");
-    W_V(attr_value);
-    W_L("\"");
-  }
   W_L(">");
   return chtml30->out;
 }
@@ -3684,12 +3706,6 @@ s_chtml30_start_h5_tag(void *pdoc, Node *node)
     W_V(attr_align);
     W_L("\"");
   }
-  W_L("<h5");
-  if (attr_align) {
-    W_L(" align=\"");
-    W_V(attr_align);
-    W_L("\"");
-  }
   W_L(">");
 
   return chtml30->out;
@@ -3859,33 +3875,6 @@ s_chtml30_start_textarea_tag(void *pdoc, Node *node)
     else if (STRCASEEQ('s','S',"style", name) && value && *value) {
       attr_style = value;
     }
-  }  
-
-  W_L("<textarea");
-  if (attr_accesskey) {
-    W_L(" accesskey=\"");
-    W_V(attr_accesskey);
-    W_L("\"");
-  }
-  if (attr_name) {
-    W_L(" name=\"");
-    W_V(attr_name);
-    W_L("\"");
-  }
-  if (attr_rows) {
-    W_L(" rows=\"");
-    W_V(attr_rows);
-    W_L("\"");
-  }
-  if (attr_cols) {
-    W_L(" cols=\"");
-    W_V(attr_cols);
-    W_L("\"");
-  }
-  if (attr_istyle) {
-    W_L(" istyle=\"");
-    W_V(attr_istyle);
-    W_L("\"");
   }
 
   if (IS_CSS_ON(chtml30->entryp)) {
@@ -4018,7 +4007,7 @@ s_chtml30_text_tag(void *pdoc, Node *child)
   
   for (ii=0; ii<qs_get_node_size(doc,child); ii++) {
     char* out;
-    int rtn = s_chtml30_search_emoji(chtml30, &textval[ii], &out);
+    int rtn = s_chtml30_search_emoji(chtml30, &textval[ii], &out, child);
     if (rtn) {
       tdst = qs_out_apr_pstrcat(r, tdst, out, &tdst_len);
       ii+=(rtn - 1);
@@ -4393,22 +4382,6 @@ s_chtml30_start_marquee_tag(void *pdoc, Node *node)
     W_V(attr_loop);
     W_L("\"");
   }
-  W_L("<marquee");
-  if (attr_direction) {
-    W_L(" direction=\"");
-    W_V(attr_direction);
-    W_L("\"");
-  }
-  if (attr_behavior) {
-    W_L(" behavior=\"");
-    W_V(attr_behavior);
-    W_L("\"");
-  }
-  if (attr_loop) {
-    W_L(" loop=\"");
-    W_V(attr_loop);
-    W_L("\"");
-  }
   W_L(">");
 
   chtml30_flags_t *flg = (chtml30_flags_t *)apr_palloc(doc->pool, sizeof(chtml30_flags_t));
index 747280f..937e387 100644 (file)
@@ -143,7 +143,7 @@ static char *s_chtml40_style_tag     (void *pdoc, Node *node);
 
 static void  s_init_chtml40(chtml40_t *chtml, Doc *doc, request_rec *r, device_table *spec);
 
-static int   s_chtml40_search_emoji(chtml40_t *chtml, char *txt, char **rslt);
+static int   s_chtml40_search_emoji(chtml40_t *chtml, char *txt, char **rslt, Node *node);
 static css_prop_list_t *s_chtml40_push_and_get_now_style(void *pdoc, Node *node, const char *style_attr_value);
 static css_prop_list_t *s_chtml40_nopush_and_get_now_style(void *pdoc, Node *node, const char *style_attr_value);
 
@@ -429,6 +429,21 @@ tag_handler chtml40_handler[] = {
     s_chtml40_newline_mark,
     NULL,
   },
+  /* tagObject */
+  {
+    NULL,
+    NULL,
+  },
+  /* tagParam */
+  {
+    NULL,
+    NULL,
+  },
+  /* tagCAPTION */
+  {
+    NULL,
+    NULL,
+  },
 };
 
 
@@ -565,10 +580,11 @@ s_init_chtml40(chtml40_t *chtml40, Doc *doc, request_rec *r, device_table *spec)
  *                      EMOJI is specified. 
  * @param rslt    [o]   The pointer to the pointer that stores the result is 
  *                      specified. 
+ * @param node    [i]   The current node to check whether tag is span/font for CHXJ_IMODE_EMOJI_COLOR_AUTO.
  * @return When corresponding EMOJI exists, it returns it excluding 0. 
  */
 static int
-s_chtml40_search_emoji(chtml40_t *chtml40, char *txt, char **rslt)
+s_chtml40_search_emoji(chtml40_t *chtml40, char *txt, char **rslt, Node *node)
 {
   emoji_t       *ee;
   request_rec   *r;
@@ -601,6 +617,20 @@ s_chtml40_search_emoji(chtml40_t *chtml40, char *txt, char **rslt)
         (*rslt)[0] = ee->imode->hex1byte & 0xff;
         (*rslt)[1] = ee->imode->hex2byte & 0xff;
         (*rslt)[2] = 0;
+        
+        if(chtml40->conf->imode_emoji_color >= CHXJ_IMODE_EMOJI_COLOR_AUTO ){
+          if(ee->imode->color != NULL){
+            if(chtml40->conf->imode_emoji_color == CHXJ_IMODE_EMOJI_COLOR_AUTO && node != NULL ){
+              if(strcasecmp(node->parent->name, "span") == 0 ||
+                 strcasecmp(node->parent->name, "font")  == 0 ){
+                return strlen(ee->imode->string);
+              }
+            }
+            char *tmp = apr_pstrdup(r->pool,*rslt);
+            *rslt = apr_psprintf(r->pool,
+                        "<font color=\"%s\">%s</font>",ee->imode->color,tmp);
+          }
+        }
         return strlen(ee->imode->string);
       }
 
@@ -646,7 +676,7 @@ chxj_chtml40_emoji_only_converter(request_rec *r, device_table *spec, const char
     char *out;
     int   rtn;
 
-    rtn = s_chtml40_search_emoji(chtml40, (char *)&src[ii], &out);
+    rtn = s_chtml40_search_emoji(chtml40, (char *)&src[ii], &out, NULL);
     if (rtn) {
       W_V(out);
       ii+=(rtn - 1);
@@ -2208,12 +2238,14 @@ s_chtml40_start_img_tag(void *pdoc, Node *node)
       value = chxj_encoding_parameter(r, value, 0);
       value = chxj_add_cookie_parameter(r, value, chtml40->cookie);
       value = chxj_add_cookie_no_update_parameter(r, value);
+      value = chxj_img_rewrite_parameter(r,chtml40->conf,value);
       attr_src = value;
 #else
       value = chxj_img_conv(r,spec,value);
       value = chxj_encoding_parameter(r, value, 0);
       value = chxj_add_cookie_parameter(r, value, chtml40->cookie);
       value = chxj_add_cookie_no_update_parameter(r, value);
+      value = chxj_img_rewrite_parameter(r,chtml40->conf,value);
       attr_src = value;
 #endif
       }
@@ -3111,17 +3143,6 @@ s_chtml40_start_ol_tag(void *pdoc, Node *node)
     W_V(attr_start);
     W_L("\"");
   }
-  W_L("<ol");
-  if (attr_type) {
-    W_L(" type=\"");
-    W_V(attr_type);
-    W_L("\"");
-  }
-  if (attr_start) {
-    W_L(" start=\"");
-    W_V(attr_start);
-    W_L("\"");
-  }
   W_L(">");
 
   return chtml40->out;
@@ -3672,12 +3693,6 @@ s_chtml40_start_h5_tag(void *pdoc, Node *node)
     W_V(attr_align);
     W_L("\"");
   }
-  W_L("<h5");
-  if (attr_align) {
-    W_L(" align=\"");
-    W_V(attr_align);
-    W_L("\"");
-  }
   W_L(">");
 
   return chtml40->out;
@@ -3977,7 +3992,7 @@ s_chtml40_text_tag(void *pdoc, Node *child)
   
   for (ii=0; ii<qs_get_node_size(doc,child); ii++) {
     char* out;
-    int rtn = s_chtml40_search_emoji(chtml40, &textval[ii], &out);
+    int rtn = s_chtml40_search_emoji(chtml40, &textval[ii], &out, child);
     if (rtn) {
       tdst = qs_out_apr_pstrcat(r, tdst, out, &tdst_len);
       ii+=(rtn - 1);
index 4b86d2b..8daba11 100644 (file)
@@ -123,7 +123,7 @@ static char *s_chtml50_style_tag       (void *pdoc, Node *node);
 
 static void  s_init_chtml50(chtml50_t *chtml, Doc *doc, request_rec *r, device_table *spec);
 
-static int   s_chtml50_search_emoji(chtml50_t *chtml, char *txt, char **rslt);
+static int   s_chtml50_search_emoji(chtml50_t *chtml, char *txt, char **rslt, Node *node);
 static css_prop_list_t *s_chtml50_push_and_get_now_style(void *pdoc, Node *node, const char *style_attr_value);
 static css_prop_list_t *s_chtml50_nopush_and_get_now_style(void *pdoc, Node *node, const char *style_attr_value);
 
@@ -409,6 +409,21 @@ tag_handler chtml50_handler[] = {
     s_chtml50_newline_mark,
     NULL,
   },
+  /* tagObject */
+  {
+    NULL,
+    NULL,
+  },
+  /* tagParam */
+  {
+    NULL,
+    NULL,
+  },
+  /* tagCAPTION */
+  {
+    NULL,
+    NULL,
+  },
 };
 
 
@@ -545,10 +560,11 @@ s_init_chtml50(chtml50_t *chtml50, Doc *doc, request_rec *r, device_table *spec)
  *                      EMOJI is specified. 
  * @param rslt    [o]   The pointer to the pointer that stores the result is 
  *                      specified. 
+ * @param node    [i]   The current node to check whether tag is span/font for CHXJ_IMODE_EMOJI_COLOR_AUTO.
  * @return When corresponding EMOJI exists, it returns it excluding 0. 
  */
 static int
-s_chtml50_search_emoji(chtml50_t *chtml50, char *txt, char **rslt)
+s_chtml50_search_emoji(chtml50_t *chtml50, char *txt, char **rslt, Node *node)
 {
   emoji_t       *ee;
   request_rec   *r;
@@ -581,6 +597,20 @@ s_chtml50_search_emoji(chtml50_t *chtml50, char *txt, char **rslt)
         (*rslt)[0] = ee->imode->hex1byte & 0xff;
         (*rslt)[1] = ee->imode->hex2byte & 0xff;
         (*rslt)[2] = 0;
+        
+        if(chtml50->conf->imode_emoji_color >= CHXJ_IMODE_EMOJI_COLOR_AUTO ){
+          if(ee->imode->color != NULL){
+            if(chtml50->conf->imode_emoji_color == CHXJ_IMODE_EMOJI_COLOR_AUTO && node != NULL ){
+              if(strcasecmp(node->parent->name, "span") == 0 ||
+                 strcasecmp(node->parent->name, "font")  == 0 ){
+                return strlen(ee->imode->string);
+              }
+            }
+            char *tmp = apr_pstrdup(r->pool,*rslt);
+            *rslt = apr_psprintf(r->pool,
+                        "<font color=\"%s\">%s</font>",ee->imode->color,tmp);
+          }
+        }
         return strlen(ee->imode->string);
       }
 
@@ -626,7 +656,7 @@ chxj_chtml50_emoji_only_converter(request_rec *r, device_table *spec, const char
     char *out;
     int   rtn;
 
-    rtn = s_chtml50_search_emoji(chtml50, (char *)&src[ii], &out);
+    rtn = s_chtml50_search_emoji(chtml50, (char *)&src[ii], &out, NULL);
     if (rtn) {
       W_V(out);
       ii+=(rtn - 1);
@@ -1104,38 +1134,6 @@ s_chtml50_start_body_tag(void *pdoc, Node *node)
     W_V(attr_vlink);
     W_L("\"");
   }
-
-  W_L("<body");
-  if (attr_bgcolor) {
-    attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
-    W_L(" bgcolor=\"");
-    W_V(attr_bgcolor);
-    W_L("\"");
-  }
-  if (attr_text) {
-    attr_text = chxj_css_rgb_func_to_value(doc->pool, attr_text);
-    W_L(" text=\"");
-    W_V(attr_text);
-    W_L("\"");
-  }
-  if (attr_link) {
-    attr_link = chxj_css_rgb_func_to_value(doc->pool, attr_link);
-    W_L(" link=\"");
-    W_V(attr_link);
-    W_L("\"");
-  }
-  if (attr_alink) {
-    attr_alink = chxj_css_rgb_func_to_value(doc->pool, attr_alink);
-    W_L(" alink=\"");
-    W_V(attr_alink);
-    W_L("\"");
-  }
-  if (attr_vlink) {
-    attr_vlink = chxj_css_rgb_func_to_value(doc->pool, attr_vlink);
-    W_L(" vlink=\"");
-    W_V(attr_vlink);
-    W_L("\"");
-  }
   W_L(">");
 
   return chtml50->out;
@@ -2324,12 +2322,14 @@ s_chtml50_start_img_tag(void *pdoc, Node *node)
       value = chxj_encoding_parameter(r, value, 0);
       value = chxj_add_cookie_parameter(r, value, chtml50->cookie);
       value = chxj_add_cookie_no_update_parameter(r, value);
+      value = chxj_img_rewrite_parameter(r,chtml50->conf,value);
       attr_src = value;
 #else
       value = chxj_img_conv(r,spec,value);
       value = chxj_encoding_parameter(r, value, 0);
       value = chxj_add_cookie_parameter(r, value, chtml50->cookie);
       value = chxj_add_cookie_no_update_parameter(r, value);
+      value = chxj_img_rewrite_parameter(r,chtml50->conf,value);
       attr_src = value;
 #endif
       }
@@ -3266,17 +3266,6 @@ s_chtml50_start_ol_tag(void *pdoc, Node *node)
     W_V(attr_start);
     W_L("\"");
   }
-  W_L("<ol");
-  if (attr_type) {
-    W_L(" type=\"");
-    W_V(attr_type);
-    W_L("\"");
-  }
-  if (attr_start) {
-    W_L(" start=\"");
-    W_V(attr_start);
-    W_L("\"");
-  }
   W_L(">");
 
   return chtml50->out;
@@ -3647,12 +3636,6 @@ s_chtml50_start_h3_tag(void *pdoc, Node *node)
     W_V(attr_align);
     W_L("\"");
   }
-  W_L("<h3");
-  if (attr_align) {
-    W_L(" align=\"");
-    W_V(attr_align);
-    W_L("\"");
-  }
   W_L(">");
 
   return chtml50->out;
@@ -3831,12 +3814,6 @@ s_chtml50_start_h5_tag(void *pdoc, Node *node)
     W_V(attr_align);
     W_L("\"");
   }
-  W_L("<h5");
-  if (attr_align) {
-    W_L(" align=\"");
-    W_V(attr_align);
-    W_L("\"");
-  }
   W_L(">");
 
   return chtml50->out;
@@ -4136,7 +4113,7 @@ s_chtml50_text_tag(void *pdoc, Node *child)
   
   for (ii=0; ii<qs_get_node_size(doc,child); ii++) {
     char* out;
-    int rtn = s_chtml50_search_emoji(chtml50, &textval[ii], &out);
+    int rtn = s_chtml50_search_emoji(chtml50, &textval[ii], &out, child);
     if (rtn) {
       tdst = qs_out_apr_pstrcat(r, tdst, out, &tdst_len);
       ii+=(rtn - 1);
@@ -5149,12 +5126,6 @@ s_chtml50_start_menu_tag(void *pdoc, Node *node)
     W_V(attr_type);
     W_L("\"");
   }
-  W_L("<menu");
-  if (attr_type) {
-    W_L(" type=\"");
-    W_V(attr_type);
-    W_L("\"");
-  }
   W_L(">");
   chtml50_flags_t *flg = (chtml50_flags_t *)apr_palloc(doc->pool, sizeof(chtml50_flags_t));
   memset(flg, 0, sizeof(*flg));
index f278c50..454f0c4 100644 (file)
@@ -1478,7 +1478,7 @@ chxj_cookie_only_mode(request_rec *r, const char *src, apr_size_t *len, cookie_t
   dst = s_convert_img_tag(r, dst, len, cookie);
   dst = s_convert_form_tag(r, dst, len, cookie);
 
-  result = chxj_rencoding(r, dst, len);
+  result = chxj_rencoding(r, dst, len, NULL);
   DBG(r, "REQ[%X] end chxj_cookie_only_mode()", TO_ADDR(r));
   return result;
 }
index 47f8976..c479a70 100644 (file)
@@ -241,7 +241,7 @@ chxj_convert_illegal_charactor_sequence(request_rec *r, chxjconvrule_entry  *ent
 
 
 char *
-chxj_rencoding(request_rec *r, const char *src, apr_size_t *len)
+chxj_rencoding(request_rec *r, const char *src, apr_size_t *len,const char *enc)
 {
   char                *obuf;
   char                *ibuf;
@@ -298,11 +298,17 @@ chxj_rencoding(request_rec *r, const char *src, apr_size_t *len)
     DBG(r,"REQ[%X] end   chxj_rencoding()", (unsigned int)(apr_size_t)r);
     return ibuf;
   }
-  DBG(r,"encode convert [%s] -> [%s]", "CP932", entryp->encoding);
-
+  char *from_enc = enc;
+  if (!enc){
+    from_enc = "CP932";
+  }
+  if (strcasecmp(enc,"Shift_JIS") == 0){
+    from_enc = "CP932";
+  }
+  DBG(r,"encode convert [%s] -> [%s]", from_enc, entryp->encoding);
   memset(obuf, 0, olen);
 
-  cd = iconv_open(entryp->encoding, "CP932");
+  cd = iconv_open(entryp->encoding, from_enc);
   if (cd == (iconv_t)-1) {
     if (EINVAL == errno) {
       ERR(r, "The conversion from %s to %s is not supported by the implementation.", "CP932", entryp->encoding);
index 979f8d2..9b02fd1 100644 (file)
@@ -376,6 +376,21 @@ tag_handler hdml_handler[] = {
     NULL,
     NULL,
   },
+  /* tagObject */
+  {
+    NULL,
+    NULL,
+  },
+  /* tagParam */
+  {
+    NULL,
+    NULL,
+  },
+  /* tagCAPTION */
+  {
+    NULL,
+    NULL,
+  },
 };
 
 /**
index 9cd305a..5fea45a 100644 (file)
@@ -51,3 +51,23 @@ chxj_img_conv(
 
   return dst;
 }
+
+char *
+chxj_img_rewrite_parameter(
+    request_rec *r,
+    mod_chxj_config *conf,
+    const char *href)
+{
+  if (conf->image_rewrite == CHXJ_IMG_REWRITE_ON &&
+      conf->image_rewrite_mode == CHXJ_IMG_REWRITE_MODE_TAG){
+    if(strstr(href,"?")){
+      return apr_pstrcat(r->pool,href,"&",CHXJ_IMG_REWRITE_URL_STRING,NULL);
+    }
+    else{
+      return apr_pstrcat(r->pool,href,"?",CHXJ_IMG_REWRITE_URL_STRING,NULL);
+    }
+  }
+  else{
+    return apr_pstrcat(r->pool,href,NULL);
+  }
+}
index 8807539..2f9a1c8 100644 (file)
@@ -77,6 +77,7 @@ struct query_string_param_t {
 /*----------------------------------------------------------------------------*/
 static device_table v_ignore_spec = {
   NULL,
+  0,
   "IGN",
   "IGN",
   CHXJ_SPEC_HTML,
@@ -94,6 +95,7 @@ static device_table v_ignore_spec = {
   96,
   65536,
   NULL,
+  "Shift_JIS"
 };
 
 /*----------------------------------------------------------------------------*/
@@ -533,11 +535,6 @@ s_create_cache_file(request_rec          *r,
     EXIT_MAGICK_ERROR();
     return HTTP_NOT_FOUND;
   }
-  if (MagickStripImage(magick_wand) == MagickFalse) {
-    ERR(r, "mod_chxj: strip image failure.");
-    EXIT_MAGICK_ERROR();
-    return HTTP_NOT_FOUND;
-  }
 
   /*------------------*/
   /* for AnimationGIF */
@@ -1622,6 +1619,14 @@ s_send_cache_file(device_table *spec, query_string_param_t *query_string, reques
   DBG(r, "REQ[%X] offset:[%ld]", TO_ADDR(r), query_string->offset);
   DBG(r, "REQ[%X] count:[%ld]",  TO_ADDR(r), query_string->count);
 
+  /* for mod_cache */
+  {
+    apr_table_setn(r->headers_out, "Vary", "User-Agent");
+    apr_table_setn(r->err_headers_out, "Vary", "User-Agent");
+    ap_update_mtime(r, st.mtime);
+    ap_set_last_modified(r);
+  }
+
   if (query_string->mode != IMG_CONV_MODE_EZGET && query_string->name == NULL) {
     contentLength = apr_psprintf(r->pool, "%d", (int)st.size);
     apr_table_setn(r->headers_out, "Content-Length", (const char*)contentLength);
@@ -1754,6 +1759,14 @@ s_send_original_file(request_rec *r, const char *originalfile)
   if (rv != APR_SUCCESS)
     return HTTP_NOT_FOUND;
 
+  /* for mod_cache */
+  {
+    apr_table_setn(r->headers_out, "Vary", "User-Agent");
+    apr_table_setn(r->err_headers_out, "Vary", "User-Agent");
+    ap_update_mtime(r, st.mtime);
+    ap_set_last_modified(r);
+  }
+
   rv = apr_file_open(&fout, originalfile, 
     APR_READ | APR_BINARY, APR_OS_DEFAULT, r->pool);
   if (rv != APR_SUCCESS) {
@@ -2441,7 +2454,7 @@ s_add_comment_to_png(request_rec *r, char *data, apr_size_t *len)
     pos += 4;
     memcpy(&result[pos], &data[PNG_SIG_AND_IHDR_SZ] , *len - PNG_SIG_AND_IHDR_SZ);
     *len = *len + total_tEXt_size;
-    DBG(r, "REQ[%X] writebyte:[%d]", (unsigned int)(apr_size_t)r, *len);
+    DBG(r, "REQ[%X] writebyte:[%d]", (unsigned int)(apr_size_t)r, (unsigned int)*len);
   }
   else {
     result = data;
old mode 100644 (file)
new mode 100755 (executable)
index 4b56d8d..3dda3b0
@@ -23,6 +23,7 @@
 #include "chxj_url_encode.h"
 #include "chxj_str_util.h"
 #include "chxj_conv_z2h.h"
+#include "chxj_header_inf.h"
 
 
 #define GET_IXHTML10(X) ((ixhtml10_t *)(X))
@@ -60,8 +61,16 @@ static char *s_ixhtml10_start_li_tag       (void *pdoc, Node *node);
 static char *s_ixhtml10_end_li_tag         (void *pdoc, Node *node);
 static char *s_ixhtml10_start_br_tag       (void *pdoc, Node *node);
 static char *s_ixhtml10_end_br_tag         (void *pdoc, Node *node);
+static char *s_ixhtml10_start_table_tag    (void *pdoc, Node *node);
+static char *s_ixhtml10_end_table_tag      (void *pdoc, Node *node);
 static char *s_ixhtml10_start_tr_tag       (void *pdoc, Node *node);
 static char *s_ixhtml10_end_tr_tag         (void *pdoc, Node *node);
+static char *s_ixhtml10_start_th_tag       (void *pdoc, Node *node);
+static char *s_ixhtml10_end_th_tag         (void *pdoc, Node *node);
+static char *s_ixhtml10_start_td_tag       (void *pdoc, Node *node);
+static char *s_ixhtml10_end_td_tag         (void *pdoc, Node *node);
+static char *s_ixhtml10_start_td_or_th_tag       (void *pdoc, Node *node,char *tagName);
+static char *s_ixhtml10_end_td_or_th_tag         (void *pdoc, Node *node,char *tagName);
 static char *s_ixhtml10_start_font_tag     (void *pdoc, Node *node);
 static char *s_ixhtml10_end_font_tag       (void *pdoc, Node *node);
 static char *s_ixhtml10_start_form_tag     (void *pdoc, Node *node);
@@ -127,10 +136,15 @@ static char *s_ixhtml10_start_nobr_tag     (void *pdoc, Node *node);
 static char *s_ixhtml10_end_nobr_tag       (void *pdoc, Node *node);
 static char *s_ixhtml10_start_small_tag    (void *pdoc, Node *node);
 static char *s_ixhtml10_end_small_tag      (void *pdoc, Node *node);
+static char *s_ixhtml10_start_object_tag    (void *pdoc, Node *node);
+static char *s_ixhtml10_end_object_tag      (void *pdoc, Node *node);
+static char *s_ixhtml10_start_param_tag    (void *pdoc, Node *node);
+static char *s_ixhtml10_start_caption_tag    (void *pdoc, Node *node);
+static char *s_ixhtml10_end_caption_tag      (void *pdoc, Node *node);
 
 static void  s_init_ixhtml10(ixhtml10_t *ixhtml10, Doc *doc, request_rec *r, device_table *spec);
 
-static int   s_ixhtml10_search_emoji(ixhtml10_t *ixhtml10, char *txt, char **rslt);
+static int   s_ixhtml10_search_emoji(ixhtml10_t *ixhtml10, char *txt, char **rslt,Node *node);
 
 static char *s_ixhtml10_istyle_to_wap_input_format(apr_pool_t *p, const char *s);
 static css_prop_list_t *s_ixhtml10_nopush_and_get_now_style(void *pdoc, Node *node, const char *style_attr_value);
@@ -242,8 +256,8 @@ tag_handler ixhtml10_handler[] = {
   },
   /* tagTABLE */
   {
-    NULL,
-    NULL,
+    s_ixhtml10_start_table_tag,
+    s_ixhtml10_end_table_tag,
   },
   /* tagTR */
   {
@@ -252,8 +266,8 @@ tag_handler ixhtml10_handler[] = {
   },
   /* tagTD */
   {
-    NULL,
-    NULL,
+    s_ixhtml10_start_td_tag,
+    s_ixhtml10_end_td_tag,
   },
   /* tagTBODY */
   {
@@ -342,8 +356,8 @@ tag_handler ixhtml10_handler[] = {
   },
   /* tagTH */
   {
-    NULL,
-    NULL,
+    s_ixhtml10_start_th_tag,
+    s_ixhtml10_end_th_tag,
   },
   /* tagB */
   {
@@ -420,6 +434,21 @@ tag_handler ixhtml10_handler[] = {
     s_ixhtml10_newline_mark,
     NULL,
   },
+  /* tagObject */
+  {
+    s_ixhtml10_start_object_tag,
+    s_ixhtml10_end_object_tag,
+  },
+  /* tagParam */
+  {
+    s_ixhtml10_start_param_tag,
+    NULL,
+  },
+  /* tagCAPTION */
+  {
+    s_ixhtml10_start_caption_tag,
+    s_ixhtml10_end_caption_tag,
+  },
 };
 
 
@@ -469,6 +498,9 @@ chxj_convert_ixhtml10(
   ixhtml10.entryp = entryp;
   ixhtml10.cookie = cookie;
 
+  if (strcasecmp(spec->output_encoding,"UTF-8") == 0 ){
+    apr_table_setn(r->headers_out,HTTP_X_CHXJ_SET_CONTENT_TYPE,"application/xhtml+xml; charset=UTF-8");
+  }
   chxj_set_content_type(r, chxj_header_inf_set_content_type(r, "application/xhtml+xml; charset=Shift_JIS"));
 
   /*--------------------------------------------------------------------------*/
@@ -558,10 +590,11 @@ s_init_ixhtml10(ixhtml10_t *ixhtml10, Doc *doc, request_rec *r, device_table *sp
  *                      EMOJI is specified.
  * @param rslt    [o]   The pointer to the pointer that stores the result is
  *                      specified.
+ * @param node    [i]   The current node to check whether tag is span/font for CHXJ_IMODE_EMOJI_COLOR_AUTO.
  * @return When corresponding EMOJI exists, it returns it excluding 0.
  */
 static int
-s_ixhtml10_search_emoji(ixhtml10_t *ixhtml10, char *txt, char **rslt)
+s_ixhtml10_search_emoji(ixhtml10_t *ixhtml10, char *txt, char **rslt, Node *node)
 {
   emoji_t       *ee;
   request_rec   *r;
@@ -576,7 +609,8 @@ s_ixhtml10_search_emoji(ixhtml10_t *ixhtml10, char *txt, char **rslt)
   if (!spec) {
     DBG(r,"spec is NULL");
   }
-
+  
+  
   for (ee = ixhtml10->conf->emoji;
        ee;
        ee = ee->next) {
@@ -594,6 +628,20 @@ s_ixhtml10_search_emoji(ixhtml10_t *ixhtml10, char *txt, char **rslt)
         (*rslt)[0] = ee->imode->hex1byte & 0xff;
         (*rslt)[1] = ee->imode->hex2byte & 0xff;
         (*rslt)[2] = 0;
+        
+        if(ixhtml10->conf->imode_emoji_color >= CHXJ_IMODE_EMOJI_COLOR_AUTO ){
+          if(ee->imode->color != NULL){
+            if(ixhtml10->conf->imode_emoji_color == CHXJ_IMODE_EMOJI_COLOR_AUTO ){
+              if(strcasecmp(node->parent->name, "span") == 0 ||
+                 strcasecmp(node->parent->name, "font")  == 0 ){
+                return strlen(ee->imode->string);
+              }
+            }
+            char *tmp = apr_pstrdup(r->pool,*rslt);
+            *rslt = apr_psprintf(r->pool,
+                        "<span style=\"color:%s\">%s</span>",ee->imode->color,tmp);
+          }
+        }
         return strlen(ee->imode->string);
       }
 
@@ -625,9 +673,11 @@ s_ixhtml10_start_html_tag(void *pdoc, Node *UNUSED(node))
   r      = doc->r;
   DBG(r, "REQ[%X] start s_ixhtml10_start_html_tag()", (unsigned int)(apr_size_t)r);
 
-  W_L("<?xml version=\"1.0\" encoding=\"Shift_JIS\" ?>");
+  W_L("<?xml version=\"1.0\" encoding=\"");
+  W_V(ixhtml10->spec->output_encoding);
+  W_L("\" ?>");
   W_NLCODE();
-  W_L("<!DOCTYPE html PUBLIC \"-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/1.0) 1.0//EN\" \"i-xhtml_4ja_10.dtd\">");
+  W_L("<!DOCTYPE html PUBLIC \"-//i-mode group (ja)//DTD XHTML i-XHTML(Locale/Ver.=ja/2.0) 1.0//EN\" \"i-xhtml_4ja_10.dtd\">");
   W_NLCODE();
 
   /*--------------------------------------------------------------------------*/
@@ -759,7 +809,14 @@ s_ixhtml10_start_meta_tag(void *pdoc, Node *node)
         }
       }
       break;
-
+    case 'n':
+    case 'N':
+      if (strcasecmp(name, "name") == 0 && value && *value) {
+        W_L(" name=\"");
+        W_V(value);
+        W_L("\"");
+      }
+      break;
     default:
       break;
     }
@@ -963,6 +1020,7 @@ s_ixhtml10_start_body_tag(void *pdoc, Node *node)
   char        *attr_vlink   = NULL;
   char        *attr_alink   = NULL;
   char        *attr_style   = NULL;
+  char        *attr_background   = NULL;
 
   ixhtml10 = GET_IXHTML10(pdoc);
   doc   = ixhtml10->doc;
@@ -1006,16 +1064,23 @@ s_ixhtml10_start_body_tag(void *pdoc, Node *node)
       /*----------------------------------------------------------------------*/
       attr_vlink = value;
     }
+    else if (STRCASEEQ('b','B',"background",name) && value && *value) {
+      /*----------------------------------------------------------------------*/
+      /* CHTML 6.0                                                            */
+      /*----------------------------------------------------------------------*/
+      attr_background = value;
+    }
     else if (STRCASEEQ('s','S',"style",name) && value && *value) {
       attr_style = value;
     }
   }
 
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop      = chxj_css_get_property_value(doc, style, "color");
       css_property_t *bgcolor_prop    = chxj_css_get_property_value(doc, style, "background-color");
+      css_property_t *bgimage_prop    = chxj_css_get_property_value(doc, style, "background-image");
       css_property_t *cur;
       for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
         if (cur->value && *cur->value) {
@@ -1027,6 +1092,18 @@ s_ixhtml10_start_body_tag(void *pdoc, Node *node)
           attr_bgcolor = apr_pstrdup(doc->pool, cur->value);
         }
       }
+      for (cur = bgimage_prop->next; cur != bgimage_prop; cur = cur->next) {
+        if (cur->value && *cur->value) {
+          char *tmp = apr_pstrdup(doc->pool, cur->value);
+          char *tmps = strstr(tmp,"(");
+          if(tmps){
+            char *tmpe = strstr(tmp,")");
+            size_t len = strlen(tmps) - strlen(tmpe) -1 ;
+            tmps++;
+            attr_background = apr_pstrndup(doc->pool, tmps,len);
+          }
+        }
+      }
     }
     if (ixhtml10->style) {
       css_stylesheet_t *pseudos = chxj_find_pseudo_selectors(doc, ixhtml10->style);
@@ -1062,7 +1139,7 @@ s_ixhtml10_start_body_tag(void *pdoc, Node *node)
 
 
   W_L("<body");
-  if (attr_bgcolor || attr_text) {
+  if (attr_bgcolor || attr_text || attr_background) {
     W_L(" style=\"");
     if (attr_bgcolor) {
       attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
@@ -1076,6 +1153,11 @@ s_ixhtml10_start_body_tag(void *pdoc, Node *node)
       W_V(attr_text);
       W_L(";");
     }
+    if( attr_background) {
+      W_L("background-image:url(");
+      W_V(attr_background);
+      W_L(");");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -1146,6 +1228,8 @@ s_ixhtml10_start_a_tag(void *pdoc, Node *node)
   request_rec *r;
   Attr        *attr;
   char        *attr_style = NULL;
+  char        *attr_id    = NULL;
+  char        *attr_lcs   = NULL;
 
   ixhtml10 = GET_IXHTML10(pdoc);
   doc   = ixhtml10->doc;
@@ -1160,13 +1244,14 @@ s_ixhtml10_start_a_tag(void *pdoc, Node *node)
        attr = qs_get_next_attr(doc,attr)) {
     char *name  = qs_get_attr_name(doc,attr);
     char *value = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('i','I',"id",name)){
+      attr_id = apr_pstrdup(doc->buf.pool, value);
+    }
     if (STRCASEEQ('n','N',"name",name)) {
       /*----------------------------------------------------------------------*/
       /* CHTML1.0                                                             */
       /*----------------------------------------------------------------------*/
-      W_L(" name=\"");
-      W_V(value);
-      W_L("\"");
+      attr_id = apr_pstrdup(doc->buf.pool, value);
     }
     else if (STRCASEEQ('h','H',"href",name)) {
       /*----------------------------------------------------------------------*/
@@ -1207,7 +1292,7 @@ s_ixhtml10_start_a_tag(void *pdoc, Node *node)
       /* CHTML 3.0                                                            */
       /* It is special only for CHTML.                                        */
       /*----------------------------------------------------------------------*/
-      W_L(" utn ");
+      W_L(" utn=\"utn\"");
     }
     else if (STRCASEEQ('t','T',"telbook",name)) {
       /*----------------------------------------------------------------------*/
@@ -1257,11 +1342,24 @@ s_ixhtml10_start_a_tag(void *pdoc, Node *node)
       /*----------------------------------------------------------------------*/
       attr_style = value;
     }
+    if (STRCASEEQ('l','L',"lcs",name)) {
+      attr_lcs = "lcs";
+    }
+  }
+  if(attr_id){
+    W_L(" id=\"");
+    W_V(attr_id);
+    W_L("\"");
+  }
+  
+  if(attr_lcs){
+    W_L(" lcs");
   }
+  
   W_L(">");
 
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
   }
 
   return ixhtml10->out;
@@ -1337,7 +1435,7 @@ s_ixhtml10_start_br_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *clear_prop = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
@@ -1352,8 +1450,9 @@ s_ixhtml10_start_br_tag(void *pdoc, Node *node)
       }
     }
   }
-  W_L("<br");
-  if (attr_clear) {
+  
+  if(attr_clear){
+    W_L("<div");
     W_L(" style=\"");
     W_L("clear:");
     if (STRCASEEQ('a','A',"all",attr_clear)) {
@@ -1364,8 +1463,12 @@ s_ixhtml10_start_br_tag(void *pdoc, Node *node)
     }
     W_L(";");
     W_L("\"");
+    W_L("></div>");
+  }
+  else{
+    W_L("<br");
+    W_L(" />");
   }
-  W_L(" />");
   return ixhtml10->out;
 }
 
@@ -1387,6 +1490,195 @@ s_ixhtml10_end_br_tag(void *pdoc, Node *UNUSED(child))
 
 
 /**
+ * It is a handler who processes the TABLE tag.
+ *
+ * @param pdoc  [i/o] The pointer to the IXHTML10 structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TR tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_ixhtml10_start_table_tag(void *pdoc, Node *node)
+{
+  ixhtml10_t      *ixhtml10;
+  Doc          *doc;
+  request_rec  *r;
+  Attr         *attr;
+  
+  ixhtml10 = GET_IXHTML10(pdoc);
+  doc   = ixhtml10->doc;
+  r     = doc->r;
+  
+  char         *attr_style  = NULL;
+  char         *attr_align  = NULL;
+  char         *attr_width  = NULL;
+  char         *attr_height = NULL;
+  char         *attr_bgcolor = NULL;
+  char         *attr_border_width  = NULL;
+  char         *attr_border_color  = NULL;
+  
+  /*--------------------------------------------------------------------------*/
+  /* Get Attributes                                                           */
+  /*--------------------------------------------------------------------------*/
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name  = qs_get_attr_name(doc,attr);
+    char *val   = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('a','A',"align",name)) {
+      if (val && (STRCASEEQ('l','L',"left",val) || STRCASEEQ('r','R',"right",val) || STRCASEEQ('c','C',"center",val))) {
+        attr_align = apr_pstrdup(doc->buf.pool, val);
+      }
+    }
+    else if (STRCASEEQ('h','H',"height",name) && val && *val) {
+      attr_height = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('w','W',"width",name) && val && *val) {
+      attr_width = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('s','S',"style",name) && val && *val) {
+      attr_style = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('b','B',"bgcolor",name) && val && *val) {
+      attr_bgcolor = apr_pstrdup(doc->buf.pool, val);
+      attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
+    }
+    else if (STRCASEEQ('b','B',"border",name) && val && *val) {
+      attr_border_width = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('b','B',"bordercolor",name) && val && *val) {
+      attr_border_color = apr_pstrdup(doc->buf.pool, val);
+      attr_border_color = chxj_css_rgb_func_to_value(doc->pool, attr_border_color);
+    }
+  }
+  
+  if (IS_CSS_ON(ixhtml10->entryp)) {
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
+    if (style) {
+      css_property_t *width_prop             = chxj_css_get_property_value(doc, style, "width");
+      css_property_t *height_prop            = chxj_css_get_property_value(doc, style, "height");
+      css_property_t *align_prop             = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *bgcolor_prop           = chxj_css_get_property_value(doc, style, "background-color");
+      css_property_t *border_width_prop      = chxj_css_get_property_value(doc, style, "border-width");
+      css_property_t *border_color_prop      = chxj_css_get_property_value(doc, style, "border-color");
+      
+      css_property_t *cur;
+      for (cur = width_prop->next; cur != width_prop; cur = cur->next) {
+        char *tmp = apr_pstrdup(doc->pool, cur->value);
+        char *tmpp = strstr(tmp, "px");
+        if (tmpp) {
+          size_t len = strlen(tmp) - strlen(tmpp);
+          attr_width = apr_pstrndup(doc->pool, tmp,len);
+        }
+        else{
+          attr_width = apr_pstrdup(doc->pool, tmp);
+        }
+      }
+      for (cur = height_prop->next; cur != height_prop; cur = cur->next) {
+        char *tmp = apr_pstrdup(doc->pool, cur->value);
+        char *tmpp = strstr(tmp, "px");
+        if (tmpp) {
+          size_t len = strlen(tmp) - strlen(tmpp);
+          attr_height = apr_pstrndup(doc->pool, tmp,len);
+        }
+        else{
+          attr_height = apr_pstrdup(doc->pool, tmp);
+        }
+      }
+      for (cur = align_prop->next; cur != align_prop; cur = cur->next) {
+        if (cur->value && (STRCASEEQ('l','L',"left",cur->value) || STRCASEEQ('r','R',"right",cur->value) || STRCASEEQ('c','C',"center",cur->value))) {
+          attr_align = apr_pstrdup(doc->buf.pool, cur->value);
+        }
+      }
+      for (cur = bgcolor_prop->next; cur != bgcolor_prop; cur = cur->next) {
+        attr_bgcolor = apr_pstrdup(doc->pool, cur->value);
+        attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
+      }
+      for (cur = border_width_prop->next; cur != border_width_prop; cur = cur->next) {
+        char *tmp = apr_pstrdup(doc->pool, cur->value);
+        char *tmpp = strstr(tmp, "px");
+        if (tmpp) {
+          size_t len = strlen(tmp) - strlen(tmpp);
+          attr_border_width = apr_pstrndup(doc->pool, tmp,len);
+        }
+        else{
+          attr_border_width = apr_pstrdup(doc->pool, tmp);
+        }
+      }
+      for (cur = border_color_prop->next; cur != border_color_prop; cur = cur->next) {
+        attr_border_color = apr_pstrdup(doc->pool, cur->value);
+        attr_border_color = chxj_css_rgb_func_to_value(doc->pool, attr_border_color);
+      }
+    }
+  }
+
+  W_L("<table");
+  if (attr_align){
+    W_L(" align=\"");
+    W_V(attr_align);
+    W_L("\"");
+  }
+  if (attr_height){
+    W_L(" height=\"");
+    W_V(attr_height);
+    W_L("\"");
+  }
+  if (attr_width){
+    W_L(" width=\"");
+    W_V(attr_width);
+    W_L("\"");
+  }
+  if (attr_border_width){
+    W_L(" border=\"");
+    W_V(attr_border_width);
+    W_L("\"");
+  }
+  if (attr_border_color && *attr_border_color){
+    W_L(" bordercolor=\"");
+    W_V(attr_border_color);
+    W_L("\"");
+  }
+  if (attr_bgcolor && *attr_bgcolor){
+    W_L(" bgcolor=\"");
+    W_V(attr_bgcolor);
+    W_L("\"");
+  }
+  W_L(">");
+  
+  return ixhtml10->out;
+}
+
+
+/**
+ * It is a handler who processes the TABLE tag.
+ *
+ * @param pdoc  [i/o] The pointer to the IXHTML10 structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TR tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_ixhtml10_end_table_tag(void *pdoc, Node *UNUSED(child))
+{
+  ixhtml10_t      *ixhtml10;
+  Doc          *doc;
+  request_rec  *r;
+
+  ixhtml10 = GET_IXHTML10(pdoc);
+  doc   = ixhtml10->doc;
+  r     = doc->r;
+  
+  W_L("</table>");
+  
+  if (IS_CSS_ON(ixhtml10->entryp)) {
+    chxj_css_pop_prop_list(ixhtml10->css_prop_stack);
+  }
+  
+  return ixhtml10->out;
+}
+
+
+/**
  * It is a handler who processes the TR tag.
  *
  * @param pdoc  [i/o] The pointer to the IXHTML10 structure at the output
@@ -1395,17 +1687,91 @@ s_ixhtml10_end_br_tag(void *pdoc, Node *UNUSED(child))
  * @return The conversion result is returned.
  */
 static char *
-s_ixhtml10_start_tr_tag(void *pdoc, Node *UNUSED(node))
+s_ixhtml10_start_tr_tag(void *pdoc, Node *node)
 {
   ixhtml10_t      *ixhtml10;
   Doc          *doc;
   request_rec  *r;
+  Attr         *attr;
 
   ixhtml10 = GET_IXHTML10(pdoc);
   doc   = ixhtml10->doc;
   r     = doc->r;
+  
+  char         *attr_style  = NULL;
+  char         *attr_align  = NULL;
+  char         *attr_valign = NULL;
+  char         *attr_bgcolor = NULL;
+  
+  /*--------------------------------------------------------------------------*/
+  /* Get Attributes                                                           */
+  /*--------------------------------------------------------------------------*/
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name  = qs_get_attr_name(doc,attr);
+    char *val   = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('a','A',"align",name)) {
+      if (val && (STRCASEEQ('l','L',"left",val) || STRCASEEQ('r','R',"right",val) || STRCASEEQ('c','C',"center",val))) {
+        attr_align = apr_pstrdup(doc->buf.pool, val);
+      }
+    }
+    else if (STRCASEEQ('v','V',"valign",name) && val && *val) {
+      if (val && (STRCASEEQ('t','T',"top",val) || STRCASEEQ('m','M',"middle",val) || STRCASEEQ('b','B',"bottom",val))) {
+        attr_valign = apr_pstrdup(doc->buf.pool, val);
+      }
+    }
+    else if (STRCASEEQ('s','S',"style",name) && val && *val) {
+      attr_style = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('b','B',"bgcolor",name) && val && *val) {
+      attr_bgcolor = apr_pstrdup(doc->buf.pool, val);
+      attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
+    }
+  }
+  
+  if (IS_CSS_ON(ixhtml10->entryp)) {
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
+    if (style) {
+      css_property_t *align_prop             = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *valign_prop            = chxj_css_get_property_value(doc, style, "vertical-align");
+      css_property_t *bgcolor_prop           = chxj_css_get_property_value(doc, style, "background-color");
+      
+      css_property_t *cur;
+      for (cur = align_prop->next; cur != align_prop; cur = cur->next) {
+        if (cur->value && (STRCASEEQ('l','L',"left",cur->value) || STRCASEEQ('r','R',"right",cur->value) || STRCASEEQ('c','C',"center",cur->value))) {
+          attr_align = apr_pstrdup(doc->buf.pool, cur->value);
+        }
+      }
+      for (cur = valign_prop->next; cur != valign_prop; cur = cur->next) {
+        if (cur->value && (STRCASEEQ('t','T',"top",cur->value) || STRCASEEQ('m','M',"middle",cur->value) || STRCASEEQ('b','B',"bottom",cur->value))) {
+          attr_valign = apr_pstrdup(doc->buf.pool, cur->value);
+        }
+      }
+      for (cur = bgcolor_prop->next; cur != bgcolor_prop; cur = cur->next) {
+        attr_bgcolor = apr_pstrdup(doc->pool, cur->value);
+        attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
+      }
+    }
+  }
 
-  W_L("<br />");
+  W_L("<tr");
+  if (attr_align){
+    W_L(" align=\"");
+    W_V(attr_align);
+    W_L("\"");
+  }
+  if (attr_valign){
+    W_L(" valign=\"");
+    W_V(attr_valign);
+    W_L("\"");
+  }
+  if (attr_bgcolor && *attr_bgcolor){
+    W_L(" bgcolor=\"");
+    W_V(attr_bgcolor);
+    W_L("\"");
+  }
+  W_L(">");
   return ixhtml10->out;
 }
 
@@ -1421,12 +1787,265 @@ s_ixhtml10_start_tr_tag(void *pdoc, Node *UNUSED(node))
 static char *
 s_ixhtml10_end_tr_tag(void *pdoc, Node *UNUSED(child))
 {
-  ixhtml10_t *ixhtml10 = GET_IXHTML10(pdoc);
+  ixhtml10_t      *ixhtml10;
+  Doc          *doc;
+  request_rec  *r;
+
+  ixhtml10 = GET_IXHTML10(pdoc);
+  doc   = ixhtml10->doc;
+  r     = doc->r;
+  
+  W_L("</tr>");
+  return ixhtml10->out;
+}
+
+/**
+ * It is a handler who processes the TABLE tag.
+ *
+ * @param pdoc  [i/o] The pointer to the IXHTML10 structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TR tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_ixhtml10_start_td_or_th_tag(void *pdoc, Node *node,char *tagName)
+{
+  ixhtml10_t      *ixhtml10;
+  Doc          *doc;
+  request_rec  *r;
+  Attr         *attr;
+
+  ixhtml10 = GET_IXHTML10(pdoc);
+  doc   = ixhtml10->doc;
+  r     = doc->r;
+  
+  char         *attr_style  = NULL;
+  char         *attr_align  = NULL;
+  char         *attr_valign = NULL;
+  char         *attr_bgcolor = NULL;
+  char         *attr_colspan = NULL;
+  char         *attr_rowspan = NULL;
+  char         *attr_width   = NULL;
+  char         *attr_height  = NULL;
+  
+  /*--------------------------------------------------------------------------*/
+  /* Get Attributes                                                           */
+  /*--------------------------------------------------------------------------*/
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name  = qs_get_attr_name(doc,attr);
+    char *val   = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('a','A',"align",name)) {
+      if (val && (STRCASEEQ('l','L',"left",val) || STRCASEEQ('r','R',"right",val) || STRCASEEQ('c','C',"center",val))) {
+        attr_align = apr_pstrdup(doc->buf.pool, val);
+      }
+    }
+    else if (STRCASEEQ('v','V',"valign",name) && val && *val) {
+      if (val && (STRCASEEQ('t','T',"top",val) || STRCASEEQ('m','M',"middle",val) || STRCASEEQ('b','B',"bottom",val))) {
+        attr_valign = apr_pstrdup(doc->buf.pool, val);
+      }
+    }
+    else if (STRCASEEQ('s','S',"style",name) && val && *val) {
+      attr_style = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('b','B',"bgcolor",name) && val && *val) {
+      attr_bgcolor = apr_pstrdup(doc->buf.pool, val);
+      attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
+    }
+    else if (STRCASEEQ('c','C',"colspan",name) && val && *val) {
+      attr_colspan = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('r','R',"rowspan",name) && val && *val) {
+      attr_rowspan = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('w','W',"width",name) && val && *val) {
+      attr_width = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('h','H',"height",name) && val && *val) {
+      attr_height = apr_pstrdup(doc->buf.pool, val);
+    }
+  }
+  
+  if (IS_CSS_ON(ixhtml10->entryp)) {
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
+    if (style) {
+      css_property_t *align_prop             = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *valign_prop            = chxj_css_get_property_value(doc, style, "vertical-align");
+      css_property_t *bgcolor_prop           = chxj_css_get_property_value(doc, style, "background-color");
+      css_property_t *width_prop             = chxj_css_get_property_value(doc, style, "width");
+      css_property_t *height_prop            = chxj_css_get_property_value(doc, style, "height");
+      
+      css_property_t *cur;
+      for (cur = align_prop->next; cur != align_prop; cur = cur->next) {
+        if (cur->value && (STRCASEEQ('l','L',"left",cur->value) || STRCASEEQ('r','R',"right",cur->value) || STRCASEEQ('c','C',"center",cur->value))) {
+          attr_align = apr_pstrdup(doc->buf.pool, cur->value);
+        }
+      }
+      for (cur = valign_prop->next; cur != valign_prop; cur = cur->next) {
+        if (cur->value && (STRCASEEQ('t','T',"top",cur->value) || STRCASEEQ('m','M',"middle",cur->value) || STRCASEEQ('b','B',"bottom",cur->value))) {
+          attr_valign = apr_pstrdup(doc->buf.pool, cur->value);
+        }
+      }
+      for (cur = bgcolor_prop->next; cur != bgcolor_prop; cur = cur->next) {
+        attr_bgcolor = apr_pstrdup(doc->pool, cur->value);
+        attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
+      }
+      for (cur = width_prop->next; cur != width_prop; cur = cur->next) {
+        char *tmp = apr_pstrdup(doc->pool, cur->value);
+        char *tmpp = strstr(tmp, "px");
+        if (tmpp) {
+          size_t len = strlen(tmp) - strlen(tmpp);
+          attr_width = apr_pstrndup(doc->pool, tmp,len);
+        }
+        else {
+          tmpp = strstr(tmp, "%");
+          if (tmpp) {
+            attr_width = apr_pstrdup(doc->pool, tmp);
+          }
+        }
+      }
+      for (cur = height_prop->next; cur != height_prop; cur = cur->next) {
+        char *tmp = apr_pstrdup(doc->pool, cur->value);
+        char *tmpp = strstr(tmp, "px");
+        if (tmpp) {
+          size_t len = strlen(tmp) - strlen(tmpp);
+          attr_height = apr_pstrndup(doc->pool, tmp,len);
+        }
+        else {
+          tmpp = strstr(tmp, "%");
+          if (tmpp) {
+            attr_height = apr_pstrdup(doc->pool, tmp);
+          }
+        }
+      }
+    }
+  }
+
+  W_L("<");
+  W_V(tagName);
+  if (attr_align){
+    W_L(" align=\"");
+    W_V(attr_align);
+    W_L("\"");
+  }
+  if (attr_valign){
+    W_L(" valign=\"");
+    W_V(attr_valign);
+    W_L("\"");
+  }
+  if (attr_colspan){
+    W_L(" colspan=\"");
+    W_V(attr_colspan);
+    W_L("\"");
+  }
+  if (attr_rowspan){
+    W_L(" rowspan=\"");
+    W_V(attr_rowspan);
+    W_L("\"");
+  }
+  if (attr_bgcolor && *attr_bgcolor){
+    W_L(" bgcolor=\"");
+    W_V(attr_bgcolor);
+    W_L("\"");
+  }
+  if (attr_width){
+    W_L(" width=\"");
+    W_V(attr_width);
+    W_L("\"");
+  }
+  if (attr_height){
+    W_L(" height=\"");
+    W_V(attr_height);
+    W_L("\"");
+  }
+  W_L(">");
   return ixhtml10->out;
 }
 
 
 /**
+ * It is a handler who processes the TABLE tag.
+ *
+ * @param pdoc  [i/o] The pointer to the IXHTML10 structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TR tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_ixhtml10_end_td_or_th_tag(void *pdoc, Node *UNUSED(child),char *tagName)
+{
+  ixhtml10_t      *ixhtml10;
+  Doc          *doc;
+  request_rec  *r;
+
+  ixhtml10 = GET_IXHTML10(pdoc);
+  doc   = ixhtml10->doc;
+  r     = doc->r;
+  
+  W_L("</");
+  W_V(tagName);
+  W_L(">");
+  return ixhtml10->out;
+}
+
+/**
+ * It is a handler who processes the TABLE tag.
+ *
+ * @param pdoc  [i/o] The pointer to the IXHTML10 structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TR tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_ixhtml10_start_td_tag(void *pdoc, Node *node)
+{
+  return s_ixhtml10_start_td_or_th_tag(pdoc,node,"td");
+}
+/**
+ * It is a handler who processes the TABLE tag.
+ *
+ * @param pdoc  [i/o] The pointer to the IXHTML10 structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TR tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_ixhtml10_end_td_tag(void *pdoc, Node *node)
+{
+  return s_ixhtml10_end_td_or_th_tag(pdoc,node,"td");
+}
+
+/**
+ * It is a handler who processes the TABLE tag.
+ *
+ * @param pdoc  [i/o] The pointer to the IXHTML10 structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TR tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_ixhtml10_start_th_tag(void *pdoc, Node *node)
+{
+  return s_ixhtml10_start_td_or_th_tag(pdoc,node,"th");
+}
+/**
+ * It is a handler who processes the TABLE tag.
+ *
+ * @param pdoc  [i/o] The pointer to the IXHTML10 structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TR tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_ixhtml10_end_th_tag(void *pdoc, Node *node)
+{
+  return s_ixhtml10_end_td_or_th_tag(pdoc,node,"th");
+}
+
+
+
+/**
  * It is a handler who processes the FONT tag.
  *
  * @param pdoc  [i/o] The pointer to the IXHTML10 structure at the output
@@ -1501,7 +2120,7 @@ s_ixhtml10_start_font_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop  = chxj_css_get_property_value(doc, style, "font-size");
@@ -1630,6 +2249,7 @@ s_ixhtml10_start_form_tag(void *pdoc, Node *node)
   char        *attr_align  = NULL;
   char        *attr_name   = NULL;
   char        *new_hidden_tag = NULL;
+  char        *css_clear  = NULL;
 
   ixhtml10 = GET_IXHTML10(pdoc);
   doc      = ixhtml10->doc;
@@ -1686,10 +2306,11 @@ s_ixhtml10_start_form_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *text_align_prop = chxj_css_get_property_value(doc, style, "text-align");
       css_property_t *color_prop      = chxj_css_get_property_value(doc, style, "color");
+      css_property_t *clear_prop      = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = text_align_prop->next; cur != text_align_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -1705,6 +2326,9 @@ s_ixhtml10_start_form_tag(void *pdoc, Node *node)
       for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
         attr_color = apr_pstrdup(doc->pool, cur->value);
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
 
@@ -1741,6 +2365,14 @@ s_ixhtml10_start_form_tag(void *pdoc, Node *node)
     W_V(attr_name);
     W_L("\"");
   }
+  
+  if (css_clear) {
+    W_L(" style=\"");
+    W_L("clear:");
+    W_V(css_clear);
+    W_L("\"");
+  }
+  
   W_L(">");
 
   ixhtml10_flags_t *flg = (ixhtml10_flags_t *)apr_palloc(doc->pool, sizeof(ixhtml10_flags_t));
@@ -1758,6 +2390,8 @@ s_ixhtml10_start_form_tag(void *pdoc, Node *node)
       W_V(attr_align);
       W_L(";");
     }
+    
+    
     flg->with_div_flag = 1;
     W_L("\">");
   }
@@ -1910,9 +2544,11 @@ s_ixhtml10_start_input_tag(void *pdoc, Node *node)
     W_L("\"");
   }
   if (attr_value) {
-    if (STRCASEEQ('s','S',"submit",attr_type) || STRCASEEQ('r','R',"reset",attr_type)) {
-      apr_size_t value_len = strlen(attr_value);
-      attr_value = chxj_conv_z2h(r, attr_value, &value_len, chtml20->entryp);
+    if (attr_type){
+      if (STRCASEEQ('s','S',"submit",attr_type) || STRCASEEQ('r','R',"reset",attr_type)) {
+        apr_size_t value_len = strlen(attr_value);
+        attr_value = chxj_conv_z2h(r, attr_value, &value_len, ixhtml10->entryp);
+      }
     }
 
     W_L(" value=\"");
@@ -2114,7 +2750,7 @@ s_ixhtml10_start_center_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop      = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop       = chxj_css_get_property_value(doc, style, "font-size");
@@ -2232,7 +2868,7 @@ s_ixhtml10_start_li_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "list-style-type");
       css_property_t *cur;
@@ -2323,6 +2959,7 @@ s_ixhtml10_start_ol_tag(void *pdoc, Node *node)
   char        *attr_style = NULL;
   char        *attr_start = NULL;
   char        *attr_type  = NULL;
+  char        *css_clear  = NULL;
 
   ixhtml10 = GET_IXHTML10(pdoc);
   doc   = ixhtml10->doc;
@@ -2355,9 +2992,10 @@ s_ixhtml10_start_ol_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "list-style-type");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('d','D',"decimal", cur->value)) {
@@ -2370,14 +3008,24 @@ s_ixhtml10_start_ol_tag(void *pdoc, Node *node)
           attr_type = apr_pstrdup(doc->pool, "lower-alpha");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
   W_L("<ol");
-  if (attr_type) {
+  if (attr_type || css_clear) {
     W_L(" style=\"");
-    W_L("list-style-type:");
-    W_V(attr_type);
-    W_L(";");
+    if (attr_type) {
+      W_L("list-style-type:");
+      W_V(attr_type);
+      W_L(";");
+    }
+    if (css_clear) {
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   if (attr_start) {
@@ -2437,6 +3085,7 @@ s_ixhtml10_start_p_tag(void *pdoc, Node *node)
   char        *attr_style = NULL;
   char        *attr_color = NULL;
   char        *attr_blink = NULL;
+  char        *css_clear  = NULL;
 
   ixhtml10 = GET_IXHTML10(pdoc);
   doc   = ixhtml10->doc;
@@ -2461,11 +3110,13 @@ s_ixhtml10_start_p_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *text_align_prop = chxj_css_get_property_value(doc, style, "text-align");
       css_property_t *color_prop      = chxj_css_get_property_value(doc, style, "color");
       css_property_t *text_deco_prop  = chxj_css_get_property_value(doc, style, "text-decoration");
+      css_property_t *clear_prop      = chxj_css_get_property_value(doc, style, "clear");
+      
       css_property_t *cur;
       for (cur = text_align_prop->next; cur != text_align_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left",cur->value)) {
@@ -2488,10 +3139,13 @@ s_ixhtml10_start_p_tag(void *pdoc, Node *node)
           attr_blink = apr_pstrdup(doc->pool, cur->value);
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
   W_L("<p");
-  if ((attr_align && *attr_align) || (attr_color && *attr_color) || (attr_blink && *attr_blink)) {
+  if ((attr_align && *attr_align) || (attr_color && *attr_color) || (attr_blink && *attr_blink) || css_clear) {
     W_L(" style=\"");
     if (attr_align) {
       W_L("text-align:");
@@ -2509,6 +3163,11 @@ s_ixhtml10_start_p_tag(void *pdoc, Node *node)
       W_V(attr_blink);
       W_L(";");
     }
+    if (css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -2553,6 +3212,7 @@ s_ixhtml10_start_pre_tag(void *pdoc, Node *node)
   Doc       *doc   = ixhtml10->doc;
   Attr      *attr;
   char      *attr_style = NULL;
+  char      *css_clear  = NULL;
 
   for (attr = qs_get_attr(doc,node);
        attr;
@@ -2565,11 +3225,27 @@ s_ixhtml10_start_pre_tag(void *pdoc, Node *node)
   }
 
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
+    if (style) {
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
+      
+      css_property_t *cur;
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
+    }
   }
 
   ixhtml10->pre_flag++;
-  W_L("<pre>");
+  W_L("<pre");
+  if (css_clear) {
+    W_L(" style=\"");
+    W_L("clear:");
+    W_V(css_clear);
+    W_L(";");
+    W_L("\"");
+  }
+  W_L(">");
   return ixhtml10->out;
 }
 
@@ -2614,6 +3290,8 @@ s_ixhtml10_start_ul_tag(void *pdoc, Node *node)
   Attr     *attr;
   char     *attr_type = NULL;
   char     *attr_style = NULL;
+  char     *css_clear  = NULL;
+  
   /*--------------------------------------------------------------------------*/
   /* Get Attributes                                                           */
   /*--------------------------------------------------------------------------*/
@@ -2632,9 +3310,10 @@ s_ixhtml10_start_ul_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "list-style-type");
+      css_property_t *clear_prop      = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('d','D',"disc",cur->value)) {
@@ -2647,14 +3326,24 @@ s_ixhtml10_start_ul_tag(void *pdoc, Node *node)
           attr_type = apr_pstrdup(doc->pool, "square");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
   W_L("<ul");
-  if (attr_type) {
+  if (attr_type || css_clear) {
     W_L(" style=\"");
-    W_L("list-style-type:");
-    W_V(attr_type);
-    W_L(";");
+    if (attr_type) {
+      W_L("list-style-type:");
+      W_V(attr_type);
+      W_L(";");
+    }
+    if (css_clear) {
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -2706,6 +3395,7 @@ s_ixhtml10_start_hr_tag(void *pdoc, Node *node)
   char        *attr_style   = NULL;
   char        *attr_color   = NULL;
   char        *attr_bgcolor = NULL;
+  char        *css_clear    = NULL;
 
   ixhtml10   = GET_IXHTML10(pdoc);
   doc     = ixhtml10->doc;
@@ -2791,6 +3481,8 @@ s_ixhtml10_start_hr_tag(void *pdoc, Node *node)
       css_property_t *width_prop        = chxj_css_get_property_value(doc, style, "width");
       css_property_t *color_prop        = chxj_css_get_property_value(doc, style, "border-color");
       css_property_t *bgcolor_prop      = chxj_css_get_property_value(doc, style, "background-color");
+      css_property_t *float_prop        = chxj_css_get_property_value(doc, style, "float");
+      css_property_t *clear_prop        = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = border_style_prop->next; cur != border_style_prop; cur = cur->next) {
         if (STRCASEEQ('s','S',"solid",cur->value)) {
@@ -2804,11 +3496,7 @@ s_ixhtml10_start_hr_tag(void *pdoc, Node *node)
         attr_bgcolor = apr_pstrdup(doc->pool, cur->value);
       }
       for (cur = height_prop->next; cur != height_prop; cur = cur->next) {
-        char *tmp = apr_pstrdup(doc->pool, cur->value);
-        char *tmpp = strstr(tmp, "px");
-        if (tmpp) {
-          attr_size = apr_pstrdup(doc->pool, tmp);
-        }
+        attr_size = apr_pstrdup(doc->pool, cur->value);
       }
       for (cur = width_prop->next; cur != width_prop; cur = cur->next) {
         char *tmp = apr_pstrdup(doc->pool, cur->value);
@@ -2823,10 +3511,21 @@ s_ixhtml10_start_hr_tag(void *pdoc, Node *node)
           }
         }
       }
+      if(!attr_align){
+        for (cur = float_prop->next; cur != float_prop; cur = cur->next) {
+          char *tmp = apr_pstrdup(doc->pool, cur->value);
+          if(tmp){
+            attr_align = apr_pstrdup(doc->pool,tmp);
+          }
+        }
+      }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
   W_L("<hr");
-  if (attr_align || attr_size || attr_width || attr_noshade || attr_color) {
+  if (attr_align || attr_size || attr_width || attr_noshade || attr_color || attr_bgcolor || css_clear) {
     W_L(" style=\"");
     if (attr_align) {
       W_L("float:");
@@ -2841,7 +3540,7 @@ s_ixhtml10_start_hr_tag(void *pdoc, Node *node)
     if (attr_size) {
       W_L("height:");
       W_V(attr_size);
-      if (!strstr(attr_size, "px")) {
+      if (chxj_chk_numeric(attr_size) == 0) {
         W_L("px");
       }
       W_L(";");
@@ -2867,6 +3566,11 @@ s_ixhtml10_start_hr_tag(void *pdoc, Node *node)
       W_V(attr_bgcolor);
       W_L(";");
     }
+    if (css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(" />");
@@ -2914,6 +3618,15 @@ s_ixhtml10_start_img_tag(void *pdoc, Node *node)
   char        *attr_style  = NULL;
   char        *attr_hspace = NULL;
   char        *attr_vspace = NULL;
+  
+  char        *css_float          = NULL;
+  char        *css_margin_left    = NULL;
+  char        *css_margin_right   = NULL;
+  char        *css_margin_top     = NULL;
+  char        *css_margin_bottom  = NULL;
+  char        *css_display        = NULL;
+  char        *css_valign         = NULL;
+  
 #ifndef IMG_NOT_CONVERT_FILENAME
   device_table  *spec = ixhtml10->spec;
 #endif
@@ -2934,12 +3647,14 @@ s_ixhtml10_start_img_tag(void *pdoc, Node *node)
       value = chxj_encoding_parameter(r, value, 1);
       value = chxj_add_cookie_parameter(r, value, ixhtml10->cookie);
       value = chxj_add_cookie_no_update_parameter(r, value);
+      value = chxj_img_rewrite_parameter(r,ixhtml10->conf,value);
       attr_src = value;
 #else
       value = chxj_img_conv(r, spec, value);
       value = chxj_encoding_parameter(r, value, 1);
       value = chxj_add_cookie_parameter(r, value, ixhtml10->cookie);
       value = chxj_add_cookie_no_update_parameter(r, value);
+      value = chxj_img_rewrite_parameter(r,ixhtml10->conf,value);
       attr_src = value;
 #endif
     }
@@ -3008,6 +3723,8 @@ s_ixhtml10_start_img_tag(void *pdoc, Node *node)
       css_property_t *margin_right_prop  = chxj_css_get_property_value(doc, style, "margin-right");
       css_property_t *margin_top_prop    = chxj_css_get_property_value(doc, style, "margin-top");
       css_property_t *margin_bottom_prop = chxj_css_get_property_value(doc, style, "margin-bottom");
+      
+      
       css_property_t *cur;
       for (cur = height_prop->next; cur != height_prop; cur = cur->next) {
         attr_height = apr_pstrdup(doc->pool, cur->value);
@@ -3016,52 +3733,88 @@ s_ixhtml10_start_img_tag(void *pdoc, Node *node)
         attr_width = apr_pstrdup(doc->pool, cur->value);
       }
       for (cur = valign_prop->next; cur != valign_prop; cur = cur->next) {
-        attr_align = apr_pstrdup(doc->pool, cur->value);
-      }
-      for (cur = margin_left_prop->next; cur != margin_left_prop; cur = cur->next) {
-        attr_hspace = apr_pstrdup(doc->pool, cur->value);
+        css_valign = apr_pstrdup(doc->pool, cur->value);
       }
+      
       if (! attr_hspace) {
+        for (cur = margin_left_prop->next; cur != margin_left_prop; cur = cur->next) {
+          css_margin_left   = apr_pstrdup(doc->pool, cur->value);
+        }
         for (cur = margin_right_prop->next; cur != margin_right_prop; cur = cur->next) {
-          attr_hspace = apr_pstrdup(doc->pool, cur->value);
+          css_margin_right  = apr_pstrdup(doc->pool, cur->value);
         }
       }
-      for (cur = margin_top_prop->next; cur != margin_top_prop; cur = cur->next) {
-        attr_vspace = apr_pstrdup(doc->pool, cur->value);
-      }
+      
       if (! attr_vspace) {
+        for (cur = margin_top_prop->next; cur != margin_top_prop; cur = cur->next) {
+          css_margin_top = apr_pstrdup(doc->pool, cur->value);
+        }
         for (cur = margin_bottom_prop->next; cur != margin_bottom_prop; cur = cur->next) {
-          attr_vspace = apr_pstrdup(doc->pool, cur->value);
+          css_margin_bottom = apr_pstrdup(doc->pool, cur->value);
+        }
+      }
+      
+      css_property_t *float_prop = chxj_css_get_property_value(doc, style, "float");
+      for (cur = float_prop->next; cur != float_prop; cur = cur->next) {
+        css_float = apr_pstrdup(doc->pool, cur->value);
+      }
+      css_property_t *display_prop       = chxj_css_get_property_value(doc, style, "display");
+      for (cur = display_prop->next; cur != display_prop; cur = cur->next) {
+        char *tmp = apr_pstrdup(doc->pool, cur->value);
+        char *tmpp = strstr(tmp, "none");
+        if(tmpp){
+          css_display = apr_pstrdup(doc->pool, tmp);
         }
       }
     }
   }
+  
+  if(!css_display){
 
   W_L("<img");
   if (attr_src) {
     W_L(" src=\"");
     W_V(attr_src);
+    DBG(r,"mode is %d -> %s",ixhtml10->conf->image_rewrite_mode, attr_src);
     W_L("\"");
   }
-  if (attr_align || attr_hspace || attr_vspace) {
+  if (attr_align || attr_hspace || attr_vspace || css_float || css_margin_left || css_margin_right || css_margin_top || css_margin_bottom || css_valign ) {
     W_L(" style=\"");
     if (attr_align) {
       if (STRCASEEQ('t','T',"top", attr_align)) {
+        css_valign = NULL;
         W_L("vertical-align:top;");
       }
       else if (STRCASEEQ('m','M',"middle", attr_align) || STRCASEEQ('c','C',"center",attr_align)) {
+        css_valign = NULL;
         W_L("vertical-align:middle;");
       }
       else if (STRCASEEQ('b','B',"bottom", attr_align)) {
+        css_valign = NULL;
         W_L("vertical-align:bottom;");
       }
       else if (STRCASEEQ('l','L',"left", attr_align)) {
+        css_float = NULL;
         W_L("float:left;");
       }
       else if (STRCASEEQ('r','R',"right", attr_align)) {
+        css_float = NULL;
         W_L("float:right;");
       }
+   }
+   
+   
+    if(css_float){
+      W_L("float:");
+      W_V(css_float);
+      W_L(";");
+    }
+    if(css_valign){
+      W_L("vertical-align:");
+      W_V(css_valign);
+      W_L(";");
     }
+    
     if (attr_hspace) {
       W_L("margin-left:");
       W_V(attr_hspace);
@@ -3070,6 +3823,18 @@ s_ixhtml10_start_img_tag(void *pdoc, Node *node)
       W_V(attr_hspace);
       W_L(";");
     }
+    else{
+      if(css_margin_left){
+        W_L("margin-left:");
+        W_V(css_margin_left);
+        W_L(";");
+      }
+      if(css_margin_right){
+        W_L("margin-right:");
+        W_V(css_margin_right);
+        W_L(";");
+      }
+    }
     if (attr_vspace) {
       W_L("margin-top:");
       W_V(attr_vspace);
@@ -3078,6 +3843,18 @@ s_ixhtml10_start_img_tag(void *pdoc, Node *node)
       W_V(attr_vspace);
       W_L(";");
     }
+    else{
+      if(css_margin_top){
+        W_L("margin-top:");
+        W_V(css_margin_top);
+        W_L(";");
+      }
+      if(css_margin_bottom){
+        W_L("margin-bottom:");
+        W_V(css_margin_bottom);
+        W_L(";");
+      }
+    }
     W_L("\"");
   }
   if (attr_width) {
@@ -3099,6 +3876,7 @@ s_ixhtml10_start_img_tag(void *pdoc, Node *node)
     W_L(" alt=\"\"");
   }
   W_L(" />");
+  }
   return ixhtml10->out;
 }
 
@@ -3180,12 +3958,12 @@ s_ixhtml10_start_select_tag(void *pdoc, Node *node)
     W_L("\"");
   }
   if (multiple) {
-    W_L(" multiple");
+    W_L(" multiple=\"multiple\"");
   }
   W_L(">");
 
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
   }
 
   return ixhtml10->out;
@@ -3269,7 +4047,7 @@ s_ixhtml10_start_option_tag(void *pdoc, Node *node)
   W_L(">");
 
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
   }
 
   return ixhtml10->out;
@@ -3324,6 +4102,7 @@ s_ixhtml10_start_div_tag(void *pdoc, Node *node)
   char        *attr_color             = NULL;
   char        *attr_bgcolor           = NULL;
   char        *attr_font_size         = NULL;
+  char        *css_clear              = NULL;
 
   ixhtml10 = GET_IXHTML10(pdoc);
   doc   = ixhtml10->doc;
@@ -3357,6 +4136,7 @@ s_ixhtml10_start_div_tag(void *pdoc, Node *node)
       css_property_t *font_size_prop         = chxj_css_get_property_value(doc, style, "font-size");
       css_property_t *background_color_prop  = chxj_css_get_property_value(doc, style, "background-color");
       css_property_t *background_prop        = chxj_css_get_property_value(doc, style, "background");
+      css_property_t *clear_prop             = chxj_css_get_property_value(doc, style, "clear");
 
       css_property_t *cur;
       for (cur = display_prop->next; cur != display_prop; cur = cur->next) {
@@ -3415,9 +4195,17 @@ s_ixhtml10_start_div_tag(void *pdoc, Node *node)
           }
         }
         for (cur = wap_marquee_loop_prop->next; cur != wap_marquee_loop_prop; cur = cur->next) {
-          attr_wap_marquee_loop = apr_pstrdup(doc->pool, cur->value);
+          if(strcmp(cur->value,"0") == 0 || strcmp(cur->value,"-1") == 0){
+            attr_wap_marquee_loop = "infinite";
+          }
+          else{
+            attr_wap_marquee_loop = apr_pstrdup(doc->pool, cur->value);
+          }
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
   W_L("<div");
@@ -3429,7 +4217,8 @@ s_ixhtml10_start_div_tag(void *pdoc, Node *node)
       || attr_wap_marquee_loop
       || attr_color
       || attr_bgcolor
-      || attr_font_size) {
+      || attr_font_size
+      || css_clear ) {
     W_L(" style=\"");
     if (attr_align) {
       W_L("text-align:");
@@ -3476,6 +4265,11 @@ s_ixhtml10_start_div_tag(void *pdoc, Node *node)
       W_V(attr_font_size);
       W_L(";");
     }
+    if (css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -3757,7 +4551,7 @@ s_ixhtml10_text_tag(void* pdoc, Node* child)
 
   for (ii=0; ii<qs_get_node_size(doc,child); ii++) {
     char* out;
-    int rtn = s_ixhtml10_search_emoji(ixhtml10, &textval[ii], &out);
+    int rtn = s_ixhtml10_search_emoji(ixhtml10, &textval[ii], &out,child);
     if (rtn) {
       tdst = qs_out_apr_pstrcat(r, tdst, out, &tdst_len);
       ii+=(rtn - 1);
@@ -3813,6 +4607,7 @@ s_ixhtml10_start_blockquote_tag(void *pdoc, Node *node)
   char     *attr_style = NULL;
   char     *attr_color = NULL;
   char     *attr_size  = NULL;
+  char     *css_clear  = NULL;
 
   ixhtml10  = GET_IXHTML10(pdoc);
   doc     = ixhtml10->doc;
@@ -3826,10 +4621,12 @@ s_ixhtml10_start_blockquote_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop = chxj_css_get_property_value(doc, style, "color");
       css_property_t *font_size_prop = chxj_css_get_property_value(doc, style, "font-size");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
+      
       css_property_t *cur;
       for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
         if (cur->value && *cur->value) {
@@ -3861,10 +4658,13 @@ s_ixhtml10_start_blockquote_tag(void *pdoc, Node *node)
           }
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
   W_L("<blockquote");
-  if (attr_color || attr_size) {
+  if (attr_color || attr_size || css_clear) {
     W_L(" style=\"");
     if (attr_color) {
       attr_color = chxj_css_rgb_func_to_value(doc->pool, attr_color);
@@ -3877,6 +4677,11 @@ s_ixhtml10_start_blockquote_tag(void *pdoc, Node *node)
       W_V(attr_size);
       W_L(";");
     }
+    if (css_clear) {
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -3938,7 +4743,7 @@ s_ixhtml10_start_dir_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
@@ -4045,6 +4850,8 @@ s_ixhtml10_start_dl_tag(void *pdoc, Node *node)
   char      *attr_style = NULL;
   char      *attr_color = NULL;
   char      *attr_size  = NULL;
+  char      *css_clear  = NULL;
+  
   for (attr = qs_get_attr(doc,node);
        attr;
        attr = qs_get_next_attr(doc,attr)) {
@@ -4055,10 +4862,12 @@ s_ixhtml10_start_dl_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
+      
       css_property_t *cur;
       for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
         if (cur->value && *cur->value) {
@@ -4090,10 +4899,13 @@ s_ixhtml10_start_dl_tag(void *pdoc, Node *node)
           }
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
   W_L("<dl");
-  if (attr_color || attr_size) {
+  if (attr_color || attr_size || css_clear) {
     W_L(" style=\"");
     if (attr_color) {
       attr_color = chxj_css_rgb_func_to_value(doc->pool, attr_color);
@@ -4106,6 +4918,11 @@ s_ixhtml10_start_dl_tag(void *pdoc, Node *node)
       W_V(attr_size);
       W_L(";");
     }
+    if (css_clear) {
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -4161,7 +4978,7 @@ s_ixhtml10_start_dt_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
@@ -4267,7 +5084,7 @@ s_ixhtml10_start_dd_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
@@ -4363,6 +5180,7 @@ s_ixhtml10_start_h1_tag(void *pdoc, Node *node)
   Attr        *attr;
   char        *attr_style = NULL;
   char        *attr_align = NULL;
+  char        *css_clear  = NULL;
 
   ixhtml10 = GET_IXHTML10(pdoc);
   doc    = ixhtml10->doc;
@@ -4383,9 +5201,11 @@ s_ixhtml10_start_h1_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop = chxj_css_get_property_value(doc, style, "clear");
+      
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -4398,14 +5218,34 @@ s_ixhtml10_start_h1_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
   W_L("<h1");
-  if (attr_align) {
+  if (attr_align || css_clear ) {
     W_L(" style=\"");
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";\"");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
+    W_L("\"");
   }
   W_L(">");
 
@@ -4458,6 +5298,7 @@ s_ixhtml10_start_h2_tag(void *pdoc, Node *node)
   Attr        *attr;
   char        *attr_style = NULL;
   char        *attr_align = NULL;
+  char        *css_clear  = NULL;
 
   ixhtml10   = GET_IXHTML10(pdoc);
   doc     = ixhtml10->doc;
@@ -4478,9 +5319,10 @@ s_ixhtml10_start_h2_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -4493,14 +5335,33 @@ s_ixhtml10_start_h2_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
   W_L("<h2");
-  if (attr_align) {
+  if (attr_align || css_clear ) {
     W_L(" style=\"");
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";\"");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
+    W_L("\"");
   }
   W_L(">");
 
@@ -4552,6 +5413,7 @@ s_ixhtml10_start_h3_tag(void *pdoc, Node *node)
   Attr        *attr;
   char        *attr_style = NULL;
   char        *attr_align = NULL;
+  char        *css_clear  = NULL;
 
   ixhtml10   = GET_IXHTML10(pdoc);
   doc     = ixhtml10->doc;
@@ -4572,9 +5434,10 @@ s_ixhtml10_start_h3_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -4587,14 +5450,32 @@ s_ixhtml10_start_h3_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
   W_L("<h3");
-  if (attr_align) {
+  if (attr_align || css_clear ) {
     W_L(" style=\"");
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -4647,6 +5528,7 @@ s_ixhtml10_start_h4_tag(void *pdoc, Node *node)
   Attr        *attr;
   char        *attr_style = NULL;
   char        *attr_align = NULL;
+  char        *css_clear  = NULL;
 
   ixhtml10   = GET_IXHTML10(pdoc);
   doc     = ixhtml10->doc;
@@ -4667,9 +5549,10 @@ s_ixhtml10_start_h4_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -4682,14 +5565,32 @@ s_ixhtml10_start_h4_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
   W_L("<h4");
-  if (attr_align) {
+  if (attr_align || css_clear ) {
     W_L(" style=\"");
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -4743,6 +5644,7 @@ s_ixhtml10_start_h5_tag(void *pdoc, Node *node)
   Attr        *attr;
   char        *attr_style = NULL;
   char        *attr_align = NULL;
+  char        *css_clear  = NULL;
 
   ixhtml10   = GET_IXHTML10(pdoc);
   doc     = ixhtml10->doc;
@@ -4763,9 +5665,10 @@ s_ixhtml10_start_h5_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -4778,14 +5681,32 @@ s_ixhtml10_start_h5_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
   W_L("<h5");
-  if (attr_align) {
+  if (attr_align || css_clear ) {
     W_L(" style=\"");
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -4839,6 +5760,7 @@ s_ixhtml10_start_h6_tag(void *pdoc, Node *node)
   Attr        *attr;
   char        *attr_style = NULL;
   char        *attr_align = NULL;
+  char        *css_clear  = NULL;
 
   ixhtml10   = GET_IXHTML10(pdoc);
   doc     = ixhtml10->doc;
@@ -4859,9 +5781,10 @@ s_ixhtml10_start_h6_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -4874,14 +5797,32 @@ s_ixhtml10_start_h6_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
   W_L("<h6");
-  if (attr_align) {
+  if (attr_align || css_clear ) {
     W_L(" style=\"");
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -4951,7 +5892,7 @@ s_ixhtml10_start_menu_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
@@ -5123,7 +6064,7 @@ s_ixhtml10_start_blink_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
@@ -5255,7 +6196,7 @@ s_ixhtml10_start_marquee_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop  = chxj_css_get_property_value(doc, style, "font-size");
@@ -5292,7 +6233,7 @@ s_ixhtml10_start_marquee_tag(void *pdoc, Node *node)
       }
     }
   }
-  W_L("<span");
+  W_L("<div");
   W_L(" style=\"display:-wap-marquee;");
   if (attr_color || attr_size || attr_direction || attr_bgcolor) {
     if (attr_direction) {
@@ -5338,7 +6279,7 @@ s_ixhtml10_end_marquee_tag(void *pdoc, Node *UNUSED(node))
 {
   ixhtml10_t *ixhtml10 = GET_IXHTML10(pdoc);
   Doc      *doc     = ixhtml10->doc;
-  W_L("</span>");
+  W_L("</div>");
   if (IS_CSS_ON(ixhtml10->entryp)) {
     chxj_css_pop_prop_list(ixhtml10->css_prop_stack);
   }
@@ -5500,6 +6441,7 @@ s_ixhtml10_start_span_tag(void *pdoc, Node *node)
   char *attr_marquee_dir   = NULL;
   char *attr_marquee_style = NULL;
   char *attr_marquee_loop  = NULL;
+  char *css_bgcolor        = NULL;
 
   ixhtml10 = GET_IXHTML10(pdoc);
   doc     = ixhtml10->doc;
@@ -5514,7 +6456,7 @@ s_ixhtml10_start_span_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(ixhtml10->entryp)) {
-    css_prop_list_t *style = s_ixhtml10_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_ixhtml10_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop = chxj_css_get_property_value(doc, style, "font-size");
@@ -5524,6 +6466,8 @@ s_ixhtml10_start_span_tag(void *pdoc, Node *node)
       css_property_t *marquee_dir_prop = chxj_css_get_property_value(doc, style, "-wap-marquee-dir");
       css_property_t *marquee_style_prop = chxj_css_get_property_value(doc, style, "-wap-marquee-style");
       css_property_t *marquee_loop_prop = chxj_css_get_property_value(doc, style, "-wap-marquee-loop");
+      css_property_t *bgcolor_prop = chxj_css_get_property_value(doc, style, "background-color");
+      
       css_property_t *cur;
       for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
         attr_color = apr_pstrdup(doc->pool, cur->value);
@@ -5570,7 +6514,12 @@ s_ixhtml10_start_span_tag(void *pdoc, Node *node)
       }
       for (cur = marquee_loop_prop->next; cur != marquee_loop_prop; cur = cur->next) {
         if (cur->value && *cur->value) {
-          attr_marquee_loop = apr_pstrdup(doc->pool, cur->value);
+          if(strcmp(cur->value,"0") == 0 || strcmp(cur->value,"-1") == 0){
+            attr_marquee_loop = "infinite";
+          }
+          else{
+            attr_marquee_loop = apr_pstrdup(doc->pool, cur->value);
+          }
         }
       }
       for (cur = text_align_prop->next; cur != text_align_prop; cur = cur->next) {
@@ -5584,11 +6533,16 @@ s_ixhtml10_start_span_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = bgcolor_prop->next; cur != bgcolor_prop; cur = cur->next) {
+        if (cur->value && *cur->value) {
+          css_bgcolor = apr_pstrdup(doc->pool, cur->value);
+        }
+      }
     }
   }
 
   W_L("<span");
-  if (attr_color || attr_size || attr_align || attr_blink || attr_marquee) {
+  if (attr_color || attr_size || attr_align || attr_blink || attr_marquee || css_bgcolor) {
     W_L(" style=\"");
     if (attr_color) {
       attr_color = chxj_css_rgb_func_to_value(doc->pool, attr_color);
@@ -5629,6 +6583,11 @@ s_ixhtml10_start_span_tag(void *pdoc, Node *node)
         W_L(";");
       }
     }
+    if(css_bgcolor){
+      W_L("background-color:");
+      W_V(css_bgcolor);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -5651,9 +6610,11 @@ s_ixhtml10_end_span_tag(void *pdoc, Node *UNUSED(node))
   Doc *doc = ixhtml10->doc;
 
   W_L("</span>");
+  /*
   if (IS_CSS_ON(ixhtml10->entryp)) {
     chxj_css_pop_prop_list(ixhtml10->css_prop_stack);
   }
+  */
   return ixhtml10->out;
 }
 
@@ -5799,6 +6760,237 @@ s_ixhtml10_end_small_tag(void *pdoc, Node *UNUSED(node))
   return ixhtml10->out;
 }
 
+/**
+ * It is a handler who processes the OBJECT tag.
+ *
+ * @param pdoc  [i/o] The pointer to the IXHTML10 structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The OBJECT tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_ixhtml10_start_object_tag(void *pdoc, Node *node)
+{
+  ixhtml10_t *ixhtml10 = GET_IXHTML10(pdoc);
+  Doc       *doc = ixhtml10->doc;
+  Attr *attr;
+  char *attr_style         = NULL;
+  char *attr_id            = NULL;
+  char *attr_width         = NULL;
+  char *attr_height        = NULL;
+  char *attr_data          = NULL;
+  char *attr_type          = NULL;
+  char *attr_declare       = NULL;
+  
+  /*--------------------------------------------------------------------------*/
+  /* Get Attributes                                                           */
+  /*--------------------------------------------------------------------------*/
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name   = qs_get_attr_name(doc,attr);
+    char *value  = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('i','I',"id",name)) {
+      attr_id = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('w','W',"width",name)) {
+      attr_width = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('h','H',"height",name)) {
+      attr_height = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('d','D',"data",name)) {
+      attr_data = apr_pstrdup(doc->pool, value);
+    }
+    else if  (STRCASEEQ('t','T',"type",name)) {
+      attr_type = apr_pstrdup(doc->pool, value);
+    }
+    else if  (STRCASEEQ('d','D',"declare",name)) {
+      attr_declare = apr_pstrdup(doc->pool, value);
+    }
+  }
+  W_L("<object");
+  
+  if(attr_id){
+    W_L(" id=\"");
+    W_V(attr_id);
+    W_L("\"");
+  }
+  if(attr_width){
+    W_L(" width=\"");
+    W_V(attr_width);
+    W_L("\"");
+  }
+  if(attr_height){
+    W_L(" height=\"");
+    W_V(attr_height);
+    W_L("\"");
+  }
+  if(attr_data){
+    W_L(" data=\"");
+    W_V(attr_data);
+    W_L("\"");
+  }
+  if(attr_type){
+    W_L(" type=\"");
+    W_V(attr_type);
+    W_L("\"");
+  }
+  if(attr_declare){
+    W_L(" declare=\"declare\"");
+  }
+  
+  W_L(">");
+  return ixhtml10->out;
+}
+
+
+/**
+ * It is a handler who processes the OBJECT tag.
+ *
+ * @param pdoc  [i/o] The pointer to the IXHTML10 structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The OBJECT tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_ixhtml10_end_object_tag(void *pdoc, Node *UNUSED(node))
+{
+  ixhtml10_t *ixhtml10 = GET_IXHTML10(pdoc);
+  Doc *doc = ixhtml10->doc;
+
+  W_L("</object>");
+  return ixhtml10->out;
+}
+
+/**
+ * It is a handler who processes the PARAM tag.
+ *
+ * @param pdoc  [i/o] The pointer to the IXHTML10 structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The PARAM tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_ixhtml10_start_param_tag(void *pdoc, Node *node)
+{
+  ixhtml10_t *ixhtml10 = GET_IXHTML10(pdoc);
+  Doc       *doc = ixhtml10->doc;
+  Attr *attr;
+  char *attr_style         = NULL;
+  char *attr_name          = NULL;
+  char *attr_value         = NULL;
+  char *attr_valuetype     = NULL;
+  
+  /*--------------------------------------------------------------------------*/
+  /* Get Attributes                                                           */
+  /*--------------------------------------------------------------------------*/
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name   = qs_get_attr_name(doc,attr);
+    char *value  = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('n','N',"name",name)) {
+      attr_name = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('v','V',"value",name)) {
+      attr_value = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('v','V',"valuetype",name)) {
+      attr_valuetype = apr_pstrdup(doc->pool, value);
+    }
+  }
+  W_L("<param");
+  
+  if(attr_name){
+    W_L(" name=\"");
+    W_V(attr_name);
+    W_L("\"");
+  }
+  if(attr_value){
+    W_L(" value=\"");
+    W_V(attr_value);
+    W_L("\"");
+  }
+  if(attr_valuetype){
+    W_L(" valuetype=\"");
+    W_V(attr_valuetype);
+    W_L("\"");
+  }
+  W_L("/>");
+  return ixhtml10->out;
+}
+
+/**
+ * It is a handler who processes the CAPTION tag.
+ *
+ * @param pdoc  [i/o] The pointer to the IXHTML10 structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The CAPTION tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_ixhtml10_start_caption_tag(void *pdoc, Node *node)
+{
+  ixhtml10_t    *ixhtml10;
+  Doc         *doc;
+  request_rec *r;
+  Attr        *attr;
+  char        *attr_style = NULL;
+  char        *attr_align = NULL;
+
+  ixhtml10   = GET_IXHTML10(pdoc);
+  doc     = ixhtml10->doc;
+  r       = doc->r;
+
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('a','A',"align", name)) {
+      if (value && 
+          (STRCASEEQ('l','L',"left",value) 
+        || STRCASEEQ('r','R',"right",value) 
+        || STRCASEEQ('t','T',"top",value)
+        || STRCASEEQ('b','B',"bottom",value) 
+        )) {
+        attr_align = value;
+      }
+    }
+    else if (STRCASEEQ('s','S',"style",name) && value && *value) {
+      attr_style = value;
+    }
+  }
+  W_L("<caption");
+  if(attr_align){
+    W_L(" align=\"");
+    W_V(attr_align);
+    W_L("\"");
+  }
+  W_L(">");
+  return ixhtml10->out;
+}
+
+
+/**
+ * It is a handler who processes the CAPTION tag.
+ *
+ * @param pdoc  [i/o] The pointer to the IXHTML10 structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The CAPTION tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_ixhtml10_end_caption_tag(void *pdoc, Node *UNUSED(node))
+{
+  ixhtml10_t *ixhtml10 = GET_IXHTML10(pdoc);
+  Doc *doc = ixhtml10->doc;
+
+  W_L("</caption>");
+  return ixhtml10->out;
+}
+
 /*
  * vim:ts=2 et
  */
index fffc74d..2f220ff 100644 (file)
@@ -418,6 +418,21 @@ tag_handler jhtml_handler[] = {
     s_jhtml_newline_mark,
     NULL,
   },
+  /* tagObject */
+  {
+    NULL,
+    NULL,
+  },
+  /* tagParam */
+  {
+    NULL,
+    NULL,
+  },
+  /* tagCAPTION */
+  {
+    NULL,
+    NULL,
+  },
 };
 
 
@@ -2073,36 +2088,6 @@ s_jhtml_start_li_tag(void *pdoc, Node *node)
     W_V(attr_value);
     W_L("\"");
   }
-  if (IS_CSS_ON(jhtml->entryp)) {
-    css_prop_list_t *style = s_jhtml_push_and_get_now_style(pdoc, node, attr_style);
-    if (style) {
-      css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "list-style-type");
-      css_property_t *cur;
-      for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
-        if (STRCASEEQ('d','D',"decimal", cur->value)) {
-          attr_type = apr_pstrdup(doc->pool, "1");
-        }
-        else if (STRCASEEQ('u','U',"upper-alpha", cur->value)) {
-          attr_type = apr_pstrdup(doc->pool, "A");
-        }
-        else if (STRCASEEQ('l','L',"lower-alpha", cur->value)) {
-          attr_type = apr_pstrdup(doc->pool, "a");
-        }
-      }
-    }
-  }
-
-  W_L("<li");
-  if (attr_type) {
-    W_L(" type=\"");
-    W_V(attr_type);
-    W_L("\"");
-  }
-  if (attr_value) {
-    W_L(" value=\"");
-    W_V(attr_value);
-    W_L("\"");
-  }
   W_L(">");
   return jhtml->out;
 }
@@ -2716,6 +2701,7 @@ s_jhtml_start_img_tag(void *pdoc, Node *node)
       value = chxj_jreserved_tag_to_safe_for_query_string(r, value, jhtml->entryp, 0);
       value = chxj_add_cookie_parameter(r, value, jhtml->cookie);
       value = chxj_add_cookie_no_update_parameter(r, value);
+      value = chxj_img_rewrite_parameter(r,jhtml->conf,value);
       value = s_add_copyright_parameter(r, value);
       attr_src = value;
 #else
@@ -2724,6 +2710,7 @@ s_jhtml_start_img_tag(void *pdoc, Node *node)
       value = chxj_jreserved_tag_to_safe_for_query_string(r, value, jhtml->entryp, 0);
       value = chxj_add_cookie_parameter(r, value, jhtml->cookie);
       value = chxj_add_cookie_no_update_parameter(r, value);
+      value = chxj_img_rewrite_parameter(r,jhtml->conf,value);
       value = s_add_copyright_parameter(r, value);
       attr_src = value;
 #endif
index 6d32a4a..66e020e 100644 (file)
@@ -187,30 +187,35 @@ chxj_jreserved_tag_to_safe_for_query_string(request_rec *r, const char *query_st
   s++;
   fname = apr_pstrdup(pool, result);
   result = NULL;
-
-  char *pstat;
+       
+       char *pstat;
   char *pstat2;
   for (;;) {
     char *pair = NULL;
-    if (xmlflag) {
-      pair = apr_strtok(s, "&amp;", &pstat);
-    }
-    else {
-      pair = apr_strtok(s, "&", &pstat);
-    }
+    pair = apr_strtok(s, "&", &pstat);
+    
     if (! pair) break;
     s = NULL;
+               
+               if(strncasecmp(pair,"amp;",4) == 0){
+                       pair += 4;
+               }
+               
     char *key = apr_strtok(pair, "=",  &pstat2);
     char *val = "";
     if (key) {
       val = apr_strtok(NULL, "=", &pstat2);
+                       
       if (!val) val = "";
     }
     char *tmp = NULL;
     if (strcasecmp(key, "guid") == 0) {
       tmp = apr_psprintf(pool, "%s=%s", key, val);
       if (result) {
-        result = apr_pstrcat(pool, result, "&" ,tmp, NULL);
+                               if(xmlflag)
+                                       result = apr_pstrcat(pool, result, "&amp;" ,tmp, NULL);
+                               else
+               result = apr_pstrcat(pool, result, "&" ,tmp, NULL);
       }
       else {
         result = tmp;
old mode 100644 (file)
new mode 100755 (executable)
index 566f043..93e267f
@@ -62,8 +62,18 @@ static char *s_jxhtml_start_li_tag       (void *pdoc, Node *node);
 static char *s_jxhtml_end_li_tag         (void *pdoc, Node *node);
 static char *s_jxhtml_start_br_tag       (void *pdoc, Node *node);
 static char *s_jxhtml_end_br_tag         (void *pdoc, Node *node);
+
+static char *s_jxhtml_start_table_tag    (void *pdoc, Node *node);
+static char *s_jxhtml_end_table_tag      (void *pdoc, Node *node);
 static char *s_jxhtml_start_tr_tag       (void *pdoc, Node *node);
 static char *s_jxhtml_end_tr_tag         (void *pdoc, Node *node);
+static char *s_jxhtml_start_td_or_th_tag       (void *pdoc, Node *node,char *tagName);
+static char *s_jxhtml_end_td_or_th_tag         (void *pdoc, Node *node,char *tagName);
+static char *s_jxhtml_start_td_tag       (void *pdoc, Node *node);
+static char *s_jxhtml_end_td_tag         (void *pdoc, Node *node);
+static char *s_jxhtml_start_th_tag       (void *pdoc, Node *node);
+static char *s_jxhtml_end_th_tag         (void *pdoc, Node *node);
+
 static char *s_jxhtml_start_font_tag     (void *pdoc, Node *node);
 static char *s_jxhtml_end_font_tag       (void *pdoc, Node *node);
 static char *s_jxhtml_start_form_tag     (void *pdoc, Node *node);
@@ -124,6 +134,11 @@ static char *s_jxhtml_link_tag           (void *pdoc, Node *node);
 static char *s_jxhtml_start_span_tag     (void *pdoc, Node *node);
 static char *s_jxhtml_end_span_tag       (void *pdoc, Node *node);
 static char *s_jxhtml_style_tag       (void *pdoc, Node *node);
+static char *s_jxhtml_start_object_tag     (void *pdoc, Node *node);
+static char *s_jxhtml_end_object_tag       (void *pdoc, Node *node);
+static char *s_jxhtml_start_param_tag     (void *pdoc, Node *node);
+static char *s_jxhtml_start_caption_tag     (void *pdoc, Node *node);
+static char *s_jxhtml_end_caption_tag       (void *pdoc, Node *node);
 
 static void  s_init_jxhtml(jxhtml_t *jxhtml, Doc *doc, request_rec *r, device_table *spec);
 
@@ -237,8 +252,8 @@ tag_handler jxhtml_handler[] = {
   },
   /* tagTABLE */
   {
-    NULL,
-    NULL,
+    s_jxhtml_start_table_tag,
+    s_jxhtml_end_table_tag,
   },
   /* tagTR */
   {
@@ -247,8 +262,8 @@ tag_handler jxhtml_handler[] = {
   },
   /* tagTD */
   {
-    NULL,
-    NULL,
+    s_jxhtml_start_td_tag,
+    s_jxhtml_end_td_tag,
   },
   /* tagTBODY */
   {
@@ -337,8 +352,8 @@ tag_handler jxhtml_handler[] = {
   },
   /* tagTH */
   {
-    NULL,
-    NULL,
+    s_jxhtml_start_th_tag,
+    s_jxhtml_end_th_tag,
   },
   /* tagB */
   {
@@ -415,6 +430,21 @@ tag_handler jxhtml_handler[] = {
     s_jxhtml_newline_mark,
     NULL,
   },
+  /* tagObject */
+  {
+    s_jxhtml_start_object_tag,
+    s_jxhtml_end_object_tag,
+  },
+  /* tagParam */
+  {
+    s_jxhtml_start_param_tag,
+    NULL,
+  },
+  /* tagCAPTION */
+  {
+    s_jxhtml_start_caption_tag,
+    s_jxhtml_end_caption_tag,
+  },
 };
 
 
@@ -463,7 +493,9 @@ chxj_convert_jxhtml(
 
   jxhtml.entryp = entryp;
   jxhtml.cookie = cookie;
-
+  if (strcasecmp(spec->output_encoding,"UTF-8") == 0 ){
+    apr_table_setn(r->headers_out,HTTP_X_CHXJ_SET_CONTENT_TYPE,"application/xhtml+xml; charset=UTF-8");
+  }
   chxj_set_content_type(r, chxj_header_inf_set_content_type(r, "application/xhtml+xml; charset=Windows-31J"));
 
   /*--------------------------------------------------------------------------*/
@@ -690,7 +722,9 @@ s_jxhtml_start_html_tag(void *pdoc, Node *UNUSED(node))
   r      = doc->r;
   DBG(r, "REQ[%X] start s_jxhtml_start_html_tag()", TO_ADDR(r));
 
-  W_L("<?xml version=\"1.0\" encoding=\"Shift_JIS\" ?>");
+  W_L("<?xml version=\"1.0\" encoding=\"");
+  W_V(jxhtml->spec->output_encoding);
+  W_L("\" ?>");
   W_NLCODE();
   W_L("<!DOCTYPE html PUBLIC \"-//J-PHONE//DTD XHTML Basic 1.0 Plus//EN\" \"xhtml-basic10-plus.dtd\">");
   W_NLCODE();
@@ -825,7 +859,14 @@ s_jxhtml_start_meta_tag(void *pdoc, Node *node)
         }
       }
       break;
-    
+    case 'n':
+    case 'N':
+      if (strcasecmp(name, "name") == 0 && value && *value) {
+        W_L(" name=\"");
+        W_V(value);
+        W_L("\"");
+      }
+      break;
     default:
       break;
     }
@@ -1022,7 +1063,9 @@ s_jxhtml_start_body_tag(void *pdoc, Node *node)
   char        *attr_bgcolor = NULL;
   char        *attr_text    = NULL;
   char        *attr_link    = NULL;
+  char        *attr_vlink   = NULL;
   char        *attr_style   = NULL;
+  char        *attr_background   = NULL;
 
   jxhtml = GET_JXHTML(pdoc);
   doc   = jxhtml->doc;
@@ -1064,7 +1107,13 @@ s_jxhtml_start_body_tag(void *pdoc, Node *node)
       /*----------------------------------------------------------------------*/
       /* CHTML 4.0                                                            */
       /*----------------------------------------------------------------------*/
-      /* ignore */
+      attr_vlink = value;
+    }
+    else if (STRCASEEQ('b','B',"background",name) && value && *value) {
+      /*----------------------------------------------------------------------*/
+      /* CHTML 6.0                                                            */
+      /*----------------------------------------------------------------------*/
+      attr_background = value;
     }
     else if (STRCASEEQ('s','S',"style",name) && value && *value) {
       attr_style = value;
@@ -1072,10 +1121,11 @@ s_jxhtml_start_body_tag(void *pdoc, Node *node)
   }
 
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop      = chxj_css_get_property_value(doc, style, "color");
       css_property_t *bgcolor_prop    = chxj_css_get_property_value(doc, style, "background-color");
+      css_property_t *bgimage_prop    = chxj_css_get_property_value(doc, style, "background-image");
       css_property_t *cur;
       for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
         if (cur->value && *cur->value) {
@@ -1087,6 +1137,18 @@ s_jxhtml_start_body_tag(void *pdoc, Node *node)
           attr_bgcolor = apr_pstrdup(doc->pool, cur->value);
         }
       }
+      for (cur = bgimage_prop->next; cur != bgimage_prop; cur = cur->next) {
+        if (cur->value && *cur->value) {
+          char *tmp = apr_pstrdup(doc->pool, cur->value);
+          char *tmps = strstr(tmp,"(");
+          if(tmps){
+            char *tmpe = strstr(tmp,")");
+            size_t len = strlen(tmps) - strlen(tmpe) -1 ;
+            tmps++;
+            attr_background = apr_pstrndup(doc->pool, tmps,len);
+          }
+        }
+      }
     }
     if (jxhtml->style) {
       css_stylesheet_t *pseudos = chxj_find_pseudo_selectors(doc, jxhtml->style);
@@ -1100,6 +1162,14 @@ s_jxhtml_start_body_tag(void *pdoc, Node *node)
             }
           }
         }
+        else if (cur_sel->name && strcasecmp(cur_sel->name, "a:visited") == 0) {
+          css_property_t *cur;
+          for (cur = cur_sel->property_head.next; cur != &cur_sel->property_head; cur = cur->next) {
+            if (cur->name && strcasecmp(cur->name, "color") == 0) {
+              attr_vlink = apr_pstrdup(doc->pool, cur->value);
+            }
+          }
+        }
       }
     }
   }
@@ -1128,6 +1198,17 @@ s_jxhtml_start_body_tag(void *pdoc, Node *node)
     W_V(attr_link);
     W_L("\"");
   }
+  if (attr_vlink) {
+    attr_vlink = chxj_css_rgb_func_to_value(doc->pool, attr_vlink);
+    W_L(" vlink=\"");
+    W_V(attr_vlink);
+    W_L("\"");
+  }
+  if (attr_background) {
+    W_L(" background=\"");
+    W_V(attr_background);
+    W_L("\"");
+  }
   W_L("><div>");
   return jxhtml->out;
 }
@@ -1176,6 +1257,7 @@ s_jxhtml_start_a_tag(void *pdoc, Node *node)
   request_rec *r;
   Attr        *attr;
   char        *attr_style = NULL;
+  char        *attr_id    = NULL;
 
   jxhtml = GET_JXHTML(pdoc);
   doc   = jxhtml->doc;
@@ -1190,13 +1272,11 @@ s_jxhtml_start_a_tag(void *pdoc, Node *node)
        attr = qs_get_next_attr(doc,attr)) {
     char *name  = qs_get_attr_name(doc,attr);
     char *value = qs_get_attr_value(doc,attr);
-    if (STRCASEEQ('n','N',"name",name)) {
-      /*----------------------------------------------------------------------*/
-      /* CHTML1.0                                                             */
-      /*----------------------------------------------------------------------*/
-      W_L(" name=\"");
-      W_V(chxj_jreserved_to_safe_tag(r, value, jxhtml->entryp));
-      W_L("\"");
+    if (STRCASEEQ('i','I',"id",name)){
+      attr_id = chxj_jreserved_to_safe_tag(r, value, jxhtml->entryp);
+    }
+    else if (STRCASEEQ('n','N',"name",name)) {
+      attr_id = chxj_jreserved_to_safe_tag(r, value, jxhtml->entryp);
     }
     else if (STRCASEEQ('h','H',"href",name)) {
       /*----------------------------------------------------------------------*/
@@ -1288,10 +1368,15 @@ s_jxhtml_start_a_tag(void *pdoc, Node *node)
       attr_style = value;
     }
   }
+  if(attr_id){
+    W_L(" name=\"");
+    W_V(attr_id);
+    W_L("\"");
+  }
   W_L(">");
 
   if (IS_CSS_ON(jxhtml->entryp)) {
-    s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
   }
 
   return jxhtml->out;
@@ -1346,8 +1431,10 @@ s_jxhtml_start_br_tag(void *pdoc, Node *node)
   jxhtml = GET_JXHTML(pdoc);
   doc   = jxhtml->doc;
   r     = doc->r;
+  
+  char         *attr_style = NULL;
+  char         *attr_clear = NULL;
 
-  W_L("<br");
   /*--------------------------------------------------------------------------*/
   /* Get Attributes                                                           */
   /*--------------------------------------------------------------------------*/
@@ -1358,12 +1445,37 @@ s_jxhtml_start_br_tag(void *pdoc, Node *node)
     char *value = qs_get_attr_value(doc,attr);
     if (STRCASEEQ('c','C',"clear",name)) {
       if (value && (STRCASEEQ('l','L',"left",value) || STRCASEEQ('r','R',"right",value) || STRCASEEQ('a','A',"all",value))) {
-        W_L(" clear=\"");
-        W_V(value);
-        W_L("\"");
+        attr_clear = value;
+      }
+    }
+    else if (STRCASEEQ('s','S',"style",name)) {
+      attr_style = apr_pstrdup(doc->buf.pool, value);
+    }
+  }
+  if (IS_CSS_ON(jxhtml->entryp)) {
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
+    if (style) {
+      css_property_t *clear_prop = chxj_css_get_property_value(doc, style, "clear");
+      css_property_t *cur;
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (cur->value && *cur->value) {
+          if ( STRCASEEQ('l','L',"left",  cur->value)
+            || STRCASEEQ('r','R',"right", cur->value)) {
+            attr_clear = apr_pstrdup(doc->pool, cur->value);
+          }
+          else if(STRCASEEQ('b','B',"both"  ,cur->value)) {
+            attr_clear = apr_pstrdup(doc->pool, "all");
+          }
+        }
       }
     }
   }
+  W_L("<br");
+  if(attr_clear){
+    W_L(" clear=\"");
+    W_V(attr_clear);
+    W_L("\"");
+  }
   W_L(" />");
   return jxhtml->out;
 }
@@ -1384,9 +1496,8 @@ s_jxhtml_end_br_tag(void *pdoc, Node *UNUSED(child))
   return jxhtml->out;
 }
 
-
 /**
- * It is a handler who processes the TR tag.
+ * It is a handler who processes the TABLE tag.
  *
  * @param pdoc  [i/o] The pointer to the JXHTML structure at the output
  *                     destination is specified.
@@ -1394,23 +1505,164 @@ s_jxhtml_end_br_tag(void *pdoc, Node *UNUSED(child))
  * @return The conversion result is returned.
  */
 static char *
-s_jxhtml_start_tr_tag(void *pdoc, Node *UNUSED(node)
+s_jxhtml_start_table_tag(void *pdoc, Node *node
 {
-  jxhtml_t      *jxhtml;
+  jxhtml_t     *jxhtml;
   Doc          *doc;
   request_rec  *r;
+  Attr         *attr;
+  
+  char         *attr_style  = NULL;
+  char         *attr_align  = NULL;
+  char         *attr_width  = NULL;
+  char         *attr_height = NULL;
+  char         *attr_bgcolor = NULL;
+  char         *attr_border_width  = NULL;
+  char         *attr_border_color  = NULL;
 
   jxhtml = GET_JXHTML(pdoc);
   doc   = jxhtml->doc;
   r     = doc->r;
+  
+  /*--------------------------------------------------------------------------*/
+  /* Get Attributes                                                           */
+  /*--------------------------------------------------------------------------*/
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name  = qs_get_attr_name(doc,attr);
+    char *val   = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('a','A',"align",name)) {
+      if (val && (STRCASEEQ('l','L',"left",val) || STRCASEEQ('r','R',"right",val) || STRCASEEQ('c','C',"center",val))) {
+        attr_align = apr_pstrdup(doc->buf.pool, val);
+      }
+    }
+    else if (STRCASEEQ('h','H',"height",name) && val && *val) {
+      attr_height = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('w','W',"width",name) && val && *val) {
+      attr_width = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('s','S',"style",name) && val && *val) {
+      attr_style = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('b','B',"bgcolor",name) && val && *val) {
+      attr_bgcolor = apr_pstrdup(doc->buf.pool, val);
+      attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
+    }
+    else if (STRCASEEQ('b','B',"border",name) && val && *val) {
+      attr_border_width = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('b','B',"bordercolor",name) && val && *val) {
+      attr_border_color = apr_pstrdup(doc->buf.pool, val);
+      attr_border_color = chxj_css_rgb_func_to_value(doc->pool, attr_border_color);
+    }
+  }
+  
+  if (IS_CSS_ON(jxhtml->entryp)) {
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
+    if (style) {
+      css_property_t *width_prop             = chxj_css_get_property_value(doc, style, "width");
+      css_property_t *height_prop            = chxj_css_get_property_value(doc, style, "height");
+      css_property_t *align_prop             = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *bgcolor_prop           = chxj_css_get_property_value(doc, style, "background-color");
+      css_property_t *border_width_prop      = chxj_css_get_property_value(doc, style, "border-width");
+      css_property_t *border_color_prop      = chxj_css_get_property_value(doc, style, "border-color");
+      
+      css_property_t *cur;
+      for (cur = width_prop->next; cur != width_prop; cur = cur->next) {
+        char *tmp = apr_pstrdup(doc->pool, cur->value);
+        char *tmpp = strstr(tmp, "px");
+        if (tmpp) {
+          size_t len = strlen(tmp) - strlen(tmpp);
+          attr_width = apr_pstrndup(doc->pool, tmp,len);
+        }
+        else{
+          attr_width = apr_pstrdup(doc->pool, tmp);
+        }
+      }
+      for (cur = height_prop->next; cur != height_prop; cur = cur->next) {
+        char *tmp = apr_pstrdup(doc->pool, cur->value);
+        char *tmpp = strstr(tmp, "px");
+        if (tmpp) {
+          size_t len = strlen(tmp) - strlen(tmpp);
+          attr_height = apr_pstrndup(doc->pool, tmp,len);
+        }
+        else{
+          attr_height = apr_pstrdup(doc->pool, tmp);
+        }
+      }
+      for (cur = align_prop->next; cur != align_prop; cur = cur->next) {
+        if (cur->value && (STRCASEEQ('l','L',"left",cur->value) || STRCASEEQ('r','R',"right",cur->value) || STRCASEEQ('c','C',"center",cur->value))) {
+          attr_align = apr_pstrdup(doc->buf.pool, cur->value);
+        }
+      }
+      for (cur = bgcolor_prop->next; cur != bgcolor_prop; cur = cur->next) {
+        attr_bgcolor = apr_pstrdup(doc->pool, cur->value);
+        attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
+      }
+      for (cur = border_width_prop->next; cur != border_width_prop; cur = cur->next) {
+        char *tmp = apr_pstrdup(doc->pool, cur->value);
+        char *tmpp = strstr(tmp, "px");
+        if (tmpp) {
+          size_t len = strlen(tmp) - strlen(tmpp);
+          attr_border_width = apr_pstrndup(doc->pool, tmp,len);
+        }
+        else{
+          attr_border_width = apr_pstrdup(doc->pool, tmp);
+        }
+      }
+      for (cur = border_color_prop->next; cur != border_color_prop; cur = cur->next) {
+        attr_border_color = apr_pstrdup(doc->pool, cur->value);
+        attr_border_color = chxj_css_rgb_func_to_value(doc->pool, attr_border_color);
+      }
+    }
+  }
 
-  W_L("<br />");
+  W_L("<table");
+  if (attr_align){
+    W_L(" align=\"");
+    W_V(attr_align);
+    W_L("\"");
+  }
+  if (attr_height){
+    W_L(" height=\"");
+    W_V(attr_height);
+    W_L("\"");
+  }
+  if (attr_width){
+    W_L(" width=\"");
+    W_V(attr_width);
+    W_L("\"");
+  }
+  if (attr_bgcolor && *attr_bgcolor){
+    W_L(" bgcolor=\"");
+    W_V(attr_bgcolor);
+    W_L("\"");
+  }
+  if (attr_border_width || attr_border_color ){
+    W_L(" style=\"border:");
+    if (attr_border_width){
+      W_V(attr_border_width);
+    }
+    else{
+      W_L("1");
+    }
+    W_L("px solid");
+    
+    if (attr_border_color && *attr_border_color){
+      W_L(" ");
+      W_V(attr_border_color);
+    }
+    W_L(";\"");
+  }
+  W_L(">");
+  
   return jxhtml->out;
 }
 
-
 /**
- * It is a handler who processes the TR tag.
+ * It is a handler who processes the TABLE tag.
  *
  * @param pdoc  [i/o] The pointer to the JXHTML structure at the output
  *                     destination is specified.
@@ -1418,109 +1670,478 @@ s_jxhtml_start_tr_tag(void *pdoc, Node *UNUSED(node))
  * @return The conversion result is returned.
  */
 static char *
-s_jxhtml_end_tr_tag(void *pdoc, Node *UNUSED(child)) 
+s_jxhtml_end_table_tag(void *pdoc, Node *UNUSED(node)) 
 {
-  jxhtml_t *jxhtml = GET_JXHTML(pdoc);
+  jxhtml_t      *jxhtml;
+  request_rec  *r;
+  Doc          *doc;
+
+  jxhtml = GET_JXHTML(pdoc);
+  doc   = jxhtml->doc;
+  r     = jxhtml->doc->r;
+  
+  W_L("</table>");
   return jxhtml->out;
 }
 
 
 /**
- * It is a handler who processes the FONT tag.
+ * It is a handler who processes the TR tag.
  *
  * @param pdoc  [i/o] The pointer to the JXHTML structure at the output
  *                     destination is specified.
- * @param node   [i]   The FONT tag node is specified.
+ * @param node   [i]   The TR tag node is specified.
  * @return The conversion result is returned.
  */
 static char *
-s_jxhtml_start_font_tag(void *pdoc, Node *node) 
+s_jxhtml_start_tr_tag(void *pdoc, Node *node) 
 {
   jxhtml_t      *jxhtml;
-  Doc           *doc;
-  request_rec   *r;
-  Attr          *attr;
-  char          *attr_color = NULL;
-  char          *attr_size  = NULL;
-  char          *attr_style = NULL;
+  Doc          *doc;
+  request_rec  *r;
+  
+  Attr         *attr;
+  
+  char         *attr_style  = NULL;
+  char         *attr_align  = NULL;
+  char         *attr_valign = NULL;
+  char         *attr_bgcolor = NULL;
 
   jxhtml = GET_JXHTML(pdoc);
   doc   = jxhtml->doc;
   r     = doc->r;
-
+  
   /*--------------------------------------------------------------------------*/
   /* Get Attributes                                                           */
   /*--------------------------------------------------------------------------*/
   for (attr = qs_get_attr(doc,node);
-       attr; 
+       attr;
        attr = qs_get_next_attr(doc,attr)) {
     char *name  = qs_get_attr_name(doc,attr);
-    char *value = qs_get_attr_value(doc,attr);
-    if (STRCASEEQ('c','C',"color",name) && value && *value) {
-      attr_color = apr_pstrdup(doc->buf.pool, value);
+    char *val   = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('a','A',"align",name)) {
+      if (val && (STRCASEEQ('l','L',"left",val) || STRCASEEQ('r','R',"right",val) || STRCASEEQ('c','C',"center",val))) {
+        attr_align = apr_pstrdup(doc->buf.pool, val);
+      }
     }
-    else if (STRCASEEQ('s','S',"size",name) && value && *value) {
-      /*----------------------------------------------------------------------*/
-      /* CHTML 5.0                                                            */
-      /*----------------------------------------------------------------------*/
-      attr_size = apr_pstrdup(doc->buf.pool, value);
+    else if (STRCASEEQ('v','V',"valign",name) && val && *val) {
+      if (val && (STRCASEEQ('t','T',"top",val) || STRCASEEQ('m','M',"middle",val) || STRCASEEQ('b','B',"bottom",val))) {
+        attr_valign = apr_pstrdup(doc->buf.pool, val);
+      }
     }
-    else if (STRCASEEQ('s','S',"style",name) && value && *value) {
-      attr_style = apr_pstrdup(doc->buf.pool, value);
+    else if (STRCASEEQ('s','S',"style",name) && val && *val) {
+      attr_style = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('b','B',"bgcolor",name) && val && *val) {
+      attr_bgcolor = apr_pstrdup(doc->buf.pool, val);
+      attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
     }
   }
+  
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
-      css_property_t *color_prop = chxj_css_get_property_value(doc, style, "color");
-      css_property_t *size_prop  = chxj_css_get_property_value(doc, style, "font-size");
+      css_property_t *align_prop             = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *valign_prop            = chxj_css_get_property_value(doc, style, "vertical-align");
+      css_property_t *bgcolor_prop           = chxj_css_get_property_value(doc, style, "background-color");
+      
       css_property_t *cur;
-      for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
-        if (cur->value && *cur->value) {
-          attr_color = apr_pstrdup(doc->pool, cur->value);
+      for (cur = align_prop->next; cur != align_prop; cur = cur->next) {
+        if (cur->value && (STRCASEEQ('l','L',"left",cur->value) || STRCASEEQ('r','R',"right",cur->value) || STRCASEEQ('c','C',"center",cur->value))) {
+          attr_align = apr_pstrdup(doc->buf.pool, cur->value);
         }
       }
-      for (cur = size_prop->next; cur != size_prop; cur = cur->next) {
-        if (cur->value && *cur->value) {
-          attr_size = apr_pstrdup(doc->pool, cur->value);
-          if (STRCASEEQ('x','X',"xx-small",attr_size)) {
-            attr_size = apr_pstrdup(doc->pool, "1");
-          }
-          else if (STRCASEEQ('x','X',"x-small",attr_size)) {
-            attr_size = apr_pstrdup(doc->pool, "2");
-          }
-          else if (STRCASEEQ('s','S',"small",attr_size)) {
-            attr_size = apr_pstrdup(doc->pool, "3");
-          }
-          else if (STRCASEEQ('m','M',"medium",attr_size)) {
-            attr_size = apr_pstrdup(doc->pool, "4");
-          }
-          else if (STRCASEEQ('l','L',"large",attr_size)) {
-            attr_size = apr_pstrdup(doc->pool, "5");
-          }
-          else if (STRCASEEQ('x','X',"x-large",attr_size)) {
-            attr_size = apr_pstrdup(doc->pool, "6");
-          }
-          else if (STRCASEEQ('x','X',"xx-large",attr_size)) {
-            attr_size = apr_pstrdup(doc->pool, "7");
-          }
+      for (cur = valign_prop->next; cur != valign_prop; cur = cur->next) {
+        if (cur->value && (STRCASEEQ('t','T',"top",cur->value) || STRCASEEQ('m','M',"middle",cur->value) || STRCASEEQ('b','B',"bottom",cur->value))) {
+          attr_valign = apr_pstrdup(doc->buf.pool, cur->value);
         }
       }
+      for (cur = bgcolor_prop->next; cur != bgcolor_prop; cur = cur->next) {
+        attr_bgcolor = apr_pstrdup(doc->pool, cur->value);
+        attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
+      }
     }
   }
-  jxhtml_flags_t *flg = (jxhtml_flags_t *)apr_palloc(doc->pool, sizeof(*flg));
-  memset(flg, 0, sizeof(*flg));
-  if (attr_color) {
-    attr_color = chxj_css_rgb_func_to_value(doc->pool, attr_color);
-    W_L("<font color=\"");
-    W_V(attr_color);
-    W_L("\">");
-    flg->font_color_flag = 1;
+
+  W_L("<tr");
+  if (attr_align){
+    W_L(" align=\"");
+    W_V(attr_align);
+    W_L("\"");
   }
-  if (attr_size) {
-    flg->font_size_flag = 1;
-    switch(*attr_size) {
-    case '1': W_L("<span style=\"font-size: xx-small\">"); break;
+  if (attr_valign){
+    W_L(" valign=\"");
+    W_V(attr_valign);
+    W_L("\"");
+  }
+  if (attr_bgcolor && *attr_bgcolor){
+    W_L(" bgcolor=\"");
+    W_V(attr_bgcolor);
+    W_L("\"");
+  }
+  W_L(">");
+  return jxhtml->out;
+}
+
+
+/**
+ * It is a handler who processes the TR tag.
+ *
+ * @param pdoc  [i/o] The pointer to the JXHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TR tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_jxhtml_end_tr_tag(void *pdoc, Node *UNUSED(child)) 
+{
+  jxhtml_t      *jxhtml;
+  request_rec  *r;
+  Doc          *doc;
+
+  jxhtml = GET_JXHTML(pdoc);
+  doc   = jxhtml->doc;
+  r     = jxhtml->doc->r;
+  
+  W_L("</tr>");
+  return jxhtml->out;
+}
+
+/**
+ * It is a handler who processes the TD tag.
+ *
+ * @param pdoc  [i/o] The pointer to the JXHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TR tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_jxhtml_start_td_or_th_tag(void *pdoc, Node *node,char *tagName) 
+{
+  jxhtml_t      *jxhtml;
+  Doc          *doc;
+  request_rec  *r;
+
+  Attr         *attr;
+  
+  char         *attr_style  = NULL;
+  char         *attr_align  = NULL;
+  char         *attr_valign = NULL;
+  char         *attr_bgcolor = NULL;
+  char         *attr_colspan = NULL;
+  char         *attr_rowspan = NULL;
+  char         *attr_width   = NULL;
+  char         *attr_height  = NULL;
+
+  jxhtml = GET_JXHTML(pdoc);
+  doc   = jxhtml->doc;
+  r     = doc->r;
+  
+  /*--------------------------------------------------------------------------*/
+  /* Get Attributes                                                           */
+  /*--------------------------------------------------------------------------*/
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name  = qs_get_attr_name(doc,attr);
+    char *val   = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('a','A',"align",name)) {
+      if (val && (STRCASEEQ('l','L',"left",val) || STRCASEEQ('r','R',"right",val) || STRCASEEQ('c','C',"center",val))) {
+        attr_align = apr_pstrdup(doc->buf.pool, val);
+      }
+    }
+    else if (STRCASEEQ('v','V',"valign",name) && val && *val) {
+      if (val && (STRCASEEQ('t','T',"top",val) || STRCASEEQ('m','M',"middle",val) || STRCASEEQ('b','B',"bottom",val))) {
+        attr_valign = apr_pstrdup(doc->buf.pool, val);
+      }
+    }
+    else if (STRCASEEQ('s','S',"style",name) && val && *val) {
+      attr_style = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('b','B',"bgcolor",name) && val && *val) {
+      attr_bgcolor = apr_pstrdup(doc->buf.pool, val);
+      attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
+    }
+    else if (STRCASEEQ('c','C',"colspan",name) && val && *val) {
+      attr_colspan = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('r','R',"rowspan",name) && val && *val) {
+      attr_rowspan = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('w','W',"width",name) && val && *val) {
+      char *tmp = strstr(val, "%");
+      if(tmp){
+        attr_width = apr_pstrdup(doc->buf.pool, val);
+      }
+      else{
+        attr_width = apr_psprintf(doc->buf.pool,"%spx",val);
+      }
+    }
+    else if (STRCASEEQ('h','H',"height",name) && val && *val) {
+      char *tmp = strstr(val, "%");
+      if(tmp){
+        attr_height = apr_pstrdup(doc->buf.pool, val);
+      }
+      else{
+        attr_height = apr_psprintf(doc->buf.pool,"%spx",val);
+      }
+    }
+  }
+  
+  if (IS_CSS_ON(jxhtml->entryp)) {
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
+    if (style) {
+      css_property_t *align_prop             = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *valign_prop            = chxj_css_get_property_value(doc, style, "vertical-align");
+      css_property_t *bgcolor_prop           = chxj_css_get_property_value(doc, style, "background-color");
+      css_property_t *width_prop             = chxj_css_get_property_value(doc, style, "width");
+      css_property_t *height_prop            = chxj_css_get_property_value(doc, style, "height");
+      
+      css_property_t *cur;
+      for (cur = align_prop->next; cur != align_prop; cur = cur->next) {
+        if (cur->value && (STRCASEEQ('l','L',"left",cur->value) || STRCASEEQ('r','R',"right",cur->value) || STRCASEEQ('c','C',"center",cur->value))) {
+          attr_align = apr_pstrdup(doc->buf.pool, cur->value);
+        }
+      }
+      for (cur = valign_prop->next; cur != valign_prop; cur = cur->next) {
+        if (cur->value && (STRCASEEQ('t','T',"top",cur->value) || STRCASEEQ('m','M',"middle",cur->value) || STRCASEEQ('b','B',"bottom",cur->value))) {
+          attr_valign = apr_pstrdup(doc->buf.pool, cur->value);
+        }
+      }
+      for (cur = bgcolor_prop->next; cur != bgcolor_prop; cur = cur->next) {
+        attr_bgcolor = apr_pstrdup(doc->pool, cur->value);
+        attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
+      }
+      for (cur = width_prop->next; cur != width_prop; cur = cur->next) {
+        attr_width = apr_pstrdup(doc->pool, cur->value);
+      }
+      for (cur = height_prop->next; cur != height_prop; cur = cur->next) {
+        attr_height = apr_pstrdup(doc->pool, cur->value);
+      }
+    }
+  }
+
+  W_L("<");
+  W_V(tagName);
+  if (attr_align){
+    W_L(" align=\"");
+    W_V(attr_align);
+    W_L("\"");
+  }
+  if (attr_valign){
+    W_L(" valign=\"");
+    W_V(attr_valign);
+    W_L("\"");
+  }
+  if (attr_colspan){
+    W_L(" colspan=\"");
+    W_V(attr_colspan);
+    W_L("\"");
+  }
+  if (attr_rowspan){
+    W_L(" rowspan=\"");
+    W_V(attr_rowspan);
+    W_L("\"");
+  }
+  if (attr_bgcolor && *attr_bgcolor){
+    W_L(" bgcolor=\"");
+    W_V(attr_bgcolor);
+    W_L("\"");
+  }
+  if (attr_width || attr_height ){
+    W_L(" style=\"");
+    if (attr_width){
+      W_L("width:");
+      W_V(attr_width);
+      W_L(";");
+    }
+    if (attr_height){
+      W_L("height:");
+      W_V(attr_height);
+      W_L(";");
+    }
+    W_L("\"");
+  }
+  W_L(">");
+  return jxhtml->out;
+}
+
+
+/**
+ * It is a handler who processes the TD tag.
+ *
+ * @param pdoc  [i/o] The pointer to the JXHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TR tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_jxhtml_end_td_or_th_tag(void *pdoc, Node *UNUSED(child),char *tagName) 
+{
+  jxhtml_t      *jxhtml;
+  request_rec  *r;
+  Doc          *doc;
+
+  jxhtml = GET_JXHTML(pdoc);
+  doc   = jxhtml->doc;
+  r     = jxhtml->doc->r;
+  
+  W_L("</");
+  W_V(tagName);
+  W_L(">");
+  return jxhtml->out;
+}
+
+/**
+ * It is a handler who processes the TD tag.
+ *
+ * @param pdoc  [i/o] The pointer to the JXHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TD tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_jxhtml_start_td_tag(void *pdoc, Node *node) 
+{
+  return s_jxhtml_start_td_or_th_tag(pdoc,node,"td");
+}
+/**
+ * It is a handler who processes the TD tag.
+ *
+ * @param pdoc  [i/o] The pointer to the JXHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TD tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_jxhtml_end_td_tag(void *pdoc, Node *node) 
+{
+  return s_jxhtml_end_td_or_th_tag(pdoc,node,"td");
+}
+
+/**
+ * It is a handler who processes the TD tag.
+ *
+ * @param pdoc  [i/o] The pointer to the JXHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TD tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_jxhtml_start_th_tag(void *pdoc, Node *node) 
+{
+  return s_jxhtml_start_td_or_th_tag(pdoc,node,"th");
+}
+/**
+ * It is a handler who processes the TD tag.
+ *
+ * @param pdoc  [i/o] The pointer to the JXHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TD tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_jxhtml_end_th_tag(void *pdoc, Node *node) 
+{
+  return s_jxhtml_end_td_or_th_tag(pdoc,node,"th");
+}
+
+/**
+ * It is a handler who processes the FONT tag.
+ *
+ * @param pdoc  [i/o] The pointer to the JXHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The FONT tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_jxhtml_start_font_tag(void *pdoc, Node *node) 
+{
+  jxhtml_t      *jxhtml;
+  Doc           *doc;
+  request_rec   *r;
+  Attr          *attr;
+  char          *attr_color = NULL;
+  char          *attr_size  = NULL;
+  char          *attr_style = NULL;
+
+  jxhtml = GET_JXHTML(pdoc);
+  doc   = jxhtml->doc;
+  r     = doc->r;
+
+  /*--------------------------------------------------------------------------*/
+  /* Get Attributes                                                           */
+  /*--------------------------------------------------------------------------*/
+  for (attr = qs_get_attr(doc,node);
+       attr; 
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('c','C',"color",name) && value && *value) {
+      attr_color = apr_pstrdup(doc->buf.pool, value);
+    }
+    else if (STRCASEEQ('s','S',"size",name) && value && *value) {
+      /*----------------------------------------------------------------------*/
+      /* CHTML 5.0                                                            */
+      /*----------------------------------------------------------------------*/
+      attr_size = apr_pstrdup(doc->buf.pool, value);
+    }
+    else if (STRCASEEQ('s','S',"style",name) && value && *value) {
+      attr_style = apr_pstrdup(doc->buf.pool, value);
+    }
+  }
+  if (IS_CSS_ON(jxhtml->entryp)) {
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
+    if (style) {
+      css_property_t *color_prop = chxj_css_get_property_value(doc, style, "color");
+      css_property_t *size_prop  = chxj_css_get_property_value(doc, style, "font-size");
+      css_property_t *cur;
+      for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
+        if (cur->value && *cur->value) {
+          attr_color = apr_pstrdup(doc->pool, cur->value);
+        }
+      }
+      for (cur = size_prop->next; cur != size_prop; cur = cur->next) {
+        if (cur->value && *cur->value) {
+          attr_size = apr_pstrdup(doc->pool, cur->value);
+          if (STRCASEEQ('x','X',"xx-small",attr_size)) {
+            attr_size = apr_pstrdup(doc->pool, "1");
+          }
+          else if (STRCASEEQ('x','X',"x-small",attr_size)) {
+            attr_size = apr_pstrdup(doc->pool, "2");
+          }
+          else if (STRCASEEQ('s','S',"small",attr_size)) {
+            attr_size = apr_pstrdup(doc->pool, "3");
+          }
+          else if (STRCASEEQ('m','M',"medium",attr_size)) {
+            attr_size = apr_pstrdup(doc->pool, "4");
+          }
+          else if (STRCASEEQ('l','L',"large",attr_size)) {
+            attr_size = apr_pstrdup(doc->pool, "5");
+          }
+          else if (STRCASEEQ('x','X',"x-large",attr_size)) {
+            attr_size = apr_pstrdup(doc->pool, "6");
+          }
+          else if (STRCASEEQ('x','X',"xx-large",attr_size)) {
+            attr_size = apr_pstrdup(doc->pool, "7");
+          }
+        }
+      }
+    }
+  }
+  jxhtml_flags_t *flg = (jxhtml_flags_t *)apr_palloc(doc->pool, sizeof(*flg));
+  memset(flg, 0, sizeof(*flg));
+  if (attr_color) {
+    attr_color = chxj_css_rgb_func_to_value(doc->pool, attr_color);
+    W_L("<font color=\"");
+    W_V(attr_color);
+    W_L("\">");
+    flg->font_color_flag = 1;
+  }
+  if (attr_size) {
+    flg->font_size_flag = 1;
+    switch(*attr_size) {
+    case '1': W_L("<span style=\"font-size: xx-small\">"); break;
     case '2': W_L("<span style=\"font-size: x-small\">");  break;
     case '3': W_L("<span style=\"font-size: small\">");    break;
     case '4': W_L("<span style=\"font-size: medium\">");   break;
@@ -1624,6 +2245,7 @@ s_jxhtml_start_form_tag(void *pdoc, Node *node)
   char        *attr_color  = NULL;
   char        *attr_align  = NULL;
   char        *attr_name   = NULL;
+  char        *css_clear   = NULL;
   char        *new_hidden_tag = NULL;
 
   jxhtml  = GET_JXHTML(pdoc);
@@ -1681,10 +2303,11 @@ s_jxhtml_start_form_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *text_align_prop = chxj_css_get_property_value(doc, style, "text-align");
       css_property_t *color_prop      = chxj_css_get_property_value(doc, style, "color");
+      css_property_t *clear_prop      = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = text_align_prop->next; cur != text_align_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -1700,6 +2323,9 @@ s_jxhtml_start_form_tag(void *pdoc, Node *node)
       for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
         attr_color = apr_pstrdup(doc->pool, cur->value);
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
 
@@ -1736,6 +2362,12 @@ s_jxhtml_start_form_tag(void *pdoc, Node *node)
     W_V(attr_name);
     W_L("\"");
   }
+  if (css_clear) {
+    W_L(" style=\"");
+    W_L("clear:");
+    W_V(css_clear);
+    W_L("\"");
+  }
   W_L(">");
 
   jxhtml_flags_t *flg = (jxhtml_flags_t *)apr_palloc(doc->pool, sizeof(jxhtml_flags_t));
@@ -1790,6 +2422,23 @@ s_jxhtml_end_form_tag(void *pdoc, Node *node)
   return jxhtml->out;
 }
 
+static char *
+s_jxhtml_istyle_to_wap_input_format(apr_pool_t *p, const char *s)
+{
+  if (s) {
+    switch (s[0]) {
+    case '1': return apr_psprintf(p, "&quot;*&lt;ja:h&gt;&quot;");
+    case '2': return apr_psprintf(p, "&quot;*&lt;ja:hk&gt;&quot;");
+    case '3': return apr_psprintf(p, "&quot;*&lt;ja:en&gt;&quot;");
+    case '4': return apr_psprintf(p, "&quot;*&lt;ja:n&gt;&quot;");
+    default:
+      return apr_pstrdup(p, "");
+    }
+  }
+
+  return apr_pstrdup(p,"");
+}
+
 
 /**
  * It is a handler who processes the INPUT tag.
@@ -1915,29 +2564,26 @@ s_jxhtml_start_input_tag(void *pdoc, Node *node)
     W_L("\"");
   }
   if (attr_istyle && (*attr_istyle == '1' || *attr_istyle == '2' || *attr_istyle == '3' || *attr_istyle == '4')) {
-    /*------------------------------------------------------------------------*/
-    /* CHTML 2.0                                                              */
-    /*------------------------------------------------------------------------*/
-    if (attr_type && STRCASEEQ('p','P',"password", attr_type) && ! jxhtml->entryp->pc_flag ) {
-      char *vv = qs_conv_istyle_to_format(doc->buf.pool, "4");
-      W_L(" style=\"-wap-input-format:&quot;*");
-      W_V(vv);
-      W_L("&quot;;\"");
-    }
-    else {
-      char *vv = qs_conv_istyle_to_format(doc->buf.pool, attr_istyle);
-      W_L(" style=\"");
-      W_L("-wap-input-format:&quot;*");
-      W_V(vv);
-      W_L("&quot;;");
-      W_L("\"");
-    }
+    W_L(" istyle=\"");
+    W_V(attr_istyle);
+    W_L("\"");
+
+    char *vv = s_jxhtml_istyle_to_wap_input_format(doc->buf.pool,attr_istyle);
+    W_L(" style=\"");
+    W_L("-wrap-input-format:");
+    W_V(vv);
+    W_L(";");
+    W_L("\"");
   }
-  else if (attr_type && STRCASEEQ('p','P',"password",attr_type)) {
-    char *vv = qs_conv_istyle_to_format(doc->buf.pool, "4");
-    W_L(" style=\"-wap-input-format:&quot;*");
+  else if(attr_type && STRCASEEQ('p','P',"password",attr_type)) {
+    W_L(" istyle=\"4\"");
+
+    char *vv = s_jxhtml_istyle_to_wap_input_format(doc->buf.pool,"4");
+    W_L(" style=\"");
+    W_L("-wrap-input-format:");
     W_V(vv);
-    W_L("&quot;;\"");
+    W_L(";");
+    W_L("\"");
   }
   /*--------------------------------------------------------------------------*/
   /* The figure is default for the password.                                  */
@@ -2115,7 +2761,7 @@ s_jxhtml_start_center_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop      = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop       = chxj_css_get_property_value(doc, style, "font-size");
@@ -2234,7 +2880,7 @@ s_jxhtml_start_li_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "list-style-type");
       css_property_t *cur;
@@ -2275,21 +2921,6 @@ s_jxhtml_start_li_tag(void *pdoc, Node *node)
     W_V(attr_value);
     W_L("\"");
   }
-
-
-  W_L("<li");
-  if (attr_type) {
-    W_L(" style=\"");
-    W_L("list-style-type:");
-    W_V(attr_type);
-    W_L(";");
-    W_L("\"");
-  }
-  if (attr_value) {
-    W_L(" value=\"");
-    W_V(attr_value);
-    W_L("\"");
-  }
   W_L(">");
   return jxhtml->out;
 }
@@ -2340,6 +2971,7 @@ s_jxhtml_start_ol_tag(void *pdoc, Node *node)
   char        *attr_style = NULL;
   char        *attr_start = NULL;
   char        *attr_type  = NULL;
+  char        *css_clear  = NULL;
 
   jxhtml = GET_JXHTML(pdoc);
   doc   = jxhtml->doc;
@@ -2372,9 +3004,11 @@ s_jxhtml_start_ol_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "list-style-type");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
+      
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('d','D',"decimal", cur->value)) {
@@ -2387,27 +3021,24 @@ s_jxhtml_start_ol_tag(void *pdoc, Node *node)
           attr_type = apr_pstrdup(doc->pool, "lower-alpha");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
   W_L("<ol");
-  if (attr_type) {
-    W_L(" style=\"");
-    W_L("list-style-type:");
-    W_V(attr_type);
-    W_L(";");
-    W_L("\"");
-  }
-  if (attr_start) {
-    W_L(" start=\"");
-    W_V(attr_start);
-    W_L("\"");
-  }
-  W_L("<ol");
-  if (attr_type) {
+  if (attr_type || css_clear) {
     W_L(" style=\"");
-    W_L("list-style-type:");
-    W_V(attr_type);
-    W_L(";");
+    if (attr_type) {
+      W_L("list-style-type:");
+      W_V(attr_type);
+      W_L(";");
+    }
+    if (css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   if (attr_start) {
@@ -2467,6 +3098,7 @@ s_jxhtml_start_p_tag(void *pdoc, Node *node)
   char        *attr_style = NULL;
   char        *attr_color = NULL;
   char        *attr_blink = NULL;
+  char        *css_clear  = NULL;
 
   jxhtml = GET_JXHTML(pdoc);
   doc   = jxhtml->doc;
@@ -2491,11 +3123,12 @@ s_jxhtml_start_p_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *text_align_prop = chxj_css_get_property_value(doc, style, "text-align");
       css_property_t *color_prop      = chxj_css_get_property_value(doc, style, "color");
       css_property_t *text_deco_prop  = chxj_css_get_property_value(doc, style, "text-decoration");
+      css_property_t *clear_prop      = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = text_align_prop->next; cur != text_align_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left",cur->value)) {
@@ -2518,10 +3151,13 @@ s_jxhtml_start_p_tag(void *pdoc, Node *node)
           attr_blink = apr_pstrdup(doc->pool, cur->value);
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
   W_L("<p");
-  if ((attr_align && *attr_align) || (attr_color && *attr_color) || (attr_blink && *attr_blink)) {
+  if ((attr_align && *attr_align) || (attr_color && *attr_color) || (attr_blink && *attr_blink) || css_clear) {
     W_L(" style=\"");
     if (attr_align) {
       W_L("text-align:");
@@ -2539,6 +3175,11 @@ s_jxhtml_start_p_tag(void *pdoc, Node *node)
       W_V(attr_blink);
       W_L(";");
     }
+    if (css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -2583,6 +3224,7 @@ s_jxhtml_start_pre_tag(void *pdoc, Node *node)
   Doc       *doc   = jxhtml->doc;
   Attr      *attr;
   char      *attr_style = NULL;
+  char      *css_clear  = NULL;
 
   for (attr = qs_get_attr(doc,node);
        attr;
@@ -2595,11 +3237,27 @@ s_jxhtml_start_pre_tag(void *pdoc, Node *node)
   }
 
   if (IS_CSS_ON(jxhtml->entryp)) {
-    s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
+    if (style) {
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
+      
+      css_property_t *cur;
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
+    }
   }
 
   jxhtml->pre_flag++;
-  W_L("<pre>");
+  W_L("<pre");
+  if (css_clear) {
+    W_L(" style=\"");
+    W_L("clear:");
+    W_V(css_clear);
+    W_L(";");
+    W_L("\"");
+  }
+  W_L(">");
   return jxhtml->out;
 }
 
@@ -2644,6 +3302,8 @@ s_jxhtml_start_ul_tag(void *pdoc, Node *node)
   Attr     *attr;
   char     *attr_type = NULL;
   char     *attr_style = NULL;
+  char     *css_clear  = NULL;
+  
   /*--------------------------------------------------------------------------*/
   /* Get Attributes                                                           */
   /*--------------------------------------------------------------------------*/
@@ -2662,9 +3322,11 @@ s_jxhtml_start_ul_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "list-style-type");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
+      
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('d','D',"disc",cur->value)) {
@@ -2677,14 +3339,24 @@ s_jxhtml_start_ul_tag(void *pdoc, Node *node)
           attr_type = apr_pstrdup(doc->pool, "square");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
   W_L("<ul");
-  if (attr_type) {
+  if (attr_type || css_clear) {
     W_L(" style=\"");
-    W_L("list-style-type:");
-    W_V(attr_type);
-    W_L(";");
+    if (attr_type ){
+      W_L("list-style-type:");
+      W_V(attr_type);
+      W_L(";");
+    }
+    if (css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -2735,6 +3407,10 @@ s_jxhtml_start_hr_tag(void *pdoc, Node *node)
   char        *attr_noshade = NULL;
   char        *attr_style   = NULL;
   char        *attr_color   = NULL;
+  
+  char        *style_float  = NULL;
+  char        *style_border_color = NULL;
+  char        *css_clear          = NULL;
 
   jxhtml   = GET_JXHTML(pdoc);
   doc     = jxhtml->doc;
@@ -2817,19 +3493,39 @@ s_jxhtml_start_hr_tag(void *pdoc, Node *node)
       css_property_t *border_style_prop = chxj_css_get_property_value(doc, style, "border-style");
       css_property_t *height_prop       = chxj_css_get_property_value(doc, style, "height");
       css_property_t *width_prop        = chxj_css_get_property_value(doc, style, "width");
+      
+      css_property_t *bgcolor_prop      = chxj_css_get_property_value(doc, style, "background-color");
+      css_property_t *float_prop        = chxj_css_get_property_value(doc, style, "float");
+      css_property_t *border_color_prop = chxj_css_get_property_value(doc, style, "border-color");
+      css_property_t *clear_prop        = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
+      
       for (cur = border_style_prop->next; cur != border_style_prop; cur = cur->next) {
         if (STRCASEEQ('s','S',"solid",cur->value)) {
           attr_noshade = "noshade";
         }
       }
       for (cur = height_prop->next; cur != height_prop; cur = cur->next) {
+        attr_size = apr_pstrdup(doc->pool, cur->value);
+      }
+      if(!attr_color){
+          for(cur = bgcolor_prop->next; cur != bgcolor_prop; cur = cur->next){
+          char *tmp   = apr_pstrdup(doc->pool,cur->value);
+          attr_color  = apr_pstrdup(doc->pool,tmp);
+        }
+      }
+      for (cur = float_prop->next; cur != float_prop; cur = cur->next) {
         char *tmp = apr_pstrdup(doc->pool, cur->value);
-        char *tmpp = strstr(tmp, "px");
-        if (tmpp) { 
-          attr_size = apr_pstrdup(doc->pool, tmp);
+        char *tmpp = strstr(tmp,"none");
+        if(tmpp){
+          style_float = "center";
+        }
+        else{
+          style_float = apr_pstrdup(doc->pool,tmp);
         }
       }
+      
+      
       for (cur = width_prop->next; cur != width_prop; cur = cur->next) {
         char *tmp = apr_pstrdup(doc->pool, cur->value);
         char *tmpp = strstr(tmp, "px");
@@ -2843,6 +3539,16 @@ s_jxhtml_start_hr_tag(void *pdoc, Node *node)
           }
         }
       }
+      
+      for (cur = border_color_prop->next; cur != border_color_prop; cur = cur->next) {
+        char *tmp = apr_pstrdup(doc->pool, cur->value);
+        if(tmp){
+          style_border_color = apr_pstrdup(doc->pool, tmp);
+        }
+      }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
   W_L("<hr");
@@ -2851,12 +3557,19 @@ s_jxhtml_start_hr_tag(void *pdoc, Node *node)
     W_V(attr_align);
     W_L("\"");
   }
-  if (attr_size || attr_width || attr_noshade) {
+  else{
+    if(style_float){
+      W_L(" align=\"");
+      W_V(style_float);
+      W_L("\"");
+    }
+  }
+  if (attr_size || attr_width || attr_noshade || style_border_color || css_clear) {
     W_L(" style=\"");
     if (attr_size) {
       W_L("height:");
       W_V(attr_size);
-      if (!strstr(attr_size, "px")) {
+      if (chxj_chk_numeric(attr_size) == 0) {
         W_L("px");
       }
       W_L(";");
@@ -2872,6 +3585,16 @@ s_jxhtml_start_hr_tag(void *pdoc, Node *node)
     if (attr_noshade) {
       W_L("border-style:solid;");
     }
+    if(style_border_color){
+      W_L("border-color:");
+      W_V(style_border_color);
+      W_V(";");
+    }
+    if (css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   if (attr_color) {
@@ -2879,6 +3602,7 @@ s_jxhtml_start_hr_tag(void *pdoc, Node *node)
     W_V(attr_color);
     W_L("\"");
   }
+  
   W_L(" />");
 
   return jxhtml->out;
@@ -2922,6 +3646,17 @@ s_jxhtml_start_img_tag(void *pdoc, Node *node)
   char        *attr_align  = NULL;
   char        *attr_alt    = NULL;
   char        *attr_style  = NULL;
+  char        *attr_hspace = NULL;
+  char        *attr_vspace = NULL;
+  
+  char        *css_float          = NULL;
+  char        *css_margin_left    = NULL;
+  char        *css_margin_right   = NULL;
+  char        *css_margin_top     = NULL;
+  char        *css_margin_bottom  = NULL;
+  char        *css_display        = NULL;
+  char        *css_valign         = NULL;
+  
 #ifndef IMG_NOT_CONVERT_FILENAME
   device_table  *spec = jxhtml->spec;
 #endif
@@ -2942,12 +3677,14 @@ s_jxhtml_start_img_tag(void *pdoc, Node *node)
       value = chxj_encoding_parameter(r, value, 1);
       value = chxj_jreserved_tag_to_safe_for_query_string(r, value, jxhtml->entryp, 1);
       value = chxj_add_cookie_no_update_parameter(r, value);
+      value = chxj_img_rewrite_parameter(r,jxhtml->conf,value);
       attr_src = value;
 #else
       value = chxj_img_conv(r, spec, value);
       value = chxj_encoding_parameter(r, value, 1);
       value = chxj_jreserved_tag_to_safe_for_query_string(r, value, jxhtml->entryp, 1);
       value = chxj_add_cookie_no_update_parameter(r, value);
+      value = chxj_img_rewrite_parameter(r,jxhtml->conf,value);
       attr_src = value;
 #endif
     }
@@ -2958,13 +3695,13 @@ s_jxhtml_start_img_tag(void *pdoc, Node *node)
       if (value) {
         if (STRCASEEQ('t','T',"top",   value) ||
             STRCASEEQ('m','M',"middle",value) ||
-            STRCASEEQ('b','B',"bottom",value) ||
-            STRCASEEQ('l','L',"left",  value) ||
-            STRCASEEQ('r','R',"right", value)) {
-          attr_align = value;
+            STRCASEEQ('b','B',"bottom",value)){
+          css_valign = value;
+        }else if (STRCASEEQ('l','L',"left",  value) || STRCASEEQ('r','R',"right", value)) {
+          css_float = value;
         }
         else if (STRCASEEQ('c','C',"center",value)) {
-          attr_align = apr_pstrdup(doc->pool, "middle");
+          css_valign = apr_pstrdup(doc->pool, "middle");
         }
       }
     }
@@ -2984,13 +3721,13 @@ s_jxhtml_start_img_tag(void *pdoc, Node *node)
       /*----------------------------------------------------------------------*/
       /* CHTML 1.0                                                            */
       /*----------------------------------------------------------------------*/
-      /* ignore */
+      attr_hspace = value;
     }
     else if (STRCASEEQ('v','V',"vspace",name)) {
       /*----------------------------------------------------------------------*/
       /* CHTML 1.0                                                            */
       /*----------------------------------------------------------------------*/
-      /* ignore */
+      attr_vspace = value;
     }
     else if (STRCASEEQ('a','A',"alt",name) && value && *value) {
       /*----------------------------------------------------------------------*/
@@ -3012,6 +3749,12 @@ s_jxhtml_start_img_tag(void *pdoc, Node *node)
       css_property_t *height_prop = chxj_css_get_property_value(doc, style, "height");
       css_property_t *width_prop  = chxj_css_get_property_value(doc, style, "width");
       css_property_t *valign_prop = chxj_css_get_property_value(doc, style, "vertical-align");
+      css_property_t *margin_left_prop   = chxj_css_get_property_value(doc, style, "margin-left");
+      css_property_t *margin_right_prop  = chxj_css_get_property_value(doc, style, "margin-right");
+      css_property_t *margin_top_prop    = chxj_css_get_property_value(doc, style, "margin-top");
+      css_property_t *margin_bottom_prop = chxj_css_get_property_value(doc, style, "margin-bottom");
+      
+      
       css_property_t *cur;
       for (cur = height_prop->next; cur != height_prop; cur = cur->next) {
         attr_height = apr_pstrdup(doc->pool, cur->value);
@@ -3019,8 +3762,41 @@ s_jxhtml_start_img_tag(void *pdoc, Node *node)
       for (cur = width_prop->next; cur != width_prop; cur = cur->next) {
         attr_width = apr_pstrdup(doc->pool, cur->value);
       }
-      for (cur = valign_prop->next; cur != valign_prop; cur = cur->next) {
-        attr_align = apr_pstrdup(doc->pool, cur->value);
+      if(!css_valign){
+        for (cur = valign_prop->next; cur != valign_prop; cur = cur->next) {
+          css_valign = apr_pstrdup(doc->pool, cur->value);
+        }
+      }
+      if (! attr_hspace) {
+        for (cur = margin_left_prop->next; cur != margin_left_prop; cur = cur->next) {
+          css_margin_left   = apr_pstrdup(doc->pool, cur->value);
+        }
+        for (cur = margin_right_prop->next; cur != margin_right_prop; cur = cur->next) {
+          css_margin_right  = apr_pstrdup(doc->pool, cur->value);
+        }
+      }
+      if (! attr_vspace) {
+        for (cur = margin_top_prop->next; cur != margin_top_prop; cur = cur->next) {
+          css_margin_top = apr_pstrdup(doc->pool, cur->value);
+        }
+        for (cur = margin_bottom_prop->next; cur != margin_bottom_prop; cur = cur->next) {
+          css_margin_bottom = apr_pstrdup(doc->pool, cur->value);
+        }
+      }
+      if(!css_float){
+        css_property_t *float_prop = chxj_css_get_property_value(doc, style, "float");
+        for (cur = float_prop->next; cur != float_prop; cur = cur->next) {
+          css_float = apr_pstrdup(doc->pool, cur->value);
+        }
+      }
+      
+      css_property_t *display_prop       = chxj_css_get_property_value(doc, style, "display");
+      for (cur = display_prop->next; cur != display_prop; cur = cur->next) {
+        char *tmp = apr_pstrdup(doc->pool, cur->value);
+        char *tmpp = strstr(tmp, "none");
+        if(tmpp){
+          css_display = apr_pstrdup(doc->pool, tmp);
+        }
       }
     }
   }
@@ -3031,11 +3807,64 @@ s_jxhtml_start_img_tag(void *pdoc, Node *node)
     W_V(attr_src);
     W_L("\"");
   }
-  if (attr_align) {
-    W_L(" align=\"");
-    W_V(attr_align); 
+  if (attr_hspace || attr_vspace || css_float || css_margin_left || css_margin_right || css_margin_top || css_margin_bottom || css_valign || css_display) {
+    W_L(" style=\"");
+    if(css_float){
+      W_L("float:");
+      W_V(css_float);
+      W_L(";");
+    }
+    if(css_valign){
+      W_L("vertical-align:");
+      W_V(css_valign);
+      W_L(";");
+    }
+    if (attr_hspace) {
+      W_L("margin-left:");
+      W_V(attr_hspace);
+      W_L(";");
+      W_L("margin-right:");
+      W_V(attr_hspace);
+      W_L(";");
+    }
+    else{
+      if(css_margin_left){
+        W_L("margin-left:");
+        W_V(css_margin_left);
+        W_L(";");
+      }
+      if(css_margin_right){
+        W_L("margin-right:");
+        W_V(css_margin_right);
+        W_L(";");
+      }
+    }
+    if (attr_vspace) {
+      W_L("margin-top:");
+      W_V(attr_vspace);
+      W_L(";");
+      W_L("margin-bottom:");
+      W_V(attr_vspace);
+      W_L(";");
+    }
+    else{
+      if(css_margin_top){
+        W_L("margin-top:");
+        W_V(css_margin_top);
+        W_L(";");
+      }
+      if(css_margin_bottom){
+        W_L("margin-bottom:");
+        W_V(css_margin_bottom);
+        W_L(";");
+      }
+    }
+    if(css_display){
+      W_L("display:none;");
+    }
     W_L("\"");
   }
+  
   if (attr_width) {
     W_L(" width=\"");
     W_V(attr_width);
@@ -3141,7 +3970,7 @@ s_jxhtml_start_select_tag(void *pdoc, Node *node)
   W_L(">");
 
   if (IS_CSS_ON(jxhtml->entryp)) {
-    s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
   }
 
   return jxhtml->out;
@@ -3225,7 +4054,7 @@ s_jxhtml_start_option_tag(void *pdoc, Node *node)
   W_L(">");
 
   if (IS_CSS_ON(jxhtml->entryp)) {
-    s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
   }
 
   return jxhtml->out;
@@ -3280,6 +4109,7 @@ s_jxhtml_start_div_tag(void *pdoc, Node *node)
   char        *attr_color             = NULL;
   char        *attr_bgcolor           = NULL;
   char        *attr_font_size         = NULL;
+  char        *css_clear              = NULL;
 
   jxhtml = GET_JXHTML(pdoc);
   doc   = jxhtml->doc;
@@ -3313,6 +4143,7 @@ s_jxhtml_start_div_tag(void *pdoc, Node *node)
       css_property_t *font_size_prop         = chxj_css_get_property_value(doc, style, "font-size");
       css_property_t *background_color_prop  = chxj_css_get_property_value(doc, style, "background-color");
       css_property_t *background_prop        = chxj_css_get_property_value(doc, style, "background");
+      css_property_t *clear_prop             = chxj_css_get_property_value(doc, style, "clear");
 
       css_property_t *cur;
       for (cur = display_prop->next; cur != display_prop; cur = cur->next) {
@@ -3374,9 +4205,17 @@ s_jxhtml_start_div_tag(void *pdoc, Node *node)
           }
         }
         for (cur = wap_marquee_loop_prop->next; cur != wap_marquee_loop_prop; cur = cur->next) {
-          attr_wap_marquee_loop = apr_pstrdup(doc->pool, cur->value);
+          if(strcmp(cur->value,"0") == 0 || strcmp(cur->value,"-1") == 0){
+            attr_wap_marquee_loop = "infinite";
+          }
+          else{
+            attr_wap_marquee_loop = apr_pstrdup(doc->pool, cur->value);
+          }
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }  
   W_L("<div");
@@ -3388,7 +4227,8 @@ s_jxhtml_start_div_tag(void *pdoc, Node *node)
       || attr_wap_marquee_loop
       || attr_color
       || attr_bgcolor
-      || attr_font_size) {
+      || attr_font_size
+      || css_clear ) {
     W_L(" style=\"");
     if (attr_align) {
       W_L("text-align:");
@@ -3435,6 +4275,11 @@ s_jxhtml_start_div_tag(void *pdoc, Node *node)
       W_V(attr_font_size);
       W_L(";");
     }
+    if (css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -3586,12 +4431,17 @@ s_jxhtml_start_textarea_tag(void *pdoc, Node *node)
     W_L("\"");
   }
   if (attr_istyle) {
-    char *vv = qs_conv_istyle_to_format(doc->buf.pool, attr_istyle);
-    W_L(" style=\"");
-    W_L("-wap-input-format:&quot;*");
-    W_V(vv);
-    W_L("&quot;;");
+    W_L(" istyle=\"");
+    W_V(attr_istyle);
     W_L("\"");
+
+    char *vv = s_jxhtml_istyle_to_wap_input_format(doc->buf.pool,attr_istyle);
+        W_L(" style=\"");
+        W_L("-wap-input-format:");
+        W_V(vv);
+        W_L(";");
+        W_L("\"");
+
   }
   W_L(">");
   return jxhtml->out;
@@ -3754,6 +4604,7 @@ s_jxhtml_start_blockquote_tag(void *pdoc, Node *node)
   char     *attr_style = NULL;
   char     *attr_color = NULL;
   char     *attr_size  = NULL;
+  char     *css_clear  = NULL;
 
   jxhtml  = GET_JXHTML(pdoc);
   doc     = jxhtml->doc;
@@ -3767,10 +4618,12 @@ s_jxhtml_start_blockquote_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop = chxj_css_get_property_value(doc, style, "color");
       css_property_t *font_size_prop = chxj_css_get_property_value(doc, style, "font-size");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
+      
       css_property_t *cur;
       for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
         if (cur->value && *cur->value) {
@@ -3802,10 +4655,13 @@ s_jxhtml_start_blockquote_tag(void *pdoc, Node *node)
           }
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
   W_L("<blockquote");
-  if (attr_color || attr_size) {
+  if (attr_color || attr_size || css_clear) {
     W_L(" style=\"");
     if (attr_color) {
       attr_color = chxj_css_rgb_func_to_value(doc->pool, attr_color);
@@ -3818,6 +4674,11 @@ s_jxhtml_start_blockquote_tag(void *pdoc, Node *node)
       W_V(attr_size);
       W_L(";");
     }
+    if (css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -3879,7 +4740,7 @@ s_jxhtml_start_dir_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
@@ -3986,6 +4847,8 @@ s_jxhtml_start_dl_tag(void *pdoc, Node *node)
   char      *attr_style = NULL;
   char      *attr_color = NULL;
   char      *attr_size  = NULL;
+  char      *css_clear  = NULL;
+  
   for (attr = qs_get_attr(doc,node);
        attr;
        attr = qs_get_next_attr(doc,attr)) {
@@ -3996,10 +4859,12 @@ s_jxhtml_start_dl_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
+      
       css_property_t *cur;
       for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
         if (cur->value && *cur->value) {
@@ -4031,10 +4896,13 @@ s_jxhtml_start_dl_tag(void *pdoc, Node *node)
           }
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
   W_L("<dl");
-  if (attr_color || attr_size) {
+  if (attr_color || attr_size || css_clear) {
     W_L(" style=\"");
     if (attr_color) {
       attr_color = chxj_css_rgb_func_to_value(doc->pool, attr_color);
@@ -4047,6 +4915,11 @@ s_jxhtml_start_dl_tag(void *pdoc, Node *node)
       W_V(attr_size);
       W_L(";");
     }
+    if (css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -4102,7 +4975,7 @@ s_jxhtml_start_dt_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
@@ -4208,7 +5081,7 @@ s_jxhtml_start_dd_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
@@ -4304,6 +5177,7 @@ s_jxhtml_start_h1_tag(void *pdoc, Node *node)
   Attr        *attr;
   char        *attr_style = NULL;
   char        *attr_align = NULL;
+  char        *css_clear  = NULL;
 
   jxhtml = GET_JXHTML(pdoc);
   doc    = jxhtml->doc;
@@ -4324,9 +5198,10 @@ s_jxhtml_start_h1_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -4339,17 +5214,35 @@ s_jxhtml_start_h1_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
-  W_L("<div");
-  W_L(" style=\""); 
-  W_L("font-size:xx-large;");
-  if (attr_align) {
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";");
+  W_L("<h1");
+  if (attr_align || css_clear ) {
+    W_L(" style=\"");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
+    W_L("\"");
   }
-  W_L("\">");
+  W_L(">");
 
   return jxhtml->out;
 }
@@ -4374,7 +5267,7 @@ s_jxhtml_end_h1_tag(void *pdoc, Node *UNUSED(child))
   doc     = jxhtml->doc;
   r       = doc->r;
   
-  W_L("</div>");
+  W_L("</h1>");
   if (IS_CSS_ON(jxhtml->entryp)) {
     chxj_css_pop_prop_list(jxhtml->css_prop_stack);
   }
@@ -4400,6 +5293,7 @@ s_jxhtml_start_h2_tag(void *pdoc, Node *node)
   Attr        *attr;
   char        *attr_style = NULL;
   char        *attr_align = NULL;
+  char        *css_clear  = NULL;
 
   jxhtml   = GET_JXHTML(pdoc);
   doc     = jxhtml->doc;
@@ -4420,9 +5314,10 @@ s_jxhtml_start_h2_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -4435,17 +5330,35 @@ s_jxhtml_start_h2_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
-  W_L("<div");
-  W_L(" style=\""); 
-  W_L("font-size:x-large;");
-  if (attr_align) {
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";");
+  W_L("<h2");
+  if (attr_align || css_clear ) {
+    W_L(" style=\"");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
+    W_L("\"");
   }
-  W_L("\">");
+  W_L(">");
 
   return jxhtml->out;
 }
@@ -4470,7 +5383,7 @@ s_jxhtml_end_h2_tag(void *pdoc, Node *UNUSED(child))
   doc     = jxhtml->doc;
   r       = doc->r;
   
-  W_L("</div>");
+  W_L("</h2>");
   if (IS_CSS_ON(jxhtml->entryp)) {
     chxj_css_pop_prop_list(jxhtml->css_prop_stack);
   }
@@ -4495,6 +5408,7 @@ s_jxhtml_start_h3_tag(void *pdoc, Node *node)
   Attr        *attr;
   char        *attr_style = NULL;
   char        *attr_align = NULL;
+  char        *css_clear  = NULL;
 
   jxhtml   = GET_JXHTML(pdoc);
   doc     = jxhtml->doc;
@@ -4515,9 +5429,10 @@ s_jxhtml_start_h3_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -4530,17 +5445,35 @@ s_jxhtml_start_h3_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
-  W_L("<div");
-  W_L(" style=\""); 
-  W_L("font-size:large;");
-  if (attr_align) {
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";");
+  W_L("<h3");
+  if (attr_align || css_clear ) {
+    W_L(" style=\"");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
+    W_L("\"");
   }
-  W_L("\">");
+  W_L(">");
 
   return jxhtml->out;
 }
@@ -4565,7 +5498,7 @@ s_jxhtml_end_h3_tag(void *pdoc, Node *UNUSED(child))
   doc     = jxhtml->doc;
   r       = doc->r;
 
-  W_L("</div>");
+  W_L("</h3>");
   if (IS_CSS_ON(jxhtml->entryp)) {
     chxj_css_pop_prop_list(jxhtml->css_prop_stack);
   }
@@ -4590,6 +5523,7 @@ s_jxhtml_start_h4_tag(void *pdoc, Node *node)
   Attr        *attr;
   char        *attr_style = NULL;
   char        *attr_align = NULL;
+  char        *css_clear  = NULL;
 
   jxhtml   = GET_JXHTML(pdoc);
   doc     = jxhtml->doc;
@@ -4610,9 +5544,10 @@ s_jxhtml_start_h4_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -4621,21 +5556,39 @@ s_jxhtml_start_h4_tag(void *pdoc, Node *node)
         else if (STRCASEEQ('c','C',"center",cur->value)) {
           attr_align = apr_pstrdup(doc->pool, "center");
         }
-        else if (STRCASEEQ('r','R',"right",cur->value)) {
-          attr_align = apr_pstrdup(doc->pool, "right");
+        else if (STRCASEEQ('r','R',"right",cur->value)) {
+          attr_align = apr_pstrdup(doc->pool, "right");
+        }
+      }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
         }
       }
     }
   }
-  W_L("<div");
-  W_L(" style=\""); 
-  W_L("font-size:small;");
-  if (attr_align) {
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";");
+  W_L("<h4");
+  if (attr_align || css_clear ) {
+    W_L(" style=\"");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
+    W_L("\"");
   }
-  W_L("\">");
+  W_L(">");
 
   return jxhtml->out;
 }
@@ -4660,7 +5613,7 @@ s_jxhtml_end_h4_tag(void *pdoc, Node *UNUSED(child))
   doc     = jxhtml->doc;
   r       = doc->r;
   
-  W_L("</div>");
+  W_L("</h4>");
   if (IS_CSS_ON(jxhtml->entryp)) {
     chxj_css_pop_prop_list(jxhtml->css_prop_stack);
   }
@@ -4686,6 +5639,7 @@ s_jxhtml_start_h5_tag(void *pdoc, Node *node)
   Attr        *attr;
   char        *attr_style = NULL;
   char        *attr_align = NULL;
+  char        *css_clear  = NULL;
 
   jxhtml   = GET_JXHTML(pdoc);
   doc     = jxhtml->doc;
@@ -4706,9 +5660,10 @@ s_jxhtml_start_h5_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -4721,17 +5676,35 @@ s_jxhtml_start_h5_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
-  W_L("<div");
-  W_L(" style=\""); 
-  W_L("font-size:x-small;");
-  if (attr_align) {
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";");
+  W_L("<h5");
+  if (attr_align || css_clear ) {
+    W_L(" style=\"");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
+    W_L("\"");
   }
-  W_L("\">");
+  W_L(">");
 
   return jxhtml->out;
 }
@@ -4756,7 +5729,7 @@ s_jxhtml_end_h5_tag(void *pdoc, Node *UNUSED(child))
   doc     = jxhtml->doc;
   r       = doc->r;
   
-  W_L("</div>");
+  W_L("</h5>");
   if (IS_CSS_ON(jxhtml->entryp)) {
     chxj_css_pop_prop_list(jxhtml->css_prop_stack);
   }
@@ -4782,6 +5755,7 @@ s_jxhtml_start_h6_tag(void *pdoc, Node *node)
   Attr        *attr;
   char        *attr_style = NULL;
   char        *attr_align = NULL;
+  char        *css_clear  = NULL;
 
   jxhtml   = GET_JXHTML(pdoc);
   doc     = jxhtml->doc;
@@ -4802,9 +5776,10 @@ s_jxhtml_start_h6_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -4817,17 +5792,35 @@ s_jxhtml_start_h6_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
-  W_L("<div");
-  W_L(" style=\""); 
-  W_L("font-size:xx-small;");
-  if (attr_align) {
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";");
+  W_L("<h6");
+  if (attr_align || css_clear ) {
+    W_L(" style=\"");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
+    W_L("\"");
   }
-  W_L("\">");
+  W_L(">");
 
   return jxhtml->out;
 }
@@ -4852,7 +5845,7 @@ s_jxhtml_end_h6_tag(void *pdoc, Node *UNUSED(child))
   doc     = jxhtml->doc;
   r       = doc->r;
   
-  W_L("</div>");
+  W_L("</h6>");
   if (IS_CSS_ON(jxhtml->entryp)) {
     chxj_css_pop_prop_list(jxhtml->css_prop_stack);
   }
@@ -4894,7 +5887,7 @@ s_jxhtml_start_menu_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
@@ -4958,27 +5951,6 @@ s_jxhtml_start_menu_tag(void *pdoc, Node *node)
     }
     W_L("\"");
   }
-  W_L("<menu");
-  if (attr_type || attr_color || attr_size) {
-    W_L(" style=\"");
-    if (attr_type) {
-      W_L("list-style-type:");
-      W_V(attr_type);
-      W_L(";");
-    }
-    if (attr_color) {
-      attr_color = chxj_css_rgb_func_to_value(doc->pool, attr_color);
-      W_L("color:");
-      W_V(attr_color);
-      W_L(";");
-    }
-    if (attr_size) {
-      W_L("font-size:");
-      W_V(attr_size);
-      W_L(";");
-    }
-    W_L("\"");
-  }
   W_L(">");
   return jxhtml->out;
 }
@@ -5087,7 +6059,7 @@ s_jxhtml_start_blink_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
@@ -5219,7 +6191,7 @@ s_jxhtml_start_marquee_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop  = chxj_css_get_property_value(doc, style, "font-size");
@@ -5464,6 +6436,7 @@ s_jxhtml_start_span_tag(void *pdoc, Node *node)
   char *attr_marquee_dir = NULL;
   char *attr_marquee_style = NULL;
   char *attr_marquee_loop = NULL;
+  char *css_bgcolor        = NULL;
 
   jxhtml = GET_JXHTML(pdoc);
   doc     = jxhtml->doc;
@@ -5478,7 +6451,7 @@ s_jxhtml_start_span_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(jxhtml->entryp)) {
-    css_prop_list_t *style = s_jxhtml_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_jxhtml_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop = chxj_css_get_property_value(doc, style, "font-size");
@@ -5488,6 +6461,8 @@ s_jxhtml_start_span_tag(void *pdoc, Node *node)
       css_property_t *marquee_dir_prop = chxj_css_get_property_value(doc, style, "-wap-marquee-dir");
       css_property_t *marquee_style_prop = chxj_css_get_property_value(doc, style, "-wap-marquee-style");
       css_property_t *marquee_loop_prop = chxj_css_get_property_value(doc, style, "-wap-marquee-loop");
+      css_property_t *bgcolor_prop = chxj_css_get_property_value(doc, style, "background-color");
+      
       css_property_t *cur;
       for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
         attr_color = apr_pstrdup(doc->pool, cur->value);
@@ -5534,7 +6509,12 @@ s_jxhtml_start_span_tag(void *pdoc, Node *node)
       }
       for (cur = marquee_loop_prop->next; cur != marquee_loop_prop; cur = cur->next) {
         if (cur->value && *cur->value) {
-          attr_marquee_loop = apr_pstrdup(doc->pool, cur->value);
+          if(strcmp(cur->value,"0") == 0 || strcmp(cur->value,"-1") == 0){
+            attr_marquee_loop = "infinite";
+          }
+          else{
+            attr_marquee_loop = apr_pstrdup(doc->pool, cur->value);
+          }
         }
       }
       for (cur = text_align_prop->next; cur != text_align_prop; cur = cur->next) {
@@ -5548,11 +6528,16 @@ s_jxhtml_start_span_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = bgcolor_prop->next; cur != bgcolor_prop; cur = cur->next) {
+        if (cur->value && *cur->value) {
+          css_bgcolor = apr_pstrdup(doc->pool, cur->value);
+        }
+      }
     }
   }
 
   W_L("<span");
-  if (attr_color || attr_size || attr_align || attr_blink || attr_marquee) {
+  if (attr_color || attr_size || attr_align || attr_blink || attr_marquee || css_bgcolor) {
     W_L(" style=\"");
     if (attr_color) {
       attr_color = chxj_css_rgb_func_to_value(doc->pool, attr_color);
@@ -5593,6 +6578,11 @@ s_jxhtml_start_span_tag(void *pdoc, Node *node)
         W_L(";");
       }
     }
+    if(css_bgcolor){
+      W_L("background-color:");
+      W_V(css_bgcolor);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -5669,6 +6659,257 @@ s_jxhtml_style_tag(void *pdoc, Node *node)
   }
   return jxhtml->out;
 }
+/**
+ * It is a handler who processes the OBJECT tag.
+ *
+ * @param pdoc  [i/o] The pointer to the JHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The OBJECT tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_jxhtml_start_object_tag(void *pdoc, Node *node)
+{
+  jxhtml_t *jxhtml = GET_JXHTML(pdoc);
+  Doc *doc = jxhtml->doc;
+  Attr *attr;
+  
+  char *attr_id            = NULL;
+  char *attr_width         = NULL;
+  char *attr_height        = NULL;
+  char *attr_data          = NULL;
+  char *attr_type          = NULL;
+  char *attr_declare       = NULL;
+  char *attr_classid       = NULL;
+  char *attr_codebase      = NULL;
+  
+  /*--------------------------------------------------------------------------*/
+  /* Get Attributes                                                           */
+  /*--------------------------------------------------------------------------*/
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name   = qs_get_attr_name(doc,attr);
+    char *value  = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('i','I',"id",name)) {
+      attr_id = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('w','W',"width",name)) {
+      attr_width = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('h','H',"height",name)) {
+      attr_height = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('d','D',"data",name)) {
+      attr_data = apr_pstrdup(doc->pool, value);
+    }
+    else if  (STRCASEEQ('t','T',"type",name)) {
+      attr_type = apr_pstrdup(doc->pool, value);
+    }
+    else if  (STRCASEEQ('d','D',"declare",name)) {
+      attr_declare = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('c','C',"classid",name)) {
+      attr_classid = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('c','C',"codebase",name)) {
+      attr_codebase = apr_pstrdup(doc->pool, value);
+    }
+    
+  }
+  W_L("<object");
+  
+  if(attr_id){
+    W_L(" id=\"");
+    W_V(attr_id);
+    W_L("\"");
+  }
+  if(attr_width){
+    W_L(" width=\"");
+    W_V(attr_width);
+    W_L("\"");
+  }
+  if(attr_height){
+    W_L(" height=\"");
+    W_V(attr_height);
+    W_L("\"");
+  }
+  if(attr_data){
+    W_L(" data=\"");
+    W_V(attr_data);
+    W_L("\"");
+  }
+  if(attr_type){
+    W_L(" type=\"");
+    W_V(attr_type);
+    W_L("\"");
+  }
+  if(attr_declare){
+    W_L(" declare=\"declare\"");
+  }
+  if(attr_classid){
+    W_L(" classid=\"");
+    W_V(attr_classid);
+    W_L("\"");
+  }
+  if(attr_codebase){
+    W_L(" codebase=\"");
+    W_V(attr_codebase);
+    W_L("\"");
+  }
+  
+  W_L(">");
+  return jxhtml->out;
+}
+/**
+ * It is a handler who processes the OBJECT tag.
+ *
+ * @param pdoc  [i/o] The pointer to the JHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The OBJECT tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_jxhtml_end_object_tag(void *pdoc, Node *UNUSED(node))
+{
+  jxhtml_t *jxhtml = GET_JXHTML(pdoc);
+  Doc *doc = jxhtml->doc;
+
+  W_L("</object>");
+  return jxhtml->out;
+}
+/**
+ * It is a handler who processes the OBJECT tag.
+ *
+ * @param pdoc  [i/o] The pointer to the JHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The OBJECT tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_jxhtml_start_param_tag(void *pdoc, Node *node)
+{
+  jxhtml_t *jxhtml = GET_JXHTML(pdoc);
+  Doc *doc = jxhtml->doc;
+
+  Attr *attr;
+  char *attr_style         = NULL;
+  char *attr_name          = NULL;
+  char *attr_value         = NULL;
+  char *attr_valuetype     = NULL;
+  
+  /*--------------------------------------------------------------------------*/
+  /* Get Attributes                                                           */
+  /*--------------------------------------------------------------------------*/
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name   = qs_get_attr_name(doc,attr);
+    char *value  = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('n','N',"name",name)) {
+      attr_name = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('v','V',"value",name)) {
+      attr_value = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('v','V',"valuetype",name)) {
+      attr_valuetype = apr_pstrdup(doc->pool, value);
+    }
+  }
+  W_L("<param");
+  
+  if(attr_name){
+    W_L(" name=\"");
+    W_V(attr_name);
+    W_L("\"");
+  }
+  if(attr_value){
+    W_L(" value=\"");
+    W_V(attr_value);
+    W_L("\"");
+  }
+  if(attr_valuetype){
+    W_L(" valuetype=\"");
+    W_V(attr_valuetype);
+    W_L("\"");
+  }
+  W_L(" />");
+  return jxhtml->out;
+}
+/**
+ * It is a handler who processes the CAPTION tag.
+ *
+ * @param pdoc  [i/o] The pointer to the JXHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The CAPTION tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_jxhtml_start_caption_tag(void *pdoc, Node *node)
+{
+  jxhtml_t    *jxhtml;
+  Doc         *doc;
+  request_rec *r;
+  Attr        *attr;
+  char        *attr_style = NULL;
+  char        *attr_align = NULL;
+
+  jxhtml = GET_JXHTML(pdoc);
+  doc    = jxhtml->doc;
+  r      = doc->r;
+
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('a','A',"align", name)) {
+      if (value && 
+          (STRCASEEQ('l','L',"left",value) 
+        || STRCASEEQ('r','R',"right",value) 
+        || STRCASEEQ('t','T',"top",value)
+        || STRCASEEQ('b','B',"bottom",value) 
+        )) {
+        attr_align = value;
+      }
+    }
+    else if (STRCASEEQ('s','S',"style",name) && value && *value) {
+      attr_style = value;
+    }
+  }
+  
+  W_L("<caption");
+  if(attr_align){
+    W_L(" align=\"");
+    W_V(attr_align);
+    W_L("\"");
+  }
+  W_L(">");
+
+  return jxhtml->out;
+}
+
+
+/**
+ * It is a handler who processes the CAPTION tag.
+ *
+ * @param pdoc  [i/o] The pointer to the JXHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The CAPTION tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_jxhtml_end_caption_tag(void *pdoc, Node *UNUSED(child)) 
+{
+  jxhtml_t*    jxhtml = GET_JXHTML(pdoc);
+  Doc*          doc   = jxhtml->doc;
+  
+  W_L("</caption>");
+  
+  return jxhtml->out;
+}
+
+
 /*
  * vim:ts=2 et
  */
old mode 100644 (file)
new mode 100755 (executable)
index 72bb193..5a7d42b
@@ -136,6 +136,7 @@ s_set_device_data(Doc *doc, apr_pool_t *p, device_table_list *dtl, Node *node)
 
   dt = apr_pcalloc(p, sizeof(device_table));
   dt->next           = NULL;
+  dt->provider       = CHXJ_PROVIDER_UNKNOWN;
   dt->device_id      = NULL;
   dt->device_name    = NULL;
   dt->html_spec_type = CHXJ_SPEC_Chtml_3_0;
@@ -148,6 +149,7 @@ s_set_device_data(Doc *doc, apr_pool_t *p, device_table_list *dtl, Node *node)
   dt->color          = 256;
   dt->dpi_width      = 96;
   dt->dpi_heigh      = 96;
+  dt->output_encoding = "Shift_JIS";
 
   for (child = qs_get_child_node(doc,node); 
        child ;
@@ -218,36 +220,47 @@ s_set_device_data(Doc *doc, apr_pool_t *p, device_table_list *dtl, Node *node)
           char *vv = qs_get_node_value(doc, ch);
           if (STRCASEEQ('x','X',"xhtml_mobile_1_0",vv)) {
             dt->html_spec_type = CHXJ_SPEC_XHtml_Mobile_1_0;
+            dt->provider       = CHXJ_PROVIDER_AU;
           }
           else if (STRCASEEQ('c','C',"chtml_1_0",vv)) {
             dt->html_spec_type = CHXJ_SPEC_Chtml_1_0;
+            dt->provider       = CHXJ_PROVIDER_DOCOMO;
           }
           else if (STRCASEEQ('c','C',"chtml_2_0",vv)) {
             dt->html_spec_type = CHXJ_SPEC_Chtml_2_0;
+            dt->provider       = CHXJ_PROVIDER_DOCOMO;
           }
           else if (STRCASEEQ('c','C',"chtml_3_0",vv)) {
             dt->html_spec_type = CHXJ_SPEC_Chtml_3_0;
+            dt->provider       = CHXJ_PROVIDER_DOCOMO;
           }
           else if (STRCASEEQ('c','C',"chtml_4_0",vv)) {
             dt->html_spec_type = CHXJ_SPEC_Chtml_4_0;
+            dt->provider       = CHXJ_PROVIDER_DOCOMO;
           }
           else if (STRCASEEQ('c','C',"chtml_5_0",vv)) {
             dt->html_spec_type = CHXJ_SPEC_Chtml_5_0;
+            dt->provider       = CHXJ_PROVIDER_DOCOMO;
           }
           else if (STRCASEEQ('c','C',"chtml_6_0",vv)) {
             dt->html_spec_type = CHXJ_SPEC_Chtml_6_0;
+            dt->provider       = CHXJ_PROVIDER_DOCOMO;
           }
           else if (STRCASEEQ('c','C',"chtml_7_0",vv)) {
             dt->html_spec_type = CHXJ_SPEC_Chtml_7_0;
+            dt->provider       = CHXJ_PROVIDER_DOCOMO;
           }
           else if (STRCASEEQ('h','H',"hdml",vv)) {
             dt->html_spec_type = CHXJ_SPEC_Hdml;
+            dt->provider       = CHXJ_PROVIDER_AU;
           }
           else if (STRCASEEQ('j','J',"jhtml",vv)) {
             dt->html_spec_type = CHXJ_SPEC_Jhtml;
+            dt->provider       = CHXJ_PROVIDER_SOFTBANK;
           }
           else if (STRCASEEQ('j','J',"jxhtml",vv)) {
             dt->html_spec_type = CHXJ_SPEC_Jxhtml;
+            dt->provider       = CHXJ_PROVIDER_SOFTBANK;
           }
         }
       }
@@ -440,6 +453,15 @@ s_set_device_data(Doc *doc, apr_pool_t *p, device_table_list *dtl, Node *node)
           dt->emoji_type = apr_pstrdup(p, qs_get_node_value(doc, ch));
       }
       break;
+    case 'o':
+    case 'O':
+      if (strcasecmp(name, "output_encoding") == 0) {
+        Node *ch = qs_get_child_node(doc, child);
+        if (ch && strcasecmp(qs_get_node_name(doc,ch), "text") == 0){
+          dt->output_encoding = apr_pstrdup(p, qs_get_node_value(doc, ch));
+        }
+      }
+      break;
     default:
       break;
     }
@@ -456,6 +478,87 @@ s_set_device_data(Doc *doc, apr_pool_t *p, device_table_list *dtl, Node *node)
     }
   }
 }
+
+/**
+ * load device_data.xml
+ */
+void
+chxj_load_device_tsv_data(apr_file_t *fp,apr_pool_t *p, mod_chxj_config *conf) 
+{
+  apr_status_t st;
+  
+  char *pstat;
+  char *pair;
+  
+  char *line = apr_palloc(p,256);
+  
+  int is_header = 1;
+  int keynum = 0;
+  int valnum = 0;
+  
+  conf->device_keys = apr_array_make(p,2, sizeof(const char*));
+  conf->device_hash = apr_hash_make(p);
+  
+  while(APR_EOF != (st=apr_file_eof(fp))){
+    st = apr_file_gets(line,1024,fp);
+    if(st == APR_SUCCESS){
+      if(is_header){
+        keynum=0;
+        
+        for(pair = apr_strtok(line,"\t",&pstat); pair != NULL; pair = apr_strtok(NULL,"\t",&pstat)){
+          apr_collapse_spaces(pair,pair);
+          if(keynum < 128){
+            *(const char**)apr_array_push(conf->device_keys) = apr_pstrdup(p,pair);
+          }
+          
+          //ap_log_error(APLOG_MARK, APLOG_CRIT, 0, NULL, "V[[%s]]", pair);
+          keynum++;
+        }
+        is_header = 0;
+      }
+      else{
+        apr_table_t *tsv_table = apr_table_make(p,keynum);
+        valnum = 0;
+        char *uid = NULL;
+        char *provider = NULL;
+        for(pair = apr_strtok(line,"\t",&pstat); pair != NULL; pair = apr_strtok(NULL,"\t",&pstat)){
+          apr_collapse_spaces(pair,pair);
+          if(valnum < keynum){
+            const char *kn = ((const char**)conf->device_keys->elts)[valnum];
+            if(strcasecmp("-",pair) != 0){
+              apr_table_set(tsv_table,kn,pair);
+              if(strcasecmp(kn,"device_id") == 0){
+                uid = apr_pstrdup(p,pair);
+              }
+              else if(strcasecmp(kn,"provider") == 0){
+                if(strcasecmp(pair,"docomo") == 0){
+                  provider = "1";
+                }
+                else if(strcasecmp(pair,"au") == 0){
+                  provider = "2";
+                }
+                else if(strcasecmp(pair,"softbank") == 0){
+                  provider = "3";
+                }
+                else{
+                  provider = apr_pstrdup(p,pair);
+                }
+              }
+              //ap_log_error(APLOG_MARK, APLOG_CRIT, 0, NULL, "[%s] %d:V[%s] = [%s]", uid,valnum,kn,pair);
+            }
+          }
+          valnum++;
+        }
+        if(uid != NULL && *uid && provider != NULL && *provider){
+          char *key = apr_psprintf(p,"%s.%s",provider,uid);
+          //ap_log_error(APLOG_MARK, APLOG_CRIT, 0, NULL, "save hash [%s]",key );
+          apr_hash_set(conf->device_hash,key,APR_HASH_KEY_STRING,tsv_table);
+        }
+      }
+    }
+  }
+}
+
 /*
  * vim:ts=2 et
  */
index d44fa37..16a7f61 100644 (file)
@@ -233,6 +233,7 @@ s_load_emoji_imode_tag(
   em->imode->hex1byte    = 0;
   em->imode->hex2byte    = 0;
   em->imode->string      = NULL;
+  em->imode->color       = NULL;
   em->imode->description = NULL;
 
   for (child = qs_get_child_node(doc, node);
@@ -311,7 +312,24 @@ s_load_emoji_imode_tag(
         }
       }
       break;
+    case 'c':
+    case 'C':
+        if (strcasecmp(name, "color") == 0) {
+          Node* color_node = qs_get_child_node(doc, child);
 
+          if (color_node) {
+            char* cname = qs_get_node_name(doc, color_node);
+            char* cvalue = qs_get_node_value(doc, color_node);
+
+            if ((*cname == 't' || *cname == 'T') && strcasecmp(cname, "text") == 0)
+              em->imode->color = apr_pstrdup(p, cvalue);
+          }
+          else {
+            em->imode->color    = apr_palloc(p, 1);
+            em->imode->color[0] = 0;
+          }
+      }
+      break;
     default:
       break;
     }
index 16cec3e..67fc8d1 100644 (file)
@@ -270,7 +270,13 @@ chxj_node_convert(
       /* <PARAM>                                                              */
       /*----------------------------------------------------------------------*/
       else if (strcasecmp(name, "param") == 0) {
-        /* ignore param tag block. */
+        if (handlers[tagPARAM].start_tag_handler) 
+          handlers[tagPARAM].start_tag_handler(pdoc, child);
+
+        chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
+
+        if (handlers[tagPARAM].end_tag_handler)
+          handlers[tagPARAM].end_tag_handler(pdoc, child);
       }
       else {
         chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
@@ -406,7 +412,13 @@ chxj_node_convert(
       /* <OBJECT>                                                             */
       /*----------------------------------------------------------------------*/
       if (strcasecmp(name, "object") == 0) {
-        /* ignore object block */
+        if (handlers[tagOBJECT].start_tag_handler) 
+          handlers[tagOBJECT].start_tag_handler(pdoc, child);
+
+        chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
+
+        if (handlers[tagOBJECT].end_tag_handler)
+          handlers[tagOBJECT].end_tag_handler(pdoc, child);
       }
       else {
         chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
@@ -789,6 +801,19 @@ chxj_node_convert(
         if (handlers[tagCENTER].end_tag_handler)
           handlers[tagCENTER].end_tag_handler(pdoc, child);
       }
+      else
+      /*----------------------------------------------------------------------*/
+      /* <CAPTION>                                                            */
+      /*----------------------------------------------------------------------*/
+      if (strcasecmp(name, "caption") == 0) {
+        if (handlers[tagCAPTION].start_tag_handler) 
+          handlers[tagCAPTION].start_tag_handler(pdoc, child);
+
+        chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
+
+        if (handlers[tagCAPTION].end_tag_handler)
+          handlers[tagCAPTION].end_tag_handler(pdoc, child);
+      }
       /*----------------------------------------------------------------------*/
       /* <CHXJ:IF>                                                            */
       /*----------------------------------------------------------------------*/
index 1b89ec5..432284e 100644 (file)
@@ -480,7 +480,9 @@ default_chxj_serf_post(request_rec *r, apr_pool_t *ppool, const char *url_path,
   DBG(r, "response:[%s][%" APR_SIZE_T_FMT "]", handler_ctx.response, handler_ctx.response_len);
   serf_connection_close(connection);
   if (handler_ctx.response) {
-    ret = apr_pstrdup(ppool, handler_ctx.response);
+    ret = apr_palloc(ppool, handler_ctx.response_len + 1);
+    memset(ret, 0, handler_ctx.response_len + 1);
+    memcpy(ret, handler_ctx.response, handler_ctx.response_len);
   }
   else {
     ret = apr_pstrdup(ppool, "");
old mode 100644 (file)
new mode 100755 (executable)
index 68247ec..4adb685
@@ -18,6 +18,7 @@
 
 static device_table  UNKNOWN_DEVICE      = {
   .next = NULL,
+  .provider  = CHXJ_PROVIDER_UNKNOWN,
   .device_id = "",
   .device_name = "UNKNOWN",
   .html_spec_type = CHXJ_SPEC_UNKNOWN,
@@ -56,8 +57,30 @@ static device_table  UNKNOWN_DEVICE      = {
   /*--------------------------------------------------------------------------*/
   .color = 15680000,
   .emoji_type = NULL,
+  .output_encoding = "Shift_JIS",
 };
 
+int
+get_boolean_value(request_rec *r,const char *val){
+  switch(*val) {
+    case '0':
+    case 'f':
+    case 'F':
+    case 'n':
+    case 'N':
+      return 0;
+      break;
+    case '1':
+    case 't':
+    case 'T':
+    case 'y':
+    case 'Y':
+      return 1;
+      break;
+  }
+  return -1;
+}
+
 /**
  * The device is specified from UserAgent. 
  * @param r Request_rec is appointed.
@@ -67,6 +90,36 @@ static device_table  UNKNOWN_DEVICE      = {
 device_table *
 chxj_specified_device(request_rec *r, const char *user_agent) 
 {
+  device_table         *returnType = &UNKNOWN_DEVICE;
+  device_table         *dt;
+  mod_chxj_config      *conf;
+  
+  conf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+  
+  DBG(r, "start chxj_specified_device() %d",conf->detect_device_type);
+  
+  if(! user_agent){
+    return returnType;
+  }
+  
+  dt = chxj_specified_device_from_xml(r,user_agent);
+
+  if (conf->detect_device_type == CHXJ_ADD_DETECT_DEVICE_TYPE_TSV ){
+    chxj_specified_device_from_tsv(r,dt,user_agent);
+  }
+  
+  DBG(r, "end chxj_specified_device() %d",conf->detect_device_type);
+  return dt;
+}
+/**
+ * The device is specified from UserAgent. 
+ * @param r Request_rec is appointed.
+ * @param userAgent UserAgent is appointed here,
+ * @return The style which corresponds is returned.
+ */
+device_table *
+chxj_specified_device_from_xml(request_rec *r, const char *user_agent) 
+{
   ap_regmatch_t        match[10];
   device_table         *returnType = &UNKNOWN_DEVICE;
   device_table_list    *dtl;
@@ -115,8 +168,12 @@ chxj_specified_device(request_rec *r, const char *user_agent)
             break;
         }
 
-        if (dt)
+        if (dt){
+          if (conf->detect_device_type > CHXJ_ADD_DETECT_DEVICE_TYPE_NONE ){
+            dt->device_id = device_id;
+          }
           returnType = dt;
+        }
       }
     }
 
@@ -130,6 +187,165 @@ chxj_specified_device(request_rec *r, const char *user_agent)
 
   return returnType;
 }
+/**
+ * The device is specified from TSV file. 
+ * @param r Request_rec is appointed.
+ * @param userAgent UserAgent is appointed here,
+ * @return The style which corresponds is returned.
+ */
+device_table *
+chxj_specified_device_from_tsv(request_rec *r,device_table *spec,const char *user_agent)
+{
+  if(spec->device_id == NULL){
+    return spec;
+  }
+  
+  DBG(r, "start chxj_specified_device_from_tsv() device_id:[%s]",spec->device_id);
+  mod_chxj_config      *conf;
+  
+  conf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+  
+  if(conf->device_hash == NULL){
+    return spec;
+  }
+  char *key = apr_psprintf(r->pool,"%d.%s",spec->provider,spec->device_id);
+  
+  apr_table_t *ht = apr_hash_get(conf->device_hash,key,APR_HASH_KEY_STRING);
+  
+  if(ht != NULL){
+    DBG(r, "found ! chxj_specified_device_from_tsv() %s",key);
+    int i;
+    for ( i=0; i< conf->device_keys->nelts; i++){
+      const char *k = ((const char**)conf->device_keys->elts)[i];
+      char *val = (char *)apr_table_get(ht,k);
+      if(val == NULL){
+        continue;
+      }
+      DBG(r, "start chxj_specified_device_from_tsv() [%s] = [%s]:[%s]",spec->device_id,k,val);
+      if (STRCASEEQ('d','D',"device_name",k)){
+        spec->device_name = apr_pstrdup(r->pool,val);
+      }
+      if (STRCASEEQ('w','W',"width",k)){
+        if(chxj_chk_numeric(val) == 0){
+          spec->width = chxj_atoi(val);
+        }
+      }
+      else if (STRCASEEQ('h','H',"heigh",k)){
+        if(chxj_chk_numeric(val) == 0){
+          spec->heigh = chxj_atoi(val);
+        }
+      }
+      else if (STRCASEEQ('h','H',"height",k)){
+        if(chxj_chk_numeric(val) == 0){
+          spec->heigh = chxj_atoi(val);
+        }
+      }
+      else if (STRCASEEQ('w','W',"wp_width",k)){
+        if(chxj_chk_numeric(val) == 0){
+          spec->wp_width = chxj_atoi(val);
+        }
+      }
+      else if (STRCASEEQ('w','W',"wp_heigh",k)){
+        if(chxj_chk_numeric(val) == 0){
+          spec->wp_heigh = chxj_atoi(val);
+        }
+      }
+      else if (STRCASEEQ('w','W',"wp_height",k)){
+        if(chxj_chk_numeric(val) == 0){
+          spec->wp_heigh = chxj_atoi(val);
+        }
+      }
+      else if (STRCASEEQ('c','C',"cache",k)){
+        if(chxj_chk_numeric(val) == 0){
+          spec->cache = chxj_atoi(val);
+        }
+      }
+      else if (STRCASEEQ('g','G',"gif",k)){
+        int tmp = get_boolean_value(r,val);
+        if(tmp > -1 ){
+            spec->available_gif = tmp;
+        }
+      }
+      else if (STRCASEEQ('j','J',"jpeg",k)){
+        int tmp = get_boolean_value(r,val);
+        if(tmp > -1 ){
+            spec->available_jpeg = tmp;
+        }
+      }
+      else if (STRCASEEQ('p','P',"png",k)){
+        int tmp = get_boolean_value(r,val);
+        if(tmp > -1 ){
+          spec->available_png = tmp;
+        }
+      }
+      else if (STRCASEEQ('b','B',"bmp2",k)){
+        int tmp = get_boolean_value(r,val);
+        if(tmp > -1 ){
+          spec->available_bmp2 = tmp;
+        }
+      }
+      else if (STRCASEEQ('b','B',"bmp4",k)){
+        int tmp = get_boolean_value(r,val);
+        if(tmp > -1 ){
+          spec->available_bmp4 = tmp;
+        }
+      }
+      else if (STRCASEEQ('c','C',"color",k)){
+        if(chxj_chk_numeric(val) == 0){
+          spec->color = chxj_atoi(val);
+        }
+      }
+      else if (STRCASEEQ('e','E',"emoji_type",k)){
+        spec->emoji_type = apr_pstrdup(r->pool,val);
+      }
+      else if (STRCASEEQ('h','H',"html_spec_type",k)){
+        if (STRCASEEQ('x','X',"xhtml_mobile_1_0",val)) {
+          spec->html_spec_type = CHXJ_SPEC_XHtml_Mobile_1_0;
+        }
+        else if (STRCASEEQ('c','C',"chtml_1_0",val)) {
+          spec->html_spec_type = CHXJ_SPEC_Chtml_1_0;
+        }
+        else if (STRCASEEQ('c','C',"chtml_2_0",val)) {
+          spec->html_spec_type = CHXJ_SPEC_Chtml_2_0;
+        }
+        else if (STRCASEEQ('c','C',"chtml_3_0",val)) {
+          spec->html_spec_type = CHXJ_SPEC_Chtml_3_0;
+        }
+        else if (STRCASEEQ('c','C',"chtml_4_0",val)) {
+          spec->html_spec_type = CHXJ_SPEC_Chtml_4_0;
+        }
+        else if (STRCASEEQ('c','C',"chtml_5_0",val)) {
+          spec->html_spec_type = CHXJ_SPEC_Chtml_5_0;
+        }
+        else if (STRCASEEQ('c','C',"chtml_6_0",val)) {
+          spec->html_spec_type = CHXJ_SPEC_Chtml_6_0;
+        }
+        else if (STRCASEEQ('c','C',"chtml_7_0",val)) {
+          spec->html_spec_type = CHXJ_SPEC_Chtml_7_0;
+        }
+        else if (STRCASEEQ('h','H',"hdml",val)) {
+          spec->html_spec_type = CHXJ_SPEC_Hdml;
+        }
+        else if (STRCASEEQ('i','I',"ixhtml",val)) {
+          spec->html_spec_type = CHXJ_SPEC_Chtml_7_0;
+        }
+        else if (STRCASEEQ('j','J',"jhtml",val)) {
+          spec->html_spec_type = CHXJ_SPEC_Jhtml;
+        }
+        else if (STRCASEEQ('j','J',"jxhtml",val)) {
+          spec->html_spec_type = CHXJ_SPEC_Jxhtml;
+        }
+      }
+      else if (STRCASEEQ('o','O',"output_encoding",k)){
+          spec->output_encoding = apr_pstrdup(r->pool,val);
+      }
+    }
+  }
+  
+  DBG(r, "end chxj_specified_device_from_tsv() [%d]",spec->provider);
+  return spec;
+}
+
 
 /*
  * vim:ts=2 et
old mode 100644 (file)
new mode 100755 (executable)
index cbb955d..09c792c
@@ -73,8 +73,16 @@ static char *s_xhtml_1_0_start_a_tag      (void *pdoc, Node *node);
 static char *s_xhtml_1_0_end_a_tag        (void *pdoc, Node *node);
 static char *s_xhtml_1_0_start_br_tag     (void *pdoc, Node *node);
 static char *s_xhtml_1_0_end_br_tag       (void *pdoc, Node *node);
+static char *s_xhtml_1_0_start_table_tag  (void *pdoc, Node *node);
+static char *s_xhtml_1_0_end_table_tag    (void *pdoc, Node *node);
 static char *s_xhtml_1_0_start_tr_tag     (void *pdoc, Node *node);
 static char *s_xhtml_1_0_end_tr_tag       (void *pdoc, Node *node);
+static char *s_xhtml_1_0_start_td_tag     (void *pdoc, Node *node);
+static char *s_xhtml_1_0_end_td_tag       (void *pdoc, Node *node);
+static char *s_xhtml_1_0_start_th_tag     (void *pdoc, Node *node);
+static char *s_xhtml_1_0_end_th_tag       (void *pdoc, Node *node);
+static char *s_xhtml_1_0_start_td_or_th_tag     (void *pdoc, Node *node,char *tagName);
+static char *s_xhtml_1_0_end_td_or_th_tag       (void *pdoc, Node *node,char *tagName);
 static char *s_xhtml_1_0_start_font_tag   (void *pdoc, Node *node);
 static char *s_xhtml_1_0_end_font_tag     (void *pdoc, Node *node);
 static char *s_xhtml_1_0_start_form_tag   (void *pdoc, Node *node);
@@ -122,6 +130,11 @@ static char *s_xhtml_1_0_link_tag           (void *pdoc, Node *node);
 static char *s_xhtml_1_0_start_span_tag      (void *pdoc, Node *node);
 static char *s_xhtml_1_0_end_span_tag        (void *pdoc, Node *node);
 static char *s_xhtml_1_0_style_tag        (void *pdoc, Node *node);
+static char *s_xhtml_1_0_start_object_tag    (void *pdoc, Node *node);
+static char *s_xhtml_1_0_end_object_tag      (void *pdoc, Node *node);
+static char *s_xhtml_1_0_start_param_tag     (void *pdoc, Node *node);
+static char *s_xhtml_1_0_start_caption_tag    (void *pdoc, Node *node);
+static char *s_xhtml_1_0_end_caption_tag      (void *pdoc, Node *node);
 
 static void  s_init_xhtml(xhtml_t *xhtml, Doc *doc, request_rec *r, device_table *spec);
 static int   s_xhtml_search_emoji(xhtml_t *xhtml, char *txt, char **rslt);
@@ -234,8 +247,8 @@ tag_handler xhtml_handler[] = {
   },
   /* tagTABLE */
   {
-    NULL,
-    NULL,
+    s_xhtml_1_0_start_table_tag,
+    s_xhtml_1_0_end_table_tag,
   },
   /* tagTR */
   {
@@ -244,8 +257,8 @@ tag_handler xhtml_handler[] = {
   },
   /* tagTD */
   {
-    NULL,
-    NULL,
+    s_xhtml_1_0_start_td_tag,
+    s_xhtml_1_0_end_td_tag,
   },
   /* tagTBODY */
   {
@@ -334,8 +347,8 @@ tag_handler xhtml_handler[] = {
   },
   /* tagTH */
   {
-    NULL,
-    NULL,
+    s_xhtml_1_0_start_th_tag,
+    s_xhtml_1_0_end_th_tag,
   },
   /* tagB */
   {
@@ -412,6 +425,21 @@ tag_handler xhtml_handler[] = {
     s_xhtml_1_0_newline_mark,
     NULL,
   },
+  /* tagObject */
+  {
+    s_xhtml_1_0_start_object_tag,
+    s_xhtml_1_0_end_object_tag,
+  },
+  /* tagParam */
+  {
+    s_xhtml_1_0_start_param_tag,
+    NULL,
+  },
+  /* tagCAPTION */
+  {
+    s_xhtml_1_0_start_caption_tag,
+    s_xhtml_1_0_end_caption_tag,
+  },
 };
  
 /**
@@ -458,6 +486,9 @@ chxj_convert_xhtml_mobile_1_0(
   xhtml.entryp = entryp;
   xhtml.cookie = cookie;
 
+  if (strcasecmp(spec->output_encoding,"UTF-8") == 0 ){
+    apr_table_setn(r->headers_out,HTTP_X_CHXJ_SET_CONTENT_TYPE,"text/html; charset=UTF-8");
+  }
   chxj_set_content_type(r, chxj_header_inf_set_content_type(r, "text/html; charset=Windows-31J"));
 
   /*--------------------------------------------------------------------------*/
@@ -746,7 +777,9 @@ s_xhtml_1_0_start_html_tag(void *pdoc, Node *UNUSED(node))
   /*--------------------------------------------------------------------------*/
   /* Add XML Declare                                                          */
   /*--------------------------------------------------------------------------*/
-  W_L("<?xml version=\"1.0\" encoding=\"Shift_JIS\"?>");
+  W_L("<?xml version=\"1.0\" encoding=\"");
+  W_V(xhtml->spec->output_encoding);
+  W_L("\"?>");
   W_NLCODE();
   /*--------------------------------------------------------------------------*/
   /* Add DocType                                                              */
@@ -831,7 +864,7 @@ s_xhtml_1_0_start_meta_tag(void *pdoc, Node *node)
         W_L(" ");
         W_V(name);
         W_L("=\"");
-        W_V(chxj_header_inf_set_content_type(r, "text/html; charset=Windows-31J"));
+        W_V(chxj_header_inf_set_content_type(r, "text/html; charset=Shift_JIS"));
         W_L("\"");
       }
       else {
@@ -1013,7 +1046,9 @@ s_xhtml_1_0_start_body_tag(void *pdoc, Node *node)
   char        *attr_bgcolor = NULL;
   char        *attr_text    = NULL;
   char        *attr_link    = NULL;
+  char        *attr_vlink   = NULL;
   char        *attr_style   = NULL;
+  char        *attr_background   = NULL;
 
   /*--------------------------------------------------------------------------*/
   /* Get Attributes                                                           */
@@ -1036,18 +1071,22 @@ s_xhtml_1_0_start_body_tag(void *pdoc, Node *node)
       /* ignore */
     }
     else if (STRCASEEQ('v','V',"vlink",name)) {
-      /* ignore */
+      attr_vlink = value;
     }
     else if (STRCASEEQ('s','S',"style",name) && value && *value) {
       attr_style = value;
     }
+    else if (STRCASEEQ('b','B',"background",name) && value && *value) {
+      attr_background = value;
+    }
   }
 
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop      = chxj_css_get_property_value(doc, style, "color");
       css_property_t *bgcolor_prop    = chxj_css_get_property_value(doc, style, "background-color");
+      css_property_t *bgimage_prop    = chxj_css_get_property_value(doc, style, "background-image");
       css_property_t *cur;
       for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
         if (cur->value && *cur->value) {
@@ -1059,6 +1098,18 @@ s_xhtml_1_0_start_body_tag(void *pdoc, Node *node)
           attr_bgcolor = apr_pstrdup(doc->pool, cur->value);
         }
       }
+      for (cur = bgimage_prop->next; cur != bgimage_prop; cur = cur->next) {
+        if (cur->value && *cur->value) {
+          char *tmp = apr_pstrdup(doc->pool, cur->value);
+          char *tmps = strstr(tmp,"(");
+          if(tmps){
+            char *tmpe = strstr(tmp,")");
+            size_t len = strlen(tmps) - strlen(tmpe) -1 ;
+            tmps++;
+            attr_background = apr_pstrndup(doc->pool, tmps,len);
+          }
+        }
+      }
     }
     if (xhtml->style) {
       css_stylesheet_t *pseudos = chxj_find_pseudo_selectors(doc, xhtml->style);
@@ -1072,6 +1123,14 @@ s_xhtml_1_0_start_body_tag(void *pdoc, Node *node)
             }
           }
         }
+        else if (cur_sel->name && strcasecmp(cur_sel->name, "a:visited") == 0) {
+          css_property_t *cur;
+          for (cur = cur_sel->property_head.next; cur != &cur_sel->property_head; cur = cur->next) {
+            if (cur->name && strcasecmp(cur->name, "color") == 0) {
+              attr_vlink = apr_pstrdup(doc->pool, cur->value);
+            }
+          }
+        }
       }
     }
   }
@@ -1099,6 +1158,17 @@ s_xhtml_1_0_start_body_tag(void *pdoc, Node *node)
     W_V(attr_link);
     W_L("\"");
   }
+  if (attr_vlink) {
+    attr_vlink = chxj_css_rgb_func_to_value(doc->pool, attr_vlink);
+    W_L(" vlink=\"");
+    W_V(attr_vlink);
+    W_L("\"");
+  }
+  if (attr_background) {
+    W_L(" background=\"");
+    W_V(attr_background);
+    W_L("\"");
+  }
   W_L(">");
 
   return xhtml->out;
@@ -1120,9 +1190,11 @@ s_xhtml_1_0_end_body_tag(void *pdoc, Node *UNUSED(child))
   Doc           *doc   = xhtml->doc;
 
   W_L("</body>");
+  /*
   if (IS_CSS_ON(xhtml->entryp)) {
     chxj_css_pop_prop_list(xhtml->css_prop_stack);
   }
+  */
 
   return xhtml->out;
 }
@@ -1144,6 +1216,7 @@ s_xhtml_1_0_start_a_tag(void *pdoc, Node *node)
   request_rec *r     = doc->r;
   Attr        *attr;
   char        *attr_style = NULL;
+  char        *attr_id    = NULL;
 
   W_L("<a");
   /*--------------------------------------------------------------------------*/
@@ -1154,10 +1227,11 @@ s_xhtml_1_0_start_a_tag(void *pdoc, Node *node)
        attr = qs_get_next_attr(doc,attr)) {
     char* name  = qs_get_attr_name(doc,attr);
     char* value = qs_get_attr_value(doc,attr);
-    if (STRCASEEQ('n','N',"name",name) && value && *value) {
-      W_L(" id=\"");
-      W_V(value);
-      W_L("\"");
+    if (STRCASEEQ('i','I',"id",name)){
+      attr_id = apr_pstrdup(doc->buf.pool, value);
+    }
+    else if (STRCASEEQ('n','N',"name",name)) {
+      attr_id = apr_pstrdup(doc->buf.pool, value);
     }
     else if (STRCASEEQ('h','H',"href", name) && value && *value) {
       value = chxj_encoding_parameter(r, value, 1);
@@ -1207,10 +1281,15 @@ s_xhtml_1_0_start_a_tag(void *pdoc, Node *node)
       attr_style = value;
     }
   }
+  if(attr_id){
+    W_L(" id=\"");
+    W_V(attr_id);
+    W_L("\"");
+  }
   W_L(">");
 
   if (IS_CSS_ON(xhtml->entryp)) {
-    s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
   }
 
   return xhtml->out;
@@ -1255,8 +1334,10 @@ s_xhtml_1_0_start_br_tag(void *pdoc, Node *node)
   xhtml_t *xhtml = GET_XHTML(pdoc);
   Doc     *doc   = xhtml->doc;
   Attr    *attr;
+  char         *attr_style = NULL;
+  char         *attr_clear = NULL;
 
-  W_L("<br");
+  
   /*--------------------------------------------------------------------------*/
   /* Get Attributes                                                           */
   /*--------------------------------------------------------------------------*/
@@ -1267,12 +1348,37 @@ s_xhtml_1_0_start_br_tag(void *pdoc, Node *node)
     char *value = qs_get_attr_value(doc,attr);
     if (STRCASEEQ('c','C',"clear",name)) {
       if (value && (STRCASEEQ('l','L',"left",value) || STRCASEEQ('r','R',"right",value) || STRCASEEQ('a','A',"all",value))) {
-        W_L(" clear=\"");
-        W_V(value);
-        W_L("\"");
+        attr_clear = value;
+      }
+    }
+    else if (STRCASEEQ('s','S',"style",name)) {
+      attr_style = apr_pstrdup(doc->buf.pool, value);
+    }
+  }
+  if (IS_CSS_ON(xhtml->entryp)) {
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
+    if (style) {
+      css_property_t *clear_prop = chxj_css_get_property_value(doc, style, "clear");
+      css_property_t *cur;
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (cur->value && *cur->value) {
+          if ( STRCASEEQ('l','L',"left",  cur->value)
+            || STRCASEEQ('r','R',"right", cur->value)) {
+            attr_clear = apr_pstrdup(doc->pool, cur->value);
+          }
+          else if(STRCASEEQ('b','B',"both"  ,cur->value)) {
+            attr_clear = apr_pstrdup(doc->pool, "all");
+          }
+        }
       }
     }
   }
+  W_L("<br");
+  if(attr_clear){
+    W_L(" clear=\"");
+    W_V(attr_clear);
+    W_L("\"");
+  }
   W_L(" />");
 
   return xhtml->out;
@@ -1297,7 +1403,7 @@ s_xhtml_1_0_end_br_tag(void *pdoc, Node *UNUSED(child))
 
 
 /**
- * It is a handler who processes the TR tag.
+ * It is a handler who processes the TABLE tag.
  *
  * @param pdoc  [i/o] The pointer to the XHTML structure at the output
  *                     destination is specified.
@@ -1305,19 +1411,161 @@ s_xhtml_1_0_end_br_tag(void *pdoc, Node *UNUSED(child))
  * @return The conversion result is returned.
  */
 static char *
-s_xhtml_1_0_start_tr_tag(void *pdoc, Node *UNUSED(node)
+s_xhtml_1_0_start_table_tag(void *pdoc, Node *node
 {
   xhtml_t *xhtml = GET_XHTML(pdoc);
   Doc     *doc   = xhtml->doc;
+  request_rec *r     = doc->r;
+  Attr        *attr;
+  char         *attr_style  = NULL;
+  char         *attr_align  = NULL;
+  char         *attr_width  = NULL;
+  char         *attr_height = NULL;
+  char         *attr_bgcolor = NULL;
+  char         *attr_border_width  = NULL;
+  char         *attr_border_color  = NULL;
+  
+  /*--------------------------------------------------------------------------*/
+  /* Get Attributes                                                           */
+  /*--------------------------------------------------------------------------*/
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name  = qs_get_attr_name(doc,attr);
+    char *val   = qs_get_attr_value(doc,attr);
+    
+    if (STRCASEEQ('a','A',"align",name)) {
+      if (val && (STRCASEEQ('l','L',"left",val) || STRCASEEQ('r','R',"right",val) || STRCASEEQ('c','C',"center",val))) {
+        attr_align = apr_pstrdup(doc->buf.pool, val);
+      }
+    }
+    else if (STRCASEEQ('h','H',"height",name) && val && *val) {
+      attr_height = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('w','W',"width",name) && val && *val) {
+      attr_width = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('s','S',"style",name) && val && *val) {
+      attr_style = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('b','B',"bgcolor",name) && val && *val) {
+      attr_bgcolor = apr_pstrdup(doc->buf.pool, val);
+      attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
+    }
+    else if (STRCASEEQ('b','B',"border",name) && val && *val) {
+      attr_border_width = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('b','B',"bordercolor",name) && val && *val) {
+      attr_border_color = apr_pstrdup(doc->buf.pool, val);
+      attr_border_color = chxj_css_rgb_func_to_value(doc->pool, attr_border_color);
+    }
+  }
+  if (IS_CSS_ON(xhtml->entryp)) {
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
+    if (style) {
+      css_property_t *width_prop             = chxj_css_get_property_value(doc, style, "width");
+      css_property_t *height_prop            = chxj_css_get_property_value(doc, style, "height");
+      css_property_t *align_prop             = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *bgcolor_prop           = chxj_css_get_property_value(doc, style, "background-color");
+      css_property_t *border_width_prop      = chxj_css_get_property_value(doc, style, "border-width");
+      css_property_t *border_color_prop      = chxj_css_get_property_value(doc, style, "border-color");
+      
+      css_property_t *cur;
+      for (cur = width_prop->next; cur != width_prop; cur = cur->next) {
+        char *tmp = apr_pstrdup(doc->pool, cur->value);
+        char *tmpp = strstr(tmp, "px");
+        if (tmpp) {
+          size_t len = strlen(tmp) - strlen(tmpp);
+          attr_width = apr_pstrndup(doc->pool, tmp,len);
+        }
+        else{
+          attr_width = apr_pstrdup(doc->pool, tmp);
+        }
+      }
+      for (cur = height_prop->next; cur != height_prop; cur = cur->next) {
+        char *tmp = apr_pstrdup(doc->pool, cur->value);
+        char *tmpp = strstr(tmp, "px");
+        if (tmpp) {
+          size_t len = strlen(tmp) - strlen(tmpp);
+          attr_height = apr_pstrndup(doc->pool, tmp,len);
+        }
+        else{
+          attr_height = apr_pstrdup(doc->pool, tmp);
+        }
+      }
+      for (cur = align_prop->next; cur != align_prop; cur = cur->next) {
+        if (cur->value && (STRCASEEQ('l','L',"left",cur->value) || STRCASEEQ('r','R',"right",cur->value) || STRCASEEQ('c','C',"center",cur->value))) {
+          attr_align = apr_pstrdup(doc->buf.pool, cur->value);
+        }
+      }
+      for (cur = bgcolor_prop->next; cur != bgcolor_prop; cur = cur->next) {
+        attr_bgcolor = apr_pstrdup(doc->pool, cur->value);
+        attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
+      }
+      for (cur = border_width_prop->next; cur != border_width_prop; cur = cur->next) {
+        char *tmp = apr_pstrdup(doc->pool, cur->value);
+        char *tmpp = strstr(tmp, "px");
+        if (tmpp) {
+          size_t len = strlen(tmp) - strlen(tmpp);
+          attr_border_width = apr_pstrndup(doc->pool, tmp,len);
+        }
+        else{
+          attr_border_width = apr_pstrdup(doc->pool, tmp);
+        }
+      }
+      for (cur = border_color_prop->next; cur != border_color_prop; cur = cur->next) {
+        attr_border_color = apr_pstrdup(doc->pool, cur->value);
+        attr_border_color = chxj_css_rgb_func_to_value(doc->pool, attr_border_color);
+      }
+    }
+  }
 
-  W_L("<br />");
+  W_L("<table");
+  if (attr_align){
+    W_L(" align=\"");
+    W_V(attr_align);
+    W_L("\"");
+  }
+  if (attr_height){
+    W_L(" height=\"");
+    W_V(attr_height);
+    W_L("\"");
+  }
+  if (attr_width){
+    W_L(" width=\"");
+    W_V(attr_width);
+    W_L("\"");
+  }
+  if (attr_bgcolor && *attr_bgcolor){
+    W_L(" bgcolor=\"");
+    W_V(attr_bgcolor);
+    W_L("\"");
+  }
+  if (attr_border_width || attr_border_color ){
+    W_L(" style=\"border:");
+    if (attr_border_width){
+      W_V(attr_border_width);
+    }
+    else{
+      W_L("1");
+    }
+    W_L("px solid");
+    
+    if (attr_border_color && *attr_border_color){
+      W_L(" ");
+      W_V(attr_border_color);
+    }
+    W_L(";\"");
+  }
+  
+  W_L(">");
 
   return xhtml->out;
 }
 
 
 /**
- * It is a handler who processes the TR tag.
+ * It is a handler who processes the TABLE tag.
  *
  * @param pdoc  [i/o] The pointer to the XHTML structure at the output
  *                     destination is specified.
@@ -1325,32 +1573,37 @@ s_xhtml_1_0_start_tr_tag(void *pdoc, Node *UNUSED(node))
  * @return The conversion result is returned.
  */
 static char *
-s_xhtml_1_0_end_tr_tag(void *pdoc, Node *UNUSED(child)) 
+s_xhtml_1_0_end_table_tag(void *pdoc, Node *UNUSED(child)) 
 {
   xhtml_t *xhtml = GET_XHTML(pdoc);
-
+  Doc     *doc   = xhtml->doc;
+  W_L("</table>");
+  
   return xhtml->out;
 }
 
-
 /**
- * It is a handler who processes the FONT tag.
+ * It is a handler who processes the TR tag.
  *
  * @param pdoc  [i/o] The pointer to the XHTML structure at the output
  *                     destination is specified.
- * @param node   [i]   The FONT tag node is specified.
+ * @param node   [i]   The TR tag node is specified.
  * @return The conversion result is returned.
  */
 static char *
-s_xhtml_1_0_start_font_tag(void *pdoc, Node *node) 
+s_xhtml_1_0_start_tr_tag(void *pdoc, Node *node) 
 {
   xhtml_t *xhtml = GET_XHTML(pdoc);
   Doc     *doc   = xhtml->doc;
-  Attr    *attr;
-  char    *attr_color = NULL;
-  char    *attr_size  = NULL;
-  char    *attr_style = NULL;
 
+  request_rec *r     = doc->r;
+  Attr        *attr;
+  
+  char         *attr_style  = NULL;
+  char         *attr_align  = NULL;
+  char         *attr_valign = NULL;
+  char         *attr_bgcolor = NULL;
+  
   /*--------------------------------------------------------------------------*/
   /* Get Attributes                                                           */
   /*--------------------------------------------------------------------------*/
@@ -1358,101 +1611,448 @@ s_xhtml_1_0_start_font_tag(void *pdoc, Node *node)
        attr;
        attr = qs_get_next_attr(doc,attr)) {
     char *name  = qs_get_attr_name(doc,attr);
-    char *value = qs_get_attr_value(doc,attr);
-    if (STRCASEEQ('c','C',"color",name) && value && *value) {
-      attr_color = apr_pstrdup(doc->buf.pool, value);
+    char *val   = qs_get_attr_value(doc,attr);
+    
+    if (STRCASEEQ('a','A',"align",name)) {
+      if (val && (STRCASEEQ('l','L',"left",val) || STRCASEEQ('r','R',"right",val) || STRCASEEQ('c','C',"center",val))) {
+        attr_align = apr_pstrdup(doc->buf.pool, val);
+      }
     }
-    else if (STRCASEEQ('s','S',"size",name) && value && *value) {
-      /*----------------------------------------------------------------------*/
-      /* CHTML 5.0                                                            */
-      /*----------------------------------------------------------------------*/
-      attr_size = apr_pstrdup(doc->buf.pool, value);
+    else if (STRCASEEQ('v','V',"valign",name) && val && *val) {
+      if (val && (STRCASEEQ('t','T',"top",val) || STRCASEEQ('m','M',"middle",val) || STRCASEEQ('b','B',"bottom",val))) {
+        attr_valign = apr_pstrdup(doc->buf.pool, val);
+      }
     }
-    else if (STRCASEEQ('s','S',"style",name) && value && *value) {
-      attr_style = apr_pstrdup(doc->buf.pool, value);
+    else if (STRCASEEQ('s','S',"style",name) && val && *val) {
+      attr_style = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('b','B',"bgcolor",name) && val && *val) {
+      attr_bgcolor = apr_pstrdup(doc->buf.pool, val);
+      attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
-      css_property_t *color_prop = chxj_css_get_property_value(doc, style, "color");
-      css_property_t *size_prop  = chxj_css_get_property_value(doc, style, "font-size");
+      css_property_t *align_prop             = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *valign_prop            = chxj_css_get_property_value(doc, style, "vertical-align");
+      css_property_t *bgcolor_prop           = chxj_css_get_property_value(doc, style, "background-color");
+      
       css_property_t *cur;
-      for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
-        if (cur->value && *cur->value) {
-          attr_color = apr_pstrdup(doc->pool, cur->value);
+      for (cur = align_prop->next; cur != align_prop; cur = cur->next) {
+        if (cur->value && (STRCASEEQ('l','L',"left",cur->value) || STRCASEEQ('r','R',"right",cur->value) || STRCASEEQ('c','C',"center",cur->value))) {
+          attr_align = apr_pstrdup(doc->buf.pool, cur->value);
         }
       }
-      for (cur = size_prop->next; cur != size_prop; cur = cur->next) {
-        if (cur->value && *cur->value) {
-          attr_size = apr_pstrdup(doc->pool, cur->value);
-          if (STRCASEEQ('x','X',"xx-small",attr_size)) {
-            attr_size = apr_pstrdup(doc->pool, "1");
-          }
-          else if (STRCASEEQ('x','X',"x-small",attr_size)) {
-            attr_size = apr_pstrdup(doc->pool, "2");
-          }
-          else if (STRCASEEQ('s','S',"small",attr_size)) {
-            attr_size = apr_pstrdup(doc->pool, "3");
-          }
-          else if (STRCASEEQ('m','M',"medium",attr_size)) {
-            attr_size = apr_pstrdup(doc->pool, "4");
-          }
-          else if (STRCASEEQ('l','L',"large",attr_size)) {
-            attr_size = apr_pstrdup(doc->pool, "5");
-          }
-          else if (STRCASEEQ('x','X',"x-large",attr_size)) {
-            attr_size = apr_pstrdup(doc->pool, "6");
-          }
-          else if (STRCASEEQ('x','X',"xx-large",attr_size)) {
-            attr_size = apr_pstrdup(doc->pool, "7");
-          }
+      for (cur = valign_prop->next; cur != valign_prop; cur = cur->next) {
+        if (cur->value && (STRCASEEQ('t','T',"top",cur->value) || STRCASEEQ('m','M',"middle",cur->value) || STRCASEEQ('b','B',"bottom",cur->value))) {
+          attr_valign = apr_pstrdup(doc->buf.pool, cur->value);
         }
       }
+      for (cur = bgcolor_prop->next; cur != bgcolor_prop; cur = cur->next) {
+        attr_bgcolor = apr_pstrdup(doc->pool, cur->value);
+        attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
+      }
     }
   }
 
-  xhtml_flags_t *flg = (xhtml_flags_t *)apr_palloc(doc->pool, sizeof(*flg));
-  memset(flg, 0, sizeof(*flg));
-  if (attr_color) {
-    W_L("<font color=\"");
-    W_V(attr_color);
-    W_L("\">");
-    flg->font_color_flag = 1;
+  W_L("<tr");
+  if (attr_align){
+    W_L(" align=\"");
+    W_V(attr_align);
+    W_L("\"");
   }
-  if (attr_size) {
-    flg->font_size_flag = 1;
-    switch(*attr_size) {
-    case '1': W_L("<span style=\"font-size: xx-small\">"); break;
-    case '2': W_L("<span style=\"font-size: x-small\">");  break;
-    case '3': W_L("<span style=\"font-size: small\">");    break;
-    case '4': W_L("<span style=\"font-size: medium\">");   break;
-    case '5': W_L("<span style=\"font-size: large\">");    break;
-    case '6': W_L("<span style=\"font-size: x-large\">");  break;
-    case '7': W_L("<span style=\"font-size: xx-large\">"); break;
-    case '-':
-      if (*(attr_size + 1) == '1') {
-        W_L("<span style=\"font-size: small\">");
-        break;
-      }
-      if (*(attr_size + 1) == '2') {
-        W_L("<span style=\"font-size: x-small\">");
-        break;
-      }
-      if (*(attr_size + 1) == '3') {
-        W_L("<span style=\"font-size: xx-small\">");
-        break;
-      }
-      flg->font_size_flag = 0;
-      break;
+  if (attr_valign){
+    W_L(" valign=\"");
+    W_V(attr_valign);
+    W_L("\"");
+  }
+  if (attr_bgcolor && *attr_bgcolor){
+    W_L(" bgcolor=\"");
+    W_V(attr_bgcolor);
+    W_L("\"");
+  }
+  W_L(">");
 
-    case '+':
-      if (*(attr_size + 1) == '1') {
-        W_L("<span style=\"font-size: large\">");
-        break;
-      }
-      if (*(attr_size + 1) == '2') {
-        W_L("<span style=\"font-size: x-large\">");
+  return xhtml->out;
+}
+
+
+/**
+ * It is a handler who processes the TR tag.
+ *
+ * @param pdoc  [i/o] The pointer to the XHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TR tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_xhtml_1_0_end_tr_tag(void *pdoc, Node *UNUSED(child)) 
+{
+  xhtml_t *xhtml = GET_XHTML(pdoc);
+  Doc     *doc   = xhtml->doc;
+
+  W_L("</tr>");
+
+  return xhtml->out;
+}
+
+/**
+ * It is a handler who processes the TD tag.
+ *
+ * @param pdoc  [i/o] The pointer to the XHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TR tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_xhtml_1_0_start_td_or_th_tag(void *pdoc, Node *node,char *tagName) 
+{
+  xhtml_t *xhtml = GET_XHTML(pdoc);
+  Doc     *doc   = xhtml->doc;
+
+  request_rec *r     = doc->r;
+  Attr        *attr;
+  
+  char         *attr_style  = NULL;
+  char         *attr_align  = NULL;
+  char         *attr_valign = NULL;
+  char         *attr_bgcolor = NULL;
+  char         *attr_colspan = NULL;
+  char         *attr_rowspan = NULL;
+  char         *attr_width   = NULL;
+  char         *attr_height  = NULL;
+  
+  /*--------------------------------------------------------------------------*/
+  /* Get Attributes                                                           */
+  /*--------------------------------------------------------------------------*/
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name  = qs_get_attr_name(doc,attr);
+    char *val   = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('a','A',"align",name)) {
+      if (val && (STRCASEEQ('l','L',"left",val) || STRCASEEQ('r','R',"right",val) || STRCASEEQ('c','C',"center",val))) {
+        attr_align = apr_pstrdup(doc->buf.pool, val);
+      }
+    }
+    else if (STRCASEEQ('v','V',"valign",name) && val && *val) {
+      if (val && (STRCASEEQ('t','T',"top",val) || STRCASEEQ('m','M',"middle",val) || STRCASEEQ('b','B',"bottom",val))) {
+        attr_valign = apr_pstrdup(doc->buf.pool, val);
+      }
+    }
+    else if (STRCASEEQ('s','S',"style",name) && val && *val) {
+      attr_style = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('b','B',"bgcolor",name) && val && *val) {
+      attr_bgcolor = apr_pstrdup(doc->buf.pool, val);
+      attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
+    }
+    else if (STRCASEEQ('c','C',"colspan",name) && val && *val) {
+      attr_colspan = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('r','R',"rowspan",name) && val && *val) {
+      attr_rowspan = apr_pstrdup(doc->buf.pool, val);
+    }
+    else if (STRCASEEQ('w','W',"width",name) && val && *val) {
+      char *tmp = strstr(val, "%");
+      if(tmp){
+        attr_width = apr_pstrdup(doc->buf.pool, val);
+      }
+      else{
+        attr_width = apr_psprintf(doc->buf.pool,"%spx",val);
+      }
+    }
+    else if (STRCASEEQ('h','H',"height",name) && val && *val) {
+      char *tmp = strstr(val, "%");
+      if(tmp){
+        attr_height = apr_pstrdup(doc->buf.pool, val);
+      }
+      else{
+        attr_height = apr_psprintf(doc->buf.pool,"%spx",val);
+      }
+    }
+  }
+  
+  if (IS_CSS_ON(xhtml->entryp)) {
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
+    if (style) {
+      css_property_t *align_prop             = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *valign_prop            = chxj_css_get_property_value(doc, style, "vertical-align");
+      css_property_t *bgcolor_prop           = chxj_css_get_property_value(doc, style, "background-color");
+      css_property_t *width_prop             = chxj_css_get_property_value(doc, style, "width");
+      css_property_t *height_prop            = chxj_css_get_property_value(doc, style, "height");
+      
+      css_property_t *cur;
+      for (cur = align_prop->next; cur != align_prop; cur = cur->next) {
+        if (cur->value && (STRCASEEQ('l','L',"left",cur->value) || STRCASEEQ('r','R',"right",cur->value) || STRCASEEQ('c','C',"center",cur->value))) {
+          attr_align = apr_pstrdup(doc->buf.pool, cur->value);
+        }
+      }
+      for (cur = valign_prop->next; cur != valign_prop; cur = cur->next) {
+        if (cur->value && (STRCASEEQ('t','T',"top",cur->value) || STRCASEEQ('m','M',"middle",cur->value) || STRCASEEQ('b','B',"bottom",cur->value))) {
+          attr_valign = apr_pstrdup(doc->buf.pool, cur->value);
+        }
+      }
+      for (cur = bgcolor_prop->next; cur != bgcolor_prop; cur = cur->next) {
+        attr_bgcolor = apr_pstrdup(doc->pool, cur->value);
+        attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
+      }
+      for (cur = width_prop->next; cur != width_prop; cur = cur->next) {
+        attr_width = apr_pstrdup(doc->pool, cur->value);
+      }
+      for (cur = height_prop->next; cur != height_prop; cur = cur->next) {
+        attr_height = apr_pstrdup(doc->pool, cur->value);
+      }
+    }
+  }
+
+  W_L("<");
+  W_V(tagName);
+  if (attr_align){
+    W_L(" align=\"");
+    W_V(attr_align);
+    W_L("\"");
+  }
+  if (attr_valign){
+    W_L(" valign=\"");
+    W_V(attr_valign);
+    W_L("\"");
+  }
+  if (attr_colspan){
+    W_L(" colspan=\"");
+    W_V(attr_colspan);
+    W_L("\"");
+  }
+  if (attr_rowspan){
+    W_L(" rowspan=\"");
+    W_V(attr_rowspan);
+    W_L("\"");
+  }
+  if (attr_bgcolor && *attr_bgcolor){
+    W_L(" bgcolor=\"");
+    W_V(attr_bgcolor);
+    W_L("\"");
+  }
+  if (attr_width || attr_height ){
+    W_L(" style=\"");
+    if (attr_width){
+      W_L("width:");
+      W_V(attr_width);
+      W_L(";");
+    }
+    if (attr_height){
+      W_L("height:");
+      W_V(attr_height);
+      W_L(";");
+    }
+    W_L("\"");
+  }
+  W_L(">");
+
+  return xhtml->out;
+}
+
+
+/**
+ * It is a handler who processes the TD tag.
+ *
+ * @param pdoc  [i/o] The pointer to the XHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TR tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_xhtml_1_0_end_td_or_th_tag(void *pdoc, Node *UNUSED(child),char *tagName) 
+{
+  xhtml_t *xhtml = GET_XHTML(pdoc);
+  Doc     *doc   = xhtml->doc;
+
+  W_L("</");
+  W_V(tagName);
+  W_L(">");
+
+  return xhtml->out;
+}
+
+/**
+ * It is a handler who processes the TD tag.
+ *
+ * @param pdoc  [i/o] The pointer to the XHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TD tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_xhtml_1_0_start_td_tag(void *pdoc, Node *child) 
+{
+  return s_xhtml_1_0_start_td_or_th_tag(pdoc,child,"td"); 
+}
+
+/**
+ * It is a handler who processes the TD tag.
+ *
+ * @param pdoc  [i/o] The pointer to the XHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TD tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_xhtml_1_0_end_td_tag(void *pdoc, Node *child) 
+{
+  return s_xhtml_1_0_end_td_or_th_tag(pdoc,child,"td"); 
+}
+
+/**
+ * It is a handler who processes the TD tag.
+ *
+ * @param pdoc  [i/o] The pointer to the XHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TH tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_xhtml_1_0_start_th_tag(void *pdoc, Node *child) 
+{
+  return s_xhtml_1_0_start_td_or_th_tag(pdoc,child,"th"); 
+}
+
+/**
+ * It is a handler who processes the TD tag.
+ *
+ * @param pdoc  [i/o] The pointer to the XHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The TH tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_xhtml_1_0_end_th_tag(void *pdoc, Node *child) 
+{
+  return s_xhtml_1_0_end_td_or_th_tag(pdoc,child,"th"); 
+}
+
+
+
+/**
+ * It is a handler who processes the FONT tag.
+ *
+ * @param pdoc  [i/o] The pointer to the XHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The FONT tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_xhtml_1_0_start_font_tag(void *pdoc, Node *node) 
+{
+  xhtml_t *xhtml = GET_XHTML(pdoc);
+  Doc     *doc   = xhtml->doc;
+  Attr    *attr;
+  char    *attr_color = NULL;
+  char    *attr_size  = NULL;
+  char    *attr_style = NULL;
+
+  /*--------------------------------------------------------------------------*/
+  /* Get Attributes                                                           */
+  /*--------------------------------------------------------------------------*/
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('c','C',"color",name) && value && *value) {
+      attr_color = apr_pstrdup(doc->buf.pool, value);
+    }
+    else if (STRCASEEQ('s','S',"size",name) && value && *value) {
+      /*----------------------------------------------------------------------*/
+      /* CHTML 5.0                                                            */
+      /*----------------------------------------------------------------------*/
+      attr_size = apr_pstrdup(doc->buf.pool, value);
+    }
+    else if (STRCASEEQ('s','S',"style",name) && value && *value) {
+      attr_style = apr_pstrdup(doc->buf.pool, value);
+    }
+  }
+  if (IS_CSS_ON(xhtml->entryp)) {
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
+    if (style) {
+      css_property_t *color_prop = chxj_css_get_property_value(doc, style, "color");
+      css_property_t *size_prop  = chxj_css_get_property_value(doc, style, "font-size");
+      css_property_t *cur;
+      for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
+        if (cur->value && *cur->value) {
+          attr_color = apr_pstrdup(doc->pool, cur->value);
+        }
+      }
+      for (cur = size_prop->next; cur != size_prop; cur = cur->next) {
+        if (cur->value && *cur->value) {
+          attr_size = apr_pstrdup(doc->pool, cur->value);
+          if (STRCASEEQ('x','X',"xx-small",attr_size)) {
+            attr_size = apr_pstrdup(doc->pool, "1");
+          }
+          else if (STRCASEEQ('x','X',"x-small",attr_size)) {
+            attr_size = apr_pstrdup(doc->pool, "2");
+          }
+          else if (STRCASEEQ('s','S',"small",attr_size)) {
+            attr_size = apr_pstrdup(doc->pool, "3");
+          }
+          else if (STRCASEEQ('m','M',"medium",attr_size)) {
+            attr_size = apr_pstrdup(doc->pool, "4");
+          }
+          else if (STRCASEEQ('l','L',"large",attr_size)) {
+            attr_size = apr_pstrdup(doc->pool, "5");
+          }
+          else if (STRCASEEQ('x','X',"x-large",attr_size)) {
+            attr_size = apr_pstrdup(doc->pool, "6");
+          }
+          else if (STRCASEEQ('x','X',"xx-large",attr_size)) {
+            attr_size = apr_pstrdup(doc->pool, "7");
+          }
+        }
+      }
+    }
+  }
+
+  xhtml_flags_t *flg = (xhtml_flags_t *)apr_palloc(doc->pool, sizeof(*flg));
+  memset(flg, 0, sizeof(*flg));
+  if (attr_color) {
+    W_L("<font color=\"");
+    W_V(attr_color);
+    W_L("\">");
+    flg->font_color_flag = 1;
+  }
+  if (attr_size) {
+    flg->font_size_flag = 1;
+    switch(*attr_size) {
+    case '1': W_L("<span style=\"font-size: xx-small\">"); break;
+    case '2': W_L("<span style=\"font-size: x-small\">");  break;
+    case '3': W_L("<span style=\"font-size: small\">");    break;
+    case '4': W_L("<span style=\"font-size: medium\">");   break;
+    case '5': W_L("<span style=\"font-size: large\">");    break;
+    case '6': W_L("<span style=\"font-size: x-large\">");  break;
+    case '7': W_L("<span style=\"font-size: xx-large\">"); break;
+    case '-':
+      if (*(attr_size + 1) == '1') {
+        W_L("<span style=\"font-size: small\">");
+        break;
+      }
+      if (*(attr_size + 1) == '2') {
+        W_L("<span style=\"font-size: x-small\">");
+        break;
+      }
+      if (*(attr_size + 1) == '3') {
+        W_L("<span style=\"font-size: xx-small\">");
+        break;
+      }
+      flg->font_size_flag = 0;
+      break;
+
+    case '+':
+      if (*(attr_size + 1) == '1') {
+        W_L("<span style=\"font-size: large\">");
+        break;
+      }
+      if (*(attr_size + 1) == '2') {
+        W_L("<span style=\"font-size: x-large\">");
         break;
       }
       if (*(attr_size + 1) == '3') {
@@ -1522,6 +2122,7 @@ s_xhtml_1_0_start_form_tag(void *pdoc, Node *node)
   char        *attr_color  = NULL;
   char        *attr_align  = NULL;
   char        *attr_name   = NULL;
+  char        *css_clear   = NULL;
   char        *new_hidden_tag = NULL;
 
   /*--------------------------------------------------------------------------*/
@@ -1575,10 +2176,11 @@ s_xhtml_1_0_start_form_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *text_align_prop = chxj_css_get_property_value(doc, style, "text-align");
       css_property_t *color_prop      = chxj_css_get_property_value(doc, style, "color");
+      css_property_t *clear_prop      = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = text_align_prop->next; cur != text_align_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -1594,6 +2196,9 @@ s_xhtml_1_0_start_form_tag(void *pdoc, Node *node)
       for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
         attr_color = apr_pstrdup(doc->pool, cur->value);
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
 
@@ -1630,6 +2235,12 @@ s_xhtml_1_0_start_form_tag(void *pdoc, Node *node)
     W_V(attr_name);
     W_L("\"");
   }
+  if (css_clear) {
+    W_L(" style=\"");
+    W_L("clear:");
+    W_V(css_clear);
+    W_L("\"");
+  }
   W_L(">");
 
   xhtml_flags_t *flg = (xhtml_flags_t *)apr_palloc(doc->pool, sizeof(xhtml_flags_t));
@@ -1813,37 +2424,18 @@ s_xhtml_1_0_start_input_tag(void *pdoc, Node *node)
     W_L("\"");
   }
   if (attr_istyle && *attr_istyle && (*attr_istyle == '1' || *attr_istyle == '2' || *attr_istyle == '3' || *attr_istyle == '4')) {
-    char *fmt = qs_conv_istyle_to_format(r->pool,attr_istyle);
-    if (attr_max_length && *attr_max_length) {
-      int ii;
-      for (ii=0; (unsigned int)ii<strlen(attr_max_length); ii++) {
-        if (attr_max_length[ii] < '0' || attr_max_length[ii] > '9') {
-          attr_max_length = apr_psprintf(r->pool, "0");
-          break;
-        }
-      }
-
-      if (strcmp(attr_max_length, "0")) {
-        char *vv = apr_psprintf(r->pool, " FORMAT=\"%d%s\"", atoi(attr_max_length), fmt);
-        W_V(vv);
-      }
-    }
-    else {
-      W_L(" FORMAT=\"");
-      W_L("*");
-      W_V(fmt);
-      W_L("\"");
-    }
+    W_L(" istyle=\"");
+    W_V(attr_istyle);
+    W_L("\"");
   }
-  else {
-    if (attr_max_length && *attr_max_length) {
-      if (chxj_chk_numeric(attr_max_length) != 0) {
-        attr_max_length = apr_psprintf(r->pool, "0");
-      }
-      if (strcmp(attr_max_length, "0")) {
-        char *vv = apr_psprintf(r->pool, " FORMAT=\"%dm\"", atoi(attr_max_length));
-        W_V(vv);
-      }
+  else if(attr_type && STRCASEEQ('p','P',"password",attr_type)) {
+    W_L(" istyle=\"4\"");
+  }
+  if (attr_max_length && *attr_max_length) {
+    if (chxj_chk_numeric(attr_max_length) == 0) {
+      W_L(" maxlength=\"");
+      W_V(attr_max_length);
+      W_L("\"");
     }
   }
   /*--------------------------------------------------------------------------*/
@@ -2021,7 +2613,7 @@ s_xhtml_1_0_start_center_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop      = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop       = chxj_css_get_property_value(doc, style, "font-size");
@@ -2186,6 +2778,11 @@ s_xhtml_1_0_start_hr_tag(void *pdoc, Node *node)
       css_property_t *border_style_prop = chxj_css_get_property_value(doc, style, "border-style");
       css_property_t *height_prop       = chxj_css_get_property_value(doc, style, "height");
       css_property_t *width_prop        = chxj_css_get_property_value(doc, style, "width");
+      
+      css_property_t *float_prop        = chxj_css_get_property_value(doc, style, "float");
+      css_property_t *border_color_prop = chxj_css_get_property_value(doc, style, "border-color");
+      
+      
       css_property_t *cur;
       for (cur = border_style_prop->next; cur != border_style_prop; cur = cur->next) {
         if (STRCASEEQ('s','S',"solid",cur->value)) {
@@ -2195,8 +2792,15 @@ s_xhtml_1_0_start_hr_tag(void *pdoc, Node *node)
       for (cur = height_prop->next; cur != height_prop; cur = cur->next) {
         char *tmp = apr_pstrdup(doc->pool, cur->value);
         char *tmpp = strstr(tmp, "px");
-        if (tmpp) { 
-          attr_size = apr_pstrdup(doc->pool, tmp);
+        if (tmpp) {
+          size_t len = strlen(tmp) - strlen(tmpp);
+          attr_size = apr_pstrndup(doc->pool, tmp,len);
+        }
+        else{
+          char *tmp2 = strstr(tmp,"%");
+          if(!tmp2){
+            attr_size = apr_pstrdup(doc->pool, tmp);
+          }
         }
       }
       for (cur = width_prop->next; cur != width_prop; cur = cur->next) {
@@ -2212,6 +2816,30 @@ s_xhtml_1_0_start_hr_tag(void *pdoc, Node *node)
           }
         }
       }
+      if(!attr_align){
+        for (cur = float_prop->next; cur != float_prop; cur = cur->next) {
+          char *tmp = apr_pstrdup(doc->pool, cur->value);
+          char *tmpp = strstr(tmp,"none");
+          if(tmpp){
+            attr_align = "center";
+          }
+          else{
+            if(tmp){
+              attr_align = apr_pstrdup(doc->pool, tmp);
+            }
+          }
+        }
+      }
+      if(!attr_color){
+        for (cur = border_color_prop->next; cur != border_color_prop; cur = cur->next) {
+          char *tmp = apr_pstrdup(doc->pool, cur->value);
+          if(tmp){
+            attr_color = apr_pstrdup(doc->pool, tmp);
+          }
+        }
+      }
+      
+      
     }
   }
   W_L("<hr");
@@ -2220,16 +2848,9 @@ s_xhtml_1_0_start_hr_tag(void *pdoc, Node *node)
     W_V(attr_align);
     W_L("\"");
   }
-  if (attr_size || attr_width || attr_noshade) {
+  if (attr_width) {
     W_L(" style=\"");
-    if (attr_size) {
-      W_L("height:");
-      W_V(attr_size);
-      if (!strstr(attr_size, "px")) {
-        W_L("px");
-      }
-      W_L(";");
-    }
+    
     if (attr_width) {
       W_L("width:");
       W_V(attr_width);
@@ -2238,16 +2859,22 @@ s_xhtml_1_0_start_hr_tag(void *pdoc, Node *node)
       }
       W_L(";");
     }
-    if (attr_noshade) {
-      W_L("border-style:solid;");
-    }
+    
     W_L("\"");
   }
+  
   if (attr_color) {
     W_L(" color=\"");
     W_V(attr_color);
     W_L("\"");
   }
+  
+  if(attr_size){
+    W_L(" size=\"");
+    W_V(attr_size);
+    W_L("\"");
+  }
+  
   W_L(" />");
 
   return xhtml->out;
@@ -2298,7 +2925,7 @@ s_xhtml_1_0_start_pre_tag(void *pdoc, Node *node)
   }
 
   if (IS_CSS_ON(xhtml->entryp)) {
-    s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
   }
 
   xhtml->pre_flag++;
@@ -2349,6 +2976,7 @@ s_xhtml_1_0_start_p_tag(void *pdoc, Node *node)
   char    *attr_style = NULL;
   char    *attr_color = NULL;
   char    *attr_blink = NULL;
+  char    *css_clear  = NULL;
 
   for (attr = qs_get_attr(doc,node);
        attr;
@@ -2369,11 +2997,12 @@ s_xhtml_1_0_start_p_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *text_align_prop = chxj_css_get_property_value(doc, style, "text-align");
       css_property_t *color_prop      = chxj_css_get_property_value(doc, style, "color");
       css_property_t *text_deco_prop  = chxj_css_get_property_value(doc, style, "text-decoration");
+      css_property_t *clear_prop      = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = text_align_prop->next; cur != text_align_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left",cur->value)) {
@@ -2396,10 +3025,13 @@ s_xhtml_1_0_start_p_tag(void *pdoc, Node *node)
           attr_blink = apr_pstrdup(doc->pool, cur->value);
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }
   W_L("<p");
-  if ((attr_align && *attr_align) || (attr_color && *attr_color) || (attr_blink && *attr_blink)) {
+  if ((attr_align && *attr_align) || (attr_color && *attr_color) || (attr_blink && *attr_blink) || css_clear) {
     W_L(" style=\"");
     if (attr_align) {
       W_L("text-align:");
@@ -2417,6 +3049,11 @@ s_xhtml_1_0_start_p_tag(void *pdoc, Node *node)
       W_V(attr_blink);
       W_L(";");
     }
+    if (css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -2480,7 +3117,7 @@ s_xhtml_1_0_start_ul_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "list-style-type");
       css_property_t *cur;
@@ -2548,6 +3185,7 @@ s_xhtml_1_0_start_h1_tag(void *pdoc, Node *node)
   Attr    *attr;
   char    *attr_style = NULL;
   char    *attr_align = NULL;
+  char    *css_clear  = NULL;
 
   for (attr = qs_get_attr(doc,node);
        attr;
@@ -2564,9 +3202,10 @@ s_xhtml_1_0_start_h1_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -2579,14 +3218,32 @@ s_xhtml_1_0_start_h1_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
   W_L("<h1");
-  if (attr_align) {
+  if (attr_align || css_clear ) {
     W_L(" style=\"");
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -2633,6 +3290,7 @@ s_xhtml_1_0_start_h2_tag(void *pdoc, Node *node)
   Attr    *attr;
   char    *attr_style = NULL;
   char    *attr_align = NULL;
+  char    *css_clear  = NULL;
 
   for (attr = qs_get_attr(doc,node);
        attr;
@@ -2649,9 +3307,10 @@ s_xhtml_1_0_start_h2_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -2664,14 +3323,32 @@ s_xhtml_1_0_start_h2_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
   W_L("<h2");
-  if (attr_align) {
+  if (attr_align || css_clear ) {
     W_L(" style=\"");
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -2718,6 +3395,7 @@ s_xhtml_1_0_start_h3_tag(void *pdoc, Node *node)
   Attr    *attr;
   char    *attr_style = NULL;
   char    *attr_align = NULL;
+  char    *css_clear  = NULL;
 
   for (attr = qs_get_attr(doc,node);
        attr;
@@ -2734,9 +3412,10 @@ s_xhtml_1_0_start_h3_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -2749,14 +3428,32 @@ s_xhtml_1_0_start_h3_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
   W_L("<h3");
-  if (attr_align) {
+  if (attr_align || css_clear ) {
     W_L(" style=\"");
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -2804,6 +3501,7 @@ s_xhtml_1_0_start_h4_tag(void *pdoc, Node *node)
   Attr    *attr;
   char    *attr_style = NULL;
   char    *attr_align = NULL;
+  char    *css_clear  = NULL;
 
   for (attr = qs_get_attr(doc,node);
        attr;
@@ -2820,9 +3518,10 @@ s_xhtml_1_0_start_h4_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -2835,14 +3534,32 @@ s_xhtml_1_0_start_h4_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
   W_L("<h4");
-  if (attr_align) {
+  if (attr_align || css_clear ) {
     W_L(" style=\"");
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -2863,7 +3580,7 @@ static char *
 s_xhtml_1_0_end_h4_tag(void *pdoc, Node *UNUSED(child)) 
 {
   xhtml_t *xhtml = GET_XHTML(pdoc);
-  Doc     *doc   = xhtml->doc;
+   Doc     *doc   = xhtml->doc;
 
   W_L("</h4>");
   if (IS_CSS_ON(xhtml->entryp)) {
@@ -2890,6 +3607,7 @@ s_xhtml_1_0_start_h5_tag(void *pdoc, Node *node)
   Attr    *attr;
   char    *attr_style = NULL;
   char    *attr_align = NULL;
+  char    *css_clear  = NULL;
 
   for (attr = qs_get_attr(doc,node);
        attr;
@@ -2906,9 +3624,10 @@ s_xhtml_1_0_start_h5_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -2921,14 +3640,32 @@ s_xhtml_1_0_start_h5_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
   W_L("<h5");
-  if (attr_align) {
+  if (attr_align || css_clear ) {
     W_L(" style=\"");
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -2976,6 +3713,7 @@ s_xhtml_1_0_start_h6_tag(void *pdoc, Node *node)
   Attr    *attr;
   char    *attr_style = NULL;
   char    *attr_align = NULL;
+  char    *css_clear  = NULL;
 
   for (attr = qs_get_attr(doc,node);
        attr;
@@ -2992,9 +3730,10 @@ s_xhtml_1_0_start_h6_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "text-align");
+      css_property_t *clear_prop           = chxj_css_get_property_value(doc, style, "clear");
       css_property_t *cur;
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
         if (STRCASEEQ('l','L',"left", cur->value)) {
@@ -3007,14 +3746,32 @@ s_xhtml_1_0_start_h6_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        if (STRCASEEQ('b','B',"both", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "both");
+        }
+        else if (STRCASEEQ('r','R',"right", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "right");
+        }
+        else if (STRCASEEQ('l','L',"left", cur->value)) {
+          css_clear = apr_pstrdup(doc->pool, "left");
+        }
+      }
     }
   }
   W_L("<h6");
-  if (attr_align) {
+  if (attr_align || css_clear ) {
     W_L(" style=\"");
-    W_L("text-align:");
-    W_V(attr_align);
-    W_L(";");
+    if(attr_align){
+      W_L("text-align:");
+      W_V(attr_align);
+      W_L(";");
+    }
+    if(css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -3091,7 +3848,7 @@ s_xhtml_1_0_start_ol_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "list-style-type");
       css_property_t *cur;
@@ -3197,7 +3954,7 @@ s_xhtml_1_0_start_li_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "list-style-type");
       css_property_t *cur;
@@ -3287,6 +4044,14 @@ s_xhtml_1_0_start_img_tag(void *pdoc, Node *node)
   char          *attr_style  = NULL;
   char          *attr_hspace = NULL;
   char          *attr_vspace = NULL;
+  
+  char          *css_margin_left    = NULL;
+  char          *css_margin_right   = NULL;
+  char          *css_margin_top     = NULL;
+  char          *css_margin_bottom  = NULL;
+  char          *css_display        = NULL;
+  char          *css_valign         = NULL;
+  
 
 #ifndef IMG_NOT_CONVERT_FILENAME
   device_table  *spec = xhtml->spec;
@@ -3305,6 +4070,7 @@ s_xhtml_1_0_start_img_tag(void *pdoc, Node *node)
       value = chxj_encoding_parameter(r, value, 1);
       value = chxj_add_cookie_parameter(r, value, xhtml->cookie);
       value = chxj_add_cookie_no_update_parameter(r, value);
+      value = chxj_img_rewrite_parameter(r,xhtml->conf,value);
 #ifdef IMG_NOT_CONVERT_FILENAME
       attr_src = value;
 
@@ -3321,13 +4087,15 @@ s_xhtml_1_0_start_img_tag(void *pdoc, Node *node)
       if (value) {
         if (STRCASEEQ('t','T',"top",   value) ||
             STRCASEEQ('m','M',"middle",value) ||
-            STRCASEEQ('b','B',"bottom",value) ||
-            STRCASEEQ('l','L',"left",  value) ||
-            STRCASEEQ('r','R',"right", value)) {
+            STRCASEEQ('b','B',"bottom",value)) {
+            css_valign = value;
+        }
+        else if( STRCASEEQ('l','L',"left",  value) ||
+                 STRCASEEQ('r','R',"right", value)) {
           attr_align = value;
         }
         else if (STRCASEEQ('c','C',"center",  value)) {
-          attr_align = apr_pstrdup(doc->pool, "middle");
+          css_valign = apr_pstrdup(doc->pool, "middle");
         }
       }
     }
@@ -3357,6 +4125,11 @@ s_xhtml_1_0_start_img_tag(void *pdoc, Node *node)
       css_property_t *height_prop = chxj_css_get_property_value(doc, style, "height");
       css_property_t *width_prop  = chxj_css_get_property_value(doc, style, "width");
       css_property_t *valign_prop = chxj_css_get_property_value(doc, style, "vertical-align");
+      css_property_t *margin_left_prop   = chxj_css_get_property_value(doc, style, "margin-left");
+      css_property_t *margin_right_prop  = chxj_css_get_property_value(doc, style, "margin-right");
+      css_property_t *margin_top_prop    = chxj_css_get_property_value(doc, style, "margin-top");
+      css_property_t *margin_bottom_prop = chxj_css_get_property_value(doc, style, "margin-bottom");
+      
       css_property_t *cur;
       for (cur = height_prop->next; cur != height_prop; cur = cur->next) {
         attr_height = apr_pstrdup(doc->pool, cur->value);
@@ -3364,8 +4137,44 @@ s_xhtml_1_0_start_img_tag(void *pdoc, Node *node)
       for (cur = width_prop->next; cur != width_prop; cur = cur->next) {
         attr_width = apr_pstrdup(doc->pool, cur->value);
       }
-      for (cur = valign_prop->next; cur != valign_prop; cur = cur->next) {
-        attr_align = apr_pstrdup(doc->pool, cur->value);
+      if(!css_valign){
+        for (cur = valign_prop->next; cur != valign_prop; cur = cur->next) {
+          css_valign = apr_pstrdup(doc->pool, cur->value);
+        }
+      }
+      
+      if (! attr_hspace) {
+        for (cur = margin_left_prop->next; cur != margin_left_prop; cur = cur->next) {
+          css_margin_left   = apr_pstrdup(doc->pool, cur->value);
+        }
+        for (cur = margin_right_prop->next; cur != margin_right_prop; cur = cur->next) {
+          css_margin_right  = apr_pstrdup(doc->pool, cur->value);
+        }
+      }
+      
+      if (! attr_vspace) {
+        for (cur = margin_top_prop->next; cur != margin_top_prop; cur = cur->next) {
+          css_margin_top = apr_pstrdup(doc->pool, cur->value);
+        }
+        for (cur = margin_bottom_prop->next; cur != margin_bottom_prop; cur = cur->next) {
+          css_margin_bottom = apr_pstrdup(doc->pool, cur->value);
+        }
+      }
+      
+      //  float:[left|right] -> align
+      if(!attr_align){
+        css_property_t *float_prop = chxj_css_get_property_value(doc, style, "float");
+        for (cur = float_prop->next; cur != float_prop; cur = cur->next) {
+          attr_align = apr_pstrdup(doc->pool, cur->value);
+        }
+      }
+      css_property_t *display_prop       = chxj_css_get_property_value(doc, style, "display");
+      for (cur = display_prop->next; cur != display_prop; cur = cur->next) {
+        char *tmp = apr_pstrdup(doc->pool, cur->value);
+        char *tmpp = strstr(tmp, "none");
+        if(tmpp){
+          css_display = apr_pstrdup(doc->pool, tmp);
+        }
       }
     }
   }
@@ -3391,14 +4200,56 @@ s_xhtml_1_0_start_img_tag(void *pdoc, Node *node)
     W_V(attr_height);
     W_L("\"");
   }
-  if (attr_hspace) {
-    W_L(" hspace=\"");
-    W_V(attr_hspace);
-    W_L("\"");
-  }
-  if (attr_vspace) {
-    W_L(" vspace=\"");
-    W_V(attr_vspace);
+  if (attr_hspace || attr_vspace || css_margin_left || css_margin_right || css_margin_top || css_margin_bottom || css_valign || css_display) {
+    W_L(" style=\"");
+    if(css_valign){
+      W_L("vertical-align:");
+      W_V(css_valign);
+      W_L(";");
+    }
+    if (attr_hspace) {
+      W_L("margin-left:");
+      W_V(attr_hspace);
+      W_L(";");
+      W_L("margin-right:");
+      W_V(attr_hspace);
+      W_L(";");
+    }
+    else{
+      if(css_margin_left){
+        W_L("margin-left:");
+        W_V(css_margin_left);
+        W_L(";");
+      }
+      if(css_margin_right){
+        W_L("margin-right:");
+        W_V(css_margin_right);
+        W_L(";");
+      }
+    }
+    if (attr_vspace) {
+      W_L("margin-top:");
+      W_V(attr_vspace);
+      W_L(";");
+      W_L("margin-bottom:");
+      W_V(attr_vspace);
+      W_L(";");
+    }
+    else{
+      if(css_margin_top){
+        W_L("margin-top:");
+        W_V(css_margin_top);
+        W_L(";");
+      }
+      if(css_margin_bottom){
+        W_L("margin-bottom:");
+        W_V(css_margin_bottom);
+        W_L(";");
+      }
+    }
+    if(css_display){
+      W_L("display:none;");
+    }
     W_L("\"");
   }
   if (attr_alt) {
@@ -3497,7 +4348,7 @@ s_xhtml_1_0_start_select_tag(void *pdoc, Node *node)
   }
   W_L(">");
   if (IS_CSS_ON(xhtml->entryp)) {
-    s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
   }
 
   return xhtml->out;
@@ -3574,7 +4425,7 @@ s_xhtml_1_0_start_option_tag(void *pdoc, Node *node)
   }
   W_L(">");
   if (IS_CSS_ON(xhtml->entryp)) {
-    s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
   }
   return xhtml->out;
 }
@@ -3627,6 +4478,7 @@ s_xhtml_1_0_start_div_tag(void *pdoc, Node *node)
   char        *attr_color             = NULL;
   char        *attr_bgcolor           = NULL;
   char        *attr_font_size         = NULL;
+  char        *css_clear              = NULL;
 
   for (attr = qs_get_attr(doc,node);
        attr;
@@ -3656,6 +4508,7 @@ s_xhtml_1_0_start_div_tag(void *pdoc, Node *node)
       css_property_t *font_size_prop         = chxj_css_get_property_value(doc, style, "font-size");
       css_property_t *background_color_prop  = chxj_css_get_property_value(doc, style, "background-color");
       css_property_t *background_prop        = chxj_css_get_property_value(doc, style, "background");
+      css_property_t *clear_prop             = chxj_css_get_property_value(doc, style, "clear");
 
       css_property_t *cur;
       for (cur = display_prop->next; cur != display_prop; cur = cur->next) {
@@ -3714,9 +4567,17 @@ s_xhtml_1_0_start_div_tag(void *pdoc, Node *node)
           }
         }
         for (cur = wap_marquee_loop_prop->next; cur != wap_marquee_loop_prop; cur = cur->next) {
-          attr_wap_marquee_loop = apr_pstrdup(doc->pool, cur->value);
+          if(strcmp(cur->value,"0") == 0 || strcmp(cur->value,"-1") == 0){
+            attr_wap_marquee_loop = "infinite";
+          }
+          else{
+            attr_wap_marquee_loop = apr_pstrdup(doc->pool, cur->value);
+          }
         }
       }
+      for (cur = clear_prop->next; cur != clear_prop; cur = cur->next) {
+        css_clear = apr_pstrdup(doc->pool, cur->value);
+      }
     }
   }  
   W_L("<div");
@@ -3728,7 +4589,8 @@ s_xhtml_1_0_start_div_tag(void *pdoc, Node *node)
       || attr_wap_marquee_loop
       || attr_color
       || attr_bgcolor
-      || attr_font_size) {
+      || attr_font_size
+      || css_clear ) {
     W_L(" style=\"");
     if (attr_align) {
       W_L("text-align:");
@@ -3775,6 +4637,11 @@ s_xhtml_1_0_start_div_tag(void *pdoc, Node *node)
       W_V(attr_font_size);
       W_L(";");
     }
+    if (css_clear){
+      W_L("clear:");
+      W_V(css_clear);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -3961,9 +4828,8 @@ s_xhtml_1_0_start_textarea_tag(void *pdoc, Node *node)
     W_L("\"");
   }
   if (attr_istyle) {
-    char *fmt = qs_conv_istyle_to_format(doc->r->pool, attr_istyle);
-    W_L(" FORMAT=\"*");
-    W_V(fmt);
+    W_L(" istyle=\"");
+    W_V(attr_istyle);
     W_L("\"");
   }
   W_L(">");
@@ -4084,7 +4950,7 @@ s_xhtml_1_0_start_blockquote_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop = chxj_css_get_property_value(doc, style, "color");
       css_property_t *font_size_prop = chxj_css_get_property_value(doc, style, "font-size");
@@ -4196,7 +5062,7 @@ s_xhtml_1_0_start_dir_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
@@ -4260,27 +5126,6 @@ s_xhtml_1_0_start_dir_tag(void *pdoc, Node *node)
     }
     W_L("\"");
   }
-  W_L("<dir");
-  if (attr_type || attr_color || attr_size) {
-    W_L(" style=\"");
-    if (attr_type) {
-      W_L("list-style-type:");
-      W_V(attr_type);
-      W_L(";");
-    }
-    if (attr_color) {
-      attr_color = chxj_css_rgb_func_to_value(doc->pool, attr_color);
-      W_L("color:");
-      W_V(attr_color);
-      W_L(";");
-    }
-    if (attr_size) {
-      W_L("font-size:");
-      W_V(attr_size);
-      W_L(";");
-    }
-    W_L("\"");
-  }
   W_L(">");
   return xhtml->out;
 }
@@ -4335,7 +5180,7 @@ s_xhtml_1_0_start_dl_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
@@ -4442,7 +5287,7 @@ s_xhtml_1_0_start_dt_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
@@ -4549,7 +5394,7 @@ s_xhtml_1_0_start_dd_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
@@ -4661,45 +5506,15 @@ s_xhtml_1_0_start_menu_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
-      css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "list-style-type");
-      css_property_t *cur;
-      for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
-        if (cur->value && *cur->value) {
-          attr_color = apr_pstrdup(doc->pool, cur->value);
-        }
-      }
-      for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
-        if (cur->value && *cur->value) {
-          attr_type = apr_pstrdup(doc->pool, cur->value);
-        }
-      }
-      for (cur = size_prop->next; cur != size_prop; cur = cur->next) {
+      css_property_t *list_style_type_prop = chxj_css_get_property_value(doc, style, "list-style-type");
+      css_property_t *cur;
+      for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
         if (cur->value && *cur->value) {
-          if (STRCASEEQ('x','X',"xx-small",cur->value)) {
-            attr_size = apr_pstrdup(doc->pool, cur->value);
-          }
-          else if (STRCASEEQ('x','X',"x-small",cur->value)) {
-            attr_size = apr_pstrdup(doc->pool, cur->value);
-          }
-          else if (STRCASEEQ('s','S',"small",cur->value)) {
-            attr_size = apr_pstrdup(doc->pool, cur->value);
-          }
-          else if (STRCASEEQ('m','M',"medium",cur->value)) {
-            attr_size = apr_pstrdup(doc->pool, cur->value);
-          }
-          else if (STRCASEEQ('l','L',"large",cur->value)) {
-            attr_size = apr_pstrdup(doc->pool, cur->value);
-          }
-          else if (STRCASEEQ('x','X',"x-large",cur->value)) {
-            attr_size = apr_pstrdup(doc->pool, cur->value);
-          }
-          else if (STRCASEEQ('x','X',"xx-large",cur->value)) {
-            attr_size = apr_pstrdup(doc->pool, cur->value);
-          }
+          attr_color = apr_pstrdup(doc->pool, cur->value);
         }
       }
       for (cur = list_style_type_prop->next; cur != list_style_type_prop; cur = cur->next) {
@@ -4755,27 +5570,6 @@ s_xhtml_1_0_start_menu_tag(void *pdoc, Node *node)
     }
     W_L("\"");
   }
-  W_L("<menu");
-  if (attr_type || attr_color || attr_size) {
-    W_L(" style=\"");
-    if (attr_type) {
-      W_L("list-style-type:");
-      W_V(attr_type);
-      W_L(";");
-    }
-    if (attr_color) {
-      attr_color = chxj_css_rgb_func_to_value(doc->pool, attr_color);
-      W_L("color:");
-      W_V(attr_color);
-      W_L(";");
-    }
-    if (attr_size) {
-      W_L("font-size:");
-      W_V(attr_size);
-      W_L(";");
-    }
-    W_L("\"");
-  }
   W_L(">");
   return xhtml->out;
 }
@@ -4882,7 +5676,7 @@ s_xhtml_1_0_start_blink_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop           = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop            = chxj_css_get_property_value(doc, style, "font-size");
@@ -5018,7 +5812,7 @@ s_xhtml_1_0_start_marquee_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop  = chxj_css_get_property_value(doc, style, "font-size");
@@ -5118,43 +5912,6 @@ s_xhtml_1_0_start_marquee_tag(void *pdoc, Node *node)
     }
     W_L("\"");
   }
-  W_L("<marquee");
-  if (attr_color || attr_size || attr_direction || attr_bgcolor || attr_behavior || attr_loop) {
-    W_L(" style=\"");
-    if (attr_direction) {
-      W_L("-wap-marquee-dir:");
-      W_V(attr_direction);
-      W_L(";");
-    }
-    if (attr_behavior) {
-      W_L("-wap-marquee-style:");
-      W_V(attr_behavior);
-      W_L(";");
-    }
-    if (attr_loop) {
-      W_L("-wap-marquee-loop:");
-      W_V(attr_loop);
-      W_L(";");
-    }
-    if (attr_bgcolor) {
-      attr_bgcolor = chxj_css_rgb_func_to_value(doc->pool, attr_bgcolor);
-      W_L("background-color:");
-      W_V(attr_bgcolor);
-      W_L(";");
-    }
-    if (attr_color) {
-      attr_color = chxj_css_rgb_func_to_value(doc->pool, attr_color);
-      W_L("color:");
-      W_V(attr_color);
-      W_L(";");
-    }
-    if (attr_size) {
-      W_L("font-size:");
-      W_V(attr_size);
-      W_L(";");
-    }
-    W_L("\"");
-  }
   W_L(">");
 
   return xhtml->out;
@@ -5335,6 +6092,7 @@ s_xhtml_1_0_start_span_tag(void *pdoc, Node *node)
   char *attr_marquee_dir = NULL;
   char *attr_marquee_style = NULL;
   char *attr_marquee_loop = NULL;
+  char *css_bgcolor       = NULL;
 
   xhtml = GET_XHTML(pdoc);
   doc     = xhtml->doc;
@@ -5349,7 +6107,7 @@ s_xhtml_1_0_start_span_tag(void *pdoc, Node *node)
     }
   }
   if (IS_CSS_ON(xhtml->entryp)) {
-    css_prop_list_t *style = s_xhtml_1_0_push_and_get_now_style(pdoc, node, attr_style);
+    css_prop_list_t *style = s_xhtml_1_0_nopush_and_get_now_style(pdoc, node, attr_style);
     if (style) {
       css_property_t *color_prop = chxj_css_get_property_value(doc, style, "color");
       css_property_t *size_prop = chxj_css_get_property_value(doc, style, "font-size");
@@ -5359,6 +6117,8 @@ s_xhtml_1_0_start_span_tag(void *pdoc, Node *node)
       css_property_t *marquee_dir_prop = chxj_css_get_property_value(doc, style, "-wap-marquee-dir");
       css_property_t *marquee_style_prop = chxj_css_get_property_value(doc, style, "-wap-marquee-style");
       css_property_t *marquee_loop_prop = chxj_css_get_property_value(doc, style, "-wap-marquee-loop");
+      css_property_t *bgcolor_prop = chxj_css_get_property_value(doc, style, "background-color");
+      
       css_property_t *cur;
       for (cur = color_prop->next; cur != color_prop; cur = cur->next) {
         attr_color = apr_pstrdup(doc->pool, cur->value);
@@ -5405,7 +6165,12 @@ s_xhtml_1_0_start_span_tag(void *pdoc, Node *node)
       }
       for (cur = marquee_loop_prop->next; cur != marquee_loop_prop; cur = cur->next) {
         if (cur->value && *cur->value) {
-          attr_marquee_loop = apr_pstrdup(doc->pool, cur->value);
+          if(strcmp(cur->value,"0") == 0 || strcmp(cur->value,"-1") == 0){
+            attr_marquee_loop = "infinite";
+          }
+          else{
+            attr_marquee_loop = apr_pstrdup(doc->pool, cur->value);
+          }
         }
       }
       for (cur = text_align_prop->next; cur != text_align_prop; cur = cur->next) {
@@ -5419,11 +6184,16 @@ s_xhtml_1_0_start_span_tag(void *pdoc, Node *node)
           attr_align = apr_pstrdup(doc->pool, "right");
         }
       }
+      for (cur = bgcolor_prop->next; cur != bgcolor_prop; cur = cur->next) {
+        if (cur->value && *cur->value) {
+          css_bgcolor = apr_pstrdup(doc->pool, cur->value);
+        }
+      }
     }
   }
 
   W_L("<span");
-  if (attr_color || attr_size || attr_align || attr_blink || attr_marquee) {
+  if (attr_color || attr_size || attr_align || attr_blink || attr_marquee || css_bgcolor) {
     W_L(" style=\"");
     if (attr_color) {
       attr_color = chxj_css_rgb_func_to_value(doc->pool, attr_color);
@@ -5464,6 +6234,11 @@ s_xhtml_1_0_start_span_tag(void *pdoc, Node *node)
         W_L(";");
       }
     }
+    if(css_bgcolor){
+      W_L("background-color:");
+      W_V(css_bgcolor);
+      W_L(";");
+    }
     W_L("\"");
   }
   W_L(">");
@@ -5486,9 +6261,7 @@ s_xhtml_1_0_end_span_tag(void *pdoc, Node *UNUSED(node))
   Doc *doc = xhtml->doc;
 
   W_L("</span>");
-  if (IS_CSS_ON(xhtml->entryp)) {
-    chxj_css_pop_prop_list(xhtml->css_prop_stack);
-  }
+
   return xhtml->out;
 }
 
@@ -5540,6 +6313,229 @@ s_xhtml_1_0_style_tag(void *pdoc, Node *node)
   }
   return xhtml->out;
 }
+
+/**
+ * It is a handler who processes the OBJECT tag.
+ *
+ * @param pdoc  [i/o] The pointer to the XHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The OBJECT tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_xhtml_1_0_start_object_tag(void *pdoc, Node *node)
+{
+  xhtml_t *xhtml = GET_XHTML(pdoc);
+  Doc *doc = xhtml->doc;
+
+  Attr *attr;
+  
+  char *attr_id            = NULL;
+  char *attr_width         = NULL;
+  char *attr_height        = NULL;
+  char *attr_data          = NULL;
+  char *attr_type          = NULL;
+  
+  /*--------------------------------------------------------------------------*/
+  /* Get Attributes                                                           */
+  /*--------------------------------------------------------------------------*/
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name   = qs_get_attr_name(doc,attr);
+    char *value  = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('i','I',"id",name)) {
+      attr_id = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('w','W',"width",name)) {
+      attr_width = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('h','H',"height",name)) {
+      attr_height = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('d','D',"data",name)) {
+      attr_data = apr_pstrdup(doc->pool, value);
+    }
+    else if  (STRCASEEQ('t','T',"type",name)) {
+      attr_type = apr_pstrdup(doc->pool, value);
+    }
+  }
+  W_L("<object");
+  
+  if(attr_id){
+    W_L(" id=\"");
+    W_V(attr_id);
+    W_L("\"");
+  }
+  if(attr_width){
+    W_L(" width=\"");
+    W_V(attr_width);
+    W_L("\"");
+  }
+  if(attr_height){
+    W_L(" height=\"");
+    W_V(attr_height);
+    W_L("\"");
+  }
+  if(attr_data){
+    W_L(" data=\"");
+    W_V(attr_data);
+    W_L("\"");
+  }
+  if(attr_type){
+    W_L(" type=\"");
+    W_V(attr_type);
+    W_L("\"");
+  }
+  
+  W_L(">");
+  return xhtml->out;
+}
+
+/**
+ * It is a handler who processes the OBJECT tag.
+ *
+ * @param pdoc  [i/o] The pointer to the XHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The OBJECT tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_xhtml_1_0_end_object_tag(void *pdoc, Node *UNUSED(node))
+{
+  xhtml_t *xhtml = GET_XHTML(pdoc);
+  Doc *doc = xhtml->doc;
+
+  W_L("</object>");
+  return xhtml->out;
+}
+
+/**
+ * It is a handler who processes the OBJECT tag.
+ *
+ * @param pdoc  [i/o] The pointer to the XHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The OBJECT tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_xhtml_1_0_start_param_tag(void *pdoc, Node *node)
+{
+  xhtml_t *xhtml = GET_XHTML(pdoc);
+  Doc *doc = xhtml->doc;
+
+  Attr *attr;
+  char *attr_style         = NULL;
+  char *attr_name          = NULL;
+  char *attr_value         = NULL;
+  char *attr_valuetype     = NULL;
+  
+  /*--------------------------------------------------------------------------*/
+  /* Get Attributes                                                           */
+  /*--------------------------------------------------------------------------*/
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name   = qs_get_attr_name(doc,attr);
+    char *value  = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('n','N',"name",name)) {
+      attr_name = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('v','V',"value",name)) {
+      attr_value = apr_pstrdup(doc->pool, value);
+    }
+    else if (STRCASEEQ('v','V',"valuetype",name)) {
+      attr_valuetype = apr_pstrdup(doc->pool, value);
+    }
+  }
+  W_L("<param");
+  
+  if(attr_name){
+    W_L(" name=\"");
+    W_V(attr_name);
+    W_L("\"");
+  }
+  if(attr_value){
+    W_L(" value=\"");
+    W_V(attr_value);
+    W_L("\"");
+  }
+  if(attr_valuetype){
+    W_L(" valuetype=\"");
+    W_V(attr_valuetype);
+    W_L("\"");
+  }
+  W_L(" />");
+  return xhtml->out;
+}
+/**
+ * It is a handler who processes the CAPTION tag.
+ *
+ * @param pdoc  [i/o] The pointer to the XHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The CAPTION tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_xhtml_1_0_start_caption_tag(void *pdoc, Node *node) 
+{
+  xhtml_t *xhtml = GET_XHTML(pdoc);
+  Doc     *doc   = xhtml->doc;
+  Attr    *attr;
+  char    *attr_style = NULL;
+  char    *attr_align = NULL;
+
+  for (attr = qs_get_attr(doc,node);
+       attr;
+       attr = qs_get_next_attr(doc,attr)) {
+    char *name  = qs_get_attr_name(doc,attr);
+    char *value = qs_get_attr_value(doc,attr);
+    if (STRCASEEQ('a','A',"align", name)) {
+      if (value && 
+          (STRCASEEQ('l','L',"left",value) 
+        || STRCASEEQ('r','R',"right",value) 
+        || STRCASEEQ('t','T',"top",value)
+        || STRCASEEQ('b','B',"bottom",value) 
+        )) {
+        attr_align = value;
+      }
+    }
+    else if (STRCASEEQ('s','S',"style",name) && value && *value) {
+      attr_style = value;
+    }
+  }
+  
+  W_L("<h1");
+  if(attr_align){
+    W_L(" align=\"");
+    W_V(attr_align);
+    W_L("\"");
+  }
+  W_L(">");
+
+  return xhtml->out;
+}
+
+
+/**
+ * It is a handler who processes the CAPTION tag.
+ *
+ * @param pdoc  [i/o] The pointer to the XHTML structure at the output
+ *                     destination is specified.
+ * @param node   [i]   The CAPTION tag node is specified.
+ * @return The conversion result is returned.
+ */
+static char *
+s_xhtml_1_0_end_caption_tag(void *pdoc, Node *UNUSED(child)) 
+{
+  xhtml_t *xhtml = GET_XHTML(pdoc);
+  Doc     *doc   = xhtml->doc;
+
+  W_L("</caption>");
+  return xhtml->out;
+}
+
+
 /*
  * vim:ts=2 et
  */
index ff0653b..7343c0a 100755 (executable)
@@ -341,7 +341,7 @@ Copyright (C) 2006 Free Software Foundation, Inc.
 This config.status script is free software; the Free Software Foundation
 gives unlimited permission to copy, distribute and modify it."
 
-ac_pwd='/home/konno/work/mod_chxj/mod_chxj/src/css'
+ac_pwd='/home/konno/work/mod_chxj/src/css'
 srcdir='.'
 INSTALL='/usr/bin/install -c'
 MKDIR_P='/bin/mkdir -p'
@@ -533,17 +533,17 @@ s,@LIBS@,|#_!!_#|-lapr-1     -luuid -lrt -lcrypt  -lpthread -ldl      ,g
 s,@build_alias@,|#_!!_#|,g
 s,@host_alias@,|#_!!_#|,g
 s,@target_alias@,|#_!!_#|,g
-s,@build@,|#_!!_#|i686-pc-linux-gnu,g
-s,@build_cpu@,|#_!!_#|i686,g
-s,@build_vendor@,|#_!!_#|pc,g
+s,@build@,|#_!!_#|x86_64-unknown-linux-gnu,g
+s,@build_cpu@,|#_!!_#|x86_64,g
+s,@build_vendor@,|#_!!_#|unknown,g
 s,@build_os@,|#_!!_#|linux-gnu,g
-s,@host@,|#_!!_#|i686-pc-linux-gnu,g
-s,@host_cpu@,|#_!!_#|i686,g
-s,@host_vendor@,|#_!!_#|pc,g
+s,@host@,|#_!!_#|x86_64-unknown-linux-gnu,g
+s,@host_cpu@,|#_!!_#|x86_64,g
+s,@host_vendor@,|#_!!_#|unknown,g
 s,@host_os@,|#_!!_#|linux-gnu,g
-s,@target@,|#_!!_#|i686-pc-linux-gnu,g
-s,@target_cpu@,|#_!!_#|i686,g
-s,@target_vendor@,|#_!!_#|pc,g
+s,@target@,|#_!!_#|x86_64-unknown-linux-gnu,g
+s,@target_cpu@,|#_!!_#|x86_64,g
+s,@target_vendor@,|#_!!_#|unknown,g
 s,@target_os@,|#_!!_#|linux-gnu,g
 s,@INSTALL_PROGRAM@,|#_!!_#|${INSTALL},g
 s,@INSTALL_SCRIPT@,|#_!!_#|${INSTALL},g
@@ -552,23 +552,23 @@ s,@am__isrc@,|#_!!_#|,g
 s,@CYGPATH_W@,|#_!!_#|echo,g
 s,@PACKAGE@,|#_!!_#|scss,g
 s,@VERSION@,|#_!!_#|1.0.0,g
-s,@ACLOCAL@,|#_!!_#|${SHELL} /home/konno/work/mod_chxj/mod_chxj/missing --run aclocal-1.10,g
-s,@AUTOCONF@,|#_!!_#|${SHELL} /home/konno/work/mod_chxj/mod_chxj/missing --run autoconf,g
-s,@AUTOMAKE@,|#_!!_#|${SHELL} /home/konno/work/mod_chxj/mod_chxj/missing --run automake-1.10,g
-s,@AUTOHEADER@,|#_!!_#|${SHELL} /home/konno/work/mod_chxj/mod_chxj/missing --run autoheader,g
-s,@MAKEINFO@,|#_!!_#|${SHELL} /home/konno/work/mod_chxj/mod_chxj/missing --run makeinfo,g
-s,@install_sh@,|#_!!_#|$(SHELL) /home/konno/work/mod_chxj/mod_chxj/install-sh,g
+s,@ACLOCAL@,|#_!!_#|${SHELL} /home/konno/work/mod_chxj/missing --run aclocal-1.10,g
+s,@AUTOCONF@,|#_!!_#|${SHELL} /home/konno/work/mod_chxj/missing --run autoconf,g
+s,@AUTOMAKE@,|#_!!_#|${SHELL} /home/konno/work/mod_chxj/missing --run automake-1.10,g
+s,@AUTOHEADER@,|#_!!_#|${SHELL} /home/konno/work/mod_chxj/missing --run autoheader,g
+s,@MAKEINFO@,|#_!!_#|${SHELL} /home/konno/work/mod_chxj/missing --run makeinfo,g
+s,@install_sh@,|#_!!_#|$(SHELL) /home/konno/work/mod_chxj/install-sh,g
 s,@STRIP@,|#_!!_#|strip,g
 s,@INSTALL_STRIP_PROGRAM@,|#_!!_#|$(install_sh) -c -s,g
 s,@mkdir_p@,|#_!!_#|/bin/mkdir -p,g
 s,@AWK@,|#_!!_#|gawk,g
 s,@SET_MAKE@,|#_!!_#|,g
 s,@am__leading_dot@,|#_!!_#|.,g
-s,@AMTAR@,|#_!!_#|${SHELL} /home/konno/work/mod_chxj/mod_chxj/missing --run tar,g
+s,@AMTAR@,|#_!!_#|${SHELL} /home/konno/work/mod_chxj/missing --run tar,g
 s,@am__tar@,|#_!!_#|${AMTAR} chof - "$$tardir",g
 s,@am__untar@,|#_!!_#|${AMTAR} xf -,g
 s,@CC@,|#_!!_#|gcc,g
-s,@CFLAGS@,|#_!!_#|-g -O2  -I/usr/include/apr-1.0   -pipe -Wall -g -O2 -pthread  -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE  -I/usr/include/apr-1.0 -I/usr/include/postgresql,g
+s,@CFLAGS@,|#_!!_#|-g -O2  -I/usr/include/apr-1.0    -pthread  -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE  -I/usr/include/apr-1.0 -I/usr/include/postgresql -I/usr/include/mysql,g
 s,@LDFLAGS@,|#_!!_#|,g
 s,@CPPFLAGS@,|#_!!_#|,g
 s,@ac_ct_CC@,|#_!!_#|gcc,g
@@ -600,9 +600,9 @@ s,@CXXDEPMODE@,|#_!!_#|depmode=gcc3,g
 s,@am__fastdepCXX_TRUE@,|#_!!_#|,g
 s,@am__fastdepCXX_FALSE@,|#_!!_#|#,g
 s,@CXXCPP@,|#_!!_#|g++ -E,g
-s,@F77@,|#_!!_#|g77,g
-s,@FFLAGS@,|#_!!_#|-g -O2,g
-s,@ac_ct_F77@,|#_!!_#|g77,g
+s,@F77@,|#_!!_#|,g
+s,@FFLAGS@,|#_!!_#|,g
+s,@ac_ct_F77@,|#_!!_#|,g
 s,@LIBTOOL@,|#_!!_#|/usr/bin/libtool,g
 s,@LIBTOOL_DEPS@,|#_!!_#|./../../ltmain.sh,g
 s,@APR_CONFIG@,|#_!!_#|/usr/bin/apr-config,g
index 5df78cf..9acd028 100755 (executable)
@@ -40,11 +40,11 @@ Xsed="/bin/sed -e 1s/^X//"
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 # The names of the tagged configurations supported by this script.
-available_tags=" CXX F77"
+available_tags=" CXX"
 
 # ### BEGIN LIBTOOL CONFIG
 
-# Libtool was configured on host oregano:
+# Libtool was configured on host debian64:
 
 # Shell to use when invoking shell scripts.
 SHELL="/bin/sh"
@@ -66,12 +66,12 @@ fast_install=yes
 
 # The host system.
 host_alias=
-host=i686-pc-linux-gnu
+host=x86_64-unknown-linux-gnu
 host_os=linux-gnu
 
 # The build system.
 build_alias=
-build=i686-pc-linux-gnu
+build=x86_64-unknown-linux-gnu
 build_os=linux-gnu
 
 # An echo program that does not interpret backslashes.
@@ -97,7 +97,7 @@ with_gcc=yes
 EGREP="/bin/grep -E"
 
 # The linker used to build libraries.
-LD="/usr/bin/ld"
+LD="/usr/bin/ld -m elf_x86_64"
 
 # Whether we need hard or soft links.
 LN_S="ln -s"
@@ -325,10 +325,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM
 link_all_deplibs=no
 
 # Compile-time system search path for libraries
-sys_lib_search_path_spec=" /usr/lib/gcc/i486-linux-gnu/4.1.2/ /usr/lib/gcc/i486-linux-gnu/4.1.2/ /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../i486-linux-gnu/lib/i486-linux-gnu/4.1.2/ /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../i486-linux-gnu/lib/ /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../i486-linux-gnu/4.1.2/ /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../ /lib/i486-linux-gnu/4.1.2/ /lib/ /usr/lib/i486-linux-gnu/4.1.2/ /usr/lib/"
+sys_lib_search_path_spec=" /usr/lib/gcc/x86_64-linux-gnu/4.3.2/ /usr/lib/gcc/x86_64-linux-gnu/4.3.2/ /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../x86_64-linux-gnu/lib/x86_64-linux-gnu/4.3.2/ /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../x86_64-linux-gnu/lib/../lib/ /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../x86_64-linux-gnu/4.3.2/ /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../lib/ /lib/x86_64-linux-gnu/4.3.2/ /lib/../lib/ /usr/lib/x86_64-linux-gnu/4.3.2/ /usr/lib/../lib/ /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../x86_64-linux-gnu/lib/ /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../ /lib/ /usr/lib/"
 
 # Run-time system search path for libraries
-sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/ibm-java2-i386-60/jre/lib /usr/local/ibm-java2-i386-60/jre/lib/i386/classic /usr/local/ibm-java2-i386-60/jre/lib/i386 /usr/local/ibm-java2-i386-60/jre/lib/i386/jli /usr/local/mysql/lib/mysql /usr/lib/libc5-compat /lib/libc5-compat /usr/i486-linuxlibc1/lib /usr/X11R6/lib /usr/local/pgsql/lib /usr/lib /usr/local/lib /lib/i486-linux-gnu /usr/lib/i486-linux-gnu "
+sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /usr/local/lib64 /usr/lib /var/lenny-386-chroot/lib /var/lenny-386-chroot/usr/lib /var/lenny-386-chroot/usr/X11R6/lib /var/lenny-386-chroot/usr/local/lib "
 
 # Fix the shell variable $srcfile for the compiler.
 fix_srcfile_path=""
@@ -7223,7 +7223,7 @@ disable_libs=static
 # End:
 # ### BEGIN LIBTOOL TAG CONFIG: CXX
 
-# Libtool was configured on host oregano:
+# Libtool was configured on host debian64:
 
 # Shell to use when invoking shell scripts.
 SHELL="/bin/sh"
@@ -7245,12 +7245,12 @@ fast_install=yes
 
 # The host system.
 host_alias=
-host=i686-pc-linux-gnu
+host=x86_64-unknown-linux-gnu
 host_os=linux-gnu
 
 # The build system.
 build_alias=
-build=i686-pc-linux-gnu
+build=x86_64-unknown-linux-gnu
 build_os=linux-gnu
 
 # An echo program that does not interpret backslashes.
@@ -7276,7 +7276,7 @@ with_gcc=yes
 EGREP="/bin/grep -E"
 
 # The linker used to build libraries.
-LD="/usr/bin/ld"
+LD="/usr/bin/ld -m elf_x86_64"
 
 # Whether we need hard or soft links.
 LN_S="ln -s"
@@ -7405,11 +7405,11 @@ striplib="strip --strip-unneeded"
 
 # Dependencies to place before the objects being linked to create a
 # shared library.
-predep_objects="/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crti.o /usr/lib/gcc/i486-linux-gnu/4.1.2/crtbeginS.o"
+predep_objects="/usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../lib/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.3.2/crtbeginS.o"
 
 # Dependencies to place after the objects being linked to create a
 # shared library.
-postdep_objects="/usr/lib/gcc/i486-linux-gnu/4.1.2/crtendS.o /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crtn.o"
+postdep_objects="/usr/lib/gcc/x86_64-linux-gnu/4.3.2/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../lib/crtn.o"
 
 # Dependencies to place before the objects being linked to create a
 # shared library.
@@ -7421,7 +7421,7 @@ postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s"
 
 # The library search path used internally by the compiler when linking
 # a shared library.
-compiler_lib_search_path="-L/usr/lib/gcc/i486-linux-gnu/4.1.2 -L/usr/lib/gcc/i486-linux-gnu/4.1.2 -L/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib -L/lib/../lib -L/usr/lib/../lib"
+compiler_lib_search_path="-L/usr/lib/gcc/x86_64-linux-gnu/4.3.2 -L/usr/lib/gcc/x86_64-linux-gnu/4.3.2 -L/usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../.."
 
 # Method to check whether dependent libraries are shared objects.
 deplibs_check_method="pass_all"
@@ -7501,10 +7501,10 @@ variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COM
 link_all_deplibs=no
 
 # Compile-time system search path for libraries
-sys_lib_search_path_spec=" /usr/lib/gcc/i486-linux-gnu/4.1.2/ /usr/lib/gcc/i486-linux-gnu/4.1.2/ /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../i486-linux-gnu/lib/i486-linux-gnu/4.1.2/ /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../i486-linux-gnu/lib/ /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../i486-linux-gnu/4.1.2/ /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../ /lib/i486-linux-gnu/4.1.2/ /lib/ /usr/lib/i486-linux-gnu/4.1.2/ /usr/lib/"
+sys_lib_search_path_spec=" /usr/lib/gcc/x86_64-linux-gnu/4.3.2/ /usr/lib/gcc/x86_64-linux-gnu/4.3.2/ /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../x86_64-linux-gnu/lib/x86_64-linux-gnu/4.3.2/ /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../x86_64-linux-gnu/lib/../lib/ /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../x86_64-linux-gnu/4.3.2/ /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../lib/ /lib/x86_64-linux-gnu/4.3.2/ /lib/../lib/ /usr/lib/x86_64-linux-gnu/4.3.2/ /usr/lib/../lib/ /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../../x86_64-linux-gnu/lib/ /usr/lib/gcc/x86_64-linux-gnu/4.3.2/../../../ /lib/ /usr/lib/"
 
 # Run-time system search path for libraries
-sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/ibm-java2-i386-60/jre/lib /usr/local/ibm-java2-i386-60/jre/lib/i386/classic /usr/local/ibm-java2-i386-60/jre/lib/i386 /usr/local/ibm-java2-i386-60/jre/lib/i386/jli /usr/local/mysql/lib/mysql /usr/lib/libc5-compat /lib/libc5-compat /usr/i486-linuxlibc1/lib /usr/X11R6/lib /usr/local/pgsql/lib /usr/lib /usr/local/lib /lib/i486-linux-gnu /usr/lib/i486-linux-gnu "
+sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/lib /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /usr/local/lib64 /usr/lib /var/lenny-386-chroot/lib /var/lenny-386-chroot/usr/lib /var/lenny-386-chroot/usr/X11R6/lib /var/lenny-386-chroot/usr/local/lib "
 
 # Fix the shell variable $srcfile for the compiler.
 fix_srcfile_path=""
@@ -7526,311 +7526,3 @@ include_expsyms=""
 
 # ### END LIBTOOL TAG CONFIG: CXX
 
-# ### BEGIN LIBTOOL TAG CONFIG: F77
-
-# Libtool was configured on host oregano:
-
-# Shell to use when invoking shell scripts.
-SHELL="/bin/sh"
-
-# Whether or not to build shared libraries.
-build_libtool_libs=yes
-
-# Whether or not to build static libraries.
-build_old_libs=yes
-
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=no
-
-# Whether or not to disallow shared libs when runtime libs are static
-allow_libtool_libs_with_static_runtimes=no
-
-# Whether or not to optimize for fast installation.
-fast_install=yes
-
-# The host system.
-host_alias=
-host=i686-pc-linux-gnu
-host_os=linux-gnu
-
-# The build system.
-build_alias=
-build=i686-pc-linux-gnu
-build_os=linux-gnu
-
-# An echo program that does not interpret backslashes.
-echo="echo"
-
-# The archiver.
-AR="ar"
-AR_FLAGS="cru"
-
-# A C compiler.
-LTCC="gcc"
-
-# LTCC compiler flags.
-LTCFLAGS="-g -O2"
-
-# A language-specific compiler.
-CC="g77"
-
-# Is the compiler the GNU C compiler?
-with_gcc=yes
-
-# An ERE matcher.
-EGREP="/bin/grep -E"
-
-# The linker used to build libraries.
-LD="/usr/bin/ld"
-
-# Whether we need hard or soft links.
-LN_S="ln -s"
-
-# A BSD-compatible nm program.
-NM="/usr/bin/nm -B"
-
-# A symbol stripping program
-STRIP="strip"
-
-# Used to examine libraries when file_magic_cmd begins "file"
-MAGIC_CMD=file
-
-# Used on cygwin: DLL creation program.
-DLLTOOL="dlltool"
-
-# Used on cygwin: object dumper.
-OBJDUMP="objdump"
-
-# Used on cygwin: assembler.
-AS="as"
-
-# The name of the directory that contains temporary libtool files.
-objdir=.libs
-
-# How to create reloadable object files.
-reload_flag=" -r"
-reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"
-
-# How to pass a linker flag through the compiler.
-wl="-Wl,"
-
-# Object file suffix (normally "o").
-objext="o"
-
-# Old archive suffix (normally "a").
-libext="a"
-
-# Shared library suffix (normally ".so").
-shrext_cmds='.so'
-
-# Executable file suffix (normally "").
-exeext=""
-
-# Additional compiler flags for building library objects.
-pic_flag=" -fPIC"
-pic_mode=default
-
-# What is the maximum length of a command?
-max_cmd_len=32768
-
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o="yes"
-
-# Must we lock files when doing compilation?
-need_locks="no"
-
-# Do we need the lib prefix for modules?
-need_lib_prefix=no
-
-# Do we need a version for libraries?
-need_version=no
-
-# Whether dlopen is supported.
-dlopen_support=unknown
-
-# Whether dlopen of programs is supported.
-dlopen_self=unknown
-
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=unknown
-
-# Compiler flag to prevent dynamic linking.
-link_static_flag="-static"
-
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=""
-
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec="\${wl}--export-dynamic"
-
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive"
-
-# Compiler flag to generate thread-safe objects.
-thread_safe_flag_spec=""
-
-# Library versioning type.
-version_type=linux
-
-# Format of library name prefix.
-libname_spec="lib\$name"
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME.
-library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"
-
-# The coded name of the library, if different from the real name.
-soname_spec="\${libname}\${release}\${shared_ext}\$major"
-
-# Commands used to build and install an old-style archive.
-RANLIB="ranlib"
-old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB \$oldlib"
-old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
-old_postuninstall_cmds=""
-
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=""
-
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=""
-
-# Commands used to build and install a shared archive.
-archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib"
-archive_expsym_cmds="\$echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~
-  cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~
-  \$echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
-         \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib"
-postinstall_cmds=""
-postuninstall_cmds=""
-
-# Commands used to build a loadable module (assumed same as above if empty)
-module_cmds=""
-module_expsym_cmds=""
-
-# Commands to strip libraries.
-old_striplib="strip --strip-debug"
-striplib="strip --strip-unneeded"
-
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predep_objects=""
-
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdep_objects=""
-
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predeps=""
-
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdeps=""
-
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=""
-
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method="pass_all"
-
-# Command to use when deplibs_check_method == file_magic.
-file_magic_cmd="\$MAGIC_CMD"
-
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=""
-
-# Flag that forces no undefined symbols.
-no_undefined_flag=""
-
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"
-
-# Same as above, but a single script fragment to be evaled but not shown.
-finish_eval=""
-
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe="sed -n -e 's/^.*[  ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[       ][      ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"
-
-# Transform the output of nm in a proper C declaration
-global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'"
-
-# Transform the output of nm in a C name address pair
-global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/  {\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/  {\"\\2\", (lt_ptr) \\&\\2},/p'"
-
-# This is the shared library runtime path variable.
-runpath_var=LD_RUN_PATH
-
-# This is the shared library path variable.
-shlibpath_var=LD_LIBRARY_PATH
-
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=no
-
-# How to hardcode a shared library path into an executable.
-hardcode_action=immediate
-
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=yes
-
-# Flag to hardcode $libdir into a binary during linking.
-# This must work even if $libdir does not exist.
-hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir"
-
-# If ld is used when linking, flag to hardcode $libdir into
-# a binary during linking. This must work even if $libdir does
-# not exist.
-hardcode_libdir_flag_spec_ld=""
-
-# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator=""
-
-# Set to yes if using DIR/libNAME during linking hardcodes DIR into the
-# resulting binary.
-hardcode_direct=no
-
-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-# resulting binary.
-hardcode_minus_L=no
-
-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-# the resulting binary.
-hardcode_shlibpath_var=unsupported
-
-# Set to yes if building a shared library automatically hardcodes DIR into the library
-# and all subsequent libraries and executables linked against it.
-hardcode_automatic=no
-
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at relink time.
-variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=no
-
-# Compile-time system search path for libraries
-sys_lib_search_path_spec=" /usr/lib/gcc/i486-linux-gnu/3.4.6/ /usr/lib/gcc/i486-linux-gnu/3.4.6/ /usr/lib/gcc/i486-linux-gnu/3.4.6/../../../../i486-linux-gnu/lib/i486-linux-gnu/3.4.6/ /usr/lib/gcc/i486-linux-gnu/3.4.6/../../../../i486-linux-gnu/lib/ /usr/lib/gcc/i486-linux-gnu/3.4.6/../../../i486-linux-gnu/3.4.6/ /usr/lib/gcc/i486-linux-gnu/3.4.6/../../../ /lib/i486-linux-gnu/3.4.6/ /lib/ /usr/lib/i486-linux-gnu/3.4.6/ /usr/lib/"
-
-# Run-time system search path for libraries
-sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/local/ibm-java2-i386-60/jre/lib /usr/local/ibm-java2-i386-60/jre/lib/i386/classic /usr/local/ibm-java2-i386-60/jre/lib/i386 /usr/local/ibm-java2-i386-60/jre/lib/i386/jli /usr/local/mysql/lib/mysql /usr/lib/libc5-compat /lib/libc5-compat /usr/i486-linuxlibc1/lib /usr/X11R6/lib /usr/local/pgsql/lib /usr/lib /usr/local/lib /lib/i486-linux-gnu /usr/lib/i486-linux-gnu "
-
-# Fix the shell variable $srcfile for the compiler.
-fix_srcfile_path=""
-
-# Set to yes if exported symbols are required.
-always_export_symbols=no
-
-# The commands to list exported symbols.
-export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols"
-
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=""
-
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
-
-# Symbols that must always be exported.
-include_expsyms=""
-
-# ### END LIBTOOL TAG CONFIG: F77
-
index 3b04bd9..a2399aa 100644 (file)
@@ -30,9 +30,9 @@ POST_INSTALL = :
 NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
-build_triplet = i686-pc-linux-gnu
-host_triplet = i686-pc-linux-gnu
-target_triplet = i686-pc-linux-gnu
+build_triplet = x86_64-unknown-linux-gnu
+host_triplet = x86_64-unknown-linux-gnu
+target_triplet = x86_64-unknown-linux-gnu
 subdir = src
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -78,20 +78,20 @@ DIST_SOURCES = $(libscss_la_SOURCES)
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /home/konno/work/mod_chxj/mod_chxj/missing --run aclocal-1.10
-AMTAR = ${SHELL} /home/konno/work/mod_chxj/mod_chxj/missing --run tar
+ACLOCAL = ${SHELL} /home/konno/work/mod_chxj/missing --run aclocal-1.10
+AMTAR = ${SHELL} /home/konno/work/mod_chxj/missing --run tar
 APR_1_CONFIG = 
 APR_CONFIG = /usr/bin/apr-config
 APU_1_CONFIG = 
 APU_CONFIG = /usr/bin/apu-config
 AR = ar
-AUTOCONF = ${SHELL} /home/konno/work/mod_chxj/mod_chxj/missing --run autoconf
-AUTOHEADER = ${SHELL} /home/konno/work/mod_chxj/mod_chxj/missing --run autoheader
-AUTOMAKE = ${SHELL} /home/konno/work/mod_chxj/mod_chxj/missing --run automake-1.10
+AUTOCONF = ${SHELL} /home/konno/work/mod_chxj/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/konno/work/mod_chxj/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/konno/work/mod_chxj/missing --run automake-1.10
 AWK = gawk
 CC = gcc
 CCDEPMODE = depmode=gcc3
-CFLAGS = -g -O2  -I/usr/include/apr-1.0   -pipe -Wall -g -O2 -pthread  -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE  -I/usr/include/apr-1.0 -I/usr/include/postgresql
+CFLAGS = -g -O2  -I/usr/include/apr-1.0    -pthread  -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE  -I/usr/include/apr-1.0 -I/usr/include/postgresql -I/usr/include/mysql
 CPP = gcc -E
 CPPFLAGS = 
 CXX = g++
@@ -107,8 +107,8 @@ ECHO_N = -n
 ECHO_T = 
 EGREP = /bin/grep -E
 EXEEXT = 
-F77 = g77
-FFLAGS = -g -O2
+F77 = 
+FFLAGS = 
 GREP = /bin/grep
 INSTALL = /usr/bin/install -c
 INSTALL_DATA = ${INSTALL} -m 644
@@ -122,7 +122,7 @@ LIBTOOL = /usr/bin/libtool
 LIBTOOL_DEPS = ./../../ltmain.sh
 LN_S = ln -s
 LTLIBOBJS = 
-MAKEINFO = ${SHELL} /home/konno/work/mod_chxj/mod_chxj/missing --run makeinfo
+MAKEINFO = ${SHELL} /home/konno/work/mod_chxj/missing --run makeinfo
 MKDIR_P = /bin/mkdir -p
 OBJEXT = o
 PACKAGE = scss
@@ -137,39 +137,39 @@ SET_MAKE =
 SHELL = /bin/sh
 STRIP = strip
 VERSION = 1.0.0
-abs_builddir = /home/konno/work/mod_chxj/mod_chxj/src/css/src
-abs_srcdir = /home/konno/work/mod_chxj/mod_chxj/src/css/src
-abs_top_builddir = /home/konno/work/mod_chxj/mod_chxj/src/css
-abs_top_srcdir = /home/konno/work/mod_chxj/mod_chxj/src/css
+abs_builddir = /home/konno/work/mod_chxj/src/css/src
+abs_srcdir = /home/konno/work/mod_chxj/src/css/src
+abs_top_builddir = /home/konno/work/mod_chxj/src/css
+abs_top_srcdir = /home/konno/work/mod_chxj/src/css
 ac_ct_CC = gcc
 ac_ct_CXX = g++
-ac_ct_F77 = g77
+ac_ct_F77 = 
 am__include = include
 am__leading_dot = .
 am__quote = 
 am__tar = ${AMTAR} chof - "$$tardir"
 am__untar = ${AMTAR} xf -
 bindir = ${exec_prefix}/bin
-build = i686-pc-linux-gnu
+build = x86_64-unknown-linux-gnu
 build_alias = 
-build_cpu = i686
+build_cpu = x86_64
 build_os = linux-gnu
-build_vendor = pc
+build_vendor = unknown
 builddir = .
 datadir = ${datarootdir}
 datarootdir = ${prefix}/share
 docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
 dvidir = ${docdir}
 exec_prefix = ${prefix}
-host = i686-pc-linux-gnu
+host = x86_64-unknown-linux-gnu
 host_alias = 
-host_cpu = i686
+host_cpu = x86_64
 host_os = linux-gnu
-host_vendor = pc
+host_vendor = unknown
 htmldir = ${docdir}
 includedir = ${prefix}/include
 infodir = ${datarootdir}/info
-install_sh = $(SHELL) /home/konno/work/mod_chxj/mod_chxj/install-sh
+install_sh = $(SHELL) /home/konno/work/mod_chxj/install-sh
 libdir = ${exec_prefix}/lib
 libexecdir = ${exec_prefix}/libexec
 localedir = ${datarootdir}/locale
@@ -185,11 +185,11 @@ sbindir = ${exec_prefix}/sbin
 sharedstatedir = ${prefix}/com
 srcdir = .
 sysconfdir = ${prefix}/etc
-target = i686-pc-linux-gnu
+target = x86_64-unknown-linux-gnu
 target_alias = 
-target_cpu = i686
+target_cpu = x86_64
 target_os = linux-gnu
-target_vendor = pc
+target_vendor = unknown
 top_builddir = ..
 top_srcdir = ..
 libscss_la_SOURCES = main.c \
@@ -204,7 +204,7 @@ libscss_la_SOURCES = main.c \
   iconv.c
 
 libscss_la_CFLAGS = -O2 -prefer-pic -I. -I../include -I./serf
-AM_CFLAGS = -g -O2  -I/usr/include/apr-1.0   -pipe -Wall -g -O2 -pthread  -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE  -I/usr/include/apr-1.0 -I/usr/include/postgresql -O2 -prefer-pic -I. -I../include 
+AM_CFLAGS = -g -O2  -I/usr/include/apr-1.0    -pthread  -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE  -I/usr/include/apr-1.0 -I/usr/include/postgresql -I/usr/include/mysql -O2 -prefer-pic -I. -I../include 
 lib_LTLIBRARIES = libscss.la
 all: all-am
 
old mode 100644 (file)
new mode 100755 (executable)
index 9b7aa8c..ff94a08
@@ -33,6 +33,7 @@
 #include "apr_dso.h"
 #include "apr_general.h"
 #include "apr_pools.h"
+#include "apr_file_info.h"
 
 #include "mod_chxj.h"
 #include "chxj_encoding.h"
@@ -303,6 +304,31 @@ chxj_headers_fixup(request_rec *r)
       }
     }
   }
+  else{
+    if(strncmp(r->content_type,"image/",6) == 0){
+      if (dconf->image_rewrite == CHXJ_IMG_REWRITE_ON && !apr_table_get(r->headers_in, CHXJ_IMG_X_HTTP_IMAGE_FILENAME)){
+        if(dconf->image_rewrite_mode == CHXJ_IMG_REWRITE_MODE_ALL){
+          // all image
+          apr_table_set(r->headers_in, CHXJ_IMG_X_HTTP_IMAGE_FILENAME, r->filename);
+          apr_table_set(r->headers_in, CHXJ_IMG_X_HTTP_IMAGE_TYPE,r->content_type);
+          r->filename = apr_pstrcat(r->pool,"img-redirect:",dconf->image_rewrite_url,NULL);
+          r->handler = "chxj-image-redirect-handler";
+          return OK;
+        }
+        else{
+          //   has _chxj_imgrewrite=on in args
+          char *args_tmp = chxj_url_decode(r->pool, r->args);
+          if (strstr(args_tmp,CHXJ_IMG_REWRITE_URL_STRING)){
+            apr_table_set(r->headers_in, CHXJ_IMG_X_HTTP_IMAGE_FILENAME, r->filename);
+            apr_table_set(r->headers_in, CHXJ_IMG_X_HTTP_IMAGE_TYPE,r->content_type);
+            r->filename = apr_pstrcat(r->pool,"img-redirect:",dconf->image_rewrite_url,NULL);
+            r->handler = "chxj-image-redirect-handler";
+            return OK;
+          }
+        }
+      }
+    }
+  }
 
   chxj_add_device_env(r, spec);
 
@@ -311,6 +337,24 @@ chxj_headers_fixup(request_rec *r)
   return DECLINED;
 }
 
+static int
+chxj_image_redirect_handler(request_rec *r)
+{
+
+  if (strcmp(r->handler, "chxj-image-redirect-handler")) {
+    return DECLINED;
+  }
+
+  if (strncmp(r->filename, "img-redirect:", 13) != 0) {
+    return DECLINED;
+  }
+  DBG(r,"start chxj_image_redirect_handler");
+  ap_internal_redirect(apr_pstrcat(r->pool, r->filename+13,
+                                       r->args ? "?" : NULL, r->args, NULL), r);
+  DBG(r,"end chxj_image_redirect_handler");
+  return OK;
+}
+
 
 static void
 s_clear_cookie_header(request_rec *r, device_table *spec)
@@ -419,6 +463,7 @@ chxj_convert(request_rec *r, const char **src, apr_size_t *len, device_table *sp
   }
 
   if (!r->header_only) {
+
     if ((entryp->action & CONVRULE_COOKIE_ONLY_BIT) && cookie) {
       dst = chxj_cookie_only_mode(r, *src, (apr_size_t *)len, cookie);
     }
@@ -473,6 +518,13 @@ chxj_convert(request_rec *r, const char **src, apr_size_t *len, device_table *sp
       }
     }
   }
+  if (*len > 0){
+    if (strcasecmp(spec->output_encoding,"UTF-8") == 0){
+      dst = chxj_iconv(r,r->pool,dst,len,"CP932","UTF-8");
+    }
+  }
+
+
   ap_set_content_length(r, *len);
 
   if (*len == 0) {
@@ -485,6 +537,7 @@ chxj_convert(request_rec *r, const char **src, apr_size_t *len, device_table *sp
   }
 
 
+
   DBG(r, "REQ[%X] end of chxj_convert()", (unsigned int)(apr_size_t)r);
 
   return dst;
@@ -615,7 +668,7 @@ chxj_convert_input_header(request_rec *r,chxjconvrule_entry *entryp, device_tabl
           dlen   = strlen(value);
           DBG(r, "************ before encoding[%s]", value);
   
-          dvalue = chxj_rencoding(r, value, &dlen);
+          dvalue = chxj_rencoding(r, value, &dlen,spec->output_encoding);
           dvalue = chxj_url_encode(r->pool, dvalue);
   
           DBG(r, "************ after encoding[%s]", dvalue);
@@ -627,7 +680,7 @@ chxj_convert_input_header(request_rec *r,chxjconvrule_entry *entryp, device_tabl
         if (name && *name != 0) {
           name = chxj_url_decode(r->pool, name);
           dlen = strlen(name);
-          dname = chxj_rencoding(r, name, &dlen);
+          dname = chxj_rencoding(r, name, &dlen,spec->output_encoding);
           dname = chxj_url_encode(r->pool, dname);
         }
         else {
@@ -792,7 +845,7 @@ chxj_input_convert(
         if (value && *value != 0) {
           value = chxj_url_decode(pool, value);
           dlen   = strlen(value);
-          dvalue = chxj_rencoding(r, value, &dlen);
+          dvalue = chxj_rencoding(r, value, &dlen,spec->output_encoding);
           dvalue = chxj_url_encode(pool, dvalue);
         }
         else {
@@ -802,7 +855,7 @@ chxj_input_convert(
         if (name && *name != 0) {
           name = chxj_url_decode(pool, name);
           dlen = strlen(name);
-          dname = chxj_rencoding(r, name, &dlen);
+          dname = chxj_rencoding(r, name, &dlen,spec->output_encoding);
           dname = chxj_url_encode(pool, dname);
         }
         else {
@@ -835,7 +888,7 @@ chxj_input_convert(
 
         dlen   = strlen(value);
         value = chxj_url_decode(pool, value);
-        dvalue = chxj_rencoding(r, value, &dlen);
+        dvalue = chxj_rencoding(r, value, &dlen,spec->output_encoding);
         dvalue = chxj_url_encode(pool,dvalue);
         result = apr_pstrcat(pool, result, &name[8], "=", dvalue, NULL);
 
@@ -872,12 +925,14 @@ chxj_input_convert(
     }
     else
     if ( strncasecmp(name, CHXJ_QUERY_STRING_PARAM_PREFIX,     sizeof(CHXJ_QUERY_STRING_PARAM_PREFIX)-1) == 0) {
-      apr_size_t dlen;
+      apr_size_t dlen = 0;
       char*      dvalue;
-      dlen   = strlen(value);
-      if (dlen && value) {
+      if (value) {
+        dlen   = strlen(value);
+      }
+      if (dlen) {
         value = chxj_url_decode(pool, value);
-        dvalue = chxj_rencoding(r, value, &dlen);
+        dvalue = chxj_rencoding(r, value, &dlen,spec->output_encoding);
         dvalue = chxj_url_encode(pool,dvalue);
         if (r->args && strlen(r->args) > 0) {
           r->args = apr_pstrcat(pool, r->args, "&", &name[sizeof(CHXJ_QUERY_STRING_PARAM_PREFIX)-1], "=", dvalue, NULL);
@@ -895,7 +950,7 @@ chxj_input_convert(
       dlen   = strlen(value);
       if (dlen && value) {
         value = chxj_url_decode(pool, value);
-        dvalue = chxj_rencoding(r, value, &dlen);
+        dvalue = chxj_rencoding(r, value, &dlen,spec->output_encoding);
         dvalue = chxj_url_encode(pool,dvalue);
         if (r->args && strlen(r->args) > 0) {
           r->args = apr_pstrcat(pool, r->args, "&", &name[sizeof(CHXJ_QUERY_STRING_PARAM_PREFIX_ENC)-1], "=", dvalue, NULL);
@@ -960,7 +1015,6 @@ pass_data_to_filter(ap_filter_t *f, const char *data,
   return rv;
 }
 
-
 /**
  * Add No Cache Header
  */
@@ -1600,6 +1654,19 @@ chxj_translate_name(request_rec *r)
   DBG(r, "REQ[%X] METHOD [%s]", TO_ADDR(r), r->method);
   DBG(r, "REQ[%X] ", (unsigned int)(apr_size_t)r);
   DBG(r, "REQ[%X] =======================================================================", (unsigned int)(apr_size_t)r);
+
+  mod_chxj_config *dconf;
+  dconf = chxj_get_module_config(r->per_dir_config, &chxj_module);
+  /*
+  if (dconf->image_rewrite ==CHXJ_IMG_REWRITE_ON ){
+    if(r->args && strcasecmp(r->args,"rewrite") == 0){
+      DBG(r, "image rewrite is ON [%s] - %s", dconf->image_rewrite_url ,r->content_type);
+      r->filename = apr_pstrcat(r->pool,dconf->image_rewrite_url,NULL);
+      return OK;
+    }
+  }
+  */
+
 #if 0
   return chxj_trans_name(r);
 #else
@@ -1632,7 +1699,7 @@ chxj_insert_filter(request_rec *r)
   contentType = (char *)apr_table_get(r->headers_in, "Content-Type");
   if (contentType
       && strncasecmp("multipart/form-data", contentType, 19) == 0) {
-    DBG(r, "REQ[%X] detect multipart/form-data ==> no target", (apr_size_t)(unsigned int)r);
+    DBG(r, "REQ[%X] detect multipart/form-data ==> no target", (unsigned int)(apr_size_t)r);
     DBG(r, "REQ[%X] end chxj_insert_filter()", (unsigned int)(apr_size_t)r);
     return;
   }
@@ -1715,8 +1782,12 @@ chxj_register_hooks(apr_pool_t *UNUSED(p))
   ap_hook_handler(chxj_img_conv_format_handler, NULL, NULL, APR_HOOK_MIDDLE);
   ap_hook_handler(chxj_qr_code_handler, NULL, NULL, APR_HOOK_MIDDLE);
   ap_hook_handler(chxj_input_handler, NULL, NULL, APR_HOOK_MIDDLE);
+
+  ap_hook_handler(chxj_image_redirect_handler, NULL, NULL, APR_HOOK_MIDDLE);
+
   ap_hook_translate_name(chxj_translate_name, NULL, NULL, APR_HOOK_MIDDLE);
   ap_hook_fixups(chxj_headers_fixup, NULL, NULL, APR_HOOK_FIRST);
+
 }
 
 
@@ -1737,6 +1808,7 @@ chxj_create_per_dir_config(apr_pool_t *p, char *arg)
   conf->emoji_data_file  = NULL;
   conf->emoji            = NULL;
   conf->emoji_tail       = NULL;
+  conf->imode_emoji_color = CHXJ_IMODE_EMOJI_COLOR_NONE;
   conf->image            = CHXJ_IMG_NONE;
   conf->image_cache_dir  = apr_psprintf(p, "%s",DEFAULT_IMAGE_CACHE_DIR);
   conf->image_cache_limit = 0;
@@ -1746,6 +1818,9 @@ chxj_create_per_dir_config(apr_pool_t *p, char *arg)
   conf->cookie_store_type = COOKIE_STORE_TYPE_NONE;
   conf->cookie_lazy_mode  = 0;
   conf->cookie_dbm_type  = NULL;
+  
+  conf->detect_device_type = CHXJ_ADD_DETECT_DEVICE_TYPE_NONE;
+  
 #if defined(USE_MYSQL_COOKIE)
   memset((void *)&conf->mysql, 0, sizeof(mysql_t));
   conf->mysql.port       = MYSQL_PORT;
@@ -1774,6 +1849,10 @@ chxj_create_per_dir_config(apr_pool_t *p, char *arg)
   /* Default is copyleft */
   conf->image_copyright = NULL; 
 
+  conf->image_rewrite = CHXJ_IMG_REWRITE_NONE;
+  conf->image_rewrite_mode = CHXJ_IMG_REWRITE_MODE_NONE;
+  conf->image_rewrite_url = NULL;
+
   return conf;
 }
 
@@ -1801,12 +1880,16 @@ chxj_merge_per_dir_config(apr_pool_t *p, void *basev, void *addv)
   mrg->image_cache_limit  = 0;
   mrg->emoji            = NULL;
   mrg->emoji_tail       = NULL;
+  mrg->imode_emoji_color = CHXJ_IMODE_EMOJI_COLOR_NONE;
   mrg->new_line_type    = NLTYPE_NIL;
   mrg->forward_url_base = NULL;
   mrg->forward_server_ip = NULL;
   mrg->allowed_cookie_domain = NULL;
   mrg->post_log         = NULL;
   mrg->cookie_dbm_type  = NULL;
+  
+  mrg->device_keys      = NULL;
+  mrg->device_hash      = NULL;
 
   mrg->dir = apr_pstrdup(p, add->dir);
 
@@ -2044,6 +2127,56 @@ chxj_merge_per_dir_config(apr_pool_t *p, void *basev, void *addv)
   else {
     mrg->cookie_dbm_type = base->cookie_dbm_type;
   }
+  
+  if (add->imode_emoji_color == CHXJ_IMODE_EMOJI_COLOR_NONE) {
+    mrg->imode_emoji_color = base->imode_emoji_color;
+  }
+  else {
+    mrg->imode_emoji_color = add->imode_emoji_color;
+  }
+  
+  if (add->detect_device_type == CHXJ_ADD_DETECT_DEVICE_TYPE_NONE) {
+    mrg->detect_device_type = base->detect_device_type;
+  }
+  else {
+    mrg->detect_device_type = add->detect_device_type;
+  }
+  
+  if (add->device_keys) {
+    mrg->device_keys = add->device_keys;
+  }
+  else{
+    mrg->device_keys = base->device_keys;
+  }
+  
+  if (add->device_hash) {
+    mrg->device_hash = add->device_hash;
+  }
+  else{
+    mrg->device_hash = base->device_hash;
+  }
+  
+  if (add->image_rewrite == CHXJ_IMG_REWRITE_NONE){
+    mrg->image_rewrite = base->image_rewrite;
+  }
+  else{
+    mrg->image_rewrite = add->image_rewrite;
+  }
+
+  if (add->image_rewrite_url) {
+    mrg->image_rewrite_url = add->image_rewrite_url;
+  }
+  else{
+    mrg->image_rewrite_url = base->image_rewrite_url;
+  }
+
+  if (add->image_rewrite_mode == CHXJ_IMG_REWRITE_MODE_NONE){
+    mrg->image_rewrite_mode = base->image_rewrite_mode;
+  }
+  else{
+    mrg->image_rewrite_mode = add->image_rewrite_mode;
+  }
+
   return mrg;
 }
 
@@ -2306,6 +2439,17 @@ cmd_set_image_cache_dir(cmd_parms *parms, void *mconfig, const char *arg)
 
   if (strlen(arg) > 256) 
     return "cache dir name is too long.";
+  
+  apr_finfo_t info;
+  apr_status_t res = apr_stat(&info,arg,APR_FINFO_TYPE,parms->pool);
+  if(res != APR_SUCCESS){
+    return apr_psprintf(parms->pool,"ChxjImageCacheDir [%s]: not found ",arg);
+  }
+  else{
+    if(info.filetype != APR_DIR){
+      return apr_psprintf(parms->pool,"ChxjImageCacheDir [%s]: is not directory ",arg);
+    }
+  }
 
   conf = (mod_chxj_config *)mconfig;
   conf->image_cache_dir = apr_pstrdup(parms->pool, arg);
@@ -2944,6 +3088,117 @@ cmd_cookie_dbm_type(
   return NULL;
 }
 
+static const char *
+cmd_imode_emoji_color(
+  cmd_parms   *cmd, 
+  void        *mconfig, 
+  const char  *arg)
+{
+  mod_chxj_config  *dconf;
+  
+  if (strlen(arg) > 256) 
+    return "imode emoji color is too long.";
+
+  dconf = (mod_chxj_config *)mconfig;
+  if (strcasecmp("ON", arg) == 0) {
+    dconf->imode_emoji_color = CHXJ_IMODE_EMOJI_COLOR_ON;
+  }
+  else if(strcasecmp("AUTO",arg) == 0) {
+    dconf->imode_emoji_color = CHXJ_IMODE_EMOJI_COLOR_AUTO;
+  }
+  else {
+    dconf->imode_emoji_color = CHXJ_IMODE_EMOJI_COLOR_OFF;
+  }
+  
+  return NULL;
+}
+
+static const char *
+cmd_add_device_data_tsv(cmd_parms *parms, void *mconfig, const char *arg) 
+{
+  mod_chxj_config  *conf;
+  
+  if (strlen(arg) > 256) 
+    return "mod_chxj: device tsv filename too long.";
+
+  conf = (mod_chxj_config *)mconfig;
+  
+  conf->detect_device_type = CHXJ_ADD_DETECT_DEVICE_TYPE_TSV;
+  
+  apr_finfo_t info;
+  apr_status_t res = apr_stat(&info,arg,APR_FINFO_TYPE,parms->pool);
+  if(res != APR_SUCCESS){
+    return apr_psprintf(parms->pool,"ChxjDeviceTSV [%s]: not found ",arg);
+  }
+  else{
+    if(info.filetype != APR_REG ){
+      return apr_psprintf(parms->pool,"ChxjDeviceTSV [%s]: is not file ",arg);
+    }
+  }
+  apr_file_t *fp;
+  apr_file_open(&fp, arg, APR_READ|APR_BUFFERED, APR_OS_DEFAULT, parms->pool);
+  
+  chxj_load_device_tsv_data(fp,parms->pool,conf);
+  
+  apr_file_close(fp);
+  return NULL;
+}
+
+static const char *
+cmd_image_rewrite(cmd_parms *parms, void *mconfig, const char *arg)
+{
+  mod_chxj_config *conf;
+  if (strlen(arg) > 256){
+    return "mod_chxj: set rewrite too long.";
+  }
+  conf = (mod_chxj_config *)mconfig;
+  if (strcasecmp("ON", arg) == 0) {
+    conf->image_rewrite = CHXJ_IMG_REWRITE_ON;
+  }
+  else if(strcasecmp("OFF",arg) == 0) {
+    conf->image_rewrite = CHXJ_IMG_REWRITE_OFF;
+  }
+  else {
+    conf->image_rewrite = CHXJ_IMG_REWRITE_NONE;
+  }
+  return NULL;
+}
+
+static const char *
+cmd_image_rewrite_url(cmd_parms *parms, void *mconfig, const char *arg)
+{
+  mod_chxj_config *conf;
+  if (strlen(arg) > 256){
+    return "mod_chxj: set rewrite url too long.";
+  }
+  conf = (mod_chxj_config *)mconfig;
+  conf->image_rewrite_url = apr_pstrdup(parms->pool, arg);;
+  return NULL;
+}
+
+static const char *
+cmd_image_rewrite_mode(cmd_parms *parms, void *mconfig, const char *arg)
+{
+  mod_chxj_config *conf;
+  if (strlen(arg) > 256){
+    return "mod_chxj: set rewrite mode is too long.";
+  }
+
+  conf = (mod_chxj_config *)mconfig;
+  if (strcasecmp("all",arg) == 0) {
+    conf->image_rewrite_mode = CHXJ_IMG_REWRITE_MODE_ALL;
+  }
+  else if (strcasecmp("user",arg) == 0) {
+    conf->image_rewrite_mode = CHXJ_IMG_REWRITE_MODE_USER;
+  }
+  else if (strcasecmp("tag",arg) == 0) {
+    conf->image_rewrite_mode = CHXJ_IMG_REWRITE_MODE_TAG;
+  }
+  else{
+    conf->image_rewrite_mode = CHXJ_IMG_REWRITE_MODE_NONE;
+  }
+  return NULL;
+}
 
 static const command_rec cmds[] = {
   AP_INIT_TAKE1(
@@ -3112,6 +3367,39 @@ static const command_rec cmds[] = {
     NULL,
     OR_ALL,
     "Kind of DBM used with Cookie simulator.(default|GDBM|SDBM|DB|NDBM)"),
+  AP_INIT_TAKE1(
+    "ChxjImodeEmojiColor",
+    cmd_imode_emoji_color,
+    NULL,
+    OR_ALL,
+    "Auto i-mode emoji color"),
+  AP_INIT_TAKE1(
+    "ChxjAddDeviceDataTSV",
+    cmd_add_device_data_tsv,
+    NULL,
+    OR_ALL,
+    "Additional devices TSV data"),
+  AP_INIT_TAKE1(
+    "ChxjImageRewrite",
+    cmd_image_rewrite,
+    NULL,
+    OR_ALL,
+    "Rewrite Image"
+   ),
+  AP_INIT_TAKE1(
+    "ChxjImageRewriteUrl",
+    cmd_image_rewrite_url,
+    NULL,
+    OR_ALL,
+    "Set rewrite Image url"
+   ),
+  AP_INIT_TAKE1(
+    "ChxjImageRewriteMode",
+    cmd_image_rewrite_mode,
+    NULL,
+    OR_ALL,
+    "Set rewrite Image rewrite url mode"
+   ),
   {NULL,{NULL},NULL,0,0,NULL},
 };
 
index f24709b..10a213c 100644 (file)
@@ -49,7 +49,13 @@ qs_parse_tag(Doc *doc, const char *s, int len)
   /* 
    * s[0] == '<' && s[len] == '>' 
    */
-  tag_name = (char *)s_get_tag_name(doc, ++s, --ll);
+  if (sv_s[len-1] == '/'){
+       ll -= 2;
+       tag_name = (char *)s_get_tag_name(doc, ++s, ll);
+  }
+  else{
+       tag_name = (char *)s_get_tag_name(doc, ++s, --ll);
+  }
 
   node = (Node *)qs_new_tag(doc);
   if (! node) {
@@ -111,7 +117,7 @@ s_get_tag_name(Doc *doc, const char *s, int len)
 
   sp = ii;
   for (;ii<len; ii++) {
-    if (is_white_space(s[ii])) 
+    if (is_white_space(s[ii]))
       break;
   }
 
index 326cebd..3d52b3e 100644 (file)
@@ -1,4 +1,4 @@
-%define version 0.13.0-rc
+%define version 0.13.0
 
 Summary: CHTML to HDML,XHTML,JHTML convert module for Apache HTTPD.
 Name:  mod_chxj
index cb0037e..87792ae 100644 (file)
@@ -24151,6 +24151,8 @@ void test_ixhtml10_div_tag_with_css_042()
   ret = chxj_rencoding(&r, ret, &destlen);
   fprintf(stderr, "actual:[%s]\n", ret);
   fprintf(stderr, "expect:[%s]\n", RESULT_STRING);
+<<<<<<< HEAD:test/chxj_ixhtml10/test_chxj_ixhtml10.c
+=======
   CU_ASSERT(ret != NULL);
   CU_ASSERT(strcmp(RESULT_STRING, ret) == 0);
   CU_ASSERT(destlen == sizeof(RESULT_STRING)-1);
@@ -24240,6 +24242,7 @@ void test_ixhtml10_div_tag_with_css_044()
   ret = chxj_rencoding(&r, ret, &destlen);
   fprintf(stderr, "actual:[%s]\n", ret);
   fprintf(stderr, "expect:[%s]\n", RESULT_STRING);
+>>>>>>> master:test/chxj_ixhtml10/test_chxj_ixhtml10.c
   CU_ASSERT(ret != NULL);
   CU_ASSERT(strcmp(RESULT_STRING, ret) == 0);
   CU_ASSERT(destlen == sizeof(RESULT_STRING)-1);