ICU-6798 retag of milestone:4.1.4

X-SVN-Rev: 25632
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..d245f5b
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,197 @@
+* text=auto !eol
+
+*.c text !eol
+*.cc text !eol
+*.classpath text !eol
+*.cpp text !eol
+*.css text !eol
+*.dsp text !eol
+*.dsw text !eol
+*.filters text !eol
+*.h text !eol
+*.htm text !eol
+*.html text !eol
+*.in text !eol
+*.java text !eol
+*.launch text !eol
+*.mak text !eol
+*.md text !eol
+*.MF text !eol
+*.mk text !eol
+*.pl text !eol
+*.pm text !eol
+*.project text !eol
+*.properties text !eol
+*.py text !eol
+*.rc text !eol
+*.sh text eol=lf
+*.sln text !eol
+*.stub text !eol
+*.txt text !eol
+*.ucm text !eol
+*.vcproj text !eol
+*.vcxproj text !eol
+*.xml text !eol
+*.xsl text !eol
+*.xslt text !eol
+Makefile text !eol
+configure text !eol
+LICENSE text !eol
+README text !eol
+
+*.bin -text
+*.brk -text
+*.cnv -text
+*.icu -text
+*.res -text
+*.nrm -text
+*.spp -text
+*.tri2 -text
+
+/icu4c.css -text
+source/common/dtintrv.cpp -text
+source/common/mutex.cpp -text
+source/common/unicode/dtintrv.h -text
+source/config/gmakever.mk -text
+source/config/pkgdataMakefile.in -text
+source/data/coll/af.txt -text
+source/data/coll/af_NA.txt -text
+source/data/coll/af_ZA.txt -text
+source/data/coll/az.txt -text
+source/data/coll/az_Latn.txt -text
+source/data/coll/az_Latn_AZ.txt -text
+source/data/coll/bn_IN.txt -text
+source/data/coll/pa_Arab.txt -text
+source/data/coll/pa_Arab_PK.txt -text
+source/data/coll/pa_Guru.txt -text
+source/data/coll/pa_Guru_IN.txt -text
+source/data/coll/pa_IN.txt -text
+source/data/coll/si.txt -text
+source/data/coll/si_LK.txt -text
+source/data/coll/ur.txt -text
+source/data/coll/ur_IN.txt -text
+source/data/coll/ur_PK.txt -text
+source/data/icu4j-readme.txt -text
+source/data/locales/fr_SN.txt -text
+source/data/locales/ha.txt -text
+source/data/locales/ha_Latn.txt -text
+source/data/locales/ha_Latn_NG.txt -text
+source/data/locales/ha_NG.txt -text
+source/data/locales/ii.txt -text
+source/data/locales/ii_CN.txt -text
+source/data/locales/kk_Cyrl.txt -text
+source/data/locales/kk_Cyrl_KZ.txt -text
+source/data/locales/ne.txt -text
+source/data/locales/ne_IN.txt -text
+source/data/locales/ne_NP.txt -text
+source/data/locales/pa_Arab.txt -text
+source/data/locales/pa_Arab_PK.txt -text
+source/data/locales/pa_PK.txt -text
+source/data/locales/si.txt -text
+source/data/locales/si_LK.txt -text
+source/data/locales/zh_Hans_HK.txt -text
+source/data/locales/zh_Hans_MO.txt -text
+source/data/misc/likelySubtags.txt -text
+source/data/misc/numberingSystems.txt -text
+source/data/misc/plurals.txt -text
+source/data/pkgdataMakefile.in -text
+source/data/rbnf/af.txt -text
+source/data/rbnf/ca.txt -text
+source/data/rbnf/cs.txt -text
+source/data/rbnf/et.txt -text
+source/data/rbnf/fi.txt -text
+source/data/rbnf/fo.txt -text
+source/data/rbnf/hu.txt -text
+source/data/rbnf/hy.txt -text
+source/data/rbnf/is.txt -text
+source/data/rbnf/ka.txt -text
+source/data/rbnf/kl.txt -text
+source/data/rbnf/ko.txt -text
+source/data/rbnf/lt.txt -text
+source/data/rbnf/lv.txt -text
+source/data/rbnf/nb.txt -text
+source/data/rbnf/nn.txt -text
+source/data/rbnf/pt_PT.txt -text
+source/data/rbnf/ro.txt -text
+source/data/rbnf/sk.txt -text
+source/data/rbnf/sq.txt -text
+source/data/rbnf/tr.txt -text
+source/data/rbnf/vi.txt -text
+source/data/rbnf/zh.txt -text
+source/data/rbnf/zh_Hant.txt -text
+source/data/xml/collation/af.xml -text
+source/data/xml/collation/az.xml -text
+source/data/xml/collation/bn_IN.xml -text
+source/data/xml/collation/si.xml -text
+source/data/xml/collation/ur.xml -text
+source/data/xml/main/ha.xml -text
+source/data/xml/main/ha_Latn.xml -text
+source/data/xml/main/in.xml -text
+source/data/xml/main/kk_Cyrl.xml -text
+source/data/xml/main/ne.xml -text
+source/data/xml/main/pa_Arab.xml -text
+source/data/xml/main/pa_PK.xml -text
+source/data/xml/main/si.xml -text
+source/data/xml/main/zu.xml -text
+source/data/xml/rbnf/de.xml -text
+source/data/xml/rbnf/en.xml -text
+source/data/xml/rbnf/fr.xml -text
+source/data/xml/rbnf/ga.xml -text
+source/data/xml/rbnf/mt.xml -text
+source/data/xml/rbnf/root.xml -text
+source/extra/uconv/pkgdataMakefile.in -text
+source/extra/uconv/samples/ibm-37-test.txt -text
+source/i18n/currpinf.cpp -text
+source/i18n/dtitv_impl.h -text
+source/i18n/dtitvfmt.cpp -text
+source/i18n/dtitvinf.cpp -text
+source/i18n/numsys.cpp -text
+source/i18n/tmunit.cpp -text
+source/i18n/tmutamt.cpp -text
+source/i18n/tmutfmt.cpp -text
+source/i18n/unicode/currpinf.h -text
+source/i18n/unicode/dtitvfmt.h -text
+source/i18n/unicode/dtitvinf.h -text
+source/i18n/unicode/numsys.h -text
+source/i18n/unicode/tmunit.h -text
+source/i18n/unicode/tmutamt.h -text
+source/i18n/unicode/tmutfmt.h -text
+source/i18n/wintzimpl.cpp -text
+source/i18n/wintzimpl.h -text
+source/samples/layout/cgnomelayout.c -text
+source/samples/ucnv/data02.bin -text
+source/test/compat/tzone.pl -text
+source/test/intltest/dtifmtts.cpp -text
+source/test/intltest/dtifmtts.h -text
+source/test/intltest/tufmtts.cpp -text
+source/test/intltest/tufmtts.h -text
+source/test/perf/Makefile.in -text
+source/test/perf/README -text
+source/test/perf/strsrchperf/Makefile.in -text
+source/test/perf/strsrchperf/StrSrchPerf_r.pl -text
+source/test/perf/strsrchperf/strsrchperf.cpp -text
+source/test/perf/strsrchperf/strsrchperf.h -text
+source/test/perf/strsrchperf/strsrchperf.vcproj -text
+source/test/testdata/ConverterSelectorTestUTF16.txt -text
+source/test/testdata/TestFont1.otf -text
+source/test/testdata/icu26_testtypes.res -text
+source/test/testdata/icu26e_testtypes.res -text
+source/test/testdata/importtest.bin -text
+source/test/testdata/pkgdataMakefile.in -text
+source/test/testdata/uni-text.bin -text
+source/tools/pkgdata/pkgdata.cpp -text
+source/tools/toolutil/pkg_genc.c -text
+source/tools/toolutil/pkg_genc.h -text
+source/tools/toolutil/pkg_gencmn.c -text
+source/tools/toolutil/pkg_gencmn.h -text
+source/tools/toolutil/pkg_icu.cpp -text
+source/tools/toolutil/pkg_icu.h -text
+
+# The following file types are stored in Git-LFS.
+*.jar filter=lfs diff=lfs merge=lfs -text
+*.dat filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text
+*.gz filter=lfs diff=lfs merge=lfs -text
+*.bz2 filter=lfs diff=lfs merge=lfs -text
+*.gif filter=lfs diff=lfs merge=lfs -text
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e1e19b7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,744 @@
+/bin
+/bin64
+/include
+/lib
+/lib64
+source/Doxyfile
+source/Makefile
+source/README
+source/allinone/*.ncb
+source/allinone/*.opt
+source/allinone/*.suo
+source/bin
+source/common/*.ao
+source/common/*.d
+source/common/*.o
+source/common/*.plg
+source/common/Debug
+source/common/Makefile
+source/common/Release
+source/common/common.res
+source/common/common.vcproj.*.*.user
+source/common/debug
+source/common/icucfg.h
+source/common/libicu*.*
+source/common/release
+source/common/svchook.mk
+source/common/unicode/platform.h
+source/common/x64
+source/common/x86
+source/config.cache
+source/config.log
+source/config.status
+source/config/Makefile.inc
+source/config/icu-config
+source/config/icu-config.1
+source/config/pkgdata.inc
+source/config/pkgdataMakefile
+source/data/*.plg
+source/data/Debug
+source/data/Makefile
+source/data/Release
+source/data/icupkg.inc
+source/data/in
+source/data/makedata.vcproj.*.*.user
+source/data/out
+source/data/pkgdataMakefile
+source/doc
+source/extra/Makefile
+source/extra/scrptrun/Makefile
+source/extra/uconv/*.d
+source/extra/uconv/*.o
+source/extra/uconv/Debug
+source/extra/uconv/Makefile
+source/extra/uconv/Release
+source/extra/uconv/debug
+source/extra/uconv/pkgdata.inc
+source/extra/uconv/pkgdataMakefile
+source/extra/uconv/pkgdatain.txt
+source/extra/uconv/release
+source/extra/uconv/resources/*.res
+source/extra/uconv/uconv
+source/extra/uconv/uconv.1
+source/extra/uconv/uconv.plg
+source/extra/uconv/uconv.vcproj.*.*.user
+source/extra/uconv/uconvmsg
+source/extra/uconv/x64
+source/extra/uconv/x86
+source/i18n/*.ao
+source/i18n/*.d
+source/i18n/*.o
+source/i18n/*.plg
+source/i18n/Debug
+source/i18n/Makefile
+source/i18n/Makefile.local
+source/i18n/Release
+source/i18n/debug
+source/i18n/i18n.res
+source/i18n/i18n.vcproj.*.*.user
+source/i18n/release
+source/i18n/x64
+source/i18n/x86
+source/icudefs.mk
+source/io/*.ao
+source/io/*.d
+source/io/*.o
+source/io/Debug
+source/io/Makefile
+source/io/Release
+source/io/debug
+source/io/io.res
+source/io/io.vcproj.*.*.user
+source/io/release
+source/io/x64
+source/io/x86
+source/layout/*.ao
+source/layout/*.d
+source/layout/*.o
+source/layout/*.pdb
+source/layout/Debug
+source/layout/Makefile
+source/layout/Release
+source/layout/debug
+source/layout/layout.res
+source/layout/layout.vcproj.*.*.user
+source/layout/release
+source/layout/x64
+source/layout/x86
+source/layoutex/*.ao
+source/layoutex/*.d
+source/layoutex/*.o
+source/layoutex/*.pdb
+source/layoutex/Debug
+source/layoutex/Makefile
+source/layoutex/Release
+source/layoutex/debug
+source/layoutex/layoutex.res
+source/layoutex/layoutex.vcproj.*.*.user
+source/layoutex/release
+source/layoutex/x64
+source/layoutex/x86
+source/lib
+source/samples/Makefile
+source/samples/all/all.ncb
+source/samples/all/all.suo
+source/samples/break/Debug
+source/samples/break/break.vcproj.*.*.user
+source/samples/break/release
+source/samples/cal/*.d
+source/samples/cal/*.pdb
+source/samples/cal/Debug
+source/samples/cal/Makefile
+source/samples/cal/Release
+source/samples/cal/cal.vcproj.*.*.user
+source/samples/cal/icucal
+source/samples/cal/icucal.exe
+source/samples/cal/release
+source/samples/case/Debug
+source/samples/case/case.vcproj.*.*.user
+source/samples/case/release
+source/samples/citer/Debug
+source/samples/citer/citer.vcproj.*.*.user
+source/samples/citer/release
+source/samples/coll/Debug
+source/samples/coll/coll.vcproj.*.*.user
+source/samples/coll/release
+source/samples/csdet/Debug
+source/samples/csdet/Makefile
+source/samples/csdet/csdet.vcproj.*.*.user
+source/samples/csdet/release
+source/samples/date/*.d
+source/samples/date/*.pdb
+source/samples/date/Debug
+source/samples/date/Makefile
+source/samples/date/Release
+source/samples/date/date.vcproj.*.*.user
+source/samples/date/icudate
+source/samples/date/icudate.exe
+source/samples/date/release
+source/samples/datefmt/Debug
+source/samples/datefmt/datefmt.vcproj.*.*.user
+source/samples/datefmt/release
+source/samples/layout/*.d
+source/samples/layout/*.pdb
+source/samples/layout/Debug
+source/samples/layout/Makefile
+source/samples/layout/Release
+source/samples/layout/layout.vcproj.*.*.user
+source/samples/layout/release
+source/samples/layout/tmp
+source/samples/legacy/Debug
+source/samples/legacy/legacy.vcproj.*.*.user
+source/samples/legacy/release
+source/samples/msgfmt/Debug
+source/samples/msgfmt/msgfmt.vcproj.*.*.user
+source/samples/msgfmt/release
+source/samples/numfmt/Debug
+source/samples/numfmt/numfmt.vcproj.*.*.user
+source/samples/numfmt/release
+source/samples/props/Debug
+source/samples/props/props.vcproj.*.*.user
+source/samples/props/release
+source/samples/strsrch/Debug
+source/samples/strsrch/release
+source/samples/strsrch/strsrch.vcproj.*.*.user
+source/samples/translit/Debug
+source/samples/translit/release
+source/samples/translit/translit.vcproj.*.*.user
+source/samples/uciter8/Debug
+source/samples/uciter8/release
+source/samples/uciter8/uciter8.vcproj.*.*.user
+source/samples/ucnv/Debug
+source/samples/ucnv/convsamp
+source/samples/ucnv/convsamp.out
+source/samples/ucnv/release
+source/samples/ucnv/ucnv.vcproj.*.*.user
+source/samples/udata/Debug
+source/samples/udata/reader.vcproj.*.*.user
+source/samples/udata/reader_Win32_Debug
+source/samples/udata/reader_win32_release
+source/samples/udata/release
+source/samples/udata/writer.vcproj.*.*.user
+source/samples/ufortune/Debug
+source/samples/ufortune/Release
+source/samples/ufortune/ufortune.vcproj.*.*.user
+source/samples/ugrep/debug
+source/samples/ugrep/release
+source/samples/ugrep/ugrep.vcproj.*.*.user
+source/samples/uresb/Debug
+source/samples/uresb/release
+source/samples/uresb/resources.vcproj.*.*.user
+source/samples/uresb/uresb.vcproj.*.*.user
+source/samples/ustring/Debug
+source/samples/ustring/release
+source/samples/ustring/ustring.vcproj.*.*.user
+source/stubdata/*.ao
+source/stubdata/*.d
+source/stubdata/*.o
+source/stubdata/*.plg
+source/stubdata/Debug
+source/stubdata/Makefile
+source/stubdata/Release
+source/stubdata/cygicudt*.*
+source/stubdata/debug
+source/stubdata/libicu*.*
+source/stubdata/libsicu*.*
+source/stubdata/release
+source/stubdata/stubdata.vcproj.*.*.user
+source/stubdata/stubdatabuilt.txt
+source/stubdata/x64
+source/stubdata/x86
+source/test/Makefile
+source/test/cintltst/*.d
+source/test/cintltst/*.o
+source/test/cintltst/*.plg
+source/test/cintltst/Debug
+source/test/cintltst/Makefile
+source/test/cintltst/Release
+source/test/cintltst/cintltst
+source/test/cintltst/cintltst.exe
+source/test/cintltst/cintltst.vcproj.*.*.user
+source/test/cintltst/debug
+source/test/cintltst/release
+source/test/cintltst/x64
+source/test/cintltst/x86
+source/test/compat/Makefile
+source/test/hdrtst/Makefile
+source/test/intltest/*.d
+source/test/intltest/*.o
+source/test/intltest/*.plg
+source/test/intltest/Debug
+source/test/intltest/Makefile
+source/test/intltest/Makefile.local
+source/test/intltest/Release
+source/test/intltest/debug
+source/test/intltest/intltest
+source/test/intltest/intltest.exe
+source/test/intltest/intltest.vcproj.*.*.user
+source/test/intltest/release
+source/test/intltest/x64
+source/test/intltest/x86
+source/test/iotest/*.d
+source/test/iotest/*.o
+source/test/iotest/Debug
+source/test/iotest/Makefile
+source/test/iotest/Release
+source/test/iotest/debug
+source/test/iotest/iotest
+source/test/iotest/iotest.exe
+source/test/iotest/iotest.vcproj.*.*.user
+source/test/iotest/release
+source/test/iotest/x64
+source/test/iotest/x86
+source/test/letest/*.d
+source/test/letest/*.o
+source/test/letest/Debug
+source/test/letest/Makefile
+source/test/letest/Release
+source/test/letest/debug
+source/test/letest/letest
+source/test/letest/letest.exe
+source/test/letest/letest.vcproj.*.*.user
+source/test/letest/release
+source/test/letest/x64
+source/test/letest/x86
+source/test/perf/Makefile
+source/test/perf/charperf/*.d
+source/test/perf/charperf/*.o
+source/test/perf/charperf/Debug
+source/test/perf/charperf/Makefile
+source/test/perf/charperf/Release
+source/test/perf/charperf/charperf
+source/test/perf/charperf/charperf.vcproj.*.*.user
+source/test/perf/charperf/debug
+source/test/perf/charperf/release
+source/test/perf/collationperf/Makefile
+source/test/perf/collperf/*.d
+source/test/perf/collperf/*.o
+source/test/perf/collperf/Debug
+source/test/perf/collperf/Makefile
+source/test/perf/collperf/Release
+source/test/perf/collperf/collperf
+source/test/perf/collperf/collperf.vcproj.*.*.user
+source/test/perf/collperf/debug
+source/test/perf/collperf/release
+source/test/perf/convperf/Makefile
+source/test/perf/convperf/convperf.vcproj.*.*.user
+source/test/perf/convperf/debug
+source/test/perf/convperf/release
+source/test/perf/normperf/*.d
+source/test/perf/normperf/*.o
+source/test/perf/normperf/Debug
+source/test/perf/normperf/Makefile
+source/test/perf/normperf/Release
+source/test/perf/normperf/debug
+source/test/perf/normperf/normperf
+source/test/perf/normperf/normperf.vcproj.*.*.user
+source/test/perf/normperf/release
+source/test/perf/perf.ncb
+source/test/perf/perf.suo
+source/test/perf/strsrchperf/Makefile
+source/test/perf/ubrkperf/*.d
+source/test/perf/ubrkperf/*.o
+source/test/perf/ubrkperf/Debug
+source/test/perf/ubrkperf/Makefile
+source/test/perf/ubrkperf/Release
+source/test/perf/ubrkperf/debug
+source/test/perf/ubrkperf/release
+source/test/perf/ubrkperf/ubrkperf
+source/test/perf/ubrkperf/ubrkperf.vcproj.*.*.user
+source/test/perf/unisetperf/*.d
+source/test/perf/unisetperf/*.o
+source/test/perf/unisetperf/Debug
+source/test/perf/unisetperf/Makefile
+source/test/perf/unisetperf/Release
+source/test/perf/unisetperf/debug
+source/test/perf/unisetperf/release
+source/test/perf/unisetperf/unisetperf
+source/test/perf/unisetperf/unisetperf.vcproj.*.*.user
+source/test/perf/usetperf/*.d
+source/test/perf/usetperf/*.o
+source/test/perf/usetperf/Debug
+source/test/perf/usetperf/Makefile
+source/test/perf/usetperf/Release
+source/test/perf/usetperf/debug
+source/test/perf/usetperf/release
+source/test/perf/usetperf/usetperf
+source/test/perf/usetperf/usetperf.vcproj.*.*.user
+source/test/perf/ustrperf/*.d
+source/test/perf/ustrperf/*.o
+source/test/perf/ustrperf/Debug
+source/test/perf/ustrperf/Makefile
+source/test/perf/ustrperf/Release
+source/test/perf/ustrperf/charperf
+source/test/perf/ustrperf/debug
+source/test/perf/ustrperf/release
+source/test/perf/ustrperf/stringperf.vcproj.*.*.user
+source/test/perf/utfperf/*.d
+source/test/perf/utfperf/*.o
+source/test/perf/utfperf/Debug
+source/test/perf/utfperf/Makefile
+source/test/perf/utfperf/Release
+source/test/perf/utfperf/debug
+source/test/perf/utfperf/release
+source/test/perf/utfperf/utfperf
+source/test/perf/utfperf/utfperf.vcproj.*.*.user
+source/test/perf/utrie2perf/Makefile
+source/test/testdata/Makefile
+source/test/testdata/out
+source/test/testdata/pkgdata.inc
+source/test/testdata/pkgdataMakefile
+source/test/testmap/*.d
+source/test/testmap/Debug
+source/test/testmap/Makefile
+source/test/testmap/Release
+source/test/testmap/testmap
+source/test/testmap/testmap.plg
+source/test/thaitest/Makefile
+source/test/threadtest/Makefile
+source/tools/Makefile
+source/tools/ctestfw/*.ao
+source/tools/ctestfw/*.d
+source/tools/ctestfw/*.o
+source/tools/ctestfw/*.pdb
+source/tools/ctestfw/*icutest*.dll
+source/tools/ctestfw/*icutest*.exp
+source/tools/ctestfw/*icutest*.lib
+source/tools/ctestfw/*icutest*.lnk
+source/tools/ctestfw/Debug
+source/tools/ctestfw/Makefile
+source/tools/ctestfw/Release
+source/tools/ctestfw/ctestfw.vcproj.*.*.user
+source/tools/ctestfw/debug
+source/tools/ctestfw/libicutest*
+source/tools/ctestfw/libsicutest*
+source/tools/ctestfw/release
+source/tools/ctestfw/x64
+source/tools/ctestfw/x86
+source/tools/dumpce/*.css
+source/tools/dumpce/*.d
+source/tools/dumpce/*.html
+source/tools/dumpce/*.o
+source/tools/dumpce/Makefile
+source/tools/dumpce/dumpce
+source/tools/genbidi/*.d
+source/tools/genbidi/*.o
+source/tools/genbidi/*.pdb
+source/tools/genbidi/*.plg
+source/tools/genbidi/Debug
+source/tools/genbidi/Makefile
+source/tools/genbidi/Release
+source/tools/genbidi/debug
+source/tools/genbidi/genbidi
+source/tools/genbidi/genbidi.[0-9]
+source/tools/genbidi/genbidi.vcproj.*.*.user
+source/tools/genbidi/release
+source/tools/genbidi/x64
+source/tools/genbidi/x86
+source/tools/genbrk/*.d
+source/tools/genbrk/*.o
+source/tools/genbrk/*.pdb
+source/tools/genbrk/*.plg
+source/tools/genbrk/Debug
+source/tools/genbrk/Makefile
+source/tools/genbrk/Release
+source/tools/genbrk/debug
+source/tools/genbrk/genbrk
+source/tools/genbrk/genbrk.1
+source/tools/genbrk/genbrk.vcproj.*.*.user
+source/tools/genbrk/release
+source/tools/genbrk/x64
+source/tools/genbrk/x86
+source/tools/gencase/*.d
+source/tools/gencase/*.ncb
+source/tools/gencase/*.o
+source/tools/gencase/*.opt
+source/tools/gencase/*.pdb
+source/tools/gencase/*.plg
+source/tools/gencase/Debug
+source/tools/gencase/Makefile
+source/tools/gencase/Release
+source/tools/gencase/debug
+source/tools/gencase/gencase
+source/tools/gencase/gencase.[0-9]
+source/tools/gencase/gencase.vcproj.*.*.user
+source/tools/gencase/release
+source/tools/gencase/x64
+source/tools/gencase/x86
+source/tools/genccode/*.d
+source/tools/genccode/*.o
+source/tools/genccode/*.pdb
+source/tools/genccode/*.plg
+source/tools/genccode/Debug
+source/tools/genccode/Makefile
+source/tools/genccode/Release
+source/tools/genccode/debug
+source/tools/genccode/genccode
+source/tools/genccode/genccode.8
+source/tools/genccode/genccode.vcproj.*.*.user
+source/tools/genccode/release
+source/tools/genccode/x64
+source/tools/genccode/x86
+source/tools/gencmn/*.d
+source/tools/gencmn/*.o
+source/tools/gencmn/*.pdb
+source/tools/gencmn/*.plg
+source/tools/gencmn/Debug
+source/tools/gencmn/Makefile
+source/tools/gencmn/Release
+source/tools/gencmn/debug
+source/tools/gencmn/gencmn
+source/tools/gencmn/gencmn.8
+source/tools/gencmn/gencmn.[0-9]
+source/tools/gencmn/gencmn.vcproj.*.*.user
+source/tools/gencmn/release
+source/tools/gencmn/x64
+source/tools/gencmn/x86
+source/tools/gencnval/*.d
+source/tools/gencnval/*.ncb
+source/tools/gencnval/*.o
+source/tools/gencnval/*.opt
+source/tools/gencnval/*.pdb
+source/tools/gencnval/*.plg
+source/tools/gencnval/Debug
+source/tools/gencnval/Makefile
+source/tools/gencnval/Release
+source/tools/gencnval/debug
+source/tools/gencnval/gencnval
+source/tools/gencnval/gencnval.1
+source/tools/gencnval/gencnval.[0-9]
+source/tools/gencnval/gencnval.vcproj.*.*.user
+source/tools/gencnval/release
+source/tools/gencnval/x64
+source/tools/gencnval/x86
+source/tools/genctd/*.d
+source/tools/genctd/*.o
+source/tools/genctd/*.pdb
+source/tools/genctd/*.plg
+source/tools/genctd/Debug
+source/tools/genctd/Makefile
+source/tools/genctd/Release
+source/tools/genctd/debug
+source/tools/genctd/genctd
+source/tools/genctd/genctd.1
+source/tools/genctd/genctd.vcproj.*.*.user
+source/tools/genctd/release
+source/tools/genctd/x64
+source/tools/genctd/x86
+source/tools/gendraft/udeprctd.h
+source/tools/gendraft/udraft.h
+source/tools/gendraft/uintrnal.h
+source/tools/gendraft/usystem.h
+source/tools/gennames/*.d
+source/tools/gennames/*.ncb
+source/tools/gennames/*.o
+source/tools/gennames/*.opt
+source/tools/gennames/*.pdb
+source/tools/gennames/*.plg
+source/tools/gennames/Debug
+source/tools/gennames/Makefile
+source/tools/gennames/Release
+source/tools/gennames/debug
+source/tools/gennames/gennames
+source/tools/gennames/gennames.[0-9]
+source/tools/gennames/gennames.vcproj.*.*.user
+source/tools/gennames/release
+source/tools/gennames/x64
+source/tools/gennames/x86
+source/tools/gennorm/*.d
+source/tools/gennorm/*.o
+source/tools/gennorm/*.pdb
+source/tools/gennorm/*.plg
+source/tools/gennorm/Debug
+source/tools/gennorm/Makefile
+source/tools/gennorm/Release
+source/tools/gennorm/debug
+source/tools/gennorm/gennorm
+source/tools/gennorm/gennorm.[0-9]
+source/tools/gennorm/gennorm.vcproj.*.*.user
+source/tools/gennorm/release
+source/tools/gennorm/x64
+source/tools/gennorm/x86
+source/tools/genpname/*.d
+source/tools/genpname/*.o
+source/tools/genpname/*.pdb
+source/tools/genpname/*.plg
+source/tools/genpname/Debug
+source/tools/genpname/Makefile
+source/tools/genpname/Release
+source/tools/genpname/debug
+source/tools/genpname/genpname
+source/tools/genpname/genpname.vcproj.*.*.user
+source/tools/genpname/release
+source/tools/genpname/x64
+source/tools/genpname/x86
+source/tools/genprops/*.d
+source/tools/genprops/*.ncb
+source/tools/genprops/*.o
+source/tools/genprops/*.opt
+source/tools/genprops/*.pdb
+source/tools/genprops/*.plg
+source/tools/genprops/Debug
+source/tools/genprops/Makefile
+source/tools/genprops/Release
+source/tools/genprops/debug
+source/tools/genprops/genprops
+source/tools/genprops/genprops.[0-9]
+source/tools/genprops/genprops.vcproj.*.*.user
+source/tools/genprops/release
+source/tools/genprops/x64
+source/tools/genprops/x86
+source/tools/genrb/*.1
+source/tools/genrb/*.d
+source/tools/genrb/*.o
+source/tools/genrb/*.pdb
+source/tools/genrb/*.plg
+source/tools/genrb/Debug
+source/tools/genrb/Makefile
+source/tools/genrb/Makefile.local
+source/tools/genrb/Release
+source/tools/genrb/debug
+source/tools/genrb/derb
+source/tools/genrb/derb.[0-9]
+source/tools/genrb/derb.vcproj.*.*.user
+source/tools/genrb/derb_*
+source/tools/genrb/genrb
+source/tools/genrb/genrb.[0-9]
+source/tools/genrb/genrb.vcproj.*.*.user
+source/tools/genrb/release
+source/tools/genrb/temp
+source/tools/genrb/x64
+source/tools/genrb/x86
+source/tools/genren/ICUunrenamed
+source/tools/genren/Makefile.local
+source/tools/genren/urename.*
+source/tools/gensprep/*.8
+source/tools/gensprep/*.d
+source/tools/gensprep/*.o
+source/tools/gensprep/*.pdb
+source/tools/gensprep/Debug
+source/tools/gensprep/Makefile
+source/tools/gensprep/Release
+source/tools/gensprep/debug
+source/tools/gensprep/gensprep
+source/tools/gensprep/gensprep.[0-9]
+source/tools/gensprep/gensprep.plg
+source/tools/gensprep/gensprep.vcproj.*.*.user
+source/tools/gensprep/release
+source/tools/gensprep/x64
+source/tools/gensprep/x86
+source/tools/gentest/*.d
+source/tools/gentest/*.o
+source/tools/gentest/*.pdb
+source/tools/gentest/Debug
+source/tools/gentest/Makefile
+source/tools/gentest/Release
+source/tools/gentest/debug
+source/tools/gentest/gentest
+source/tools/gentest/gentest.exe
+source/tools/gentest/gentest.vcproj.*.*.user
+source/tools/gentest/release
+source/tools/gentest/x64
+source/tools/gentest/x86
+source/tools/genuca/*.d
+source/tools/genuca/*.o
+source/tools/genuca/*.pdb
+source/tools/genuca/Debug
+source/tools/genuca/Makefile
+source/tools/genuca/Release
+source/tools/genuca/debug
+source/tools/genuca/genuca
+source/tools/genuca/genuca.8
+source/tools/genuca/genuca.vcproj.*.*.user
+source/tools/genuca/release
+source/tools/genuca/x64
+source/tools/genuca/x86
+source/tools/icupkg/*.8
+source/tools/icupkg/*.d
+source/tools/icupkg/*.ncb
+source/tools/icupkg/*.o
+source/tools/icupkg/*.opt
+source/tools/icupkg/*.pdb
+source/tools/icupkg/*.plg
+source/tools/icupkg/Debug
+source/tools/icupkg/Makefile
+source/tools/icupkg/Release
+source/tools/icupkg/debug
+source/tools/icupkg/icupkg
+source/tools/icupkg/icupkg.[0-9]
+source/tools/icupkg/icupkg.vcproj.*.*.user
+source/tools/icupkg/release
+source/tools/icupkg/x64
+source/tools/icupkg/x86
+source/tools/icuswap/*.d
+source/tools/icuswap/*.ncb
+source/tools/icuswap/*.o
+source/tools/icuswap/*.opt
+source/tools/icuswap/*.pdb
+source/tools/icuswap/*.plg
+source/tools/icuswap/Debug
+source/tools/icuswap/Makefile
+source/tools/icuswap/Release
+source/tools/icuswap/debug
+source/tools/icuswap/icuswap
+source/tools/icuswap/icuswap.[0-9]
+source/tools/icuswap/icuswap.vcproj.*.*.user
+source/tools/icuswap/release
+source/tools/makeconv/*.1
+source/tools/makeconv/*.d
+source/tools/makeconv/*.o
+source/tools/makeconv/*.pdb
+source/tools/makeconv/*.plg
+source/tools/makeconv/Debug
+source/tools/makeconv/Makefile
+source/tools/makeconv/Release
+source/tools/makeconv/debug
+source/tools/makeconv/makeconv
+source/tools/makeconv/makeconv.[0-9]
+source/tools/makeconv/makeconv.vcproj.*.*.user
+source/tools/makeconv/release
+source/tools/makeconv/x64
+source/tools/makeconv/x86
+source/tools/pkgdata/*.1
+source/tools/pkgdata/*.d
+source/tools/pkgdata/*.ncb
+source/tools/pkgdata/*.o
+source/tools/pkgdata/*.opt
+source/tools/pkgdata/*.pdb
+source/tools/pkgdata/Debug
+source/tools/pkgdata/Makefile
+source/tools/pkgdata/Release
+source/tools/pkgdata/debug
+source/tools/pkgdata/icupkg.inc
+source/tools/pkgdata/pkgdata
+source/tools/pkgdata/pkgdata.[0-9]
+source/tools/pkgdata/pkgdata.vcproj.*.*.user
+source/tools/pkgdata/release
+source/tools/pkgdata/x64
+source/tools/pkgdata/x86
+source/tools/toolutil/*.d
+source/tools/toolutil/*.ncb
+source/tools/toolutil/*.o
+source/tools/toolutil/*.opt
+source/tools/toolutil/*.pdb
+source/tools/toolutil/*.plg
+source/tools/toolutil/Debug
+source/tools/toolutil/Makefile
+source/tools/toolutil/Release
+source/tools/toolutil/debug
+source/tools/toolutil/libicu*
+source/tools/toolutil/release
+source/tools/toolutil/toolutil.vcproj.*.*.user
+source/tools/toolutil/x64
+source/tools/toolutil/x86
+source/tools/tzcode/Makefile
+source/tools/tzcode/ZoneMetaData.java
+source/tools/tzcode/africa
+source/tools/tzcode/antarctica
+source/tools/tzcode/asia
+source/tools/tzcode/australasia
+source/tools/tzcode/backward
+source/tools/tzcode/etcetera
+source/tools/tzcode/europe
+source/tools/tzcode/factory
+source/tools/tzcode/icu_zone.txt
+source/tools/tzcode/icuzdump
+source/tools/tzcode/icuzdump.dSYM
+source/tools/tzcode/icuzdumpout
+source/tools/tzcode/iso3166.tab
+source/tools/tzcode/leapseconds
+source/tools/tzcode/northamerica
+source/tools/tzcode/pacificnew
+source/tools/tzcode/solar??
+source/tools/tzcode/southamerica
+source/tools/tzcode/systemv
+source/tools/tzcode/tz2icu
+source/tools/tzcode/tz?????????.tar.gz
+source/tools/tzcode/tzorig
+source/tools/tzcode/yearistype
+source/tools/tzcode/yearistype.sh
+source/tools/tzcode/zdumpout
+source/tools/tzcode/zic
+source/tools/tzcode/zone.tab
+source/tools/tzcode/zoneinfo
+source/tools/tzcode/zoneinfo.txt
diff --git a/APIChangeReport.html b/APIChangeReport.html
new file mode 100644
index 0000000..b953c27
--- /dev/null
+++ b/APIChangeReport.html
@@ -0,0 +1,3457 @@
+<?xml version="1.0" encoding="UTF-8"?><!--
+	 Copyright (C)  2009, International Business Machines Corporation, All Rights Reserved. 
+	--><html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ICU4C API Comparison: 4.0.1 with 4.2 (4.1.4 / M4)</title>
+<link type="text/css" href="icu4c.css" rel="stylesheet">
+</head>
+<body>
+<a name="_top"></a>
+<h1>ICU4C API Comparison: 4.0.1 with 4.2 (4.1.4 / M4)</h1>
+<ul>
+<li>
+<a href="#removed">Removed from 4.0.1</a>
+</li>
+<li>
+<a href="#deprecated">Deprecated or Obsoleted in 4.2</a>
+</li>
+<li>
+<a href="#changed">Changed in  4.2</a>
+</li>
+<li>
+<a href="#promoted">Promoted to stable in 4.2</a>
+</li>
+<li>
+<a href="#added">Added in 4.2</a>
+</li>
+<li>
+<a href="#other">Other existing drafts in 4.2</a>
+</li>
+</ul>
+<hr>
+<a name="removed">
+<h2>Removed from 4.0.1</h2>
+</a>
+<table BORDER="1" class="genTable">
+<THEAD>
+<tr>
+<th>File</th><th>API</th><th>4.0.1</th><th>4.2</th>
+</tr>
+</THEAD>
+<tr class="row1">
+<td class="file">datefmt.h</td><td class="proto">static DateFormat* DateFormat::createPatternInstance(const UnicodeString &amp;skeleton, const Locale &amp;locale, UErrorCode &amp;status)</td><td class="">Internal<br>4.0</td><td>None<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">unistr.h</td><td class="proto">UnicodeString::UnicodeString(const char *codepageData, int32_t dataLength, const char *codepage=0)</td><td class="stabchange">Stable<br>2.0</td><td>None<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">unistr.h</td><td class="proto">int32_t UnicodeString::extract(int32_t start, int32_t startLength, char *target, uint32_t targetLength, const char *codepage=0) const</td><td class="stabchange">Stable<br>2.0</td><td>None<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">unistr.h</td><td class="proto">UnicodeString::UnicodeString(const char *codepageData, const char *codepage=0)</td><td class="stabchange">Stable<br>2.0</td><td>None<br>
+<span class=""><span></span></span></td>
+</tr>
+</table>
+<P></P>
+<a href="#_top">(jump back to top)</a>
+<hr>
+<a name="deprecated">
+<h2>Deprecated or Obsoleted in 4.2</h2>
+</a>
+<table BORDER="1" class="genTable">
+<THEAD>
+<tr>
+<th>File</th><th>API</th><th>4.0.1</th><th>4.2</th>
+</tr>
+</THEAD>
+</table>
+<P></P>
+<a href="#_top">(jump back to top)</a>
+<hr>
+<a name="changed">
+<h2>Changed in  4.2 (old, new)</h2>
+</a>
+<table BORDER="1" class="genTable">
+<THEAD>
+<tr>
+<th>File</th><th>API</th><th>4.0.1</th><th>4.2</th>
+</tr>
+</THEAD>
+<tr class="row1">
+<td class="file">bmsearch.h</td><td class="proto">UClassID BoyerMooreSearch::getDynamicClassID() const</td><td class="">Internal<br>4.0.1 technology preview</td><td>
+<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">bmsearch.h</td><td class="proto">static UClassID BoyerMooreSearch::getStaticClassID()</td><td class="">Internal<br>4.0.1 technology preview</td><td>
+<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">colldata.h</td><td class="proto">UClassID CollData::getDynamicClassID() const</td><td class="">Internal<br>4.0.1 technology preview</td><td>
+<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">colldata.h</td><td class="proto">static UClassID StringList::getStaticClassID()</td><td class="">Internal<br>4.0.1 technology preview</td><td>
+<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">colldata.h</td><td class="proto">static UClassID CollData::getStaticClassID()</td><td class="">Internal<br>4.0.1 technology preview</td><td>
+<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">colldata.h</td><td class="proto">UClassID CEList::getDynamicClassID() const</td><td class="">Internal<br>4.0.1 technology preview</td><td>
+<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">colldata.h</td><td class="proto">static UClassID CEList::getStaticClassID()</td><td class="">Internal<br>4.0.1 technology preview</td><td>
+<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">colldata.h</td><td class="proto">UClassID StringList::getDynamicClassID() const</td><td class="">Internal<br>4.0.1 technology preview</td><td>
+<br>
+<span class=""><span></span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">dtintrv.h</td><td class="proto">DateInterval::DateInterval(UDate fromDate, UDate toDate)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtintrv.h</td><td class="proto">DateInterval&amp; DateInterval::operator=(const DateInterval &amp;)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtintrv.h</td><td class="proto">UDate DateInterval::getToDate() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtintrv.h</td><td class="proto">UBool DateInterval::operator==(const DateInterval &amp;other) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtintrv.h</td><td class="proto">DateInterval::DateInterval(const DateInterval &amp;other)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtintrv.h</td><td class="proto">UDate DateInterval::getFromDate() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtintrv.h</td><td class="proto">UBool DateInterval::operator!=(const DateInterval &amp;other) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtintrv.h</td><td class="proto">DateInterval* DateInterval::clone() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtintrv.h</td><td class="proto">UClassID DateInterval::getDynamicClassID(void) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtintrv.h</td><td class="proto">static UClassID DateInterval::getStaticClassID(void)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtintrv.h</td><td class="proto">DateInterval::~DateInterval()</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvfmt.h</td><td class="proto">const DateIntervalInfo* DateIntervalFormat::getDateIntervalInfo(void) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvfmt.h</td><td class="proto">static DateIntervalFormat* DateIntervalFormat::createInstance(const UnicodeString &amp;skeleton, const Locale &amp;locale, const DateIntervalInfo &amp;dtitvinf, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvfmt.h</td><td class="proto">DateIntervalFormat::~DateIntervalFormat()</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvfmt.h</td><td class="proto">static DateIntervalFormat* DateIntervalFormat::createInstance(const UnicodeString &amp;skeleton, const Locale &amp;locale, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvfmt.h</td><td class="proto">UBool DateIntervalFormat::operator!=(const Format &amp;other) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvfmt.h</td><td class="proto">void DateIntervalFormat::setDateIntervalInfo(const DateIntervalInfo &amp;newIntervalPatterns, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvfmt.h</td><td class="proto">const DateFormat* DateIntervalFormat::getDateFormat(void) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvfmt.h</td><td class="proto">UClassID DateIntervalFormat::getDynamicClassID(void) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvfmt.h</td><td class="proto">UnicodeString&amp; DateIntervalFormat::format(Calendar &amp;fromCalendar, Calendar &amp;toCalendar, UnicodeString &amp;appendTo, FieldPosition &amp;fieldPosition, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvfmt.h</td><td class="proto">static DateIntervalFormat* DateIntervalFormat::createInstance(const UnicodeString &amp;skeleton, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvfmt.h</td><td class="proto">Format* DateIntervalFormat::clone(void) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvfmt.h</td><td class="proto">UBool DateIntervalFormat::operator==(const Format &amp;other) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvfmt.h</td><td class="proto">static DateIntervalFormat* DateIntervalFormat::createInstance(const UnicodeString &amp;skeleton, const DateIntervalInfo &amp;dtitvinf, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvfmt.h</td><td class="proto">UnicodeString&amp; DateIntervalFormat::format(const Formattable &amp;obj, UnicodeString &amp;appendTo, FieldPosition &amp;fieldPosition, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvfmt.h</td><td class="proto">static UClassID DateIntervalFormat::getStaticClassID(void)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvfmt.h</td><td class="proto">UnicodeString&amp; DateIntervalFormat::format(const DateInterval *dtInterval, UnicodeString &amp;appendTo, FieldPosition &amp;fieldPosition, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvinf.h</td><td class="proto">void DateIntervalInfo::setFallbackIntervalPattern(const UnicodeString &amp;fallbackPattern, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvinf.h</td><td class="proto">void DateIntervalInfo::setIntervalPattern(const UnicodeString &amp;skeleton, UCalendarDateFields lrgDiffCalUnit, const UnicodeString &amp;intervalPattern, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvinf.h</td><td class="proto">DateIntervalInfo::DateIntervalInfo(const DateIntervalInfo &amp;)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvinf.h</td><td class="proto">DateIntervalInfo::~DateIntervalInfo()</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvinf.h</td><td class="proto">DateIntervalInfo::DateIntervalInfo(const Locale &amp;locale, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvinf.h</td><td class="proto">UnicodeString&amp; DateIntervalInfo::getIntervalPattern(const UnicodeString &amp;skeleton, UCalendarDateFields field, UnicodeString &amp;result, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvinf.h</td><td class="proto">UnicodeString&amp; DateIntervalInfo::getFallbackIntervalPattern(UnicodeString &amp;result) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvinf.h</td><td class="proto">UBool DateIntervalInfo::getDefaultOrder() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvinf.h</td><td class="proto">DateIntervalInfo&amp; DateIntervalInfo::operator=(const DateIntervalInfo &amp;)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvinf.h</td><td class="proto">DateIntervalInfo* DateIntervalInfo::clone(void) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">msgfmt.h</td><td class="proto">Format* MessageFormat::getFormat(const UnicodeString &amp;formatName, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">msgfmt.h</td><td class="proto">StringEnumeration* MessageFormat::getFormatNames(UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">msgfmt.h</td><td class="proto">void MessageFormat::adoptFormat(const UnicodeString &amp;formatName, Format *formatToAdopt, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">msgfmt.h</td><td class="proto">void MessageFormat::setFormat(const UnicodeString &amp;formatName, const Format &amp;format, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">msgfmt.h</td><td class="proto">UBool MessageFormat::usesNamedArguments() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">UnicodeString&amp; PluralFormat::format(int32_t number, UnicodeString &amp;appendTo, FieldPosition &amp;pos, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">Format* PluralFormat::clone(void) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">UClassID PluralFormat::getDynamicClassID() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(const Locale &amp;locale, const UnicodeString &amp;pattern, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">UnicodeString PluralFormat::format(double number, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">UnicodeString PluralFormat::format(int32_t number, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">UnicodeString&amp; PluralFormat::format(const Formattable &amp;obj, UnicodeString &amp;appendTo, FieldPosition &amp;pos, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(const PluralFormat &amp;other)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat&amp; PluralFormat::operator=(const PluralFormat &amp;other)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">UBool PluralFormat::operator==(const Format &amp;other) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">void PluralFormat::setLocale(const Locale &amp;locale, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">void PluralFormat::applyPattern(const UnicodeString &amp;pattern, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::~PluralFormat()</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(const PluralRules &amp;rules, const UnicodeString &amp;pattern, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(const Locale &amp;locale, const PluralRules &amp;rules, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">void PluralFormat::setNumberFormat(const NumberFormat *format, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">UnicodeString&amp; PluralFormat::toPattern(UnicodeString &amp;appendTo)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">UBool PluralFormat::operator!=(const Format &amp;other) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(const Locale &amp;locale, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(const Locale &amp;locale, const PluralRules &amp;rules, const UnicodeString &amp;pattern, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">static UClassID PluralFormat::getStaticClassID(void)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(const UnicodeString &amp;pattern, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">void PluralFormat::parseObject(const UnicodeString &amp;source, Formattable &amp;result, ParsePosition &amp;parse_pos) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">UnicodeString&amp; PluralFormat::format(double number, UnicodeString &amp;appendTo, FieldPosition &amp;pos, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(const PluralRules &amp;rules, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">static UClassID PluralRules::getStaticClassID(void)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">UClassID PluralRules::getDynamicClassID() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">PluralRules::PluralRules(UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">UnicodeString PluralRules::select(double number) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">UBool PluralRules::operator!=(const PluralRules &amp;other) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">PluralRules::~PluralRules()</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">UBool PluralRules::isKeyword(const UnicodeString &amp;keyword) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">static PluralRules* PluralRules::createRules(const UnicodeString &amp;description, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">UBool PluralRules::operator==(const PluralRules &amp;other) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">static PluralRules* PluralRules::createDefaultRules(UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">StringEnumeration* PluralRules::getKeywords(UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">PluralRules* PluralRules::clone() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">PluralRules::PluralRules(const PluralRules &amp;other)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">static PluralRules* PluralRules::forLocale(const Locale &amp;locale, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">UnicodeString PluralRules::select(int32_t number) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">PluralRules&amp; PluralRules::operator=(const PluralRules &amp;)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">regex.h</td><td class="proto">UBool RegexMatcher::hasAnchoringBounds() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">regex.h</td><td class="proto">UBool RegexMatcher::requireEnd() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">regex.h</td><td class="proto">RegexMatcher&amp; RegexMatcher::useTransparentBounds(UBool b)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">regex.h</td><td class="proto">void RegexMatcher::setStackLimit(int32_t limit, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">regex.h</td><td class="proto">int32_t RegexMatcher::regionEnd() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">regex.h</td><td class="proto">void RegexMatcher::setMatchCallback(URegexMatchCallback *callback, const void *context, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">regex.h</td><td class="proto">RegexMatcher&amp; RegexMatcher::region(int32_t start, int32_t limit, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">regex.h</td><td class="proto">int32_t RegexMatcher::getTimeLimit() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">regex.h</td><td class="proto">int32_t RegexMatcher::getStackLimit() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">regex.h</td><td class="proto">int32_t RegexMatcher::regionStart() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">regex.h</td><td class="proto">void RegexMatcher::getMatchCallback(URegexMatchCallback *&amp;callback, const void *&amp;context, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">regex.h</td><td class="proto">UBool RegexMatcher::hasTransparentBounds() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">regex.h</td><td class="proto">RegexMatcher&amp; RegexMatcher::useAnchoringBounds(UBool b)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">regex.h</td><td class="proto">UBool RegexMatcher::hitEnd() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">regex.h</td><td class="proto">void RegexMatcher::setTimeLimit(int32_t limit, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">timezone.h</td><td class="proto">static UnicodeString&amp; TimeZone::getCanonicalID(const UnicodeString &amp;id, UnicodeString &amp;canonicalID, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">timezone.h</td><td class="proto">static UnicodeString&amp; TimeZone::getCanonicalID(const UnicodeString &amp;id, UnicodeString &amp;canonicalID, UBool &amp;isSystemID, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">tmutfmt.h</td><td class="proto">static UBool hashTableValueComparator(UHashTok val1, UHashTok val2)</td><td class="">Internal<br>4.0</td><td>Internal<br>
+<span class="verchange"><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ucal.h</td><td class="proto">UCalendar* ucal_clone(const UCalendar *cal, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ucal.h</td><td class="proto">int32_t ucal_getCanonicalTimeZoneID(const UChar *id, int32_t len, UChar *result, int32_t resultCapacity, UBool *isSystemID, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ucurr.h</td><td class="proto">int32_t ucurr_forLocaleAndDate(const char *locale, UDate date, int32_t index, UChar *buff, int32_t buffCapacity, UErrorCode *ec)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ucurr.h</td><td class="proto">int32_t ucurr_countCurrencies(const char *locale, UDate date, UErrorCode *ec)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uloc.h</td><td class="proto">int32_t uloc_minimizeSubtags(const char *localeID, char *minimizedLocaleID, int32_t minimizedLocaleIDCapacity, UErrorCode *err)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uloc.h</td><td class="proto">ULayoutType uloc_getCharacterOrientation(const char *localeId, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uloc.h</td><td class="proto">int32_t uloc_addLikelySubtags(const char *localeID, char *maximizedLocaleID, int32_t maximizedLocaleIDCapacity, UErrorCode *err)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uloc.h</td><td class="proto">ULayoutType uloc_getLineOrientation(const char *localeId, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uniset.h</td><td class="proto">UnicodeSet&amp; UnicodeSet::removeAllStrings()</td><td class="">Internal<br>.</td><td>Draft<br>
+<span class="verchange"><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uniset.h</td><td class="proto">UnicodeSet&amp; UnicodeSet::closeOver(int32_t attribute)</td><td class="">Internal<br>.</td><td>Draft<br>
+<span class="verchange"><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uniset.h</td><td class="proto">UBool UnicodeSet::isBogus(void) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uniset.h</td><td class="proto">void UnicodeSet::setToBogus()</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uregex.h</td><td class="proto">UBool uregex_hasAnchoringBounds(const URegularExpression *regexp, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uregex.h</td><td class="proto">UBool uregex_requireEnd(const URegularExpression *regexp, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uregex.h</td><td class="proto">void uregex_getMatchCallback(const URegularExpression *regexp, URegexMatchCallback **callback, const void **context, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uregex.h</td><td class="proto">UBool uregex_hasTransparentBounds(const URegularExpression *regexp, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uregex.h</td><td class="proto">UBool uregex_hitEnd(const URegularExpression *regexp, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uregex.h</td><td class="proto">void uregex_useAnchoringBounds(URegularExpression *regexp, UBool b, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uregex.h</td><td class="proto">int32_t uregex_getStackLimit(const URegularExpression *regexp, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uregex.h</td><td class="proto">int32_t uregex_regionEnd(const URegularExpression *regexp, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uregex.h</td><td class="proto">void uregex_setMatchCallback(URegularExpression *regexp, URegexMatchCallback *callback, const void *context, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uregex.h</td><td class="proto">void uregex_setRegion(URegularExpression *regexp, int32_t regionStart, int32_t regionLimit, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uregex.h</td><td class="proto">int32_t uregex_regionStart(const URegularExpression *regexp, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uregex.h</td><td class="proto">void uregex_useTransparentBounds(URegularExpression *regexp, UBool b, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uregex.h</td><td class="proto">void uregex_setTimeLimit(URegularExpression *regexp, int32_t limit, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uregex.h</td><td class="proto">int32_t uregex_getTimeLimit(const URegularExpression *regexp, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uregex.h</td><td class="proto">void uregex_setStackLimit(URegularExpression *regexp, int32_t limit, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">UTransliterator* u_fsettransliterator(UFILE *file, UFileDirection direction, UTransliterator *adopt, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_file_write(const UChar *ustring, int32_t count, UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_fsetlocale(UFILE *file, const char *locale)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">FILE* u_fgetfile(UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">UFILE* u_fopen(const char *filename, const char *perm, const char *locale, const char *codepage)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">void u_frewind(UFILE *file)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vfprintf_u(UFILE *f, const UChar *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vsprintf(UChar *buffer, const char *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">UConverter* u_fgetConverter(UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vsprintf_u(UChar *buffer, const UChar *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vfscanf_u(UFILE *f, const UChar *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_sscanf(const UChar *buffer, const char *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_fscanf_u(UFILE *f, const UChar *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_snprintf_u(UChar *buffer, int32_t count, const UChar *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">void u_fclose(UFILE *file)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">UFILE* u_finit(FILE *f, const char *locale, const char *codepage)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">UChar u_fgetc(UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_fscanf(UFILE *f, const char *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vsscanf(const UChar *buffer, const char *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_sprintf(UChar *buffer, const char *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">UChar32 u_fputc(UChar32 uc, UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_sprintf_u(UChar *buffer, const UChar *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_fputs(const UChar *s, UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">UChar* u_fgets(UChar *s, int32_t n, UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vsnprintf_u(UChar *buffer, int32_t count, const UChar *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">UFILE* u_fstropen(UChar *stringBuf, int32_t capacity, const char *locale)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">const char* u_fgetcodepage(UFILE *file)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">UBool u_feof(UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_fprintf(UFILE *f, const char *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">const char* u_fgetlocale(UFILE *file)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vsnprintf(UChar *buffer, int32_t count, const char *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">UChar32 u_fungetc(UChar32 c, UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_fsetcodepage(const char *codepage, UFILE *file)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_fprintf_u(UFILE *f, const UChar *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vsscanf_u(const UChar *buffer, const UChar *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">void u_fflush(UFILE *file)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_snprintf(UChar *buffer, int32_t count, const char *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vfprintf(UFILE *f, const char *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_file_read(UChar *chars, int32_t count, UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">UChar32 u_fgetcx(UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_sscanf_u(const UChar *buffer, const UChar *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vfscanf(UFILE *f, const char *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+</table>
+<P></P>
+<a href="#_top">(jump back to top)</a>
+<hr>
+<a name="promoted">
+<h2>Promoted to stable in 4.2</h2>
+</a>
+<table BORDER="1" class="genTable">
+<THEAD>
+<tr>
+<th>File</th><th>API</th><th>4.0.1</th><th>4.2</th>
+</tr>
+</THEAD>
+<tr class="row1">
+<td class="file">dtintrv.h</td><td class="proto">DateInterval::DateInterval(UDate fromDate, UDate toDate)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtintrv.h</td><td class="proto">DateInterval&amp; DateInterval::operator=(const DateInterval &amp;)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtintrv.h</td><td class="proto">UDate DateInterval::getToDate() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtintrv.h</td><td class="proto">UBool DateInterval::operator==(const DateInterval &amp;other) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtintrv.h</td><td class="proto">DateInterval::DateInterval(const DateInterval &amp;other)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtintrv.h</td><td class="proto">UDate DateInterval::getFromDate() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtintrv.h</td><td class="proto">UBool DateInterval::operator!=(const DateInterval &amp;other) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtintrv.h</td><td class="proto">DateInterval* DateInterval::clone() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtintrv.h</td><td class="proto">UClassID DateInterval::getDynamicClassID(void) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtintrv.h</td><td class="proto">static UClassID DateInterval::getStaticClassID(void)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtintrv.h</td><td class="proto">DateInterval::~DateInterval()</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvfmt.h</td><td class="proto">const DateIntervalInfo* DateIntervalFormat::getDateIntervalInfo(void) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvfmt.h</td><td class="proto">static DateIntervalFormat* DateIntervalFormat::createInstance(const UnicodeString &amp;skeleton, const Locale &amp;locale, const DateIntervalInfo &amp;dtitvinf, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvfmt.h</td><td class="proto">DateIntervalFormat::~DateIntervalFormat()</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvfmt.h</td><td class="proto">static DateIntervalFormat* DateIntervalFormat::createInstance(const UnicodeString &amp;skeleton, const Locale &amp;locale, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvfmt.h</td><td class="proto">UBool DateIntervalFormat::operator!=(const Format &amp;other) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvfmt.h</td><td class="proto">void DateIntervalFormat::setDateIntervalInfo(const DateIntervalInfo &amp;newIntervalPatterns, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvfmt.h</td><td class="proto">const DateFormat* DateIntervalFormat::getDateFormat(void) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvfmt.h</td><td class="proto">UClassID DateIntervalFormat::getDynamicClassID(void) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvfmt.h</td><td class="proto">UnicodeString&amp; DateIntervalFormat::format(Calendar &amp;fromCalendar, Calendar &amp;toCalendar, UnicodeString &amp;appendTo, FieldPosition &amp;fieldPosition, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvfmt.h</td><td class="proto">static DateIntervalFormat* DateIntervalFormat::createInstance(const UnicodeString &amp;skeleton, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvfmt.h</td><td class="proto">Format* DateIntervalFormat::clone(void) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvfmt.h</td><td class="proto">UBool DateIntervalFormat::operator==(const Format &amp;other) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvfmt.h</td><td class="proto">static DateIntervalFormat* DateIntervalFormat::createInstance(const UnicodeString &amp;skeleton, const DateIntervalInfo &amp;dtitvinf, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvfmt.h</td><td class="proto">UnicodeString&amp; DateIntervalFormat::format(const Formattable &amp;obj, UnicodeString &amp;appendTo, FieldPosition &amp;fieldPosition, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvfmt.h</td><td class="proto">static UClassID DateIntervalFormat::getStaticClassID(void)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvfmt.h</td><td class="proto">UnicodeString&amp; DateIntervalFormat::format(const DateInterval *dtInterval, UnicodeString &amp;appendTo, FieldPosition &amp;fieldPosition, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvinf.h</td><td class="proto">void DateIntervalInfo::setFallbackIntervalPattern(const UnicodeString &amp;fallbackPattern, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvinf.h</td><td class="proto">void DateIntervalInfo::setIntervalPattern(const UnicodeString &amp;skeleton, UCalendarDateFields lrgDiffCalUnit, const UnicodeString &amp;intervalPattern, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvinf.h</td><td class="proto">DateIntervalInfo::DateIntervalInfo(const DateIntervalInfo &amp;)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvinf.h</td><td class="proto">DateIntervalInfo::~DateIntervalInfo()</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvinf.h</td><td class="proto">DateIntervalInfo::DateIntervalInfo(const Locale &amp;locale, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvinf.h</td><td class="proto">UnicodeString&amp; DateIntervalInfo::getIntervalPattern(const UnicodeString &amp;skeleton, UCalendarDateFields field, UnicodeString &amp;result, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvinf.h</td><td class="proto">UnicodeString&amp; DateIntervalInfo::getFallbackIntervalPattern(UnicodeString &amp;result) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvinf.h</td><td class="proto">UBool DateIntervalInfo::getDefaultOrder() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvinf.h</td><td class="proto">DateIntervalInfo&amp; DateIntervalInfo::operator=(const DateIntervalInfo &amp;)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">dtitvinf.h</td><td class="proto">DateIntervalInfo* DateIntervalInfo::clone(void) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">msgfmt.h</td><td class="proto">Format* MessageFormat::getFormat(const UnicodeString &amp;formatName, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">msgfmt.h</td><td class="proto">StringEnumeration* MessageFormat::getFormatNames(UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">msgfmt.h</td><td class="proto">void MessageFormat::adoptFormat(const UnicodeString &amp;formatName, Format *formatToAdopt, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">msgfmt.h</td><td class="proto">void MessageFormat::setFormat(const UnicodeString &amp;formatName, const Format &amp;format, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">msgfmt.h</td><td class="proto">UBool MessageFormat::usesNamedArguments() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">UnicodeString&amp; PluralFormat::format(int32_t number, UnicodeString &amp;appendTo, FieldPosition &amp;pos, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">Format* PluralFormat::clone(void) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">UClassID PluralFormat::getDynamicClassID() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(const Locale &amp;locale, const UnicodeString &amp;pattern, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">UnicodeString PluralFormat::format(double number, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">UnicodeString PluralFormat::format(int32_t number, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">UnicodeString&amp; PluralFormat::format(const Formattable &amp;obj, UnicodeString &amp;appendTo, FieldPosition &amp;pos, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(const PluralFormat &amp;other)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat&amp; PluralFormat::operator=(const PluralFormat &amp;other)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">UBool PluralFormat::operator==(const Format &amp;other) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">void PluralFormat::setLocale(const Locale &amp;locale, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">void PluralFormat::applyPattern(const UnicodeString &amp;pattern, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::~PluralFormat()</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(const PluralRules &amp;rules, const UnicodeString &amp;pattern, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(const Locale &amp;locale, const PluralRules &amp;rules, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">void PluralFormat::setNumberFormat(const NumberFormat *format, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">UnicodeString&amp; PluralFormat::toPattern(UnicodeString &amp;appendTo)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">UBool PluralFormat::operator!=(const Format &amp;other) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(const Locale &amp;locale, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(const Locale &amp;locale, const PluralRules &amp;rules, const UnicodeString &amp;pattern, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">static UClassID PluralFormat::getStaticClassID(void)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(const UnicodeString &amp;pattern, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">void PluralFormat::parseObject(const UnicodeString &amp;source, Formattable &amp;result, ParsePosition &amp;parse_pos) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurfmt.h</td><td class="proto">UnicodeString&amp; PluralFormat::format(double number, UnicodeString &amp;appendTo, FieldPosition &amp;pos, UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurfmt.h</td><td class="proto">PluralFormat::PluralFormat(const PluralRules &amp;rules, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">static UClassID PluralRules::getStaticClassID(void)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">UClassID PluralRules::getDynamicClassID() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">PluralRules::PluralRules(UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">UnicodeString PluralRules::select(double number) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">UBool PluralRules::operator!=(const PluralRules &amp;other) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">PluralRules::~PluralRules()</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">UBool PluralRules::isKeyword(const UnicodeString &amp;keyword) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">static PluralRules* PluralRules::createRules(const UnicodeString &amp;description, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">UBool PluralRules::operator==(const PluralRules &amp;other) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">static PluralRules* PluralRules::createDefaultRules(UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">StringEnumeration* PluralRules::getKeywords(UErrorCode &amp;status) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">PluralRules* PluralRules::clone() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">PluralRules::PluralRules(const PluralRules &amp;other)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">static PluralRules* PluralRules::forLocale(const Locale &amp;locale, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">plurrule.h</td><td class="proto">UnicodeString PluralRules::select(int32_t number) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">plurrule.h</td><td class="proto">PluralRules&amp; PluralRules::operator=(const PluralRules &amp;)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">regex.h</td><td class="proto">UBool RegexMatcher::hasAnchoringBounds() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">regex.h</td><td class="proto">UBool RegexMatcher::requireEnd() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">regex.h</td><td class="proto">RegexMatcher&amp; RegexMatcher::useTransparentBounds(UBool b)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">regex.h</td><td class="proto">void RegexMatcher::setStackLimit(int32_t limit, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">regex.h</td><td class="proto">int32_t RegexMatcher::regionEnd() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">regex.h</td><td class="proto">void RegexMatcher::setMatchCallback(URegexMatchCallback *callback, const void *context, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">regex.h</td><td class="proto">RegexMatcher&amp; RegexMatcher::region(int32_t start, int32_t limit, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">regex.h</td><td class="proto">int32_t RegexMatcher::getTimeLimit() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">regex.h</td><td class="proto">int32_t RegexMatcher::getStackLimit() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">regex.h</td><td class="proto">int32_t RegexMatcher::regionStart() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">regex.h</td><td class="proto">void RegexMatcher::getMatchCallback(URegexMatchCallback *&amp;callback, const void *&amp;context, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">regex.h</td><td class="proto">UBool RegexMatcher::hasTransparentBounds() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">regex.h</td><td class="proto">RegexMatcher&amp; RegexMatcher::useAnchoringBounds(UBool b)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">regex.h</td><td class="proto">UBool RegexMatcher::hitEnd() const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">regex.h</td><td class="proto">void RegexMatcher::setTimeLimit(int32_t limit, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">timezone.h</td><td class="proto">static UnicodeString&amp; TimeZone::getCanonicalID(const UnicodeString &amp;id, UnicodeString &amp;canonicalID, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">timezone.h</td><td class="proto">static UnicodeString&amp; TimeZone::getCanonicalID(const UnicodeString &amp;id, UnicodeString &amp;canonicalID, UBool &amp;isSystemID, UErrorCode &amp;status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ucal.h</td><td class="proto">UCalendar* ucal_clone(const UCalendar *cal, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ucal.h</td><td class="proto">int32_t ucal_getCanonicalTimeZoneID(const UChar *id, int32_t len, UChar *result, int32_t resultCapacity, UBool *isSystemID, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ucurr.h</td><td class="proto">int32_t ucurr_forLocaleAndDate(const char *locale, UDate date, int32_t index, UChar *buff, int32_t buffCapacity, UErrorCode *ec)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ucurr.h</td><td class="proto">int32_t ucurr_countCurrencies(const char *locale, UDate date, UErrorCode *ec)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uloc.h</td><td class="proto">int32_t uloc_minimizeSubtags(const char *localeID, char *minimizedLocaleID, int32_t minimizedLocaleIDCapacity, UErrorCode *err)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uloc.h</td><td class="proto">ULayoutType uloc_getCharacterOrientation(const char *localeId, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uloc.h</td><td class="proto">int32_t uloc_addLikelySubtags(const char *localeID, char *maximizedLocaleID, int32_t maximizedLocaleIDCapacity, UErrorCode *err)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uloc.h</td><td class="proto">ULayoutType uloc_getLineOrientation(const char *localeId, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uniset.h</td><td class="proto">UBool UnicodeSet::isBogus(void) const</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uniset.h</td><td class="proto">void UnicodeSet::setToBogus()</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">unistr.h</td><td class="proto">int32_t UnicodeString::extract(int32_t start, int32_t startLength, char *target, uint32_t targetLength) const</td><td class="">None<br>
+</td><td>Stable<br>
+<span class=""><span>2.0</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">unistr.h</td><td class="proto">int32_t UnicodeString::extract(int32_t start, int32_t startLength, char *target, uint32_t targetLength, const char *codepage) const</td><td class="">None<br>
+</td><td>Stable<br>
+<span class=""><span>2.0</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">unistr.h</td><td class="proto">UnicodeString::UnicodeString(const char *codepageData)</td><td class="">None<br>
+</td><td>Stable<br>
+<span class=""><span>2.0</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">unistr.h</td><td class="proto">UnicodeString::UnicodeString(const char *codepageData, const char *codepage)</td><td class="">None<br>
+</td><td>Stable<br>
+<span class=""><span>2.0</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">unistr.h</td><td class="proto">UnicodeString::UnicodeString(const char *codepageData, int32_t dataLength, const char *codepage)</td><td class="">None<br>
+</td><td>Stable<br>
+<span class=""><span>2.0</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">unistr.h</td><td class="proto">UnicodeString::UnicodeString(const char *codepageData, int32_t dataLength)</td><td class="">None<br>
+</td><td>Stable<br>
+<span class=""><span>2.0</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uregex.h</td><td class="proto">UBool uregex_hasAnchoringBounds(const URegularExpression *regexp, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uregex.h</td><td class="proto">UBool uregex_requireEnd(const URegularExpression *regexp, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uregex.h</td><td class="proto">void uregex_getMatchCallback(const URegularExpression *regexp, URegexMatchCallback **callback, const void **context, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uregex.h</td><td class="proto">UBool uregex_hasTransparentBounds(const URegularExpression *regexp, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uregex.h</td><td class="proto">UBool uregex_hitEnd(const URegularExpression *regexp, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uregex.h</td><td class="proto">void uregex_useAnchoringBounds(URegularExpression *regexp, UBool b, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uregex.h</td><td class="proto">int32_t uregex_getStackLimit(const URegularExpression *regexp, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uregex.h</td><td class="proto">int32_t uregex_regionEnd(const URegularExpression *regexp, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uregex.h</td><td class="proto">void uregex_setMatchCallback(URegularExpression *regexp, URegexMatchCallback *callback, const void *context, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uregex.h</td><td class="proto">void uregex_setRegion(URegularExpression *regexp, int32_t regionStart, int32_t regionLimit, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uregex.h</td><td class="proto">int32_t uregex_regionStart(const URegularExpression *regexp, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uregex.h</td><td class="proto">void uregex_useTransparentBounds(URegularExpression *regexp, UBool b, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uregex.h</td><td class="proto">void uregex_setTimeLimit(URegularExpression *regexp, int32_t limit, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">uregex.h</td><td class="proto">int32_t uregex_getTimeLimit(const URegularExpression *regexp, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row0">
+<td class="file">uregex.h</td><td class="proto">void uregex_setStackLimit(URegularExpression *regexp, int32_t limit, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>4.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">UTransliterator* u_fsettransliterator(UFILE *file, UFileDirection direction, UTransliterator *adopt, UErrorCode *status)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_file_write(const UChar *ustring, int32_t count, UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_fsetlocale(UFILE *file, const char *locale)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">FILE* u_fgetfile(UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">UFILE* u_fopen(const char *filename, const char *perm, const char *locale, const char *codepage)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">void u_frewind(UFILE *file)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vfprintf_u(UFILE *f, const UChar *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vsprintf(UChar *buffer, const char *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">UConverter* u_fgetConverter(UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vsprintf_u(UChar *buffer, const UChar *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vfscanf_u(UFILE *f, const UChar *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_sscanf(const UChar *buffer, const char *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_fscanf_u(UFILE *f, const UChar *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_snprintf_u(UChar *buffer, int32_t count, const UChar *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">void u_fclose(UFILE *file)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">UFILE* u_finit(FILE *f, const char *locale, const char *codepage)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">UChar u_fgetc(UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_fscanf(UFILE *f, const char *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vsscanf(const UChar *buffer, const char *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_sprintf(UChar *buffer, const char *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">UChar32 u_fputc(UChar32 uc, UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_sprintf_u(UChar *buffer, const UChar *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_fputs(const UChar *s, UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">UChar* u_fgets(UChar *s, int32_t n, UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vsnprintf_u(UChar *buffer, int32_t count, const UChar *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">UFILE* u_fstropen(UChar *stringBuf, int32_t capacity, const char *locale)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">const char* u_fgetcodepage(UFILE *file)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">UBool u_feof(UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_fprintf(UFILE *f, const char *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">const char* u_fgetlocale(UFILE *file)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vsnprintf(UChar *buffer, int32_t count, const char *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">UChar32 u_fungetc(UChar32 c, UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_fsetcodepage(const char *codepage, UFILE *file)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_fprintf_u(UFILE *f, const UChar *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vsscanf_u(const UChar *buffer, const UChar *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">void u_fflush(UFILE *file)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_snprintf(UChar *buffer, int32_t count, const char *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vfprintf(UFILE *f, const char *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_file_read(UChar *chars, int32_t count, UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">UChar32 u_fgetcx(UFILE *f)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row1">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_sscanf_u(const UChar *buffer, const UChar *patternSpecification,...)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+<tr class="row0">
+<td class="file">ustdio.h</td><td class="proto">int32_t u_vfscanf(UFILE *f, const char *patternSpecification, va_list ap)</td><td class="" colspan="
+       	            		2
+       	            	" align="
+       	            		center
+       	            	">Draft&gt;Stable<br>3.0</td>
+</tr>
+</table>
+<P></P>
+<a href="#_top">(jump back to top)</a>
+<hr>
+<a name="added">
+<h2>Added in 4.2</h2>
+</a>
+<table BORDER="1" class="genTable">
+<THEAD>
+<tr>
+<th>File</th><th>API</th><th>4.0.1</th><th>4.2</th>
+</tr>
+</THEAD>
+<tr class="row1">
+<td class="file">bytestream.h</td><td class="proto">CheckedArrayByteSink::CheckedArrayByteSink(char *outbuf, int32_t capacity)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">bytestream.h</td><td class="proto">void ByteSink::Flush()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">bytestream.h</td><td class="proto">ByteSink::~ByteSink()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">bytestream.h</td><td class="proto">char* ByteSink::GetAppendBuffer(int32_t min_capacity, int32_t desired_capacity_hint, char *scratch, int32_t scratch_capacity, int32_t *result_capacity)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">bytestream.h</td><td class="proto">void CheckedArrayByteSink::Append(const char *bytes, int32_t n)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">bytestream.h</td><td class="proto">char* CheckedArrayByteSink::GetAppendBuffer(int32_t min_capacity, int32_t desired_capacity_hint, char *scratch, int32_t scratch_capacity, int32_t *result_capacity)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">bytestream.h</td><td class="proto">ByteSink::ByteSink()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">bytestream.h</td><td class="proto">UBool CheckedArrayByteSink::Overflowed() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">bytestream.h</td><td class="proto">int32_t CheckedArrayByteSink::NumberOfBytesWritten() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">bytestream.h</td><td class="proto">void ByteSink::Append(const char *bytes, int32_t n)=0</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">calendar.h</td><td class="proto">static StringEnumeration* Calendar::getKeywordValuesForLocale(const char *key, const Locale &amp;locale, UBool commonlyUsed, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">coll.h</td><td class="proto">UCollationResult Collator::compare(UCharIterator &amp;sIter, UCharIterator &amp;tIter, UErrorCode &amp;status) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">coll.h</td><td class="proto">UCollationResult Collator::compareUTF8(const StringPiece &amp;source, const StringPiece &amp;target, UErrorCode &amp;status) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">coll.h</td><td class="proto">static StringEnumeration* Collator::getKeywordValuesForLocale(const char *keyword, const Locale &amp;locale, UBool commonlyUsed, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">currpinf.h</td><td class="proto">static UClassID CurrencyPluralInfo::getStaticClassID()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">currpinf.h</td><td class="proto">CurrencyPluralInfo* CurrencyPluralInfo::clone() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">currpinf.h</td><td class="proto">void CurrencyPluralInfo::setCurrencyPluralPattern(const UnicodeString &amp;pluralCount, const UnicodeString &amp;pattern, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">currpinf.h</td><td class="proto">void CurrencyPluralInfo::setPluralRules(const UnicodeString &amp;ruleDescription, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">currpinf.h</td><td class="proto">UnicodeString&amp; CurrencyPluralInfo::getCurrencyPluralPattern(const UnicodeString &amp;pluralCount, UnicodeString &amp;result) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">currpinf.h</td><td class="proto">const PluralRules* CurrencyPluralInfo::getPluralRules() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">currpinf.h</td><td class="proto">void CurrencyPluralInfo::setLocale(const Locale &amp;loc, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">currpinf.h</td><td class="proto">CurrencyPluralInfo::CurrencyPluralInfo(const CurrencyPluralInfo &amp;info)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">currpinf.h</td><td class="proto">UClassID CurrencyPluralInfo::getDynamicClassID() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">currpinf.h</td><td class="proto">CurrencyPluralInfo::CurrencyPluralInfo(UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">currpinf.h</td><td class="proto">CurrencyPluralInfo::~CurrencyPluralInfo()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">currpinf.h</td><td class="proto">const Locale&amp; CurrencyPluralInfo::getLocale() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">currpinf.h</td><td class="proto">CurrencyPluralInfo::CurrencyPluralInfo(const Locale &amp;locale, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">currpinf.h</td><td class="proto">CurrencyPluralInfo&amp; CurrencyPluralInfo::operator=(const CurrencyPluralInfo &amp;info)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">currpinf.h</td><td class="proto">UBool CurrencyPluralInfo::operator!=(const CurrencyPluralInfo &amp;info) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">currpinf.h</td><td class="proto">static UBool ValueComparator(UHashTok val1, UHashTok val2)</td><td class="">None<br>
+</td><td>Internal<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">currpinf.h</td><td class="proto">UBool CurrencyPluralInfo::operator==(const CurrencyPluralInfo &amp;info) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">dcfmtsym.h</td><td class="proto">const UnicodeString&amp; DecimalFormatSymbols::getPatternForCurrencySpacing(ECurrencySpacing type, UBool beforeCurrency, UErrorCode &amp;status) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">dcfmtsym.h</td><td class="proto">void DecimalFormatSymbols::setPatternForCurrencySpacing(ECurrencySpacing type, UBool beforeCurrency, const UnicodeString &amp;pattern)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">decimfmt.h</td><td class="proto">void DecimalFormat::setCurrencyPluralInfo(const CurrencyPluralInfo &amp;info)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">decimfmt.h</td><td class="proto">static UBool AffixValueComparator(UHashTok val1, UHashTok val2)</td><td class="">None<br>
+</td><td>Internal<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">decimfmt.h</td><td class="proto">const CurrencyPluralInfo* DecimalFormat::getCurrencyPluralInfo(void) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">decimfmt.h</td><td class="proto">static UBool AffixPatternValueComparator(UHashTok val1, UHashTok val2)</td><td class="">None<br>
+</td><td>Internal<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">decimfmt.h</td><td class="proto">void DecimalFormat::adoptCurrencyPluralInfo(CurrencyPluralInfo *toAdopt)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">decimfmt.h</td><td class="proto">DecimalFormat::DecimalFormat(const UnicodeString &amp;pattern, DecimalFormatSymbols *symbolsToAdopt, NumberFormat::EStyles style, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Internal<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">dtfmtsym.h</td><td class="proto">const UnicodeString* DateFormatSymbols::getNarrowEras(int32_t &amp;count) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">dtfmtsym.h</td><td class="proto">void DateFormatSymbols::setNarrowEras(const UnicodeString *narrowEras, int32_t count)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">dtitvinf.h</td><td class="proto">static UBool hashTableValueComparator(UHashTok val1, UHashTok val2)</td><td class="">None<br>
+</td><td>Internal<br>
+<span class=""><span>4.0</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">errorcode.h</td><td class="proto">void ErrorCode::set(UErrorCode value)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">errorcode.h</td><td class="proto">UBool ErrorCode::isSuccess() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">errorcode.h</td><td class="proto">UErrorCode ErrorCode::reset()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">errorcode.h</td><td class="proto">void ErrorCode::check() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">errorcode.h</td><td class="proto">ErrorCode::operator UErrorCode &amp;()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">errorcode.h</td><td class="proto">ErrorCode::~ErrorCode()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">errorcode.h</td><td class="proto">UBool ErrorCode::isFailure() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">errorcode.h</td><td class="proto">ErrorCode::ErrorCode()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">errorcode.h</td><td class="proto">ErrorCode::operator UErrorCode *()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">errorcode.h</td><td class="proto">UErrorCode ErrorCode::get() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">LEGlyphStorage.h</td><td class="proto">void LEGlyphStorage::moveGlyph(le_int32 fromPosition, le_int32 toPosition, le_uint32 marker)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">LEGlyphStorage.h</td><td class="proto">LEGlyphID* LEGlyphStorage::insertGlyphs(le_int32 atIndex, le_int32 insertCount, LEErrorCode &amp;success)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">msgfmt.h</td><td class="proto">int32_t MessageFormat::getArgTypeCount() const</td><td class="">None<br>
+</td><td>Internal<br>
+<span class=""><span>.</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numfmt.h</td><td class="proto">static NumberFormat* NumberFormat::createInstance(const Locale &amp;desiredLocale, EStyles choice, UErrorCode &amp;success)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numsys.h</td><td class="proto">int32_t NumberingSystem::getRadix()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numsys.h</td><td class="proto">NumberingSystem::NumberingSystem(const NumberingSystem &amp;other)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numsys.h</td><td class="proto">static NumberingSystem* NumberingSystem::createInstance(UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numsys.h</td><td class="proto">static StringEnumeration* NumberingSystem::getAvailableNames(UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numsys.h</td><td class="proto">static NumberingSystem* NumberingSystem::createInstance(const Locale &amp;inLocale, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numsys.h</td><td class="proto">NumberingSystem::NumberingSystem()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numsys.h</td><td class="proto">UBool NumberingSystem::isAlgorithmic() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numsys.h</td><td class="proto">static NumberingSystem* NumberingSystem::createInstanceByName(const char *name, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numsys.h</td><td class="proto">UnicodeString NumberingSystem::getDescription()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numsys.h</td><td class="proto">static UClassID NumberingSystem::getStaticClassID(void)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numsys.h</td><td class="proto">NumberingSystem::~NumberingSystem()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">numsys.h</td><td class="proto">static NumberingSystem* NumberingSystem::createInstance(int32_t radix, UBool isAlgorithmic, const UnicodeString &amp;description, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">numsys.h</td><td class="proto">UClassID NumberingSystem::getDynamicClassID() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">smpdtfmt.h</td><td class="proto">SimpleDateFormat::SimpleDateFormat(const UnicodeString &amp;pattern, const UnicodeString &amp;override, const Locale &amp;locale, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">smpdtfmt.h</td><td class="proto">SimpleDateFormat::SimpleDateFormat(const UnicodeString &amp;pattern, const UnicodeString &amp;override, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">stringpiece.h</td><td class="proto">void StringPiece::remove_suffix(int32_t n)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">stringpiece.h</td><td class="proto">UBool StringPiece::empty() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">stringpiece.h</td><td class="proto">void StringPiece::remove_prefix(int32_t n)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">stringpiece.h</td><td class="proto">void StringPiece::clear()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">stringpiece.h</td><td class="proto">int32_t StringPiece::length() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">stringpiece.h</td><td class="proto">StringPiece::StringPiece(const char *offset, int32_t len)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">stringpiece.h</td><td class="proto">const char* StringPiece::data() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">stringpiece.h</td><td class="proto">int32_t StringPiece::size() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">stringpiece.h</td><td class="proto">StringPiece StringPiece::substr(int32_t pos, int32_t len=npos) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">stringpiece.h</td><td class="proto">StringPiece::StringPiece(const StringPiece &amp;x, int32_t pos, int32_t len)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">stringpiece.h</td><td class="proto">StringPiece::StringPiece()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">stringpiece.h</td><td class="proto">StringPiece::StringPiece(const char *str)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">stringpiece.h</td><td class="proto">StringPiece::StringPiece(const StringPiece &amp;x, int32_t pos)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tblcoll.h</td><td class="proto">UCollationResult RuleBasedCollator::compare(UCharIterator &amp;sIter, UCharIterator &amp;tIter, UErrorCode &amp;status) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmunit.h</td><td class="proto">UObject* TimeUnit::clone() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmunit.h</td><td class="proto">UTimeUnitFields TimeUnit::getTimeUnitField() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmunit.h</td><td class="proto">UClassID TimeUnit::getDynamicClassID() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmunit.h</td><td class="proto">TimeUnit::TimeUnit(const TimeUnit &amp;other)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmunit.h</td><td class="proto">UBool TimeUnit::operator==(const UObject &amp;other) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmunit.h</td><td class="proto">TimeUnit::~TimeUnit()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmunit.h</td><td class="proto">UBool TimeUnit::operator!=(const UObject &amp;other) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmunit.h</td><td class="proto">TimeUnit&amp; TimeUnit::operator=(const TimeUnit &amp;other)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmunit.h</td><td class="proto">static TimeUnit* TimeUnit::createInstance(UTimeUnitFields timeUnitField, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmunit.h</td><td class="proto">static UClassID TimeUnit::getStaticClassID()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmutamt.h</td><td class="proto">TimeUnit::UTimeUnitFields TimeUnitAmount::getTimeUnitField() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmutamt.h</td><td class="proto">UBool TimeUnitAmount::operator==(const UObject &amp;other) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmutamt.h</td><td class="proto">UObject* TimeUnitAmount::clone() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmutamt.h</td><td class="proto">UBool TimeUnitAmount::operator!=(const UObject &amp;other) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmutamt.h</td><td class="proto">TimeUnitAmount&amp; TimeUnitAmount::operator=(const TimeUnitAmount &amp;other)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmutamt.h</td><td class="proto">TimeUnitAmount::TimeUnitAmount(const TimeUnitAmount &amp;other)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmutamt.h</td><td class="proto">TimeUnitAmount::TimeUnitAmount(const Formattable &amp;number, TimeUnit::UTimeUnitFields timeUnitField, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmutamt.h</td><td class="proto">TimeUnitAmount::~TimeUnitAmount()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmutamt.h</td><td class="proto">const TimeUnit&amp; TimeUnitAmount::getTimeUnit() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmutamt.h</td><td class="proto">static UClassID TimeUnitAmount::getStaticClassID(void)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmutamt.h</td><td class="proto">TimeUnitAmount::TimeUnitAmount(double amount, TimeUnit::UTimeUnitFields timeUnitField, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmutamt.h</td><td class="proto">UClassID TimeUnitAmount::getDynamicClassID(void) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmutfmt.h</td><td class="proto">TimeUnitFormat::~TimeUnitFormat()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmutfmt.h</td><td class="proto">TimeUnitFormat::TimeUnitFormat(UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmutfmt.h</td><td class="proto">UClassID TimeUnitFormat::getDynamicClassID(void) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmutfmt.h</td><td class="proto">TimeUnitFormat::TimeUnitFormat(const Locale &amp;locale, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmutfmt.h</td><td class="proto">UnicodeString&amp; TimeUnitFormat::format(const Formattable &amp;obj, UnicodeString &amp;toAppendTo, FieldPosition &amp;pos, UErrorCode &amp;status) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmutfmt.h</td><td class="proto">UBool TimeUnitFormat::operator==(const Format &amp;other) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmutfmt.h</td><td class="proto">Format* TimeUnitFormat::clone(void) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmutfmt.h</td><td class="proto">void TimeUnitFormat::setLocale(const Locale &amp;locale, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmutfmt.h</td><td class="proto">void TimeUnitFormat::parseObject(const UnicodeString &amp;source, Formattable &amp;result, ParsePosition &amp;pos) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmutfmt.h</td><td class="proto">TimeUnitFormat::TimeUnitFormat(const TimeUnitFormat &amp;)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmutfmt.h</td><td class="proto">TimeUnitFormat::TimeUnitFormat(const Locale &amp;locale, EStyle style, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmutfmt.h</td><td class="proto">static UClassID TimeUnitFormat::getStaticClassID(void)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmutfmt.h</td><td class="proto">TimeUnitFormat&amp; TimeUnitFormat::operator=(const TimeUnitFormat &amp;other)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">tmutfmt.h</td><td class="proto">void TimeUnitFormat::setNumberFormat(const NumberFormat &amp;format, UErrorCode &amp;status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">tmutfmt.h</td><td class="proto">UBool TimeUnitFormat::operator!=(const Format &amp;other) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ucal.h</td><td class="proto">const char* ucal_getType(const UCalendar *cal, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ucal.h</td><td class="proto">UEnumeration* ucal_getKeywordValuesForLocale(const char *key, const char *locale, UBool commonlyUsed, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ucnvsel.h</td><td class="proto">void ucnvsel_close(UConverterSelector *sel)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ucnvsel.h</td><td class="proto">UConverterSelector* ucnvsel_open(const char *const *converterList, int32_t converterListSize, const USet *excludedCodePoints, const UConverterUnicodeSet whichSet, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ucnvsel.h</td><td class="proto">int32_t ucnvsel_serialize(const UConverterSelector *sel, void *buffer, int32_t bufferCapacity, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ucnvsel.h</td><td class="proto">UEnumeration* ucnvsel_selectForString(const UConverterSelector *sel, const UChar *s, int32_t length, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ucnvsel.h</td><td class="proto">UEnumeration* ucnvsel_selectForUTF8(const UConverterSelector *sel, const char *s, int32_t length, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ucnvsel.h</td><td class="proto">UConverterSelector* ucnvsel_openFromSerialized(const void *buffer, int32_t length, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ucol.h</td><td class="proto">UEnumeration* ucol_getKeywordValuesForLocale(const char *key, const char *locale, UBool commonlyUsed, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ucurr.h</td><td class="proto">UEnumeration* ucurr_getKeywordValuesForLocale(const char *key, const char *locale, UBool commonlyUsed, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ucurr.h</td><td class="proto">const UChar* ucurr_getPluralName(const UChar *currency, const char *locale, UBool *isChoiceFormat, const char *pluralCount, int32_t *len, UErrorCode *ec)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uloc.h</td><td class="proto">int32_t uloc_forLanguageTag(const char *langtag, char *localeID, int32_t localeIDCapacity, int32_t *parsedLength, UErrorCode *err)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uloc.h</td><td class="proto">int32_t uloc_toLanguageTag(const char *localeID, char *langtag, int32_t langtagCapacity, UBool strict, UErrorCode *err)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ulocdata.h</td><td class="proto">int32_t ulocdata_getLocaleDisplayPattern(ULocaleData *uld, UChar *pattern, int32_t patternCapacity, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ulocdata.h</td><td class="proto">void ulocdata_getCLDRVersion(UVersionInfo versionArray, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ulocdata.h</td><td class="proto">int32_t ulocdata_getLocaleSeparator(ULocaleData *uld, UChar *separator, int32_t separatorCapacity, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uniset.h</td><td class="proto">USet * UnicodeSet::toUSet()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uniset.h</td><td class="proto">const UnicodeSet * UnicodeSet::fromUSet(const USet *uset)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uniset.h</td><td class="proto">UnicodeSet * UnicodeSet::fromUSet(USet *uset)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uniset.h</td><td class="proto">const USet * UnicodeSet::toUSet() const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">unistr.h</td><td class="proto">int32_t UnicodeString::extract(int32_t start, int32_t startLength, char *target, uint32_t targetLength) const</td><td class="">None<br>
+</td><td>Stable<br>
+<span class=""><span>2.0</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">unistr.h</td><td class="proto">static UnicodeString UnicodeString::fromUTF32(const UChar32 *utf32, int32_t length)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">unistr.h</td><td class="proto">int32_t UnicodeString::extract(int32_t start, int32_t startLength, char *target, uint32_t targetLength, const char *codepage) const</td><td class="">None<br>
+</td><td>Stable<br>
+<span class=""><span>2.0</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">unistr.h</td><td class="proto">UnicodeString::UnicodeString(const char *codepageData)</td><td class="">None<br>
+</td><td>Stable<br>
+<span class=""><span>2.0</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">unistr.h</td><td class="proto">UnicodeString::UnicodeString(const char *codepageData, const char *codepage)</td><td class="">None<br>
+</td><td>Stable<br>
+<span class=""><span>2.0</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">unistr.h</td><td class="proto">UnicodeString::UnicodeString(const char *codepageData, int32_t dataLength, const char *codepage)</td><td class="">None<br>
+</td><td>Stable<br>
+<span class=""><span>2.0</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">unistr.h</td><td class="proto">void UnicodeString::toUTF8(ByteSink &amp;sink) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">unistr.h</td><td class="proto">static UnicodeString UnicodeString::fromUTF8(const StringPiece &amp;utf8)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">unistr.h</td><td class="proto">UnicodeString::UnicodeString(const char *codepageData, int32_t dataLength)</td><td class="">None<br>
+</td><td>Stable<br>
+<span class=""><span>2.0</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">unistr.h</td><td class="proto">int32_t UnicodeString::toUTF32(UChar32 *utf32, int32_t capacity, UErrorCode &amp;errorCode) const</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uset.h</td><td class="proto">USet* uset_openEmpty()</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uset.h</td><td class="proto">void uset_closeOver(USet *set, int32_t attributes)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uset.h</td><td class="proto">void uset_removeAllStrings(USet *set)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_getSkeletonUTF8(const USpoofChecker *sc, uint32_t type, const char *s, int32_t length, char *dest, int32_t destCapacity, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_areConfusableUTF8(const USpoofChecker *sc, const char *s1, int32_t length1, const char *s2, int32_t length2, int32_t *position, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uspoof.h</td><td class="proto">const USet* uspoof_getAllowedChars(const USpoofChecker *sc, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uspoof.h</td><td class="proto">USpoofChecker* uspoof_clone(const USpoofChecker *sc, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_getSkeleton(const USpoofChecker *sc, uint32_t type, const UChar *s, int32_t length, UChar *dest, int32_t destCapacity, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uspoof.h</td><td class="proto">void uspoof_setAllowedLocales(USpoofChecker *sc, const char *localesList, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uspoof.h</td><td class="proto">const char* uspoof_getAllowedLocales(USpoofChecker *sc, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uspoof.h</td><td class="proto">USpoofChecker* uspoof_openFromSource(const char *confusables, int32_t confusablesLen, const char *confusablesWholeScript, int32_t confusablesWholeScriptLen, int32_t *errType, UParseError *pe, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_areConfusable(const USpoofChecker *sc, const UChar *s1, int32_t length1, const UChar *s2, int32_t length2, int32_t *position, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_getChecks(const USpoofChecker *sc, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uspoof.h</td><td class="proto">void uspoof_setChecks(USpoofChecker *sc, int32_t checks, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uspoof.h</td><td class="proto">USpoofChecker* uspoof_open(UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uspoof.h</td><td class="proto">void uspoof_close(USpoofChecker *sc)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_serialize(USpoofChecker *sc, void *data, int32_t capacity, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uspoof.h</td><td class="proto">void uspoof_setAllowedChars(USpoofChecker *sc, const USet *chars, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_check(const USpoofChecker *sc, const UChar *text, int32_t length, int32_t *position, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uspoof.h</td><td class="proto">int32_t uspoof_checkUTF8(const USpoofChecker *sc, const char *text, int32_t length, int32_t *position, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uspoof.h</td><td class="proto">USpoofChecker* uspoof_openFromSerialized(const void *data, int32_t length, int32_t *pActualLength, UErrorCode *pErrorCode)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">usprep.h</td><td class="proto">UStringPrepProfile* usprep_openByType(UStringPrepProfileType type, UErrorCode *status)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">ustring.h</td><td class="proto">UChar* u_strFromUTF32WithSub(UChar *dest, int32_t destCapacity, int32_t *pDestLength, const UChar32 *src, int32_t srcLength, UChar32 subchar, int32_t *pNumSubstitutions, UErrorCode *pErrorCode)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">ustring.h</td><td class="proto">UChar32* u_strToUTF32WithSub(UChar32 *dest, int32_t destCapacity, int32_t *pDestLength, const UChar *src, int32_t srcLength, UChar32 subchar, int32_t *pNumSubstitutions, UErrorCode *pErrorCode)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row1">
+<td class="file">uversion.h</td><td class="proto">int32_t u_compareVersions(UVersionInfo v1, UVersionInfo v2)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+<tr class="row0">
+<td class="file">uversion.h</td><td class="proto">void u_versionFromUString(UVersionInfo versionArray, const UChar *versionString)</td><td class="">None<br>
+</td><td>Draft<br>
+<span class=""><span>4.2</span></span></td>
+</tr>
+</table>
+<P></P>
+<a href="#_top">(jump back to top)</a>
+<hr>
+<a name="other">
+<h2>Other existing drafts in 4.2</h2>
+</a>
+<div class="other">
+<table BORDER="1" class="genTable">
+<THEAD>
+<tr>
+<th>File</th><th>API</th><th>4.0.1</th><th>4.2</th>
+</tr>
+</THEAD>
+</table>
+</div>
+<P></P>
+<a href="#_top">(jump back to top)</a>
+<hr>
+<p>
+<i><font size="-1">Contents generated by StableAPI tool on Wed Mar 18 22:04:30 PDT 2009<br>Copyright (C) 2009, International Business Machines Corporation, All Rights Reserved.</font></i>
+</p>
+</body>
+</html>
diff --git a/as_is/os390/unpax-icu.sh b/as_is/os390/unpax-icu.sh
new file mode 100755
index 0000000..23a1ebc
--- /dev/null
+++ b/as_is/os390/unpax-icu.sh
@@ -0,0 +1,102 @@
+#!/bin/sh
+# Copyright (C) 2001-2007, International Business Machines
+#   Corporation and others.  All Rights Reserved.
+#
+# Authors:
+# Ami Fixler
+# Steven R. Loomis
+# George Rhoten
+#
+# Shell script to unpax ICU and convert the files to an EBCDIC codepage.
+# After extracting to EBCDIC, binary files are re-extracted without the
+# EBCDIC conversion, thus restoring them to original codepage.
+#
+# Set the following variable to the list of binary file suffixes (extensions)
+
+#binary_suffixes='ico ICO bmp BMP jpg JPG gif GIF brk BRK'
+#ICU specific binary files
+binary_suffixes='brk BRK bin BIN res RES cnv CNV dat DAT icu ICU spp SPP xml XML'
+
+usage()
+{
+    echo "Enter archive filename as a parameter: $0 icu-archive.tar"
+}
+# first make sure we at least one arg and it's a file we can read
+if [ $# -eq 0 ]; then
+    usage
+    exit
+fi
+tar_file=$1
+if [ ! -r $tar_file ]; then
+    echo "$tar_file does not exist or cannot be read."
+    usage
+    exit
+fi
+
+echo ""
+echo "Extracting from $tar_file ..."
+echo ""
+# extract files while converting them to EBCDIC
+pax -rvf $tar_file -o to=IBM-1047,from=ISO8859-1 -o setfiletag
+
+echo ""
+echo "Determining binary files ..."
+echo ""
+
+# When building in ASCII mode, text files are converted as ASCII
+if [ "${ICU_ENABLE_ASCII_STRINGS}" -eq 1 ]; then
+    binary_suffixes="$binary_suffixes txt TXT ucm UCM"
+else
+	for file in `find ./icu \( -name \*.txt -print \) | sed -e 's/^\.\///'`; do
+		bom8=`head -c 3 $file|\
+			od -t x1|\
+			head -n 1|\
+			sed 's/  */ /g'|\
+			cut -f2-4 -d ' '|\
+			tr 'A-Z' 'a-z'`;
+		#Find a converted UTF-8 BOM
+		if [ "$bom8" = "57 8b ab" ]
+		then
+			binary_files="$binary_files $file";
+		fi
+	done
+fi
+
+for i in $(pax -f $tar_file 2>/dev/null)
+do
+	case $i in
+	*/) ;;		# then this entry is a directory
+	*.*)		# then this entry has a dot in the filename
+		for j in $binary_suffixes
+		do
+			# We substitute the suffix more than once
+			# to handle files like NormalizationTest-3.2.0.txt
+			suf=${i#*.*}
+			suf=${suf#*.*}
+			suf=${suf#*.*}
+			if [ "$suf" = "$j" ]
+			then
+				binary_files="$binary_files $i"
+				break
+			fi
+		done
+		;;
+	*) ;;		# then this entry does not have a dot in it
+    esac
+done
+
+# now see if a re-extract of binary files is necessary
+if [ ${#binary_files} -eq 0 ]; then
+    echo ""
+    echo "There are no binary files to restore."
+else
+    echo "Restoring binary files ..."
+    echo ""
+    rm $binary_files
+    pax -rvf $tar_file $binary_files
+    # Tag the files as binary for proper interaction with the _BPXK_AUTOCVT
+    # environment setting
+    chtag -b $binary_files
+fi
+echo ""
+echo "$0 has completed extracting ICU from $tar_file."
diff --git a/as_is/os400/convertConfigure.sed b/as_is/os400/convertConfigure.sed
new file mode 100644
index 0000000..d125ea0
--- /dev/null
+++ b/as_is/os400/convertConfigure.sed
@@ -0,0 +1,20 @@
+# Copyright (C) 2006-2006, International Business Machines Corporation
+# and others.  All Rights Reserved.
+#
+# Use "test -x" instead of "test -f" most of the time.
+# due to how executables are created in a different file system.
+s/as_executable_p="test -f"/as_executable_p="test -x"/g
+s/test -f "$ac_file"/test -x "$ac_file"/g
+s/test -f $ac_dir\/install-sh/test -x $ac_dir\/install-sh/g
+s/test -f $ac_dir\/install.sh/test -x $ac_dir\/install.sh/g
+s/test -f $ac_dir\/shtool/test -x $ac_dir\/shtool/g
+# Use the more efficient del instead of rm command.
+s/rm[ ]*-rf/del -f/g
+s/rm[ ]*-fr/del -f/g
+s/rm[ ]*-f/del -f/g
+# Borne shell isn't always available on i5/OS
+s/\/bin\/sh/\/usr\/bin\/qsh/g
+# Use -c qpponly instead of -E to enable the preprocessor on the compiler
+s/\$CC -E/\$CC -c -qpponly/g
+# no diff in qsh the equivalent is cmp
+s/ diff / cmp -s /g
\ No newline at end of file
diff --git a/as_is/os400/unpax-icu.sh b/as_is/os400/unpax-icu.sh
new file mode 100755
index 0000000..cd6dc1b
--- /dev/null
+++ b/as_is/os400/unpax-icu.sh
@@ -0,0 +1,179 @@
+#!/usr/bin/qsh
+#   Copyright (C) 2000-2007, International Business Machines
+#   Corporation and others.  All Rights Reserved.
+#
+# Authors:
+# Ami Fixler
+# Barry Novinger
+# Steven R. Loomis
+# George Rhoten
+# Jason Spieth
+#
+# Shell script to unpax ICU and convert the files to an EBCDIC codepage.
+# After extracting to EBCDIC, binary files are re-extracted without the
+# EBCDIC conversion, thus restoring them to original codepage.
+#
+# Set the following variable to the list of binary file suffixes (extensions)
+
+#****************************************************************************
+#binary_suffixes='ico ICO bmp BMP jpg JPG gif GIF brk BRK'
+#ICU specific binary files
+#****************************************************************************
+binary_suffixes='brk BRK bin BIN res RES cnv CNV dat DAT icu ICU spp SPP xml XML'
+data_files='icu/source/data/brkitr/* icu/source/data/locales/* icu/source/data/coll/* icu/source/data/rbnf/* icu/source/data/mappings/* icu/source/data/misc/* icu/source/data/translit/* icu/source/data/unidata/* icu/source/test/testdata/*'
+
+#****************************************************************************
+# Function:     usage
+# Description:  Prints out text that describes how to call this script
+# Input:        None
+# Output:       None
+#****************************************************************************
+usage()
+{
+  echo "Enter archive filename as a parameter: $0 icu-archive.tar"
+}
+
+#****************************************************************************
+# first make sure we at least one arg and it's a file we can read
+#****************************************************************************
+
+# check for no arguments
+if [ $# -eq 0 ]; then
+  usage
+  exit
+fi
+
+# tar file is argument 1
+tar_file=$1
+
+# check that the file is valid
+if [ ! -r $tar_file ]; then
+  echo "$tar_file does not exist or cannot be read."
+  usage
+  exit
+fi
+
+#****************************************************************************
+# Determine which directories in the data_files list
+# are included in the provided archive
+#****************************************************************************
+for data_dir in $data_files
+do
+   if (pax -f $tar_file $data_dir >/dev/null 2>&1)
+   then
+       ebcdic_data="$ebcdic_data `echo $data_dir`";
+   fi
+done
+
+#****************************************************************************
+# Extract files.  We do this in two passes.  One pass for 819 files and a
+# second pass for 37 files
+#****************************************************************************
+echo ""
+echo "Extracting from $tar_file ..."
+echo ""
+
+# extract everything as iso-8859-1 except these directories
+pax -C 819 -rcvf $tar_file $ebcdic_data
+
+# extract files while converting them to EBCDIC
+echo ""
+echo "Extracting files which must be in ibm-37 ..."
+echo ""
+pax -C 37 -rvf $tar_file $ebcdic_data
+
+#****************************************************************************
+# For files we have restored as CCSID 37, check the BOM to see if they    
+# should be processed as 819.  Also handle files with special paths. Files
+# that match will be added to binary files lists.  The lists will in turn
+# be processed to restore files as 819.
+#****************************************************************************
+echo ""
+echo "Determining binary files ..."
+echo ""
+
+# Process BOMs
+for file in `find ./icu \( -name \*.txt -print \)`; do
+    bom8=`head -n 1 $file|\
+          od -t x1|\
+          head -n 1|\
+          sed 's/  */ /g'|\
+          cut -f2-4 -d ' '|\
+          tr 'A-Z' 'a-z'`;
+    #Find a converted UTF-8 BOM
+    if [ "$bom8" = "057 08b 0ab" -o "$bom8" = "57 8b ab" ]
+    then
+        file="`echo $file | cut -d / -f2-`"
+
+        if [ `echo $binary_files | wc -w` -lt 200 ]
+        then
+            binary_files="$binary_files $file";
+        else
+            echo "Restoring binary files ..."
+            rm $binary_files;
+            pax -C 819 -rvf $tar_file $binary_files;
+            echo "Determining binary files ..."
+            binary_files="$file";
+        fi
+    fi
+done
+
+# Process special paths
+for i in $(pax -f $tar_file 2>/dev/null)
+do
+  case $i in
+    */)
+#    then this entry is a directory
+     ;;
+    *.*)
+#    then this entry has a dot in the filename
+     for j in $binary_suffixes
+     do
+       suf=${i#*.*}
+       if [ "$suf" = "$j" ]
+       then
+
+         if [ `echo $binary_files | wc -w` -lt 200 ]
+         then
+            binary_files="$binary_files $i";
+         else
+            echo "Restoring binary files ..."
+            rm $binary_files;
+            pax -C 819 -rvf $tar_file $binary_files;
+            echo "Determining binary files ..."
+            binary_files="$i";
+         fi
+         break
+       fi
+     done
+     ;;
+    *)
+#    then this entry does not have a dot in it
+     ;;
+  esac
+done
+
+# now see if a re-extract of binary files is necessary
+if [ `echo $binary_files | wc -w` -gt 0 ]
+then
+  echo "Restoring binary files ..."
+  rm $binary_files
+  pax -C 819 -rvf $tar_file $binary_files
+fi
+
+#****************************************************************************
+# Generate and run the configure script
+#****************************************************************************
+
+echo ""
+echo "Generating qsh compatible configure ..."
+echo ""
+
+sed -f icu/as_is/os400/convertConfigure.sed icu/source/configure > icu/source/configureTemp
+del -f icu/source/configure
+mv icu/source/configureTemp icu/source/configure
+chmod 755 icu/source/configure
+
+echo ""
+echo "$0 has completed extracting ICU from $tar_file."
+
diff --git a/icu4c.css b/icu4c.css
new file mode 100644
index 0000000..b90de44
--- /dev/null
+++ b/icu4c.css
@@ -0,0 +1,275 @@
+/*
+ * Default CSS style sheet for the ICU Open Source site
+ * Copyright (C) 2005-2009, International Business Machines
+ * Corporation and others.  All Rights Reserved.
+ */
+
+/* Global styles */
+body,p,li,ol,ul,th,td {
+	font-size: 10pt;
+	font-family: "Arial", "Helvetica", sans-serif;
+}
+
+body {
+	margin: 1em;
+}
+
+body.draft {
+	background-image: url(images/draftbg.png);
+}
+
+.mainbody {
+	padding: 1em;
+}
+
+/*
+ * Customize the headers to have less space around them than usual
+ */
+h1 {
+	margin-bottom: 5pt;
+	margin-top: 5pt;
+	font-weight: 700;
+	font-size: 20pt;
+	font-family: "Arial", "Helvetica", sans-serif;
+}
+
+h2 {
+	margin-bottom: 0pt;
+	margin-top: 12pt;
+	font-weight: 700;
+	font-size: 14pt;
+	font-family: "Arial", "Helvetica", sans-serif;
+}
+
+h3 {
+	background-color: #666666;
+	color: White;
+	margin-bottom: 0pt;
+	margin-top: 12pt;
+	padding-left: 0.75em;
+	font-size: 1em;
+	font-family: "Arial", "Helvetica", sans-serif;
+}
+
+h4 {
+	margin-bottom: 0pt;
+	margin-top: 12pt;
+	font-size: 1em;
+	font-family: "Arial", "Helvetica", sans-serif;
+}
+
+h5, h6 {
+	margin-bottom: 0pt;
+	margin-top: 12pt;
+	padding-left: 0.75em;
+	font-size: x-small;
+	font-family: "Arial", "Helvetica", sans-serif;
+}
+
+/*
+ * Navigation sidebar on the left hand of most pages
+ */
+td.sidebar1 { 
+	background-color: #99CCFF;
+	font-weight: 700;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	padding-top: 1em;
+	padding-left: 0.2em;
+	white-space: nowrap;
+}
+
+td.sidebar2 { 
+	background-color: #99CCFF;
+	margin-top: 0px;
+	margin-bottom: 0px;
+	margin-left: 0px;
+	padding-top: 1px;
+	padding-bottom: 1px;
+	padding-left: 1px;
+	padding-right: 0.5em;
+	white-space: nowrap;
+	text-decoration: none;
+	display: block;
+}
+td.sidebar2:hover { 
+	background-color: #EEEEFF;
+	padding-top: 1px;
+	padding-bottom: 1px;
+	padding-left: 1px;
+	padding-right: 0.5em;
+}
+
+a.sidebar2 {
+	text-decoration: none;
+	display: block;
+	width: 100%;
+}
+a.sidebar2:link {
+	color: #000099;
+	display: block;
+}
+a.sidebar2:hover {
+	background-color: #EEEEFF;
+	display: block;
+}
+.underlinehover:hover {
+	background-color: #EEEEFF;
+	text-decoration: underline;
+}
+
+/* This is the faded header at the top */
+td.fadedtop {
+	background-color: #006699;
+	background-image: url(http://www.icu-project.org/images/gr100.gif);
+}
+
+/* Related site on the left */
+p.relatedsite {
+	color: White;
+	font-weight: 700;
+	font-size: 10pt;
+	margin-top: 1em;
+	margin-bottom: 0;
+	padding-left: 0.2em;
+	white-space: nowrap;
+}
+
+/* Related site on the left */
+p.sidebar3 {
+	margin-top: 0.75em;
+	margin-bottom: 0;
+	padding-left: 0.8em;
+}
+a.sidebar3 {
+	font-size: 0.9em;
+	text-decoration: none;
+}
+a.sidebar3:link {
+	text-decoration: none;
+	color: White;
+}
+a.sidebar3:hover {
+	text-decoration: underline;
+}
+
+/* FAQ */
+li.faq_contents {
+	font-weight: 500;
+}
+p.faq_q {
+	font-weight: 700; 
+	margin-bottom: 0px;
+}
+p.faq_a {
+	margin-top: 0px;
+}
+
+/* News items */
+table.newsItem {
+	padding-left: 1em;
+	padding-right: 1em;
+	border-width: medium;
+}
+th.newsItem {
+	background-color: #666666;
+	color: White;
+}
+td.newsItem {
+	background-color: #CCCCCC;
+}
+
+td.release-line,th.release-line {
+	padding-left: 0.5em;
+	padding-right: 0.5em;
+	white-space: nowrap;
+	border:1px;
+}
+.note {
+	font-style: italic;
+	font-size: small;
+	margin-left: 1em;
+}
+samp {
+	margin-left: 1em;
+	margin-right: 2em;
+	border-style: groove;
+	padding: 1em;
+	display: block;
+	background-color: #EEEEEE
+}
+table.rtable caption {
+	margin-left: 2px;
+	margin-right: 2px;
+	padding: 3px;
+	font-weight: bold;
+	background-color: #dee2ff;
+	text-align: left;
+}
+table.rtable tr th {
+	background-color: #dee2ff;
+	text-align: left;
+}
+table.rtable tr td {
+	background-color: #c0c0fd;
+	padding: 3px;
+}
+
+/*  APIChangeReport specific things */
+.row0 {
+	background-color: white;	
+}
+
+.row1 {
+	background-color: #dfd;
+}
+
+.verchange {
+	color:  red;
+	font-weight: bold;
+	font-size:  large;
+}
+
+.stabchange {
+	color:  red;
+	font-size:  large;
+}
+
+.bigwarn {
+	color: red;
+	background-color: white;
+	font-size:  x-large;
+	margin:  0.5 em;
+}
+
+table.genTable {
+	border-collapse: collapse;
+	border:  1px solid black;
+}
+
+/* 'everything inc version */
+table.gentable td {
+	border:  1px solid gray;
+	padding:  0.25em;
+	font-size:  small;
+}
+
+/* not version */
+table.genTable td.file,
+table.genTable td.proto {
+	border:  none;
+	font-size: medium;
+}
+
+table.genTable td.file {
+	font-family: monospace;
+	font-weight: bold;
+}
+
+div.other .row0 {
+	background-color: white;	
+}
+
+div.other .row1 {
+	background-color: #ddf;
+}
diff --git a/license.html b/license.html
new file mode 100644
index 0000000..ba2871a
--- /dev/null
+++ b/license.html
@@ -0,0 +1,51 @@
+<html>
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></meta>
+<title>ICU License - ICU 1.8.1 and later</title>
+</head>
+
+<body BGCOLOR="#ffffff">
+<h2>ICU License - ICU 1.8.1 and later</h2>
+
+<p>COPYRIGHT AND PERMISSION NOTICE</p>
+
+<p>
+Copyright (c) 1995-2009 International Business Machines Corporation and others
+</p>
+<p>
+All rights reserved.
+</p>
+<p>
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies
+of the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+</p>
+<p>
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL
+THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM,
+OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
+RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
+USE OR PERFORMANCE OF THIS SOFTWARE.
+</p>
+<p>
+Except as contained in this notice, the name of a copyright holder shall not be
+used in advertising or otherwise to promote the sale, use or other dealings in
+this Software without prior written authorization of the copyright holder.
+</p>
+
+<hr>
+<p><small>
+All trademarks and registered trademarks mentioned herein are the property of their respective owners.
+</small></p>
+</body>
+</html>
diff --git a/packaging/PACKAGES b/packaging/PACKAGES
new file mode 100644
index 0000000..12b3523
--- /dev/null
+++ b/packaging/PACKAGES
@@ -0,0 +1,159 @@
+Copyright (C) 2000-2003, International Business Machines
+Corporation and others.  All Rights Reserved.
+ICU is packaged into a number of small, interdependent packages. This
+file describes what these packages are, what their name should be
+like, and what their contents are. It is useful as a reference and a
+guide when packaging ICU on a new system.
+
++ List of ICU packages.
+
+ICU is distributed as the following packages:
+
+- ICU libraries. This package contains the runtime libraries needed by
+applications that use ICU. All the other packages require this package
+to be installed.
+- ICU. This package contains the converters data, the timezones data,
+and all the ICU tools.
+- ICU locales. This package adds locales and break data.
+- ICU development. This package contains the files necessary to build
+applications that use ICU, i.e. header files, links to shared
+libraries used by the linker, static libraries, etc... It also
+contains sample applications and documentation.
+- ICU docs. This package contains further documentation for ICU,
+including a complete API reference.
+- ICU data. This package contains the source for the compiled data
+contained by the ICU package.
+- ICU international data. This package contains the source for the
+compiled data contained by the ICU locales package.
+
+In this file, we will refer to Autoconf variables as in $(bindir). In
+addition to these, we will use the following variables to denote
+ICU-specific directories or information:
+
+  VERSION       ICU's dotted version number, e.g. 1.6.0.1 as of this
+		writing.
+
+  ICUDATADIR	The directory where portable ICU data are. This is
+	        defined as $(datadir)/icu/$(VERSION).
+  ICULIBDIR	The directory where platform-specific ICU data
+		are. This is defined as $(libdir)/icu/$(VERSION).
+  ICUSYSCONFDIR	The directory where ICU configuration files are. This
+		is defined as $(sysconfdir)/icu.
+
+When referring to libraries, .so will be used to denote the extension
+of a shared library, and .a to denote the extension of a static
+library. These extensions will actually be different on some platforms.
+
++ Configuration and compilation of ICU
+
+ICU should be configured with the following options:
+
+  --with-data-packaging=files
+  --disable-rpath
+  --enable-shared
+  --enable-static
+  --without-samples
+
+in addition to platform-specific settings (like a specific mandir or
+sysconfdir). Note that the use of --disable-rpath assumes that the
+packaging is made for a standard location, or that the package
+installation/deinstallation will correctly manage the configuration
+of the system's dyanmic loader. This is the right way of doing things.
+
+The configure script invokation should also be done with
+
+  CFLAGS="-O2"
+
+set, as in:
+
+  $ CFLAGS="-O2" ./configure ...
+
+The files packaging mode is chosen because it offers the maximum
+flexibility. Packages can be split easily, and system administrators
+can add converters, aliases, and other resources with little
+effort. Ideally, the ICU build will be modified to allow for distributing a
+libicudata.so with all the converters and locales, but indexes and aliases
+as separate files. But for now, this is the easiest way to get started.
+
++ The ICU libraries package
+
+The ICU libraries package is typically named `libicuXX' where XX is
+the major number of ICU's libraries. This number is ICU's version
+number multiplied by 10 and rounded down to the nearest integer (it is
+also the value of the LIB_VERSION_MAJOR configure substitution
+variable). For example, for ICU 1.6.0.1, it is 16, so the package name
+is `libicu16'. The major version is part of the package name to allow
+for the simultaneous installation of different ICU releases.
+
+This package contains:
+
+- All the shared libraries, and their major number symbolic link, but
+not the .so symbolic link that is only used at link time (this one is
+part of the development package). These are $(libdir)/libicu*.so.* and
+$(libdir)/libustdio.so.* at the time of this writing.
+
++ The ICU package
+
+The ICU package is simply named `icu'.  It provides data used by the ICU
+libraries package and commands to create and manipulate that data.
+
+This package contains:
+
+- The Unicode data files (uprops.dat and unames.dat as of this writing).
+- The time zones data files (tz.dat).
+- All the binary data files for converters (.cnv files).
+- All the ICU commands.
+- The manual pages for ICU commands and file formats.
+
++ The ICU locales package
+
+The ICU locales package is named `icu-locales'. It provides data used by
+internationalization support in ICU.
+
+This package contains:
+
+- All the data for locales in ICU (.dat files).
+- All the break data for specific locales (.brk files).
+
++ The ICU development package
+
+The ICU developpment package is named `libicu-dev'. It provides all
+the files necessary to write applications that use ICU, along with
+examples and some documentation.
+
+This package contains:
+
+- The /usr/include/unicode directory which contains all the ICU
+headers.
+- The .so symbolic links used by the linker to link against the
+latest version of the libraries.
+- A sample Makefile fragment that can be included by applications
+using ICU, to faciliate their building, along with a platform-specific
+configuration file included by this fragment.
+- The sample applications from the ICU source tree, in an appropriate
+location for the system that the package is installed on (for example,
+on Debian, in /usr/share/doc/libicu-dev/examples).
+
+This package depends on the ICU libraries package with the exact same
+version, since it provides .so symbolic links to the latest libraries.
+
++ The ICU docs package
+
+The ICU docs package is named `libicu-doc'. It contains the files
+generated by doxygen when the `make doc' command is executed, in a
+location appropriate for the system that the package is installed on.
+
++ The ICU data package
+
+The ICU data package is named `icu-data'. It contains source files for
+the data found in the ICU package. These files are installed in
+$(ICUDATADIR).
+
++ The ICU international data package
+
+The ICU data package is named `icu-i18ndata'. It contains source files for
+the dat founf in the ICU locales package. These files are installed in
+$(ICUDATADIR).
+
+----
+Yves Arrouye <yves@realnames.com>
diff --git a/packaging/README b/packaging/README
new file mode 100644
index 0000000..1bfe85a
--- /dev/null
+++ b/packaging/README
@@ -0,0 +1,13 @@
+Copyright (C) 2000-2003, International Business Machines
+Corporation and others.  All Rights Reserved.
+
+This directory contains information, input files and scripts for
+packaging ICU using specific packaging tools. We assume that the
+packager is familiar with the tools and procedures needed to build a
+package for a given packaging method (for example, how to use
+dpkg-buildpackage(1) on Debian GNU/Linux, or rpm(8) on distributions that
+use RPM packages).
+
+Please read the file PACKAGES if you are interested in packaging ICU
+yourself. It describes what the different packages should be, and what
+their contents are.
diff --git a/packaging/debian/README b/packaging/debian/README
new file mode 100644
index 0000000..0388625
--- /dev/null
+++ b/packaging/debian/README
@@ -0,0 +1,5 @@
+// Copyright (c) 2000-2003 International Business Machines
+// Corporation and others. All Rights Reserved.
+The Debian packaging is in the debian directory at the toplevel of ICU's
+distribution.
+
diff --git a/packaging/rpm/icu.spec b/packaging/rpm/icu.spec
new file mode 100644
index 0000000..6a1e63b
--- /dev/null
+++ b/packaging/rpm/icu.spec
@@ -0,0 +1,228 @@
+#   Copyright (C) 2000-2005, International Business Machines
+#   Corporation and others.  All Rights Reserved.
+#
+# RPM specification file for ICU.
+#
+# Neal Probert <nprobert@walid.com> is the current maintainer.
+# Yves Arrouye <yves@realnames.com> is the original author.
+
+# This file can be freely redistributed under the same license as ICU.
+
+Name: icu
+Version: 3.4
+Release: 1
+Requires: libicu34 >= %{version}
+Summary: International Components for Unicode
+Packager: Ian Holsman (CNET Networks) <ianh@cnet.com>
+Copyright: X License
+Group: System Environment/Libraries
+Source: icu-%{version}.tgz
+BuildRoot: /var/tmp/%{name}-%{version}
+%description
+ICU is a set of C and C++ libraries that provides robust and full-featured
+Unicode and locale support. The library provides calendar support, conversions
+for many character sets, language sensitive collation, date
+and time formatting, support for many locales, message catalogs
+and resources, message formatting, normalization, number and currency
+formatting, time zones support, transliteration, word, line and
+sentence breaking, etc.
+
+This package contains the Unicode character database and derived
+properties, along with converters and time zones data.
+
+This package contains the runtime libraries for ICU. It does
+not contain any of the data files needed at runtime and present in the
+`icu' and `icu-locales` packages.
+
+%package -n libicu34
+Summary: International Components for Unicode (libraries)
+Group: Development/Libraries
+%description -n libicu34
+ICU is a set of C and C++ libraries that provides robust and full-featured
+Unicode support. This package contains the runtime libraries for ICU. It does
+not contain any of the data files needed at runtime and present in the
+`icu' and `icu-locales` packages.
+
+%package -n libicu-devel
+Summary: International Components for Unicode (development files)
+Group: Development/Libraries
+Requires: libicu34 = %{version}
+%description -n libicu-devel
+ICU is a set of C and C++ libraries that provides robust and full-featured
+Unicode support. This package contains the development files for ICU.
+
+%package locales
+Summary: Locale data for ICU
+Group: System Environment/Libraries
+Requires: libicu34 >= %{version}
+%description locales
+The locale data are used by ICU to provide localization (l10n), 
+internationalization (i18n) and timezone support to ICU applications.
+This package also contains break data for various languages,
+and transliteration data.
+
+%post
+# Adjust the current ICU link in /usr/lib/icu
+
+icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
+cd /usr/lib/icu
+rm -f /usr/lib/icu/current
+if test x"$icucurrent" != x
+then
+    ln -s "$icucurrent" current
+fi
+
+#ICU_DATA=/usr/share/icu/%{version}
+#export ICU_DATA
+
+%preun
+# Adjust the current ICU link in /usr/lib/icu
+
+icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n -e '/\/%{version}\//d' -e 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
+cd /usr/lib/icu
+rm -f /usr/lib/icu/current
+if test x"$icucurrent" != x
+then
+    ln -s "$icucurrent" current
+fi
+
+%post -n libicu34
+ldconfig
+
+# Adjust the current ICU link in /usr/lib/icu
+
+icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
+cd /usr/lib/icu
+rm -f /usr/lib/icu/current
+if test x"$icucurrent" != x
+then
+    ln -s "$icucurrent" current
+fi
+
+%preun -n libicu34
+# Adjust the current ICU link in /usr/lib/icu
+
+icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n -e '/\/%{version}\//d' -e 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1`
+cd /usr/lib/icu
+rm -f /usr/lib/icu/current
+if test x"$icucurrent" != x
+then
+    ln -s "$icucurrent" current
+fi
+
+%prep
+%setup -q -n icu
+
+%build
+cd source
+chmod a+x ./configure
+CFLAGS="-O3" CXXFLAGS="-O" ./configure --prefix=/usr --sysconfdir=/etc --with-data-packaging=files --enable-shared --enable-static --disable-samples
+echo 'CPPFLAGS += -DICU_DATA_DIR=\"/usr/share/icu/%{version}\"' >> icudefs.mk
+make RPM_OPT_FLAGS="$RPM_OPT_FLAGS"
+
+%install
+rm -rf $RPM_BUILD_ROOT
+cd source
+make install DESTDIR=$RPM_BUILD_ROOT
+
+%files
+%defattr(-,root,root)
+%doc readme.html
+%doc license.html
+/usr/share/icu/%{version}/license.html
+/usr/share/icu/%{version}/icudt34l/*.cnv
+/usr/share/icu/%{version}/icudt34l/*.icu
+/usr/share/icu/%{version}/icudt34l/*.spp
+
+/usr/bin/derb
+/usr/bin/genbrk
+/usr/bin/gencnval
+/usr/bin/genrb
+/usr/bin/icu-config
+/usr/bin/makeconv
+/usr/bin/pkgdata
+/usr/bin/uconv
+
+/usr/sbin/decmn
+/usr/sbin/genccode
+/usr/sbin/gencmn
+/usr/sbin/gensprep
+/usr/sbin/genuca
+/usr/sbin/icuswap
+/usr/share/icu/%{version}/mkinstalldirs
+
+/usr/man/man1/derb.1.*
+/usr/man/man1/gencnval.1.*
+/usr/man/man1/genrb.1.*
+/usr/man/man1/icu-config.1.*
+/usr/man/man1/makeconv.1.*
+/usr/man/man1/pkgdata.1.*
+/usr/man/man1/uconv.1.*
+/usr/man/man8/decmn.8.*
+/usr/man/man8/genccode.8.*
+/usr/man/man8/gencmn.8.*
+/usr/man/man8/gensprep.8.*
+/usr/man/man8/genuca.8.*
+
+%files -n icu-locales
+/usr/share/icu/%{version}/icudt34l/*.brk
+/usr/share/icu/%{version}/icudt34l/*.res
+/usr/share/icu/%{version}/icudt34l/coll/*.res
+/usr/share/icu/%{version}/icudt34l/rbnf/*.res
+/usr/share/icu/%{version}/icudt34l/translit/*.res
+
+%files -n libicu34
+%doc license.html
+/usr/lib/libicui18n.so.34
+/usr/lib/libicui18n.so.34.0
+/usr/lib/libicutu.so.34
+/usr/lib/libicutu.so.34.0
+/usr/lib/libicuuc.so.34
+/usr/lib/libicuuc.so.34.0
+/usr/lib/libicudata.so.34
+/usr/lib/libicudata.so.34.0
+/usr/lib/libicuio.so.34
+/usr/lib/libicuio.so.34.0
+/usr/lib/libiculx.so.34
+/usr/lib/libiculx.so.34.0
+/usr/lib/libicule.so.34
+/usr/lib/libicule.so.34.0
+
+%files -n libicu-devel
+%doc readme.html
+%doc license.html
+/usr/lib/libicui18n.so
+/usr/lib/libsicui18n.a
+/usr/lib/libicuuc.so
+/usr/lib/libsicuuc.a
+/usr/lib/libicutu.so
+/usr/lib/libsicutu.a
+/usr/lib/libicuio.so
+/usr/lib/libsicuio.a
+/usr/lib/libicudata.so
+/usr/lib/libsicudata.a
+/usr/lib/libicule.so
+/usr/lib/libsicule.a
+/usr/lib/libiculx.so
+/usr/lib/libsiculx.a
+/usr/include/unicode/*.h
+/usr/include/layout/*.h
+/usr/lib/icu/%{version}/Makefile.inc
+/usr/lib/icu/Makefile.inc
+/usr/share/icu/%{version}/config
+/usr/share/doc/icu-%{version}/*
+
+%changelog
+* Mon Jun 07 2004 Alexei Dets <adets@idsk.com>
+- update to 3.0
+* Tue Aug 16 2003 Steven Loomis <srl@jtcsv.com>
+- update to 2.6.1 - include license
+* Thu Jun 05 2003 Steven Loomis <srl@jtcsv.com>
+- Update to 2.6
+* Fri Dec 27 2002 Steven Loomis <srl@jtcsv.com>
+- Update to 2.4 spec
+* Fri Sep 27 2002 Steven Loomis <srl@jtcsv.com>
+- minor updates to 2.2 spec. Rpath is off by default, don't pass it as an option.
+* Mon Sep 16 2002 Ian Holsman <ian@holsman.net> 
+- update to icu 2.2
+
diff --git a/readme.html b/readme.html
new file mode 100644
index 0000000..3d4ae11
--- /dev/null
+++ b/readme.html
@@ -0,0 +1,1742 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+
+<html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
+  <head>
+
+    <title>ReadMe for ICU</title>
+    <meta name="COPYRIGHT" content=
+    "Copyright (c) 1997-2009 IBM Corporation and others. All Rights Reserved." />
+    <meta name="KEYWORDS" content=
+    "ICU; International Components for Unicode; ICU4C; what's new; readme; read me; introduction; downloads; downloading; building; installation;" />
+    <meta name="DESCRIPTION" content=
+    "The introduction to the International Components for Unicode with instructions on building, installation, usage and other information about ICU." />
+    <meta http-equiv="Content-Type" content="text/html; charset=us-ascii" />
+<style type="text/css">
+/*<![CDATA[*/
+    h1 {border-width: 2px; border-style: solid; text-align: center; width: 100%; font-size: 200%; font-weight: bold}
+    h2 {margin-top: 2em; text-decoration: underline; page-break-before: always}
+    h2.TOC {page-break-before: auto}
+    h3 {margin-top: 2em; text-decoration: underline}
+    h4 {text-decoration: underline}
+    h5 {text-decoration: underline}
+    caption {font-weight: bold; text-align: left}
+    div.indent {margin-left: 2em}
+    ul.TOC {list-style-type: none}
+    samp {margin-left: 1em; border-style: groove; padding: 1em; display: block; background-color: #EEEEEE}
+/*]]>*/
+</style>
+  </head>
+
+  <body>
+    <h1>International Components for Unicode<br />
+     <abbr title="International Components for Unicode">ICU</abbr> 4.2 ReadMe</h1>
+
+    <p>Version: 2009 February 19th<br />
+     Copyright &copy; 1997-2009 International Business Machines Corporation and
+    others. All Rights Reserved.</p>
+    <!-- Remember that there is a copyright at the end too -->
+    <hr />
+
+    <h2 class="TOC">Table of Contents</h2>
+
+    <ul class="TOC">
+      <li><a href="#Introduction">Introduction</a></li>
+
+      <li><a href="#GettingStarted">Getting Started</a></li>
+
+      <li><a href="#News">What Is New In This release?</a></li>
+
+      <li><a href="#Download">How To Download the Source Code</a></li>
+
+      <li><a href="#SourceCode">ICU Source Code Organization</a></li>
+
+      <li>
+        <a href="#HowToBuild">How To Build And Install ICU</a> 
+
+        <ul class="TOC">
+          <li><a href="#HowToBuildSupported">Supported Platforms</a></li>
+
+          <li><a href="#HowToBuildWindows">Windows</a></li>
+
+          <li><a href="#HowToBuildCygwin">Cygwin</a></li>
+
+          <li><a href="#HowToBuildUNIX">UNIX</a></li>
+
+          <li><a href="#HowToBuildZOS">z/OS (os/390)</a></li>
+
+          <li><a href="#HowToBuildOS400">IBM i family (IBM i, i5/OS, OS/400)</a></li>
+        </ul>
+      </li>
+
+      <li><a href="#HowToPackage">How To Package ICU</a></li>
+
+      <li>
+        <a href="#ImportantNotes">Important Notes About Using ICU</a> 
+
+        <ul class="TOC">
+          <li><a href="#ImportantNotesMultithreaded">Using ICU in a Multithreaded
+          Environment</a></li>
+
+          <li><a href="#ImportantNotesWindows">Windows Platform</a></li>
+
+          <li><a href="#ImportantNotesUNIX">UNIX Type Platforms</a></li>
+        </ul>
+      </li>
+
+      <li>
+        <a href="#PlatformDependencies">Platform Dependencies</a> 
+
+        <ul class="TOC">
+          <li><a href="#PlatformDependenciesNew">Porting To A New
+          Platform</a></li>
+
+          <li><a href="#PlatformDependenciesImpl">Platform Dependent
+          Implementations</a></li>
+        </ul>
+      </li>
+    </ul>
+    <hr />
+
+    <h2><a name="Introduction" href="#Introduction" id=
+    "Introduction">Introduction</a></h2>
+
+    <p>Today's software market is a global one in which it is desirable to
+    develop and maintain one application (single source/single binary) that
+    supports a wide variety of languages. The International Components for
+    Unicode (ICU) libraries provide robust and full-featured Unicode services on
+    a wide variety of platforms to help this design goal. The ICU libraries
+    provide support for:</p>
+
+    <ul>
+      <li>The latest version of the Unicode standard</li>
+
+      <li>Character set conversions with support for over 220 codepages</li>
+
+      <li>Locale data for more than 250 locales</li>
+
+      <li>Language sensitive text collation (sorting) and searching based on the
+      Unicode Collation Algorithm (=ISO 14651)</li>
+
+      <li>Regular expression matching and Unicode sets</li>
+
+      <li>Transformations for normalization, upper/lowercase, script
+      transliterations (50+ pairs)</li>
+
+      <li>Resource bundles for storing and accessing localized information</li>
+
+      <li>Date/Number/Message formatting and parsing of culture specific
+      input/output formats</li>
+
+      <li>Calendar specific date and time manipulation</li>
+
+      <li>Complex text layout for Arabic, Hebrew, Indic and Thai</li>
+
+      <li>Text boundary analysis for finding characters, word and sentence
+      boundaries</li>
+    </ul>
+
+    <p>ICU has a sister project ICU4J that extends the internationalization
+    capabilities of Java to a level similar to ICU. The ICU C/C++ project is also
+    called ICU4C when a distinction is necessary.</p>
+
+    <h2><a name="GettingStarted" href="#GettingStarted" id=
+    "GettingStarted">Getting started</a></h2>
+
+    <p>This document describes how to build and install ICU on your machine. For
+    other information about ICU please see the following table of links.<br />
+     The ICU homepage also links to related information about writing
+    internationalized software.</p>
+
+    <table border="1" cellpadding="3" width="100%" summary=
+    "These are some useful links regarding ICU and internationalization in general.">
+      <caption>
+        Here are some useful links regarding ICU and internationalization in
+        general.
+      </caption>
+
+      <tr>
+        <td>ICU, ICU4C &amp; ICU4J Homepage</td>
+
+        <td><a href=
+        "http://www.icu-project.org/">http://www.icu-project.org/</a></td>
+      </tr>
+
+      <tr>
+        <td>FAQ - Frequently Asked Questions about ICU</td>
+
+        <td><a href=
+        "http://www.icu-project.org/userguide/icufaq.html">http://www.icu-project.org/userguide/icufaq.html</a></td>
+      </tr>
+
+      <tr>
+        <td>ICU User's Guide</td>
+
+        <td><a href=
+        "http://www.icu-project.org/userguide/">http://www.icu-project.org/userguide/</a></td>
+      </tr>
+
+      <tr>
+        <td>Download ICU Releases</td>
+
+        <td><a href=
+        "http://www.icu-project.org/download/">http://www.icu-project.org/download/</a></td>
+      </tr>
+
+      <tr>
+        <td>ICU4C API Documentation Online</td>
+
+        <td><a href=
+        "http://www.icu-project.org/apiref/icu4c/">http://www.icu-project.org/apiref/icu4c/</a></td>
+      </tr>
+
+      <tr>
+        <td>Online ICU Demos</td>
+
+        <td><a href=
+        "http://demo.icu-project.org/icu-bin/icudemos">http://demo.icu-project.org/icu-bin/icudemos</a></td>
+      </tr>
+
+      <tr>
+        <td>Contacts and Bug Reports/Feature Requests</td>
+
+        <td><a href=
+        "http://www.icu-project.org/contacts.html">http://www.icu-project.org/contacts.html</a></td>
+      </tr>
+    </table>
+
+    <p><strong>Important:</strong> Please make sure you understand the <a href=
+    "license.html">Copyright and License Information</a>.</p>
+
+    <h2><a name="News" href="#News" id="News">What is new in this
+    release?</a></h2>
+
+    <p>To see which APIs are new or changed in this release, view the <a href="APIChangeReport.html">ICU4C API Change Report</a>. </p>
+
+
+    <p><!-- The following list concentrates on <em>changes that affect existing
+    applications migrating from previous ICU releases</em>. --> For more news about
+    this release, see the <a href="http://www.icu-project.org/download/">ICU 4.2
+    download page</a>.</p>
+
+    <h3>u_strToUTF32() and u_strFromUTF32() validate input UTF strings</h3>
+    <p>
+      Before ICU 4.2, the ustring.h functions u_strToUTF32() and u_strFromUTF32()
+      were not fully validating their input strings.
+      In particular, u_strToUTF32() passed unpaired surrogates through as
+      surrogate code points, and u_strFromUTF32() accepted surrogate code points
+      and passed them through as unpaired surrogates
+      (which may by chance end up in a pair,
+      indistinguishable from a supplementary code point).
+      This is inconsistent with the function names,
+      with the use of "UTF-16" and "UTF-32" in the documentation,
+      and with their sibling UTF-8 functions which do validate fully.
+    </p>
+
+    <p>
+      ICU 4.2 changes the u_strToUTF32() and u_strFromUTF32() implementations
+      to treat malformed UTF input as an error.
+      The API documentation has been clarified.
+    </p>
+
+    <p>
+      Background: The implementation of these functions predates
+      Unicode's tightening of the UTF specifications.
+      We adapted the UTF-8 ustring.h functions and the ucnv_ converter functions
+      but not these UTF-32 ustring.h functions.
+      See the Unicode Standard chapter 3
+      <a href="http://www.unicode.org/versions/Unicode5.0.0/ch03.pdf#G7404">section 3.9 Unicode Encoding Forms</a>
+      for details, in particular definitions D79 Unicode encoding form
+      and D80 Unicode string.
+    </p>
+
+    <h2><a name="Download" href="#Download" id="Download">How To Download the
+    Source Code</a></h2>
+
+    <p>There are two ways to download ICU releases:</p>
+
+    <ul>
+      <li><strong>Official Release Snapshot:</strong><br />
+       If you want to use ICU (as opposed to developing it), you should download
+      an official packaged version of the ICU source code. These versions are
+      tested more thoroughly than day-to-day development builds of the system,
+      and they are packaged in zip and tar files for convenient download. These
+      packaged files can be found at <a href=
+      "http://www.icu-project.org/download/">http://www.icu-project.org/download/</a>.<br />
+       The packaged snapshots are named <strong>icu-nnnn.zip</strong> or
+      <strong>icu-nnnn.tgz</strong>, where nnnn is the version number. The .zip
+      file is used for Windows platforms, while the .tgz file is preferred on
+      most other platforms.<br />
+       Please unzip this file. </li>
+
+      <li><strong>Subversion Source Repository:</strong><br />
+       If you are interested in developing features, patches, or bug fixes for
+      ICU, you should probably be working with the latest version of the ICU
+      source code. You will need to check the code out of our Subversion repository to
+      ensure that you have the most recent version of all of the files. See our
+      <a href="http://www.icu-project.org/repository/">source
+      repository</a> for details.</li>
+    </ul>
+
+    <h2><a name="SourceCode" href="#SourceCode" id="SourceCode">ICU Source Code
+    Organization</a></h2>
+
+    <p>In the descriptions below, <strong><i>&lt;ICU&gt;</i></strong> is the full
+    path name of the ICU directory (the top level directory from the distribution
+    archives) in your file system. You can also view the <a href=
+    "http://www.icu-project.org/userguide/design.html">ICU Architectural
+    Design</a> section of the User's Guide to see which libraries you need for
+    your software product. You need at least the data (<code>[lib]icudt</code>)
+    and the common (<code>[lib]icuuc</code>) libraries in order to use ICU.</p>
+
+    <table border="1" cellpadding="0" width="100%" summary=
+    "The following files describe the code drop.">
+      <caption>
+        The following files describe the code drop.
+      </caption>
+
+      <tr>
+        <th scope="col">File</th>
+
+        <th scope="col">Description</th>
+      </tr>
+
+      <tr>
+        <td>readme.html</td>
+
+        <td>Describes the International Components for Unicode (this file)</td>
+      </tr>
+
+      <tr>
+        <td>license.html</td>
+
+        <td>Contains the text of the ICU license</td>
+      </tr>
+    </table>
+
+    <p><br />
+    </p>
+
+    <table border="1" cellpadding="0" width="100%" summary=
+    "The following directories contain source code and data files.">
+      <caption>
+        The following directories contain source code and data files.
+      </caption>
+
+      <tr>
+        <th scope="col">Directory</th>
+
+        <th scope="col">Description</th>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>common</b>/</td>
+
+        <td>The core Unicode and support functionality, such as resource bundles,
+        character properties, locales, codepage conversion, normalization,
+        Unicode properties, Locale, and UnicodeString.</td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>i18n</b>/</td>
+
+        <td>Modules in i18n are generally the more data-driven, that is to say
+        resource bundle driven, components. These deal with higher-level
+        internationalization issues such as formatting, collation, text break
+        analysis, and transliteration.</td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>layout</b>/</td>
+
+        <td>Contains the ICU layout engine (not a rasterizer).</td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>io</b>/</td>
+
+        <td>Contains the ICU I/O library.</td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>data</b>/</td>
+
+        <td>
+          <p>This directory contains the source data in text format, which is
+          compiled into binary form during the ICU build process. It contains
+          several subdirectories, in which the data files are grouped by
+          function. Note that the build process must be run again after any
+          changes are made to this directory.</p>
+
+          <p>If some of the following directories are missing, it's probably
+          because you got an official download. If you need the data source files
+          for customization, then please download the ICU source code from <a
+          href="http://www.icu-project.org/repository/">subversion</a>.</p>
+
+          <ul>
+            <li><b>in/</b> A directory that contains a pre-built data library for
+            ICU. A standard source code package will contain this file without
+            several of the following directories. This is to simplify the build
+            process for the majority of users and to reduce platform porting
+            issues.</li>
+
+            <li><b>brkitr/</b> Data files for character, word, sentence, title
+            casing and line boundary analysis.</li>
+
+            <li><b>locales/</b> These .txt files contain ICU language and
+            culture-specific localization data. Two special bundles are
+            <b>root</b>, which is the fallback data and parent of other bundles,
+            and <b>index</b>, which contains a list of installed bundles. The
+            makefile <b>resfiles.mk</b> contains the list of resource bundle
+            files.</li>
+
+            <li><b>mappings/</b> Here are the code page converter tables. These
+            .ucm files contain mappings to and from Unicode. These are compiled
+            into .cnv files. <b>convrtrs.txt</b> is the alias mapping table from
+            various converter name formats to ICU internal format and vice versa.
+            It produces cnvalias.icu. The makefiles <b>ucmfiles.mk,
+            ucmcore.mk,</b> and <b>ucmebcdic.mk</b> contain the list of
+            converters to be built.</li>
+
+            <li><b>translit/</b> This directory contains transliterator rules as
+            resource bundles, a makefile <b>trnsfiles.mk</b> containing the list
+            of installed system translitaration files, and as well the special
+            bundle <b>translit_index</b> which lists the system transliterator
+            aliases.</li>
+
+            <li><b>unidata/</b> This directory contains the Unicode data files.
+            Please see <a href=
+            "http://www.unicode.org/">http://www.unicode.org/</a> for more
+            information.</li>
+
+            <li><b>misc/</b> The misc directory contains other data files which
+            did not fit into the above categories. Currently it only contains
+            time zone information, and a name preperation file for <a href=
+            "http://www.ietf.org/rfc/rfc3490.txt">IDNA</a>.</li>
+
+            <li><b>out/</b> This directory contains the assembled memory mapped
+            files.</li>
+
+            <li><b>out/build/</b> This directory contains intermediate (compiled)
+            files, such as .cnv, .res, etc.</li>
+          </ul>
+
+          <p>If you are creating a special ICU build, you can set the ICU_DATA
+          environment variable to the out/ or the out/build/ directories, but
+          this is generally discouraged because most people set it incorrectly.
+          You can view the <a href=
+          "http://www.icu-project.org/userguide/icudata.html">ICU Data
+          Management</a> section of the ICU User's Guide for details.</p>
+        </td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/test/<b>intltest</b>/</td>
+
+        <td>A test suite including all C++ APIs. For information about running
+        the test suite, see the build instructions specific to your platform
+        later in this document.</td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/test/<b>cintltst</b>/</td>
+
+        <td>A test suite written in C, including all C APIs. For information
+        about running the test suite, see the build instructions specific to your
+        platform later in this document.</td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/test/<b>iotest</b>/</td>
+
+        <td>A test suite written in C and C++ to test the icuio library. For
+        information about running the test suite, see the build instructions
+        specific to your platform later in this document.</td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/test/<b>testdata</b>/</td>
+
+        <td>Source text files for data, which are read by the tests. It contains
+        the subdirectories <b>out/build/</b> which is used for intermediate
+        files, and <b>out/</b> which contains <b>testdata.dat.</b></td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>tools</b>/</td>
+
+        <td>Tools for generating the data files. Data files are generated by
+        invoking <i>&lt;ICU&gt;</i>/source/data/build/makedata.bat on Win32 or
+        <i>&lt;ICU&gt;</i>/source/make on UNIX.</td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>samples</b>/</td>
+
+        <td>Various sample programs that use ICU</td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>extra</b>/</td>
+
+        <td>Non-supported API additions. Currently, it contains the 'uconv' tool
+        to perform codepage conversion on files.</td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/<b>packaging</b>/</td>
+
+        <td>This directory contain scripts and tools for packaging the final
+        ICU build for various release platforms.</td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>config</b>/</td>
+
+        <td>Contains helper makefiles for platform specific build commands. Used
+        by 'configure'.</td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/source/<b>allinone</b>/</td>
+
+        <td>Contains top-level ICU workspace and project files, for instance to
+        build all of ICU under one MSVC project.</td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/<b>include</b>/</td>
+
+        <td>Contains the headers needed for developing software that uses ICU on
+        Windows.</td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/<b>lib</b>/</td>
+
+        <td>Contains the import libraries for linking ICU into your Windows
+        application.</td>
+      </tr>
+
+      <tr>
+        <td><i>&lt;ICU&gt;</i>/<b>bin</b>/</td>
+
+        <td>Contains the libraries and executables for using ICU on Windows.</td>
+      </tr>
+    </table>
+    <!-- end of ICU structure ==================================== -->
+
+    <h2><a name="HowToBuild" href="#HowToBuild" id="HowToBuild">How To Build And
+    Install ICU</a></h2>
+
+    <h3><a name="HowToBuildSupported" href="#HowToBuildSupported" id=
+    "HowToBuildSupported">Supported Platforms</a></h3>
+
+    <table border="1" cellpadding="3" summary=
+    "ICU can be built on many platforms.">
+      <caption>
+        Here is a status of functionality of ICU on several different platforms.
+      </caption>
+
+      <tr>
+        <th scope="col">Operating system</th>
+
+        <th scope="col">Compiler</th>
+
+        <th scope="col">Testing frequency</th>
+      </tr>
+
+      <tr>
+        <td>Windows Vista SP1 (32 bit)</td>
+
+        <td>Microsoft Visual C++ 2005 (8.0)</td>
+
+        <td>Reference platform</td>
+      </tr>
+      <tr>
+        <td>Windows Server 2003 (64 bit)</td>
+
+        <td>Microsoft Visual C++ 2005 (8.0)</td>
+
+        <td>Reference platform</td>
+      </tr>
+
+      <tr>
+        <td>Red Hat Enterprise Linux 5 (x86, 32 bit)</td>
+
+        <td>gcc 4.1.2</td>
+
+        <td>Reference platform</td>
+      </tr>
+
+      <tr>
+        <td>AIX 6.1 (Power, 64-bit)</td>
+
+        <td>IBM VisualAge 9</td>
+
+        <td>Reference platform</td>
+      </tr>
+
+      <tr>
+        <td>Solaris 10 (Sparc, 32-bit, SunOS 5.10)</td>
+
+        <td>Sun Studio 12 <!--(Sun C++ 5.8)--></td>
+
+        <td>Reference platform</td>
+      </tr>
+
+      <tr>
+        <td>HP-UX IIiv3 (Itanium, 64-bit)</td>
+
+        <td>aCC A.6.14</td>
+
+        <td>Reference platform</td>
+      </tr>
+      <tr>
+        <td>AIX 5.3</td>
+
+        <td>IBM XL C/C++ 8.0</td>
+
+        <td>Regularly tested</td>
+      </tr>
+      <tr>
+        <td>Windows XP</td>
+
+        <td>Microsoft Visual C++ 2005 (8.0)</td>
+
+        <td>Regularly tested</td>
+      </tr>
+
+      <tr>
+        <td>Red Hat Enterprise Linux 4 Update 4</td>
+
+        <td>gcc 3.4.4</td>
+
+        <td>Regularly tested</td>
+      </tr>
+
+      <tr>
+        <td>AIX 5.2</td>
+
+        <td>Visual Age C++ 6.0</td>
+
+        <td>Regularly tested</td>
+      </tr>
+
+      <tr>
+        <td>Solaris 9 (SunOS 5.9)</td>
+
+        <td>Sun Studio 8 (Sun C++ 5.5)</td>
+
+        <td>Regularly tested</td>
+      </tr>
+
+      <tr>
+        <td>HP-UX 11.11 (PA-RISC)</td>
+
+        <td>aCC A.03.50<br />
+         cc B.11.11.08</td>
+
+        <td>Regularly tested</td>
+      </tr>
+
+      <tr>
+        <td>Windows 2000 with Cygwin</td>
+
+        <td>Microsoft Visual C++ 2003 (7.1)</td>
+
+        <td>Regularly tested</td>
+      </tr>
+
+      <tr>
+        <td>Windows Server 2008 x64</td>
+
+        <td>Microsoft Visual C++ 2005 (8.0)</td>
+
+        <td>Regularly tested</td>
+      </tr>
+
+      <tr>
+        <td>Mac OS X (10.4)</td>
+
+        <td>gcc 4.0.1</td>
+
+        <td>Regularly tested</td>
+      </tr>
+
+      <tr>
+        <td>Solaris 10</td>
+
+        <td>gcc 4.0.3</td>
+
+        <td>Regularly tested</td>
+      </tr>
+
+      <tr>
+        <td>SUSE Linux Enterprise Server 9 SP1</td>
+
+        <td>Intel C++ Compiler 9.0</td>
+
+        <td>Regularly tested</td>
+      </tr>
+
+      <tr>
+        <td>z/OS 1.7</td>
+
+        <td>cxx 1.7</td>
+
+        <td>Rarely tested</td>
+      </tr>
+
+      <tr>
+        <td>Cygwin</td>
+
+        <td>gcc 3.4.4</td>
+
+        <td>Rarely tested</td>
+      </tr>
+
+      <tr>
+        <td>IBM i family (IBM i, i5/OS, OS/400)</td>
+
+        <td>iCC</td>
+
+        <td>Rarely tested</td>
+      </tr>
+
+      <tr>
+        <td>Windows Vista x64</td>
+
+        <td>Microsoft Visual C++ 2005 (8.0)</td>
+
+        <td>Rarely tested</td>
+      </tr>
+
+      <tr>
+        <td>MinGW</td>
+
+        <td>gcc</td>
+
+        <td>Rarely tested</td>
+      </tr>
+
+      <tr>
+        <td>NetBSD, OpenBSD, FreeBSD</td>
+
+        <td>gcc</td>
+
+        <td>Rarely tested</td>
+      </tr>
+
+      <tr>
+        <td>SUSE Linux Enterprise Server 9 (PowerPC)</td>
+
+        <td>IBM XL C/C++ 8.0</td>
+
+        <td>Rarely tested</td>
+      </tr>
+
+      <tr>
+        <td>QNX</td>
+
+        <td>gcc</td>
+
+        <td>Rarely tested</td>
+      </tr>
+
+      <tr>
+        <td>BeOS</td>
+
+        <td>gcc</td>
+
+        <td>Rarely tested</td>
+      </tr>
+
+      <tr>
+        <td>SGI/IRIX</td>
+
+        <td>MIPSpro CC</td>
+
+        <td>Rarely tested</td>
+      </tr>
+
+      <tr>
+        <td>Tru64 (OSF)</td>
+
+        <td>Compaq's cxx compiler</td>
+
+        <td>Rarely tested</td>
+      </tr>
+
+      <tr>
+        <td>MP-RAS</td>
+
+        <td>NCR MP-RAS C/C++ Compiler</td>
+
+        <td>Rarely tested</td>
+      </tr>
+    </table>
+
+    <p><br />
+    </p>
+
+    <h4>Key to testing frequency</h4>
+
+    <dl>
+      <dt><i>Reference platform</i></dt>
+
+      <dd>ICU will work on these platforms with these compilers</dd>
+
+      <dt><i>Regularly tested</i></dt>
+
+      <dd>ICU should work on these platforms with these compilers</dd>
+
+      <dt><i>Rarely tested</i></dt>
+
+      <dd>ICU has been ported to these platforms but may not have been tested
+      there recently</dd>
+    </dl>
+
+    <h3><a name="HowToBuildWindows" href="#HowToBuildWindows" id=
+    "HowToBuildWindows">How To Build And Install On Windows</a></h3>
+
+    <p>Building International Components for Unicode requires:</p>
+
+    <ul>
+      <li>Microsoft Windows 2000 or above</li>
+
+      <li>Microsoft Visual C++ 2005</li>
+
+      <li><a href="#HowToBuildCygwin">Cygwin</a> is required when other versions
+      of Microsoft Visual C++ and other compilers are used to build ICU.</li>
+    </ul>
+
+    <p>The steps are:</p>
+
+    <ol>
+      <li>Unzip the icu-XXXX.zip file into any convenient location. Using command
+      line zip, type "unzip -a icu-XXXX.zip -d drive:\directory", or just use
+      WinZip.</li>
+
+      <li>Be sure that the ICU binary directory, <i>&lt;ICU&gt;</i>\bin\, is
+      included in the <strong>PATH</strong> environment variable. The tests will
+      not work without the location of the ICU DLL files in the path.</li>
+
+      <li>Open the "<i>&lt;ICU&gt;</i>\source\allinone\allinone.sln" workspace
+      file in Microsoft Visual Studio 2003. (This solution includes all the
+      International Components for Unicode libraries, necessary ICU building
+      tools, and the test suite projects). Please see the <a href=
+      "#HowToBuildWindowsCommandLine">command line note below</a> if you want to
+      build from the command line instead.</li>
+
+      <li>Set the active platform to "Win32" or "x64" (See <a href="#HowToBuildWindowsPlatform">Windows platform note</a> below) 
+      and configuration to "Debug" or "Release" (See <a href="#HowToBuildWindowsConfig">Windows configuration note</a> below).</li>
+
+      <li>Choose the "Build" menu and select "Rebuild Solution". If you want to
+      build the Debug and Release at the same time, see the <a href=
+      "#HowToBuildWindowsBatch">batch configuration note</a> below.</li>
+
+      <li>Run the C++ test suite, "intltest". To do this: set the active startup
+      project to "intltest", and press Ctrl+F5 to run it. Make sure that it
+      passes without any errors.</li>
+
+      <li>Run the C test suite, "cintltst". To do this: set the active startup
+      project to "cintltst", and press Ctrl+F5 to run it. Make sure that it
+      passes without any errors.</li>
+
+      <li>Run the I/O test suite, "iotest". To do this: set the active startup
+      project to "iotest", and press Ctrl+F5 to run it. Make sure that it passes
+      without any errors.</li>
+
+      <li>You are now able to develop applications with ICU by using the
+      libraries and tools in <i>&lt;ICU&gt;</i>\bin\. The headers are in
+      <i>&lt;ICU&gt;</i>\include\ and the link libraries are in
+      <i>&lt;ICU&gt;</i>\lib\. To install the ICU runtime on a machine, or ship
+      it with your application, copy the needed components from
+      <i>&lt;ICU&gt;</i>\bin\ to a location on the system PATH or to your
+      application directory.</li>
+    </ol>
+
+    <p><a name="HowToBuildWindowsCommandLine" id=
+    "HowToBuildWindowsCommandLine"><strong>Using MSDEV At The Command Line
+    Note:</strong></a> You can build ICU from the command line. Assuming that you
+    have properly installed Microsoft Visual C++ to support command line
+    execution, you can run the following command, 'devenv.com
+    <i>&lt;ICU&gt;</i>\source\allinone\allinone.sln /build "Win32|Release"'. You can also
+    use Cygwin with this compiler to build ICU, and you can refer to the <a href=
+    "#HowToBuildCygwin">How To Build And Install On Windows with Cygwin</a>
+    section for more details.</p>
+    
+    <p><a name="HowToBuildWindowsPlatform" id=
+    "HowToBuildWindowsPlatform"><strong>Setting Active Platform
+    Note:</strong></a> Even though you are able to select "x64" as the active platform, if your operating system is 
+    not a 64 bit version of Windows, the build will fail. To set the active platform, two different possibilities are:</p>
+
+    <ul>
+      <li>Choose "Build" menu, select "Configuration Manager...", and select
+      "Win32" or "x64" for the Active Platform Solution.</li>
+
+      <li>Another way is to select the desired build configuration from "Solution
+      Platforms" dropdown menu from the standard toolbar. It will say
+      "Win32" or "x64" in the dropdown list.</li>
+    </ul>
+
+    <p><a name="HowToBuildWindowsConfig" id=
+    "HowToBuildWindowsConfig"><strong>Setting Active Configuration
+    Note:</strong></a> To set the active configuration, two different
+    possibilities are:</p>
+
+    <ul>
+      <li>Choose "Build" menu, select "Configuration Manager...", and select
+      "Release" or "Debug" for the Active Configuration Solution.</li>
+
+      <li>Another way is to select the desired build configuration from "Solution
+      Configurations" dropdown menu from the standard toolbar. It will say
+      "Release" or "Debug" in the dropdown list.</li>
+    </ul>
+
+    <p><a name="HowToBuildWindowsBatch" id="HowToBuildWindowsBatch"><strong>Batch
+    Configuration Note:</strong></a> If you want to build the Win32 and x64 platforms and 
+    Debug and Release configurations at the same time, choose "Build" menu, and select "Batch
+    Build...". Click the "Select All" button, and then click the "Rebuild"
+    button.</p>
+
+    <h3><a name="HowToBuildCygwin" href="#HowToBuildCygwin" id=
+    "HowToBuildCygwin">How To Build And Install On Windows with Cygwin</a></h3>
+
+    <p>Building International Components for Unicode with this configuration
+    requires:</p>
+
+    <ul>
+      <li>Microsoft 2000 or above</li>
+
+      <li>Microsoft Visual C++ 2003 or above (when gcc isn't used).</li>
+
+      <li>
+        Cygwin with the following installed: 
+
+        <ul>
+          <li>bash</li>
+
+          <li>GNU make</li>
+
+          <li>man (if you plan to look at the man pages)</li>
+        </ul>
+      </li>
+    </ul>
+
+    <p>There are two ways you can build ICU with Cygwin. You can build with gcc
+    or Microsoft Visual C++. If you use gcc, the resulting libraries and tools
+    will depend on the Cygwin environment. If you use Microsoft Visual C++, the
+    resulting libraries and tools do not depend on Cygwin and can be more easily
+    distributed to other Windows computers (the generated man pages and shell
+    scripts still need Cygwin). To build with gcc, please follow the "<a href=
+    "#HowToBuildUNIX">How To Build And Install On UNIX</a>" instructions, while
+    you are inside a Cygwin bash shell. To build with Microsoft Visual C++,
+    please use the following instructions:</p>
+
+    <ol>
+      <li>Start the Windows "Command Prompt" window. This is different from the
+      gcc build, which requires the Cygwin Bash command prompt. The Microsoft
+      Visual C++ compiler will not work with a bash command prompt.</li>
+
+      <li>If the computer isn't set up to use Visual C++ from the command line,
+      you need to run vcvars32.bat. For example "<tt>C:\Program Files\Microsoft
+      Visual Studio 8\VC\bin\vcvars32.bat</tt>" can be used for 32-bit builds
+      <strong>or</strong> "<tt>C:\Program Files (x86)\Microsoft Visual Studio
+      8\VC\bin\amd64\vcvarsamd64.bat</tt>" can be used for 64-bit builds on
+      Windows x64.</li>
+
+      <li>Unzip the icu-XXXX.zip file into any convenient location. Using command
+      line zip, type "unzip -a icu-XXXX.zip -d drive:\directory", or just use
+      WinZip.</li>
+
+      <li>Change directory to "icu/source", which is where you unzipped ICU.</li>
+
+      <li>Run "<tt>bash <a href="source/runConfigureICU">./runConfigureICU</a>
+      Cygwin/MSVC</tt>" (See <a href="#HowToWindowsConfigureICU">Windows
+      configuration note</a> and non-functional configure options below).</li>
+
+      <li>Type <tt>"make"</tt> to compile the libraries and all the data files.
+      This make command should be GNU make.</li>
+
+      <li>Optionally, type <tt>"make check"</tt> to run the test suite, which
+      checks for ICU's functionality integrity (See <a href=
+      "#HowToTestWithoutGmake">testing note</a> below).</li>
+
+      <li>Type <tt>"make install"</tt> to install ICU. If you used the --prefix=
+      option on configure or runConfigureICU, ICU will be installed to the
+      directory you specified. (See <a href="#HowToInstallICU">installation
+      note</a> below).</li>
+    </ol>
+
+    <p><a name="HowToWindowsConfigureICU" id=
+    "HowToWindowsConfigureICU"><strong>Configuring ICU on Windows
+    NOTE:</strong></a> In addition to the Unix <a href=
+    "#HowToConfigureICU">configuration note</a> the following configure options
+    currently do not work on Windows with Microsoft's compiler. Some options can
+    work by manually editing <tt>icu/source/common/unicode/pwin32.h</tt>, but
+    manually editing the files is not recommended.</p>
+
+    <ul>
+      <li><tt>--disable-renaming</tt></li>
+
+      <li><tt>--disable-threading</tt></li>
+
+      <li><tt>--enable-tracing</tt></li>
+
+      <li><tt>--enable-rpath</tt></li>
+
+      <li><tt>--with-iostream</tt></li>
+
+      <li><tt>--enable-static</tt> (Requires that U_STATIC_IMPLEMENTATION be
+      defined in user code that links against ICU's static libraries.)</li>
+
+      <li><tt>--with-data-packaging=files</tt> (The pkgdata tool currently does
+      not work in this mode. Manual packaging is required to use this mode.)</li>
+    </ul>
+
+    <h3><a name="HowToBuildUNIX" href="#HowToBuildUNIX" id="HowToBuildUNIX">How
+    To Build And Install On UNIX</a></h3>
+
+    <p>Building International Components for Unicode on UNIX requires:</p>
+
+    <ul>
+      <li>A C++ compiler installed on the target machine (for example: gcc, CC,
+      xlC_r, aCC, cxx, etc...).</li>
+
+      <li>An ANSI C compiler installed on the target machine (for example:
+      cc).</li>
+
+      <li>A recent version of GNU make (3.80+).</li>
+
+      <li>For a list of z/OS tools please view the <a href="#HowToBuildZOS">z/OS
+      build section</a> of this document for further details.</li>
+    </ul>
+
+    <p>Here are the steps to build ICU:</p>
+
+    <ol>
+      <li>Decompress the icu-<i>X</i>.<i>Y</i>.tgz (or
+      icu-<i>X</i>.<i>Y</i>.tar.gz) file. For example, <tt>"gunzip -d &lt;
+      icu-<i>X</i>.<i>Y</i>.tgz | tar xvf -"</tt></li>
+
+      <li>Change directory to the "icu/source".</li>
+
+      <li>Run <tt>"chmod +x runConfigureICU configure install-sh"</tt> because
+      these files may have the wrong permissions.</li>
+
+      <li>Run the <tt><a href="source/runConfigureICU">runConfigureICU</a></tt>
+      script for your platform. (See <a href="#HowToConfigureICU">configuration
+      note</a> below).</li>
+
+      <li>Type <tt>"gmake"</tt> (or "make" if GNU make is the default make on
+      your platform) to compile the libraries and all the data files. The proper
+      name of the GNU make command is printed at the end of the configuration
+      run, as in "You must use gmake to compile ICU".</li>
+
+      <li>Optionally, type <tt>"gmake check"</tt> to run the test suite, which
+      checks for ICU's functionality integrity (See <a href=
+      "#HowToTestWithoutGmake">testing note</a> below).</li>
+
+      <li>Type <tt>"gmake install"</tt> to install ICU. If you used the --prefix=
+      option on configure or runConfigureICU, ICU will be installed to the
+      directory you specified. (See <a href="#HowToInstallICU">installation
+      note</a> below).</li>
+    </ol>
+
+    <p><a name="HowToConfigureICU" id="HowToConfigureICU"><strong>Configuring ICU
+    NOTE:</strong></a> Type <tt>"./runConfigureICU --help"</tt> for help on how
+    to run it and a list of supported platforms. You may also want to type
+    <tt>"./configure --help"</tt> to print the available configure options that
+    you may want to give runConfigureICU. If you are not using the
+    runConfigureICU script, or your platform is not supported by the script, you
+    may need to set your CC, CXX, CFLAGS and CXXFLAGS environment variables, and
+    type <tt>"./configure"</tt>. Some of the more frequently used options to
+    configure are --disable-64bit-libs to create 32-bit libraries, and --srcdir
+    to do out of source builds (build the libraries in the current location).
+    HP-UX user's, please see this <a href="#ImportantNotesHPUX">note regarding
+    HP-UX multithreaded build issues</a> with newer compilers. Solaris users,
+    please see this <a href="#ImportantNotesSolaris">note regarding Solaris
+    multithreaded build issues</a>.</p>
+
+    <p>ICU is built with strict compiler warnings enabled by default.  If this
+    causes excessive numbers of warnings on your platform, use the --disable-strict
+    option to configure to reduce the warning level.</p>
+
+    <p><a name="HowToTestWithoutGmake" id="HowToTestWithoutGmake"><strong>Running
+    The Tests From The Command Line NOTE:</strong></a> You may have to set
+    certain variables if you with to run test programs individually, that is
+    apart from "gmake check". The environment variable <strong>ICU_DATA</strong>
+    can be set to the full pathname of the data directory to indicate where the
+    locale data files and conversion mapping tables are when you are not using
+    the shared library (e.g. by using the .dat archive or the individual data
+    files). The trailing "/" is required after the directory name (e.g.
+    "$Root/source/data/out/" will work, but the value "$Root/source/data/out" is
+    not acceptable). You do not need to set <strong>ICU_DATA</strong> if the
+    complete shared data library is in your library path.</p>
+
+    <p><a name="HowToInstallICU" id="HowToInstallICU"><strong>Installing ICU
+    NOTE:</strong></a> Some platforms use package management tools to control the
+    installation and uninstallation of files on the system, as well as the
+    integrity of the system configuration. You may want to check if ICU can be
+    packaged for your package management tools by looking into the "packaging"
+    directory. (Please note that if you are using a snapshot of ICU from Subversion, it
+    is probable that the packaging scripts or related files are not up to date
+    with the contents of ICU at this time, so use them with caution).</p>
+
+    <h3><a name="HowToBuildZOS" href="#HowToBuildZOS" id="HowToBuildZOS">How To
+    Build And Install On z/OS (OS/390)</a></h3>
+
+    <p>You can install ICU on z/OS or OS/390 (the previous name of z/OS), but IBM
+    tests only the z/OS installation. You install ICU in a z/OS UNIX system
+    services file system such as HFS or zFS. On this platform, it is important
+    that you understand a few details:</p>
+
+    <ul>
+      <li>The makedep and GNU make tools are required for building ICU. If it
+      is not already installed on your system, it is available at the <a href=
+      "http://www.ibm.com/servers/eserver/zseries/zos/unix/redbook/">z/OS UNIX -
+      Tools and Toys</a> site. The PATH environment variable should be updated to
+      contain the location of this executable prior to build. Failure to add these
+      tools to your PATH will cause ICU build failures or cause pkgdata to fail
+      to run.</li>
+
+      <li>Since USS does not support using the mmap() function over NFS, it is
+      recommended that you build ICU on a local filesystem. Once ICU has been
+      built, you should not have this problem while using ICU when the data
+      library has been built as a shared library, which is this is the default
+      setting.</li>
+
+      <li>Encoding considerations: The source code assumes that it is compiled
+      with codepage ibm-1047 (to be exact, the UNIX System Services variant of
+      it). The pax command converts all of the source code files from ASCII to
+      codepage ibm-1047 (USS) EBCDIC. However, some files are binary files and
+      must not be converted, or must be converted back to their original state.
+      You can use the <a href="as_is/os390/unpax-icu.sh">unpax-icu.sh</a> script
+      to do this for you automatically. It will unpackage the tar file and
+      convert all the necessary files for you automatically.</li>
+
+      <li>z/OS supports both native S/390 hexadecimal floating point and (with
+      OS/390 2.6 and later) IEEE 754 binary floating point. This is a compile
+      time option. Applications built with IEEE should use ICU DLLs that are
+      built with IEEE (and vice versa). The environment variable IEEE390=0 will
+      cause the z/OS version of ICU to be built without IEEE floating point
+      support and use the native hexadecimal floating point. By default ICU is
+      built with IEEE 754 support. Native floating point support is sufficient
+      for codepage conversion, resource bundle and UnicodeString operations, but
+      the Format APIs require IEEE binary floating point.</li>
+
+      <li>z/OS introduced the concept of Extra Performance Linkage (XPLINK) to
+      bring performance improvement opportunities to call-intensive C and C++
+      applications such as ICU. XPLINK is enabled on a DLL-by-DLL basis, so if
+      you are considering using XPLINK in your application that uses ICU, you
+      should consider building the XPLINK-enabled version of ICU. You need to
+      set ICU's environment variable <code>OS390_XPLINK=1</code> prior to
+      invoking the make process to produce binaries that are enabled for
+      XPLINK. The XPLINK option, which is available for z/OS 1.2 and later,
+      requires the PTF PQ69418 to build XPLINK enabled binaries.</li>
+
+      <li>Currently in ICU 3.0, there is an issue with building on z/OS without
+      XPLINK and with the C++ iostream. By default, the iostream library on z/OS
+      is XPLINK enabled. If you are not building an XPLINK enabled version of
+      ICU, you should use the <code>--with-iostream=old</code> configure option
+      when using runConfigureICU. This will prevent applications that use the
+      icuio library from crashing.</li>
+
+      <li>The rest of the instructions for building and testing ICU on z/OS with
+      UNIX System Services are the same as the <a href="#HowToBuildUNIX">How To
+      Build And Install On UNIX</a> section.</li>
+    </ul>
+
+    <h4>z/OS (Batch/PDS) support outside the UNIX system services
+    environment</h4>
+
+    <p>By default, ICU builds its libraries into the UNIX file system (HFS). In
+    addition, there is a z/OS specific environment variable (OS390BATCH) to build
+    some libraries into the z/OS native file system. This is useful, for example,
+    when your application is externalized via Job Control Language (JCL).</p>
+
+    <p>The OS390BATCH environment variable enables non-UNIX support including the
+    batch environment. When OS390BATCH is set, the libicui18n<i>XX</i>.dll,
+    libicuuc<i>XX</i>.dll, and libicudt<i>XX</i>e.dll binaries are built into
+    data sets (the native file system). Turning on OS390BATCH does not turn off
+    the normal z/OS UNIX build. This means that the z/OS UNIX (HFS) DLLs will
+    always be created.</p>
+
+    <p>Two additional environment variables indicate the names of the z/OS data
+    sets to use. The LOADMOD environment variable identifies the name of the data
+    set that contains the dynamic link libraries (DLLs) and the LOADEXP
+    environment variable identifies the name of the data set that contains the
+    side decks, which are normally the files with the .x suffix in the UNIX file
+    system.</p>
+
+    <p>A data set is roughly equivalent to a UNIX or Windows file. For most kinds
+    of data sets the operating system maintains record boundaries. UNIX and
+    Windows files are byte streams. Two kinds of data sets are PDS and PDSE. Each
+    data set of these two types contains a directory. It is like a UNIX
+    directory. Each "file" is called a "member". Each member name is limited to
+    eight bytes, normally EBCDIC.</p>
+
+    <p>Here is an example of some environment variables that you can set prior to
+    building ICU:</p>
+<pre>
+<samp>OS390BATCH=1
+LOADMOD=<i>USER</i>.ICU.LOAD
+LOADEXP=<i>USER</i>.ICU.EXP</samp>
+</pre>
+
+    <p>The PDS member names for the DLL file names are as follows:</p>
+<pre>
+<samp>IXMI<i>XX</i>IN --&gt; libicui18n<i>XX</i>.dll
+IXMI<i>XX</i>UC --&gt; libicuuc<i>XX</i>.dll
+IXMI<i>XX</i>DA --&gt; libicudt<i>XX</i>e.dll</samp>
+</pre>
+
+    <p>You should point the LOADMOD environment variable at a partitioned data
+    set extended (PDSE) and point the LOADEXP environment variable at a
+    partitioned data set (PDS). The PDSE can be allocated with the following
+    attributes:</p>
+<pre>
+<samp>Data Set Name . . . : <i>USER</i>.ICU.LOAD
+Management class. . : <i>**None**</i>
+Storage class . . . : <i>BASE</i>
+Volume serial . . . : <i>TSO007</i>
+Device type . . . . : <i>3390</i>
+Data class. . . . . : <i>LOAD</i>
+Organization  . . . : PO
+Record format . . . : U
+Record length . . . : 0
+Block size  . . . . : <i>32760</i>
+1st extent cylinders: 1
+Secondary cylinders : 5
+Data set name type  : LIBRARY</samp>
+</pre>
+
+    <p>The PDS can be allocated with the following attributes:</p>
+<pre>
+<samp>Data Set Name . . . : <i>USER</i>.ICU.EXP
+Management class. . : <i>**None**</i>
+Storage class . . . : <i>BASE</i>
+Volume serial . . . : <i>TSO007</i>
+Device type . . . . : <i>3390</i>
+Data class. . . . . : <i>**None**</i>
+Organization  . . . : PO
+Record format . . . : FB
+Record length . . . : 80
+Block size  . . . . : <i>3200</i>
+1st extent cylinders: 3
+Secondary cylinders : 3
+Data set name type  : PDS</samp>
+</pre>
+
+    <h3><a name="HowToBuildOS400" href="#HowToBuildOS400" id=
+    "HowToBuildOS400">How To Build And Install On The IBM i Family (IBM i, i5/OS OS/400)</a></h3>
+
+    <p>Before you start building ICU, ICU requires the following:</p>
+
+    <ul>
+      <li>QSHELL interpreter installed (install base option 30, operating system)
+      <!--li>QShell Utilities, PRPQ 5799-XEH (not required for V4R5)</li--></li>
+
+      <li>ILE C/C++ Compiler installed on the system
+
+      <li>The latest GNU facilities (You can get the GNU facilities 
+      from <a href=
+      "http://www.ibm.com/servers/enable/site/porting/iseries/overview/gnu_utilities.html">
+      http://www.ibm.com/servers/enable/site/porting/iseries/overview/gnu_utilities.html</a>).
+      Older versions may not work properly.</li>
+    </ul>
+
+    <p>The following describes how to setup and build ICU. For background
+    information, you should look at the <a href="#HowToBuildUNIX">UNIX build
+    instructions</a>.</p>
+
+    <ol>
+      <li>
+        Create target library. This library will be the target for the
+        resulting modules, programs and service programs. You will specify this
+        library on the OUTPUTDIR environment variable.
+<pre>
+<samp>CRTLIB LIB(<i>libraryname</i>)
+ADDENVVAR ENVVAR(OUTPUTDIR) VALUE('<i>libraryname</i>')</samp>
+</pre>
+      </li>
+
+      <li>
+      Set up the following environment variables and job characteristics in your build process
+<pre>
+<samp>ADDENVVAR ENVVAR(MAKE) VALUE('/usr/bin/gmake')
+CHGJOB CCSID(37)</samp>
+</pre>
+
+      <li>Run <tt>'QSH'</tt></li>
+
+      <li>Run gunzip on the ICU source code compressed tar archive
+      (icu-<i>X</i>.<i>Y</i>.tgz).</li>
+
+      <li>Run unpax-icu.sh on the tar file generated from the previous step.</li>
+
+      <li>Change your current directory to icu/source.</li>
+
+      <li>Run <tt>'./runConfigureICU IBMi'</tt>  (See <a href="#HowToConfigureICU">configuration
+      note</a> for details).</li></li>
+
+      <li>Run <tt>'gmake'</tt> to build ICU.</li>
+
+      <li>Run <tt>'gmake check QIBM_MULTI_THREADED=Y'</tt> to build and run the tests.
+      You can look at the <a href=
+      "http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=/apis/concept4.htm">
+      iSeries Information Center</a> for more details regarding the running of multiple threads
+      on IBM i.</li>
+    </ol>
+    <!-- end build environment -->
+
+    <h2><a name="HowToPackage" href="#HowToPackage" id="HowToPackage">How To
+    Package ICU</a></h2>
+
+    <p>There are many ways that a person can package ICU with their software
+    products. Usually only the libraries need to be considered for packaging.</p>
+
+    <p>On UNIX, you should use "<tt>gmake install</tt>" to make it easier to
+    develop and package ICU. The bin, lib and include directories are needed to
+    develop applications that use ICU. These directories will be created relative
+    to the "<tt>--prefix=</tt><i>dir</i>" configure option (See the <a href=
+    "#HowToBuildUNIX">UNIX build instructions</a>). When ICU is built on Windows,
+    a similar directory structure is built.</p>
+
+    <p>When changes have been made to the standard ICU distribution, it is
+    recommended that at least one of the following guidelines be followed for
+    special packaging.</p>
+
+    <ol>
+      <li>Add a suffix name to the library names. This can be done with the
+      --with-library-suffix configure option.</li>
+
+      <li>The installation script should install the ICU libraries into the
+      application's directory.</li>
+    </ol>
+
+    <p>Following these guidelines prevents other applications that use a standard
+    ICU distribution from conflicting with any libraries that you need. On
+    operating systems that do not have a standard C++ ABI (name mangling) for
+    compilers, it is recommended to do this special packaging anyway. More
+    details on customizing ICU are available in the <a href=
+    "http://www.icu-project.org/userguide/">User's Guide</a>. The <a href=
+    "#SourceCode">ICU Source Code Organization</a> section of this readme.html
+    gives a more complete description of the libraries.</p>
+
+    <table border="1" cellpadding="3" summary=
+    "ICU has several libraries for you to use.">
+      <caption>
+        Here is an example of libraries that are frequently packaged.
+      </caption>
+
+      <tr>
+        <th scope="col">Library Name</th>
+
+        <th scope="col">Windows Filename</th>
+
+        <th scope="col">Linux Filename</th>
+
+        <th scope="col">Comment</th>
+      </tr>
+
+      <tr>
+        <td>Data Library</td>
+
+        <td>icudt<i>XY</i>l.dll</td>
+
+        <td>libicudata.so.<i>XY</i>.<i>Z</i></td>
+
+        <td>Data required by the Common and I18n libraries. There are many ways
+        to package and <a href=
+        "http://www.icu-project.org/userguide/icudata.html">customize this
+        data</a>, but by default this is all you need.</td>
+      </tr>
+
+      <tr>
+        <td>Common Library</td>
+
+        <td>icuuc<i>XY</i>.dll</td>
+
+        <td>libicuuc.so.<i>XY</i>.<i>Z</i></td>
+
+        <td>Base library required by all other ICU libraries.</td>
+      </tr>
+
+      <tr>
+        <td>Internationalization (i18n) Library</td>
+
+        <td>icuin<i>XY</i>.dll</td>
+
+        <td>libicui18n.so.<i>XY</i>.<i>Z</i></td>
+
+        <td>A library that contains many locale based internationalization (i18n)
+        functions.</td>
+      </tr>
+
+      <tr>
+        <td>Layout Engine</td>
+
+        <td>icule<i>XY</i>.dll</td>
+
+        <td>libicule.so.<i>XY</i>.<i>Z</i></td>
+
+        <td>An optional engine for doing font layout.</td>
+      </tr>
+
+      <tr>
+        <td>Layout Extensions Engine</td>
+
+        <td>iculx<i>XY</i>.dll</td>
+
+        <td>libiculx.so.<i>XY</i>.<i>Z</i></td>
+
+        <td>An optional engine for doing font layout that uses parts of ICU.</td>
+      </tr>
+
+      <tr>
+        <td>ICU I/O (Unicode stdio) Library</td>
+
+        <td>icuio<i>XY</i>.dll</td>
+
+        <td>libicuio.so.<i>XY</i>.<i>Z</i></td>
+
+        <td>An optional library that provides a stdio like API with Unicode
+        support.</td>
+      </tr>
+
+      <tr>
+        <td>Tool Utility Library</td>
+
+        <td>icutu<i>XY</i>.dll</td>
+
+        <td>libicutu.so.<i>XY</i>.<i>Z</i></td>
+
+        <td>An internal library that contains internal APIs that are only used by
+        ICU's tools. If you do not use ICU's tools, you do not need this
+        library.</td>
+      </tr>
+    </table>
+
+    <p>Normally only the above ICU libraries need to be considered for packaging.
+    The versionless symbolic links to these libraries are only needed for easier
+    development. The <i>X</i>, <i>Y</i> and <i>Z</i> parts of the name are the
+    version numbers of ICU. For example, ICU 2.0.2 would have the name
+    libicuuc.so.20.2 for the common library. The exact format of the library
+    names can vary between platforms due to how each platform can handles library
+    versioning.</p>
+
+    <h2><a name="ImportantNotes" href="#ImportantNotes" id=
+    "ImportantNotes">Important Notes About Using ICU</a></h2>
+
+    <h3><a name="ImportantNotesMultithreaded" href="#ImportantNotesMultithreaded"
+    id="ImportantNotesMultithreaded">Using ICU in a Multithreaded
+    Environment</a></h3>
+
+    <p>Some versions of ICU require calling the <code>u_init()</code> function
+    from <code>uclean.h</code> to ensure that ICU is initialized properly. In
+    those ICU versions, <code>u_init()</code> must be called before ICU is used
+    from multiple threads. There is no harm in calling <code>u_init()</code> in a
+    single-threaded application, on a single-CPU machine, or in other cases where
+    <code>u_init()</code> is not required.</p>
+
+    <p>In addition to ensuring thread safety, <code>u_init()</code> also attempts
+    to load at least one ICU data file. Assuming that all data files are packaged
+    together (or are in the same folder in files mode), a failure code from
+    <code>u_init()</code> usually means that the data cannot be found. In this
+    case, the data may not be installed properly, or the application may have
+    failed to call <code>udata_setCommonData()</code> or
+    <code>u_setDataDirectory()</code> which specify to ICU where it can find its
+    data.</p>
+
+    <p>Since <code>u_init()</code> will load only one or two data files, it
+    cannot guarantee that all of the data that an application needs is available.
+    It cannot check for all data files because the set of files is customizable,
+    and some ICU services work without loading any data at all. An application
+    should always check for error codes when opening ICU service objects (using
+    <code>ucnv_open()</code>, <code>ucol_open()</code>, C++ constructors,
+    etc.).</p>
+
+    <h4>ICU 3.4 and later</h4>
+
+    <p>ICU 3.4 self-initializes properly for multi-threaded use. It achieves this
+    without performance penalty by hardcoding the core Unicode properties data,
+    at the cost of some flexibility. (For details see Jitterbug 4497.)</p>
+
+    <p><code>u_init()</code> can be used to check for data loading. It tries to
+    load the converter alias table (<code>cnvalias.icu</code>).</p>
+
+    <h4>ICU 2.6..3.2</h4>
+
+    <p>These ICU versions require a call to <code>u_init()</code> before
+    multi-threaded use. The services that are directly affected are those that
+    don't have a service object and need to be fast: normalization and character
+    properties.</p>
+
+    <p><code>u_init()</code> loads and initializes the data files for
+    normalization and character properties (<code>unorm.icu</code> and
+    <code>uprops.icu</code>) and can therefore also be used to check for data
+    loading.</p>
+
+    <h4>ICU 2.4 and earlier</h4>
+
+    <p>ICU 2.4 and earlier versions were not prepared for multithreaded use on
+    multi-CPU platforms where the CPUs implement weak memory coherency. These
+    CPUs include: Power4, Power5, Alpha, Itanium. <code>u_init()</code> was not
+    defined yet.</p>
+
+    <h4><a name="ImportantNotesHPUX" href="#ImportantNotesHPUX" id=
+    "ImportantNotesHPUX">Using ICU in a Multithreaded Environment on
+    HP-UX</a></h4>
+
+    <p>If you are building ICU with a newer aCC compiler and you are planning on
+    using the older &lt;iostream.h&gt; instead of the newer &lt;iostream&gt;, you
+    will need to use a special configure flag before building ICU. By default,
+    the aCC <a href="http://docs.hp.com/en/1405/options.htm#optioncap-AA">-AA</a>
+    flag is used on HP-UX when the compiler supports that option in order to make
+    ICU thread safe with RogueWave and other libraries using the 2.0 Standard C++
+    library. Your applications that use ICU will also need to use the <a href=
+    "http://docs.hp.com/en/1405/options.htm#optioncap-AA">-AA</a> compiler flag.
+    To turn off this behavior in ICU, you will need to use the --with-iostream=old
+    configure option when you first use runConfigureICU.</p>
+
+    <h4><a name="ImportantNotesSolaris" href="#ImportantNotesSolaris" id=
+    "ImportantNotesSolaris">Using ICU in a Multithreaded Environment on
+    Solaris</a></h4>
+
+    <h5>Linking on Solaris</h5>
+
+    <p>In order to avoid synchronization and threading issues, developers are
+    <strong>suggested</strong> to strictly follow the compiling and linking
+    guidelines for multithreaded applications, specified in the following
+    document from Sun Microsystems. Most notably, pay strict attention to the
+    following statements from Sun:</p>
+
+    <blockquote>
+      <p>To use libthread, specify -lthread before -lc on the ld command line, or
+      last on the cc command line.</p>
+
+      <p>To use libpthread, specify -lpthread before -lc on the ld command line,
+      or last on the cc command line.</p>
+    </blockquote>
+
+    <p>Failure to do this may cause spurious lock conflicts, recursive mutex
+    failure, and deadlock.</p>
+
+    <p>Source: "<i>Solaris Multithreaded Programming Guide, Compiling and
+    Debugging</i>", Sun Microsystems, Inc., Apr 2004<br />
+     <a href=
+    "http://docs.sun.com/app/docs/doc/816-5137/6mba5vpke?a=view">http://docs.sun.com/app/docs/doc/816-5137/6mba5vpke?a=view</a></p>
+
+    <h3><a name="ImportantNotesWindows" href="#ImportantNotesWindows" id=
+    "ImportantNotesWindows">Windows Platform</a></h3>
+
+    <p>If you are building on the Win32 platform, it is important that you
+    understand a few of the following build details.</p>
+
+    <h4>DLL directories and the PATH setting</h4>
+
+    <p>As delivered, the International Components for Unicode build as several
+    DLLs, which are placed in the "<i>&lt;ICU&gt;</i>\bin" directory. You must
+    add this directory to the PATH environment variable in your system, or any
+    executables you build will not be able to access International Components for
+    Unicode libraries. Alternatively, you can copy the DLL files into a directory
+    already in your PATH, but we do not recommend this. You can wind up with
+    multiple copies of the DLL and wind up using the wrong one.</p>
+
+    <h4><a name="ImportantNotesWindowsPath" id=
+    "ImportantNotesWindowsPath">Changing your PATH</a></h4>
+
+    <p><strong>Windows 2000/XP</strong>: Use the System Icon in the Control
+    Panel. Pick the "Advanced" tab. Select the "Environment Variables..."
+    button. Select the variable PATH in the lower box, and select the lower
+    "Edit..." button. In the "Variable Value" box, append the string
+    ";<i>&lt;ICU&gt;</i>\bin" to the end of the path string. If there is
+    nothing there, just type in "<i>&lt;ICU&gt;</i>\bin". Click the Set button,
+    then the OK button.</p>
+
+    <p>Note: When packaging a Windows application for distribution and
+    installation on user systems, copies of the ICU DLLs should be included with
+    the application, and installed for exclusive use by the application. This is
+    the only way to insure that your application is running with the same version
+    of ICU, built with exactly the same options, that you developed and tested
+    with. Refer to Microsoft's guidelines on the usage of DLLs, or search for the
+    phrase "DLL hell" on <a href=
+    "http://msdn.microsoft.com/">msdn.microsoft.com</a>.</p>
+
+    <h3><a name="ImportantNotesUNIX" href="#ImportantNotesUNIX" id=
+    "ImportantNotesUNIX">UNIX Type Platform</a></h3>
+
+    <p>If you are building on a UNIX platform, and if you are installing ICU in a
+    non-standard location, you may need to add the location of your ICU libraries
+    to your <strong>LD_LIBRARY_PATH</strong> or <strong>LIBPATH</strong>
+    environment variable (or the equivalent runtime library path environment
+    variable for your system). The ICU libraries may not link or load properly
+    without doing this.</p>
+
+    <p>Note that if you do not want to have to set this variable, you may instead
+    use the --enable-rpath option at configuration time. This option will
+    instruct the linker to always look for the libraries where they are
+    installed. You will need to use the appropriate linker options when linking
+    your own applications and libraries against ICU, too. Please refer to your
+    system's linker manual for information about runtime paths. The use of rpath
+    also means that when building a new version of ICU you should not have an
+    older version installed in the same place as the new version's installation
+    directory, as the older libraries will used during the build, instead of the
+    new ones, likely leading to an incorrectly build ICU. This is the proper
+    behavior of rpath.</p>
+
+    <h2><a name="PlatformDependencies" href="#PlatformDependencies" id=
+    "PlatformDependencies">Platform Dependencies</a></h2>
+
+    <h3><a name="PlatformDependenciesNew" href="#PlatformDependenciesNew" id=
+    "PlatformDependenciesNew">Porting To A New Platform</a></h3>
+
+    <p>If you are using ICU's Makefiles to build ICU on a new platform, there are
+    a few places where you will need to add or modify some files. If you need
+    more help, you can always ask the <a href=
+    "http://www.icu-project.org/contacts.html">icu-support mailing list</a>. Once
+    you have finished porting ICU to a new platform, it is recommended that you
+    contribute your changes back to ICU via the icu-support mailing list. This
+    will make it easier for everyone to benefit from your work.</p>
+
+    <h4>Data For a New Platform</h4>
+
+    <p>For some people, it may not be necessary for completely build ICU. Most of
+    the makefiles and build targets are for tools that are used for building
+    ICU's data, and an application's data (when an application uses ICU resource
+    bundles for its data).</p>
+
+    <p>Data files can be built on a different platform when both platforms share
+    the same endianness and the same charset family. This assertion does not
+    include platform dependent DLLs/shared/static libraries. For details see the
+    User Guide <a href="http://www.icu-project.org/userguide/icudata.html">ICU
+    Data</a> chapter.</p>
+
+    <p>ICU 3.6 removes the requirement that ICU be completely built in the native
+    operating environment. It adds the icupkg tool which can be run on any
+    platform to turn binary ICU data files from any one of the three formats into
+    any one of the other data formats. This allows a application to use ICU data
+    built anywhere to be used for any other target platform.</p>
+
+    <p><strong>WARNING!</strong> Building ICU without running the tests is not
+    recommended. The tests verify that ICU is safe to use. It is recommended that
+    you try to completely port and test ICU before using the libraries for your
+    own application.</p>
+
+    <h4>Adapting Makefiles For a New Platform</h4>
+
+    <p>Try to follow the build steps from the <a href="#HowToBuildUNIX">UNIX</a>
+    build instructions. If the configure script fails, then you will need to
+    modify some files. Here are the usual steps for porting to a new
+    platform:<br />
+    </p>
+
+    <ol>
+      <li>Create an mh file in icu/source/config/. You can use mh-linux or a
+      similar mh file as your base configuration.</li>
+
+      <li>Modify icu/source/aclocal.m4 to recognize your platform's mh file.</li>
+
+      <li>Modify icu/source/configure.in to properly set your <b>platform</b> C
+      Macro define.</li>
+
+      <li>Run <a href="http://www.gnu.org/software/autoconf/">autoconf</a> in
+      icu/source/ without any options. The autoconf tool is standard on most
+      Linux systems.</li>
+
+      <li>If you have any optimization options that you want to normally use, you
+      can modify icu/source/runConfigureICU to specify those options for your
+      platform.</li>
+
+      <li>Build and test ICU on your platform. It is very important that you run
+      the tests. If you don't run the tests, there is no guarentee that you have
+      properly ported ICU.</li>
+    </ol>
+
+    <h3><a name="PlatformDependenciesImpl" href="#PlatformDependenciesImpl" id=
+    "PlatformDependenciesImpl">Platform Dependent Implementations</a></h3>
+
+    <p>The platform dependencies have been mostly isolated into the following
+    files in the common library. This information can be useful if you are
+    porting ICU to a new platform.</p>
+
+    <ul>
+      <li>
+        <strong>unicode/platform.h.in</strong> (autoconf'ed platforms)<br />
+         <strong>unicode/p<i>XXXX</i>.h</strong> (others: pwin32.h, ppalmos.h,
+        ..): Platform-dependent typedefs and defines:<br />
+        <br />
+         
+
+        <ul>
+          <li>Generic types like UBool, int8_t, int16_t, int32_t, int64_t,
+          uint64_t etc.</li>
+
+          <li>U_EXPORT and U_IMPORT for specifying dynamic library import and
+          export</li>
+
+          <li>&lt;iostream&gt; usability</li>
+
+          <li>Thread safety usability</li>
+        </ul>
+        <br />
+      </li>
+
+      <li>
+        <strong>unicode/putil.h, putil.c</strong>: platform-dependent
+        implementations of various functions that are platform dependent:<br />
+        <br />
+         
+
+        <ul>
+          <li>uprv_isNaN, uprv_isInfinite, uprv_getNaN and uprv_getInfinity for
+          handling special floating point values.</li>
+
+          <li>uprv_tzset, uprv_timezone, uprv_tzname and time for getting
+          platform specific time and time zone information.</li>
+
+          <li>u_getDataDirectory for getting the default data directory.</li>
+
+          <li>uprv_getDefaultLocaleID for getting the default locale
+          setting.</li>
+
+          <li>uprv_getDefaultCodepage for getting the default codepage
+          encoding.</li>
+        </ul>
+        <br />
+      </li>
+
+      <li>
+        <strong>umutex.h, umutex.c</strong>: Code for doing synchronization in
+        multithreaded applications. If you wish to use International Components
+        for Unicode in a multithreaded application, you must provide a
+        synchronization primitive that the classes can use to protect their
+        global data against simultaneous modifications. We already supply working
+        implementations for many platforms that ICU builds on.<br />
+        <br />
+      </li>
+
+      <li><strong>umapfile.h, umapfile.c</strong>: functions for mapping or
+      otherwise reading or loading files into memory. All access by ICU to data
+      from files makes use of these functions.<br />
+      <br />
+      </li>
+
+      <li>Using platform specific #ifdef macros are highly discouraged outside of
+      the scope of these files. When the source code gets updated in the future,
+      these #ifdef's can cause testing problems for your platform.</li>
+    </ul>
+    <hr />
+
+    <p>Copyright &copy; 1997-2008 International Business Machines Corporation and
+    others. All Rights Reserved.<br />
+     IBM Globalization Center of Competency - San Jos&eacute;<br />
+     4400 North First Street<br />
+     San Jos&eacute;, CA 95134<br />
+     USA</p>
+  </body>
+</html>
+
diff --git a/source/Doxyfile.in b/source/Doxyfile.in
new file mode 100644
index 0000000..600c9da
--- /dev/null
+++ b/source/Doxyfile.in
@@ -0,0 +1,230 @@
+# Doxyfile 1.3.7
+#  ********************************************************************
+#  * COPYRIGHT:
+#  * Copyright (c) 2004-2009, International Business Machines Corporation
+#  * and others. All Rights Reserved.
+#  ********************************************************************
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME           = "ICU @VERSION@"
+PROJECT_NUMBER         = 
+OUTPUT_DIRECTORY       = doc
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+USE_WINDOWS_ENCODING   = YES
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = 
+ALWAYS_DETAILED_SEC    = NO
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = YES
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+DISTRIBUTE_GROUP_DOC   = YES
+TAB_SIZE               = 8
+ALIASES                = "memo=\par Note:\n" \
+                         "draft=\xrefitem draft \"Draft\" \"Draft List\"  This API may be changed in the future versions and was introduced in" \
+                         "stable=\xrefitem stable \"Stable\" \"Stable List\"" \
+                         "deprecated=\xrefitem deprecated \"Deprecated\" \"Deprecated List\"" \
+                         "obsolete=\xrefitem obsolete \"Obsolete\" \"Obsolete List\"" \
+                         "system=\xrefitem system \"System\" \"System List\" \n Do not use unless you know what you are doing." \
+                         "internal=\xrefitem internal \"Internal\"  \"Internal List\"  Do not use. This API is for internal use only." 
+
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = NO
+SUBGROUPING            = YES
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = NO
+EXTRACT_PRIVATE        = NO
+EXTRACT_STATIC         = NO
+EXTRACT_LOCAL_CLASSES  = YES
+EXTRACT_LOCAL_METHODS  = NO
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = YES
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = NO
+SORT_BY_SCOPE_NAME     = NO
+GENERATE_TODOLIST      = YES
+GENERATE_TESTLIST      = YES
+GENERATE_BUGLIST       = YES
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+
+# docset
+GENERATE_DOCSET        = NO
+DOCSET_FEEDNAME        = "ICU @VERSION@"
+DOCSET_BUNDLE_ID       = org.icu-project.icu4c
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = 
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = ./common/unicode/platform.h @srcdir@/common/unicode @srcdir@/i18n/unicode @srcdir@/io/unicode @srcdir@/layout/LEFontInstance.h @srcdir@/layout/LEGlyphStorage.h @srcdir@/layout/LELanguages.h @srcdir@/layout/LEScripts.h @srcdir@/layout/LESwaps.h @srcdir@/layout/LETypes.h @srcdir@/layout/LayoutEngine.h @srcdir@/layoutex/layout
+FILE_PATTERNS          = *.h
+RECURSIVE              = NO
+EXCLUDE                = @srcdir@/common/unicode/urename.h @srcdir@/common/unicode/udraft.h @srcdir@/common/unicode/udeprctd.h @srcdir@/common/unicode/uobslete.h @srcdir@/common/unicode/ppalmos.h  
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = config*.h
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = 
+INPUT_FILTER           = 
+FILTER_SOURCE_FILES    = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = YES
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION    = YES
+VERBATIM_HEADERS       = YES
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = YES
+COLS_IN_ALPHA_INDEX    = 5
+IGNORE_PREFIX          = 
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = YES
+HTML_OUTPUT            = html
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = 
+HTML_FOOTER            = 
+HTML_STYLESHEET        = 
+HTML_ALIGN_MEMBERS     = YES
+GENERATE_HTMLHELP      = NO
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = NO
+TOC_EXPAND             = NO
+DISABLE_INDEX          = NO
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = NO
+TREEVIEW_WIDTH         = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = NO
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = NO
+USE_PDFLATEX           = NO
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = NO
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = NO
+RTF_HYPERLINKS         = NO
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_SCHEMA             = 
+XML_DTD                = 
+XML_PROGRAMLISTING     = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO 
+PERLMOD_LATEX          = YES
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX = 
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = YES
+EXPAND_ONLY_PREDEF     = YES
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           = 
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = U_EXPORT2= U_STABLE= U_DRAFT= U_INTERNAL= U_SYSTEM= U_DEPRECATED= U_OBSOLETE= U_CALLCONV= U_CDECL_BEGIN= U_CDECL_END=  U_NO_THROW= U_NAMESPACE_BEGIN= U_NAMESPACE_END= 
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+TAGFILES               = 
+GENERATE_TAGFILE       =  "@builddir@/doc/html/icudocs.tag"
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = YES
+HIDE_UNDOC_RELATIONS   = YES
+HAVE_DOT               = NO
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = YES
+UML_LOOK               = NO
+TEMPLATE_RELATIONS     = NO
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = YES
+CALL_GRAPH             = NO
+GRAPHICAL_HIERARCHY    = YES
+DOT_IMAGE_FORMAT       = png
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1024
+MAX_DOT_GRAPH_DEPTH    = 0
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+SEARCHENGINE           = YES
diff --git a/source/Makefile.in b/source/Makefile.in
new file mode 100644
index 0000000..37e468e
--- /dev/null
+++ b/source/Makefile.in
@@ -0,0 +1,230 @@
+#******************************************************************************
+#
+#   Copyright (C) 1998-2008, International Business Machines
+#   Corporation and others.  All Rights Reserved.
+#
+#******************************************************************************
+## Top-level Makefile.in for ICU
+## Stephen F. Booth
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = .
+
+include $(top_builddir)/icudefs.mk
+
+docdir = $(datadir)/doc
+docsubdir = $(PACKAGE)$(ICULIBDASHSUFFIX)/html
+
+##
+
+## Build directory information
+subdir = .
+
+#AUTOCONF = @AUTOCONF@
+
+## Optional directory setup
+@LAYOUT_TRUE@LAYOUT = layout layoutex
+@ICUIO_TRUE@ICUIO = io
+@EXTRAS_TRUE@EXTRA = extra
+@TESTS_TRUE@TEST = test
+@SAMPLES_TRUE@SAMPLE = samples
+
+DOXYGEN = @DOXYGEN@
+DOCZIP = icu-docs.zip
+
+## Files to remove for 'make clean'
+CLEANFILES = *~
+
+## Files built (autoconfed) and installed
+INSTALLED_BUILT_FILES = $(top_builddir)/config/Makefile.inc $(top_builddir)/config/pkgdata.inc $(top_builddir)/config/icu-config @platform_make_fragment@ $(EXTRA_DATA:%=$(DESTDIR)$(pkglibdir)/%)
+
+## Files built (autoconfed) but not installed
+LOCAL_BUILT_FILES = icudefs.mk
+
+DOCDIRS = common i18n
+SUBDIRS =  stubdata common i18n $(LAYOUT) tools data $(ICUIO) $(EXTRA) $(SAMPLE) $(TEST)
+
+SECTION = 1
+
+MANX_FILES = config/icu-config.$(SECTION)
+
+ALL_MAN_FILES = $(MANX_FILES)
+
+## Extra files to install [nothing at present]
+EXTRA_DATA =
+
+## List of phony targets
+.PHONY : all all-local all-recursive install install-local install-udata install-udata-files install-udata-dlls		\
+install-recursive clean clean-local clean-recursive distclean		\
+distclean-local distclean-recursive doc dist dist-local dist-recursive	\
+check check-local check-recursive clean-recursive-with-twist install-icu \
+doc install-doc tests
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local all-recursive
+install: install-recursive install-local
+clean: clean-recursive-with-twist clean-local
+distclean : distclean-recursive distclean-local
+dist: dist-recursive dist-local
+check: all check-recursive
+check-recursive: all
+
+ifeq ($(DOXYGEN),)
+doc:
+	@echo you need Doxygen to generate documentation. Doxygen can be found on the Web
+	@echo at http://www.doxygen.org/
+else
+doc: doc/html/index.html
+
+doc/html/index.html: Doxyfile $(wildcard ./common/unicode/platform.h $(srcdir)/common/unicode/*.h $(srcdir)/i18n/unicode/*.h $(srcdir)/layout/unicode/*.h $(srcdir)/io/unicode/*.h)
+	$(DOXYGEN)
+
+Doxyfile: $(srcdir)/Doxyfile.in
+	CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(DOCZIP): doc
+	-$(RMV) $(DOCZIP)
+	( cd doc/html ; zip -r ../../$(DOCZIP) * )
+endif
+
+LOCAL_SUBDIRS = $(SUBDIRS)
+CLEAN_FIRST_SUBDIRS = tools
+
+$(LIBDIR) $(BINDIR):
+	-$(MKINSTALLDIRS) $@
+
+## Recursive targets
+all-recursive install-recursive clean-recursive distclean-recursive dist-recursive check-recursive: $(LIBDIR) $(BINDIR)
+	@dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(LOCAL_SUBDIRS)'; for subdir in $$list; do \
+	  echo "$(MAKE)[$(MAKELEVEL)]: Making \`$$target' in \`$$subdir'"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-local"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) RECURSIVE=YES $$local_target) || exit; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) "$$target-local" || exit; \
+	fi
+
+clean-recursive-with-twist:
+	$(MAKE) clean-recursive LOCAL_SUBDIRS='$(CLEAN_FIRST_SUBDIRS) $(filter-out $(CLEAN_FIRST_SUBDIRS),$(LOCAL_SUBDIRS))'
+
+all-local: $(srcdir)/configure $(LOCAL_BUILT_FILES) $(INSTALLED_BUILT_FILES)
+
+install-local: install-icu install-manx
+
+install-icu: $(INSTALLED_BUILT_FILES)
+	@$(MKINSTALLDIRS) $(DESTDIR)$(pkgdatadir)/config
+	@$(MKINSTALLDIRS) $(DESTDIR)$(pkglibdir)
+	@$(MKINSTALLDIRS) $(DESTDIR)$(bindir)
+	@$(MKINSTALLDIRS) $(DESTDIR)$(sbindir)
+	$(INSTALL_DATA) @platform_make_fragment@ $(DESTDIR)$(pkgdatadir)/config/@platform_make_fragment_name@
+	$(INSTALL_SCRIPT) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(pkgdatadir)/mkinstalldirs
+	$(INSTALL_SCRIPT) $(top_srcdir)/install-sh $(DESTDIR)$(pkgdatadir)/install-sh
+	$(INSTALL_DATA) $(top_srcdir)/../license.html $(DESTDIR)$(pkgdatadir)/license.html
+	$(INSTALL_SCRIPT) $(top_builddir)/config/icu-config $(DESTDIR)$(bindir)/icu-config
+	$(INSTALL_DATA) $(top_builddir)/config/Makefile.inc $(DESTDIR)$(pkglibdir)/Makefile.inc
+	$(INSTALL_DATA) $(top_builddir)/config/pkgdata.inc $(DESTDIR)$(pkglibdir)/pkgdata.inc
+	cd $(DESTDIR)$(pkglibdir)/..; \
+	    $(RM) current && ln -s $(VERSION) current; \
+	    $(RM) Makefile.inc && ln -s current/Makefile.inc Makefile.inc; \
+	    $(RM) pkgdata.inc && ln -s current/pkgdata.inc pkgdata.inc
+
+ifeq ($(DOXYGEN),)
+install-doc:
+else
+install-doc: doc
+	$(RM) -r $(DESTDIR)$(docdir)/$(docsubdir)
+	$(MKINSTALLDIRS) $(DESTDIR)$(docdir)/$(docsubdir)
+	$(INSTALL_DATA) doc/html/* $(DESTDIR)$(docdir)/$(docsubdir)
+endif
+
+$(DESTDIR)$(pkglibdir)/%: $(top_srcdir)/../data/%
+	$(INSTALL_DATA) $< $@
+
+# Build the tests, but don't run them.
+tests: all
+	$(MAKE) -C $(top_builddir)/test
+
+dist-local:
+
+clean-local:
+	test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+	$(RMV) Doxyfile doc $(DOCZIP)
+
+distclean-local: clean-local
+	$(RMV) $(top_builddir)/config/Makefile.inc $(top_builddir)/config/pkgdata.inc $(top_builddir)/config/icu-config
+	$(RMV) config.cache config.log config.status
+	$(RMV) Makefile config/Makefile icudefs.mk $(LIBDIR) $(BINDIR)
+
+check-local: $(top_builddir)/config/icu-config $(top_builddir)/config/Makefile.inc $(top_builddir)/config/pkgdata.inc
+	@echo verifying that icu-config --selfcheck can operate
+	@test "passed" = "$(shell $(top_builddir)/config/icu-config --selfcheck 2>&1)" || (echo "FAIL: icu-config could not run properly." ; exit 1)
+	@echo verifying that $(MAKE) -f Makefile.inc selfcheck can operate
+	@test "passed" = "$(shell $(MAKE) --no-print-directory -f $(top_builddir)/config/Makefile.inc SELFCHECK=1 selfcheck)" || (echo "FAIL: Makefile.inc could not run properly." ; exit 1 )
+	@echo "PASS: config selfcheck OK"
+
+#$(srcdir)/configure : $(srcdir)/configure.in $(top_srcdir)/aclocal.m4
+#	cd $(srcdir) && $(AUTOCONF)
+
+icudefs.mk: $(srcdir)/icudefs.mk.in  $(top_builddir)/config.status
+	cd $(top_builddir) \
+		&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+Makefile: $(srcdir)/Makefile.in icudefs.mk $(top_builddir)/config.status
+	cd $(top_builddir) \
+		&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(top_builddir)/config/Makefile.inc: $(srcdir)/config/Makefile.inc.in  $(top_builddir)/config.status
+	cd $(top_builddir) \
+		&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(top_builddir)/config/pkgdata.inc: icudefs.mk $(top_builddir)/config/pkgdataMakefile
+	cd $(top_builddir)/config; \
+		$(MAKE) -f pkgdataMakefile
+
+$(top_builddir)/config/pkgdataMakefile:
+	cd $(top_builddir) \
+		&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+$(top_builddir)/config/icu-config: $(top_builddir)/Makefile $(top_srcdir)/config/icu-config-top $(top_srcdir)/config/icu-config-bottom $(top_builddir)/config/Makefile.inc @platform_make_fragment@ $(top_srcdir)/config/make2sh.sed
+	-$(RMV) $@
+	$(INSTALL_SCRIPT) $(top_srcdir)/config/icu-config-top $@
+	chmod u+w $@
+	@echo "# Following from @platform_make_fragment@" >> $@
+	sed -f $(top_srcdir)/config/make2sh.sed < $(top_builddir)/config/Makefile.inc | grep -v '#M#' | uniq >> $@
+	sed -f $(top_srcdir)/config/make2sh.sed < @platform_make_fragment@ | grep -v '#M#' | uniq >> $@
+	cat $(top_srcdir)/config/icu-config-bottom >> $@
+	echo "# Rebuilt on "`date` >> $@
+	chmod u-w $@
+
+config.status: $(srcdir)/configure $(srcdir)/common/unicode/uversion.h
+	@echo
+	@echo
+	@echo "*** config.status has become stale ***"
+	@echo "   'configure' and/or 'uversion.h' have changed, please"
+	@echo "  do 'runConfigureICU' (or 'configure') again, as per"
+	@echo "  the readme.html."
+	@echo
+	@echo
+	exit 1
+
+
+install-manx: $(MANX_FILES)
+	$(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION)
+	$(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION)
+
+config/%.$(SECTION): $(srcdir)/config/%.$(SECTION).in
+	cd $(top_builddir) \
+	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
diff --git a/source/aclocal.m4 b/source/aclocal.m4
new file mode 100644
index 0000000..f4c45ff
--- /dev/null
+++ b/source/aclocal.m4
@@ -0,0 +1,441 @@
+# aclocal.m4 for ICU
+# Copyright (c) 1999-2008, International Business Machines Corporation and
+# others. All Rights Reserved.
+# Stephen F. Booth
+
+# @TOP@
+
+# ICU_CHECK_MH_FRAG
+AC_DEFUN(ICU_CHECK_MH_FRAG, [
+	AC_CACHE_CHECK(
+		[which Makefile fragment to use],
+		[icu_cv_host_frag],
+		[
+case "${host}" in
+*-*-solaris*)
+	if test "$GCC" = yes; then	
+		icu_cv_host_frag=mh-solaris-gcc
+	else
+		icu_cv_host_frag=mh-solaris
+	fi ;;
+alpha*-*-linux-gnu)
+	if test "$GCC" = yes; then
+		icu_cv_host_frag=mh-alpha-linux-gcc
+	else
+		icu_cv_host_frag=mh-alpha-linux-cc
+	fi ;;
+powerpc*-*-linux*)
+	if test "$GCC" = yes; then
+		icu_cv_host_frag=mh-linux
+	else
+		icu_cv_host_frag=mh-linux-va
+	fi ;;
+*-*-linux*|*-pc-gnu) icu_cv_host_frag=mh-linux ;;
+*-*-cygwin|*-*-mingw32)
+	if test "$GCC" = yes; then
+		AC_TRY_COMPILE([
+#ifndef __MINGW32__
+#error This is not MinGW
+#endif], [], icu_cv_host_frag=mh-mingw, icu_cv_host_frag=mh-cygwin)
+	else
+		icu_cv_host_frag=mh-cygwin-msvc
+	fi ;;
+*-*-*bsd*|*-*-dragonfly*) 	icu_cv_host_frag=mh-bsd-gcc ;;
+*-*-aix*)
+	if test "$GCC" = yes; then
+		icu_cv_host_frag=mh-aix-gcc
+	else
+		icu_cv_host_frag=mh-aix-va
+	fi ;;
+*-*-hpux*)
+	if test "$GCC" = yes; then
+		icu_cv_host_frag=mh-hpux-gcc
+	else
+		case "$CXX" in
+		*aCC)    icu_cv_host_frag=mh-hpux-acc ;;
+		esac
+	fi ;;
+*-*ibm-openedition*|*-*-os390*)	icu_cv_host_frag=mh-os390 ;;
+*-*-os400*)	icu_cv_host_frag=mh-os400 ;;
+*-apple-rhapsody*)	icu_cv_host_frag=mh-darwin ;;
+*-apple-darwin*)	icu_cv_host_frag=mh-darwin ;;
+*-*-beos|*-*-haiku)	icu_cv_host_frag=mh-beos ;;
+*-*-irix*)	icu_cv_host_frag=mh-irix ;;
+*-dec-osf*) icu_cv_host_frag=mh-alpha-osf ;;
+*-*-nto*)	icu_cv_host_frag=mh-qnx ;;
+*-ncr-*)	icu_cv_host_frag=mh-mpras ;;
+*) 		icu_cv_host_frag=mh-unknown ;;
+esac
+		]
+	)
+])
+
+# ICU_CONDITIONAL - similar example taken from Automake 1.4
+AC_DEFUN(ICU_CONDITIONAL,
+[AC_SUBST($1_TRUE)
+if $2; then
+  $1_TRUE=
+else
+  $1_TRUE='#'
+fi])
+
+# ICU_PROG_LINK - Make sure that the linker is usable
+AC_DEFUN(ICU_PROG_LINK,
+[
+case "${host}" in
+    *-*-cygwin*|*-*-mingw*)
+        if test "$GCC" != yes && test -n "`link --version 2>&1 | grep 'GNU coreutils'`"; then
+            AC_MSG_ERROR([link.exe is not a valid linker. Your PATH is incorrect.
+                  Please follow the directions in ICU's readme.])
+        fi;;
+    *);;
+esac])
+
+# AC_SEARCH_LIBS_FIRST(FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND
+#            [, ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
+# Search for a library defining FUNC, then see if it's not already available.
+
+AC_DEFUN(AC_SEARCH_LIBS_FIRST,
+[AC_PREREQ([2.13])
+AC_CACHE_CHECK([for library containing $1], [ac_cv_search_$1],
+[ac_func_search_save_LIBS="$LIBS"
+ac_cv_search_$1="no"
+for i in $2; do
+LIBS="-l$i $5 $ac_func_search_save_LIBS"
+AC_TRY_LINK_FUNC([$1],
+[ac_cv_search_$1="-l$i"
+break])
+done
+if test "$ac_cv_search_$1" = "no"; then
+AC_TRY_LINK_FUNC([$1], [ac_cv_search_$1="none required"])
+fi
+LIBS="$ac_func_search_save_LIBS"])
+if test "$ac_cv_search_$1" != "no"; then
+  test "$ac_cv_search_$1" = "none required" || LIBS="$ac_cv_search_$1 $LIBS"
+  $3
+else :
+  $4
+fi])
+
+
+
+# Check if we can build and use 64-bit libraries
+AC_DEFUN(AC_CHECK_64BIT_LIBS,
+[
+    BITS_REQ=nochange
+    ENABLE_64BIT_LIBS=unknown
+    ## revisit this for cross-compile.
+    
+    AC_ARG_ENABLE(64bit-libs,
+        [  --enable-64bit-libs     (deprecated, use --with-library-bits) build 64-bit libraries [default= platform default]],
+        [echo "note, use --with-library-bits instead of --*-64bit-libs"
+         case "${withval}" in
+            no|false|32) BITS_REQ=32 ;;
+            yes|true|64) BITS_REQ=64 ;;
+            nochange) BITS_REQ=nochange ;;
+            *) AC_MSG_ERROR(bad value ${withval} for --with-library-bits) ;;
+            esac]    )
+    
+
+    AC_ARG_WITH(library-bits,
+        [  --with-library-bits=bits specify how many bits to use for the library (32, 64, 64else32, nochange) [default=nochange]],
+        [case "${withval}" in
+            nochange) BITS_REQ=$withval ;;
+            32|64|64else32) BITS_REQ=$withval ;;
+            *) AC_MSG_ERROR(bad value ${withval} for --with-library-bits) ;;
+            esac])
+    DEFAULT_64BIT=no
+    AC_MSG_CHECKING([whether 64 bit binaries are built by default])
+    AC_RUN_IFELSE(int main(void) {return (sizeof(void*)*8==64)?0:1;},
+       DEFAULT_64BIT=yes, DEFAULT_64BIT=no, DEFAULT_64BIT=unknown)
+    BITS_GOT=unknown
+    BITS_OK=yes
+    if test "$DEFAULT_64BIT" = "yes"; then
+        BITS_GOT=64
+        case "$BITS_REQ" in
+            32) BITS_OK=no;;
+            nochange) ;;
+            *) ;;
+        esac
+    elif test "$DEFAULT_64BIT" = "no"; then
+        BITS_GOT=32
+        case "$BITS_REQ" in
+            64|64else32) BITS_OK=no;;
+            nochange) ;;
+            *) ;;
+        esac
+    elif test "$DEFAULT_64BIT" = "unknown"; then
+        BITS_GOT=unknown
+        case "$BITS_REQ" in
+            64|64else32) BITS_OK=no;;
+            32) BITS_OK=no;;
+            nochange) ;;
+            *) ;;
+        esac
+    fi
+            
+    AC_MSG_RESULT($DEFAULT_64BIT);
+    #AC_MSG_RESULT($DEFAULT_64BIT - got $BITS_GOT wanted $BITS_REQ okness $BITS_OK);
+    if test "$BITS_OK" != "yes"; then
+        # These results can't be cached because is sets compiler flags.
+        if test "$BITS_REQ" = "64" -o "$BITS_REQ" = "64else32"; then
+            AC_MSG_CHECKING([how to build 64-bit executables])
+            if test "$GCC" = yes; then
+                #DONOTUSE# This test is wrong.  If it's GCC, just test m64
+                #DONOTUSE#if test -n "`$CXX -dumpspecs 2>&1 && $CC -dumpspecs 2>&1 | grep -v __LP64__`"; then
+                OLD_CFLAGS="${CFLAGS}"
+                OLD_CXXFLAGS="${CXXFLAGS}"
+                CFLAGS="${CFLAGS} -m64"
+                CXXFLAGS="${CXXFLAGS} -m64"
+                AC_COMPILE_IFELSE(int main(void) {return (sizeof(void*)*8==64)?0:1;},
+                   ENABLE_64BIT_LIBS=yes, ENABLE_64BIT_LIBS=no)
+                if test "$ENABLE_64BIT_LIBS" != yes; then
+                    # Nope. back out changes.
+                    CFLAGS="${OLD_CFLAGS}"
+                    CXXFLAGS="${OLD_CXXFLAGS}"
+                fi
+            else
+                case "${host}" in
+                sparc*-*-solaris*)
+                    # 0. save old flags
+                    OLD_CFLAGS="${CFLAGS}"
+                    OLD_CXXFLAGS="${CXXFLAGS}"
+                    # 1. try -m64
+                    CFLAGS="${CFLAGS} -m64"
+                    CXXFLAGS="${CXXFLAGS} -m64"
+                    AC_COMPILE_IFELSE(int main(void) {return (sizeof(void*)*8==64)?0:1;},
+                       ENABLE_64BIT_LIBS=yes, ENABLE_64BIT_LIBS=no)
+                    if test "$ENABLE_64BIT_LIBS" != yes; then
+                        # Nope. back out changes.
+                        CFLAGS="${OLD_CFLAGS}"
+                        CXXFLAGS="${OLD_CXXFLAGS}"
+                        # 2. try xarch=v9 [deprecated]
+                        ## TODO: cross compile: the following won't work.
+                        SPARCV9=`isainfo -n 2>&1 | grep sparcv9`
+                        SOL64=`$CXX -xarch=v9 2>&1 && $CC -xarch=v9 2>&1 | grep -v usage:`
+                        # "Warning: -xarch=v9 is deprecated, use -m64 to create 64-bit programs"
+                        if test -z "$SOL64" && test -n "$SPARCV9"; then
+                            CFLAGS="${CFLAGS} -xtarget=ultra -xarch=v9"
+                            CXXFLAGS="${CXXFLAGS} -xtarget=ultra -xarch=v9"
+                            LDFLAGS="${LDFLAGS} -xtarget=ultra -xarch=v9"
+                            ENABLE_64BIT_LIBS=yes
+                        else
+                            ENABLE_64BIT_LIBS=no
+                        fi
+                    fi
+                    ;;
+                i386-*-solaris*)
+                    # 0. save old flags
+                    OLD_CFLAGS="${CFLAGS}"
+                    OLD_CXXFLAGS="${CXXFLAGS}"
+                    # 1. try -m64
+                    CFLAGS="${CFLAGS} -m64"
+                    CXXFLAGS="${CXXFLAGS} -m64"
+                    AC_COMPILE_IFELSE(int main(void) {return (sizeof(void*)*8==64)?0:1;},
+                       ENABLE_64BIT_LIBS=yes, ENABLE_64BIT_LIBS=no)
+                    if test "$ENABLE_64BIT_LIBS" != yes; then
+                        # Nope. back out changes.
+                        CFLAGS="${OLD_CFLAGS}"
+                        CXXFLAGS="${OLD_CXXFLAGS}"
+                        # 2. try the older compiler option
+                        ## TODO: cross compile problem
+                        SOL64=`$CXX -xtarget=generic64 2>&1 && $CC -xtarget=generic64 2>&1 | grep -v usage:`
+                        if test -z "$SOL64" && test -n "$AMD64"; then
+                            CFLAGS="${CFLAGS} -xtarget=generic64"
+                            CXXFLAGS="${CXXFLAGS} -xtarget=generic64"
+                            ENABLE_64BIT_LIBS=yes
+                        else
+                            ENABLE_64BIT_LIBS=no
+                        fi
+                    fi
+                    ;;
+                ia64-*-linux*)
+                    # check for ecc/ecpc compiler support
+                    ## TODO: cross compiler problem
+                    if test -n "`$CXX --help 2>&1 && $CC --help 2>&1 | grep -v Intel`"; then
+                        if test -n "`$CXX --help 2>&1 && $CC --help 2>&1 | grep -v Itanium`"; then
+                            ENABLE_64BIT_LIBS=yes
+                        else
+                            ENABLE_64BIT_LIBS=no
+                        fi
+                    else
+                        # unknown
+                        ENABLE_64BIT_LIBS=no
+                    fi
+                    ;;
+                *-*-cygwin)
+                    # vcvarsamd64.bat should have been used to enable 64-bit builds.
+                    # We only do this check to display the correct answer.
+                    ## TODO: cross compiler problem
+                    if test -n "`$CXX -help 2>&1 | grep 'for x64'`"; then
+                        ENABLE_64BIT_LIBS=yes
+                    else
+                        # unknown
+                        ENABLE_64BIT_LIBS=no
+                    fi
+                    ;;
+                *-*-aix*|powerpc64-*-linux*)
+                    OLD_CFLAGS="${CFLAGS}"
+                    OLD_CXXFLAGS="${CXXFLAGS}"
+                    OLD_LDFLAGS="${LDFLAGS}"
+                    CFLAGS="${CFLAGS} -q64"
+                    CXXFLAGS="${CXXFLAGS} -q64"
+                    LDFLAGS="${LDFLAGS} -q64"
+                    AC_COMPILE_IFELSE(int main(void) {return (sizeof(void*)*8==64)?0:1;},
+                       ENABLE_64BIT_LIBS=yes, ENABLE_64BIT_LIBS=no)
+                    if test "$ENABLE_64BIT_LIBS" != yes; then
+                        CFLAGS="${OLD_CFLAGS}"
+                        CXXFLAGS="${OLD_CXXFLAGS}"
+                        LDFLAGS="${OLD_LDFLAGS}"
+                    else
+                        case "${host}" in
+                        *-*-aix*)
+                            ARFLAGS="${ARFLAGS} -X64"
+                        esac
+                    fi
+                    ;;
+                *-*-hpux*)
+                    # First we try the newer +DD64, if that doesn't work,
+                    # try other options.
+
+                    OLD_CFLAGS="${CFLAGS}"
+                    OLD_CXXFLAGS="${CXXFLAGS}"
+                    CFLAGS="${CFLAGS} +DD64"
+                    CXXFLAGS="${CXXFLAGS} +DD64"
+                    AC_COMPILE_IFELSE(int main(void) {return (sizeof(void*)*8==64)?0:1;},
+                        ENABLE_64BIT_LIBS=yes, ENABLE_64BIT_LIBS=no)
+                    if test "$ENABLE_64BIT_LIBS" != yes; then
+                        CFLAGS="${OLD_CFLAGS}"
+                        CXXFLAGS="${OLD_CXXFLAGS}"
+                        CFLAGS="${CFLAGS} +DA2.0W"
+                        CXXFLAGS="${CXXFLAGS} +DA2.0W"
+                        AC_COMPILE_IFELSE(int main(void) {return (sizeof(void*)*8==64)?0:1;},
+                            ENABLE_64BIT_LIBS=yes, ENABLE_64BIT_LIBS=no)
+                        if test "$ENABLE_64BIT_LIBS" != yes; then
+                            CFLAGS="${OLD_CFLAGS}"
+                            CXXFLAGS="${OLD_CXXFLAGS}"
+                        fi
+                    fi
+                    ;;
+                *-*ibm-openedition*|*-*-os390*)
+                    OLD_CFLAGS="${CFLAGS}"
+                    OLD_CXXFLAGS="${CXXFLAGS}"
+                    OLD_LDFLAGS="${LDFLAGS}"
+                    CFLAGS="${CFLAGS} -Wc,lp64"
+                    CXXFLAGS="${CXXFLAGS} -Wc,lp64"
+                    LDFLAGS="${LDFLAGS} -Wl,lp64"
+                    AC_COMPILE_IFELSE(int main(void) {return (sizeof(void*)*8==64)?0:1;},
+                       ENABLE_64BIT_LIBS=yes, ENABLE_64BIT_LIBS=no)
+                    if test "$ENABLE_64BIT_LIBS" != yes; then
+                        CFLAGS="${OLD_CFLAGS}"
+                        CXXFLAGS="${OLD_CXXFLAGS}"
+                        LDFLAGS="${OLD_LDFLAGS}"
+                    fi
+                    ;;
+                *)
+                    ENABLE_64BIT_LIBS=no
+                    ;;
+                esac
+            fi
+            AC_MSG_RESULT($ENABLE_64BIT_LIBS)
+        elif test "$BITS_REQ" = "32"; then
+            AC_MSG_CHECKING([how to build 32-bit executables])
+            if test "$GCC" = yes; then
+                OLD_CFLAGS="${CFLAGS}"
+                OLD_CXXFLAGS="${CXXFLAGS}"
+                CFLAGS="${CFLAGS} -m32"
+                CXXFLAGS="${CXXFLAGS} -m32"
+                AC_COMPILE_IFELSE(int main(void) {return (sizeof(void*)*8==32)?0:1;},
+                   ENABLE_64BIT_LIBS=no, ENABLE_64BIT_LIBS=yes)
+                if test "$ENABLE_64BIT_LIBS" != no; then
+                    CFLAGS="${OLD_CFLAGS}"
+                    CXXFLAGS="${OLD_CXXFLAGS}"
+                fi
+            else
+                echo " Note: not sure how to build 32 bit executables on this platform."
+            fi
+            # 'How to build 32 bit...' will be opposite of 64 bit
+            if test "$ENABLE_64BIT_LIBS" = yes; then
+                AC_MSG_RESULT(no)
+            else
+                if test "$ENABLE_64BIT_LIBS" = no; then
+                    AC_MSG_RESULT(yes)
+                else
+                    AC_MSG_RESULT(unknown)
+                fi
+            fi
+        fi
+        # Individual tests that fail should reset their own flags.
+        NOW_64BIT=no
+        NOW_32BIT=no
+        AC_MSG_CHECKING([whether runnable 64-bit binaries are being built ])
+        AC_TRY_RUN(int main(void) {return (sizeof(void*)*8==64)?0:1;},
+           NOW_64BIT=yes, NOW_64BIT=no, NOW_64BIT=unknown)
+        AC_MSG_RESULT($NOW_64BIT);
+        AC_MSG_CHECKING([whether runnable 32-bit binaries are being built ])
+        AC_TRY_RUN(int main(void) {return (sizeof(void*)*8==32)?0:1;},
+           NOW_32BIT=yes, NOW_32BIT=no, NOW_32BIT=unknown)
+        AC_MSG_RESULT($NOW_32BIT);
+        
+        if test "$BITS_REQ" = "32" -a "$NOW_64BIT" = "yes"; then
+            AC_MSG_ERROR([Requested $BITS_REQ but got 64 bit binaries])
+        elif test "$BITS_REQ" = "64" -a "$NOW_32BIT" = "yes"; then
+            AC_MSG_ERROR([Requested $BITS_REQ but got 32 bit binaries])
+        elif test "$NOW_32BIT" != "yes" -a "$NOW_64BIT" != "yes"; then 
+            echo "*** Note: Cannot determine bitness - if configure fails later, try --with-library-bits=nochange"
+        fi
+    fi
+])
+
+# Strict compilation options.
+AC_DEFUN(AC_CHECK_STRICT_COMPILE,
+[
+    AC_MSG_CHECKING([whether strict compiling is on])
+    AC_ARG_ENABLE(strict,[  --enable-strict         compile with strict compiler options [default=yes]], [
+        if test "$enableval" = no
+        then
+            ac_use_strict_options=no
+        else
+            ac_use_strict_options=yes
+        fi
+      ], [ac_use_strict_options=yes])
+    AC_MSG_RESULT($ac_use_strict_options)
+
+    if test "$ac_use_strict_options" = yes
+    then
+        if test "$GCC" = yes
+        then
+            CFLAGS="$CFLAGS -Wall -ansi -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -Wno-long-long"
+            case "${host}" in
+            *-*-solaris*)
+                CFLAGS="$CFLAGS -D__STDC__=0";;
+            esac
+        else
+            case "${host}" in
+            *-*-cygwin)
+                if test "`$CC /help 2>&1 | head -c9`" = "Microsoft"
+                then
+                    CFLAGS="$CFLAGS /W4"
+                fi
+            esac
+        fi
+        if test "$GXX" = yes
+        then
+            CXXFLAGS="$CXXFLAGS -W -Wall -ansi -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long"
+            case "${host}" in
+            *-*-solaris*)
+                CXXFLAGS="$CXXFLAGS -D__STDC__=0";;
+            esac
+        else
+            case "${host}" in
+            *-*-cygwin)
+                if test "`$CXX /help 2>&1 | head -c9`" = "Microsoft"
+                then
+                    CXXFLAGS="$CXXFLAGS /W4"
+                fi
+            esac
+        fi
+    fi
+])
+
+
diff --git a/source/allinone/allinone.sln b/source/allinone/allinone.sln
new file mode 100644
index 0000000..99344ad
--- /dev/null
+++ b/source/allinone/allinone.sln
@@ -0,0 +1,561 @@
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cal", "..\samples\cal\cal.vcproj", "{F7659D77-09CF-4FE9-ACEE-927287AA9509}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cintltst", "..\test\cintltst\cintltst.vcproj", "{3D1246AE-1B32-479B-BECA-AEFA97BE2321}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{ECA6B435-B4FA-4F9F-BF95-F451D078FC47} = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "..\common\common.vcproj", "{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}"
+	ProjectSection(ProjectDependencies) = postProject
+		{203EC78A-0531-43F0-A636-285439BDE025} = {203EC78A-0531-43F0-A636-285439BDE025}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ctestfw", "..\tools\ctestfw\ctestfw.vcproj", "{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "date", "..\samples\date\date.vcproj", "{38B5751A-C6F9-4409-950C-F4F9DA17275F}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "derb", "..\tools\genrb\derb.vcproj", "{D3065ADB-8820-4CC7-9B6C-9510833961A3}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genbrk", "..\tools\genbrk\genbrk.vcproj", "{C2BE5000-7501-4E87-9724-B8D82494FAE6}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genccode", "..\tools\genccode\genccode.vcproj", "{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencmn", "..\tools\gencmn\gencmn.vcproj", "{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencnval", "..\tools\gencnval\gencnval.vcproj", "{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennames", "..\tools\gennames\gennames.vcproj", "{F5281B04-A9E0-4680-BBA8-1D7F7D115458}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gennorm", "..\tools\gennorm\gennorm.vcproj", "{F5213103-6CBE-46E6-B4CC-2570B6837D86}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genpname", "..\tools\genpname\genpname.vcproj", "{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genprops", "..\tools\genprops\genprops.vcproj", "{6F744648-D15F-478A-90C6-58E353B5DDB3}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genrb", "..\tools\genrb\genrb.vcproj", "{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gentest", "..\tools\gentest\gentest.vcproj", "{77C78066-746F-4EA6-B3FE-B8C8A4A97891}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{ECA6B435-B4FA-4F9F-BF95-F451D078FC47} = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genuca", "..\tools\genuca\genuca.vcproj", "{86829694-A375-4C58-B4EA-96EF514E3225}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "i18n", "..\i18n\i18n.vcproj", "{0178B127-6269-407D-B112-93877BB62776}"
+	ProjectSection(ProjectDependencies) = postProject
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "intltest", "..\test\intltest\intltest.vcproj", "{73632960-B3A6-464D-83A3-4B43365F19B8}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{ECA6B435-B4FA-4F9F-BF95-F451D078FC47} = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "layout", "..\layout\layout.vcproj", "{C920062A-0647-4553-A3B2-37C58065664B}"
+	ProjectSection(ProjectDependencies) = postProject
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "layoutex", "..\layoutex\layoutex.vcproj", "{37FC2C7F-1904-4811-8955-2F478830EAD1}"
+	ProjectSection(ProjectDependencies) = postProject
+		{C920062A-0647-4553-A3B2-37C58065664B} = {C920062A-0647-4553-A3B2-37C58065664B}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makeconv", "..\tools\makeconv\makeconv.vcproj", "{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "makedata", "..\data\makedata.vcproj", "{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}"
+	ProjectSection(ProjectDependencies) = postProject
+		{C2BE5000-7501-4E87-9724-B8D82494FAE6} = {C2BE5000-7501-4E87-9724-B8D82494FAE6}
+		{F5213103-6CBE-46E6-B4CC-2570B6837D86} = {F5213103-6CBE-46E6-B4CC-2570B6837D86}
+		{F5281B04-A9E0-4680-BBA8-1D7F7D115458} = {F5281B04-A9E0-4680-BBA8-1D7F7D115458}
+		{97521D06-EC47-45D4-8BD0-9E16B3F93B2A} = {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}
+		{C2B04507-2521-4801-BF0D-5FD79D6D518C} = {C2B04507-2521-4801-BF0D-5FD79D6D518C}
+		{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB} = {DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}
+		{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
+		{C920062A-0647-4553-A3B2-37C58065664B} = {C920062A-0647-4553-A3B2-37C58065664B}
+		{8B41752B-5A52-41E4-B7E0-07921C0CC6BF} = {8B41752B-5A52-41E4-B7E0-07921C0CC6BF}
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{ECA6B435-B4FA-4F9F-BF95-F451D078FC47} = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
+		{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C} = {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}
+		{6F744648-D15F-478A-90C6-58E353B5DDB3} = {6F744648-D15F-478A-90C6-58E353B5DDB3}
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF61} = {DB312A49-12A9-4E07-9E96-451DC2D8FF61}
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF62} = {DB312A49-12A9-4E07-9E96-451DC2D8FF62}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+		{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC} = {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}
+		{73632960-B3A6-464D-83A3-4B43365F19B8} = {73632960-B3A6-464D-83A3-4B43365F19B8}
+		{77C78066-746F-4EA6-B3FE-B8C8A4A97891} = {77C78066-746F-4EA6-B3FE-B8C8A4A97891}
+		{37FC2C7F-1904-4811-8955-2F478830EAD1} = {37FC2C7F-1904-4811-8955-2F478830EAD1}
+		{E4993E82-D68A-46CA-BAE0-9D35E172E46F} = {E4993E82-D68A-46CA-BAE0-9D35E172E46F}
+		{67351485-4D18-4245-BE39-A7EF0675ACD2} = {67351485-4D18-4245-BE39-A7EF0675ACD2}
+		{203EC78A-0531-43F0-A636-285439BDE025} = {203EC78A-0531-43F0-A636-285439BDE025}
+		{DBA4088D-F6F9-4F8F-8820-082A4765C16C} = {DBA4088D-F6F9-4F8F-8820-082A4765C16C}
+		{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F} = {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}
+		{86829694-A375-4C58-B4EA-96EF514E3225} = {86829694-A375-4C58-B4EA-96EF514E3225}
+		{3D1246AE-1B32-479B-BECA-AEFA97BE2321} = {3D1246AE-1B32-479B-BECA-AEFA97BE2321}
+		{631C23CE-6C1D-4875-88F0-85E0A42B36EA} = {631C23CE-6C1D-4875-88F0-85E0A42B36EA}
+		{D3065ADB-8820-4CC7-9B6C-9510833961A3} = {D3065ADB-8820-4CC7-9B6C-9510833961A3}
+		{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547} = {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}
+		{9D4211F7-2C77-439C-82F0-30A4E43BA569} = {9D4211F7-2C77-439C-82F0-30A4E43BA569}
+		{4C8454FE-81D3-4CA3-9927-29BA96F03DAC} = {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pkgdata", "..\tools\pkgdata\pkgdata.vcproj", "{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+		{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC} = {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}
+		{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F} = {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}
+		{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547} = {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stubdata", "..\stubdata\stubdata.vcproj", "{203EC78A-0531-43F0-A636-285439BDE025}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "toolutil", "..\tools\toolutil\toolutil.vcproj", "{6B231032-3CB5-4EED-9210-810D666A23A0}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uconv", "..\extra\uconv\uconv.vcproj", "{DBA4088D-F6F9-4F8F-8820-082A4765C16C}"
+	ProjectSection(ProjectDependencies) = postProject
+		{97521D06-EC47-45D4-8BD0-9E16B3F93B2A} = {97521D06-EC47-45D4-8BD0-9E16B3F93B2A}
+		{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+		{4C8454FE-81D3-4CA3-9927-29BA96F03DAC} = {4C8454FE-81D3-4CA3-9927-29BA96F03DAC}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "io", "..\io\io.vcproj", "{C2B04507-2521-4801-BF0D-5FD79D6D518C}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gensprep", "..\tools\gensprep\gensprep.vcproj", "{631C23CE-6C1D-4875-88F0-85E0A42B36EA}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iotest", "..\test\iotest\iotest.vcproj", "{E4993E82-D68A-46CA-BAE0-9D35E172E46F}"
+	ProjectSection(ProjectDependencies) = postProject
+		{C2B04507-2521-4801-BF0D-5FD79D6D518C} = {C2B04507-2521-4801-BF0D-5FD79D6D518C}
+		{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
+		{ECA6B435-B4FA-4F9F-BF95-F451D078FC47} = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genbidi", "..\tools\genbidi\genbidi.vcproj", "{DB312A49-12A9-4E07-9E96-451DC2D8FF62}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencase", "..\tools\gencase\gencase.vcproj", "{DB312A49-12A9-4E07-9E96-451DC2D8FF61}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "icupkg", "..\tools\icupkg\icupkg.vcproj", "{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "genctd", "..\tools\genctd\genctd.vcproj", "{9D4211F7-2C77-439C-82F0-30A4E43BA569}"
+	ProjectSection(ProjectDependencies) = postProject
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "letest", "..\test\letest\letest.vcproj", "{67351485-4D18-4245-BE39-A7EF0675ACD2}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
+		{C920062A-0647-4553-A3B2-37C58065664B} = {C920062A-0647-4553-A3B2-37C58065664B}
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{ECA6B435-B4FA-4F9F-BF95-F451D078FC47} = {ECA6B435-B4FA-4F9F-BF95-F451D078FC47}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+		{37FC2C7F-1904-4811-8955-2F478830EAD1} = {37FC2C7F-1904-4811-8955-2F478830EAD1}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gencfu", "..\tools\gencfu\gencfu.vcproj", "{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}"
+	ProjectSection(ProjectDependencies) = postProject
+		{0178B127-6269-407D-B112-93877BB62776} = {0178B127-6269-407D-B112-93877BB62776}
+		{6B231032-3CB5-4EED-9210-810D666A23A0} = {6B231032-3CB5-4EED-9210-810D666A23A0}
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D} = {73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Debug|x64 = Debug|x64
+		Release|Win32 = Release|Win32
+		Release|x64 = Release|x64
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.ActiveCfg = Debug|Win32
+		{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.Build.0 = Debug|Win32
+		{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.ActiveCfg = Debug|x64
+		{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.Build.0 = Debug|x64
+		{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.ActiveCfg = Release|Win32
+		{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.Build.0 = Release|Win32
+		{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.ActiveCfg = Release|x64
+		{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.Build.0 = Release|x64
+		{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.Build.0 = Debug|Win32
+		{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.ActiveCfg = Debug|x64
+		{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.Build.0 = Debug|x64
+		{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.ActiveCfg = Release|Win32
+		{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.Build.0 = Release|Win32
+		{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.ActiveCfg = Release|x64
+		{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.Build.0 = Release|x64
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.Build.0 = Debug|Win32
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.ActiveCfg = Debug|x64
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.Build.0 = Debug|x64
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.ActiveCfg = Release|Win32
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.Build.0 = Release|Win32
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.ActiveCfg = Release|x64
+		{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.Build.0 = Release|x64
+		{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.ActiveCfg = Debug|Win32
+		{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.Build.0 = Debug|Win32
+		{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.ActiveCfg = Debug|x64
+		{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.Build.0 = Debug|x64
+		{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.ActiveCfg = Release|Win32
+		{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.Build.0 = Release|Win32
+		{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.ActiveCfg = Release|x64
+		{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.Build.0 = Release|x64
+		{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|Win32.Build.0 = Debug|Win32
+		{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.ActiveCfg = Debug|x64
+		{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.Build.0 = Debug|x64
+		{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.ActiveCfg = Release|Win32
+		{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.Build.0 = Release|Win32
+		{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.ActiveCfg = Release|x64
+		{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.Build.0 = Release|x64
+		{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.ActiveCfg = Debug|Win32
+		{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.Build.0 = Debug|Win32
+		{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.ActiveCfg = Debug|x64
+		{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.Build.0 = Debug|x64
+		{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.ActiveCfg = Release|Win32
+		{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.Build.0 = Release|Win32
+		{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.ActiveCfg = Release|x64
+		{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.Build.0 = Release|x64
+		{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.Build.0 = Debug|Win32
+		{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.ActiveCfg = Debug|x64
+		{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.Build.0 = Debug|x64
+		{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.ActiveCfg = Release|Win32
+		{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.Build.0 = Release|Win32
+		{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.ActiveCfg = Release|x64
+		{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.Build.0 = Release|x64
+		{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.ActiveCfg = Debug|Win32
+		{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.Build.0 = Debug|Win32
+		{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.ActiveCfg = Debug|x64
+		{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.Build.0 = Debug|x64
+		{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.ActiveCfg = Release|Win32
+		{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.Build.0 = Release|Win32
+		{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.ActiveCfg = Release|x64
+		{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.Build.0 = Release|x64
+		{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.Build.0 = Debug|Win32
+		{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.ActiveCfg = Debug|x64
+		{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.Build.0 = Debug|x64
+		{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.ActiveCfg = Release|Win32
+		{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.Build.0 = Release|Win32
+		{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.ActiveCfg = Release|x64
+		{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.Build.0 = Release|x64
+		{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.ActiveCfg = Debug|Win32
+		{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.Build.0 = Debug|Win32
+		{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.ActiveCfg = Debug|x64
+		{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.Build.0 = Debug|x64
+		{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.ActiveCfg = Release|Win32
+		{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.Build.0 = Release|Win32
+		{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.ActiveCfg = Release|x64
+		{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.Build.0 = Release|x64
+		{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|Win32.ActiveCfg = Debug|Win32
+		{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|Win32.Build.0 = Debug|Win32
+		{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|x64.ActiveCfg = Debug|x64
+		{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Debug|x64.Build.0 = Debug|x64
+		{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|Win32.ActiveCfg = Release|Win32
+		{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|Win32.Build.0 = Release|Win32
+		{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|x64.ActiveCfg = Release|x64
+		{F5281B04-A9E0-4680-BBA8-1D7F7D115458}.Release|x64.Build.0 = Release|x64
+		{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|Win32.ActiveCfg = Debug|Win32
+		{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|Win32.Build.0 = Debug|Win32
+		{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|x64.ActiveCfg = Debug|x64
+		{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Debug|x64.Build.0 = Debug|x64
+		{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|Win32.ActiveCfg = Release|Win32
+		{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|Win32.Build.0 = Release|Win32
+		{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|x64.ActiveCfg = Release|x64
+		{F5213103-6CBE-46E6-B4CC-2570B6837D86}.Release|x64.Build.0 = Release|x64
+		{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|Win32.ActiveCfg = Debug|Win32
+		{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|Win32.Build.0 = Debug|Win32
+		{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|x64.ActiveCfg = Debug|x64
+		{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Debug|x64.Build.0 = Debug|x64
+		{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|Win32.ActiveCfg = Release|Win32
+		{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|Win32.Build.0 = Release|Win32
+		{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|x64.ActiveCfg = Release|x64
+		{DBC0AF0B-B9FF-4B23-905B-4D4CDC2A91CB}.Release|x64.Build.0 = Release|x64
+		{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|Win32.ActiveCfg = Debug|Win32
+		{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|Win32.Build.0 = Debug|Win32
+		{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|x64.ActiveCfg = Debug|x64
+		{6F744648-D15F-478A-90C6-58E353B5DDB3}.Debug|x64.Build.0 = Debug|x64
+		{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|Win32.ActiveCfg = Release|Win32
+		{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|Win32.Build.0 = Release|Win32
+		{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|x64.ActiveCfg = Release|x64
+		{6F744648-D15F-478A-90C6-58E353B5DDB3}.Release|x64.Build.0 = Release|x64
+		{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.ActiveCfg = Debug|Win32
+		{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.Build.0 = Debug|Win32
+		{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.ActiveCfg = Debug|x64
+		{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.Build.0 = Debug|x64
+		{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.ActiveCfg = Release|Win32
+		{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.Build.0 = Release|Win32
+		{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.ActiveCfg = Release|x64
+		{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.Build.0 = Release|x64
+		{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.ActiveCfg = Debug|Win32
+		{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.Build.0 = Debug|Win32
+		{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.ActiveCfg = Debug|x64
+		{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.Build.0 = Debug|x64
+		{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.ActiveCfg = Release|Win32
+		{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.Build.0 = Release|Win32
+		{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.ActiveCfg = Release|x64
+		{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.Build.0 = Release|x64
+		{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|Win32.ActiveCfg = Debug|Win32
+		{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|Win32.Build.0 = Debug|Win32
+		{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|x64.ActiveCfg = Debug|x64
+		{86829694-A375-4C58-B4EA-96EF514E3225}.Debug|x64.Build.0 = Debug|x64
+		{86829694-A375-4C58-B4EA-96EF514E3225}.Release|Win32.ActiveCfg = Release|Win32
+		{86829694-A375-4C58-B4EA-96EF514E3225}.Release|Win32.Build.0 = Release|Win32
+		{86829694-A375-4C58-B4EA-96EF514E3225}.Release|x64.ActiveCfg = Release|x64
+		{86829694-A375-4C58-B4EA-96EF514E3225}.Release|x64.Build.0 = Release|x64
+		{0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.ActiveCfg = Debug|Win32
+		{0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.Build.0 = Debug|Win32
+		{0178B127-6269-407D-B112-93877BB62776}.Debug|x64.ActiveCfg = Debug|x64
+		{0178B127-6269-407D-B112-93877BB62776}.Debug|x64.Build.0 = Debug|x64
+		{0178B127-6269-407D-B112-93877BB62776}.Release|Win32.ActiveCfg = Release|Win32
+		{0178B127-6269-407D-B112-93877BB62776}.Release|Win32.Build.0 = Release|Win32
+		{0178B127-6269-407D-B112-93877BB62776}.Release|x64.ActiveCfg = Release|x64
+		{0178B127-6269-407D-B112-93877BB62776}.Release|x64.Build.0 = Release|x64
+		{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.ActiveCfg = Debug|Win32
+		{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.Build.0 = Debug|Win32
+		{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.ActiveCfg = Debug|x64
+		{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.Build.0 = Debug|x64
+		{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.ActiveCfg = Release|Win32
+		{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.Build.0 = Release|Win32
+		{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.ActiveCfg = Release|x64
+		{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.Build.0 = Release|x64
+		{C920062A-0647-4553-A3B2-37C58065664B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C920062A-0647-4553-A3B2-37C58065664B}.Debug|Win32.Build.0 = Debug|Win32
+		{C920062A-0647-4553-A3B2-37C58065664B}.Debug|x64.ActiveCfg = Debug|x64
+		{C920062A-0647-4553-A3B2-37C58065664B}.Debug|x64.Build.0 = Debug|x64
+		{C920062A-0647-4553-A3B2-37C58065664B}.Release|Win32.ActiveCfg = Release|Win32
+		{C920062A-0647-4553-A3B2-37C58065664B}.Release|Win32.Build.0 = Release|Win32
+		{C920062A-0647-4553-A3B2-37C58065664B}.Release|x64.ActiveCfg = Release|x64
+		{C920062A-0647-4553-A3B2-37C58065664B}.Release|x64.Build.0 = Release|x64
+		{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|Win32.ActiveCfg = Debug|Win32
+		{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|Win32.Build.0 = Debug|Win32
+		{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|x64.ActiveCfg = Debug|x64
+		{37FC2C7F-1904-4811-8955-2F478830EAD1}.Debug|x64.Build.0 = Debug|x64
+		{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|Win32.ActiveCfg = Release|Win32
+		{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|Win32.Build.0 = Release|Win32
+		{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|x64.ActiveCfg = Release|x64
+		{37FC2C7F-1904-4811-8955-2F478830EAD1}.Release|x64.Build.0 = Release|x64
+		{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.ActiveCfg = Debug|Win32
+		{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.Build.0 = Debug|Win32
+		{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.ActiveCfg = Debug|x64
+		{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.Build.0 = Debug|x64
+		{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.ActiveCfg = Release|Win32
+		{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.Build.0 = Release|Win32
+		{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.ActiveCfg = Release|x64
+		{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.Build.0 = Release|x64
+		{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.Build.0 = Debug|Win32
+		{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.ActiveCfg = Debug|x64
+		{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.Build.0 = Debug|x64
+		{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.ActiveCfg = Release|Win32
+		{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.Build.0 = Release|Win32
+		{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.ActiveCfg = Release|x64
+		{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.Build.0 = Release|x64
+		{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.ActiveCfg = Debug|Win32
+		{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.Build.0 = Debug|Win32
+		{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.ActiveCfg = Debug|x64
+		{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.Build.0 = Debug|x64
+		{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.ActiveCfg = Release|Win32
+		{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.Build.0 = Release|Win32
+		{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.ActiveCfg = Release|x64
+		{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.Build.0 = Release|x64
+		{203EC78A-0531-43F0-A636-285439BDE025}.Debug|Win32.ActiveCfg = Debug|Win32
+		{203EC78A-0531-43F0-A636-285439BDE025}.Debug|Win32.Build.0 = Debug|Win32
+		{203EC78A-0531-43F0-A636-285439BDE025}.Debug|x64.ActiveCfg = Debug|x64
+		{203EC78A-0531-43F0-A636-285439BDE025}.Debug|x64.Build.0 = Debug|x64
+		{203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.ActiveCfg = Release|Win32
+		{203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.Build.0 = Release|Win32
+		{203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.ActiveCfg = Release|x64
+		{203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.Build.0 = Release|x64
+		{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.ActiveCfg = Debug|Win32
+		{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.Build.0 = Debug|Win32
+		{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.ActiveCfg = Debug|x64
+		{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.Build.0 = Debug|x64
+		{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.ActiveCfg = Release|Win32
+		{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.Build.0 = Release|Win32
+		{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.ActiveCfg = Release|x64
+		{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.Build.0 = Release|x64
+		{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.ActiveCfg = Debug|Win32
+		{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.Build.0 = Debug|Win32
+		{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.ActiveCfg = Debug|x64
+		{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.Build.0 = Debug|x64
+		{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.ActiveCfg = Release|Win32
+		{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.Build.0 = Release|Win32
+		{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.ActiveCfg = Release|x64
+		{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.Build.0 = Release|x64
+		{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.Build.0 = Debug|Win32
+		{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.ActiveCfg = Debug|x64
+		{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.Build.0 = Debug|x64
+		{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.ActiveCfg = Release|Win32
+		{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.Build.0 = Release|Win32
+		{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.ActiveCfg = Release|x64
+		{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.Build.0 = Release|x64
+		{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.ActiveCfg = Debug|Win32
+		{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.Build.0 = Debug|Win32
+		{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.ActiveCfg = Debug|x64
+		{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.Build.0 = Debug|x64
+		{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.ActiveCfg = Release|Win32
+		{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.Build.0 = Release|Win32
+		{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.ActiveCfg = Release|x64
+		{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.Build.0 = Release|x64
+		{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.ActiveCfg = Debug|Win32
+		{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.Build.0 = Debug|Win32
+		{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.ActiveCfg = Debug|x64
+		{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.Build.0 = Debug|x64
+		{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.ActiveCfg = Release|Win32
+		{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.Build.0 = Release|Win32
+		{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.ActiveCfg = Release|x64
+		{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.Build.0 = Release|x64
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF62}.Debug|Win32.ActiveCfg = Debug|Win32
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF62}.Debug|Win32.Build.0 = Debug|Win32
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF62}.Debug|x64.ActiveCfg = Debug|x64
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF62}.Debug|x64.Build.0 = Debug|x64
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF62}.Release|Win32.ActiveCfg = Release|Win32
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF62}.Release|Win32.Build.0 = Release|Win32
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF62}.Release|x64.ActiveCfg = Release|x64
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF62}.Release|x64.Build.0 = Release|x64
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF61}.Debug|Win32.ActiveCfg = Debug|Win32
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF61}.Debug|Win32.Build.0 = Debug|Win32
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF61}.Debug|x64.ActiveCfg = Debug|x64
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF61}.Debug|x64.Build.0 = Debug|x64
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF61}.Release|Win32.ActiveCfg = Release|Win32
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF61}.Release|Win32.Build.0 = Release|Win32
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF61}.Release|x64.ActiveCfg = Release|x64
+		{DB312A49-12A9-4E07-9E96-451DC2D8FF61}.Release|x64.Build.0 = Release|x64
+		{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|Win32.ActiveCfg = Debug|Win32
+		{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|Win32.Build.0 = Debug|Win32
+		{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|x64.ActiveCfg = Debug|x64
+		{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|x64.Build.0 = Debug|x64
+		{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|Win32.ActiveCfg = Release|Win32
+		{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|Win32.Build.0 = Release|Win32
+		{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|x64.ActiveCfg = Release|x64
+		{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|x64.Build.0 = Release|x64
+		{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|Win32.ActiveCfg = Debug|Win32
+		{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|Win32.Build.0 = Debug|Win32
+		{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|x64.ActiveCfg = Debug|x64
+		{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|x64.Build.0 = Debug|x64
+		{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|Win32.ActiveCfg = Release|Win32
+		{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|Win32.Build.0 = Release|Win32
+		{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|x64.ActiveCfg = Release|x64
+		{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|x64.Build.0 = Release|x64
+		{67351485-4D18-4245-BE39-A7EF0675ACD2}.Debug|Win32.ActiveCfg = Debug|Win32
+		{67351485-4D18-4245-BE39-A7EF0675ACD2}.Debug|Win32.Build.0 = Debug|Win32
+		{67351485-4D18-4245-BE39-A7EF0675ACD2}.Debug|x64.ActiveCfg = Debug|x64
+		{67351485-4D18-4245-BE39-A7EF0675ACD2}.Debug|x64.Build.0 = Debug|x64
+		{67351485-4D18-4245-BE39-A7EF0675ACD2}.Release|Win32.ActiveCfg = Release|Win32
+		{67351485-4D18-4245-BE39-A7EF0675ACD2}.Release|Win32.Build.0 = Release|Win32
+		{67351485-4D18-4245-BE39-A7EF0675ACD2}.Release|x64.ActiveCfg = Release|x64
+		{67351485-4D18-4245-BE39-A7EF0675ACD2}.Release|x64.Build.0 = Release|x64
+		{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|Win32.ActiveCfg = Debug|Win32
+		{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|Win32.Build.0 = Debug|Win32
+		{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|x64.ActiveCfg = Debug|x64
+		{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|x64.Build.0 = Debug|x64
+		{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|Win32.ActiveCfg = Release|Win32
+		{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|Win32.Build.0 = Release|Win32
+		{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|x64.ActiveCfg = Release|x64
+		{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|x64.Build.0 = Release|x64
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
diff --git a/source/common/Makefile.in b/source/common/Makefile.in
new file mode 100644
index 0000000..45bb981
--- /dev/null
+++ b/source/common/Makefile.in
@@ -0,0 +1,205 @@
+#******************************************************************************
+#
+#   Copyright (C) 1999-2009, International Business Machines
+#   Corporation and others.  All Rights Reserved.
+#
+#******************************************************************************
+## Makefile.in for ICU - icuuc.so
+## Stephen F. Booth
+
+## Source directory information
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+
+top_builddir = ..
+
+## All the flags and other definitions are included here.
+include $(top_builddir)/icudefs.mk
+
+## Build directory information
+subdir = common
+
+# for service hook
+LOCALSVC_CPP=localsvc.cpp
+SVC_HOOK_INC=$(top_builddir)/common/svchook.mk
+
+## Extra files to remove for 'make clean'
+CLEANFILES = *~ $(DEPS) $(IMPORT_LIB) $(MIDDLE_IMPORT_LIB) $(FINAL_IMPORT_LIB) $(SVC_HOOK_INC)
+
+## Target information
+
+TARGET_STUBNAME=$(COMMON_STUBNAME)
+
+ifneq ($(ENABLE_STATIC),)
+TARGET = $(LIBDIR)/$(LIBSICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(A)
+endif
+
+ifneq ($(ENABLE_SHARED),)
+SO_TARGET = $(LIBDIR)/$(LIBICU)$(TARGET_STUBNAME)$(ICULIBSUFFIX).$(SO)
+ALL_SO_TARGETS = $(SO_TARGET) $(MIDDLE_SO_TARGET) $(FINAL_SO_TARGET) $(SHARED_OBJECT)
+
+ifeq ($(ENABLE_SO_VERSION_DATA),1)
+SO_VERSION_DATA = common.res
+endif
+
+ifeq ($(OS390BATCH),1)
+BATCH_TARGET = $(BATCH_COMMON_TARGET)
+BATCH_LIBS = $(BATCH_LIBICUDT) -lm
+endif   # OS390BATCH
+
+endif   # ENABLE_SHARED
+
+ALL_TARGETS = $(TARGET) $(ALL_SO_TARGETS) $(BATCH_TARGET)
+
+DYNAMICCPPFLAGS = $(SHAREDLIBCPPFLAGS)
+DYNAMICCFLAGS = $(SHAREDLIBCFLAGS)
+DYNAMICCXXFLAGS = $(SHAREDLIBCXXFLAGS)
+CFLAGS += $(LIBCFLAGS)
+CXXFLAGS += $(LIBCXXFLAGS)
+
+ifneq ($(top_builddir),$(top_srcdir))
+CPPFLAGS += -I$(top_builddir)/common
+endif
+CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/i18n $(LIBCPPFLAGS)
+DEFS += -DU_COMMON_IMPLEMENTATION
+LDFLAGS += $(LDFLAGSICUUC)
+
+# $(LIBICUDT) is either stub data or the real DLL common data.
+LIBS = $(LIBICUDT) $(DEFAULT_LIBS)
+
+OBJECTS = errorcode.o putil.o umath.o utypes.o uinvchar.o umutex.o ucln_cmn.o uinit.o uobject.o cmemory.o \
+udata.o ucmndata.o udatamem.o umapfile.o udataswp.o ucol_swp.o utrace.o \
+uhash.o uhash_us.o uenum.o ustrenum.o uvector.o ustack.o uvectr32.o \
+ucnv.o ucnv_bld.o ucnv_cnv.o ucnv_io.o ucnv_cb.o ucnv_err.o ucnvlat1.o \
+ucnv_u7.o ucnv_u8.o ucnv_u16.o ucnv_u32.o ucnvscsu.o ucnvbocu.o \
+ucnv_ext.o ucnvmbcs.o ucnv2022.o ucnvhz.o ucnv_lmb.o ucnvisci.o ucnvdisp.o ucnv_set.o \
+uresbund.o ures_cnv.o uresdata.o resbund.o resbund_cnv.o \
+ucat.o locmap.o uloc.o locid.o locutil.o \
+bytestream.o stringpiece.o \
+ustr_cnv.o unistr_cnv.o unistr.o unistr_case.o unistr_props.o \
+utf_impl.o ustring.o ustrcase.o ucasemap.o cstring.o ustrfmt.o ustrtrns.o ustr_wcs.o utext.o \
+normlzr.o unorm.o unormcmp.o unorm_it.o chariter.o schriter.o uchriter.o uiter.o \
+uchar.o uprops.o ucase.o propname.o ubidi_props.o ubidi.o ubidiwrt.o ubidiln.o ushape.o \
+uscript.o usc_impl.o unames.o \
+utrie.o utrie2.o utrie2_builder.o bmpset.o unisetspan.o uset_props.o uniset_props.o uset.o uniset.o usetiter.o ruleiter.o caniter.o unifilt.o unifunct.o \
+uarrsort.o brkiter.o ubrk.o brkeng.o dictbe.o triedict.o \
+rbbi.o rbbidata.o rbbinode.o rbbirb.o rbbiscan.o rbbisetb.o rbbistbl.o rbbitblb.o \
+serv.o servnotf.o servls.o servlk.o servlkf.o servrbf.o servslkf.o \
+uidna.o usprep.o punycode.o \
+util.o util_props.o parsepos.o locbased.o cwchar.o wintz.o mutex.o dtintrv.o ucnvsel.o propsvec.o \
+ulist.o
+
+## Header files to install
+HEADERS = $(srcdir)/unicode/*.h unicode/*.h
+
+STATIC_OBJECTS = $(OBJECTS:.o=.$(STATIC_O))
+
+DEPS = $(OBJECTS:.o=.d)
+
+-include Makefile.local
+
+-include $(SVC_HOOK_INC)
+
+
+## List of phony targets
+.PHONY : all all-local install install-local clean clean-local	\
+distclean distclean-local install-library install-headers dist	\
+dist-local check check-local
+
+## Clear suffix list
+.SUFFIXES :
+
+## List of standard targets
+all: all-local
+install: install-local
+clean: clean-local
+distclean : distclean-local
+dist: dist-local
+check: all check-local
+
+all-local: $(ALL_TARGETS) unicode/platform.h
+
+install-local: install-headers install-library
+
+install-library: all-local
+	$(MKINSTALLDIRS) $(DESTDIR)$(libdir)
+ifneq ($(ENABLE_STATIC),)
+	$(INSTALL-L) $(TARGET) $(DESTDIR)$(libdir)
+endif
+ifneq ($(ENABLE_SHARED),)
+	$(INSTALL-L) $(FINAL_SO_TARGET) $(DESTDIR)$(libdir)
+ifneq ($(FINAL_SO_TARGET),$(SO_TARGET))
+	cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(SO_TARGET)) && ln -s $(notdir $(FINAL_SO_TARGET)) $(notdir $(SO_TARGET))
+ifneq ($(FINAL_SO_TARGET),$(MIDDLE_SO_TARGET))
+	cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(MIDDLE_SO_TARGET)) && ln -s $(notdir $(FINAL_SO_TARGET)) $(notdir $(MIDDLE_SO_TARGET))
+endif
+endif
+ifneq ($(IMPORT_LIB_EXT),)
+	$(INSTALL-L) $(FINAL_IMPORT_LIB) $(DESTDIR)$(libdir)
+ifneq ($(IMPORT_LIB),$(FINAL_IMPORT_LIB))
+	cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(IMPORT_LIB)) && ln -s $(notdir $(FINAL_IMPORT_LIB)) $(notdir $(IMPORT_LIB))
+endif
+ifneq ($(MIDDLE_IMPORT_LIB),$(FINAL_IMPORT_LIB))
+	cd $(DESTDIR)$(libdir) && $(RM) $(notdir $(MIDDLE_IMPORT_LIB)) && ln -s $(notdir $(FINAL_IMPORT_LIB)) $(notdir $(MIDDLE_IMPORT_LIB))
+endif
+endif
+endif
+
+$(SVC_HOOK_INC):
+	@echo generating $@
+	@-test -f $(top_srcdir)/common/$(LOCALSVC_CPP) && ( echo "have $(LOCALSVC_CPP) - U_LOCAL_SERVICE_HOOK=1" ; \
+		echo 'CPPFLAGS +=-DU_LOCAL_SERVICE_HOOK=1' > $@ ; \
+		echo 'OBJECTS += $(LOCALSVC_CPP:%.cpp=%.o)' >> $@ \
+		 ) ; true
+	@echo "# Autogenerated by Makefile" >> $@
+
+install-headers:
+	$(MKINSTALLDIRS) $(DESTDIR)$(includedir)/unicode
+	@for file in $(HEADERS); do \
+	 echo "$(INSTALL_DATA) $$file $(DESTDIR)$(includedir)/unicode"; \
+	 $(INSTALL_DATA) $$file $(DESTDIR)$(includedir)/unicode || exit; \
+	done
+
+dist-local:
+
+clean-local:
+	test -z "$(CLEANFILES)" || $(RMV) $(CLEANFILES)
+	$(RMV) $(OBJECTS) $(STATIC_OBJECTS) $(ALL_TARGETS) $(SO_VERSION_DATA)
+
+distclean-local: clean-local
+	$(RMV) Makefile icucfg.h unicode/platform.h $(SVC_HOOK_INC)
+
+check-local:
+
+Makefile: $(srcdir)/Makefile.in  $(top_builddir)/config.status $(SVC_HOOK_INC)
+	cd $(top_builddir) \
+	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+unicode/platform.h: $(srcdir)/unicode/platform.h.in $(top_builddir)/config.status
+	cd $(top_builddir) \
+	 && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
+
+ifneq ($(ENABLE_STATIC),)
+$(TARGET): $(STATIC_OBJECTS)
+	$(AR) $(ARFLAGS) $(AR_OUTOPT)$@ $^
+	$(RANLIB) $@
+endif
+
+ifneq ($(ENABLE_SHARED),)
+$(SHARED_OBJECT): $(OBJECTS) $(SO_VERSION_DATA)
+	$(SHLIB.cc) $(LD_SONAME) $(OUTOPT)$@ $^ $(LIBS)
+
+ifeq ($(OS390BATCH),1)
+$(BATCH_TARGET):$(OBJECTS)
+	$(SHLIB.cc) $(LD_SONAME) $(OUTOPT)$@ $^ $(BATCH_LIBS)
+endif   # OS390BATCH
+endif   # ENABLE_SHARED
+
+ifeq (,$(MAKECMDGOALS))
+-include $(DEPS)
+else
+ifneq ($(patsubst %clean,,$(MAKECMDGOALS)),)
+-include $(DEPS)
+endif
+endif
+
diff --git a/source/common/bmpset.cpp b/source/common/bmpset.cpp
new file mode 100644
index 0000000..db87c70
--- /dev/null
+++ b/source/common/bmpset.cpp
@@ -0,0 +1,723 @@
+/*
+******************************************************************************
+*
+*   Copyright (C) 2007-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*   file name:  bmpset.cpp
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2007jan29
+*   created by: Markus W. Scherer
+*/
+
+#include "unicode/utypes.h"
+#include "unicode/uniset.h"
+#include "cmemory.h"
+#include "bmpset.h"
+
+U_NAMESPACE_BEGIN
+
+BMPSet::BMPSet(const int32_t *parentList, int32_t parentListLength) :
+        list(parentList), listLength(parentListLength) {
+    uprv_memset(asciiBytes, 0, sizeof(asciiBytes));
+    uprv_memset(table7FF, 0, sizeof(table7FF));
+    uprv_memset(bmpBlockBits, 0, sizeof(bmpBlockBits));
+
+    /*
+     * Set the list indexes for binary searches for
+     * U+0800, U+1000, U+2000, .., U+F000, U+10000.
+     * U+0800 is the first 3-byte-UTF-8 code point. Lower code points are
+     * looked up in the bit tables.
+     * The last pair of indexes is for finding supplementary code points.
+     */
+    list4kStarts[0]=findCodePoint(0x800, 0, listLength-1);
+    int32_t i;
+    for(i=1; i<=0x10; ++i) {
+        list4kStarts[i]=findCodePoint(i<<12, list4kStarts[i-1], listLength-1);
+    }
+    list4kStarts[0x11]=listLength-1;
+
+    initBits();
+    overrideIllegal();
+}
+
+BMPSet::BMPSet(const BMPSet &otherBMPSet, const int32_t *newParentList, int32_t newParentListLength) :
+        list(newParentList), listLength(newParentListLength) {
+    uprv_memcpy(asciiBytes, otherBMPSet.asciiBytes, sizeof(asciiBytes));
+    uprv_memcpy(table7FF, otherBMPSet.table7FF, sizeof(table7FF));
+    uprv_memcpy(bmpBlockBits, otherBMPSet.bmpBlockBits, sizeof(bmpBlockBits));
+    uprv_memcpy(list4kStarts, otherBMPSet.list4kStarts, sizeof(list4kStarts));
+}
+
+BMPSet::~BMPSet() {
+}
+
+/*
+ * Set bits in a bit rectangle in "vertical" bit organization.
+ * start<limit<=0x800
+ */
+static void set32x64Bits(uint32_t table[64], int32_t start, int32_t limit) {
+    int32_t lead=start>>6;
+    int32_t trail=start&0x3f;
+
+    // Set one bit indicating an all-one block.
+    uint32_t bits=(uint32_t)1<<lead;
+    if((start+1)==limit) {  // Single-character shortcut.
+        table[trail]|=bits;
+        return;
+    }
+
+    int32_t limitLead=limit>>6;
+    int32_t limitTrail=limit&0x3f;
+
+    if(lead==limitLead) {
+        // Partial vertical bit column.
+        while(trail<limitTrail) {
+            table[trail++]|=bits;
+        }
+    } else {
+        // Partial vertical bit column,
+        // followed by a bit rectangle,
+        // followed by another partial vertical bit column.
+        if(trail>0) {
+            do {
+                table[trail++]|=bits;
+            } while(trail<64);
+            ++lead;
+        }
+        if(lead<limitLead) {
+            bits=~((1<<lead)-1);
+            if(limitLead<0x20) {
+                bits&=(1<<limitLead)-1;
+            }
+            for(trail=0; trail<64; ++trail) {
+                table[trail]|=bits;
+            }
+        }
+        bits=1<<limitLead;
+        for(trail=0; trail<limitTrail; ++trail) {
+            table[trail]|=bits;
+        }
+    }
+}
+
+void BMPSet::initBits() {
+    UChar32 start, limit;
+    int32_t listIndex=0;
+
+    // Set asciiBytes[].
+    do {
+        start=list[listIndex++];
+        if(listIndex<listLength) {
+            limit=list[listIndex++];
+        } else {
+            limit=0x110000;
+        }
+        if(start>=0x80) {
+            break;
+        }
+        do {
+            asciiBytes[start++]=1;
+        } while(start<limit && start<0x80);
+    } while(limit<=0x80);
+
+    // Set table7FF[].
+    while(start<0x800) {
+        set32x64Bits(table7FF, start, limit<=0x800 ? limit : 0x800);
+        if(limit>0x800) {
+            start=0x800;
+            break;
+        }
+
+        start=list[listIndex++];
+        if(listIndex<listLength) {
+            limit=list[listIndex++];
+        } else {
+            limit=0x110000;
+        }
+    }
+
+    // Set bmpBlockBits[].
+    int32_t minStart=0x800;
+    while(start<0x10000) {
+        if(limit>0x10000) {
+            limit=0x10000;
+        }
+
+        if(start<minStart) {
+            start=minStart;
+        }
+        if(start<limit) {  // Else: Another range entirely in a known mixed-value block.
+            if(start&0x3f) {
+                // Mixed-value block of 64 code points.
+                start>>=6;
+                bmpBlockBits[start&0x3f]|=0x10001<<(start>>6);
+                start=(start+1)<<6;  // Round up to the next block boundary.
+                minStart=start;      // Ignore further ranges in this block.
+            }
+            if(start<limit) {
+                if(start<(limit&~0x3f)) {
+                    // Multiple all-ones blocks of 64 code points each.
+                    set32x64Bits(bmpBlockBits, start>>6, limit>>6);
+                }
+
+                if(limit&0x3f) {
+                    // Mixed-value block of 64 code points.
+                    limit>>=6;
+                    bmpBlockBits[limit&0x3f]|=0x10001<<(limit>>6);
+                    limit=(limit+1)<<6;  // Round up to the next block boundary.
+                    minStart=limit;      // Ignore further ranges in this block.
+                }
+            }
+        }
+
+        if(limit==0x10000) {
+            break;
+        }
+
+        start=list[listIndex++];
+        if(listIndex<listLength) {
+            limit=list[listIndex++];
+        } else {
+            limit=0x110000;
+        }
+    }
+}
+
+/*
+ * Override some bits and bytes to the result of contains(FFFD)
+ * for faster validity checking at runtime.
+ * No need to set 0 values where they were reset to 0 in the constructor
+ * and not modified by initBits().
+ * (asciiBytes[] trail bytes, table7FF[] 0..7F, bmpBlockBits[] 0..7FF)
+ * Need to set 0 values for surrogates D800..DFFF.
+ */
+void BMPSet::overrideIllegal() {
+    uint32_t bits, mask;
+    int32_t i;
+
+    if(containsSlow(0xfffd, list4kStarts[0xf], list4kStarts[0x10])) {
+        // contains(FFFD)==TRUE
+        for(i=0x80; i<0xc0; ++i) {
+            asciiBytes[i]=1;
+        }
+
+        bits=3;                 // Lead bytes 0xC0 and 0xC1.
+        for(i=0; i<64; ++i) {
+            table7FF[i]|=bits;
+        }
+
+        bits=1;                 // Lead byte 0xE0.
+        for(i=0; i<32; ++i) {   // First half of 4k block.
+            bmpBlockBits[i]|=bits;
+        }
+
+        mask=~(0x10001<<0xd);   // Lead byte 0xED.
+        bits=1<<0xd;
+        for(i=32; i<64; ++i) {  // Second half of 4k block.
+            bmpBlockBits[i]=(bmpBlockBits[i]&mask)|bits;
+        }
+    } else {
+        // contains(FFFD)==FALSE
+        mask=~(0x10001<<0xd);   // Lead byte 0xED.
+        for(i=32; i<64; ++i) {  // Second half of 4k block.
+            bmpBlockBits[i]&=mask;
+        }
+    }
+}
+
+int32_t BMPSet::findCodePoint(UChar32 c, int32_t lo, int32_t hi) const {
+    /* Examples:
+                                       findCodePoint(c)
+       set              list[]         c=0 1 3 4 7 8
+       ===              ==============   ===========
+       []               [110000]         0 0 0 0 0 0
+       [\u0000-\u0003]  [0, 4, 110000]   1 1 1 2 2 2
+       [\u0004-\u0007]  [4, 8, 110000]   0 0 0 1 1 2
+       [:Any:]          [0, 110000]      1 1 1 1 1 1
+     */
+
+    // Return the smallest i such that c < list[i].  Assume
+    // list[len - 1] == HIGH and that c is legal (0..HIGH-1).
+    if (c < list[lo])
+        return lo;
+    // High runner test.  c is often after the last range, so an
+    // initial check for this condition pays off.
+    if (lo >= hi || c >= list[hi-1])
+        return hi;
+    // invariant: c >= list[lo]
+    // invariant: c < list[hi]
+    for (;;) {
+        int32_t i = (lo + hi) >> 1;
+        if (i == lo) {
+            break; // Found!
+        } else if (c < list[i]) {
+            hi = i;
+        } else {
+            lo = i;
+        }
+    }
+    return hi;
+}
+
+UBool
+BMPSet::contains(UChar32 c) const {
+    if((uint32_t)c<=0x7f) {
+        return (UBool)asciiBytes[c];
+    } else if((uint32_t)c<=0x7ff) {
+        return (UBool)((table7FF[c&0x3f]&((uint32_t)1<<(c>>6)))!=0);
+    } else if((uint32_t)c<0xd800 || (c>=0xe000 && c<=0xffff)) {
+        int lead=c>>12;
+        uint32_t twoBits=(bmpBlockBits[(c>>6)&0x3f]>>lead)&0x10001;
+        if(twoBits<=1) {
+            // All 64 code points with the same bits 15..6
+            // are either in the set or not.
+            return (UBool)twoBits;
+        } else {
+            // Look up the code point in its 4k block of code points.
+            return containsSlow(c, list4kStarts[lead], list4kStarts[lead+1]);
+        }
+    } else if((uint32_t)c<=0x10ffff) {
+        // surrogate or supplementary code point
+        return containsSlow(c, list4kStarts[0xd], list4kStarts[0x11]);
+    } else {
+        // Out-of-range code points get FALSE, consistent with long-standing
+        // behavior of UnicodeSet::contains(c).
+        return FALSE;
+    }
+}
+
+/*
+ * Check for sufficient length for trail unit for each surrogate pair.
+ * Handle single surrogates as surrogate code points as usual in ICU.
+ */
+const UChar *
+BMPSet::span(const UChar *s, const UChar *limit, USetSpanCondition spanCondition) const {
+    UChar c, c2;
+
+    if(spanCondition) {
+        // span
+        do {
+            c=*s;
+            if(c<=0x7f) {
+                if(!asciiBytes[c]) {
+                    break;
+                }
+            } else if(c<=0x7ff) {
+                if((table7FF[c&0x3f]&((uint32_t)1<<(c>>6)))==0) {
+                    break;
+                }
+            } else if(c<0xd800 || c>=0xe000) {
+                int lead=c>>12;
+                uint32_t twoBits=(bmpBlockBits[(c>>6)&0x3f]>>lead)&0x10001;
+                if(twoBits<=1) {
+                    // All 64 code points with the same bits 15..6
+                    // are either in the set or not.
+                    if(twoBits==0) {
+                        break;
+                    }
+                } else {
+                    // Look up the code point in its 4k block of code points.
+                    if(!containsSlow(c, list4kStarts[lead], list4kStarts[lead+1])) {
+                        break;
+                    }
+                }
+            } else if(c>=0xdc00 || (s+1)==limit || (c2=s[1])<0xdc00 || c2>=0xe000) {
+                // surrogate code point
+                if(!containsSlow(c, list4kStarts[0xd], list4kStarts[0xe])) {
+                    break;
+                }
+            } else {
+                // surrogate pair
+                if(!containsSlow(U16_GET_SUPPLEMENTARY(c, c2), list4kStarts[0x10], list4kStarts[0x11])) {
+                    break;
+                }
+                ++s;
+            }
+        } while(++s<limit);
+    } else {
+        // span not
+        do {
+            c=*s;
+            if(c<=0x7f) {
+                if(asciiBytes[c]) {
+                    break;
+                }
+            } else if(c<=0x7ff) {
+                if((table7FF[c&0x3f]&((uint32_t)1<<(c>>6)))!=0) {
+                    break;
+                }
+            } else if(c<0xd800 || c>=0xe000) {
+                int lead=c>>12;
+                uint32_t twoBits=(bmpBlockBits[(c>>6)&0x3f]>>lead)&0x10001;
+                if(twoBits<=1) {
+                    // All 64 code points with the same bits 15..6
+                    // are either in the set or not.
+                    if(twoBits!=0) {
+                        break;
+                    }
+                } else {
+                    // Look up the code point in its 4k block of code points.
+                    if(containsSlow(c, list4kStarts[lead], list4kStarts[lead+1])) {
+                        break;
+                    }
+                }
+            } else if(c>=0xdc00 || (s+1)==limit || (c2=s[1])<0xdc00 || c2>=0xe000) {
+                // surrogate code point
+                if(containsSlow(c, list4kStarts[0xd], list4kStarts[0xe])) {
+                    break;
+                }
+            } else {
+                // surrogate pair
+                if(containsSlow(U16_GET_SUPPLEMENTARY(c, c2), list4kStarts[0x10], list4kStarts[0x11])) {
+                    break;
+                }
+                ++s;
+            }
+        } while(++s<limit);
+    }
+    return s;
+}
+
+/* Symmetrical with span(). */
+const UChar *
+BMPSet::spanBack(const UChar *s, const UChar *limit, USetSpanCondition spanCondition) const {
+    UChar c, c2;
+
+    if(spanCondition) {
+        // span
+        for(;;) {
+            c=*(--limit);
+            if(c<=0x7f) {
+                if(!asciiBytes[c]) {
+                    break;
+                }
+            } else if(c<=0x7ff) {
+                if((table7FF[c&0x3f]&((uint32_t)1<<(c>>6)))==0) {
+                    break;
+                }
+            } else if(c<0xd800 || c>=0xe000) {
+                int lead=c>>12;
+                uint32_t twoBits=(bmpBlockBits[(c>>6)&0x3f]>>lead)&0x10001;
+                if(twoBits<=1) {
+                    // All 64 code points with the same bits 15..6
+                    // are either in the set or not.
+                    if(twoBits==0) {
+                        break;
+                    }
+                } else {
+                    // Look up the code point in its 4k block of code points.
+                    if(!containsSlow(c, list4kStarts[lead], list4kStarts[lead+1])) {
+                        break;
+                    }
+                }
+            } else if(c<0xdc00 || s==limit || (c2=*(limit-1))<0xd800 || c2>=0xdc00) {
+                // surrogate code point
+                if(!containsSlow(c, list4kStarts[0xd], list4kStarts[0xe])) {
+                    break;
+                }
+            } else {
+                // surrogate pair
+                if(!containsSlow(U16_GET_SUPPLEMENTARY(c2, c), list4kStarts[0x10], list4kStarts[0x11])) {
+                    break;
+                }
+                --limit;
+            }
+            if(s==limit) {
+                return s;
+            }
+        }
+    } else {
+        // span not
+        for(;;) {
+            c=*(--limit);
+            if(c<=0x7f) {
+                if(asciiBytes[c]) {
+                    break;
+                }
+            } else if(c<=0x7ff) {
+                if((table7FF[c&0x3f]&((uint32_t)1<<(c>>6)))!=0) {
+                    break;
+                }
+            } else if(c<0xd800 || c>=0xe000) {
+                int lead=c>>12;
+                uint32_t twoBits=(bmpBlockBits[(c>>6)&0x3f]>>lead)&0x10001;
+                if(twoBits<=1) {
+                    // All 64 code points with the same bits 15..6
+                    // are either in the set or not.
+                    if(twoBits!=0) {
+                        break;
+                    }
+                } else {
+                    // Look up the code point in its 4k block of code points.
+                    if(containsSlow(c, list4kStarts[lead], list4kStarts[lead+1])) {
+                        break;
+                    }
+                }
+            } else if(c<0xdc00 || s==limit || (c2=*(limit-1))<0xd800 || c2>=0xdc00) {
+                // surrogate code point
+                if(containsSlow(c, list4kStarts[0xd], list4kStarts[0xe])) {
+                    break;
+                }
+            } else {
+                // surrogate pair
+                if(containsSlow(U16_GET_SUPPLEMENTARY(c2, c), list4kStarts[0x10], list4kStarts[0x11])) {
+                    break;
+                }
+                --limit;
+            }
+            if(s==limit) {
+                return s;
+            }
+        }
+    }
+    return limit+1;
+}
+
+/*
+ * Precheck for sufficient trail bytes at end of string only once per span.
+ * Check validity.
+ */
+const uint8_t *
+BMPSet::spanUTF8(const uint8_t *s, int32_t length, USetSpanCondition spanCondition) const {
+    const uint8_t *limit=s+length;
+    uint8_t b=*s;
+    if((int8_t)b>=0) {
+        // Initial all-ASCII span.
+        if(spanCondition) {
+            do {
+                if(!asciiBytes[b] || ++s==limit) {
+                    return s;
+                }
+                b=*s;
+            } while((int8_t)b>=0);
+        } else {
+            do {
+                if(asciiBytes[b] || ++s==limit) {
+                    return s;
+                }
+                b=*s;
+            } while((int8_t)b>=0);
+        }
+        length=(int32_t)(limit-s);
+    }
+
+    if(spanCondition!=USET_SPAN_NOT_CONTAINED) {
+        spanCondition=USET_SPAN_CONTAINED;  // Pin to 0/1 values.
+    }
+
+    const uint8_t *limit0=limit;
+
+    /*
+     * Make sure that the last 1/2/3/4-byte sequence before limit is complete
+     * or runs into a lead byte.
+     * In the span loop compare s with limit only once
+     * per multi-byte character.
+     *
+     * Give a trailing illegal sequence the same value as the result of contains(FFFD),
+     * including it if that is part of the span, otherwise set limit0 to before
+     * the truncated sequence.
+     */
+    b=*(limit-1);
+    if((int8_t)b<0) {
+        // b>=0x80: lead or trail byte
+        if(b<0xc0) {
+            // single trail byte, check for preceding 3- or 4-byte lead byte
+            if(length>=2 && (b=*(limit-2))>=0xe0) {
+                limit-=2;
+                if(asciiBytes[0x80]!=spanCondition) {
+                    limit0=limit;
+                }
+            } else if(b<0xc0 && b>=0x80 && length>=3 && (b=*(limit-3))>=0xf0) {
+                // 4-byte lead byte with only two trail bytes
+                limit-=3;
+                if(asciiBytes[0x80]!=spanCondition) {
+                    limit0=limit;
+                }
+            }
+        } else {
+            // lead byte with no trail bytes
+            --limit;
+            if(asciiBytes[0x80]!=spanCondition) {
+                limit0=limit;
+            }
+        }
+    }
+
+    uint8_t t1, t2, t3;
+
+    while(s<limit) {
+        b=*s;
+        if(b<0xc0) {
+            // ASCII; or trail bytes with the result of contains(FFFD).
+            if(spanCondition) {
+                do {
+                    if(!asciiBytes[b]) {
+                        return s;
+                    } else if(++s==limit) {
+                        return limit0;
+                    }
+                    b=*s;
+                } while(b<0xc0);
+            } else {
+                do {
+                    if(asciiBytes[b]) {
+                        return s;
+                    } else if(++s==limit) {
+                        return limit0;
+                    }
+                    b=*s;
+                } while(b<0xc0);
+            }
+        }
+        ++s;  // Advance past the lead byte.
+        if(b>=0xe0) {
+            if(b<0xf0) {
+                if( /* handle U+0000..U+FFFF inline */
+                    (t1=(uint8_t)(s[0]-0x80)) <= 0x3f &&
+                    (t2=(uint8_t)(s[1]-0x80)) <= 0x3f
+                ) {
+                    b&=0xf;
+                    uint32_t twoBits=(bmpBlockBits[t1]>>b)&0x10001;
+                    if(twoBits<=1) {
+                        // All 64 code points with this lead byte and middle trail byte
+                        // are either in the set or not.
+                        if(twoBits!=(uint32_t)spanCondition) {
+                            return s-1;
+                        }
+                    } else {
+                        // Look up the code point in its 4k block of code points.
+                        UChar32 c=(b<<12)|(t1<<6)|t2;
+                        if(containsSlow(c, list4kStarts[b], list4kStarts[b+1]) != spanCondition) {
+                            return s-1;
+                        }
+                    }
+                    s+=2;
+                    continue;
+                }
+            } else if( /* handle U+10000..U+10FFFF inline */
+                (t1=(uint8_t)(s[0]-0x80)) <= 0x3f &&
+                (t2=(uint8_t)(s[1]-0x80)) <= 0x3f &&
+                (t3=(uint8_t)(s[2]-0x80)) <= 0x3f
+            ) {
+                // Give an illegal sequence the same value as the result of contains(FFFD).
+                UChar32 c=((UChar32)(b-0xf0)<<18)|((UChar32)t1<<12)|(t2<<6)|t3;
+                if( (   (0x10000<=c && c<=0x10ffff) ?
+                            containsSlow(c, list4kStarts[0x10], list4kStarts[0x11]) :
+                            asciiBytes[0x80]
+                    ) != spanCondition
+                ) {
+                    return s-1;
+                }
+                s+=3;
+                continue;
+            }
+        } else /* 0xc0<=b<0xe0 */ {
+            if( /* handle U+0000..U+07FF inline */
+                (t1=(uint8_t)(*s-0x80)) <= 0x3f
+            ) {
+                if((USetSpanCondition)((table7FF[t1]&((uint32_t)1<<(b&0x1f)))!=0) != spanCondition) {
+                    return s-1;
+                }
+                ++s;
+                continue;
+            }
+        }
+
+        // Give an illegal sequence the same value as the result of contains(FFFD).
+        // Handle each byte of an illegal sequence separately to simplify the code;
+        // no need to optimize error handling.
+        if(asciiBytes[0x80]!=spanCondition) {
+            return s-1;
+        }
+    }
+
+    return limit0;
+}
+
+/*
+ * While going backwards through UTF-8 optimize only for ASCII.
+ * Unlike UTF-16, UTF-8 is not forward-backward symmetrical, that is, it is not
+ * possible to tell from the last byte in a multi-byte sequence how many
+ * preceding bytes there should be. Therefore, going backwards through UTF-8
+ * is much harder than going forward.
+ */
+int32_t
+BMPSet::spanBackUTF8(const uint8_t *s, int32_t length, USetSpanCondition spanCondition) const {
+    if(spanCondition!=USET_SPAN_NOT_CONTAINED) {
+        spanCondition=USET_SPAN_CONTAINED;  // Pin to 0/1 values.
+    }
+
+    uint8_t b;
+
+    do {
+        b=s[--length];
+        if((int8_t)b>=0) {
+            // ASCII sub-span
+            if(spanCondition) {
+                do {
+                    if(!asciiBytes[b]) {
+                        return length+1;
+                    } else if(length==0) {
+                        return 0;
+                    }
+                    b=s[--length];
+                } while((int8_t)b>=0);
+            } else {
+                do {
+                    if(asciiBytes[b]) {
+                        return length+1;
+                    } else if(length==0) {
+                        return 0;
+                    }
+                    b=s[--length];
+                } while((int8_t)b>=0);
+            }
+        }
+
+        int32_t prev=length;
+        UChar32 c;
+        if(b<0xc0) {
+            // trail byte: collect a multi-byte character
+            c=utf8_prevCharSafeBody(s, 0, &length, b, -1);
+            if(c<0) {
+                c=0xfffd;
+            }
+        } else {
+            // lead byte in last-trail position
+            c=0xfffd;
+        }
+        // c is a valid code point, not ASCII, not a surrogate
+        if(c<=0x7ff) {
+            if((USetSpanCondition)((table7FF[c&0x3f]&((uint32_t)1<<(c>>6)))!=0) != spanCondition) {
+                return prev+1;
+            }
+        } else if(c<=0xffff) {
+            int lead=c>>12;
+            uint32_t twoBits=(bmpBlockBits[(c>>6)&0x3f]>>lead)&0x10001;
+            if(twoBits<=1) {
+                // All 64 code points with the same bits 15..6
+                // are either in the set or not.
+                if(twoBits!=(uint32_t)spanCondition) {
+                    return prev+1;
+                }
+            } else {
+                // Look up the code point in its 4k block of code points.
+                if(containsSlow(c, list4kStarts[lead], list4kStarts[lead+1]) != spanCondition) {
+                    return prev+1;
+                }
+            }
+        } else {
+            if(containsSlow(c, list4kStarts[0x10], list4kStarts[0x11]) != spanCondition) {
+                return prev+1;
+            }
+        }
+    } while(length>0);
+    return 0;
+}
+
+U_NAMESPACE_END
diff --git a/source/common/bmpset.h b/source/common/bmpset.h
new file mode 100644
index 0000000..d9e08ea
--- /dev/null
+++ b/source/common/bmpset.h
@@ -0,0 +1,161 @@
+/*
+******************************************************************************
+*
+*   Copyright (C) 2007, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*   file name:  bmpset.h
+*   encoding:   US-ASCII
+*   tab size:   8 (not used)
+*   indentation:4
+*
+*   created on: 2007jan29
+*   created by: Markus W. Scherer
+*/
+
+#ifndef __BMPSET_H__
+#define __BMPSET_H__
+
+#include "unicode/utypes.h"
+#include "unicode/uniset.h"
+
+U_NAMESPACE_BEGIN
+
+/*
+ * Helper class for frozen UnicodeSets, implements contains() and span()
+ * optimized for BMP code points. Structured to be UTF-8-friendly.
+ *
+ * ASCII: Look up bytes.
+ * 2-byte characters: Bits organized vertically.
+ * 3-byte characters: Use zero/one/mixed data per 64-block in U+0000..U+FFFF,
+ *                    with mixed for illegal ranges.
+ * Supplementary characters: Call contains() on the parent set.
+ */
+class BMPSet : public UMemory {
+public:
+    BMPSet(const int32_t *parentList, int32_t parentListLength);
+    BMPSet(const BMPSet &otherBMPSet, const int32_t *newParentList, int32_t newParentListLength);
+    virtual ~BMPSet();
+
+    virtual UBool contains(UChar32 c) const;
+
+    /*
+     * Span the initial substring for which each character c has spanCondition==contains(c).
+     * It must be s<limit and spanCondition==0 or 1.
+     * @return The string pointer which limits the span.
+     */
+    const UChar *span(const UChar *s, const UChar *limit, USetSpanCondition spanCondition) const;
+
+    /*
+     * Span the trailing substring for which each character c has spanCondition==contains(c).
+     * It must be s<limit and spanCondition==0 or 1.
+     * @return The string pointer which starts the span.
+     */
+    const UChar *spanBack(const UChar *s, const UChar *limit, USetSpanCondition spanCondition) const;
+
+    /*
+     * Span the initial substring for which each character c has spanCondition==contains(c).
+     * It must be length>0 and spanCondition==0 or 1.
+     * @return The string pointer which limits the span.
+     */
+    const uint8_t *spanUTF8(const uint8_t *s, int32_t length, USetSpanCondition spanCondition) const;
+
+    /*
+     * Span the trailing substring for which each character c has spanCondition==contains(c).
+     * It must be length>0 and spanCondition==0 or 1.
+     * @return The start of the span.
+     */
+    int32_t spanBackUTF8(const uint8_t *s, int32_t length, USetSpanCondition spanCondition) const;
+
+private:
+    void initBits();
+    void overrideIllegal();
+
+    /**
+     * Same as UnicodeSet::findCodePoint(UChar32 c) const except that the
+     * binary search is restricted for finding code points in a certain range.
+     *
+     * For restricting the search for finding in the range start..end,
+     * pass in
+     *   lo=findCodePoint(start) and
+     *   hi=findCodePoint(end)
+     * with 0<=lo<=hi<len.
+     * findCodePoint(c) defaults to lo=0 and hi=len-1.
+     *
+     * @param c a character in a subrange of MIN_VALUE..MAX_VALUE
+     * @param lo The lowest index to be returned.
+     * @param hi The highest index to be returned.
+     * @return the smallest integer i in the range lo..hi,
+     *         inclusive, such that c < list[i]
+     */
+    int32_t findCodePoint(UChar32 c, int32_t lo, int32_t hi) const;
+
+    inline UBool containsSlow(UChar32 c, int32_t lo, int32_t hi) const;
+
+    /*
+     * One byte per ASCII character, or trail byte in lead position.
+     * 0 or 1 for ASCII characters.
+     * The value for trail bytes is the result of contains(FFFD)
+     * for faster validity checking at runtime.
+     */
+    UBool asciiBytes[0xc0];
+
+    /*
+     * One bit per code point from U+0000..U+07FF.
+     * The bits are organized vertically; consecutive code points
+     * correspond to the same bit positions in consecutive table words.
+     * With code point parts
+     *   lead=c{10..6}
+     *   trail=c{5..0}
+     * it is set.contains(c)==(table7FF[trail] bit lead)
+     *
+     * Bits for 0..7F (non-shortest forms) are set to the result of contains(FFFD)
+     * for faster validity checking at runtime.
+     */
+    uint32_t table7FF[64];
+
+    /*
+     * One bit per 64 BMP code points.
+     * The bits are organized vertically; consecutive 64-code point blocks
+     * correspond to the same bit position in consecutive table words.
+     * With code point parts
+     *   lead=c{15..12}
+     *   t1=c{11..6}
+     * test bits (lead+16) and lead in bmpBlockBits[t1].
+     * If the upper bit is 0, then the lower bit indicates if contains(c)
+     * for all code points in the 64-block.
+     * If the upper bit is 1, then the block is mixed and set.contains(c)
+     * must be called.
+     *
+     * Bits for 0..7FF (non-shortest forms) and D800..DFFF are set to
+     * the result of contains(FFFD) for faster validity checking at runtime.
+     */
+    uint32_t bmpBlockBits[64];
+
+    /*
+     * Inversion list indexes for restricted binary searches in
+     * findCodePoint(), from
+     * findCodePoint(U+0800, U+1000, U+2000, .., U+F000, U+10000).
+     * U+0800 is the first 3-byte-UTF-8 code point. Code points below U+0800 are
+     * always looked up in the bit tables.
+     * The last pair of indexes is for finding supplementary code points.
+     */
+    int32_t list4kStarts[18];
+
+    /*
+     * The inversion list of the parent set, for the slower contains() implementation
+     * for mixed BMP blocks and for supplementary code points.
+     * The list is terminated with list[listLength-1]=0x110000.
+     */
+    const int32_t *list;
+    int32_t listLength;
+};
+
+inline UBool BMPSet::containsSlow(UChar32 c, int32_t lo, int32_t hi) const {
+    return (UBool)(findCodePoint(c, lo, hi) & 1);
+}
+
+U_NAMESPACE_END
+
+#endif
diff --git a/source/common/brkeng.cpp b/source/common/brkeng.cpp
new file mode 100644
index 0000000..2419be5
--- /dev/null
+++ b/source/common/brkeng.cpp
@@ -0,0 +1,290 @@
+/**
+ ************************************************************************************
+ * Copyright (C) 2006-2007, International Business Machines Corporation and others. *
+ * All Rights Reserved.                                                             *
+ ************************************************************************************
+ */
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_BREAK_ITERATION
+
+#include "brkeng.h"
+#include "dictbe.h"
+#include "triedict.h"
+#include "unicode/uchar.h"
+#include "unicode/uniset.h"
+#include "unicode/chariter.h"
+#include "unicode/ures.h"
+#include "unicode/udata.h"
+#include "unicode/putil.h"
+#include "unicode/ustring.h"
+#include "unicode/uscript.h"
+#include "uvector.h"
+#include "umutex.h"
+#include "uresimp.h"
+#include "ubrkimpl.h"
+
+U_NAMESPACE_BEGIN
+
+/*
+ ******************************************************************
+ */
+
+LanguageBreakEngine::LanguageBreakEngine() {
+}
+
+LanguageBreakEngine::~LanguageBreakEngine() {
+}
+
+/*
+ ******************************************************************
+ */
+
+LanguageBreakFactory::LanguageBreakFactory() {
+}
+
+LanguageBreakFactory::~LanguageBreakFactory() {
+}
+
+/*
+ ******************************************************************
+ */
+
+UnhandledEngine::UnhandledEngine(UErrorCode &/*status*/) {
+    for (int32_t i = 0; i < (int32_t)(sizeof(fHandled)/sizeof(fHandled[0])); ++i) {
+        fHandled[i] = 0;
+    }
+}
+
+UnhandledEngine::~UnhandledEngine() {
+    for (int32_t i = 0; i < (int32_t)(sizeof(fHandled)/sizeof(fHandled[0])); ++i) {
+        if (fHandled[i] != 0) {
+            delete fHandled[i];
+        }
+    }
+}
+
+UBool
+UnhandledEngine::handles(UChar32 c, int32_t breakType) const {
+    return (breakType >= 0 && breakType < (int32_t)(sizeof(fHandled)/sizeof(fHandled[0]))
+        && fHandled[breakType] != 0 && fHandled[breakType]->contains(c));
+}
+
+int32_t
+UnhandledEngine::findBreaks( UText *text,
+                                 int32_t startPos,
+                                 int32_t endPos,
+                                 UBool reverse,
+                                 int32_t breakType,
+                                 UStack &/*foundBreaks*/ ) const {
+    if (breakType >= 0 && breakType < (int32_t)(sizeof(fHandled)/sizeof(fHandled[0]))) {
+        UChar32 c = utext_current32(text); 
+        if (reverse) {
+            while((int32_t)utext_getNativeIndex(text) > startPos && fHandled[breakType]->contains(c)) {
+                c = utext_previous32(text);
+            }
+        }
+        else {
+            while((int32_t)utext_getNativeIndex(text) < endPos && fHandled[breakType]->contains(c)) {
+                utext_next32(text);            // TODO:  recast loop to work with post-increment operations.
+                c = utext_current32(text);
+            }
+        }
+    }
+    return 0;
+}
+
+void
+UnhandledEngine::handleCharacter(UChar32 c, int32_t breakType) {
+    if (breakType >= 0 && breakType < (int32_t)(sizeof(fHandled)/sizeof(fHandled[0]))) {
+        if (fHandled[breakType] == 0) {
+            fHandled[breakType] = new UnicodeSet();
+            if (fHandled[breakType] == 0) {
+                return;
+            }
+        }
+        if (!fHandled[breakType]->contains(c)) {
+            UErrorCode status = U_ZERO_ERROR;
+            // Apply the entire script of the character.
+            int32_t script = u_getIntPropertyValue(c, UCHAR_SCRIPT);
+            fHandled[breakType]->applyIntPropertyValue(UCHAR_SCRIPT, script, status);
+        }
+    }
+}
+
+/*
+ ******************************************************************
+ */
+
+ICULanguageBreakFactory::ICULanguageBreakFactory(UErrorCode &/*status*/) {
+    fEngines = 0;
+}
+
+ICULanguageBreakFactory::~ICULanguageBreakFactory() {
+    if (fEngines != 0) {
+        delete fEngines;
+    }
+}
+
+U_NAMESPACE_END
+U_CDECL_BEGIN
+static void U_CALLCONV _deleteEngine(void *obj) {
+    delete (const U_NAMESPACE_QUALIFIER LanguageBreakEngine *) obj;
+}
+U_CDECL_END
+U_NAMESPACE_BEGIN
+
+const LanguageBreakEngine *
+ICULanguageBreakFactory::getEngineFor(UChar32 c, int32_t breakType) {
+    UBool       needsInit;
+    int32_t     i;
+    const LanguageBreakEngine *lbe = NULL;
+    UErrorCode  status = U_ZERO_ERROR;
+
+    // TODO: The global mutex should not be used.
+    // The global mutex should only be used for short periods.
+    // A ICULanguageBreakFactory specific mutex should be used.
+    umtx_lock(NULL);
+    needsInit = (UBool)(fEngines == NULL);
+    if (!needsInit) {
+        i = fEngines->size();
+        while (--i >= 0) {
+            lbe = (const LanguageBreakEngine *)(fEngines->elementAt(i));
+            if (lbe != NULL && lbe->handles(c, breakType)) {
+                break;
+            }
+            lbe = NULL;
+        }
+    }
+    umtx_unlock(NULL);
+    
+    if (lbe != NULL) {
+        return lbe;
+    }
+    
+    if (needsInit) {
+        UStack  *engines = new UStack(_deleteEngine, NULL, status);
+        if (U_SUCCESS(status) && engines == NULL) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+        }
+        else if (U_FAILURE(status)) {
+            delete engines;
+            engines = NULL;
+        }
+        else {
+            umtx_lock(NULL);
+            if (fEngines == NULL) {
+                fEngines = engines;
+                engines = NULL;
+            }
+            umtx_unlock(NULL);
+            delete engines;
+        }
+    }
+    
+    if (fEngines == NULL) {
+        return NULL;
+    }
+
+    // We didn't find an engine the first time through, or there was no
+    // stack. Create an engine.
+    const LanguageBreakEngine *newlbe = loadEngineFor(c, breakType);
+    
+    // Now get the lock, and see if someone else has created it in the
+    // meantime
+    umtx_lock(NULL);
+    i = fEngines->size();
+    while (--i >= 0) {
+        lbe = (const LanguageBreakEngine *)(fEngines->elementAt(i));
+        if (lbe != NULL && lbe->handles(c, breakType)) {
+            break;
+        }
+        lbe = NULL;
+    }
+    if (lbe == NULL && newlbe != NULL) {
+        fEngines->push((void *)newlbe, status);
+        lbe = newlbe;
+        newlbe = NULL;
+    }
+    umtx_unlock(NULL);
+    
+    delete newlbe;
+
+    return lbe;
+}
+
+const LanguageBreakEngine *
+ICULanguageBreakFactory::loadEngineFor(UChar32 c, int32_t breakType) {
+    UErrorCode status = U_ZERO_ERROR;
+    UScriptCode code = uscript_getScript(c, &status);
+    if (U_SUCCESS(status)) {
+        const CompactTrieDictionary *dict = loadDictionaryFor(code, breakType);
+        if (dict != NULL) {
+            const LanguageBreakEngine *engine = NULL;
+            switch(code) {
+            case USCRIPT_THAI:
+                engine = new ThaiBreakEngine(dict, status);
+                break;
+            default:
+                break;
+            }
+            if (engine == NULL) {
+                delete dict;
+            }
+            else if (U_FAILURE(status)) {
+                delete engine;
+                engine = NULL;
+            }
+            return engine;
+        }
+    }
+    return NULL;
+}
+
+const CompactTrieDictionary *
+ICULanguageBreakFactory::loadDictionaryFor(UScriptCode script, int32_t /*breakType*/) {
+    UErrorCode status = U_ZERO_ERROR;
+    // Open root from brkitr tree.
+    char dictnbuff[256];
+    char ext[4]={'\0'};
+
+    UResourceBundle *b = ures_open(U_ICUDATA_BRKITR, "", &status);
+    b = ures_getByKeyWithFallback(b, "dictionaries", b, &status);
+    b = ures_getByKeyWithFallback(b, uscript_getShortName(script), b, &status);
+    int32_t dictnlength = 0;
+    const UChar *dictfname = ures_getString(b, &dictnlength, &status);
+    if (U_SUCCESS(status) && (size_t)dictnlength >= sizeof(dictnbuff)) {
+        dictnlength = 0;
+        status = U_BUFFER_OVERFLOW_ERROR;
+    }
+    if (U_SUCCESS(status) && dictfname) {
+        UChar* extStart=u_strchr(dictfname, 0x002e);
+        int len = 0;
+        if(extStart!=NULL){
+            len = extStart-dictfname;
+            u_UCharsToChars(extStart+1, ext, sizeof(ext)); // nul terminates the buff
+            u_UCharsToChars(dictfname, dictnbuff, len);
+        }
+        dictnbuff[len]=0; // nul terminate
+    }
+    ures_close(b);
+    UDataMemory *file = udata_open(U_ICUDATA_BRKITR, ext, dictnbuff, &status);
+    if (U_SUCCESS(status)) {
+        const CompactTrieDictionary *dict = new CompactTrieDictionary(
+            file, status);
+        if (U_SUCCESS(status) && dict == NULL) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+        }
+        if (U_FAILURE(status)) {
+            delete dict;
+            dict = NULL;
+        }
+        return dict;
+    }
+    return NULL;
+}
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
diff --git a/source/common/brkeng.h b/source/common/brkeng.h
new file mode 100644
index 0000000..618b2ae
--- /dev/null
+++ b/source/common/brkeng.h
@@ -0,0 +1,292 @@
+/**
+ ************************************************************************************
+ * Copyright (C) 2006-2007, International Business Machines Corporation and others. *
+ * All Rights Reserved.                                                             *
+ ************************************************************************************
+ */
+
+#ifndef BRKENG_H
+#define BRKENG_H
+
+#include "unicode/utypes.h"
+#include "unicode/uobject.h"
+#include "unicode/utext.h"
+#include "unicode/uscript.h"
+
+U_NAMESPACE_BEGIN
+
+class UnicodeSet;
+class UStack;
+class CompactTrieDictionary;
+
+/*******************************************************************
+ * LanguageBreakEngine
+ */
+
+/**
+ * <p>LanguageBreakEngines implement language-specific knowledge for
+ * finding text boundaries within a run of characters belonging to a
+ * specific set. The boundaries will be of a specific kind, e.g. word,
+ * line, etc.</p>
+ *
+ * <p>LanguageBreakEngines should normally be implemented so as to
+ * be shared between threads without locking.</p>
+ */
+class LanguageBreakEngine : public UMemory {
+ public:
+
+  /**
+   * <p>Default constructor.</p>
+   *
+   */
+  LanguageBreakEngine();
+
+  /**
+   * <p>Virtual destructor.</p>
+   */
+  virtual ~LanguageBreakEngine();
+
+ /**
+  * <p>Indicate whether this engine handles a particular character for
+  * a particular kind of break.</p>
+  *
+  * @param c A character which begins a run that the engine might handle
+  * @param breakType The type of text break which the caller wants to determine
+  * @return TRUE if this engine handles the particular character and break
+  * type.
+  */
+  virtual UBool handles(UChar32 c, int32_t breakType) const = 0;
+
+ /**
+  * <p>Find any breaks within a run in the supplied text.</p>
+  *
+  * @param text A UText representing the text. The
+  * iterator is left at the end of the run of characters which the engine
+  * is capable of handling.
+  * @param startPos The start of the run within the supplied text.
+  * @param endPos The end of the run within the supplied text.
+  * @param reverse Whether the caller is looking for breaks in a reverse
+  * direction.
+  * @param breakType The type of break desired, or -1.
+  * @param foundBreaks An allocated C array of the breaks found, if any
+  * @return The number of breaks found.
+  */
+  virtual int32_t findBreaks( UText *text,
+                              int32_t startPos,
+                              int32_t endPos,
+                              UBool reverse,
+                              int32_t breakType,
+                              UStack &foundBreaks ) const = 0;
+
+};
+
+/*******************************************************************
+ * LanguageBreakFactory
+ */
+
+/**
+ * <p>LanguageBreakFactorys find and return a LanguageBreakEngine
+ * that can determine breaks for characters in a specific set, if
+ * such an object can be found.</p>
+ *
+ * <p>If a LanguageBreakFactory is to be shared between threads,
+ * appropriate synchronization must be used; there is none internal
+ * to the factory.</p>
+ *
+ * <p>A LanguageBreakEngine returned by a LanguageBreakFactory can
+ * normally be shared between threads without synchronization, unless
+ * the specific subclass of LanguageBreakFactory indicates otherwise.</p>
+ *
+ * <p>A LanguageBreakFactory is responsible for deleting any LanguageBreakEngine
+ * it returns when it itself is deleted, unless the specific subclass of
+ * LanguageBreakFactory indicates otherwise. Naturally, the factory should
+ * not be deleted until the LanguageBreakEngines it has returned are no
+ * longer needed.</p>
+ */
+class LanguageBreakFactory : public UMemory {
+ public:
+
+  /**
+   * <p>Default constructor.</p>
+   *
+   */
+  LanguageBreakFactory();
+
+  /**
+   * <p>Virtual destructor.</p>
+   */
+  virtual ~LanguageBreakFactory();
+
+ /**
+  * <p>Find and return a LanguageBreakEngine that can find the desired
+  * kind of break for the set of characters to which the supplied
+  * character belongs. It is up to the set of available engines to
+  * determine what the sets of characters are.</p>
+  *
+  * @param c A character that begins a run for which a LanguageBreakEngine is
+  * sought.
+  * @param breakType The kind of text break for which a LanguageBreakEngine is
+  * sought.
+  * @return A LanguageBreakEngine with the desired characteristics, or 0.
+  */
+  virtual const LanguageBreakEngine *getEngineFor(UChar32 c, int32_t breakType) = 0;
+
+};
+
+/*******************************************************************
+ * UnhandledEngine
+ */
+
+/**
+ * <p>UnhandledEngine is a special subclass of LanguageBreakEngine that
+ * handles characters that no other LanguageBreakEngine is available to
+ * handle. It is told the character and the type of break; at its
+ * discretion it may handle more than the specified character (e.g.,
+ * the entire script to which that character belongs.</p>
+ *
+ * <p>UnhandledEngines may not be shared between threads without
+ * external synchronization.</p>
+ */
+
+class UnhandledEngine : public LanguageBreakEngine {
+ private:
+
+    /**
+     * The sets of characters handled, for each break type
+     * @internal
+     */
+
+  UnicodeSet    *fHandled[4];
+
+ public:
+
+  /**
+   * <p>Default constructor.</p>
+   *
+   */
+  UnhandledEngine(UErrorCode &status);
+
+  /**
+   * <p>Virtual destructor.</p>
+   */
+  virtual ~UnhandledEngine();
+
+ /**
+  * <p>Indicate whether this engine handles a particular character for
+  * a particular kind of break.</p>
+  *
+  * @param c A character which begins a run that the engine might handle
+  * @param breakType The type of text break which the caller wants to determine
+  * @return TRUE if this engine handles the particular character and break
+  * type.
+  */
+  virtual UBool handles(UChar32 c, int32_t breakType) const;
+
+ /**
+  * <p>Find any breaks within a run in the supplied text.</p>
+  *
+  * @param text A UText representing the text (TODO: UText). The
+  * iterator is left at the end of the run of characters which the engine
+  * is capable of handling.
+  * @param startPos The start of the run within the supplied text.
+  * @param endPos The end of the run within the supplied text.
+  * @param reverse Whether the caller is looking for breaks in a reverse
+  * direction.
+  * @param breakType The type of break desired, or -1.
+  * @param foundBreaks An allocated C array of the breaks found, if any
+  * @return The number of breaks found.
+  */
+  virtual int32_t findBreaks( UText *text,
+                              int32_t startPos,
+                              int32_t endPos,
+                              UBool reverse,
+                              int32_t breakType,
+                              UStack &foundBreaks ) const;
+
+ /**
+  * <p>Tell the engine to handle a particular character and break type.</p>
+  *
+  * @param c A character which the engine should handle
+  * @param breakType The type of text break for which the engine should handle c
+  */
+  virtual void handleCharacter(UChar32 c, int32_t breakType);
+
+};
+
+/*******************************************************************
+ * ICULanguageBreakFactory
+ */
+
+/**
+ * <p>ICULanguageBreakFactory is the default LanguageBreakFactory for
+ * ICU. It creates dictionary-based LanguageBreakEngines from dictionary
+ * data in the ICU data file.</p>
+ */
+class ICULanguageBreakFactory : public LanguageBreakFactory {
+ private:
+
+    /**
+     * The stack of break engines created by this factory
+     * @internal
+     */
+
+  UStack    *fEngines;
+
+ public:
+
+  /**
+   * <p>Standard constructor.</p>
+   *
+   */
+  ICULanguageBreakFactory(UErrorCode &status);
+
+  /**
+   * <p>Virtual destructor.</p>
+   */
+  virtual ~ICULanguageBreakFactory();
+
+ /**
+  * <p>Find and return a LanguageBreakEngine that can find the desired
+  * kind of break for the set of characters to which the supplied
+  * character belongs. It is up to the set of available engines to
+  * determine what the sets of characters are.</p>
+  *
+  * @param c A character that begins a run for which a LanguageBreakEngine is
+  * sought.
+  * @param breakType The kind of text break for which a LanguageBreakEngine is
+  * sought.
+  * @return A LanguageBreakEngine with the desired characteristics, or 0.
+  */
+  virtual const LanguageBreakEngine *getEngineFor(UChar32 c, int32_t breakType);
+
+ protected:
+
+ /**
+  * <p>Create a LanguageBreakEngine for the set of characters to which
+  * the supplied character belongs, for the specified break type.</p>
+  *
+  * @param c A character that begins a run for which a LanguageBreakEngine is
+  * sought.
+  * @param breakType The kind of text break for which a LanguageBreakEngine is
+  * sought.
+  * @return A LanguageBreakEngine with the desired characteristics, or 0.
+  */
+  virtual const LanguageBreakEngine *loadEngineFor(UChar32 c, int32_t breakType);
+
+ /**
+  * <p>Create a CompactTrieDictionary for the specified script and break type.</p>
+  *
+  * @param script An ISO 15924 script code that identifies the dictionary to be
+  * created.
+  * @param breakType The kind of text break for which a dictionary is
+  * sought.
+  * @return A CompactTrieDictionary with the desired characteristics, or 0.
+  */
+  virtual const CompactTrieDictionary *loadDictionaryFor(UScriptCode script, int32_t breakType);
+
+};
+
+U_NAMESPACE_END
+
+    /* BRKENG_H */
+#endif
diff --git a/source/common/brkiter.cpp b/source/common/brkiter.cpp
new file mode 100644
index 0000000..9e6ee4d
--- /dev/null
+++ b/source/common/brkiter.cpp
@@ -0,0 +1,463 @@
+/*
+*******************************************************************************
+* Copyright (C) 1997-2008, International Business Machines Corporation and    *
+* others. All Rights Reserved.                                                *
+*******************************************************************************
+*
+* File TXTBDRY.CPP
+*
+* Modification History:
+*
+*   Date        Name        Description
+*   02/18/97    aliu        Converted from OpenClass.  Added DONE.
+*   01/13/2000  helena      Added UErrorCode parameter to createXXXInstance methods.
+*****************************************************************************************
+*/
+
+// *****************************************************************************
+// This file was generated from the java source file BreakIterator.java
+// *****************************************************************************
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_BREAK_ITERATION
+
+#include "unicode/rbbi.h"
+#include "unicode/brkiter.h"
+#include "unicode/udata.h"
+#include "unicode/ures.h"
+#include "unicode/ustring.h"
+#include "ucln_cmn.h"
+#include "cstring.h"
+#include "umutex.h"
+#include "servloc.h"
+#include "locbased.h"
+#include "uresimp.h"
+#include "uassert.h"
+#include "ubrkimpl.h"
+
+// *****************************************************************************
+// class BreakIterator
+// This class implements methods for finding the location of boundaries in text.
+// Instances of BreakIterator maintain a current position and scan over text
+// returning the index of characters where boundaries occur.
+// *****************************************************************************
+
+U_NAMESPACE_BEGIN
+
+// -------------------------------------
+
+BreakIterator*
+BreakIterator::buildInstance(const Locale& loc, const char *type, int32_t kind, UErrorCode &status)
+{
+    char fnbuff[256];
+    char ext[4]={'\0'};
+    char actualLocale[ULOC_FULLNAME_CAPACITY];
+    int32_t size;
+    const UChar* brkfname = NULL;
+    UResourceBundle brkRulesStack;
+    UResourceBundle brkNameStack;
+    UResourceBundle *brkRules = &brkRulesStack;
+    UResourceBundle *brkName  = &brkNameStack;
+    RuleBasedBreakIterator *result = NULL;
+
+    if (U_FAILURE(status))
+        return NULL;
+
+    ures_initStackObject(brkRules);
+    ures_initStackObject(brkName);
+
+    // Get the locale
+    UResourceBundle *b = ures_open(U_ICUDATA_BRKITR, loc.getName(), &status);
+    /* this is a hack for now. Should be fixed when the data is fetched from
+        brk_index.txt */
+    if(status==U_USING_DEFAULT_WARNING){
+        status=U_ZERO_ERROR;
+        ures_openFillIn(b, U_ICUDATA_BRKITR, "", &status);
+    }
+
+    // Get the "boundaries" array.
+    if (U_SUCCESS(status)) {
+        brkRules = ures_getByKeyWithFallback(b, "boundaries", brkRules, &status);
+        // Get the string object naming the rules file
+        brkName = ures_getByKeyWithFallback(brkRules, type, brkName, &status);
+        // Get the actual string
+        brkfname = ures_getString(brkName, &size, &status);
+        U_ASSERT((size_t)size<sizeof(fnbuff));
+        if ((size_t)size>=sizeof(fnbuff)) {
+            size=0;
+            if (U_SUCCESS(status)) {
+                status = U_BUFFER_OVERFLOW_ERROR;
+            }
+        }
+
+        // Use the string if we found it
+        if (U_SUCCESS(status) && brkfname) {
+            uprv_strncpy(actualLocale,
+                ures_getLocale(brkName, &status),
+                sizeof(actualLocale)/sizeof(actualLocale[0]));
+
+            UChar* extStart=u_strchr(brkfname, 0x002e);
+            int len = 0;
+            if(extStart!=NULL){
+                len = extStart-brkfname;
+                u_UCharsToChars(extStart+1, ext, sizeof(ext)); // nul terminates the buff
+                u_UCharsToChars(brkfname, fnbuff, len);
+            }
+            fnbuff[len]=0; // nul terminate
+        }
+    }
+
+    ures_close(brkRules);
+    ures_close(brkName);
+
+    UDataMemory* file = udata_open(U_ICUDATA_BRKITR, ext, fnbuff, &status);
+    if (U_FAILURE(status)) {
+        ures_close(b);
+        return NULL;
+    }
+
+    // Create a RuleBasedBreakIterator
+    result = new RuleBasedBreakIterator(file, status);
+
+    // If there is a result, set the valid locale and actual locale, and the kind
+    if (U_SUCCESS(status) && result != NULL) {
+        U_LOCALE_BASED(locBased, *(BreakIterator*)result);
+        locBased.setLocaleIDs(ures_getLocaleByType(b, ULOC_VALID_LOCALE, &status), actualLocale);
+        result->setBreakType(kind);
+    }
+
+    ures_close(b);
+
+    if (U_FAILURE(status) && result != NULL) {  // Sometimes redundant check, but simple
+        delete result;
+        return NULL;
+    }
+
+    if (result == NULL) {
+        udata_close(file);
+        if (U_SUCCESS(status)) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+        }
+    }
+
+    return result;
+}
+
+// Creates a break iterator for word breaks.
+BreakIterator* U_EXPORT2
+BreakIterator::createWordInstance(const Locale& key, UErrorCode& status)
+{
+    return createInstance(key, UBRK_WORD, status);
+}
+
+// -------------------------------------
+
+// Creates a break iterator  for line breaks.
+BreakIterator* U_EXPORT2
+BreakIterator::createLineInstance(const Locale& key, UErrorCode& status)
+{
+    return createInstance(key, UBRK_LINE, status);
+}
+
+// -------------------------------------
+
+// Creates a break iterator  for character breaks.
+BreakIterator* U_EXPORT2
+BreakIterator::createCharacterInstance(const Locale& key, UErrorCode& status)
+{
+    return createInstance(key, UBRK_CHARACTER, status);
+}
+
+// -------------------------------------
+
+// Creates a break iterator  for sentence breaks.
+BreakIterator* U_EXPORT2
+BreakIterator::createSentenceInstance(const Locale& key, UErrorCode& status)
+{
+    return createInstance(key, UBRK_SENTENCE, status);
+}
+
+// -------------------------------------
+
+// Creates a break iterator for title casing breaks.
+BreakIterator* U_EXPORT2
+BreakIterator::createTitleInstance(const Locale& key, UErrorCode& status)
+{
+    return createInstance(key, UBRK_TITLE, status);
+}
+
+// -------------------------------------
+
+// Gets all the available locales that has localized text boundary data.
+const Locale* U_EXPORT2
+BreakIterator::getAvailableLocales(int32_t& count)
+{
+    return Locale::getAvailableLocales(count);
+}
+
+// -------------------------------------
+// Gets the objectLocale display name in the default locale language.
+UnicodeString& U_EXPORT2
+BreakIterator::getDisplayName(const Locale& objectLocale,
+                             UnicodeString& name)
+{
+    return objectLocale.getDisplayName(name);
+}
+
+// -------------------------------------
+// Gets the objectLocale display name in the displayLocale language.
+UnicodeString& U_EXPORT2
+BreakIterator::getDisplayName(const Locale& objectLocale,
+                             const Locale& displayLocale,
+                             UnicodeString& name)
+{
+    return objectLocale.getDisplayName(displayLocale, name);
+}
+
+// ------------------------------------------
+//
+// Default constructor and destructor
+//
+//-------------------------------------------
+
+BreakIterator::BreakIterator()
+{
+    fBufferClone = FALSE;
+    *validLocale = *actualLocale = 0;
+}
+
+BreakIterator::~BreakIterator()
+{
+}
+
+// ------------------------------------------
+//
+// Registration
+//
+//-------------------------------------------
+#if !UCONFIG_NO_SERVICE
+
+// -------------------------------------
+
+class ICUBreakIteratorFactory : public ICUResourceBundleFactory {
+protected:
+    virtual UObject* handleCreate(const Locale& loc, int32_t kind, const ICUService* /*service*/, UErrorCode& status) const {
+        return BreakIterator::makeInstance(loc, kind, status);
+    }
+};
+
+// -------------------------------------
+
+class ICUBreakIteratorService : public ICULocaleService {
+public:
+    ICUBreakIteratorService()
+        : ICULocaleService(UNICODE_STRING("Break Iterator", 14))
+    {
+        UErrorCode status = U_ZERO_ERROR;
+        registerFactory(new ICUBreakIteratorFactory(), status);
+    }
+
+    virtual UObject* cloneInstance(UObject* instance) const {
+        return ((BreakIterator*)instance)->clone();
+    }
+
+    virtual UObject* handleDefault(const ICUServiceKey& key, UnicodeString* /*actualID*/, UErrorCode& status) const {
+        LocaleKey& lkey = (LocaleKey&)key;
+        int32_t kind = lkey.kind();
+        Locale loc;
+        lkey.currentLocale(loc);
+        return BreakIterator::makeInstance(loc, kind, status);
+    }
+
+    virtual UBool isDefault() const {
+        return countFactories() == 1;
+    }
+};
+
+// -------------------------------------
+
+U_NAMESPACE_END
+
+// defined in ucln_cmn.h
+
+static U_NAMESPACE_QUALIFIER ICULocaleService* gService = NULL;
+
+/**
+ * Release all static memory held by breakiterator.
+ */
+U_CDECL_BEGIN
+static UBool U_CALLCONV breakiterator_cleanup(void) {
+#if !UCONFIG_NO_SERVICE
+    if (gService) {
+        delete gService;
+        gService = NULL;
+    }
+#endif
+    return TRUE;
+}
+U_CDECL_END
+U_NAMESPACE_BEGIN
+
+static ICULocaleService*
+getService(void)
+{
+    UBool needsInit;
+    UMTX_CHECK(NULL, (UBool)(gService == NULL), needsInit);
+
+    if (needsInit) {
+        ICULocaleService  *tService = new ICUBreakIteratorService();
+        umtx_lock(NULL);
+        if (gService == NULL) {
+            gService = tService;
+            tService = NULL;
+            ucln_common_registerCleanup(UCLN_COMMON_BREAKITERATOR, breakiterator_cleanup);
+        }
+        umtx_unlock(NULL);
+        delete tService;
+    }
+    return gService;
+}
+
+// -------------------------------------
+
+static inline UBool
+hasService(void)
+{
+    UBool retVal;
+    UMTX_CHECK(NULL, gService != NULL, retVal);
+    return retVal;
+}
+
+// -------------------------------------
+
+URegistryKey U_EXPORT2
+BreakIterator::registerInstance(BreakIterator* toAdopt, const Locale& locale, UBreakIteratorType kind, UErrorCode& status)
+{
+    ICULocaleService *service = getService();
+    if (service == NULL) {
+        status = U_MEMORY_ALLOCATION_ERROR;
+        return NULL;
+    }
+    return service->registerInstance(toAdopt, locale, kind, status);
+}
+
+// -------------------------------------
+
+UBool U_EXPORT2
+BreakIterator::unregister(URegistryKey key, UErrorCode& status)
+{
+    if (U_SUCCESS(status)) {
+        if (hasService()) {
+            return gService->unregister(key, status);
+        }
+        status = U_MEMORY_ALLOCATION_ERROR;
+    }
+    return FALSE;
+}
+
+// -------------------------------------
+
+StringEnumeration* U_EXPORT2
+BreakIterator::getAvailableLocales(void)
+{
+    ICULocaleService *service = getService();
+    if (service == NULL) {
+        return NULL;
+    }
+    return service->getAvailableLocales();
+}
+#endif /* UCONFIG_NO_SERVICE */
+
+// -------------------------------------
+
+BreakIterator*
+BreakIterator::createInstance(const Locale& loc, int32_t kind, UErrorCode& status)
+{
+    if (U_FAILURE(status)) {
+        return NULL;
+    }
+
+    u_init(&status);
+#if !UCONFIG_NO_SERVICE
+    if (hasService()) {
+        Locale actualLoc("");
+        BreakIterator *result = (BreakIterator*)gService->get(loc, kind, &actualLoc, status);
+        // TODO: The way the service code works in ICU 2.8 is that if
+        // there is a real registered break iterator, the actualLoc
+        // will be populated, but if the handleDefault path is taken
+        // (because nothing is registered that can handle the
+        // requested locale) then the actualLoc comes back empty.  In
+        // that case, the returned object already has its actual/valid
+        // locale data populated (by makeInstance, which is what
+        // handleDefault calls), so we don't touch it.  YES, A COMMENT
+        // THIS LONG is a sign of bad code -- so the action item is to
+        // revisit this in ICU 3.0 and clean it up/fix it/remove it.
+        if (U_SUCCESS(status) && (result != NULL) && *actualLoc.getName() != 0) {
+            U_LOCALE_BASED(locBased, *result);
+            locBased.setLocaleIDs(actualLoc.getName(), actualLoc.getName());
+        }
+        return result;
+    }
+    else
+#endif
+    {
+        return makeInstance(loc, kind, status);
+    }
+}
+
+// -------------------------------------
+
+BreakIterator*
+BreakIterator::makeInstance(const Locale& loc, int32_t kind, UErrorCode& status)
+{
+
+    if (U_FAILURE(status)) {
+        return NULL;
+    }
+
+    BreakIterator *result = NULL;
+    switch (kind) {
+    case UBRK_CHARACTER:
+        result = BreakIterator::buildInstance(loc, "grapheme", kind, status);
+        break;
+    case UBRK_WORD:
+        result = BreakIterator::buildInstance(loc, "word", kind, status);
+        break;
+    case UBRK_LINE:
+        result = BreakIterator::buildInstance(loc, "line", kind, status);
+        break;
+    case UBRK_SENTENCE:
+        result = BreakIterator::buildInstance(loc, "sentence", kind, status);
+        break;
+    case UBRK_TITLE:
+        result = BreakIterator::buildInstance(loc, "title", kind, status);
+        break;
+    default:
+        status = U_ILLEGAL_ARGUMENT_ERROR;
+    }
+
+    if (U_FAILURE(status)) {
+        return NULL;
+    }
+
+    return result;
+}
+
+Locale
+BreakIterator::getLocale(ULocDataLocaleType type, UErrorCode& status) const {
+    U_LOCALE_BASED(locBased, *this);
+    return locBased.getLocale(type, status);
+}
+
+const char *
+BreakIterator::getLocaleID(ULocDataLocaleType type, UErrorCode& status) const {
+    U_LOCALE_BASED(locBased, *this);
+    return locBased.getLocaleID(type, status);
+}
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
+
+//eof
diff --git a/source/common/bytestream.cpp b/source/common/bytestream.cpp
new file mode 100644
index 0000000..110c085
--- /dev/null
+++ b/source/common/bytestream.cpp
@@ -0,0 +1,65 @@
+// Copyright (C) 2009, International Business Machines
+// Corporation and others. All Rights Reserved.
+//
+// Copyright 2007 Google Inc. All Rights Reserved.
+// Author: sanjay@google.com (Sanjay Ghemawat)
+
+#include "unicode/utypes.h"
+#include "unicode/bytestream.h"
+#include "cmemory.h"
+
+U_NAMESPACE_BEGIN
+
+char* ByteSink::GetAppendBuffer(int32_t min_capacity,
+                                int32_t desired_capacity_hint,
+                                char* scratch, int32_t scratch_capacity,
+                                int32_t* result_capacity) {
+  if (min_capacity < 1 || scratch_capacity < min_capacity) {
+    *result_capacity = 0;
+    return NULL;
+  }
+  *result_capacity = scratch_capacity;
+  return scratch;
+}
+
+void ByteSink::Flush() {}
+
+CheckedArrayByteSink::CheckedArrayByteSink(char* outbuf, int32_t capacity)
+    : outbuf_(outbuf), capacity_(capacity < 0 ? 0 : capacity), size_(0), overflowed_(false) {
+}
+
+void CheckedArrayByteSink::Append(const char* bytes, int32_t n) {
+  if (n <= 0) {
+    return;
+  }
+  int32_t available = capacity_ - size_;
+  if (n > available) {
+    n = available;
+    overflowed_ = true;
+  }
+  if (n > 0 && bytes != (outbuf_ + size_)) {
+    uprv_memcpy(outbuf_ + size_, bytes, n);
+  }
+  size_ += n;
+}
+
+char* CheckedArrayByteSink::GetAppendBuffer(int32_t min_capacity,
+                                            int32_t desired_capacity_hint,
+                                            char* scratch,
+                                            int32_t scratch_capacity,
+                                            int32_t* result_capacity) {
+  if (min_capacity < 1 || scratch_capacity < min_capacity) {
+    *result_capacity = 0;
+    return NULL;
+  }
+  int32_t available = capacity_ - size_;
+  if (available >= min_capacity) {
+    *result_capacity = available;
+    return outbuf_ + size_;
+  } else {
+    *result_capacity = scratch_capacity;
+    return scratch;
+  }
+}
+
+U_NAMESPACE_END
diff --git a/source/common/caniter.cpp b/source/common/caniter.cpp
new file mode 100644
index 0000000..04d48ba
--- /dev/null
+++ b/source/common/caniter.cpp
@@ -0,0 +1,611 @@
+/*
+ *****************************************************************************
+ * Copyright (C) 1996-2006, International Business Machines Corporation and  *
+ * others. All Rights Reserved.                                              *
+ *****************************************************************************
+ */
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_NORMALIZATION
+
+#include "unicode/uset.h"
+#include "unicode/ustring.h"
+#include "hash.h"
+#include "unormimp.h"
+#include "unicode/caniter.h"
+#include "unicode/normlzr.h"
+#include "unicode/uchar.h"
+#include "cmemory.h"
+
+/**
+ * This class allows one to iterate through all the strings that are canonically equivalent to a given
+ * string. For example, here are some sample results:
+Results for: {LATIN CAPITAL LETTER A WITH RING ABOVE}{LATIN SMALL LETTER D}{COMBINING DOT ABOVE}{COMBINING CEDILLA}
+1: \u0041\u030A\u0064\u0307\u0327
+ = {LATIN CAPITAL LETTER A}{COMBINING RING ABOVE}{LATIN SMALL LETTER D}{COMBINING DOT ABOVE}{COMBINING CEDILLA}
+2: \u0041\u030A\u0064\u0327\u0307
+ = {LATIN CAPITAL LETTER A}{COMBINING RING ABOVE}{LATIN SMALL LETTER D}{COMBINING CEDILLA}{COMBINING DOT ABOVE}
+3: \u0041\u030A\u1E0B\u0327
+ = {LATIN CAPITAL LETTER A}{COMBINING RING ABOVE}{LATIN SMALL LETTER D WITH DOT ABOVE}{COMBINING CEDILLA}
+4: \u0041\u030A\u1E11\u0307
+ = {LATIN CAPITAL LETTER A}{COMBINING RING ABOVE}{LATIN SMALL LETTER D WITH CEDILLA}{COMBINING DOT ABOVE}
+5: \u00C5\u0064\u0307\u0327
+ = {LATIN CAPITAL LETTER A WITH RING ABOVE}{LATIN SMALL LETTER D}{COMBINING DOT ABOVE}{COMBINING CEDILLA}
+6: \u00C5\u0064\u0327\u0307
+ = {LATIN CAPITAL LETTER A WITH RING ABOVE}{LATIN SMALL LETTER D}{COMBINING CEDILLA}{COMBINING DOT ABOVE}
+7: \u00C5\u1E0B\u0327
+ = {LATIN CAPITAL LETTER A WITH RING ABOVE}{LATIN SMALL LETTER D WITH DOT ABOVE}{COMBINING CEDILLA}
+8: \u00C5\u1E11\u0307
+ = {LATIN CAPITAL LETTER A WITH RING ABOVE}{LATIN SMALL LETTER D WITH CEDILLA}{COMBINING DOT ABOVE}
+9: \u212B\u0064\u0307\u0327
+ = {ANGSTROM SIGN}{LATIN SMALL LETTER D}{COMBINING DOT ABOVE}{COMBINING CEDILLA}
+10: \u212B\u0064\u0327\u0307
+ = {ANGSTROM SIGN}{LATIN SMALL LETTER D}{COMBINING CEDILLA}{COMBINING DOT ABOVE}
+11: \u212B\u1E0B\u0327
+ = {ANGSTROM SIGN}{LATIN SMALL LETTER D WITH DOT ABOVE}{COMBINING CEDILLA}
+12: \u212B\u1E11\u0307
+ = {ANGSTROM SIGN}{LATIN SMALL LETTER D WITH CEDILLA}{COMBINING DOT ABOVE}
+ *<br>Note: the code is intended for use with small strings, and is not suitable for larger ones,
+ * since it has not been optimized for that situation.
+ *@author M. Davis
+ *@draft
+ */
+
+// public
+
+U_NAMESPACE_BEGIN
+
+// TODO: add boilerplate methods.
+
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CanonicalIterator)
+
+/**
+ *@param source string to get results for
+ */
+CanonicalIterator::CanonicalIterator(const UnicodeString &sourceStr, UErrorCode &status) :
+    pieces(NULL),
+    pieces_length(0),
+    pieces_lengths(NULL),
+    current(NULL),
+    current_length(0)
+{
+    if(U_SUCCESS(status)) {
+      setSource(sourceStr, status);
+    }
+}
+
+CanonicalIterator::~CanonicalIterator() {
+  cleanPieces();
+}
+
+void CanonicalIterator::cleanPieces() {
+    int32_t i = 0;
+    if(pieces != NULL) {
+        for(i = 0; i < pieces_length; i++) {
+            if(pieces[i] != NULL) {
+                delete[] pieces[i];
+            }
+        }
+        uprv_free(pieces);
+        pieces = NULL;
+        pieces_length = 0;
+    }
+    if(pieces_lengths != NULL) {
+        uprv_free(pieces_lengths);
+        pieces_lengths = NULL;
+    }
+    if(current != NULL) {
+        uprv_free(current);
+        current = NULL;
+        current_length = 0;
+    }
+}
+
+/**
+ *@return gets the source: NOTE: it is the NFD form of source
+ */
+UnicodeString CanonicalIterator::getSource() {
+  return source;
+}
+
+/**
+ * Resets the iterator so that one can start again from the beginning.
+ */
+void CanonicalIterator::reset() {
+    done = FALSE;
+    for (int i = 0; i < current_length; ++i) {
+        current[i] = 0;
+    }
+}
+
+/**
+ *@return the next string that is canonically equivalent. The value null is returned when
+ * the iteration is done.
+ */
+UnicodeString CanonicalIterator::next() {
+    int32_t i = 0;
+
+    if (done) {
+      buffer.setToBogus();
+      return buffer;
+    }
+
+    // delete old contents
+    buffer.remove();
+
+    // construct return value
+
+    for (i = 0; i < pieces_length; ++i) {
+        buffer.append(pieces[i][current[i]]);
+    }
+    //String result = buffer.toString(); // not needed
+
+    // find next value for next time
+
+    for (i = current_length - 1; ; --i) {
+        if (i < 0) {
+            done = TRUE;
+            break;
+        }
+        current[i]++;
+        if (current[i] < pieces_lengths[i]) break; // got sequence
+        current[i] = 0;
+    }
+    return buffer;
+}
+
+/**
+ *@param set the source string to iterate against. This allows the same iterator to be used
+ * while changing the source string, saving object creation.
+ */
+void CanonicalIterator::setSource(const UnicodeString &newSource, UErrorCode &status) {
+    int32_t list_length = 0;
+    UChar32 cp = 0;
+    int32_t start = 0;
+    int32_t i = 0;
+    UnicodeString *list = NULL;
+
+    Normalizer::normalize(newSource, UNORM_NFD, 0, source, status);
+    if(U_FAILURE(status)) {
+      return;
+    }
+    done = FALSE;
+
+    cleanPieces();
+
+    // catch degenerate case
+    if (newSource.length() == 0) {
+        pieces = (UnicodeString **)uprv_malloc(sizeof(UnicodeString *));
+        pieces_lengths = (int32_t*)uprv_malloc(1 * sizeof(int32_t));
+        pieces_length = 1;
+        current = (int32_t*)uprv_malloc(1 * sizeof(int32_t));
+        current_length = 1;
+        if (pieces == NULL || pieces_lengths == NULL || current == NULL) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+            goto CleanPartialInitialization;
+        }
+        current[0] = 0;
+        pieces[0] = new UnicodeString[1];
+        pieces_lengths[0] = 1;
+        if (pieces[0] == 0) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+            goto CleanPartialInitialization;
+        }
+        return;
+    }
+
+
+    list = new UnicodeString[source.length()];
+    if (list == 0) {
+        status = U_MEMORY_ALLOCATION_ERROR;
+        goto CleanPartialInitialization;
+    }
+
+    // i should initialy be the number of code units at the 
+    // start of the string
+    i = UTF16_CHAR_LENGTH(source.char32At(0));
+    //int32_t i = 1;
+    // find the segments
+    // This code iterates through the source string and 
+    // extracts segments that end up on a codepoint that
+    // doesn't start any decompositions. (Analysis is done
+    // on the NFD form - see above).
+    for (; i < source.length(); i += UTF16_CHAR_LENGTH(cp)) {
+        cp = source.char32At(i);
+        if (unorm_isCanonSafeStart(cp)) {
+            source.extract(start, i-start, list[list_length++]); // add up to i
+            start = i;
+        }
+    }
+    source.extract(start, i-start, list[list_length++]); // add last one
+
+
+    // allocate the arrays, and find the strings that are CE to each segment
+    pieces = (UnicodeString **)uprv_malloc(list_length * sizeof(UnicodeString *));
+    pieces_length = list_length;
+    pieces_lengths = (int32_t*)uprv_malloc(list_length * sizeof(int32_t));
+    current = (int32_t*)uprv_malloc(list_length * sizeof(int32_t));
+    current_length = list_length;
+    if (pieces == NULL || pieces_lengths == NULL || current == NULL) {
+        status = U_MEMORY_ALLOCATION_ERROR;
+        goto CleanPartialInitialization;
+    }
+
+    for (i = 0; i < current_length; i++) {
+        current[i] = 0;
+    }
+    // for each segment, get all the combinations that can produce 
+    // it after NFD normalization
+    for (i = 0; i < pieces_length; ++i) {
+        //if (PROGRESS) printf("SEGMENT\n");
+        pieces[i] = getEquivalents(list[i], pieces_lengths[i], status);
+    }
+
+    delete[] list;
+    return;
+// Common section to cleanup all local variables and reset object variables.
+CleanPartialInitialization:
+    if (list != NULL) {
+        delete[] list;
+    }
+    cleanPieces();
+}
+
+/**
+ * Dumb recursive implementation of permutation.
+ * TODO: optimize
+ * @param source the string to find permutations for
+ * @return the results in a set.
+ */
+void U_EXPORT2 CanonicalIterator::permute(UnicodeString &source, UBool skipZeros, Hashtable *result, UErrorCode &status) {
+    if(U_FAILURE(status)) {
+        return;
+    }
+    //if (PROGRESS) printf("Permute: %s\n", UToS(Tr(source)));
+    int32_t i = 0;
+
+    // optimization:
+    // if zero or one character, just return a set with it
+    // we check for length < 2 to keep from counting code points all the time
+    if (source.length() <= 2 && source.countChar32() <= 1) {
+        UnicodeString *toPut = new UnicodeString(source);
+        /* test for NULL */
+        if (toPut == 0) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+            return;
+        }
+        result->put(source, toPut, status);
+        return;
+    }
+
+    // otherwise iterate through the string, and recursively permute all the other characters
+    UChar32 cp;
+    Hashtable subpermute(status);
+    if(U_FAILURE(status)) {
+        return;
+    }
+    subpermute.setValueDeleter(uhash_deleteUnicodeString);
+
+    for (i = 0; i < source.length(); i += UTF16_CHAR_LENGTH(cp)) {
+        cp = source.char32At(i);
+        const UHashElement *ne = NULL;
+        int32_t el = -1;
+        UnicodeString subPermuteString = source;
+
+        // optimization:
+        // if the character is canonical combining class zero,
+        // don't permute it
+        if (skipZeros && i != 0 && u_getCombiningClass(cp) == 0) {
+            //System.out.println("Skipping " + Utility.hex(UTF16.valueOf(source, i)));
+            continue;
+        }
+
+        subpermute.removeAll();
+
+        // see what the permutations of the characters before and after this one are
+        //Hashtable *subpermute = permute(source.substring(0,i) + source.substring(i + UTF16.getCharCount(cp)));
+        permute(subPermuteString.replace(i, UTF16_CHAR_LENGTH(cp), NULL, 0), skipZeros, &subpermute, status);
+        /* Test for buffer overflows */
+        if(U_FAILURE(status)) {
+            return;
+        }
+        // The upper replace is destructive. The question is do we have to make a copy, or we don't care about the contents 
+        // of source at this point.
+
+        // prefix this character to all of them
+        ne = subpermute.nextElement(el);
+        while (ne != NULL) {
+            UnicodeString *permRes = (UnicodeString *)(ne->value.pointer);
+            UnicodeString *chStr = new UnicodeString(cp);
+            //test for  NULL
+            if (chStr == NULL) {
+                status = U_MEMORY_ALLOCATION_ERROR;
+                return;
+            }
+            chStr->append(*permRes); //*((UnicodeString *)(ne->value.pointer));
+            //if (PROGRESS) printf("  Piece: %s\n", UToS(*chStr));
+            result->put(*chStr, chStr, status);
+            ne = subpermute.nextElement(el);
+        }
+    }
+    //return result;
+}
+
+// privates
+
+// we have a segment, in NFD. Find all the strings that are canonically equivalent to it.
+UnicodeString* CanonicalIterator::getEquivalents(const UnicodeString &segment, int32_t &result_len, UErrorCode &status) {
+    Hashtable result(status);
+    Hashtable permutations(status);
+    Hashtable basic(status);
+    if (U_FAILURE(status)) {
+        return 0;
+    }
+    result.setValueDeleter(uhash_deleteUnicodeString);
+    permutations.setValueDeleter(uhash_deleteUnicodeString);
+    basic.setValueDeleter(uhash_deleteUnicodeString);
+
+    UChar USeg[256];
+    int32_t segLen = segment.extract(USeg, 256, status);
+    getEquivalents2(&basic, USeg, segLen, status);
+
+    // now get all the permutations
+    // add only the ones that are canonically equivalent
+    // TODO: optimize by not permuting any class zero.
+
+    const UHashElement *ne = NULL;
+    int32_t el = -1;
+    //Iterator it = basic.iterator();
+    ne = basic.nextElement(el);
+    //while (it.hasNext())
+    while (ne != NULL) {
+        //String item = (String) it.next();
+        UnicodeString item = *((UnicodeString *)(ne->value.pointer));
+
+        permutations.removeAll();
+        permute(item, CANITER_SKIP_ZEROES, &permutations, status);
+        const UHashElement *ne2 = NULL;
+        int32_t el2 = -1;
+        //Iterator it2 = permutations.iterator();
+        ne2 = permutations.nextElement(el2);
+        //while (it2.hasNext())
+        while (ne2 != NULL) {
+            //String possible = (String) it2.next();
+            //UnicodeString *possible = new UnicodeString(*((UnicodeString *)(ne2->value.pointer)));
+            UnicodeString possible(*((UnicodeString *)(ne2->value.pointer)));
+            UnicodeString attempt;
+            Normalizer::normalize(possible, UNORM_NFD, 0, attempt, status);
+
+            // TODO: check if operator == is semanticaly the same as attempt.equals(segment)
+            if (attempt==segment) {
+                //if (PROGRESS) printf("Adding Permutation: %s\n", UToS(Tr(*possible)));
+                // TODO: use the hashtable just to catch duplicates - store strings directly (somehow).
+                result.put(possible, new UnicodeString(possible), status); //add(possible);
+            } else {
+                //if (PROGRESS) printf("-Skipping Permutation: %s\n", UToS(Tr(*possible)));
+            }
+
+            ne2 = permutations.nextElement(el2);
+        }
+        ne = basic.nextElement(el);
+    }
+
+    /* Test for buffer overflows */
+    if(U_FAILURE(status)) {
+        return 0;
+    }
+    // convert into a String[] to clean up storage
+    //String[] finalResult = new String[result.size()];
+    UnicodeString *finalResult = NULL;
+    int32_t resultCount;
+    if((resultCount = result.count())) {
+        finalResult = new UnicodeString[resultCount];
+        if (finalResult == 0) {
+            status = U_MEMORY_ALLOCATION_ERROR;
+            return NULL;
+        }
+    }
+    else {
+        status = U_ILLEGAL_ARGUMENT_ERROR;
+        return NULL;
+    }
+    //result.toArray(finalResult);
+    result_len = 0;
+    el = -1;
+    ne = result.nextElement(el);
+    while(ne != NULL) {
+        finalResult[result_len++] = *((UnicodeString *)(ne->value.pointer));
+        ne = result.nextElement(el);
+    }
+
+
+    return finalResult;
+}
+
+Hashtable *CanonicalIterator::getEquivalents2(Hashtable *fillinResult, const UChar *segment, int32_t segLen, UErrorCode &status) {
+
+    if (U_FAILURE(status)) {
+        return NULL;
+    }
+
+    //if (PROGRESS) printf("Adding: %s\n", UToS(Tr(segment)));
+
+    UnicodeString toPut(segment, segLen);
+
+    fillinResult->put(toPut, new UnicodeString(toPut), status);
+
+    USerializedSet starts;
+
+    // cycle through all the characters
+    UChar32 cp, end = 0;
+    int32_t i = 0, j;
+    for (i = 0; i < segLen; i += UTF16_CHAR_LENGTH(cp)) {
+        // see if any character is at the start of some decomposition
+        UTF_GET_CHAR(segment, 0, i, segLen, cp);
+        if (!unorm_getCanonStartSet(cp, &starts)) {
+            continue;
+        }
+        // if so, see which decompositions match 
+        for(j = 0, cp = end+1; cp <= end || uset_getSerializedRange(&starts, j++, &cp, &end); ++cp) {
+            Hashtable remainder(status);
+            remainder.setValueDeleter(uhash_deleteUnicodeString);
+            if (extract(&remainder, cp, segment, segLen, i, status) == NULL) {
+                continue;
+            }
+
+            // there were some matches, so add all the possibilities to the set.
+            UnicodeString prefix(segment, i);
+            prefix += cp;
+
+            int32_t el = -1;
+            const UHashElement *ne = remainder.nextElement(el);
+            while (ne != NULL) {
+                UnicodeString item = *((UnicodeString *)(ne->value.pointer));
+                UnicodeString *toAdd = new UnicodeString(prefix);
+                /* test for NULL */
+                if (toAdd == 0) {
+                    status = U_MEMORY_ALLOCATION_ERROR;
+                    return NULL;
+                }
+                *toAdd += item;
+                fillinResult->put(*toAdd, toAdd, status);
+
+                //if (PROGRESS) printf("Adding: %s\n", UToS(Tr(*toAdd)));
+
+                ne = remainder.nextElement(el);
+            }
+        }
+    }
+
+    /* Test for buffer overflows */
+    if(U_FAILURE(status)) {
+        return NULL;
+    }
+    return fillinResult;
+}
+
+/**
+ * See if the decomposition of cp2 is at segment starting at segmentPos 
+ * (with canonical rearrangment!)
+ * If so, take the remainder, and return the equivalents 
+ */
+Hashtable *CanonicalIterator::extract(Hashtable *fillinResult, UChar32 comp, const UChar *segment, int32_t segLen, int32_t segmentPos, UErrorCode &status) {
+//Hashtable *CanonicalIterator::extract(UChar32 comp, const UnicodeString &segment, int32_t segLen, int32_t segmentPos, UErrorCode &status) {
+    //if (PROGRESS) printf(" extract: %s, ", UToS(Tr(UnicodeString(comp))));
+    //if (PROGRESS) printf("%s, %i\n", UToS(Tr(segment)), segmentPos);
+
+    if (U_FAILURE(status)) {
+        return NULL;
+    }
+
+    const int32_t bufSize = 256;
+    int32_t bufLen = 0;
+    UChar temp[bufSize];
+
+    int32_t inputLen = 0, decompLen;
+    UChar stackBuffer[4];
+    const UChar *decomp;
+
+    U16_APPEND_UNSAFE(temp, inputLen, comp);
+    decomp = unorm_getCanonicalDecomposition(comp, stackBuffer, &decompLen);
+    if(decomp == NULL) {
+        /* copy temp */
+        stackBuffer[0] = temp[0];
+        if(inputLen > 1) {
+            stackBuffer[1] = temp[1];
+        }
+        decomp = stackBuffer;
+        decompLen = inputLen;
+    }
+
+    UChar *buff = temp+inputLen;
+
+    // See if it matches the start of segment (at segmentPos)
+    UBool ok = FALSE;
+    UChar32 cp;
+    int32_t decompPos = 0;
+    UChar32 decompCp;
+    UTF_NEXT_CHAR(decomp, decompPos, decompLen, decompCp);
+
+    int32_t i;
+    UBool overflow = FALSE;
+
+    i = segmentPos;
+    while(i < segLen) {
+        UTF_NEXT_CHAR(segment, i, segLen, cp);
+
+        if (cp == decompCp) { // if equal, eat another cp from decomp
+
+            //if (PROGRESS) printf("  matches: %s\n", UToS(Tr(UnicodeString(cp))));
+
+            if (decompPos == decompLen) { // done, have all decomp characters!
+                //u_strcat(buff+bufLen, segment+i);
+                uprv_memcpy(buff+bufLen, segment+i, (segLen-i)*sizeof(UChar));
+                bufLen+=segLen-i;
+
+                ok = TRUE;
+                break;
+            }
+            UTF_NEXT_CHAR(decomp, decompPos, decompLen, decompCp);
+        } else {
+            //if (PROGRESS) printf("  buffer: %s\n", UToS(Tr(UnicodeString(cp))));
+
+            // brute force approach
+
+            U16_APPEND(buff, bufLen, bufSize, cp, overflow);
+
+            if(overflow) {
+                /*
+                 * ### TODO handle buffer overflow
+                 * The buffer is large, but an overflow may still happen with
+                 * unusual input (many combining marks?).
+                 * Reallocate buffer and continue.
+                 * markus 20020929
+                 */
+
+                overflow = FALSE;
+            }
+
+            /* TODO: optimize
+            // since we know that the classes are monotonically increasing, after zero
+            // e.g. 0 5 7 9 0 3
+            // we can do an optimization
+            // there are only a few cases that work: zero, less, same, greater
+            // if both classes are the same, we fail
+            // if the decomp class < the segment class, we fail
+
+            segClass = getClass(cp);
+            if (decompClass <= segClass) return null;
+            */
+        }
+    }
+    if (!ok)
+        return NULL; // we failed, characters left over
+
+    //if (PROGRESS) printf("Matches\n");
+
+    if (bufLen == 0) {
+        fillinResult->put(UnicodeString(), new UnicodeString(), status);
+        return fillinResult; // succeed, but no remainder
+    }
+
+    // brute force approach
+    // check to make sure result is canonically equivalent
+    int32_t tempLen = inputLen + bufLen;
+
+    UChar trial[bufSize];
+    unorm_decompose(trial, bufSize, temp, tempLen, FALSE, 0, &status);
+
+    if(U_FAILURE(status)
+        || uprv_memcmp(segment+segmentPos, trial, (segLen - segmentPos)*sizeof(UChar)) != 0)
+    {
+        return NULL;
+    }
+
+    return getEquivalents2(fillinResult, buff, bufLen, status);
+}
+
+U_NAMESPACE_END
+
+#endif /* #if !UCONFIG_NO_NORMALIZATION */
diff --git a/source/common/chariter.cpp b/source/common/chariter.cpp
new file mode 100644
index 0000000..a598bd6
--- /dev/null
+++ b/source/common/chariter.cpp
@@ -0,0 +1,96 @@
+/*
+**********************************************************************
+*   Copyright (C) 1999-2004, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*/
+
+#include "unicode/chariter.h"
+
+U_NAMESPACE_BEGIN
+
+ForwardCharacterIterator::~ForwardCharacterIterator() {}
+ForwardCharacterIterator::ForwardCharacterIterator()
+: UObject()
+{}
+ForwardCharacterIterator::ForwardCharacterIterator(const ForwardCharacterIterator &other)
+: UObject(other)
+{}
+
+
+CharacterIterator::CharacterIterator()
+: textLength(0), pos(0), begin(0), end(0) {
+}
+
+CharacterIterator::CharacterIterator(int32_t length)
+: textLength(length), pos(0), begin(0), end(length) {
+    if(textLength < 0) {
+        textLength = end = 0;
+    }
+}
+
+CharacterIterator::CharacterIterator(int32_t length, int32_t position)
+: textLength(length), pos(position), begin(0), end(length) {
+    if(textLength < 0) {
+        textLength = end = 0;
+    }
+    if(pos < 0) {
+        pos = 0;
+    } else if(pos > end) {
+        pos = end;
+    }
+}
+
+CharacterIterator::CharacterIterator(int32_t length, int32_t textBegin, int32_t textEnd, int32_t position)
+: textLength(length), pos(position), begin(textBegin), end(textEnd) {
+    if(textLength < 0) {
+        textLength = 0;
+    }
+    if(begin < 0) {
+        begin = 0;
+    } else if(begin > textLength) {
+        begin = textLength;
+    }
+    if(end < begin) {
+        end = begin;
+    } else if(end > textLength) {
+        end = textLength;
+    }
+    if(pos < begin) {
+        pos = begin;
+    } else if(pos > end) {
+        pos = end;
+    }
+}
+
+CharacterIterator::CharacterIterator(const CharacterIterator &that) :
+ForwardCharacterIterator(that),
+textLength(that.textLength), pos(that.pos), begin(that.begin), end(that.end)
+{
+}
+
+CharacterIterator &
+CharacterIterator::operator=(const CharacterIterator &that) {
+    ForwardCharacterIterator::operator=(that);
+    textLength = that.textLength;
+    pos = that.pos;
+    begin = that.begin;
+    end = that.end;
+    return *this;
+}
+
+// implementing first[32]PostInc() directly in a subclass should be faster
+// but these implementations make subclassing a little easier
+UChar
+CharacterIterator::firstPostInc(void) {
+    setToStart();
+    return nextPostInc();
+}
+
+UChar32
+CharacterIterator::first32PostInc(void) {
+    setToStart();
+    return next32PostInc();
+}
+
+U_NAMESPACE_END
diff --git a/source/common/charstr.h b/source/common/charstr.h
new file mode 100644
index 0000000..3bb11cb
--- /dev/null
+++ b/source/common/charstr.h
@@ -0,0 +1,88 @@
+/*
+**********************************************************************
+*   Copyright (c) 2001-2004, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+**********************************************************************
+*   Date        Name        Description
+*   11/19/2001  aliu        Creation.
+**********************************************************************
+*/
+
+#ifndef CHARSTRING_H
+#define CHARSTRING_H
+
+#include "unicode/utypes.h"
+#include "unicode/uobject.h"
+#include "unicode/unistr.h"
+#include "cmemory.h"
+
+//--------------------------------------------------------------------
+// class CharString
+//
+// This is a tiny wrapper class that is used internally to make a
+// UnicodeString look like a const char*.  It can be allocated on the
+// stack.  It only creates a heap buffer if it needs to.
+//--------------------------------------------------------------------
+
+U_NAMESPACE_BEGIN
+
+class U_COMMON_API CharString : public UMemory {
+public:
+
+#if !UCONFIG_NO_CONVERSION
+    // Constructor
+    //     @param  str    The unicode string to be converted to char *
+    //     @param  codepage   The char * code page.  ""   for invariant conversion.
+    //                                               NULL for default code page.
+//    inline CharString(const UnicodeString& str, const char *codepage);
+#endif
+
+    inline CharString(const UnicodeString& str);
+    inline ~CharString();
+    inline operator const char*() const { return ptr; }
+
+private:
+    char buf[128];
+    char* ptr;
+
+    CharString(const CharString &other); // forbid copying of this class
+    CharString &operator=(const CharString &other); // forbid copying of this class
+};
+
+#if !UCONFIG_NO_CONVERSION
+
+// PLEASE DON'T USE THIS FUNCTION.
+// We don't want the static dependency on conversion or the performance hit that comes from a codepage conversion.
+/*
+inline CharString::CharString(const UnicodeString& str, const char *codepage) {
+    int32_t    len;
+    ptr = buf;
+    len = str.extract(0, 0x7FFFFFFF, buf ,sizeof(buf)-1, codepage);
+    if (len >= (int32_t)(sizeof(buf)-1)) {
+        ptr = (char *)uprv_malloc(len+1);
+        str.extract(0, 0x7FFFFFFF, ptr, len+1, codepage);
+    }
+}*/
+
+#endif
+
+inline CharString::CharString(const UnicodeString& str) {
+    int32_t    len;
+    ptr = buf;
+    len = str.extract(0, 0x7FFFFFFF, buf, (int32_t)(sizeof(buf)-1), US_INV);
+    if (len >= (int32_t)(sizeof(buf)-1)) {
+        ptr = (char *)uprv_malloc(len+1);
+        str.extract(0, 0x7FFFFFFF, ptr, len+1, US_INV);
+    }
+}
+
+inline CharString::~CharString() {
+    if (ptr != buf) {
+        uprv_free(ptr);
+    }
+}
+
+U_NAMESPACE_END
+
+#endif
+//eof
diff --git a/source/common/cmemory.c b/source/common/cmemory.c
new file mode 100644
index 0000000..0f93f36
--- /dev/null
+++ b/source/common/cmemory.c
@@ -0,0 +1,124 @@
+/*
+******************************************************************************
+*
+*   Copyright (C) 2002-2003, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*
+* File cmemory.c      ICU Heap allocation.
+*                     All ICU heap allocation, both for C and C++ new of ICU
+*                     class types, comes through these functions.
+*
+*                     If you have a need to replace ICU allocation, this is the
+*                     place to do it.
+*
+*                     Note that uprv_malloc(0) returns a non-NULL pointer, and
+*                     that a subsequent free of that pointer value is a NOP.
+*
+******************************************************************************
+*/
+#include "unicode/uclean.h"
+#include "cmemory.h"
+#include <stdlib.h>
+
+/* uprv_malloc(0) returns a pointer to this read-only data. */                
+static const int32_t zeroMem[] = {0, 0, 0, 0, 0, 0};
+
+/* Function Pointers for user-supplied heap functions  */
+static const void     *pContext;
+static UMemAllocFn    *pAlloc;
+static UMemReallocFn  *pRealloc;
+static UMemFreeFn     *pFree;
+
+/* Flag indicating whether any heap allocations have happened.
+ *   Used to prevent changing out the heap functions after allocations have been made */
+static UBool   gHeapInUse;
+
+U_CAPI void * U_EXPORT2
+uprv_malloc(size_t s) {
+    if (s > 0) {
+        gHeapInUse = TRUE;
+        if (pAlloc) {
+            return (*pAlloc)(pContext, s);
+        } else {
+            return malloc(s);
+        }
+    } else {
+        return (void *)zeroMem;
+    }
+}
+
+U_CAPI void * U_EXPORT2
+uprv_realloc(void * buffer, size_t size) {
+    if (buffer == zeroMem) {
+        return uprv_malloc(size);
+    } else if (size == 0) {
+        if (pFree) {
+            (*pFree)(pContext, buffer);
+        } else {
+            free(buffer);
+        }
+        return (void *)zeroMem;
+    } else {
+        gHeapInUse = TRUE;
+        if (pRealloc) {
+            return (*pRealloc)(pContext, buffer, size);
+        } else {
+            return realloc(buffer, size);
+        }
+    }
+}
+
+U_CAPI void U_EXPORT2
+uprv_free(void *buffer) {
+    if (buffer != zeroMem) {
+        if (pFree) {
+            (*pFree)(pContext, buffer);
+        } else {
+            free(buffer);
+        }
+    }
+}
+
+U_CAPI void U_EXPORT2
+u_setMemoryFunctions(const void *context, UMemAllocFn *a, UMemReallocFn *r, UMemFreeFn *f,  UErrorCode *status)
+{
+    if (U_FAILURE(*status)) {
+        return;
+    }
+    if (a==NULL || r==NULL || f==NULL) {
+        *status = U_ILLEGAL_ARGUMENT_ERROR;
+        return;
+    }
+    if (gHeapInUse) {
+        *status = U_INVALID_STATE_ERROR;
+        return;
+    }
+    pContext  = context;
+    pAlloc    = a;
+    pRealloc  = r;
+    pFree     = f;
+}
+
+
+U_CFUNC UBool cmemory_cleanup(void) {
+    pContext   = NULL;
+    pAlloc     = NULL;
+    pRealloc   = NULL;
+    pFree      = NULL;
+    gHeapInUse = FALSE;
+    return TRUE;
+}
+
+
+/*
+ *   gHeapInUse
+ *       Return True if ICU has allocated any memory.
+ *       Used by u_SetMutexFunctions() and similar to verify that ICU has not
+ *               been used, that it is in a pristine initial state.
+ */
+U_CFUNC UBool cmemory_inUse() {
+    return gHeapInUse;
+}
+
diff --git a/source/common/cmemory.h b/source/common/cmemory.h
new file mode 100644
index 0000000..4bce193
--- /dev/null
+++ b/source/common/cmemory.h
@@ -0,0 +1,94 @@
+/*
+******************************************************************************
+*
+*   Copyright (C) 1997-2008, International Business Machines
+*   Corporation and others.  All Rights Reserved.
+*
+******************************************************************************
+*
+* File CMEMORY.H
+*
+*  Contains stdlib.h/string.h memory functions
+*
+* @author       Bertrand A. Damiba
+*
+* Modification History:
+*
+*   Date        Name        Description
+*   6/20/98     Bertrand    Created.
+*  05/03/99     stephen     Changed from functions to macros.
+*
+******************************************************************************
+*/
+
+#ifndef CMEMORY_H
+#define CMEMORY_H
+
+#include "unicode/utypes.h"
+#include <stddef.h>
+#include <string.h>
+
+
+#define uprv_memcpy(dst, src, size) U_STANDARD_CPP_NAMESPACE memcpy(dst, src, size)
+#define uprv_memmove(dst, src, size) U_STANDARD_CPP_NAMESPACE memmove(dst, src, size)
+#define uprv_memset(buffer, mark, size) U_STANDARD_CPP_NAMESPACE memset(buffer, mark, size)
+#define uprv_memcmp(buffer1, buffer2, size) U_STANDARD_CPP_NAMESPACE memcmp(buffer1, buffer2,size)
+
+U_CAPI void * U_EXPORT2
+uprv_malloc(size_t s);
+
+U_CAPI void * U_EXPORT2
+uprv_realloc(void *mem, size_t size);
+
+U_CAPI void U_EXPORT2
+uprv_free(void *mem);
+
+/**
+ * This should align the memory properly on any machine.
+ * This is very useful for the safeClone functions.
+ */
+typedef union {
+    long    t1;
+    double  t2;
+    void   *t3;
+} UAlignedMemory;
+
+/**
+ * Get the least significant bits of a pointer (a memory address).
+ * For example, with a mask of 3, the macro gets the 2 least significant bits,
+ * which will be 0 if the pointer is 32-bit (4-byte) aligned.
+ *
+ * ptrdiff_t is the most appropriate integer type to cast to.
+ * size_t should work too, since on most (or all?) platforms it has the same
+ * width as ptrdiff_t.
+ */
+#define U_POINTER_MASK_LSB(ptr, mask) (((ptrdiff_t)(char *)(ptr)) & (mask))
+
+/**
+ * Get the amount of bytes that a pointer is off by from
+ * the previous UAlignedMemory-aligned pointer.
+ */
+#define U_ALIGNMENT_OFFSET(ptr) U_POINTER_MASK_LSB(ptr, sizeof(UAlignedMemory) - 1)
+
+/**
+ * Get the amount of bytes to add to a pointer
+ * in order to get the next UAlignedMemory-aligned address.
+ */
+#define U_ALIGNMENT_OFFSET_UP(ptr) (sizeof(UAlignedMemory) - U_ALIGNMENT_OFFSET(ptr))
+
+/**
+  *  Indicate whether the ICU allocation functions have been used.
+  *  This is used to determine whether ICU is in an initial, unused state.
+  */
+U_CFUNC UBool 
+cmemory_inUse(void);
+
+/**
+  *  Heap clean up function, called from u_cleanup()
+  *    Clears any user heap functions from u_setMemoryFunctions()
+  *    Does NOT deallocate any remaining allocated memory.
+  */
+U_CFUNC UBool 
+cmemory_cleanup(void);
+
+#endif
diff --git a/source/common/common.rc b/source/common/common.rc
new file mode 100644
index 0000000..2217b03
--- /dev/null
+++ b/source/common/common.rc
@@ -0,0 +1,108 @@
+// Do not edit with Microsoft Developer Studio Resource Editor.
+//   It will permanently substitute version numbers that are intended to be
+//   picked up by the pre-processor during each build.
+// Copyright (c) 2001-2007 International Business Machines
+// Corporation and others. All Rights Reserved.
+//
+#include "msvcres.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include <winresrc.h>
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// 
+
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+#pragma code_page(1252)
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE 
+BEGIN
+    "msvcres.h\0"
+END
+
+2 TEXTINCLUDE 
+BEGIN
+    "#include <winresrc.h>\0"
+END
+
+3 TEXTINCLUDE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+#define STR(s) #s
+#define CommaVersionString(a, b, c, d) STR(a) ", " STR(b) ", " STR(c) ", " STR(d) "\0"
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION U_ICU_VERSION_MAJOR_NUM, U_ICU_VERSION_MINOR_NUM, U_ICU_VERSION_PATCHLEVEL_NUM, U_ICU_VERSION_BUILDLEVEL_NUM
+ PRODUCTVERSION U_ICU_VERSION_MAJOR_NUM, U_ICU_VERSION_MINOR_NUM, U_ICU_VERSION_PATCHLEVEL_NUM, U_ICU_VERSION_BUILDLEVEL_NUM
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS VOS__WINDOWS32
+ FILETYPE VFT_DLL
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "00000000"
+        BEGIN
+            VALUE "Comments", ICU_WEBSITE "\0"
+            VALUE "CompanyName", "IBM Corporation and others\0"
+            VALUE "FileDescription", "IBM ICU Common DLL\0"
+            VALUE "FileVersion",  CommaVersionString(U_ICU_VERSION_MAJOR_NUM, U_ICU_VERSION_MINOR_NUM, U_ICU_VERSION_PATCHLEVEL_NUM, U_ICU_VERSION_BUILDLEVEL_NUM)
+            VALUE "LegalCopyright", U_COPYRIGHT_STRING "\0"
+#ifdef _DEBUG
+            VALUE "OriginalFilename", "icuuc" U_ICU_VERSION_SHORT "d.dll\0")
+#else
+            VALUE "OriginalFilename", "icuuc" U_ICU_VERSION_SHORT ".dll\0")
+#endif
+            VALUE "PrivateBuild", "\0"
+            VALUE "ProductName", "International Components for Unicode\0"
+            VALUE "ProductVersion", CommaVersionString(U_ICU_VERSION_MAJOR_NUM, U_ICU_VERSION_MINOR_NUM, U_ICU_VERSION_PATCHLEVEL_NUM, U_ICU_VERSION_BUILDLEVEL_NUM)
+            VALUE "SpecialBuild", "\0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x000, 0000
+    END
+END
+
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+
diff --git a/source/common/common.vcproj b/source/common/common.vcproj
new file mode 100644
index 0000000..3ef8763
--- /dev/null
+++ b/source/common/common.vcproj
@@ -0,0 +1,4248 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="common"
+	ProjectGUID="{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+		<Platform
+			Name="x64"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\..\..\lib"
+			IntermediateDirectory=".\x86\Release"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="NDEBUG"
+				MkTypLibCompatible="true"
+				SuppressStartupBanner="true"
+				TargetEnvironment="1"
+				TypeLibraryName=".\..\..\lib\icuuc.tlb"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;U_COMMON_IMPLEMENTATION"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				DisableLanguageExtensions="true"
+				TreatWChar_tAsBuiltInType="true"
+				PrecompiledHeaderFile=".\x86\Release/common.pch"
+				AssemblerListingLocation=".\x86\Release/"
+				ObjectFile=".\x86\Release/"
+				ProgramDataBaseFileName=".\x86\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="1033"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="..\..\bin\icuuc41.dll"
+				LinkIncremental="1"
+				SuppressStartupBanner="true"
+				ProgramDatabaseFile=".\..\..\lib\icuuc.pdb"
+				EnableCOMDATFolding="2"
+				BaseAddress="0x4a800000"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				ImportLibrary="..\..\lib\icuuc.lib"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\..\..\lib"
+			IntermediateDirectory=".\x86\Debug"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="_DEBUG"
+				MkTypLibCompatible="true"
+				SuppressStartupBanner="true"
+				TargetEnvironment="1"
+				TypeLibraryName=".\..\..\lib\icuucd.tlb"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;U_COMMON_IMPLEMENTATION;RBBI_DEBUG"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				BufferSecurityCheck="true"
+				DisableLanguageExtensions="true"
+				TreatWChar_tAsBuiltInType="true"
+				PrecompiledHeaderFile=".\x86\Debug/common.pch"
+				AssemblerListingLocation=".\x86\Debug/"
+				ObjectFile=".\x86\Debug/"
+				ProgramDataBaseFileName=".\x86\Debug/"
+				BrowseInformation="1"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="1033"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="..\..\bin\icuuc41d.dll"
+				LinkIncremental="2"
+				SuppressStartupBanner="true"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile=".\..\..\lib\icuucd.pdb"
+				BaseAddress="0x4a800000"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
+				ImportLibrary="..\..\lib\icuucd.lib"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+				UseFAT32Workaround="true"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|x64"
+			OutputDirectory=".\x64\Release"
+			IntermediateDirectory=".\x64\Release"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="NDEBUG"
+				MkTypLibCompatible="true"
+				SuppressStartupBanner="true"
+				TargetEnvironment="3"
+				TypeLibraryName=".\..\..\lib64\icuuc.tlb"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				PreprocessorDefinitions="WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;U_COMMON_IMPLEMENTATION"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				DisableLanguageExtensions="true"
+				TreatWChar_tAsBuiltInType="true"
+				PrecompiledHeaderFile=".\x64\Release/common.pch"
+				AssemblerListingLocation=".\x64\Release/"
+				ObjectFile=".\x64\Release/"
+				ProgramDataBaseFileName=".\x64\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="1033"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="..\..\bin64\icuuc41.dll"
+				LinkIncremental="1"
+				SuppressStartupBanner="true"
+				ProgramDatabaseFile=".\..\..\lib64\icuuc.pdb"
+				EnableCOMDATFolding="2"
+				BaseAddress="0x4a800000"
+				ImportLibrary="..\..\lib64\icuuc.lib"
+				TargetMachine="17"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug|x64"
+			OutputDirectory=".\x64\Debug"
+			IntermediateDirectory=".\x64\Debug"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="_DEBUG"
+				MkTypLibCompatible="true"
+				SuppressStartupBanner="true"
+				TargetEnvironment="3"
+				TypeLibraryName=".\..\..\lib64\icuucd.tlb"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;U_COMMON_IMPLEMENTATION;RBBI_DEBUG"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				BufferSecurityCheck="true"
+				DisableLanguageExtensions="true"
+				TreatWChar_tAsBuiltInType="true"
+				PrecompiledHeaderFile=".\x64\Debug/common.pch"
+				AssemblerListingLocation=".\x64\Debug/"
+				ObjectFile=".\x64\Debug/"
+				ProgramDataBaseFileName=".\x64\Debug/"
+				BrowseInformation="1"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="1033"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="..\..\bin64\icuuc41d.dll"
+				LinkIncremental="2"
+				SuppressStartupBanner="true"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile=".\..\..\lib64\icuucd.pdb"
+				BaseAddress="0x4a800000"
+				ImportLibrary="..\..\lib64\icuucd.lib"
+				TargetMachine="17"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+				UseFAT32Workaround="true"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="bidi"
+			>
+			<File
+				RelativePath=".\ubidi.c"
+				>
+			</File>
+			<File
+				RelativePath=".\unicode\ubidi.h"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\ubidi_props.c"
+				>
+			</File>
+			<File
+				RelativePath=".\ubidi_props.h"
+				>
+			</File>
+			<File
+				RelativePath=".\ubidiimp.h"
+				>
+			</File>
+			<File
+				RelativePath=".\ubidiln.c"
+				>
+			</File>
+			<File
+				RelativePath=".\ubidiwrt.c"
+				>
+			</File>
+			<File
+				RelativePath=".\ushape.c"
+				>
+			</File>
+			<File
+				RelativePath=".\unicode\ushape.h"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="break iteration"
+			>
+			<File
+				RelativePath=".\brkeng.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\brkeng.h"
+				>
+			</File>
+			<File
+				RelativePath=".\brkiter.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\unicode\brkiter.h"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\unicode\dbbi.h"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\dictbe.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\dictbe.h"
+				>
+			</File>
+			<File
+				RelativePath=".\rbbi.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\unicode\rbbi.h"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\rbbidata.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\rbbidata.h"
+				>
+			</File>
+			<File
+				RelativePath=".\rbbinode.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\rbbinode.h"
+				>
+			</File>
+			<File
+				RelativePath=".\rbbirb.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\rbbirb.h"
+				>
+			</File>
+			<File
+				RelativePath=".\rbbirpt.h"
+				>
+			</File>
+			<File
+				RelativePath=".\rbbiscan.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\rbbiscan.h"
+				>
+			</File>
+			<File
+				RelativePath=".\rbbisetb.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\rbbisetb.h"
+				>
+			</File>
+			<File
+				RelativePath=".\rbbistbl.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\rbbitblb.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\rbbitblb.h"
+				>
+			</File>
+			<File
+				RelativePath=".\triedict.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\triedict.h"
+				>
+			</File>
+			<File
+				RelativePath=".\ubrk.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\unicode\ubrk.h"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\ubrkimpl.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="collation"
+			>
+			<File
+				RelativePath=".\ucol_swp.c"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="..\i18n"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="..\i18n"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|x64"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="..\i18n"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|x64"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						AdditionalIncludeDirectories="..\i18n"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\ucol_swp.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="collections"
+			>
+			<File
+				RelativePath=".\hash.h"
+				>
+			</File>
+			<File
+				RelativePath=".\propsvec.c"
+				>
+			</File>
+			<File
+				RelativePath=".\propsvec.h"
+				>
+			</File>
+			<File
+				RelativePath=".\unicode\strenum.h"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\uarrsort.c"
+				>
+			</File>
+			<File
+				RelativePath=".\uarrsort.h"
+				>
+			</File>
+			<File
+				RelativePath=".\uenum.c"
+				>
+			</File>
+			<File
+				RelativePath=".\unicode\uenum.h"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\uenumimp.h"
+				>
+			</File>
+			<File
+				RelativePath=".\uhash.c"
+				>
+			</File>
+			<File
+				RelativePath=".\uhash.h"
+				>
+			</File>
+			<File
+				RelativePath=".\uhash_us.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\ulist.c"
+				>
+			</File>
+			<File
+				RelativePath=".\ulist.h"
+				>
+			</File>
+			<File
+				RelativePath=".\ustack.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\ustrenum.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\ustrenum.h"
+				>
+			</File>
+			<File
+				RelativePath=".\utrie.c"
+				>
+			</File>
+			<File
+				RelativePath=".\utrie.h"
+				>
+			</File>
+			<File
+				RelativePath=".\utrie2.c"
+				>
+			</File>
+			<File
+				RelativePath=".\utrie2.h"
+				>
+			</File>
+			<File
+				RelativePath=".\utrie2_builder.c"
+				>
+			</File>
+			<File
+				RelativePath=".\utrie2_impl.h"
+				>
+			</File>
+			<File
+				RelativePath=".\uvector.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\uvector.h"
+				>
+			</File>
+			<File
+				RelativePath=".\uvectr32.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\uvectr32.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="configuration"
+			>
+			<File
+				RelativePath=".\common.rc"
+				>
+			</File>
+			<File
+				RelativePath=".\cpputils.h"
+				>
+			</File>
+			<File
+				RelativePath=".\unicode\docmain.h"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\errorcode.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\unicode\errorcode.h"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|x64"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\locmap.c"
+				>
+			</File>
+			<File
+				RelativePath=".\locmap.h"
+				>
+			</File>
+			<File
+				RelativePath=".\mutex.h"
+				>
+			</File>
+			<File
+				RelativePath=".\putil.c"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						DisableLanguageExtensions="false"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						DisableLanguageExtensions="false"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|x64"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						DisableLanguageExtensions="false"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|x64"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						DisableLanguageExtensions="false"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath=".\unicode\putil.h"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+						CommandLine="copy &quot;$(InputPath)&quot; ..\..\include\unicode&#x0D;&#x0A;"
+						Outputs="..\..\include\unicode\$(InputFileName)"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>